summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Carlton <carlton@bactrian.org>2004-01-26 19:11:55 +0000
committerDavid Carlton <carlton@bactrian.org>2004-01-26 19:11:55 +0000
commitfeff3e492f1aff01b62a61e38e20fc7e8fc89946 (patch)
tree08c456fb63098f7b46e1dfa74746c8ab87a74e8c
parentaa0e88e3d758559942e192f3075a3edc0b2f222d (diff)
downloadbinutils-gdb-carlton_dictionary-branch.tar.gz
2004-01-26 David Carlton <carlton@kealia.com>carlton_dictionary-branch
* Merge with mainline; tag is carlton_dictionary-20040126-merge.
-rw-r--r--COPYING.NEWLIB56
-rw-r--r--Makefile.in396
-rw-r--r--bfd/ChangeLog11595
-rw-r--r--bfd/acinclude.m410
-rw-r--r--bfd/bfd-in2.h34
-rw-r--r--bfd/coff-arm.c25
-rw-r--r--bfd/coff-h8300.c152
-rw-r--r--bfd/coffcode.h6
-rw-r--r--bfd/config.bfd19
-rwxr-xr-xbfd/configure31
-rw-r--r--bfd/configure.in3
-rw-r--r--bfd/doc/ChangeLog593
-rw-r--r--bfd/dwarf2.c331
-rw-r--r--bfd/elf32-arm.h185
-rw-r--r--bfd/elf32-cris.c13
-rw-r--r--bfd/elf32-frv.c2999
-rw-r--r--bfd/elf32-h8300.c210
-rw-r--r--bfd/elf32-i386.c77
-rw-r--r--bfd/elf32-m32r.c2754
-rw-r--r--bfd/elf32-m68k.c13
-rw-r--r--bfd/elf32-mips.c374
-rw-r--r--bfd/elf32-sparc.c30
-rw-r--r--bfd/elf32-vax.c11
-rw-r--r--bfd/elf64-mips.c230
-rw-r--r--bfd/elf64-ppc.c18
-rw-r--r--bfd/elflink.h5
-rw-r--r--bfd/elfn32-mips.c396
-rw-r--r--bfd/elfxx-ia64.c21
-rw-r--r--bfd/elfxx-mips.c258
-rw-r--r--bfd/elfxx-mips.h8
-rw-r--r--bfd/libbfd.h29
-rw-r--r--bfd/opncls.c22
-rw-r--r--bfd/peXXigen.c18
-rw-r--r--bfd/peicode.h38
-rw-r--r--bfd/reloc.c66
-rw-r--r--bfd/targets.c6
-rw-r--r--bfd/version.h2
-rw-r--r--config-ml.in3
-rw-r--r--config/ChangeLog7
-rwxr-xr-xconfig/acinclude.m480
-rwxr-xr-xconfigure86
-rw-r--r--configure.in20
-rw-r--r--gdb/ChangeLog17134
-rw-r--r--gdb/ChangeLog-20037
-rw-r--r--gdb/MAINTAINERS10
-rw-r--r--gdb/Makefile.in424
-rw-r--r--gdb/NEWS22
-rw-r--r--gdb/acconfig.h12
-rw-r--r--gdb/ada-lang.c3
-rw-r--r--gdb/alpha-tdep.c1
-rw-r--r--gdb/amd64fbsd-nat.c4
-rw-r--r--gdb/amd64fbsd-tdep.c55
-rw-r--r--gdb/amd64nbsd-nat.c6
-rw-r--r--gdb/amd64nbsd-tdep.c4
-rw-r--r--gdb/arm-tdep.c23
-rw-r--r--gdb/avr-tdep.c17
-rw-r--r--gdb/ax-gdb.c28
-rw-r--r--gdb/block.h4
-rw-r--r--gdb/blockframe.c35
-rw-r--r--gdb/breakpoint.c75
-rw-r--r--gdb/c-exp.y2
-rw-r--r--gdb/c-lang.c6
-rw-r--r--gdb/cli/cli-cmds.c14
-rw-r--r--gdb/cli/cli-dump.c30
-rw-r--r--gdb/cli/cli-script.c5
-rw-r--r--gdb/cli/cli-script.h2
-rw-r--r--gdb/config.in18
-rw-r--r--gdb/config/alpha/alpha-linux.mh3
-rw-r--r--gdb/config/djgpp/config.sed19
-rw-r--r--gdb/config/djgpp/djconfig.sh17
-rw-r--r--gdb/config/djgpp/fnchange.lst91
-rw-r--r--gdb/config/i386/go32.mh5
-rw-r--r--gdb/config/i386/i386sol2.mh5
-rw-r--r--gdb/config/i386/i386sol2.mt2
-rw-r--r--gdb/config/i386/interix.mh3
-rw-r--r--gdb/config/i386/nm-i386.h4
-rw-r--r--gdb/config/ia64/nm-linux.h2
-rw-r--r--gdb/config/pa/tm-hppah.h9
-rw-r--r--gdb/config/powerpc/xm-linux.h10
-rw-r--r--gdb/config/sparc/fbsd.mh4
-rw-r--r--gdb/config/sparc/fbsd.mt2
-rw-r--r--gdb/config/sparc/linux.mh13
-rw-r--r--gdb/config/sparc/linux.mt5
-rw-r--r--gdb/config/sparc/nbsd.mt6
-rw-r--r--gdb/config/sparc/nbsd64.mh5
-rw-r--r--gdb/config/sparc/nbsd64.mt9
-rw-r--r--gdb/config/sparc/nbsdaout.mh6
-rw-r--r--gdb/config/sparc/nbsdelf.mh6
-rw-r--r--gdb/config/sparc/nm-linux.h23
-rw-r--r--gdb/config/sparc/nm-nbsd.h16
-rw-r--r--gdb/config/sparc/nm-nbsdaout.h10
-rw-r--r--gdb/config/sparc/nm-sparclynx.h26
-rw-r--r--gdb/config/sparc/nm-sun4os4.h42
-rw-r--r--gdb/config/sparc/nm-sun4sol2.h69
-rw-r--r--gdb/config/sparc/sp64.mt6
-rw-r--r--gdb/config/sparc/sp64linux.mt3
-rw-r--r--gdb/config/sparc/sp64sol2.mt3
-rw-r--r--gdb/config/sparc/sparc-em.mt3
-rw-r--r--gdb/config/sparc/sparclynx.mh6
-rw-r--r--gdb/config/sparc/sparclynx.mt3
-rw-r--r--gdb/config/sparc/sun4os4.mh9
-rw-r--r--gdb/config/sparc/sun4os4.mt3
-rw-r--r--gdb/config/sparc/sun4sol2.mh22
-rw-r--r--gdb/config/sparc/sun4sol2.mt3
-rw-r--r--gdb/config/sparc/tm-linux.h21
-rw-r--r--gdb/config/sparc/tm-nbsd.h11
-rw-r--r--gdb/config/sparc/tm-sp64.h107
-rw-r--r--gdb/config/sparc/tm-sp64linux.h34
-rw-r--r--gdb/config/sparc/tm-sparc.h354
-rw-r--r--gdb/config/sparc/tm-sparclynx.h37
-rw-r--r--gdb/config/sparc/tm-spc-em.h46
-rw-r--r--gdb/config/sparc/tm-sun4os4.h59
-rw-r--r--gdb/config/sparc/tm-sun4sol2.h78
-rw-r--r--gdb/config/sparc/tm-vxsparc.h27
-rw-r--r--gdb/config/sparc/vxsparc.mt3
-rw-r--r--gdb/config/sparc/xm-linux.h42
-rw-r--r--gdb/config/sparc/xm-sun4sol2.h37
-rwxr-xr-xgdb/configure1220
-rw-r--r--gdb/configure.host19
-rw-r--r--gdb/configure.in53
-rw-r--r--gdb/configure.tgt35
-rw-r--r--gdb/core-sol2.c198
-rw-r--r--gdb/cp-namespace.c112
-rw-r--r--gdb/cp-support.h4
-rw-r--r--gdb/cris-tdep.c34
-rw-r--r--gdb/d10v-tdep.c7
-rw-r--r--gdb/dbxread.c2
-rw-r--r--gdb/defs.h19
-rw-r--r--gdb/dink32-rom.c16
-rw-r--r--gdb/disasm.c24
-rw-r--r--gdb/doc/ChangeLog51
-rw-r--r--gdb/doc/Makefile.in4
-rw-r--r--gdb/doc/gdb.texinfo106
-rw-r--r--gdb/doc/gdbint.texinfo76
-rw-r--r--gdb/dwarf2-frame.c234
-rw-r--r--gdb/dwarf2expr.c4
-rw-r--r--gdb/dwarf2read.c339
-rw-r--r--gdb/exec.h2
-rw-r--r--gdb/f-lang.c3
-rw-r--r--gdb/frame.c40
-rw-r--r--gdb/frv-tdep.c226
-rw-r--r--gdb/gcore.c24
-rw-r--r--gdb/gdbarch.c95
-rw-r--r--gdb/gdbarch.h41
-rwxr-xr-xgdb/gdbarch.sh17
-rw-r--r--gdb/gdbinit.in1
-rw-r--r--gdb/gdbtypes.c2
-rw-r--r--gdb/go32-nat.c24
-rw-r--r--gdb/h8300-tdep.c5
-rw-r--r--gdb/hppa-tdep.c73
-rw-r--r--gdb/hppab-nat.c214
-rw-r--r--gdb/hppam3-nat.c143
-rw-r--r--gdb/hpread.c13
-rw-r--r--gdb/i386-interix-tdep.c1
-rw-r--r--gdb/i386-linux-nat.c2
-rw-r--r--gdb/i386-nto-tdep.c3
-rw-r--r--gdb/i386-sol2-tdep.c47
-rw-r--r--gdb/i386-tdep.c19
-rw-r--r--gdb/i386-tdep.h3
-rw-r--r--gdb/i386bsd-tdep.c14
-rw-r--r--gdb/i386obsd-tdep.c102
-rw-r--r--gdb/ia64-linux-tdep.c4
-rw-r--r--gdb/ia64-tdep.c24
-rw-r--r--gdb/infcmd.c143
-rw-r--r--gdb/infrun.c252
-rw-r--r--gdb/irix5-nat.c1
-rw-r--r--gdb/jv-lang.c17
-rw-r--r--gdb/jv-valprint.c7
-rw-r--r--gdb/language.c5
-rw-r--r--gdb/language.h7
-rw-r--r--gdb/libunwind-frame.h5
-rw-r--r--gdb/linespec.c61
-rw-r--r--gdb/linespec.h2
-rw-r--r--gdb/lynx-nat.c208
-rw-r--r--gdb/m2-lang.c3
-rw-r--r--gdb/m32r-tdep.c2
-rw-r--r--gdb/m68hc11-tdep.c9
-rw-r--r--gdb/m68k-tdep.c33
-rw-r--r--gdb/main.c2
-rw-r--r--gdb/maint.c8
-rw-r--r--gdb/mcore-tdep.c33
-rw-r--r--gdb/mdebugread.c31
-rw-r--r--gdb/mi/ChangeLog2190
-rw-r--r--gdb/mi/mi-cmd-env.c3
-rw-r--r--gdb/mi/mi-cmd-stack.c61
-rw-r--r--gdb/mi/mi-cmd-var.c24
-rw-r--r--gdb/mi/mi-cmds.h8
-rw-r--r--gdb/mi/mi-interp.c23
-rw-r--r--gdb/mi/mi-out.c30
-rw-r--r--gdb/mips-tdep.c2541
-rw-r--r--gdb/mn10300-tdep.c18
-rw-r--r--gdb/monitor.c38
-rw-r--r--gdb/ns32k-tdep.c17
-rw-r--r--gdb/objc-lang.c3
-rw-r--r--gdb/objfiles.c357
-rw-r--r--gdb/objfiles.h9
-rw-r--r--gdb/ocd.c221
-rw-r--r--gdb/op50-rom.c142
-rw-r--r--gdb/osabi.c153
-rw-r--r--gdb/p-lang.c3
-rw-r--r--gdb/printcmd.c2
-rw-r--r--gdb/procfs.c18
-rw-r--r--gdb/regcache.c10
-rw-r--r--gdb/regformats/reg-x86-64.dat2
-rw-r--r--gdb/remote-fileio.c11
-rw-r--r--gdb/remote-mips.c177
-rw-r--r--gdb/remote-rdi.c4
-rw-r--r--gdb/remote-sds.c15
-rw-r--r--gdb/remote-vxsparc.c202
-rw-r--r--gdb/remote.c53
-rw-r--r--gdb/rs6000-nat.c5
-rw-r--r--gdb/rs6000-tdep.c33
-rw-r--r--gdb/s390-tdep.c3
-rw-r--r--gdb/scm-lang.c3
-rw-r--r--gdb/ser-pipe.c2
-rw-r--r--gdb/ser-unix.c7
-rw-r--r--gdb/sh-tdep.c2
-rw-r--r--gdb/sh64-tdep.c26
-rw-r--r--gdb/solib.h94
-rw-r--r--gdb/source.c16
-rw-r--r--gdb/sparc-linux-nat.c101
-rw-r--r--gdb/sparc-nat.c480
-rw-r--r--gdb/sparc-tdep.c3953
-rw-r--r--gdb/sparc-tdep.h185
-rw-r--r--gdb/sparc64-tdep.c729
-rw-r--r--gdb/sparc64-tdep.h136
-rw-r--r--gdb/sparc64fbsd-nat.c50
-rw-r--r--gdb/sparc64fbsd-tdep.c316
-rw-r--r--gdb/sparc64nbsd-nat.c275
-rw-r--r--gdb/sparcbsd-nat.c126
-rw-r--r--gdb/sparcbsd-nat.h37
-rw-r--r--gdb/sparcnbsd-nat.c137
-rw-r--r--gdb/sparcnbsd-tdep.c648
-rw-r--r--gdb/sparcnbsd-tdep.h34
-rw-r--r--gdb/stabsread.c34
-rw-r--r--gdb/stack.c8
-rw-r--r--gdb/symfile.c103
-rw-r--r--gdb/symtab.c59
-rw-r--r--gdb/symtab.h3
-rw-r--r--gdb/target.c34
-rw-r--r--gdb/target.h9
-rw-r--r--gdb/testsuite/ChangeLog441
-rw-r--r--gdb/testsuite/config/gdbserver.exp144
-rw-r--r--gdb/testsuite/gdb.arch/Makefile.in3
-rw-r--r--gdb/testsuite/gdb.asm/asm-source.exp10
-rw-r--r--gdb/testsuite/gdb.base/call-ar-st.exp4
-rw-r--r--gdb/testsuite/gdb.base/call-rt-st.exp8
-rw-r--r--gdb/testsuite/gdb.base/callfuncs.c24
-rw-r--r--gdb/testsuite/gdb.base/charset.c1
-rw-r--r--gdb/testsuite/gdb.base/completion.exp6
-rw-r--r--gdb/testsuite/gdb.base/constvars.exp22
-rw-r--r--gdb/testsuite/gdb.base/cvexpr.c36
-rw-r--r--gdb/testsuite/gdb.base/dump.c2
-rw-r--r--gdb/testsuite/gdb.base/environ.exp15
-rw-r--r--gdb/testsuite/gdb.base/fileio.c5
-rw-r--r--gdb/testsuite/gdb.base/fileio.exp18
-rw-r--r--gdb/testsuite/gdb.base/freebpcmd.c20
-rw-r--r--gdb/testsuite/gdb.base/freebpcmd.exp4
-rw-r--r--gdb/testsuite/gdb.base/funcargs.exp35
-rw-r--r--gdb/testsuite/gdb.base/huge.c2
-rw-r--r--gdb/testsuite/gdb.base/maint.exp3
-rw-r--r--gdb/testsuite/gdb.base/nodebug.exp4
-rw-r--r--gdb/testsuite/gdb.base/scope.exp6
-rw-r--r--gdb/testsuite/gdb.base/sect-cmd.exp16
-rw-r--r--gdb/testsuite/gdb.base/setvar.exp7
-rw-r--r--gdb/testsuite/gdb.base/structs.exp23
-rw-r--r--gdb/testsuite/gdb.base/volatile.exp22
-rw-r--r--gdb/testsuite/gdb.cp/classes.exp1064
-rw-r--r--gdb/testsuite/gdb.cp/ctti.exp355
-rw-r--r--gdb/testsuite/gdb.cp/cttiadd.cc22
-rw-r--r--gdb/testsuite/gdb.cp/cttiadd1.cc21
-rw-r--r--gdb/testsuite/gdb.cp/cttiadd2.cc21
-rw-r--r--gdb/testsuite/gdb.cp/cttiadd3.cc21
-rw-r--r--gdb/testsuite/gdb.cp/derivation.exp394
-rw-r--r--gdb/testsuite/gdb.cp/local.exp74
-rw-r--r--gdb/testsuite/gdb.cp/m-static.exp20
-rw-r--r--gdb/testsuite/gdb.cp/member-ptr.cc21
-rw-r--r--gdb/testsuite/gdb.cp/member-ptr.exp798
-rw-r--r--gdb/testsuite/gdb.cp/method.exp5
-rw-r--r--gdb/testsuite/gdb.cp/namespace.cc7
-rw-r--r--gdb/testsuite/gdb.cp/namespace.exp8
-rw-r--r--gdb/testsuite/gdb.cp/namespace1.cc8
-rw-r--r--gdb/testsuite/gdb.cp/overload.exp505
-rw-r--r--gdb/testsuite/gdb.cp/ref-types.exp4
-rw-r--r--gdb/testsuite/gdb.cp/rtti.exp38
-rw-r--r--gdb/testsuite/gdb.cp/rtti1.cc26
-rw-r--r--gdb/testsuite/gdb.cp/templates.exp65
-rw-r--r--gdb/testsuite/gdb.cp/virtfunc.exp1328
-rw-r--r--gdb/testsuite/gdb.hp/gdb.aCC/exception.cc48
-rw-r--r--gdb/testsuite/gdb.hp/gdb.aCC/exception.exp426
-rw-r--r--gdb/testsuite/gdb.hp/gdb.defects/bs15503.cc52
-rw-r--r--gdb/testsuite/gdb.hp/gdb.defects/bs15503.exp88
-rw-r--r--gdb/testsuite/gdb.mi/ChangeLog768
-rw-r--r--gdb/testsuite/gdb.mi/gdb669.exp4
-rw-r--r--gdb/testsuite/gdb.mi/mi-pthreads.exp4
-rw-r--r--gdb/testsuite/gdb.mi/mi-stack.exp7
-rw-r--r--gdb/testsuite/gdb.mi/mi-var-child.exp5
-rw-r--r--gdb/testsuite/gdb.mi/mi1-pthreads.exp4
-rw-r--r--gdb/testsuite/gdb.mi/mi2-basics.exp24
-rw-r--r--gdb/testsuite/gdb.mi/mi2-pthreads.exp4
-rw-r--r--gdb/testsuite/gdb.mi/pthreads.c4
-rw-r--r--gdb/testsuite/gdb.stabs/weird.exp31
-rw-r--r--gdb/testsuite/gdb.threads/gcore-thread.exp4
-rw-r--r--gdb/testsuite/lib/compiler.c57
-rw-r--r--gdb/testsuite/lib/compiler.cc48
-rw-r--r--gdb/testsuite/lib/gdb.exp325
-rw-r--r--gdb/testsuite/lib/mi-support.exp125
-rw-r--r--gdb/top.c37
-rw-r--r--gdb/top.h1
-rw-r--r--gdb/tracepoint.c8
-rw-r--r--gdb/tui/ChangeLog1217
-rw-r--r--gdb/tui/tui-file.c2
-rw-r--r--gdb/tui/tui-hooks.c18
-rw-r--r--gdb/tui/tui-interp.c6
-rw-r--r--gdb/tui/tui.c28
-rw-r--r--gdb/tui/tui.h11
-rw-r--r--gdb/tui/tuiCommand.c138
-rw-r--r--gdb/tui/tuiCommand.h42
-rw-r--r--gdb/tui/tuiData.c1055
-rw-r--r--gdb/tui/tuiData.h383
-rw-r--r--gdb/tui/tuiDataWin.c349
-rw-r--r--gdb/tui/tuiDataWin.h47
-rw-r--r--gdb/tui/tuiDisassem.c415
-rw-r--r--gdb/tui/tuiDisassem.h41
-rw-r--r--gdb/tui/tuiGeneralWin.c285
-rw-r--r--gdb/tui/tuiGeneralWin.h49
-rw-r--r--gdb/tui/tuiIO.c694
-rw-r--r--gdb/tui/tuiIO.h69
-rw-r--r--gdb/tui/tuiLayout.c1148
-rw-r--r--gdb/tui/tuiLayout.h30
-rw-r--r--gdb/tui/tuiRegs.c1047
-rw-r--r--gdb/tui/tuiRegs.h47
-rw-r--r--gdb/tui/tuiSource.c356
-rw-r--r--gdb/tui/tuiSource.h33
-rw-r--r--gdb/tui/tuiSourceWin.c715
-rw-r--r--gdb/tui/tuiSourceWin.h68
-rw-r--r--gdb/tui/tuiStack.c435
-rw-r--r--gdb/tui/tuiStack.h33
-rw-r--r--gdb/tui/tuiWin.c1615
-rw-r--r--gdb/tui/tuiWin.h59
-rw-r--r--gdb/ui-out.c4
-rw-r--r--gdb/utils.c112
-rw-r--r--gdb/v850-tdep.c28
-rw-r--r--gdb/valops.c3
-rw-r--r--gdb/vax-tdep.c16
-rw-r--r--gdb/version.in2
-rw-r--r--gdb/w89k-rom.c311
-rw-r--r--gdb/win32-nat.c217
-rw-r--r--gdb/x86-64-linux-nat.c4
-rw-r--r--gdb/x86-64-linux-tdep.c12
-rw-r--r--gdb/x86-64-tdep.c288
-rw-r--r--gdb/x86-64-tdep.h12
-rw-r--r--gdb/xstormy16-tdep.c29
-rw-r--r--gettext.m48
-rw-r--r--include/ChangeLog734
-rw-r--r--include/aout/ChangeLog4
-rw-r--r--include/aout/stab.def29
-rw-r--r--include/coff/ChangeLog1159
-rw-r--r--include/demangle.h368
-rw-r--r--include/elf/ChangeLog1906
-rw-r--r--include/elf/common.h4
-rw-r--r--include/elf/frv.h18
-rw-r--r--include/elf/m32r.h54
-rw-r--r--include/fibheap.h5
-rw-r--r--include/opcode/ChangeLog3105
-rw-r--r--include/opcode/h8300.h51
-rw-r--r--libiberty/ChangeLog192
-rw-r--r--libiberty/Makefile.in824
-rw-r--r--libiberty/README2
-rw-r--r--libiberty/config.in391
-rwxr-xr-xlibiberty/configure20
-rw-r--r--libiberty/configure.in520
-rw-r--r--libiberty/cp-demangle.c2375
-rw-r--r--libiberty/cplus-dem.c23
-rw-r--r--libiberty/getpwd.c3
-rw-r--r--libiberty/lbasename.c20
-rw-r--r--libiberty/maint-tool17
-rw-r--r--libiberty/strdup.c2
-rw-r--r--libiberty/testsuite/demangle-expected2262
-rw-r--r--libiberty/testsuite/test-demangle.c164
-rw-r--r--opcodes/ChangeLog4330
-rw-r--r--opcodes/Makefile.am9
-rw-r--r--opcodes/Makefile.in15
-rw-r--r--opcodes/arm-opc.h5
-rw-r--r--opcodes/frv-asm.c276
-rw-r--r--opcodes/frv-desc.c7
-rw-r--r--opcodes/frv-desc.h6
-rw-r--r--opcodes/frv-opc.c3
-rw-r--r--opcodes/i386-dis.c6
-rw-r--r--opcodes/m10300-opc.c6
-rw-r--r--opcodes/msp430-dis.c6
-rw-r--r--opcodes/sh-dis.c2
-rw-r--r--opcodes/sparc-opc.c14
-rw-r--r--opcodes/z8k-dis.c69
-rw-r--r--readline/ChangeLog.gdb29
-rw-r--r--readline/display.c6
-rw-r--r--readline/readline.c4
-rw-r--r--readline/rlmbutil.h26
-rw-r--r--readline/terminal.c31
-rw-r--r--sim/ChangeLog5
-rw-r--r--sim/arm/ChangeLog11
-rw-r--r--sim/arm/Makefile.in2
-rw-r--r--sim/arm/armos.c41
-rw-r--r--sim/common/ChangeLog8
-rw-r--r--sim/common/Makefile.in1
-rw-r--r--sim/common/sim-core.c19
-rwxr-xr-xsim/configure8
-rw-r--r--sim/configure.in2
-rw-r--r--sim/h8300/ChangeLog9
-rw-r--r--sim/h8300/compile.c2
-rw-r--r--sim/h8300/sim-main.h2
-rw-r--r--sim/m32r/ChangeLog12
-rw-r--r--sim/m32r/Makefile.in7
-rwxr-xr-xsim/m32r/configure16
-rw-r--r--sim/m32r/configure.in14
-rw-r--r--sim/m32r/sim-if.c7
-rw-r--r--sim/m32r/sim-main.h4
-rw-r--r--sim/mips/ChangeLog8
-rw-r--r--sim/mips/mips.igen72
-rw-r--r--sim/sh/ChangeLog34
-rw-r--r--sim/sh/gencode.c892
-rw-r--r--sim/sh/interp.c164
-rw-r--r--sim/testsuite/ChangeLog9
-rw-r--r--sim/testsuite/lib/sim-defs.exp2
-rw-r--r--sim/v850/ChangeLog4
-rw-r--r--sim/v850/simops.c2
426 files changed, 25375 insertions, 73336 deletions
diff --git a/COPYING.NEWLIB b/COPYING.NEWLIB
index e0eff07176a..743c8210593 100644
--- a/COPYING.NEWLIB
+++ b/COPYING.NEWLIB
@@ -670,7 +670,61 @@ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
-(27) Red Hat Incorporated
+(27) Konstantin Chuguev (--enable-newlib-iconv)
+
+Copyright (c) 1999, 2000
+ Konstantin Chuguev. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+ iconv (Charset Conversion Library) v2.0
+
+(27) Artem Bityuckiy (--enable-newlib-iconv)
+
+Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation.
+Rights transferred to Franklin Electronic Publishers.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+(28) Red Hat Incorporated
Unless otherwise stated in each remaining newlib file, the remaining
files in the newlib subdirectory default to the following copyright.
diff --git a/Makefile.in b/Makefile.in
index 13d9be09b70..e9fa3d74d2d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -446,6 +446,7 @@ BASE_FLAGS_TO_PASS = \
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
"RANLIB_FOR_TARGET=$(RANLIB_FOR_TARGET)" \
"WINDRES_FOR_TARGET=$(WINDRES_FOR_TARGET)" \
+ "CONFIG_SHELL=$(SHELL)" \
"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)"
# For any flags above that may contain shell code that varies from one
@@ -17608,6 +17609,7 @@ configure-build-libiberty:
AS="$(AS_FOR_BUILD)"; export AS; \
CC="$(CC_FOR_BUILD)"; export CC; \
CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX_FOR_BUILD)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
GCJ="$(GCJ_FOR_BUILD)"; export GCJ; \
@@ -17679,6 +17681,7 @@ configure-ash:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -17745,6 +17748,7 @@ configure-autoconf:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -17811,6 +17815,7 @@ configure-automake:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -17877,6 +17882,7 @@ configure-bash:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -17943,6 +17949,7 @@ configure-bfd:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18009,6 +18016,7 @@ configure-opcodes:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18075,6 +18083,7 @@ configure-binutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18141,6 +18150,7 @@ configure-bison:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18210,6 +18220,7 @@ configure-byacc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18279,6 +18290,7 @@ configure-bzip2:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18345,6 +18357,7 @@ configure-dejagnu:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18411,6 +18424,7 @@ configure-diff:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18477,6 +18491,7 @@ configure-dosutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18539,6 +18554,7 @@ configure-etc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18605,6 +18621,7 @@ configure-fastjar:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18674,6 +18691,7 @@ configure-fileutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18740,6 +18758,7 @@ configure-findutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18806,6 +18825,7 @@ configure-find:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18872,6 +18892,7 @@ configure-flex:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -18941,6 +18962,7 @@ configure-gas:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19007,6 +19029,7 @@ configure-gawk:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19073,6 +19096,7 @@ configure-gettext:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19139,6 +19163,7 @@ configure-gnuserv:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19205,6 +19230,7 @@ configure-gprof:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19271,6 +19297,7 @@ configure-gzip:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19337,6 +19364,7 @@ configure-hello:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19403,6 +19431,7 @@ configure-indent:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19469,6 +19498,7 @@ configure-intl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19535,6 +19565,7 @@ configure-tcl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19601,6 +19632,7 @@ configure-itcl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19667,6 +19699,7 @@ configure-ld:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19733,6 +19766,7 @@ configure-libgui:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19799,6 +19833,7 @@ configure-libiberty:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19865,6 +19900,7 @@ configure-libtool:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19931,6 +19967,7 @@ configure-m4:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -19997,6 +20034,7 @@ configure-make:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20063,6 +20101,7 @@ configure-mmalloc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20125,6 +20164,7 @@ configure-patch:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20191,6 +20231,7 @@ configure-perl:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20257,6 +20298,7 @@ configure-prms:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20323,6 +20365,7 @@ configure-rcs:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20389,6 +20432,7 @@ configure-readline:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20455,6 +20499,7 @@ configure-release:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20513,6 +20558,7 @@ configure-recode:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20579,6 +20625,7 @@ configure-sed:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20645,6 +20692,7 @@ configure-send-pr:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20711,6 +20759,7 @@ configure-shellutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20777,6 +20826,7 @@ configure-sid:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20843,6 +20893,7 @@ configure-sim:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20909,6 +20960,7 @@ configure-tar:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -20975,6 +21027,7 @@ configure-texinfo:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21037,6 +21090,7 @@ configure-textutils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21103,6 +21157,7 @@ configure-time:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21169,6 +21224,7 @@ configure-uudecode:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21235,6 +21291,7 @@ configure-wdiff:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21301,6 +21358,7 @@ configure-zip:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21370,6 +21428,7 @@ configure-zlib:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21428,6 +21487,7 @@ configure-gdb:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21494,6 +21554,7 @@ configure-expect:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21560,6 +21621,7 @@ configure-guile:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21626,6 +21688,7 @@ configure-tk:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21692,6 +21755,7 @@ configure-tix:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21758,6 +21822,7 @@ configure-libtermcap:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21820,6 +21885,7 @@ configure-utils:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
AR="$(AR)"; export AR; \
@@ -21897,6 +21963,7 @@ configure-target-libstdc++-v3: $(TARGET_SUBDIR)/libstdc++-v3/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \
CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; \
@@ -21919,30 +21986,8 @@ configure-target-libstdc++-v3: $(TARGET_SUBDIR)/libstdc++-v3/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/libstdc++-v3 "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/libstdc++-v3"; \
libsrcdir="$$s/libstdc++-v3"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -21999,6 +22044,7 @@ configure-target-newlib: $(TARGET_SUBDIR)/newlib/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22020,30 +22066,8 @@ configure-target-newlib: $(TARGET_SUBDIR)/newlib/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/newlib "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/newlib"; \
libsrcdir="$$s/newlib"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -22100,6 +22124,7 @@ configure-target-libf2c: $(TARGET_SUBDIR)/libf2c/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22121,30 +22146,8 @@ configure-target-libf2c: $(TARGET_SUBDIR)/libf2c/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/libf2c "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/libf2c"; \
libsrcdir="$$s/libf2c"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -22201,6 +22204,7 @@ configure-target-libobjc: $(TARGET_SUBDIR)/libobjc/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22222,30 +22226,8 @@ configure-target-libobjc: $(TARGET_SUBDIR)/libobjc/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/libobjc "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/libobjc"; \
libsrcdir="$$s/libobjc"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -22302,6 +22284,7 @@ configure-target-libtermcap: $(TARGET_SUBDIR)/libtermcap/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22399,6 +22382,7 @@ configure-target-winsup: $(TARGET_SUBDIR)/winsup/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22420,30 +22404,8 @@ configure-target-winsup: $(TARGET_SUBDIR)/winsup/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/winsup "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/winsup"; \
libsrcdir="$$s/winsup"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -22500,6 +22462,7 @@ configure-target-libgloss: $(TARGET_SUBDIR)/libgloss/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22521,30 +22484,8 @@ configure-target-libgloss: $(TARGET_SUBDIR)/libgloss/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/libgloss "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/libgloss"; \
libsrcdir="$$s/libgloss"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -22597,6 +22538,7 @@ configure-target-libiberty: $(TARGET_SUBDIR)/libiberty/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22618,30 +22560,8 @@ configure-target-libiberty: $(TARGET_SUBDIR)/libiberty/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/libiberty "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/libiberty"; \
libsrcdir="$$s/libiberty"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -22698,6 +22618,7 @@ configure-target-gperf: $(TARGET_SUBDIR)/gperf/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22719,30 +22640,8 @@ configure-target-gperf: $(TARGET_SUBDIR)/gperf/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/gperf "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/gperf"; \
libsrcdir="$$s/gperf"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -22799,6 +22698,7 @@ configure-target-examples: $(TARGET_SUBDIR)/examples/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22820,30 +22720,8 @@ configure-target-examples: $(TARGET_SUBDIR)/examples/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/examples "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/examples"; \
libsrcdir="$$s/examples"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -22892,6 +22770,7 @@ configure-target-libffi: $(TARGET_SUBDIR)/libffi/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -22913,30 +22792,8 @@ configure-target-libffi: $(TARGET_SUBDIR)/libffi/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/libffi "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/libffi"; \
libsrcdir="$$s/libffi"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -22993,6 +22850,7 @@ configure-target-libjava: $(TARGET_SUBDIR)/libjava/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \
CXX="$(RAW_CXX_FOR_TARGET)"; export CXX; \
@@ -23015,30 +22873,8 @@ configure-target-libjava: $(TARGET_SUBDIR)/libjava/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/libjava "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/libjava"; \
libsrcdir="$$s/libjava"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -23095,6 +22931,7 @@ configure-target-zlib: $(TARGET_SUBDIR)/zlib/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -23196,6 +23033,7 @@ configure-target-boehm-gc: $(TARGET_SUBDIR)/boehm-gc/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -23217,30 +23055,8 @@ configure-target-boehm-gc: $(TARGET_SUBDIR)/boehm-gc/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/boehm-gc "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/boehm-gc"; \
libsrcdir="$$s/boehm-gc"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -23297,6 +23113,7 @@ configure-target-qthreads: $(TARGET_SUBDIR)/qthreads/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -23318,30 +23135,8 @@ configure-target-qthreads: $(TARGET_SUBDIR)/qthreads/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/qthreads "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/qthreads"; \
libsrcdir="$$s/qthreads"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -23398,6 +23193,7 @@ configure-target-rda: $(TARGET_SUBDIR)/rda/multilib.out
AS="$(AS_FOR_TARGET)"; export AS; \
CC="$(CC_FOR_TARGET)"; export CC; \
CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CPPFLAGS="$(CFLAGS_FOR_TARGET)"; export CPPFLAGS; \
CXX="$(CXX_FOR_TARGET)"; export CXX; \
CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
@@ -23419,30 +23215,8 @@ configure-target-rda: $(TARGET_SUBDIR)/rda/multilib.out
*) topdir="../../$(srcdir)" ;; \
esac ;; \
esac; \
- if [ "$(srcdir)" = "." ] ; then \
- if [ "$(TARGET_SUBDIR)" != "." ] ; then \
- if $(SHELL) $$s/symlink-tree $${topdir}/rda "no-such-file" ; then \
- if [ -f Makefile ]; then \
- if $(MAKE) distclean; then \
- true; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- else \
- exit 1; \
- fi; \
- else \
- true; \
- fi; \
- srcdiroption="--srcdir=."; \
- libsrcdir="."; \
- else \
srcdiroption="--srcdir=$${topdir}/rda"; \
libsrcdir="$$s/rda"; \
- fi; \
rm -f no-such-file || : ; \
CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \
$(TARGET_CONFIGARGS) $${srcdiroption} \
@@ -23490,6 +23264,9 @@ install-target-rda: installdirs
# build modules. So GCC is a sort of hybrid.
# gcc is the only module which uses GCC_FLAGS_TO_PASS.
+# Don't use shared host config.cache, as it will confuse later
+# directories; GCC wants slightly different values for some
+# precious variables. *sigh*
.PHONY: configure-gcc maybe-configure-gcc
maybe-configure-gcc:
configure-gcc:
@@ -23499,6 +23276,7 @@ configure-gcc:
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
CC="$(CC)"; export CC; \
CFLAGS="$(CFLAGS)"; export CFLAGS; \
+ CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
CXX="$(CXX)"; export CXX; \
CXXFLAGS="$(CXXFLAGS)"; export CXXFLAGS; \
TOPLEVEL_CONFIGURE_ARGUMENTS="$(TOPLEVEL_CONFIGURE_ARGUMENTS)"; export TOPLEVEL_CONFIGURE_ARGUMENTS; \
@@ -23832,7 +23610,7 @@ Makefile: $(srcdir)/Makefile.in config.status
CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
config.status: configure $(gcc_version_trigger)
- $(SHELL) ./config.status --recheck
+ CONFIG_SHELL="$(SHELL)" $(SHELL) ./config.status --recheck
# Rebuilding configure.
AUTOCONF = autoconf
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index bb4c9ce908e..00748f33cc4 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,11299 +1,380 @@
-2003-12-15 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru>
- Nick Clifton <nickc@redhat.com>
+2004-01-23 Daniel Jacobowitz <drow@mvista.com>
- * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Ensure that correct flags
- are set on known section types.
-
-2003-12-12 Nick Clifton <nickc@redhat.com>
+ * elf32-arm.h (elf32_arm_check_relocs): Revert part of 2004-01-13
+ change.
- * po/ro.po: Updated translation.
+2004-01-21 Tom Rix <tcrix@worldnet.att.net>
-2003-12-12 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-hppa.c (elf64_hppa_link_output_symbol_hook): Check for
- NULL dyn_h.
-
-2003-12-11 Nick Clifton <nickc@redhat.com>
-
- * elf.c (INCLUDE_SECTION_IN_SEGMENT): Skip PT_GNU_STACK segments.
-
-2003-12-08 Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.h, elfxx-mips.c, cpu-mips.c: Convert prototypes.
- Remove casts that were only needed for K&R compatibility.
-
-2003-12-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct elf_backend_data): Remove "bfd *" and add
- "elflink_hash_entry *" param to elf_backend_link_output_symbol_hook.
- Add "elflink_hash_entry *" param to elf_backend_output_arch_syms.
- * elflink.h (elf_link_output_sym): Add "elflink_hash_entry *" param,
- and pass to output_symbol_hook.
- (elf_bfd_final_link): Adjust elf_link_output_sym calls.
- (elf_link_output_extsym): Likewise.
- (elf_link_input_bfd): Likewise.
- * elf32-sh64.c (sh64_elf_link_output_symbol_hook): Adjust.
- * elf32-v850.c (v850_elf_link_output_symbol_hook): Likewise.
- * elf64-mmix.c (mmix_elf_link_output_symbol_hook): Likewise.
- * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Likewise.
- * elfxx-mips.c (_bfd_mips_elf_link_output_symbol_hook): Likewise.
- * elfxx-mips.h (_bfd_mips_elf_link_output_symbol_hook): Likewise.
- * elf64-sparc.c (sparc64_elf_output_arch_syms): Likewise.
- * elf64-hppa.c (elf64_hppa_link_output_symbol_hook): Likewise.
- Validate dynh->h against h.
- * elf64-ppc.c (struct ppc_link_hash_entry): Add adjust_done bitfield.
- (link_hash_newfunc): Init it.
- (adjust_opd_syms): New function.
- (ppc64_elf_edit_opd): Set adjust_done when global .opd sym adjusted.
- Set opd.adjust for all .opd relocs. Call adjust_opd_syms.
- (ppc64_elf_tls_optimize): Adjust possible .opd sym values here.
- (ppc64_elf_relocate_section): Also adjust syms not a multiple of 24.
- (ppc64_elf_output_symbol_hook): New function.
- (elf_backend_link_output_symbol_hook): Define.
-
-2003-12-07 Richard Sandiford <rsandifo@redhat.com>
-
- * elf32-mips.c, elfn32-mips.c, elf64-mips.c: Convert prototypes.
- Remove casts that were only needed for K&R compatibility.
-
-2003-12-05 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru>
-
- * coff-arm.c (aoutarm_std_reloc_howto [ARM_WINCE]): Set
- partial_inplace for these relocs to FALSE for comptability with
- the MS linker.
- Remap ARM_26D relocation from 5 to 0. This fixes "bad fixup" error
- generated by MS linker, and brings the relocation in line the MS
- PE documentation.
-
-2003-12-04 H.J. Lu <hongjiu.lu@intel.com>
-
- * elf32-ppc.c (ppc_elf_relax_section): Don't check relax_finalizing.
-
-2003-12-04 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (elfNN_ia64_relax_section): Use the
- need_relax_finalize field in link_info instead of
- relax_finalizing to check if the relax finalize pass is being
- done.
-
-2003-12-04 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru>
-
- * coff-arm.c (coff_arm_relocate_section, bfd_arm_process_before_allocation):
- Change ARM26* to ARM_26* in comments to match definitions.
- (coff_arm_adjust_symndx): Replace hard-coded constants with
- appropriate definitions (ARM_26*).
-
-2003-12-04 Alan Modra <amodra@bigpond.net.au>
-
- * coff-i860.c (coff_i860_reloc_nyi): Return bfd_reloc_not_supported.
- * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Warning fixes.
- (mn10300_elf_relax_section): Likewise.
- * nlm32-alpha.c (ONES): Define.
- (nlm32_alpha_howto_table): Use it to avoid warnings.
-
-2003-12-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-i386.c (elf_i386_object_p): Delete.
- (elf_backend_object_p): Don't define.
- * elf32-s390.c (elf_s390_object_p): No need to alloc tdata here.
- * elf32-sh.c (sh_elf_object_p): Likewise.
- * elf32-sparc.c (elf32_sparc_object_p): Likewise.
- * elf64-alpha.c (elf64_alpha_object_p): Likewise.
- * elf64-s390.c (elf_s390_object_p): Likewise.
- * elf64-x86-64.c (elf64_x86_64_elf_object_p): Likewise.
-
-2003-12-03 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
-
- * archures.c (bfd_mach_m32r2): Add new machine type.
- * bfd-in2.h: Regenerate.
- * cpu-m32r.c : Add new machine type.
- * elf32-m32r.c (m32r_elf_object_p, m32r_elf_final_write_processing,
- m32r_elf_merge_private_bfd_data): Add support for new machine
- type.
-
-2003-12-03 Dave Airlie <airlied@linux.ie>
-
- * config.bfd: Add vax-linux-gnu target.
- * configure.in: Likewise.
- * configure: Regenerate.
-
-2003-12-03 Alan Modra <amodra@bigpond.net.au>
-
- * ecoff.c (ecoff_link_add_archive_symbols): Update for renamed
- bfd_link_hash_entry field "next" -> "und_next".
- * linker.c (_bfd_link_hash_newfunc): Likewise.
- (bfd_link_add_undef): Likewise.
- (_bfd_generic_link_add_archive_symbols): Likewise.
- (_bfd_generic_link_add_one_symbol): Likewise.
- * xcofflink.c (xcoff_link_add_symbols): Likewise.
-
-2003-12-02 Nick Clifton <nickc@redhat.com>
-
- * configure.in (ALL_LINGUAS): Add ro.
- * po/ro.po: New Romanian translation.
-
-2003-12-02 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2003-12-01 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru>
-
- * coffcode.h (coff_compute_section_file_positions): Set page_size
- to 1 instead of 0 in the case file alignment value is zero.
-
-2003-12-01 Kazu Hirata <kazu@cs.umass.edu>
-
- * coff-rs6000.c: Remove ARGSUSED and VARARGS.
- * coff64-rs6000.c: Likewise.
- * coffcode.h: Likewise.
- * elf32-vax.c: Likewise.
- * hash.c: Likewise.
- * hppabsd-core.c: Likewise.
- * hpux-core.c: Likewise.
- * ihex.c: Likewise.
- * netbsd-core.c: Likewise.
- * osf-core.c: Likewise.
- * pdp11.c: Likewise.
- * ptrace-core.c: Likewise.
- * sco5-core.c: Likewise.
- * section.c: Likewise.
- * sunos.c: Likewise.
- * trad-core.c: Likewise.
-
-2003-12-01 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (is_elf_hash_table): Take hash tab rather than info arg.
- * elf.c (_bfd_elf_merge_sections): Adjust to suit.
- (_bfd_elf_link_just_syms): Likewise.
- (bfd_elf_get_needed_list): Likewise.
- (bfd_elf_get_runpath_list): Likewise.
- (_bfd_elf_link_hash_copy_indirect): Remove unneeded parens.
- * elf32-hppa.c (elf32_hppa_setup_section_lists): Don't check hash tab
- creator flavour.
- (elf32_hppa_set_gp): Look up output sections rather than using htab.
- * elf32-i960.c: Comment fix. Formatting.
- * elf32-m32r.c (m32r_elf_add_symbol_hook): Use is_elf_hash_table
- rather than testing creator flavour.
- * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise.
- * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise.
- * elflink.c (_bfd_elf_link_create_dynamic_sections): Adjust for
- is_elf_hash_table change. Remove redundant test.
- (bfd_elf_record_link_assignment): Use is_elf_hash_table rather than
- testing creator flavour.
- (elf_link_record_local_dynamic_symbol): Adjust for is_elf_hash_table.
- (_bfd_elf_fix_symbol_flags): Likewise.
- (_bfd_elf_adjust_dynamic_symbol): Likewise.
- * elflink.h (elf_link_add_object_symbols): Likewise. Remove redundant
- checks. Use is_elf_hash_table rather than testing creator flavour.
- Use hash_table throughout in place of info->hash.
- (elf_add_dynamic_entry): Adjust for is_elf_hash_table change.
- (NAME(bfd_elf,size_dynamic_sections)): Likewise. Remove redundant
- check.
- (elf_bfd_final_link): Adjust for is_elf_hash_table change.
- (elf_link_check_versioned_symbol): Use is_elf_hash_table rather than
- testing creator flavour.
- (elf_gc_sections): Add is_elf_hash_table check.
- (elf_gc_common_finalize_got_offsets): Likewise.
- (elf_bfd_discard_info): Adjust for is_elf_hash_table change. Remove
- redundant check.
- * elfxx-ia64.c (elfNN_ia64_relax_section): Use is_elf_hash_table
- rather than testing creator flavour.
-
-2003-11-28 Christian Groessler <chris@groessler.org>
-
- * cpu-z8k.c: Convert to ISO C90.
- * coff-z8k.c: Likewise.
-
-2003-11-27 Alexandre Oliva <aoliva@redhat.com>
-
- * elf-bfd.h (elf_backend_data::elf_backend_modify_segment_map):
- Add link info argument.
- * elf32-i370.c (elf_backend_modify_segment_map): Likewise.
- * elf32-ppc.c (ppc_elf_modify_segment_map): Likewise.
- * elf32-xtensa.c (elf_xtensa_modify_segment_map): Likewise.
- * elf64-hppa.c (elf64_hppa_modify_segment_map): Likewise.
- * elfxx-ia64.c (elfNN_ia64_modify_segment_map): Likewise.
- * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Likewise.
- * elfxx-mips.h (_bfd_mips_elf_modify_segment_map): Likewise.
- * elf.c (assign_file_positions_except_relocs,
- assign_file_positions_for_segments): Likewise. Adjust calls.
-
-2003-11-27 Mark Kettenis <kettenis@gnu.org>
-
- * elf.c (elfcore_grok_netbsd_procinfo): Make a pseudosection out
- of the note.
-
-2003-11-26 Daniel Jacobowitz <drow@mvista.com>
- Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.c (mips_elf_set_global_got_offset): Don't set no_fn_stub.
- (mips_elf_set_no_stub): New function.
- (mips_elf_multi_got): Call it.
- (_bfd_mips_elf_finish_dynamic_symbol): If a relocation is needed for
- a secondary GOT entry, create an R_MIPS_32 or R_MIPS_64 relocation and
- use mips_elf_create_dynamic_relocation to deal with any compatibility
- issues. Store the adjusted addend in the GOT slot.
-
-2003-11-25 Mattias Engdegård <mattias@virtutech.se>
-
- * stabs.c (_bfd_link_section_stabs): Skip N_EXCL stabs when
- procesing N_BINCL stabs.
-
-2003-11-25 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc_type_of_stub): Disallow stubs other than
- ppc_stub_plt_call to symbols defined in shared libs.
-
-2003-11-22 Jakub Jelinek <jakub@redhat.com>
-
- * elf-bfd.h (ELF_LINK_POINTER_EQUALITY_NEEDED): Define new flag.
- * elf.c (_bfd_elf_link_hash_copy_indirect): Copy it.
- * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise.
- (elf_i386_check_relocs): Set it.
- (elf_i386_finish_dynamic_symbol): If it is not set,
- clear st_value of SHN_UNDEF symbol.
-
-2003-11-20 Jim Blandy <jimb@redhat.com>
-
- * cpu-powerpc.c (powerpc_compatible): Any ISA in the PowerPC
- family is a superset of <bfd_arch_rs6000,bfd_mach_rs6k>.
-
-2003-11-20 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-s390.c (elf_s390_relocate_section): Don't recalculate symbol
- section for reloc output and subtract the output section's address
- from the addend when converting a relocation into one against a
- section symbol.
- * elf64-s390.c (elf_s390_relocate_section): Likewise.
-
-2003-11-18 James E Wilson <wilson@specifixinc.com>
-
- * elfxx-ia64.c (get_fptr): For fptr_rel, use dynobj not abfd.
- (elfNN_ia64_size_dynamic_sections): When stripping sections, check
- for ia64_info->rel_fptr_sec.
-
-2003-11-18 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (toc_adjusting_stub_needed): Exit early if section
- size is zero.
-
-2003-11-17 Daniel Jacobowitz <drow@mvista.com>
-
- * elf.c (_bfd_elf_link_hash_copy_indirect): Copy
- ELF_LINK_HASH_NEEDS_PLT. Fix formatting.
- * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise.
- * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise.
- * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Likewise.
- * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise.
- * elf32-sh.c (sh_elf_copy_indirect_symbol): Likewise.
- * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise.
- * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise.
- * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise.
- * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise.
- * elf32-xtensa.c (elf_xtensa_copy_indirect_symbol): Remove.
- (elf_backend_copy_indirect_symbol): Don't define.
-
-2003-11-14 Daniel Jacobowitz <drow@mvista.com>
-
- * elfxx-mips.c (mips_elf_merge_gots): Weaken assert for local
- GOT entries.
-
-2003-11-13 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-s390.c (elf_s390_relocate_section): Only convert R_390_32
- to R_390_RELATIVE. Convert the other relocations against local
- symbols to relocations against the start of the section.
- * elf64-s390.c (elf_s390_relocate_section): Only convert R_390_64
- to R_390_RELATIVE. Convert the other relocations against local
- symbols to relocations against the start of the section.
-
-2003-11-11 Nick Clifton <nickc@redhat.com>
-
- * elf-m10300.c (bfd_mn10300_elf_size_dynamic_sections): Use
- info->executable not info->shared to decide if a .interp section
- should be present.
- * elf32-arm.h (elf32_arm_size_dynamic_sections): Likewise.
- * elf32-cris.c (elf_cris_size_dynamic_sections): Likewise.
- * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise.
- * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise.
- * elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
- * elf32-vax.c (elf_vax_size_dynamic_sections): Likewise.
- * elf32-xtensa.c (elf_xtensa_size_dynamic_sections): Likewise.
- * elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise.
- * elfxx-mips.c (_bfd_mips_size_dynamic_sections): Likewise.
- * elflink.h (size_dynamic_sections): Likewise.
-
-2003-11-10 Jonathan Wilson <jonwil@tpgi.com.au>
-
- * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Swap out tls pointer.
- (_bfd_XXi_final_link_postscript): Look for __tks_used symbol. If
- found initialise the tls data directory entry.
-
-2003-11-07 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_install_value): Delete.
- (shared_stub_entry, stub_entry): Make them arrays of ints.
- Remove initial branch.
- (ppc_elf_relax_section): Write one branch around all trampolines
- instead. Correct bogus R_PPC_PLTREL24 handling. Correct
- branch range check. Only use shared_stub_entry when shared.
- Test that branches can reach stubs. Write trampolines out at
- end so that just one realloc is used. Handle little-endian
- mode. Move relevant code from ppc_elf_install_value to here.
- (ppc_elf_relocate_section): Move code handling RELAX32 from
- ppc_elf_install_value to here.
-
-2003-11-06 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_howto_raw); Add entry for R_PPC_RELAX32PC.
- (ppc_elf_install_value): Handle R_PPC_RELAX32PC. Merge duplicate
- cases.
- (shared_stub_entry): Correct opcode.
- (ppc_elf_relax_section): Generate R_PPC_RELAX32PC relocs.
- (ppc_elf_relocate_section): Handle them.
-
-2003-11-05 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (_bfd_elf_rela_local_sym): Accept asection **, and return
- updated section in case of merged section.
- * elf-bfd.h (_bfd_elf_rela_local_sym): Update declaration.
- * elf-hppa.h (elf_hppa_relocate_section): Adjust call.
- * elf-m10200.c (mn10200_elf_relocate_section): Likewise.
- * elf-m10300.c (mn10300_elf_relocate_section): Likewise.
- * elf32-arm.h (elf32_arm_relocate_section): Likewise.
- * elf32-avr.c (elf32_avr_relocate_section): Likewise.
- * elf32-cris.c (cris_elf_relocate_section): Likewise.
- * elf32-fr30.c (fr30_elf_relocate_section): Likewise.
- * elf32-frv.c (elf32_frv_relocate_section): Likewise.
- * elf32-h8300.c (elf32_h8_relocate_section): Likewise.
- * elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
- * elf32-i370.c (i370_elf_relocate_section): Likewise.
- * elf32-i860.c (elf32_i860_relocate_section): Likewise.
- * elf32-m32r.c (m32r_elf_relocate_section): Likewise.
- * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
- * elf32-mcore.c (mcore_elf_relocate_section): Likewise.
- * elf32-msp430.c (elf32_msp430_relocate_section): Likewise.
- * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
- * elf32-s390.c (elf_s390_relocate_section): Likewise.
- * elf32-sh.c (sh_elf_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf32-v850.c (v850_elf_relocate_section) Likewise.
- * elf32-vax.c (elf_vax_relocate_section): Likewise.
- * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise.
- * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
- * elf64-mmix.c (mmix_elf_relocate_section): Likewise.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
- * elf64-s390.c (elf_s390_relocate_section): Likewise.
- * elf64-sh64.c (sh_elf64_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
- * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
-
- * elf32-cris.c (cris_elf_relocate_section): Don't recalculate symbol
- section for reloc output.
- * elf32-i370.c (i370_elf_relocate_section): Likewise.
- * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf32-vax.c (elf_vax_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
-
- * elf32-ppc.c (ppc_elf_relocate_section): Don't recalculate everything
- for R_PPC_RELAX32 reloc. Don't bother checking ppc_elf_install_value
- return value.
- * elf64-ppc.c (ppc64_elf_relocate_section <R_PPC64_TOC>): Sanity check
- sec->id.
-
-2003-11-05 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-d10v.c (extract_rel_addend, insert_rel_addend): New functions.
- (elf32_d10v_relocate_section): Use them to handle -r reloc
- adjustments, and in place of _bfd_elf_rela_local_sym.
-
- * cpu-iq2000.c (arch_info_struct): Warning fix.
-
-2003-11-05 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-hppa.c (ELIMINATE_COPY_RELOCS): Define.
- (elf32_hppa_copy_indirect_symbol): Don't copy NON_GOT_REF on
- weakdefs.
- (elf32_hppa_check_relocs): Use ELIMINATE_COPY_RELOCS.
- (elf32_hppa_adjust_dynamic_symbol): Likewise. Copy weakdef
- NON_GOT_REF.
- (allocate_dynrelocs): Use ELIMINATE_COPY_RELOCS and
- SYMBOL_CALLS_LOCAL. Discard relocs for undef weak syms with
- non-default visibility.
- (elf32_hppa_relocate_section): Use ELIMINATE_COPY_RELOCS and
- SYMBOL_CALLS_LOCAL.
-
-2003-11-04 Alan Modra <amodra@bigpond.net.au>
-
- * aout-target.h, aoutf1.h, bfdio.c, bfdwin.c: Update copyright date.
- * coff-apollo.c, coff-sparc.c, coff-w65.c, coff-we32k.c: Ditto.
- * coff-z8k.c, coffgen.c, cpu-frv.c, cpu-h8500.c, cpu-hppa.c: Ditto.
- * cpu-ia64-opc.c, cpu-m10300.c, cpu-mips.c, cpu-msp430.c: Ditto.
- * cpu-rs6000.c, cpu-z8k.c, efi-app-ia32.c, elf32-am33lin.c: Ditto.
- * gen-aout.c, hash.c, hp300hpux.c, init.c, mach-o.c: Ditto.
- * nlm-target.h, nlm.c, som.h, stabs.c, sysdep.h, xsym.h: Ditto.
-
- * elf-m10300.c (_bfd_mn10300_elf_create_got_section): Fix
- "dereferencing type-punned pointer" warnings.
-
- * aout-adobe.c (aout_adobe_set_section_contents): Constify location.
- * aoutx.h (NAME(aout,set_section_contents)): Ditto.
- * bfd-in2.h: Regenerate.
- * binary.c (binary_set_section_contents): Ditto.
- * bout.c (b_out_set_section_contents): Ditto.
- * coff-tic54x.c (tic54x_set_section_contents): Ditto.
- * coffcode.h (coff_set_section_contents): Ditto.
- * ecoff.c (_bfd_ecoff_set_section_contents): Ditto.
- * elf-bfd.h (_bfd_elf_set_section_contents): Ditto.
- * elf.c (_bfd_elf_set_section_contents): Ditto.
- * elfxx-mips.c (_bfd_mips_elf_set_section_contents): Ditto.
- * elfxx-mips.h (_bfd_mips_elf_set_section_contents): Ditto.
- * i386msdos.c (msdos_set_section_contents): Ditto.
- * ieee.c (ieee_set_section_contents): Ditto.
- * ihex.c (ihex_set_section_contents): Ditto.
- * libaout.h (NAME(aout,set_section_contents)): Ditto.
- * libbfd-in.h (_bfd_nowrite_set_section_contents): Ditto.
- (_bfd_generic_set_section_contents): Ditto.
- * libbfd.h: Regenerate.
- * libbfd.c (_bfd_generic_set_section_contents): Ditto.
- * libecoff.h (_bfd_ecoff_set_section_contents): Ditto.
- * libnlm.h (nlmNAME(set_section_contents)): Ditto.
- (struct nlm_backend_data <nlm_mangle_relocs>): Ditto.
- * mmo.c (mmo_set_section_contents): Ditto.
- * nlm32-alpha.c (nlm_alpha_mangle_relocs): Ditto.
- * nlm32-i386.c (nlm_i386_mangle_relocs): Ditto.
- * nlm32-ppc.c (nlm_powerpc_mangle_relocs): Ditto.
- * nlm32-sparc.c (nlm_sparc_mangle_relocs): Ditto.
- * nlmcode.h (nlm_set_section_contents): Ditto.
- * oasys.c (oasys_set_section_contents): Ditto.
- * pdp11.c (NAME(aout,set_section_contents)): Ditto.
- * ppcboot.c (ppcboot_set_section_contents): Ditto.
- * srec.c (srec_set_section_contents): Ditto.
- * targets.c (BFD_JUMP_TABLE_WRITE <_bfd_set_section_contents>): Ditto.
- * tekhex.c (tekhex_set_section_contents): Ditto.
- (move_section_contents): Ditto.
- * versados.c (versados_set_section_contents): Ditto.
- * vms-misc.c (_bfd_save_vms_section): Ditto.
- * vms.c (vms_set_section_contents): Ditto.
- * vms.h (_bfd_save_vms_section): Ditto.
-
-2003-11-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc_size_one_stub): Size relbrlt. Accept info arg
- rather than htab.
- (ppc64_elf_size_stubs): Adjust ppc_size_one_stub traversal. Zero
- relbrlt size.
- (ppc64_elf_build_stubs): Allocate space for relbrlt.
-
-2003-11-04 Alan Modra <amodra@bigpond.net.au>
-
- * bfd-in.h (_bfd_elf_tls_setup): Declare.
- * bfd-in2.h: Regenerate.
- * elf-bfd.h (struct elf_link_tls_segment): Delete.
- (struct elf_link_hash_table): Add tls_sec and tls_size.
- * elf.c (_bfd_elf_link_hash_table_init): Init tls_sec and tls_size.
- * elflink.c (_bfd_elf_tls_setup): New function.
- * elflink.h (struct elf_final_link_info): Remove first_tls_sec.
- (elf_bfd_final_link): Don't set first_tls_sec here. Update code
- saving tls segment info, round segment size up.
- (elf_link_output_extsym): Adjust code using tls segment info.
- (elf_link_input_bfd): Likewise.
- * elf32-i386.c (dtpoff_base, tpoff): Likewise.
- * elf32-s390.c (dtpoff_base, tpoff): Likewise.
- * elf32-sh.c (dtpoff_base, tpoff): Likewise.
- * elf32-sparc.c (dtpoff_base, tpoff): Likewise.
- * elf64-s390.c (dtpoff_base, tpoff): Likewise.
- * elf64-x86-64.c (dtpoff_base, tpoff): Likewise.
- * elfxx-ia64.c (elfNN_ia64_tprel_base): Likewise.
- (elfNN_ia64_dtprel_base): Likewise.
- * elf64-alpha.c (alpha_get_dtprel_base): Likewise.
- (alpha_get_tprel_base): Likewise.
- (struct alpha_relax_info): Remove tls_segment.
- (elf64_alpha_relax_got_load): Adjust invocation of
- alpha_get_dtprel_base and alpha_get_tprel_base.
- (elf64_alpha_relax_tls_get_addr): Likewise.
- (elf64_alpha_relax_section): Likewise.
- (elf64_alpha_relocate_section): Likewise.
- (elf64_alpha_relax_find_tls_segment): Delete.
- * elf32-ppc.c (struct ppc_elf_link_hash_table): Remove tls_sec.
- (ppc_elf_tls_setup): Call _bfd_elf_tls_setup. Return section.
- (ppc_elf_relocate_section): Adjust to use elf.tls_sec.
- * elf32-ppc.h (ppc_elf_tls_setup): Update.
- * elf64-ppc.c (struct ppc_link_hash_table): Remove tls_sec.
- (ppc64_elf_tls_setup): Call _bfd_elf_tls_setup. Return section.
- (ppc64_elf_tls_optimize): Adjust to use elf.tls_sec.
- (ppc64_elf_relocate_section): Likewise.
- * elf64-ppc.h (ppc64_elf_tls_setup): Update.
-
-2003-11-03 Daniel Jacobowitz <drow@mvista.com>
-
- * elf-bfd.h (struct elf_backend_data): Remove plt_header_size.
- * elf-m10300.c (elf_backend_plt_header_size): Don't define.
- * elf32-arm.h (elf_backend_plt_header_size): Don't define.
- * elf32-cris.c (elf_backend_plt_header_size): Don't define.
- * elf32-i386.c (elf_backend_plt_header_size): Don't define.
- * elf32-mips.c (elf_backend_plt_header_size): Don't define.
- * elf32-ppc.c (elf_backend_plt_header_size): Don't define.
- * elf32-s390.c (elf_backend_plt_header_size): Don't define.
- * elf32-sh.c (elf_backend_plt_header_size): Don't define.
- * elf32-sparc.c (elf_backend_plt_header_size): Don't define.
- * elf64-alpha.c (elf_backend_plt_header_size): Don't define.
- * elf64-hppa.c (elf_backend_plt_header_size): Don't define.
- * elf64-mips.c (elf_backend_plt_header_size): Don't define.
- * elf64-ppc.c (elf_backend_plt_header_size): Don't define.
- * elf64-s390.c (elf_backend_plt_header_size): Don't define.
- * elf64-sh64.c (elf_backend_plt_header_size): Don't define.
- * elf64-sparc.c (elf_backend_plt_header_size): Don't define.
- * elf64-x86-64.c (elf_backend_plt_header_size): Don't define.
- * elfn32-mips.c (elf_backend_plt_header_size): Don't define.
- * elfxx-ia64.c (elf_backend_plt_header_size): Don't define.
- * elfxx-target.h (elf_backend_plt_header_size): Don't define
- or include in target initializer.
-
-2003-11-03 Andrew Cagney <cagney@redhat.com>
-
- * section.c (bfd_set_section_contents): Make the "location" buffer
- constant.
- * bfd-in2.h: Re-generate.
-
-2003-10-30 Andrew Cagney <cagney@redhat.com>
-
- * syms.c: Replace "struct symbol_cache_entry" with "struct
- bfd_symbol".
- * vms.h, targets.c, section.c, reloc.c, peicode.h: Ditto.
- * mipsbsd.c, elf.c, linker.c, elf-bfd.h, ecoff.c: Ditto.
- * cpu-z8k.c, cpu-ns32k.c, cpu-h8500.c, bfd.c, bfd-in.h: Ditto.
- * bfd-in2.h: Re-generate.
-
-2003-10-30 Jakub Jelinek <jakub@redhat.com>
-
- * elfxx-ia64.c: Include objalloc.h, hashtab.h.
- (struct elfNN_ia64_local_hash_entry): Remove root. Add id and r_sym
- fields.
- (struct elfNN_ia64_local_hash_table): Remove.
- (struct elfNN_ia64_link_hash_table): Change loc_hash_table's type
- to htab_t. Add loc_hash_memory field.
- (elfNN_ia64_local_hash_table_init, elfNN_ia64_new_loc_hash_entry):
- Removed.
- (elfNN_ia64_local_htab_hash, elfNN_ia64_local_htab_eq): New
- functions.
- (elfNN_ia64_hash_table_create): Use hashtab.h hashtable for
- loc_hash_table. Initialize loc_hash_memory.
- (elfNN_ia64_hash_table_free): New function.
- (elfNN_ia64_local_hash_lookup): Remove.
- (elfNN_ia64_local_dyn_sym_thunk): Change into htab_traverse
- callback.
- (elfNN_ia64_dyn_sym_traverse): Use htab_traverse.
- (get_local_sym_hash): Use hashtab.h hashtable for loc_hash_table.
- (bfd_elfNN_bfd_link_hash_table_free): Define.
-
-2003-10-30 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.c (_bfd_elf_link_record_dynamic_symbol): Modify versioned
- symbol string in place.
-
-2003-10-30 Jim Blandy <jimb@redhat.com>
-
- * cpu-rs6000.c (rs6000_compatible): Check the correct arch_info
- object's mach field: all PowerPC machines are supersets of the
- original rs6000, but not later rs6000 machines.
-
-2003-10-30 Alan Modra <amodra@bigpond.net.au>
-
- * dwarf2.c (struct attribute): Delete "unsnd", "snd" and "addr".
- Add "val" and "sval" fields.
- (DW_STRING, DW_UNSND, DW_BLOCK, DW_SND, DW_ADDR): Delete.
- (read_attribute_value): Expand and adjust DW_* occurrences.
- (scan_unit_for_functions, parse_comp_unit): Likewise.
-
-2003-10-30 Phil Edwards <phil@codesourcery.com>
-
- * config.bfd (arm-*-vxworks): Remove separate stanza; merge with
- other common ELF triples.
- (i[3-7]86-*-vxworks): Change to ELF format.
- (mips*-*-windiss): New triple, add to common MIPS/ELF stanza.
- (sh-*-vxworks): New stanza.
-
-2003-10-30 Lars Knoll <lars@trolltech.com>
- Michael Matz <matz@suse.de>
- Jakub Jelinek <jakub@redhat.com>
- Alan Modra <amodra@bigpond.net.au>
-
- * merge.c (struct sec_merge_sec_info): Update comment.
- (struct sec_merge_hash_entry): Remove entsize.
- (sec_merge_hash_lookup): Only adjust alignment when creating.
- (sec_merge_emit): Remove register keyword.
- (cmplengthentry, last4_eq, last_eq): Delete.
- (strrevcmp, strrevcmp_align, is_suffix): New.
- (merge_strings): Use them to implement fast suffix merging.
- * elf-strtab.c (struct elf_strtab_hash_entry): Update comments.
- Make "len" signed.
- (_bfd_elf_strtab_add): Lose on >2G strings.
- (_bfd_elf_strtab_emit): Don't emit strings with len < 0.
- (cmplengthentry, last4_eq): Delete.
- (strrevcmp, is_suffix): New.
- (_bfd_elf_strtab_finalize): Rework to implement fast suffix merging.
-
-2003-10-29 Daniel Jacobowitz <drow@mvista.com>
-
- * elf32-arm.h (elf32_arm_final_link_relocate): Move check for
- SEC_ALLOC.
-
-2003-10-29 Philip Blundell <philb@gnu.org>
-
- * elf32-arm.h (elf32_arm_plt0_entry, elf32_arm_plt_entry): New
- code sequence.
- (PLT_HEADER_SIZE): New.
- (struct elf32_arm_pcrel_relocs_copied): Rename to ...
- (struct elf32_arm_relocs_copied): ... this. Count both
- pcrel and non-pcrel relocs. All uses updated.
- (struct elf32_arm_link_hash_table): Add pointers to dynamic linker
- sections and symbol/section mapping cache.
- (create_got_section): New.
- (elf32_arm_create_dynamic_sections): New.
- (elf_backend_create_dynamic_sections): Use it.
- (elf32_arm_final_link_relocate): Support garbage collection of relocs.
- (elf32_arm_check_relocs): Likewise.
- (elf32_arm_adjust_dynamic_symbol): Likewise.
- (elf32_arm_copy_indirect_symbol): New.
- (elf32_arm_link_hash_table_create): Initialise new fields.
- (elf32_arm_gc_sweep_hook): Implement.
- (elf32_arm_discard_copies): Delete.
- (elf32_arm_finish_dynamic_symbol): Use new PLT code.
- (elf32_arm_finish_dynamic_sections): Likewise.
- (elf_backend_can_refcount): Define.
- (elf_backend_copy_indirect_symbol): Likewise.
- (elf_backend_plt_header_size): Set to PLT_HEADER_SIZE.
-
-2003-10-29 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (elf_backend_grok_prstatus): Define.
- (elf_backend_grok_psinfo): Define.
- (ppc64_elf_grok_prstatus, ppc64_elf_grok_psinfo): New functions.
-
- * elf.c (_bfd_elfcore_make_pseudosection): Allow multiple
- sections with the same name.
- (elfcore_grok_lwpstatus): Likewise.
- (elfcore_grok_win32pstatus): Likewise.
- (elfcore_grok_note): Likewise.
- (elfcore_grok_nto_status): Likewise.
- (elfcore_grok_nto_gregs): Likewise.
-
-2003-10-27 Daniel Jacobowitz <drow@mvista.com>
-
- * elf32-arm.h (elf32_arm_merge_private_bfd_data): Never skip dynamic
- objects.
-
-2003-10-14 Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.c (mips_elf_create_got_section): Initialize global_gotno.
-
-2003-10-24 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Look up
- hash table for real symbols.
-
-2003-10-23 Michael Snyder <msnyder@redhat.com>
-
- * section.c (asection): Fix typo in comment.
-
-2003-10-23 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (get_tls_mask): Add toc_symndx param, save toc
- reloc symbol index to it. Don't allow gd syms in shared libs
- to be optimized.
- (ppc64_elf_tls_optimize): Adjust get_tls_mask call.
- (ppc64_elf_size_stubs): Likewise.
- (ppc64_elf_relocate_section): Check that tls relocs are only used
- with tls syms, and similarly for non-tls. Correct symbol used
- when optimizing toc tls code.
-
-2003-10-22 Nick Clifton <nickc@redhat.com>
-
- * peicode.h (coff_swap_scnhdr_in): Only remove padding when
- processing an executable.
-
-2003-10-22 Jakub Jelinek <jakub@redhat.com>
-
- * elflink.c (_bfd_elf_export_symbol): Adjust for globals and locals
- field changes.
- (_bfd_elf_link_assign_sym_version): Likewise.
- * elflink.h (size_dynamic_sections): Likewise.
-
-2003-10-21 Alexandre Oliva <aoliva@redhat.com>,
- Michael Snyder <msnyder@redhat.com>
-
- * archures.c (bfd_mach_sh4a, bfd_mach_sh4al_dsp, bfd_mach_sh4_nofpu,
- bfd_mach_sh4a_nofpu): New machine types.
- * bfd-in2.h: Rebuilt.
- * cpu-sh.c (compatible): Remove unused function.
- (SH4A_NEXT, SH4AL_DSP_NEXT, SH4_NOFPU_NEXT, SH4A_NOFPU_NEXT): New.
- (arch_info_struct): Add sh4a, sh4al_dsp, sh4-nofpu and sh4a-nofpu.
- * elf32-sh.c (sh_elf_set_mach_from_flags): Handle them.
-
-2003-10-21 Wouter van Heyst <wouter@vidicode.nl>
-
- * elf32-arm.h (elf32_arm_merge_private_bfd_data): Correct text
- describing mismatched formats involving the Maverick FP type.
-
-2003-10-21 Anil Paranjpe <anilp1@KPITCummins.com>
-
- * binary.c (binary_object_p): Pass machine flag along with
- architecture.
-
-2003-10-21 Thorsten Brehm <brehm@gmx.net>
-
- * archures.c (bfd_default_scan): Add support for mcf528x.
- * ieee.c (ieee_write_processor): Likewise.
-
-2003-10-21 Peter Barada <pbarada@mail.wm.sps.mot.com>
- Bernardo Innocenti <bernie@develer.com>
-
- * archures.c: Add MCF528x (MCFv4) support.
- * bfd/cpu-m68k.c (arch_info_struct): Likewise.
- * bfd-in2.h: Regenerate.
-
-2003-10-20 Andrew Cagney <cagney@redhat.com>
-
- * targets.c: Replace "struct sec" with "struct bfd_section"
- * syms.c, sparclynx.c, section.c, opncls.c: Ditto.
- * libcoff-in.h, libbfd-in.h, elfxx-target.h: Ditto.
- * elf.c, coffgen.c, bfd.c, bfd-in.h, aoutf1.h: Ditto.
- * aout-tic30.c, aout-target.h:
- * bfd-in2.h, libcoff.h, libbfd.h: Regenerate.
-
-2003-10-18 Hans-Peter Nilsson <hp@bitrange.com>
-
- Support linker relaxation of new R_MMIX_PUSHJ_STUBBABLE relocs.
- * elf64-mmix.c (MAX_PUSHJ_STUB_SIZE): New macro.
- (struct _mmix_elf_section_data): New member pjs.
- (mmix_set_relaxable_size, mmix_elf_get_section_contents): New
- functions.
- (elf_mmix_howto_table): New entry for R_MMIX_PUSHJ_STUBBABLE.
- (mmix_reloc_map): Ditto.
- (mmix_elf_relocate_section): Handle R_MMIX_PUSHJ_STUBBABLE.
- (mmix_final_link_relocate, mmix_elf_check_common_relocs): Ditto.
- (mmix_elf_perform_relocation): Ditto. Don't mark parameter addr
- unused.
- (mmix_elf_check_relocs): Move early return to after
- mmix_elf_check_common_relocs call.
- (mmix_elf_symbol_processing): Fix cut-and-pasto in head comment.
- (_bfd_mmix_before_linker_allocation): Rename from
- _bfd_mmix_prepare_linker_allocated_gregs. All referers changed.
- Arrange to set the initial relaxable size of sections.
- (_bfd_mmix_after_linker_allocation): Rename from
- _bfd_mmix_finalize_linker_allocated_gregs.
- (mmix_elf_relax_section): Relax a R_MMIX_PUSHJ_STUBBABLE reloc.
- (bfd_elf64_get_section_contents): Define.
- * reloc.c: Add ENUMX for BFD_RELOC_MMIX_PUSHJ_STUBBABLE.
- * libbfd.h, bfd-in2.h: Regenerate.
-
- * reloc.c (bfd_generic_relax_section): Default-set
- section->_cooked_size here.
- (bfd_generic_get_relocated_section_contents): Don't set it here.
- Explain why.
-
-2003-10-17 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
-
- * elf32-hppa.c (elf32_hppa_relocate_section): Skip relocation if
- output section has been discarded.
-
-2003-10-17 Shrinivas Atre <shrinivasa@KPITCummins.com>
-
- * coff-h8300.c (funcvec_hash_newfunc): Handle normal mode.
- (h8300_reloc16_extra_cases): Likewise.
- (h8300_bfd_link_add_symbols): Likewise.
-
-2003-10-17 Dhananjay Deshpande <dhananjayd@kpitcummins.com>
-
- * cpu-h8300.c (h8300sxn_info_struct): Correct address size.
- (h8300sn_info_struct): Likewise.
- (h8300hn_info_struct): Likewise.
-
-2003-10-16 Pavel Roskin <proski@gnu.org>
-
- * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Don't calculate image size
- for sections which lack size info.
-
-2003-10-17 Danny Smith <dannysmith@users.sourceforge.net>
-
- * configure.host: Add __USE_MINGW_FSEEK to HDEFINES for
- mingw32.
-
-2003-10-16 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also warn
- undefined patterns with '*'.
-
-2003-10-16 H.J. Lu <hongjiu.lu@intel.com>
-
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't
- use the last CIE from a different section.
- (_bfd_elf_write_section_eh_frame): Don't pad beyond the raw
- size of the output section.
-
-2003-10-07 Roland McGrath <roland@redhat.com>
-
- * elf.c (_bfd_elf_make_section_from_phdr): Set alignment_power of
- new section from p_align header field.
-
-2003-10-16 H.J. Lu <hongjiu.lu@intel.com>
-
- * elf32-xtensa.c (xtensa_read_table_entries): The external size
- of entry is 8 bytes.
-
-2003-10-15 Andrew Cagney <cagney@redhat.com>
-
- * targets.c (BFD_JUMP_TABLE_SYMBOLS): Replace NAME##_get_symtab
- with NAME##_canonicalize_symtab.
- * libcoff-in.h (coff_canonicalize_symtab): Update.
- * xsym.h (bfd_sym_canonicalize_symtab): Update.
- * elf-bfd.h (_bfd_elf_canonicalize_symtab): Update.
- * coffgen.c (coff_canonicalize_symtab): Update.
- * libbfd-in.h (_bfd_nosymbols_canonicalize_symtab): Update.
- * libnlm.h (nlmNAME(canonicalize_symtab)): Update.
- * ieee.c (ieee_vec): Update comment.
- * libecoff.h (_bfd_ecoff_canonicalize_symtab): Update.
- * mmo.c (mmo_canonicalize_symtab): Update.
- * nlm-target.h (nlm_canonicalize_symtab): Update.
- * nlmcode.h (nlm_canonicalize_symtab): Update.
- * i386msdos.c (msdos_canonicalize_symtab): Update.
- * hp300hpux.c (MY (canonicalize_symtab)): Update.
- * oasys.c (oasys_canonicalize_symtab): Update.
- * som.c (som_canonicalize_symtab): Update.
- * pef.c (bfd_pef_canonicalize_symtab): Update.
- * nlmcode.h (nlm_canonicalize_symtab): Update.
- * xsym.c (bfd_sym_canonicalize_symtab): Update.
- * vms.c (vms_canonicalize_symtab): Update.
- * versados.c (versados_canonicalize_symtab): Update.
- * mach-o.c (bfd_mach_o_canonicalize_symtab): Update.
- * ieee.c (ieee_canonicalize_symtab): Update.
- * pdp11.c (NAME(aout,canonicalize_symtab)): Update.
- * reloc.c: Update comment.
- * libaout.h (NAME(aout,canonicalize_symtab)): Update.
- * coff64-rs6000.c (aix5coff64_vec): Update.
- * coff64-rs6000.c (bfd_xcoff_aix5_backend_data): Update.
- * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Update.
- * aoutx.h (NAME(aout,canonicalize_symtab)): Update.
- * elfxx-target.h (bfd_elfNN_canonicalize_symtab): Update.
- * hp300hpux.c (MY_canonicalize_symtab): Update.
- * ecoff.c (_bfd_ecoff_canonicalize_symtab): Update.
- * aout-tic30.c (MY_canonicalize_symtab): Update.
- * aout-target.h (MY_canonicalize_symtab): Update.
- * ppcboot.c (ppcboot_canonicalize_symtab): Update.
- * elf.c (_bfd_elf_canonicalize_symtab): Update.
- * elfcode.h (elf_canonicalize_symtab): Update.
- * ihex.c (ihex_canonicalize_symtab): Update.
- * tekhex.c (tekhex_canonicalize_symtab): Update.
- * binary.c (binary_canonicalize_symtab): Update.
- * srec.c (srec_canonicalize_symtab): Update.
-
-2003-10-15 Kazu Hirata <kazu@cs.umass.edu>
-
- * elf32-h8300.c (elf_reloc_map): Fix a comment typo.
-
-2003-10-15 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_relocate_section): Handle R_SH_IMM_*_PCREL
- relocations.
- (sh_elf_check_relocs): Likewise.
-
- * elf32-sh64.c (elf_backend_merge_symbol_attribute): Define.
- (sh64_elf_merge_symbol_attribute): New.
- * elf64-sh64.c (elf_backend_merge_symbol_attribute): Define.
- (sh64_elf64_merge_symbol_attribute): New.
-
-2003-10-14 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf-bfd.h (struct elf_backend_data): New function pointer member
- elf_backend_merge_symbol_attribute.
- * elflink.h (elf_link_add_object_symbols): Adjust call to
- elf_backend_merge_symbol_attribute if the backend defined it.
- * elfxx-target.h (elf_backend_merge_symbol_attribute): New macro.
- (elfNN_bed): Add that to the initializer.
-
-2003-10-14 Bob Wilson <bob.wilson@acm.org>
-
- * elf32-xtensa.c (get_is_linkonce_section): Delete.
- (xtensa_is_property_section, xtensa_is_littable_section): Use
- XTENSA_INSN_SEC_NAME and XTENSA_LIT_SEC_NAME macros. Do not recognize
- linkonce sections containing ".xt.insn" and ".xt.lit" substrings.
- (xtensa_get_property_section_name): Check section name instead of
- calling get_is_linkonce_section. Remove unused bfd parameter. Use
- XTENSA_INSN_SEC_NAME and XTENSA_LIT_SEC_NAME macros. Never generate
- linkonce section names by appending ".xt.insn" or ".xt.lit".
- (xtensa_read_table_entries): Remove bfd argument in call to
- xtensa_get_property_section_name. Free section name when done.
- (elf_xtensa_combine_prop_entries): Free leaking table.
-
-2003-10-13 Richard Sandiford <rsandifo@redht.com>
-
- * elfxx-mips.c (_bfd_mips_elf_size_dynamic_sections): Don't add
- DT_MIPS_LIBLIST or DT_MIPS_CONFLICT entries.
- (_bfd_mips_elf_finish_dynamic_symbol): Don't handle them. Don't
- handle DT_MIPS_MSYM. Set DT_RELSZ based on the number of relocations
- that were needed.
- (_bfd_mips_elf_modify_segment_map): Fix placement of PT_MIPS_OPTIONS.
- (_bfd_mips_elf_merge_private_bfd_data): Ignore EF_MIPS_UCODE.
-
-2003-10-13 H.J. Lu <hongjiu.lu@intel.com>
-
- * bfd-in.h (bfd_elf32_ia64_after_parse): New prototype.
- (bfd_elf64_ia64_after_parse): Likewise.
- * bfd-in2.h: Regenerated.
-
- * elfxx-ia64.c (oor_ip): New.
- (oor_branch_size): Likewise.
- (bfd_elfNN_ia64_after_parse): Likewise.
- (elfNN_ia64_relax_section): Use oor_ip if oor_branch_size
- equals sizeof (oor_ip).
-
-2003-10-12 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf64-sh64.c (sh_elf64_relocate_section): Tidy up for the
- renumbering of some relocation numbers.
-
-2003-10-11 Alan Modra <amodra@bigpond.net.au>
-
- * coff-sh.c: Move definition of MAP and guard more code with
- COFF_IMAGE_WITH_PE.
-
- * section.c (bfd_get_section_size_before_reloc): Ignore reloc_done.
- * bfd-in2.h: Regenerate.
-
-2003-10-10 H.J. Lu <hongjiu.lu@intel.com>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * doc/Makefile.in: Likewise.
-
-2003-10-09 H.J. Lu <hongjiu.lu@intel.com>
-
- * cofflink.c: Include "safe-ctype.h".
- (coff_link_add_symbols): Use ISDIGIT instead of isdigit.
-
-2003-10-08 Dave Brolley <brolley@redhat.com>
- On behalf of Michael Snyder <msnyder@redhat.com>
-
- * archures.c: Add FRV fr550 machine.
- * cpu-frv.c: Ditto.
- * elf32-frv.c: Ditto.
- * bfd-in2.h: Regenerate.
-
-2003-10-08 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (STUB_MOVE,STUB_LI16): Fix stub code
- for non-SGI N64 ABI. Improve code consitency.
-
-2003-10-07 Alexandre Oliva <aoliva@redhat.com>
-
- * elf32-frv.c (elf32_frv_howto_table): Set R_FRV_LABEL16's
- rightshift to 2.
-
-2003-10-07 Nathan Sidwell <nathan@codesourcery.com>
-
- * libbfd-in.h (_bfd_link_section_stabs): Add string offset
- parameter.
- * cofflink.c (coff_link_add_symbols): Deal with split stab
- sections.
- * elflink.h (elf_link_add_object_symbols): Deal with split stab
- sections.
- * stabs.c (_bfd_link_section_stabs): Add string offset parameter.
- * libbfd.h: Regenerated.
-
- * coffcode.h (coff_set_alignment_hook): With PE_COFF reloc
- overflow, set reloc start position to after the count
- reloc. Subtract one from num relocs. Give error on 0xffff relocs
- and no overflow.
- * cofflink.c (_bfd_coff_final_link): Deal with PE_COFF reloc
- overflow.
- * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Do overflow if >=
- 0xffff.
-
-2003-10-06 H.J. Lu <hongjiu.lu@intel.com>
-
- * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Pad the
- last CIE/FDE if needed.
-
-2003-10-06 Nick Clifton <nickc@redhat.com>
-
- * targets.c (_bfd_target_vector): Include bfd_elf64_sparc_vec if
- BFD64 is enabled.
-
-2003-10-06 Matt Thomas <matt@3am-software.com>
-
- * config.bfd: Move the hppa*-*-netbsd* case to the hppa*-*-linux* case.
-
-2003-10-06 Robert Millan <robertmh@gnu.org>
-
- * configure.in: Match GNU/KNetBSD with new knetbsd*-gnu triplet.
- * config.bfd: Likewise.
- * configure: Regenerate.
-
-2003-10-04 Christian Groessler <chris@groessler.org>
-
- * coff-z8k.c (extra_case): Fix displacement length check for R_JR
- and R_CALLR.
-
-2003-10-04 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc1x.c: Update to ISO C90; replace PTR with void*.
- * elf32-m68hc11.c: Likewise.
- * elf32-m68hc12.c: Likewise.
- * elf32-m68hc1x.h: Likewise.
-
-2003-10-04 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): Fix merge
- of flags between HC12 and HCS12.
-
-2003-10-04 Bryce McKinlay <bryce@mckinlay.net.nz>
-
- * merge.c (_bfd_merge_sections): Set SEC_EXCLUDE flag on sections
- which become empty after merging.
-
-2003-09-30 Jakub Jelinek <jakub@redhat.com>
-
- * elfxx-ia64.c (ia64_howto_table): Fix size of R_IA64_TPREL64[LM]SB,
- R_IA64_DTPREL{32,64}[LM]SB and R_IA64_DTPMOD64[LM]SB.
-
-2003-09-30 Chris Demetriou <cgd@broadcom.com>
-
- * archures.c (bfd_mach_mipsisa64r2): New define.
- * bfd-in2.h: Regenerate.
- * aoutx.h (NAME(aout,machine_type)): Handle bfd_mach_mipsisa64r2.
- * cpu-mips.c (I_mipsisa64r2): New enum value.
- (arch_info_struct): Add entry for I_mipsisa64r2.
- * elfxx-mips.c (_bfd_elf_mips_mach)
- (_bfd_mips_elf_print_private_bfd_data): Handle E_MIPS_ARCH_64R2.
- (mips_set_isa_flags): Add bfd_mach_mipsisa64r2 case.
- (mips_mach_extensions): Add entry for bfd_mach_mipsisa64r2.
-
-2003-09-29 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (elfNN_hpux_backend_symbol_processing): New.
- Handle SHN_IA_64_ANSI_COMMON.
- (elf_backend_section_from_bfd_section): Defined.
-
-2003-09-26 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.c (elf_link_read_relocs_from_section): Add an argument
- of a pointer to section. Check bad symbol index.
- (_bfd_elf_link_read_relocs): Modify calls to
- elf_link_read_relocs_from_section.
-
-2003-09-23 DJ Delorie <dj@redhat.com>
-
- * elf32-sh.c (sh_elf_howto_table): R_SH_SWITCH8,
- R_SH_GNU_VTINHERIT, R_SH_GNU_VTENTRY,
- R_SH_LOOP_START,R_SH_LOOP_END moved to "reserved" spaces,
- R_SH_DIR16, R_SH_DIR8, R_SH_DIR8UL, R_SH_DIR8UW, R_SH_DIR8U,
- R_SH_DIR8SW, R_SH_DIR8S, R_SH_DIR4UL, R_SH_DIR4UW, R_SH_DIR4U,
- R_SH_PSHA, R_SH_PSHL added.
- (sh_reloc_map): Add R_SH_DIR16 and R_SH_DIR8.
- (sh_elf_relocate_section): Support new relocs.
-
-2003-09-23 Bob Wilson <bob.wilson@acm.org>
-
- * elf32-xtensa.c (elf_xtensa_relocate_section): Fix typo that clobbered
- dynamic relocation offsets.
-
-2003-09-23 Alan Modra <amodra@bigpond.net.au>
-
- * simple.c (bfd_simple_get_relocated_section_contents): Free the
- hash table using _bfd_generic_link_hash_table_free.
-
-2003-09-23 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct bfd_elf_special_section): Remove "suffix". Change
- type of prefix_length and suffix_length to int. Rename "attributes"
- to "attr". Comment.
- (_bfd_elf_get_sec_type_attr): Update prototype.
- * elf.c (get_special_section): Rewrite.
- (_bfd_elf_get_sec_type_attr): Return struct rather than passing in
- attr and type pointers.
- (_bfd_elf_new_section_hook): Adjust for above.
- (special_sections): Merge suffix with prefix. Set
- prefix_length for all entries. Set suffix_length appropriately.
- * elf32-m32r.c (m32r_elf_special_sections): Likewise.
- * elf32-m68hc11.c (elf32_m68hc11_special_sections): Likewise.
- * elf32-m68hc12.c (elf32_m68hc12_special_sections): Likewise.
- * elf32-mcore.c (mcore_elf_special_sections): Likewise.
- * elf32-sh64.c (sh64_elf_special_sections): Likewise.
- * elf32-v850.c (v850_elf_special_sections): Likewise.
- * elf32-xtensa.c (elf_xtensa_special_sections): Likewise.
- * elf64-alpha.c (elf64_alpha_special_sections): Likewise.
- * elf64-hppa.c (elf64_hppa_special_sections): Likewise.
- * elf64-ppc.c (ppc64_elf_special_sections): Likewise.
- * elf64-sh64.c (sh64_elf64_special_sections): Likewise.
- * elfxx-ia64.c (elfNN_ia64_special_sections): Likewise.
- * elfxx-mips.c (_bfd_mips_elf_special_sections): Likewise.
- * elf32-ppc.c (ppc_elf_special_sections): Likewise. Fix .plt flags.
-
-2003-09-21 Daniel Jacobowitz <drow@mvista.com>
-
- * elf64-alpha.c (elf64_alpha_create_got_section): Initialize
- ->got if the section already exists.
-
-2003-09-19 Nathan Sidwell <nathan@codesourcery.com>
-
- * dwarf2.c (decode_line_info): Cope with an initially empty
- filename table.
-
-2003-09-18 H.J. Lu <hongjiu.lu@intel.com>
-
- * acinclude.m4: Include ../config/accross.m4.
- * aclocal.m4: Regenerated.
-
- * configure.host (HOST_64BIT_TYPE): Remove if it is set to long
- or long long.
- (HOST_U_64BIT_TYPE): Remove if it is set to unsigned long long.
- (host64): Remove if HOST_64BIT_TYPE is set to long.
-
- * configure.in (HOST_64BIT_TYPE): Set according to the size of
- long and long long.
- (HOST_U_64BIT_TYPE): Likewise.
- (host64): Likewise.
- * configure: Regenerated.
-
-2003-09-19 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (elfcore_write_note): Don't use sizeof(Elf_External_note)
- since some ABIs round up the size of the struct.
-
-2003-09-18 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.c (_bfd_elf_merge_symbol): Allow type change if
- the old symbol is undefined and the new symbol is defined.
-
-2003-09-18 Andreas Schwab <schwab@suse.de>
-
- * simple.c (bfd_simple_get_relocated_section_contents): Use
- _bfd_generic_link_hash_table_create instead of
- bfd_link_hash_table_create.
-
-2003-09-10 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (elfNN_ia64_special_sections): Mark all sections
- started with ".sbss" or "".sdata" as SHF_IA_64_SHORT.
-
-2003-09-10 John David Anglin <dave.anglin@nrc-cnrc.nrc.ca>
- Randolph Chung <randolph@tausq.org>
-
- * elf32-hppa.c (struct elf32_hppa_link_hash_entry,
- hppa_link_hash_newfunc, hppa_build_one_stub,
- elf32_hppa_adjust_dynamic_symbol, mark_PIC_calls, allocate_plt_static,
- allocate_dynrelocs, elf32_hppa_size_dynamic_sections,
- elf32_hppa_finish_dynamic_symbol): Remove pic_call field and all code
- for generating import stubs for calls to statically linked PIC
- functions.
- (hppa_type_of_stub): Don't generate an import stub for calls to
- statically linked pic functions. Generate import stubs for calls
- in a shared object, to functions not in a regular file, and to
- defined weak functions. Add new argument INFO.
- (hppa_build_one_stub): Don't undef ADDIL_DP.
- (elf32_hppa_check_relocs): Don't set SEC_HAS_GOT_REF flag.
- (elf32_hppa_size_stubs): Pass info to hppa_type_of_stub.
- (final_link_relocate): Change all DLTIND relocs to DPREL relocs in a
- non-shared link. Convert instructions that use the the linkage table
- pointer, or a facsimile thereof, to use the global data pointer when
- the reloc has been changed.
-
-2003-09-08 Joel Brobecker <brobecker@gnat.com>
-
- * archures.c: Add new machine names for hppa.
- * bfd-in2.h: Regenerate.
- * cpu-hppa.c: Use the new machine names.
-
-2003-09-06 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc1x.h (struct m68hc11_elf_link_hash_table): Remove
- all_local_syms member.
- * elf32-m68hc1x.c (elf32_m68hc11_size_stubs): Use bfd_elf_get_elf_syms
- to get the local symbols.
-
-2003-09-06 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc12.c (elf32_m68hc12_special_sections): New for hc11.
- (elf_backend_special_sections): Define.a
-
- PR savannah/4950:
- * elf32-m68hc11.c (elf32_m68hc11_special_sections): The .vectors
- section is read-only.
-
-2003-09-04 Nick Clifton <nickc@redhat.com>
-
- * archures.c (bfd_mach_v850e1): Define.
- * bfd-in2.h: Regenerate.
- * cpu-v850.h (scan): Accept bfd_mach_v850e1.
- (arch_info_struct): Include an entry for bfd_mach_v850e1.
- * elf32-v850.c (v850_elf_object_p): Accept E_V850E1_ARCH flag.
- (v850_elf_final_write_processing): Accept bfd_mach_v850e1.
- (v850_elf_print_private_bfd_data): Interpret E_V850E1_ARCH flag.
- (v850_elf_merge_private_bfd_data): Allow v850e1 binaries to be
- linked with v850e binaries. Mark the output as v850e.
-
-2003-09-03 Nick Clifton <nickc@redhat.com>
-
- * cofflink.c (_bfd_coff_link_input_bfd): Do not skip section
- symbols that are used in relocs.
-
-2003-08-30 Robert Millan <robertmh@gnu.org>
-
- * configure.in: Match GNU/KFreeBSD with new kfreebsd*-gnu triplet.
- * config.bfd: Likewise.
- * configure: Regenerate.
-
-2003-08-31 Christian Groessler <chris@groessler.org>
-
- * elf32-i860.c (i860_howto_pc26_reloc): Finish relocation here
- instead of returning bfd_reloc_continue.
-
-2003-08-31 Andreas Jaeger <aj@suse.de>
-
- * merge.c: Update to ISO C90.
-
-2003-08-27 Ian Lance Taylor <ian@airs.com>
-
- * configure.in: Check for strtoull.
- * bfd.c (bfd_scan_vma): Use strtoull when available.
- * configure, config.in: Regenerate.
-
- * configure.in: Define and substitute BFD_HOST_LONG_LONG.
- * bfd-in.h: Define BFD_HOST_LONG_LONG. Test it rather than
- __GNUC__ when deciding whether to use long long for
- BFD_HOST_64_BIT.
- * configure, Makefile.in, doc/Makefile.in, bfd-in2.h: Regenerate.
-
-2003-08-27 Christian Groessler <chris@groessler.org>
-
- * elf32-i860.c (i860_howto_pc26_reloc, i860_howto_pc16_reloc,
- i860_howto_splitn_reloc, i860_howto_highadj_reloc): New
- functions.
- (elf32_i860_howto_table): Insert the new functions as
- 'special_function's in the proper reloc type entries.
-
-2003-08-27 Richard Sandiford <rsandifo@redhat.com>
-
- * elf32-frv.c (elf32_frv_relocate_section): Use
- _bfd_elf_rela_local_sym.
-
-2003-08-26 Michael Snyder <msnyder@redhat.com>
-
- * cpu-frv.c: Remove unused enum.
-
-2003-08-25 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
-
- * reloc.c: Fix documentation for MIPS ELF relocations.
- libbfd.h: Regenerate.
- bfd-in2.h: Regenerate.
-
-2003-08-24 Jason Eckhardt <jle@rice.edu>
-
- * coff-i860.c (CALC_ADDEND): Define to be a no-op.
-
-2003-08-24 Jason Eckhardt <jle@rice.edu>
-
- * elf32-i860.c (elf32_i860_relocate_pc16): Subtract 4 and
- shift by 2 before storing the relocated value.
-
-2003-08-23 Jason Eckhardt <jle@rice.edu>
-
- * coff-i860.c (coff_i860_reloc_nyi): New function.
- (howto_table): Add entries for relocations PAIR, HIGHADJ, HIGH,
- LOWn, SPLITn, and BRADDR.
- (RTYPE2HOWTO): Check that the r_type is within the howto_table
- before trying to access the entry.
- (coff_i860_rtype_to_howto): Likewise.
- (coff_i860_reloc_type_lookup): New function.
- (i860_reloc_processing): New function.
- (coff_bfd_reloc_type_lookup): Define macro.
- (RELOC_PROCESSING): Define macro.
- Minor formatting adjustments.
-
-2003-08-23 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_add_object_symbols): Don't crash on NULL owner.
-
-2003-08-22 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (elfNN_ia64_create_dynamic_sections): Align the
- .got section at 8 bytes.
-
-2003-08-21 Nick Clifton <nickc@redhat.com>
-
- * cofflink.c: Update to ISO C90 and tidy up formatting.
-
-2003-08-21 Randolph Chung <tausq@debian.org>
-
- * elf32-hppa.c (elf32_hppa_object_p): For elf32-hppa-linux, objects
- can have OSABI=Linux or OSABI=SysV. Check for both.
- * elf64-hppa.c (elf64_hppa_object_p): Likewise.
-
-2003-08-21 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
-
-2003-08-20 Richard Sandiford <rsandifo@redhat.com>
-
- * elf64-mips.c (elf_backend_copy_indirect_symbol): Define.
-
-2003-08-20 Nick Clifton <nickc@redhat.com>
-
- * elf-bfd.h (RELOC_FOR_GLOBAL_SYMBOL): New macro used to
- replace some duplicated code in most elfxx-xxxx.c files. This
- version uses the new fields in bfd_link_info.
-
- * elf-m10300.c (mn10300_elf_relocate_section): Use new macro.
- * elf32-arm.h (elf32_arm_relocate_section): Likewise.
- * elf32-cris.c (cris_elf_relocate_section): Likewise.
- * elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
- * elf32-i386.c (elf_i386_relocate_section): Likewise.
- * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise.
- * elf32-iq2000.c (iq2000_elf_relocate_section): Likewise.
- * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
- * elf32-s390.c (elf_s390_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf32-vax.c (elf_vax_relocate_section): Likewise.
- * elf32-xtensa.c (elf_xtensa_relocate_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
- * elf64-s390.c (elf_s390_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
- * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
-
- * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols,
- elf_hppa_remark_useless_dynamic_symbols,
- elf_hppa_relocate_section): Use the new fields in
- bfd_link_info structure.
- * elf32-sh.c (sh_elf_relocate_section): Likewise.
- * elf64-alpha.c (elf64_alpha_check_relocs): Likewise.
- * elf64-hppa.c (elf64_hppa_check_relocs): Likewise.
- * elf64-sh64.c (sh_elf64_relocate_section): Likewise.
- * elfxx-ia64.c (elfNN_ia64_check_relocs): Likewise.
- * elfxx-mips.c (mips_elf_calculate_relocation): Likewise.
-
- * elflink.h (elf_link_output_extsym): Fix test for reporting
- undefined symbols in shared libraries. Remove redundant test
- of shlib_undefined when reporting references to forced local
- symbols.
-
-2003-08-18 Andreas Schwab <schwab@suse.de>
-
- * libpei.h (bfd_pe_executable_p): Also recognize efi-app
- executables.
-
-2003-08-17 Hans-Peter Nilsson <hp@bitrange.com>
-
- * simple.c (bfd_simple_get_relocated_section_contents): Move
- reloc_done hack to before first bfd_section_size call. Change all
- returns to use new wrapper macro RETURN, restoring sec->reloc_done.
-
-2003-08-16 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c: Don't include elf/ppc.h.
-
-2003-08-14 Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Fix PT_DYNAMIC
- code to work with 64-bit bfds.
-
-2003-08-14 Alan Modra <amodra@bigpond.net.au>
-
- * dep-in.sed: Remove libintl.h.
- * Makefile.am (SRC-POTFILES.in, BLD-POTFILES.in): Unset LC_COLLATE.
- (POTFILES.in): Remove target.
- * Makefile.in: Regenerate.
-
-2003-08-12 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_next_input_section): Update comment.
- (ppc64_elf_relocate_section): For zero sym R_PPC64_TOC relocs,
- use the function sym from the previous reloc.
-
-2003-08-11 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-i386.c (elf_i386_relocate_section): Make undefined symbols
- fatal if -pie.
- * elf32-s390.c (elf_s390_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
- * elf64-s390.c (elf_s390_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
- * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
- (ppc_elf_relocate_section) <case R_PPC_RELAX32>: Issue fatal error
- on undefined symbols if -pie.
- * elf32-sh.c (sh_elf_relocate_section): Likewise.
-
-2003-08-11 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_relocate_section): Add special case for crt1.o
- branch to __libc_start_main.
-
-2003-08-08 Dmitry Diky <diwil@mail.ru>
-
- * archures.c: Add xW42 and xE42 parts. Sort MPU list according to
- gcc order.
- * cpu-msp430.c: Likewise.
- * elf32-msp430.c: Likewise.
- * bfd-in2.h: Regenerate.
-
-2003-08-07 Alan Modra <amodra@bigpond.net.au>
-
- * elfxx-target.h: Remove PTR cast.
- * targets.c (bfd_target): Make backend_data const void *.
- * elf-bfd.h: Constify all occurrences of struct elf_backend_data.
- * elf-m10300.c: Likewise.
- * elf.c: Likewise.
- * elf32-hppa.c: Likewise.
- * elf32-i386.c: Likewise.
- * elf32-m68hc1x.c: Likewise.
- * elf32-ppc.c: Likewise.
- * elf32-s390.c: Likewise.
- * elf32-sh.c: Likewise.
- * elf32-sh64.c: Likewise.
- * elf32-sparc.c: Likewise.
- * elf32-xtensa.c: Likewise.
- * elf64-mips.c: Likewise.
- * elf64-ppc.c: Likewise.
- * elf64-s390.c: Likewise.
- * elf64-sh64.c: Likewise.
- * elf64-sparc.c: Likewise.
- * elf64-x86-64.c: Likewise.
- * elfcode.h: Likewise.
- * elfcore.h: Likewise.
- * elflink.c: Likewise.
- * elflink.h: Likewise.
- * elfxx-ia64.c: Likewise.
- * elfxx-mips.c: Likewise.
- * elfxx-mips.h: Likewise.
- * elf.c (prep_headers): Remove useless check for null backend_data.
- * bfd-in2.h: Regenerate.
-
- * elf-bfd.h: Remove PARAMS macro. Replace PTR with void *.
- (NAME): Use ## rather than CONCAT4 macro.
- * elfcode.h: Remove one remaining PARAMS macro.
- * elf-eh-frame.c: Convert to C90, remove unneeded casts and prototypes.
- * elf-strtab.c: Likewise.
- * elf-hppa.h: Likewise.
- * elf32-hppa.h: Likewise.
- * elf32-hppa.c: Likewise.
- (elf32_hppa_add_symbol_hook): Delete.
- (elf_backend_add_symbol_hook): Don't define.
- * libhppa.h: Convert to C90. Replace INLINE with inline.
-
-2003-08-06 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc_stub_name): Tweak names for better readability.
- (ppc64_elf_adjust_dynamic_symbol): Allow copy relocs against
- function descriptors, but warn.
- (ppc_build_one_stub): Remove a couple of vars. Move code creating
- stub syms so that we can avoid a stub sym if we already have a
- plt sym. Do not redefine an existing symbol.
- (ppc64_elf_build_stubs): When --emit-stub-syms, print a symbol for
- glink.
-
-2003-08-06 Nick Clifton <nickc@redhat.com>
-
- * po/fr.po: Updated French translation.
-
-2003-08-06 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.c (_bfd_elf_create_dynamic_sections): Mark .dynbss with
- SEC_LINKER_CREATED.
-
-2003-08-05 Daniel Jacobowitz <drow@mvista.com>
-
- * elf32-arm.h (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define.
- (elf32_arm_final_link_relocate, elf32_arm_relocate_section): Use it.
-
-2003-08-03 Jeff Muizelaar <muizelaar@rogers.com>
-
- * coffcode.h (coff_slurp_line_table): Return with a warning
- message if the line number table could not be read.
-
-2003-08-04 Nick Clifton <nickc@redhat.com>
-
- * elflink.h (elf_link_add_object_symbols): Prepend "warning: "
- to messages produced for .gnu.warning.SYMBOL sections.
-
-2003-08-04 Alan Modra <amodra@bigpond.net.au>
-
- * elfcode.h: Convert to C90, remove unneeded casts and prototypes.
- * elfcore.h: Likewise.
- * elflink.c: Likewise.
- * elflink.h: Likewise.
- * elf.c (sym_is_global): Remove INLINE.
- (align_file_position): Replace INLINE with inline.
- * elfcode.h (elf_swap_dyn_in, elf_swap_dyn_out): Remove INLINE.
- (elf_file_p): Replace INLINE with inline.
-
-2003-08-02 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_check_relocs): Don't set DF_TEXTREL here.
-
-2003-08-01 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (get_got): Align the .got section at 8 bytes.
-
-2003-08-01 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (elfNN_ia64_finish_dynamic_symbol): Use
- ElfNN_External_Rela instead of Elf64_External_Rela.
-
-2003-08-01 Nick Clifton <nickc@redhat.com>
-
- * config.bfd: Add code to catch obsolete configurations and warn
- about them unless --enable-obsolete is used. Use this to mark
- vax-vms port as obsolete.
-
-2003-07-30 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_install_value): Tidy.
- (ppc_elf_relax_section): Remove dead code. Remove unnecessary casts.
- Formatting.
- * elfxx-target.h: Remove PARAMS macro. Formatting.
-
-2003-07-30 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (bfd_section_from_r_symndx): Test for SHN_UNDEF.
- * elf64-ppc.c (get_fdh): New function, split out from
- ppc64_elf_edit_opd.
- (ppc64_elf_check_relocs): Use get_fdh.
- (func_desc_adjust): Likewise. Tidy.
- (ppc64_elf_edit_opd): Tighten reloc checks. Free local_syms on error
- exit. Use get_fdh. Account for superfluous dynamic relocs.
- (ppc64_elf_relocate_section): Warning fix.
-
-2003-07-30 Jason Eckhardt <jle@rice.edu>
-
- * coff-i860.c: Convert to ISO C90. Remove superflous prototypes.
-
-2003-07-30 Jason Eckhardt <jle@rice.edu>
-
- * elf32-i860.c: Convert to ISO C90. Remove superflous prototypes.
-
-2003-07-30 Randolph Chung <tausq@debian.org>
-
- * elf-hppa.h (elf_hppa_relocate_section): Look up dyn_h for undefweak.
- * elf64-hppa.c (elf64_hppa_finalize_dlt): Check h->root.type.
-
-2003-07-30 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c: Convert to C90, remove unnecessary prototypes and casts.
- Replace PTR with void *. Formatting.
- (_bfd_elf_assign_file_position_for_section): Remove INLINE.
- (make_mapping): Likewise.
-
-2003-07-29 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (func_desc_adjust): Give linker created function
- descriptor symbols a size and type.
- (ppc64_elf_relocate_section): Correct lq insn test.
-
-2003-07-28 Eric Christopher <echristo@redhat.com>
-
- * elf32-ppc.c (R_PPC_RELAX32): New relocation.
- (ppc_elf_install_value): New function.
- (ppc_elf_sort_rela): Remove.
- (ppc_elf_relax_section): Rewrite. Remove old relaxation
- and replace with out of range branch stubs.
- (ppc_elf_relocate_section): Handle R_PPC_RELAX32.
-
-2003-07-29 Alexandre Oliva <aoliva@redhat.com>
-
- * elf-m10300.c (mn10300_elf_relax_section): Take symbol hash table
- from input_bfd.
-
-2003-07-28 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (special_sections): Set attributes for .got and .plt.
-
-2003-07-27 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Ensure no copy relocs
- on function descriptors.
- (ELIMINATE_COPY_RELOCS): Expand comment.
- (ppc64_elf_special_sections): Move. Don't include non-ppc64 sections.
- Do include ".toc1".
-
-2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
-
- * elf.c (_bfd_elf_new_section_hook): Set the default section
- type to SHT_NULL.
- (elf_fake_sections): Set the section type based on asect->flags
- if it is SHT_NULL. Don't abort on processor specific section
- types.
-
-2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
-
- * bfd-in2.h: Regenerated.
-
-2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
-
- * elf-bfd.h (bfd_elf_special_section): New.
- (elf_backend_data): Add special_sections, a pointer to
- bfd_elf_special_section.
- (elf_section_type). New.
- (elf_section_flags): New.
- (_bfd_elf_get_sec_type_attr): New.
-
- * elf.c (_bfd_elf_make_section_from_shdr): Always use the
- real section type/flags.
- (special_sections): New.
- (get_special_section): New.
- (_bfd_elf_get_sec_type_attr): New.
- (_bfd_elf_new_section_hook): Check special_section to set
- elf_section_type and elf_section_flags.
- (elf_fake_sections): Don't use section name to set ELF section
- data.
-
- * elf32-m32r.c (m32r_elf_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf32-m68hc11.c (elf32_m68hc11_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf32-mcore.c (mcore_elf_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf32-ppc.c (ppc_elf_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf32-sh64.c (sh64_elf_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf32-v850.c (v850_elf_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf32-xtensa.c (elf_xtensa_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf64-alpha.c (elf64_alpha_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf64-hppa.c (elf64_hppa_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf64-ppc.c (ppc64_elf_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elf64-sh64.c (sh64_elf64_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elfxx-ia64.c (elfNN_ia64_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elfxx-mips.c (_bfd_mips_elf_special_sections): New.
-
- * elfxx-mips.h (_bfd_mips_elf_special_sections): New.
- (elf_backend_special_sections): Defined.
-
- * elfxx-target.h (elf_backend_special_sections): New. Default
- to NULL.
- (elfNN_bed): Initialize special_sections.
-
- * section.c (bfd_abs_section): Remove const.
- (bfd_und_section): Likewise.
- (bfd_com_section): Likewise.
- (bfd_ind_section): Likewise.
-
-2003-07-24 Nick Clifton <nickc@redhat.com>
-
- * coff-arm.c (EXTRA_S_FLAGS): Include SEC_CODE so that code
- sections are assigned the LOAD attribute.
-
-2003-07-25 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c: Convert to C90. Replace PTR with void *.
- * elf32-sh64-com.c: Likewise.
- * elf32-sh64.c: Likewise.
- * elf32-sh64.h: Likewise.
- * elf64-sh64.c: Likewise.
-
-2003-07-24 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL.
- (allocate_dynrelocs): Likewise.
- (sh_elf_relocate_section): Likewise. Use SYMBOL_REFERENCES_LOCAL.
- (sh_elf_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL.
-
-2003-07-24 Nick Clifton <nickc@redhat.com>
-
- * po/fr.po: Updated French translation.
-
-2003-07-23 Bob Wilson <bob.wilson@acm.org>
-
- * elf32-xtensa.c (xtensa_elf_dynamic_symbol_p): Make inline and move
- near the beginning of the file. Swap order of arguments. Call
- _bfd_elf_dynamic_symbol_p with "ignore_protected" set to 0.
- (elf_xtensa_fix_refcounts): Adjust xtensa_elf_dynamic_symbol_p call.
- (elf_xtensa_relocate_section): Likewise.
- (shrink_dynamic_reloc_sections): Likewise.
-
-2003-07-23 Bob Wilson <bob.wilson@acm.org>
-
- * elf32-xtensa.c (plt_reloc_count): Fix typo in comment.
- (elf_xtensa_size_dynamic_sections): Use elf_discarded_section.
- (elf_xtensa_combine_prop_entries): Avoid returning non-zero without
- first printing an error message.
- (elf_xtensa_finish_dynamic_sections): Likewise.
- (elf_xtensa_discard_info_for_section): Adjust size of .got.loc when
- discarding literal table entries.
- (elf_xtensa_merge_private_bfd_data): Remove newline from error message.
- (elf_xtensa_do_asm_simplify): Likewise.
-
-2003-07-23 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc1x.c (elf32_m68hc11_size_stubs): Avoid crash when
- we have a local symbol in common section.
-
-2003-07-22 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.c (_bfd_elf_dynamic_symbol_p): Don't return TRUE for
- weak symbols.
-
-2003-07-22 Nick Clifton <nickc@redhat.com>
-
- * coffcode.h (coff_slurp_symbol_table): Add C_TCSYM and C_ECOML to
- expected RS6000 storage classes.
-
-2003-07-21 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections): Mark
- output_bfd unused to silence gcc.
-
-2003-07-21 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
-
-2003-07-21 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Use..
- (_bfd_elf_symbol_refs_local_p): ..this. Declare.
- * elflink.c (_bfd_elf_symbol_refs_local_p): New function.
- * elf32-i386.c (elf_i386_relocate_section): Remove h NULL test
- now done in _bfd_elf_symbol_refs_local_p.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
-
-2003-07-18 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.c (_bfd_elf_dynamic_symbol_p): Undo the last change.
-
-2003-07-18 H.J. Lu <hongjiu.lu@intel.com>
-
- * elf-bfd.h (SYMBOL_REFERENCES_LOCAL): Fix a typo.
- (SYMBOL_CALLS_LOCAL): Likewise.
-
- * elflink.c (_bfd_elf_dynamic_symbol_p): Return TRUE
- immediately if symbol isn't defined locally.
-
-2003-07-18 Richard Henderson <rth@redhat.com>
-
- * elflink.c (_bfd_elf_dynamic_symbol_p): New.
- * elf-bfd.h (_bfd_elf_dynamic_symbol_p): Declare it.
- (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Use it.
- * elf32-xtensa.c (xtensa_elf_dynamic_symbol_p): Likewise.
- * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Likewise.
- * elf64-hppa.c (elf64_hppa_dynamic_symbol_p): Likewise.
- * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Likewise.
- Update all callers to provide the relocation being resolved.
-
-2003-07-17 Shaun Jackman <sjackman@pathwayconnect.com>
-
- * config.bfd (arm-wince-pe): Add -DARM_COFF_BUGFIX to
- targ_cflags.
-
-2003-07-17 Nick Clifton <nickc@redhat.com>
-
- * po/es.po: New Spanish translation.
- * po/sv.po: New Swedish translation.
- * po/opcodes.pot: Regenerate.
-
-2003-07-16 Richard Henderson <rth@redhat.com>
-
- * config.bfd, configure.host, configure.in: Remove ia64-aix support.
- * elfxx-ia64.c, targets.c: Likewise.
-
-2003-07-16 Richard Henderson <rth@redhat.com>
-
- * elfxx-ia64.c (elfNN_ia64_dynamic_symbol_p): Properly return false
- for symbols defined locally plus -Bsymbolic. Tidy logic.
-
-2003-07-15 Richard Sandiford <rsandifo@redhat.com>
-
- * archures.c (bfd_mach_mips7000): New.
- * bfd-in2.h: Regenerated.
- * cpu-mips.c (arch_info_struct): Add an entry for mips:7000.
- * elfxx-mips.c (mips_set_isa_flags): Handle bfd_mach_mips7000.
- (mips_mach_extensions): Add an entry for it.
-
-2003-07-14 Nick Clifton <nickc@redhat.com>
-
- * po/tr.po: Update with latest version.
- * po/SRC-POTFILES.in: Regenerate.
- * po/bfd.pot: Regenerate.
- * Makfile.in: Regenerate.
- * configure: Regenerate.
-
-2003-07-12 Jeff Baker <jbaker@qnx.com>
-
- * bfd/config.bfd (__QNXTARGET__): Define for Neutrino architectures.
- * bfd/elf32-arm.h (ELF_MAXPAGESIZE): Set to 4k for Neutrino.
- * bfd/elf32-sh.c (ELF_MAXPAGESIZE): Set to 4k for Neutrino.
- * bfd/elf32-ppc.c (ELF_MAXPAGESIZE): Set to 4k for Neutrino.
-
-2003-07-12 Jeff Muizelaar <muizelaar@rogers.com>
-
- * coffcode.h (coff_set_section_contents): Set the
- IMAGE_FILE_32BIT_MACHINE flag for PE targets.
-
-2003-07-11 Richard Sandiford <rsandifo@redhat.com>
-
- * bfd-in.h (bfd_h8300_pad_address): Declare.
- * bfd-in2.h: Regenerate.
- * cpu-h8300.c (bfd_h8300_pad_address): New function.
- * coff-h8300.c (h8300_reloc16_estimate): Use it to canonicalize
- addresses before checking whether they can be relaxed.
- (h8300_reloc16_extra_cases): Likewise for the R_MOVL2 sanity check.
- Don't complain about overflows in general 8-bit relocations.
- * elf32-h8300.c (elf32_h8_relax_section): Use bfd_h8300_pad_address.
- Fix handling of R_H8_DIR24A8.
-
-2003-07-11 Richard Sandiford <rsandifo@redhat.com>
-
- * elf32-h8300.c: Convert function prototypes and definitions
- to C90 syntax.
- * coff-h8300.c: Likewise.
- * cpu-h8300.c: Likewise.
-
-2003-07-11 Alan Modra <amodra@bigpond.net.au>
-
- * po/SRC-POTFILES.in: Regenerate.
- * po/bfd.pot: Likewise.
-
-2003-07-10 Bob Wilson <bob.wilson@acm.org>
-
- * elf32-xtensa.c (elf_xtensa_create_dynamic_sections): Create new
- .got.loc section. Do not set SEC_ALLOC or SEC_LOAD flags for the
- .xt.lit.plt section.
- (elf_xtensa_size_dynamic_sections): Set size of the .got.loc section
- and allocate memory for it.
- (elf_xtensa_combine_prop_entries): Copy contents of .xt.lit output
- section to the .got.loc section.
- (elf_xtensa_finish_dynamic_sections): Fix up call to
- elf_xtensa_combine_prop_entries and set DT_XTENSA_GOT_LOC_OFF to
- the address of .got.loc.
- (relax_property_section): Shrink .got.loc to match changes in any
- literal table section.
- (xtensa_is_property_section): Change to match
- xtensa_get_property_section_name.
- (xtensa_is_littable_section): New.
-
-2003-07-10 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (IA64_HOWTO): Set dst_mask to -1 instead of
- -1LL.
-
-2003-07-10 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (BFD32_BACKENDS): Add elf32-am33lin.lo.
- (BFD32_BACKENDS_CFILES): elf32-am33lin.c not elf32-am33lin.lo.
- Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2003-07-10 Alexandre Oliva <aoliva@redhat.com>
-
- 2001-09-12 Alexandre Oliva <aoliva@redhat.com>
- * elf32-am33lin.c (ELF_MACHINE_CODE): Redefine to EM_MN10300.
- (ELF_MACHINE_ALT1): Define to EM_CYGNUS_MN10300.
- 2001-06-02 Nick Clifton <nickc@cambridge.redhat.com>
- * elf32-am33lin.c: Rename global functions.
- 2001-05-09 Alexandre Oliva <aoliva@redhat.com>
- * config.bfd (am33_2.0, am33_2.0-*-linux*): Added.
- * configure.in (bfd_elf32_am33lin_vec): Added.
- * Makefile.am (BFD32_BACKENDS): Added elf32-am33lin.lo.
- (elf32-am33lin.lo): List dependencies.
- * aclocal.m4, configure, Makefile.in: Rebuilt.
- * elf-m10300.c (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME,
- ELF_ARCH, ELF_MACHINE_CODE, ELF_MAXPAGESIZE): Define only if
- ELF_ARCH was not defined before.
- (elf_symbol_leading_char): Define if not defined.
- * elf32-am33lin.c: Override the definitions above.
- * targets.c (bfd_elf32_am33lin_vec): New.
-
-2003-07-09 Alexandre Oliva <aoliva@redhat.com>
-
- 2002-12-12 Alexandre Oliva <aoliva@redhat.com>
- * elf-m10300.c (elf32_mn10300_link_hash_newfunc): Initialize
- pcrel_relocs_copied.
- 2001-12-13 Alexandre Oliva <aoliva@redhat.com>
- * elf-m10300.c (ELF_DYNAMIC_INTERPRETER): Renamed from
- ld-linux.so.2 to ld.so.1.
- 2001-10-10 Alexandre Oliva <aoliva@redhat.com>
- * elf-m10300.c (elf_mn10300_sizeof_plt0): New macro.
- (_bfd_mn10300_elf_adjust_dynamic_symbol): Use it.
- (_bfd_mn10300_elf_finish_dynamic_symbol): Likewise.
- * elf-m10300.c (_bfd_mn10300_elf_size_dynamic_sections): Allocate
- .rela.* section contents with bfd_zalloc.
- 2001-09-25 Alexandre Oliva <aoliva@redhat.com>
- * elf-m10300.c: Added declarations for functions missing them.
- Merge some shared-library changes from the i386 back-end. Use
- R_MN10300_RELATIVE instead of R_MN10300_PCREL32 and
- R_MN10300_GLOB_DAT instead of R_MN10300_32 where appropriate.
- (struct elf32_mn10300_link_hash_entry): Remove duplicates of
- members of elf_link_hash_entry. Adjusted references.
- (mn10300_elf_final_link_relocate): dynobj was already loaded
- into a local variable, use it.
- 2001-09-21 Nick Clifton <nickc@cambridge.redhat.com>
- * elf-m10300.c: Add missing function prototypes.
- 2001-08-24 Alexandre Oliva <aoliva@redhat.com>
- * elf-m10300.c (mn10300_elf_relocate_section): Don't compute
- relocation for dynamic relocations.
- 2001-05-16 Alexandre Oliva <aoliva@redhat.com>
- * reloc.c (BFD_RELOC_MN10300_GOTOFF24): New.
- * elf-m10300.c: Introduce GOTPC16, GOTOFF24, GOTOFF16 and
- PLT16, and rename GOTPC to GOTPC32 and GOTOFF to GOTOFF32.
- (_bfd_mn10300_elf_create_dynamic_sections): Move creation ot PLT...
- (_bfd_mn10300_elf_create_got_section): ... here, so that its
- adress is already known at the time we compute relaxations.
- (mn10300_elf_relax_section): Relax GOTPC32, GOTOFF32, GOT32
- and PLT32 to narrower relocations.
- * libbfd.h, bfd-in2.h: Rebuilt.
- 2001-04-12 Alexandre Oliva <aoliva@redhat.com>
- * reloc.c (BFD_RELOC_MN10300_GOT32, BFD_RELOC_MN10300_GOT24,
- BFD_RELOC_MN10300_GOT16, BFD_RELOC_MN10300_COPY,
- BFD_RELOC_MN10300_GLOB_DAT, BFD_RELOC_MN10300_JMP_SLOT,
- BFD_RELOC_MN10300_RELATIVE): New relocs.
- * libbfd.h, bfd-in2.h: Rebuilt.
- * elf-m10300.c (struct elf_mn10300_pcrel_relocs_copied): New.
- (struct elf32_mn10300_link_hash_entry): Added DSO-related
- fields.
- (elf_mn10300_howto): Defined new relocation types.
- (mn10300_reloc_map): Map them.
- (_bfd_mn10300_elf_create_got_section): New fn.
- (mn10300_elf_check_relocs): Handle PIC relocs.
- (mn10300_elf_final_link_relocate): Likewise.
- (mn10300_elf_relocate_section): Handle DSOs.
- (PLT0_ENTRY_SIZE, PLT_ENTRY_SIZE, PIC_PLT_ENTRY_SIZE): New macros.
- (elf_mn10300_plt0_entry, elf_mn10300_plt_entry,
- elf_mn10300_pic_plt_entry): New.
- (elf_mn10300_sizeof_plt, elf_mn10300_plt_plt0_offset,
- elf_mn10300_plt0_linker_offset, elf_mn10300_plt0_gotid_offset,
- elf_mn10300_plt_temp_offset, elf_mn10300_plt_symbol_offset,
- elf_mn10300_plt_reloc_offset: New macros.
- (ELF_DYNAMIC_INTERPRETER): Likewise.
- (_bfd_mn10300_elf_create_dynamic_sections): New function.
- (_bfd_mn10300_elf_adjust_dynamic_symbol): Likewise.
- (_bfd_mn10300_elf_discard_copies): Likewise.
- (_bfd_mn10300_elf_size_dynamic_sections): Likewise.
- (_bfd_mn10300_elf_finish_dynamic_symbol): Likewise.
- (_bfd_mn10300_elf_finish_dynamic_sections): Likewise.
- (elf_backend_can_gc_sections,
- elf_backend_create_dynamic_sections,
- elf_backend_adjust_dynamic_sections,
- elf_backend_size_dynamic_sections,
- elf_backend_finish_dynamic_symbol,
- elf_backend_finish_dynamic_sections, elf_backend_want_got_plt,
- elf_backend_plt_readonly, elf_backend_want_plt_sym,
- elf_backend_got_header_size, elf_backend_plt_header_size): New
- macros.
-
-2003-07-09 Alexandre Oliva <aoliva@redhat.com>
-
- 2001-05-06 Alexandre Oliva <aoliva@redhat.com>
- * elf-m10300.c (compute_function_info): Account for AM33
- registers in `movm' when computing stack space for `call' when
- linking for AM33/2.0 link.
- 2000-04-01 Alexandre Oliva <aoliva@cygnus.com>
- * archures.c (bfd_mach_am33_2): Renamed from bfd_mach_am332.
- * bfd-in2.h: Rebuilt.
- * cpu-m10300.c (bfd_am33_2_arch): Renamed from bfd_am332_arch.
- * elf-m10300.c: Updated.
- 2000-03-31 Alexandre Oliva <aoliva@cygnus.com>
- * archures.c (bfd_mach_am332): Defined.
- * bfd-in2.h: Rebuilt.
- * cpu-m10300.c (bfd_am332_arch): Defined.
- (bfd_am33_arch): Chained with am33-2.
- * elf-m10300.c (elf_mn10300_mach): Handle am332.
- (_bfd_mn10300_elf_final_write_processing): Likewise.
-
-2003-07-09 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (IA64_HOWTO): Set dst_mask to -1LL.
-
-2003-07-10 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (bfd_elf64_mkobject): Define.
- (struct ppc64_elf_obj_tdata): New.
- (ppc64_elf_tdata, ppc64_tlsld_got): Define.
- (ppc64_elf_mkobject): New function.
- (struct got_entry): Add "owner". Move "tls_type".
- (struct ppc_link_hash_table): Delete "relgot", "tlsld_got".
- (ppc64_elf_init_stub_bfd): New function.
- (create_got_section): Create header .got in dynobj. Create .got
- and .rela.got in each bfd. Stash pointers in ppc64_elf_obj_tdata.
- (ppc64_elf_create_dynamic_sections): Don't call create_got_section.
- Look for dynobj .got, and test it.
- (ppc64_elf_copy_indirect_symbol): Adjust for changed got.
- (update_local_sym_info): Likewise.
- (ppc64_elf_check_relocs): Likewise.
- (ppc64_elf_gc_sweep_hook): Likewise.
- (ppc64_elf_tls_optimize): Likewise.
- (allocate_dynrelocs): Likewise.
- (ppc64_elf_size_dynamic_sections): Likewise.
- (ppc64_elf_relocate_section): Likewise.
- (ppc64_elf_next_toc_section): Update comment.
- (toc_adjusting_stub_needed): Remove unneeded cast.
- (ppc64_elf_build_stubs): Check for stub sections in stub bfd by
- testing section flags.
- (ppc64_elf_build_stubs): Likewise.
- (ppc64_elf_size_stubs): Likewise. Remove stub_bfd param.
- (ppc64_elf_finish_dynamic_sections): Write out got sections.
- (func_desc_adjust): Copy over dynamic info for undef weaks.
- * elf64-ppc.h (ppc64_elf_init_stub_bfd): Declare.
- (ppc64_elf_size_stubs): Update prototype.
- * elflink.h (elf_link_sort_relocs): Use link_orders to find reldyn
- input sections rather than scanning dynobj.
-
-2003-07-09 Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.c (mips_elf_link_hash_entry): Remove min_dyn_reloc_index.
- (bfd_mips_elf_swap_msym_in, bfd_mips_elf_swap_msym_out): Delete.
- (mips_elf_create_msym_section): Delete.
- (mips_elf_create_dynamic_relocation): Don't set min_dyn_reloc_index.
- (_bfd_mips_elf_copy_indirect_symbol): Likewise.
- (_bfd_mips_elf_create_dynamic_sections): Don't create .msym.
- (_bfd_mips_elf_size_dynamic_sections): Don't calculate its size.
- (_bfd_mips_elf_size_dynamic_sections): Don't add DT_MIPS_MSYM.
- (_bfd_mips_elf_finish_dynamic_symbol): Don't add symbols to .msym.
- (_bfd_mips_elf_finish_dynamic_sections): Likewise.
-
-2003-07-09 Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.c (mips_elf_irix6_finish_dynamic_symbol): Make the
- symbols protected.
-
-2003-07-09 Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.c (mips_elf_create_dynamic_relocation): Fix handling
- of relocations whose offset is -2.
-
-2003-07-09 Richard Sandiford <rsandifo@redhat.com>
-
- * bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): Treat
- forced-local symbols like other locals. Don't create relocations
- against STN_UNDEF in irix objects.
-
-2003-07-09 Richard Sandiford <rsandifo@redhat.com>
-
- * bfd/elfxx-mips.c (mips_elf_create_dynamic_relocation): In SGI-
- compatible objects, add the values of defined external symbols
- to the addend.
-
-2003-07-09 Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Always
- initialize a GOT entry to the symbol's st_value.
-
-2003-07-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct elf_obj_tdata): Move linker_section_pointers..
- * elf32-ppc.c (struct ppc_elf_obj_tdata): ..to here. New.
- (ppc_elf_tdata): Define.
- (elf_local_ptr_offsets): Adjust.
- (ppc_elf_mkobject): New function.
- (bfd_elf32_mkobject): Define.
-
- * elfcode.h (elf_object_p): Allocate tdata via _bfd_set_format.
- * elfcore.h (elf_core_file_p): Likewise.
- * section.c (bfd_section_init): Remove prototype.
-
-2003-07-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct elf_link_hash_entry): Remove linker_section_pointer
- field.
- (enum elf_linker_section_enum): Delete.
- (struct elf_linker_section): Delete.
- (struct elf_linker_section_pointers): Delete.
- (struct elf_obj_tdata): Remove #if 0 chunk. Remove linker_section.
- Make linker_section_pointers a void**.
- (elf_local_ptr_offsets, elf_linker_section): Don't define.
- * elf32-ppc.c (enum elf_linker_section_enum): New, cut-down version
- of old item in elf-bfd.h.
- (struct elf_linker_section): Likewise.
- (struct elf_linker_section_pointers): Likewise.
- (elf_local_ptr_offsets): Define.
- (struct ppc_elf_link_hash_entry): Add linker_section_pointer.
- (ppc_elf_link_hash_newfunc): Init it.
- (struct ppc_elf_link_hash_table): Add sbss.
- (ppc_elf_link_hash_table_create): zmalloc rather than clearing
- individual fields.
- (elf_create_linker_section): Fold into..
- (ppc_elf_create_linker_section): ..here. Remove hole_size code.
- Make rela section here if shared.
- (elf_find_pointer_linker_section): Pass lsect rather than enum.
- (elf_create_pointer_linker_section): Adjust. zalloc rather than
- clearing in a loop.
- (elf_finish_pointer_linker_section): Adjust. Don't make rela
- section here.
- (ppc_elf_check_relocs): Adjust.
- (ppc_elf_add_symbol_hook): Tighten hash creator test. Remove code
- creating .sbss by hand.
- * elf.c (_bfd_elf_link_hash_newfunc): Adjust.
-
-2003-07-04 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-s390.c (elf_howto_table): Change R_390_GOT12 to
- complain_overflow_bitfield.
- * elf64-s390.c (elf_howto_table): Change R_390_GOT12 to
- complain_overflow_bitfield.
-
-2003-07-04 Jakub Jelinek <jakub@redhat.com>
-
- * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Return
- true even if -pie.
-
-2003-07-04 Jakub Jelinek <jakub@redhat.com>
-
- * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add rel_fptr_sec.
- (elfNN_ia64_dynamic_symbol_p): Change info->shared into
- !info->executable.
- (get_fptr): For -pie create .opd as writable section and create
- .rela.opd as well.
- (elfNN_ia64_check_relocs): Change info->shared into
- !info->executable.
- (allocate_fptr): Likewise.
- (allocate_dynrel_entries): Account for a relative reloc for -pie
- @fptr(). Don't account for a relative reloc if -pie want_ltoff_fptr
- for undefweak symbol. Account for an IPLT reloc in .rela.opd
- section if -pie.
- (set_got_entry): Don't create a relative reloc if -pie
- want_ltoff_fptr for undefweak symbol.
- (set_fptr_entry): Emit an IPLT reloc in .rela.opd for -pie.
- (elfNN_ia64_relocate_section): Emit a relative reloc for -pie
- @fptr().
-
- * elfxx-ia64.c (elfNN_ia64_relocate_section): Issue undefined_symbol
- even if -pie.
- * elf32-i386.c (elf_i386_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elf64-s390.c (elf_s390_relocate_section): Likewise.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf32-s390.c (elf_s390_relocate_section): Likewise.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
-
-2003-07-04 Paul Clarke <paulc@senet.com.au>
-
- * elf32-h8300.c (R_H8_DIR32A16): Fix name field.
- (elf32_h8_relax_section) <R_H8_DIR16A8>: Adjust position of relocation.
- <R_H8_DIR32A16>: Fix type of relocation.
-
-2003-07-04 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_create_dynamic_sections): Return if dynamic
- sections were created already. Remove unnecessary tests of
- the previous change.
-
-2003-07-04 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_create_dynamic_sections): Don't call
- bfd_make_section for existing sections.
-
-2003-07-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-sparc.c (elf32_sparc_check_relocs): Don't call
- create_got_section if we already have done so.
- * elf32-sh.c (sh_elf_create_dynamic_sections): Likewise.
- (sh_elf_check_relocs): Likewise.
- (sh_elf_adjust_dynamic_symbol): Delete "dynobj" var. Use
- htab->root.dynobj instead.
- (sh_elf_check_relocs): Likewise.
- (sh_elf_finish_dynamic_sections): Likewise.
-
- * section.c (bfd_make_section): Return NULL for existing section.
-
-2003-07-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_create_dynamic_sections): Don't call
- ppc_elf_create_got if we've already done so.
-
- * elf-bfd.h (_bfd_elf_create_linker_section) Don't declare.
- (_bfd_elf_find_pointer_linker_section): Likewise.
- (bfd_elf32_create_pointer_linker_section): Likewise.
- (bfd_elf32_finish_pointer_linker_section): Likewise.
- (bfd_elf64_create_pointer_linker_section): Likewise.
- (bfd_elf64_finish_pointer_linker_section): Likewise.
- (_bfd_elf_make_linker_section_rela): Likewise.
- * elfcode.h (elf_create_pointer_linker_section): Don't define.
- (elf_finish_pointer_linker_section): Likewise.
- * elflink.c (_bfd_elf_make_linker_section_rela): Delete.
- (_bfd_elf_create_linker_section): Move this function..
- (_bfd_elf_find_pointer_linker_section): ..and this..
- * elflink.h (elf_create_pointer_linker_section): ..and this..
- (elf_finish_pointer_linker_section): ..and this..
- * elf32-ppc.c: ..to here, renaming to the following, and adjusting
- calls.
- (elf_create_linker_section): Convert to C90, tidy.
- (elf_find_pointer_linker_section): Likewise.
- (elf_create_pointer_linker_section): Likewise.
- (elf_finish_pointer_linker_section): Likewise.
- * elf32-i370.c: Delete #if 0 code.
-
-2003-07-02 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_func_desc_adjust): Don't allow _savef* and
- _restf* to be satisfied by shared libs, and always force them local.
- (toc_adjusting_stub_needed): Avoid scanning linker created sections.
- Correct test for "bl".
- (ppc64_elf_relocate_section <R_PPC64_TLS>): Correct test for
- primary opcode 31.
-
-2003-07-01 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-s390.c (s390_elf_ldisp_reloc): New prototype.
- (s390_tls_reloc): New function.
- (elf_howto_table): Add long displacement relocations R_390_20,
- R_390_GOT20, R_390_GOTPLT20 and R_390_TLS_GOTIE20.
- (elf_s390_reloc_type_lookup): Likewise.
- (elf_s390_check_relocs): Likewise.
- (elf_s390_gc_sweep_hook): Likewise.
- (elf_s390_relocate_section): Likewise.
- * elf64-s390.c: Same changes as for elf32-s390.c.
- * reloc.c: Add long displacement relocations BFD_RELOC_390_20,
- BFD_RELOC_390_GOT20, BFD_RELOC_390_GOTPLT20 and
- BFD_RELOC_390_TLS_GOTIE20.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Likewise.
-
-2003-06-30 Alan Modra <amodra@bigpond.net.au>
-
- * cpu-ia64-opc.c (ext_imms_scaled): Don't sign extend using shifts.
- (ins_imms, ins_immsm1u4): Likewise. Warning fix.
-
-2003-06-29 Alan Modra <amodra@bigpond.net.au>
-
- * archive.c: Convert to C90, remove unnecessary prototypes and casts.
- Replace PTR with void *. Formatting.
- * archive64.c: Likewise.
- * archures.c: Likewise.
- * bfd-in.h: Likewise.
- * bfd.c: Likewise.
- * bfdio.c: Likewise.
- * bfdwin.c: Likewise.
- * cache.c: Likewise.
- * corefile.c: Likewise.
- * format.c: Likewise.
- * init.c: Likewise.
- * libbfd-in.h: Likewise.
- * libbfd.c: Likewise.
- * linker.c: Likewise.
- * opncls.c: Likewise.
- * reloc.c: Likewise.
- * section.c: Likewise.
- * simple.c: Likewise.
- * syms.c: Likewise.
- * targets.c: Likewise.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
-
- * ecoff.c (bfd_debug_section): Add missing kept_section initialization.
- * libbfd-in.h (_bfd_sh_align_load_span): Don't declare if defined.
- * libbfd.c (COERCE32, EIGHT_GAZILLION): Simplify.
- (bfd_getb64): Rewrite without parens.
- (bfd_getl64, bfd_getb_signed_64, bfd_getl_signed_64): Likewise.
- * cache.c (insert, snip): Remove INLINE.
- * linker.c (bfd_link_add_undef): Likewise.
-
-2003-06-29 Andreas Jaeger <aj@suse.de>
-
- * elf64-x86-64.c: Convert to ISO C90 prototypes, remove
- unnecessary prototypes. Replace PTR with void *.
- (elf64_x86_64_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL to
- trim plt entries. Move undefweak non-default visibility test ...
- (allocate_dynrelocs): ... from here.
- (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO.
- Change all callers.
- (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL. Use
- SYMBOL_REFERENCES_LOCAL for dynreloc check.
- (elf64_x86_64_relocate_section): Use SYMBOL_CALLS_LOCAL for
- dynreloc and .got relocs.
- (elf64_x86_64_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL
- for .got relocs.
-
-2003-06-29 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c: Allow lazy binding for R_MIPS_JALR.
-
-2003-06-27 Nick Clifton <nickc@redhat.com>
-
- * opncls.c (bfd_add_gnu_debuglink_section): Rename to
- bfd_add_gnu_debuglink_section and only create the section, do not
- fill in its contents.
- (bfd_fill_in_gnu_debuglink_section): New function. Fill in the
- contents of a .gnu-debuglink section.
- * bfd-in2.h: Regenerate.
-
-2003-06-27 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c: Revert .got alignment to 2**4.
-
-2003-06-27 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elf32-mips.c: Fix addend for _gp_disp special symbol.
-
-2003-06-27 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (_bfd_mips_elf_fake_sections): Remove non-default
- relocation header setup.
+ * reloc.c: New 5 bit reloc, BFD_RELOC_M68HC12_5B, for m68hc12 movb/movw.
+ * bfd-in2.h, libbfd.h: Rebuilt.
-2003-06-25 Alan Modra <amodra@bigpond.net.au>
+2004-01-20 Danny Smith <dannysmith@users.sourceforge.net>
- * elf32-ppc.c (ppc_elf_howto_table): Remove unnecessary cast.
- (ppc_elf_reloc_type_lookup): Modify comment.
- (ppc_elf_info_to_howto): Ditto.
- (ppc_elf_relocate_section): Ditto.
- (ppc_elf_check_relocs): Call ppc_elf_howto_init.
+ * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Don't remove
+ IMAGE_SCN_MEM_WRITE flag from .text section if WP_TEXT
+ flag has been cleared.
-2003-06-25 Alan Modra <amodra@bigpond.net.au>
+2004-01-19 Kazu Hirata <kazu@cs.umass.edu>
- * aout-ns32k.c: Correct spelling of "relocatable".
- * aoutx.h: Likewise.
- * bfd-in.h: Likewise.
- * bfd.c: Likewise.
- * bout.c: Likewise.
- * coff-a29k.c: Likewise.
- * coff-alpha.c: Likewise.
- * coff-arm.c: Likewise.
- * coff-i386.c: Likewise.
- * coff-i860.c: Likewise.
- * coff-i960.c: Likewise.
- * coff-m68k.c: Likewise.
- * coff-m88k.c: Likewise.
- * coff-mcore.c: Likewise.
- * coff-mips.c: Likewise.
- * coff-or32.c: Likewise.
- * coff-ppc.c: Likewise.
- * coff-rs6000.c: Likewise.
- * coff-sh.c: Likewise.
- * coff-tic80.c: Likewise.
- * coff64-rs6000.c: Likewise.
- * cofflink.c: Likewise.
- * cpu-ns32k.c: Likewise.
- * ecoff.c: Likewise.
- * ecofflink.c: Likewise.
- * elf-bfd.h: Likewise.
- * elf-eh-frame.c: Likewise.
- * elf-hppa.h: Likewise.
- * elf-m10200.c: Likewise.
- * elf-m10300.c: Likewise.
- * elf.c: Likewise.
- * elf32-arm.h: Likewise.
- * elf32-avr.c: Likewise.
- * elf32-cris.c: Likewise.
- * elf32-d10v.c: Likewise.
- * elf32-dlx.c: Likewise.
- * elf32-fr30.c: Likewise.
- * elf32-frv.c: Likewise.
+ * coff-h8300.c: Add and adjust comments about relaxation.
* elf32-h8300.c: Likewise.
- * elf32-hppa.c: Likewise.
- * elf32-i370.c: Likewise.
- * elf32-i386.c: Likewise.
- * elf32-i860.c: Likewise.
- * elf32-i960.c: Likewise.
- * elf32-ip2k.c: Likewise.
- * elf32-iq2000.c: Likewise.
- * elf32-m32r.c: Likewise.
- * elf32-m68hc11.c: Likewise.
- * elf32-m68hc1x.c: Likewise.
- * elf32-m68k.c: Likewise.
- * elf32-mcore.c: Likewise.
- * elf32-mips.c: Likewise.
- * elf32-msp430.c: Likewise.
- * elf32-openrisc.c: Likewise.
- * elf32-ppc.c: Likewise.
- * elf32-s390.c: Likewise.
- * elf32-sh.c: Likewise.
- * elf32-sh64.c: Likewise.
- * elf32-sparc.c: Likewise.
- * elf32-v850.c: Likewise.
- * elf32-vax.c: Likewise.
- * elf32-xstormy16.c: Likewise.
- * elf32-xtensa.c: Likewise.
- * elf64-alpha.c: Likewise.
- * elf64-hppa.c: Likewise.
- * elf64-mips.c: Likewise.
- * elf64-mmix.c: Likewise.
- * elf64-ppc.c: Likewise.
- * elf64-s390.c: Likewise.
- * elf64-sh64.c: Likewise.
- * elf64-sparc.c: Likewise.
- * elf64-x86-64.c: Likewise.
- * elfcode.h: Likewise.
- * elflink.h: Likewise.
- * elfn32-mips.c: Likewise.
- * elfxx-ia64.c: Likewise.
- * elfxx-mips.c: Likewise.
- * i386linux.c: Likewise.
- * ieee.c: Likewise.
- * libcoff-in.h: Likewise.
- * linker.c: Likewise.
- * m68klinux.c: Likewise.
- * pdp11.c: Likewise.
- * pe-mips.c: Likewise.
- * peXXigen.c: Likewise.
- * reloc.c: Likewise.
- * reloc16.c: Likewise.
- * sparclinux.c: Likewise.
- * sunos.c: Likewise.
- * syms.c: Likewise.
- * versados.c: Likewise.
- * vms.c: Likewise.
- * xcofflink.c: Likewise.
- * bfd-in2.h: Regenerate.
- * libcoff.h: Regenerate.
- * libbfd.h: Regenerate.
-
-2003-06-24 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_check_relocs): Report plt reloc against
- local sym errors.
-
- * elf32-i386.c: Convert to C90 function definitions, remove unnecessary
- prototypes and casts. Replace PTR with void *. Formatting.
- * elf32-ppc.c: Likewise. Break long strings too.
- (ppc_elf_relax_section): Use enum elf_ppc_reloc_type for r_type.
- (ppc_elf_unhandled_reloc): Internationalize error message.
- * elf32-ppc.h: Remove PARAMS.
-
-2003-06-23 Mark Mitchell <mark@codesourcery.com>
-
- * elf32-ppc.c (ppc_elf_begin_write_processing): Use bytes to count
- APUinfo slots.
- (ppc_elf_final_write_processing): Likewise.
-
-2003-06-23 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.h (elf_link_input_bfd): Check raw size when using
- kept_section to preserve debug information discarded by
- linkonce.
-
-2003-06-20 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (struct ppc_link_hash_table): Add top_id.
- (ppc64_elf_setup_section_lists): Set it.
- (ppc64_elf_relocate_section): Check sym section id against top_id.
- (ppc_build_one_stub): Comment on top_id.
-
-2003-06-20 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
-
- * config.bfd: Add tic4x-*-rtems*.
-
-2003-06-20 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c: Convert to C90 function definitions, remove unnecessary
- prototypes and casts. Replace PTR with void *. Format copyright.
- Mention ABI links.
- (struct ppc_link_hash_table): Rename sgot, srelgot, splt, srelplt,
- sdynbss, srelbss, sglink, sbrlt and srelbrlt to got, relgot .. relbrlt.
- (ppc_type_of_stub): Make r_type an enum.
- (ppc64_elf_size_stubs): Likewise.
- * elf64-ppc.h: Remove PARAMS macro.
-
-2003-06-19 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_link_hash_table_create): Reinstate init of
- elf hash tab fields.
-
- * elf64-ppc.c (ppc64_elf_reloc_type_lookup): Tidy prototype.
- (ppc64_elf_info_to_howto): Likewise.
- (ppc64_elf_build_stubs): Add "stats" param, and print statistics.
- * elf64-ppc.h (ppc64_elf_build_stubs): Adjust prototype.
-
-2003-06-19 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-sparc.c (sparc64_elf_relocate_section): Ignore R_SPARC_DISP32
- reloc overflow on discarded eh_frame entries.
-
-2003-06-19 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (toc_adjusting_stub_needed): New function.
- (ppc64_elf_next_input_section): Use it here to set has_gp_reloc.
- Return error condition.
- (ppc64_elf_size_stubs): Restrict toc adjusting stubs to sections
- that have has_gp_reloc set.
- (struct ppc_link_hash_table): Add stub_count.
- (ppc_build_one_stub): Increment it.
- (ppc64_elf_link_hash_table_create): zmalloc rather than clearing
- individual fields.
- * elf64-ppc.h (ppc64_elf_next_input_section): Update prototype.
-
-2003-06-18 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_gc_record_vtentry): Revert last change. Correct
- size calculation from addend. Round size up.
-
-2003-06-18 Hans-Peter Nilsson <hp@axis.com>
-
- * elf32-cris.c (cris_elf_relocate_section) <case
- R_CRIS_32_GOTREL>: When linking a program, don't complain about a
- symbol from a normal object or an undefined weak symbol.
-
-2003-06-18 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_relocate_section): Accept a symbol on
- R_PPC64_TOC relocs.
-
-2003-06-17 H.J. Lu <hongjiu.lu@intel.com>
-
- * section.c (struct sec): Put back kept_section.
- (STD_SECTION): Put back kept_section initialization.
- * bfd-in2.h: Regenerate.
-
- * elflink.h (elf_link_input_bfd): Also check discarded linkonce
- sections for relocateable output. Use kept_section to preserve
- debug information discarded by linkonce.
-
-2003-06-17 Roland McGrath <roland@redhat.com>
-
- * elfxx-ia64.c (elfNN_ia64_relocate_section): Support
- segment-relative relocation between different segments.
-
-2003-06-17 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_relocate_section): Do unaligned reloc
- optimizations earlier.
-
- * elf64-ppc.c (struct ppc_link_hash_table): Reinstate top_index.
- Restore previous input_list type.
- (ppc64_elf_link_hash_table_create): Undo last change.
- (ppc64_elf_setup_section_lists): Reinstate code setting up input lists
- per output section, but don't bother with bfd_abs_section marker.
- (ppc64_elf_next_input_section): Adjust for multiple input section
- lists.
- (group_sections): Likewise.
-
-2003-06-17 Jakub Jelinek <jakub@redhat.com>
-
- * elf64-ppc.c (ppc64_elf_relocation_section): Ensure
- *r_offset == r_addend for RELATIVE relocs against .got.
-
-2003-06-17 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_relocate_section): Optimize unaligned relocs.
-
-2003-06-17 Nick Clifton <nickc@redhat.com>
-
- * elflink.h (elf_gc_record_vtentry): Allocate an extra element
- in the vtable_entries_used array to allow for the accessing
- the largest element.
-
-2003-06-17 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (struct ppc_link_hash_table): Remove top_index. Modify
- input_list.
- (ppc64_elf_link_hash_table_create): Init input_list here.
- (ppc64_elf_setup_section_lists): Remove code setting up input lists
- per output section. Set toc_off for abs and other standard sections.
- (ppc64_elf_reinit_toc): Don't set elf_gp on input bfds lacking a toc.
- (ppc64_elf_next_input_section): Adjust for single input section list.
- Don't set toc_curr from input bfds that haven't set elf_gp.
- (group_sections): Adjust for single input section list.
-
- * elf64-ppc.c (ppc64_elf_relocate_section): Correct pcrel section zero.
-
-2003-06-16 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_relocate_section): When optimizing toctprel
- tls, check that a TOC16_DS or TOC16_LO_DS reloc isn't pointing to a
- dtprel entry. Ensure TLS_LD DTPMOD reloc has a zero addend. Write
- got section for RELATIVE relocs. Fix wrong comment. Change condition
- under which dynamic relocs update the section contents.
-
-2003-06-13 Robert Millan <zeratul2@wanadoo.es>
-
- * config.bfd: Add i386-netbsd-gnu target.
-
-2003-06-12 Nick Clifton <nickc@redhat.com>
-
- * opncls.c (calc_crc32): Rename to
- bfd_calc_gnu_debuglink_crc32 and export.
- (GNU_DEBUGLINK): Define and use to replace occurrences of
- hard-coded ".gnu_debuglink" in the code.
- (get_debug_link_info): Prevent aborts by replacing call to
- xmalloc with a call to malloc.
- (find_separate_debug_file): Prevent aborts by replacing calls
- to xmalloc and xstrdup with calls to malloc and strdup.
- (bfd_add_gnu_debuglink): New function. Add a .gnu_debuglink
- section to a bfd.
- * bfd-in2.h: Regenerate.
-
-2003-06-12 Federico G. Schwindt <fgsch@lodoss.net>
-
- * config.bfd (i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3]):
- New target (was i[3-7]86-*-openbsd* before).
- (i[3-7]86-*-openbsd*): Change to use bfd_elf32_i386_vec.
- (vax-*-openbsd*): New target.
-
-2003-06-11 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (MIPS_ELF_OPTIONS_SECTION_NAME): Use .MIPS.options
- for n32, too.
- (MIPS_ELF_STUB_SECTION_NAME): Use .MIPS.stubs for n32, too.
- (mips_elf_rel_dyn_section): Use appropriate section alignment.
- (mips_elf_create_got_section): Likewise.
- (_bfd_mips_elf_create_dynamic_sections): Likewise.
-
-2003-06-11 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
- * elf32-mips.c (mips_elf_generic_reloc): New Function.
- (elf_mips_howto_table_rel): Use it.
- (gprel32_with_gp): Move prototype.
- (mips_elf_hi16_reloc): Check for ! BSF_LOCAL instead of zero addend.
- Use mips_elf_generic_reloc.
- (mips_elf_got16_reloc): Check for ! BSF_LOCAL instead of zero addend.
- Code cleanup.
- (_bfd_mips_elf32_gprel16_reloc): Check for ! BSF_LOCAL instead of
- zero addend.
- (mips_elf_gprel32_reloc): Likewise. Use the same GP assignment logic
- as in the other *_gprel*_reloc functions.
- (gprel32_with_gp): Handle partial_inplace properly.
- (mips32_64bit_reloc): Use mips_elf_generic_reloc.
- (mips16_gprel_reloc): Check for ! BSF_LOCAL instead of zero addend.
- Do addend handling directly instead of calling
- _bfd_mips_elf_gprel16_with_gp. Handle partial_inplace properly.
- * elf64-mips.c (mips_elf64_hi16_reloc): Check for ! BSF_LOCAL instead
- of zero addend. Handle partial_inplace properly.
- (mips_elf64_got16_reloc): Check for ! BSF_LOCAL instead of zero
- addend.
- (mips_elf64_gprel16_reloc): Likewise.
- (mips_elf64_literal_reloc): Likewise.
- (mips_elf64_gprel32_reloc): Likewise. Use the same GP assignment
- logic as in the other *_gprel*_reloc functions. Handle
- partial_inplace properly.
- (mips_elf64_shift6_reloc): Check for ! BSF_LOCAL instead of zero
- addend. Handle partial_inplace properly.
- (mips16_gprel_reloc): Likewise. Do addend handling directly instead
- of calling _bfd_mips_elf_gprel16_with_gp.
- * elfn32-mips.c (mips_elf_got16_reloc): Check for BSF_LOCAL.
- (mips_elf_gprel32_reloc): Check for ! BSF_LOCAL instead
- of zero addend.
- (mips_elf_shift6_reloc): Handle partial_inplace properly.
- (mips16_gprel_reloc): Likewise. Do addend handling directly instead
- of calling _bfd_mips_elf_gprel16_with_gp.
- * elfxx-mips.c (_bfd_mips_elf_gprel16_with_gp): Handle
- partial_inplace properly. Fix wrong addend handling. Fix overflow
- check.
- (_bfd_mips_elf_sign_extend): Renamed from mips_elf_sign_extend and
- exported.
- (mips_elf_calculate_relocation): Use _bfd_mips_elf_sign_extend.
- (_bfd_mips_elf_relocate_section): Likewise.
- (mips_elf_create_dynamic_relocation): Update sec_info_type access.
- * elfxx-mips.h (_bfd_mips_relax_section): Fix prototype declaration.
- (_bfd_mips_elf_sign_extend): New prototype.
+2004-01-16 Kazu Hirata <kazu@cs.umass.edu>
-2003-06-11 Federico G. Schwindt <fgsch@lodoss.net>
-
- * config.bfd (sparc-*-openbsd[0-2].* | sparc-*-openbsd3.[0-1]):
- New target (was sparc-*-openbsd* before).
- (sparc-*-openbsd*): Change to use bfd_elf32_sparc_vec.
-
- * configure.in (vax-*-openbsd*): Set COREFILE to netbsd-core.lo.
- * configure: Regenerate.
-
-2003-06-11 H.J. Lu <hongjiu.lu@intel.com>
-
- * po/Make-in (DESTDIR): New.
- (install-data-yes): Support $(DESTDIR).
- (uninstall): Likewise.
-
-2003-06-11 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (config.status): Depend on version.h.
- Run "make dep-am".
- * Makefile.in: Regenerate.
- * po/SRC-POTFILES.in: Regenerate.
-
-2003-06-10 Alan Modra <amodra@bigpond.net.au>
- Gary Hade <garyhade@us.ibm.com>
-
- * elf64-ppc.c (ppc64_elf_relocate_section <*_DS>): Special case lq.
-
-2003-06-10 Richard Sandiford <rsandifo@redhat.com>
-
- * archures.c (bfd_mach_h8300sxn): New architecture.
- * bfd-in2.h: Regenerate.
- * cpu-h8300.c (h8300_scan): Check for 'sxn'.
- (h8300sxn_info_struct): New.
- (h8300sx_info_struct): Link to it.
- * elf32-h8300.c (elf32_h8_mach): Add h8300sxn case.
- (elf32_h8_final_write_processing): Likewise.
-
-2003-06-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c: Move TARGET_LITTLE_SYM and other macros used by
- elfxx-target.h so that we can use elf_backend_got_header_size.
- (ELF_MACHINE_ALT1, ELF_MACHINE_ALT2): Delete.
- (GLINK_CALL_STUB_SIZE): Modify. Define new glink call stub and
- associated macros.
- (ppc64_elf_howto_raw <GOT_TPREL16_DS, GOT_TPREL16_LO_DS>): Correct
- dst_mask.
- (enum ppc_stub_type): Add ppc_stub_long_branch_r2off and
- ppc_stub_plt_branch_r2off.
- (struct ppc_stub_hash_entry): Reorganize.
- (struct ppc_link_hash_table): Add no_multi_toc, multi_toc_needed,
- toc_curr, toc_off and emit_stub_syms.
- (ppc64_elf_link_hash_table_create): Init them.
- (ppc_stub_name): Correct string size.
- (ppc64_elf_check_relocs): Set has_gp_reloc on GOT and TOC relocs.
- (ppc64_elf_size_dynamic_sections): Set no_multi_toc if GOT entries
- used.
- (ppc_type_of_stub): Tweak root.type test.
- (build_plt_stub): Remove glink code. Adjust for insn macro changes.
- (ppc_size_one_stub): Handle ppc_stub_long_branch_r2off and
- ppc_stub_plt_branch_r2off.
- (ppc_build_one_stub): Likewise. Fix var shadowing. Correct addis,addi
- range test. Use toc_off to calculte r2 values. Handle emit_stub_syms.
- (ppc64_elf_setup_section_lists): Remove htab creator flavour test.
- Initialize elf_gp and toc_curr.
- (ppc64_elf_next_toc_section, ppc64_elf_reinit_toc): New functions.
- (ppc64_elf_next_input_section): Set toc_off.
- (group_sections): Ensure groups have the same TOC.
- (ppc64_elf_size_stubs): Check whether we need a TOC adjusting stub.
- (ppc64_elf_build_stubs): Add emit_stub_syms param, and stash in htab.
- Build new glink stub.
- (ppc64_elf_relocate_section): Handle multiple TOCs. Fix comments.
- (ppc64_elf_finish_dynamic_sections): Adjust DT_PPC64_GLINK.
- * elf64-ppc.h (ppc64_elf_build_stubs): Update prototype.
- (ppc64_elf_next_toc_section, ppc64_elf_reinit_toc): Declare.
- * section.c (struct sec): Rename flag12 to has_gp_reloc.
- (STD_SECTION): Update.
- * ecoff.c (bfd_debug_section): Update comment.
- * bfd-in2.h: Regenerate.
-
-2003-06-05 Daniel Jacobowitz <drow@mvista.com>
-
- * elfcode.h (elf_slurp_reloc_table_from_section): Don't dereference
- NULL function pointers.
-
-2003-06-05 Daniel Jacobowitz <drow@mvista.com>
-
- * simple.c (bfd_simple_get_relocated_section_contents): Call
- _bfd_generic_link_add_symbols instead of bfd_link_add_symbols.
-
-2003-06-04 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * coff-tic54x.c: Removed the ticoff0_bad_format_hook() and
- ticoff1_bad_format_hook() functions. Removed the coff0 and coff1
- swaptables.
- * coff-tic4x.c: Ditto
- * coffcode.h: Added extra arguments to CREATE_BIG_COFF_TARGET_VEC
- and CREATE_LITTLE_COFF_TARGET_VEC. Created the macro
- CREATE_BIGHDR_COFF_TARGET_VEC. Created the ticoff0_bad_format_hook(),
- ticoff1_bad_format_hook() functions. Created the coff0 and coff1
- swap tables.
- * coff-tic4x.c: Adopted new CREATE_xxx_COFF_TARGET_VEC macros.
- * coff-a29k.c: Append COFF_SWAP_TABLE argument
- * coff-apollo.c: Ditto
- * coff-arm.c: Ditto
- * coff-h8300.c: Ditto
- * coff-h8500.c: Ditto
- * coff-i960.c: Ditto
- * coff-m68k.c: Ditto
- * coff-m88k.c: Ditto
- * coff-mcore.c: Ditto
- * coff-sh.c: Ditto
- * coff-sparc.c: Ditto
- * coff-tic80.c: Ditto
- * coff-we32k.c: Ditto
- * coff-z8k.c: Ditto
- * coff-w65.c: Ditto
-
-2003-06-04 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * coff-tic4x.c (ticoff0_swap_table, ticoff1_swap_table): Fixed
- initialization bug
-
-2003-06-03 Jakub Jelinek <jakub@redhat.com>
-
- * elf.c (_bfd_elf_print_private_bfd_data): Handle PT_GNU_STACK.
- (bfd_section_from_phdr): Likewise.
- (map_sections_to_segments): Create PT_GNU_STACK segment header.
- (get_program_header_size): Count with PT_GNU_STACK.
- * elf-bfd.h (struct elf_obj_tdata): Add stack_flags.
- * elflink.h (bfd_elfNN_size_dynamic_sections): Set stack_flags.
-
-2003-06-03 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.h (elf_link_input_bfd): Call linker error_handler
- for discarded definitions.
-
-2003-06-03 Elias Athanasopoulos <elathan@phys.uoa.gr>
-
- * syms.c (decode_section_type): Return 'n' if section flags are
- SEC_HAS_CONTENTS && SEC_READONLY.
-
-2003-06-03 Nick Clifton <nickc@redhat.com>
-
- * elf32-v850.c (v850_elf_howto_t): Rename R_V850_32to
- R_V850_ABS32. Add entry for R_V850_REL32.
- (v850_elf_reloc_map): Likewise.
- (v850_elf_check_relocs): Likewise.
- (v850_elf_perform_relocation): Likewise.
- (v850_elf_final_link_relocate): Likewise. Include computation
- to make R_V850_REl32 pc-relative.
-
-2003-06-03 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_size_dynamic_sections): Create .interp section
- and DT_DEBUG dynamic tag even for position independent executables.
- * elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewize.
-
-2003-06-02 Daniel Jacobowitz <drow@mvista.com>
-
- * config.bfd: Move obsolete entries out of the range of the
- targmatch sed script.
-
-2003-06-02 Daniel Jacobowitz <drow@mvista.com>
-
- * config.bfd (mips*-dec-bsd*, mips*-*-pe*): Mark as obsolete.
-
-2003-05-31 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-ppc.c (allocate_dynrelocs): Use single slot for first 8192
- plt entries, not just 8191.
-
-2003-05-30 Daniel Jacobowitz <drow@mvista.com>
-
- * elfxx-mips.c (_bfd_mips_elf_discard_info): Correct loop index.
- Reported by Ken Faiczak <kfaiczak@SANDVINE.com>.
-
-2003-05-30 Ulrich Drepper <drepper@redhat.com>
- Jakub Jelinek <jakub@redhat.com>
-
- * elflink.h (elf_link_add_object_symbols): Use !info->executable
- instead of info->shared where appropriate.
- (bfd_elfNN_size_dynamic_sections, elf_link_output_extsym): Likewise.
- * elflink.c (_bfd_elf_create_got_section): Likewise.
- (_bfd_elf_link_create_dynamic_sections): Likewise.
- (_bfd_elf_link_assign_sym_version): Likewise.
- * elf32-i386.c (elf_i386_size_dynamic_sections): Create .interp section
- and DT_DEBUG dynamic tag even for position independent executables.
- * elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
- * elf32-s390.c (elf_s390_size_dynamic_sections: Likewise.
- * elf64-ppc.c (ppc64_elf_size_dynamic_sections: Likewise.
- * elf64-s390.c (elf_s390_size_dynamic_sections: Likewise.
- * elf64-x86-64.c (elf64_x86_64_size_dynamic_sections: Likewise.
- * elfxx-ia64.c (elfNN_ia64_size_dynamic_sections: Likewise.
- * elf32-sparc.c (elf32_sparc_size_dynamic_sections: Likewise.
- * elf64-alpha.c (elf64_alpha_size_dynamic_sections: Likewise.
- * elf64-sparc.c (sparc64_elf_size_dynamic_sections: Likewise.
-
-2003-05-30 Kris Warkentin <kewarken@qnx.com>
-
- * elf.c (elfcore_grok_nto_status): Only set lwpid for the active or
- signalled thread.
- (elfcore_grok_nto_gregs): Only make .reg section for the active thread.
-
-2003-05-29 Nick Clifton <nickc@redhat.com>
-
- * pef.c: Include "safe-ctype.h" instead of <ctype.h>.
- Tidy up formatting.
- * Makefile.am: Add dependency on safe-ctype.h.
- * Makefile.in: Regenerate.
-
-2003-05-29 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c: Don't force symbols local unconditionally.
-
-2003-05-28 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-hppa.c (elf32_hppa_relocate_section): Delete bogus
- undefined_symbol call.
-
-2003-05-27 Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.c (mips_elf_hash_sort_data): Fix formattting.
- (mips_elf_link_hash_table): Likewise.
-
-2003-05-22 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elf64-mips.c (elf_mips_gnu_rel16_s2): Add internally used
- R_MIPS_GNU_REL16_S2 support.
- (bfd_elf64_bfd_reloc_type_lookup): Use it.
- (mips_elf64_rtype_to_howto): Use it.
- * elfn32-mips.c (elf_mips_gnu_rel16_s2): Add internally used
- R_MIPS_GNU_REL16_S2 support.
- (bfd_elf32_bfd_reloc_type_lookup): Use it.
- (mips_elf_n32_rtype_to_howto): Use it.
-
-2003-05-21 Stuart F. Downing <sdowning@fame.com>
-
- * som.h: Define PA_2_0 before including a.out.h
-
-2003-05-07 Eric Christopher <echristo@redhat.com>
- Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Adjust
- pic tests, change to warning.
- (_bfd_mips_elf_final_link): Remove EF_MIPS_CPIC flag setting.
-
-2003-05-21 Marcus Comstedt <marcus@mc.pp.se>
-
- * config.bfd: Check for a target triplet of shl-...-netbsdelf as
- well as shle-...-netbsdelf. Remove duplicate entry.
-
-2003-05-21 Nick Clifton <nickc@redhat.com>
-
- * elf32-xstormy16.c (xstormy16_elf_howto_table): Fix dst_mask
- for X_STORMY16_REL_12 reloc.
-
- * elf.c (bfd_elf_get_needed_list): Use is_elf_hash_table to check
- the type of the hash table in the bfd_link_info structure.
- (bfd_elf_get_runpath_list): Likewise.
-
-2003-05-19 Roland McGrath <roland@redhat.com>
-
- * elf.c (bfd_elf_bfd_from_remote_memory): New function.
- * bfd-in.h: Declare it.
- * bfd-in2.h: Regenerated.
- * elfcode.h (NAME(_bfd_elf,bfd_from_remote_memory)): New function.
- * elf-bfd.h (struct elf_backend_data): New function pointer member
- elf_backend_bfd_from_remote_memory.
- (_bfd_elf32_bfd_from_remote_memory, _bfd_elf64_bfd_from_remote_memory):
- Declare them.
- * elfxx-target.h (elf_backend_bfd_from_remote_memory): New macro.
- (elfNN_bed): Add that to the initializer.
-
-2003-05-15 Roland McGrath <roland@redhat.com>
-
- * elf.c (elfcore_grok_note): Grok NT_AUXV note, make ".auxv" section.
-
-2003-05-20 Jakub Jelinek <jakub@redhat.com>
-
- * elflink.h (elf_link_output_extsym): Only issue error about !=
- STV_DEFAULT symbols if they are bfd_link_hash_undefined.
-
-2003-05-20 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.c (_bfd_elf_merge_symbol): Check ELF_LINK_DYNAMIC_DEF
- when removing the old definition for symbols with non-default
- visibility.
-
-2003-05-18 Jason Eckhardt <jle@rice.edu>
-
- * elf32-i860.c (elf32_i860_relocate_highadj): Simplify calculation.
-
-2003-05-17 Andreas Schwab <schwab@suse.de>
-
- * elf32-m68k.c (elf_m68k_check_relocs): Cache reloc section in
- elf_section_data during processing of pc-relative and absolute
- relocations.
- (elf_m68k_relocate_section): Use the cached reloc section instead
- of computing it again. Fix handling of visibility. Don't modify
- addend when copying over a relocation into the output.
-
-2003-05-17 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL
- to trim plt entries. Move undefweak non-default visibility test..
- (allocate_dynrelocs): ..from here.
- * elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Don't test
- dynamic_sections_created here. Update comment. Move undefweak
- non-default visibility test..
- (allocate_dynrelocs): ..from here. Fix comment.
- * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Use SYMBOL_CALLS_LOCAL
- to trim plt entries. Move undefweak non-default visibility test..
- (allocate_dynrelocs): ..from here. Fix comment.
- * elflink.h (elf_link_output_extsym): Compare ELF_ST_VISIBILITY with
- STV_DEFAULT rather than comparing with zero.
- * elflink.c (_bfd_elf_merge_symbol): Likewise.
- (_bfd_elf_fix_symbol_flags): Likewise. Format comment.
-
-2003-05-17 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * bfd.c (_bfd_get_gp_value): Prevent illegal access for abfd null
- pointers.
- (_bfd_set_gp_value): Likewise.
-
-2003-05-16 Michael Snyder <msnyder@redhat.com>
- From Bernd Schmidt <bernds@redhat.com>
- * archures.c (bfd_mach_h8300sx): New.
- * bfd-in2.h: Regenerate.
- * cpu-h8300.c (h8300_scan)): Add support for h8300sx.
- (h8300sx_info_struct): New.
- (h8300s_info_struct): Link to it.
- * elf32-h8300.c (elf32_h8_mach): Add support for h8300sx.
- (elf32_h8_final_write_processing): Likewise.
- (elf32_h8_relax_section): Likewise.
-
-2003-05-16 Kelley Cook <kelleycook@wideopenwest.com>
-
- * config.bfd: Accept i[3-7]86 variants.
- * configure.host: Likewise.
- * configure.in: Likewise.
- * configure: Regenerate.
-
-2003-05-15 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.c (_bfd_elf_fix_symbol_flags): Also hide protected
- symbol.
-
-2003-05-15 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.h (elf_link_check_versioned_symbol): Also allow
- the base version.
-
-2003-05-15 Alan Modra <amodra@bigpond.net.au>
- H.J. Lu <hongjiu.lu@intel.com>
-
- * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL.
- (elf_i386_relocate_section): Likewise.
- * elf32-ppc.c (allocate_dynrelocs): Likewise.
- (ppc_elf_relocate_section): Likewise.
- * elf64-ppc.c (allocate_dynrelocs): Likewise.
- (ppc64_elf_relocate_section): Likewise.
-
-2003-05-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elf32-mips.c (gprel32_with_gp): Remove useless N64 ABI case.
-
-2003-05-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc1x.c (_bfd_m68hc11_elf_merge_private_bfd_data): Check for
- processor capability, allow merge of HC12 and HCS12 in some cases.
- (m68hc11_elf_hash_table_create): Use bfd_malloc instead of bfd_zalloc.
- * cpu-m68hc12.c (bfd_m68hc12s_arch): New struct.
- (bfd_m68hc12_arch): Link it.
- (scan_mach): New function.
-
-2003-05-13 Andrew Haley <aph@redhat.com>
-
- * elf.c (bfd_elf_hash): Mask lower 32 bits of hash.
-
-2003-05-13 Alan Modra <amodra@bigpond.net.au>
- H.J. Lu <hongjiu.lu@intel.com>
-
- * elf-bfd.h (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Move from
- elf32-ppc.c. Add ELF_LINK_FORCED_LOCAL check.
- * elf32-ppc.c: (SYMBOL_REFERENCES_LOCAL, SYMBOL_CALLS_LOCAL): Delete.
- (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for dynreloc check.
- (ppc_elf_relocate_section): Likewise.
- * elf64-ppc.c (allocate_dynrelocs): Likewise.
- (ppc64_elf_relocate_section): Likewise. Use for .got relocs too.
- (ppc64_elf_adjust_dynamic_symbol): Don't assume symbols with .plt
- relocs need no other types.
- * elf32-i386.c (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL for
- dynreloc check.
- (elf_i386_relocate_section): Likewise. Use for .got relocs too.
- (elf_i386_finish_dynamic_symbol): Use SYMBOL_REFERENCES_LOCAL for
- .got relocs.
-
-2003-05-13 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_adjust_dynamic_symbol): For weak symbols,
- copy ELF_LINK_NON_GOT_REF from weakdef.
- (allocate_dynrelocs): For undef weak syms with non-default
- visibility, a) don't allocate plt entries, b) don't allocate
- .got relocs, c) discard dyn rel space
- (sh_elf_relocate_section): d) don't generate .got relocs, e)
- don't generate dynamic relocs.
- (sh_elf_copy_indirect_symbol): Don't copy ELF_LINK_NON_GOT_REF
- for weakdefs when symbol already adjusted.
-
-2003-05-12 Nick Clifton <nickc@redhat.com>
-
- * elf32-xstormy16.c (xstormy16_elf_howto_table): use 'bitfield'
- overflow detection for R_XSTORMY16_16 reloc.
-
-2003-05-12 Paul Clarke <paulc@senet.com.au>
-
- * elf32-h8300.c: Fix typo in name of R_H8_DIR8 reloc.
-
-2003-05-11 Jason Eckhardt <jle@rice.edu>
-
- * elf32-i860.c (elf32_i860_relocate_highadj): Properly
- adjust upper bits.
- (elf32_i860_relocate_splitn): Obtain upper 5 bits from the
- proper place.
- (elf32_i860_relocate_pc16): Obtain upper 5 bits from the
- proper place.
-
-2003-05-11 Andreas Schwab <schwab@suse.de>
-
- * elf32-m68k.c (elf_m68k_relocate_section): Replace ugly
- complicated tests for unresolvable relocs with a simple direct
- scheme using "unresolved_reloc" var. Report some detail on
- bfd_reloc_outofrange and similar errors.
-
-2003-05-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-s390.c (allocate_dynrelocs, elf_s390_relocate_section):
- Fix WILL_CALL_FINISH_DYNAMIC_SYMBOL call.
- (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO.
- * elf64-s390.c: Likewise.
-
-2003-05-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-s390.c (ELIMINATE_COPY_RELOCS): Define as one.
- (elf_s390_adjust_dynamic_symbol): For weak symbols, copy
- ELF_LINK_NON_GOT_REF from weakdef.
- (elf_s390_copy_indirect_symbol): Test whether the weakdef sym has
- already been adjusted before treating it specially.
- * el64-s390.c: Likwise.
-
-2003-05-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-s390.c (allocate_dynrelocs): For undef weak syms with
- non-default visibility, a) don't make them dynamic, b) discard
- space for dynamic relocs.
- (elf_s390_relocate_section): Initialize the GOT entries and skip
- R_390_{8,16,32}/R_390_PC{16,16DBL,32DBL,32} for weak undefined
- symbols with non-default visibility.
- * elf64-s390.c: Likewise.
-
-2003-05-09 Alan Modra <amodra@bigpond.net.au>
-
- * cpu-arm.c (arm_check_note): Warning fix.
- * elf32-iq2000.c (iq2000_elf_check_relocs): Warning fixes. Arrange
- to keep relocs if edited.
- (iq2000_elf_print_private_bfd_data): Return TRUE.
- * elfxx-ia64.c (elfNN_ia64_relax_section): Use ELFNN_R_SYM, not
- ELF64_R_SYM.
- (elfNN_ia64_relax_ldxmov): Warning fix.
- * xtensa-isa.c (xtensa_add_isa): Warning fix.
- * xtensa-modules.c (get_num_opcodes): Warning fix.
-
-2003-05-09 Andrey Petrov <petrov@netbsd.org>
-
- * elf.c (elf_fake_sections): Use correct cast for sh_name.
-
-2003-05-09 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.c (_bfd_elf_link_create_dynamic_sections): Move from
- elflink.h. Replace LOG_FILE_ALIGN with bed->s->log_file_align.
- (_bfd_elf_create_dynamic_sections): Use bed->s->log_file_align.
- (bfd_elf_record_link_assignment): Move from elflink.h.
- (_bfd_elf_merge_symbol): Likewise.
- (_bfd_elf_add_default_symbol): Likewise.
- (_bfd_elf_export_symbol): Likewise.
- (_bfd_elf_link_find_version_dependencies): Likewise.
- (_bfd_elf_link_assign_sym_version): Likewise.
- (_bfd_elf_link_read_relocs): Likewise.
- (_bfd_elf_link_size_reloc_section): Likewise.
- (_bfd_elf_fix_symbol_flags): Likewise.
- (_bfd_elf_adjust_dynamic_symbol): Likewise.
- (_bfd_elf_link_sec_merge_syms): Likewise.
- (elf_link_read_relocs_from_section): Likewise. Use bed->s->sizeof_rel
- and bed->s->sizeof_rela.
- (_bfd_elf_link_output_relocs): Likewise.
- * elf-bfd.h (struct elf_size_info): Rename file_align to
- log_file_align.
- (struct elf_info_failed): Move from elflink.h.
- (struct elf_assign_sym_version_info): Likewise.
- (struct elf_find_verdep_info): Likewise.
- (_bfd_elf_create_dynamic_sections): Delete duplicate declaration.
- (_bfd_elf_merge_symbol, _bfd_elf_add_default_symbol,
- _bfd_elf_export_symbol, _bfd_elf_link_find_version_dependencies,
- _bfd_elf_link_assign_sym_version,
- _bfd_elf_link_create_dynamic_sections, _bfd_elf_link_read_relocs,
- _bfd_elf_link_size_reloc_section, _bfd_elf_link_output_relocs,
- _bfd_elf_fix_symbol_flags, _bfd_elf_adjust_dynamic_symbol,
- _bfd_elf_link_sec_merge_syms): Declare.
- (bfd_elf32_link_create_dynamic_sections): Don't declare.
- (_bfd_elf32_link_read_relocs): Likewise.
- (bfd_elf64_link_create_dynamic_sections): Likewise.
- (_bfd_elf64_link_read_relocs): Likewise.
- * elflink.h: Move lots o' stuff elsewhere.
- * bfd-in.h (bfd_elf32_record_link_assignment): Don't declare.
- (bfd_elf64_record_link_assignment): Likewise.
- (bfd_elf_record_link_assignment): Declare.
- * bfd-in2.h: Regenerate.
- * elfcode.h (elf_link_create_dynamic_sections): Don't declare.
- (NAME(_bfd_elf,size_info)): Adjust for log_file_align.
- * elf.c (_bfd_elf_init_reloc_shdr): Adjust for bed->s->log_file_align.
- (assign_file_positions_for_segments): Likewise.
- (assign_file_positions_except_relocs): Likewise.
- (swap_out_syms, elfcore_write_note): Likewise.
- * elf-m10200.c: Adjust for changed function names.
- * elf-m10300.c: Likewise.
- * elf32-arm.h: Likewise.
+ * coff-h8300.c: Fix comment typos.
* elf32-h8300.c: Likewise.
- * elf32-hppa.c: Likewise.
- * elf32-ip2k.c: Likewise.
- * elf32-m32r.c: Likewise.
- * elf32-m68hc11.c: Likewise.
- * elf32-m68hc1x.c: Likewise.
- * elf32-m68k.c: Likewise.
- * elf32-mips.c: Likewise.
- * elf32-ppc.c: Likewise.
- * elf32-sh.c: Likewise.
- * elf32-v850.c: Likewise.
- * elf32-xtensa.c: Likewise.
- * elf64-alpha.c: Likewise.
- * elf64-hppa.c: Likewise.
- * elf64-mmix.c: Likewise.
- * elf64-ppc.c: Likewise.
- * elf64-sh64.c: Likewise.
- * elfxx-ia64.c: Likewise.
- * elfxx-mips.c: Likewise.
- (MIPS_ELF_LOG_FILE_ALIGN): Use log_file_align.
- * elf64-alpha.c (alpha_elf_size_info): Adjust for log_file_align.
- * elf64-hppa.c (hppa64_elf_size_info): Likewise.
- * elf64-mips.c (mips_elf64_size_info): Likewise.
- * elf64-s390.c (s390_elf64_size_info): Likewise.
- * elf64-sparc.c (sparc64_elf_size_info): Likewise.
-
-2003-05-08 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.h (elf_add_default_symbol): After skipping the
- unversioned symbol, go to non-default one.
-
-2003-05-07 H.J. Lu <hongjiu.lu@intel.com>
-
- * elfxx-ia64.c (_bfd_elf_link_hash_hide_symbol): Also clear the
- want_plt field.
- (elfNN_ia64_relocate_section): Don't do dynamic symbol lookup
- for symbols with non-default visibility.
-
-2003-05-07 H.J. Lu <hongjiu.lu@intel.com>
-
- * elflink.h (elf_link_check_versioned_symbol): Also handle the
- case that a DSO references a hidden symbol which may be
- satisfied by a versioned symbol in another DSO.
- (elf_link_output_extsym): Check versioned definition for hidden
- symbol referenced by a DSO.
-
-2003-05-07 Nick Clifton <nickc@redhat.com>
-
- * elf32-xstormy16.c (xstormy16_elf_howto_table): Reset
- R_XSTORMY16_16 reloc to ignore overflows.
-
-2003-05-06 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Improve
- error message for mixing different-endian files. Check for ABI
- compatibility of input files with the selected emulation.
-
-2003-05-05 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-i386.c (allocate_dynrelocs): For undef weak syms with
- non-default visibility, a) don't make them dynamic, b) discard
- space for dynamic relocs.
- * elf64-x86-64.c (allocate_dynrelocs): Likewise.
-
- * elf32-ppc.c (allocate_dynrelocs): For undef weak syms with
- non-default visibility, a) don't allocate plt entries, b) don't
- allocate .got relocs, c) discard dyn rel space,
- (ppc_elf_relocate_section): d) don't generate .got relocs, e)
- don't generate dynamic relocs.
- * elf64-ppc.c (allocate_dynrelocs): As above.
- (ppc64_elf_relocate_section): As above.
-
-2003-05-05 Andreas Jaeger <aj@suse.de>
-
- * elf64-x86-64.c (allocate_dynrelocs): Don't allocate dynamic
- relocation entries for weak undefined symbols with non-default
- visibility.
- (elf64_x86_64_relocate_section): Initialize the GOT entries and
- skip R_386_32/R_386_PC32 for weak undefined symbols with
- non-default visibility.
-
-2003-05-04 H.J. Lu <hjl@gnu.org>
-
- * elf32-i386.c (allocate_dynrelocs): Don't allocate dynamic
- relocation entries for weak undefined symbols with non-default
- visibility.
- (elf_i386_relocate_section): Initialize the GOT entries and
- skip R_386_32/R_386_PC32 for weak undefined symbols with
- non-default visibility.
-
- * elfxx-ia64.c (allocate_fptr): Don't allocate function
- descriptors for weak undefined symbols with non-default
- visibility.
- (allocate_dynrel_entries): Don't allocate relocation entries
- for symbols resolved to 0.
- (set_got_entry): Don't install dynamic relocation for weak
- undefined symbols with non-default visibility.
- (set_pltoff_entry): Likewise.
-
- * elflink.h (elf_fix_symbol_flags): Hide weak undefined symbols
- with non-default visibility.
- (elf_link_output_extsym): Don't make weak undefined symbols
- with non-default visibility dynamic.
-
-2003-05-04 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_merge_symbol): Correctly handle weak definition.
-
-2003-05-04 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_merge_symbol): Don't record a hidden/internal
- symbol dynamic. Check indirection when removing the old
- definition for symbols with non-default visibility.
- (elf_add_default_symbol): Skip when told by elf_merge_symbol.
-
-2003-05-02 Nick Clifton <nickc@redhat.com>
-
- * elf32-xstormy16.c (xstormy16_elf_howto_table): Make the
- R_XSTORMY16_8 and R_XSTORMY16_16 relocs detect and complain about
- unsigned overflow.
-2003-05-02 Andreas Jaeger <aj@suse.de>
+2004-01-16 Kazu Hirata <kazu@cs.umass.edu>
- * elf64-x86-64.c (elf_x86_64_copy_indirect_symbol): Don't copy
- ELF_LINK_NON_GOT_REF for weakdefs when symbol already adjusted.
- (ELIMINATE_COPY_RELOCS): Define as one. Use throughout.
- (elf_x86_64_adjust_dynamic_symbol): For weak symbols, copy
- ELF_LINK_NON_GOT_REF from weakdef.
-
-2003-05-02 Charles Lepple <clepple@ghz.cc>
- Nick Clifton <nickc@redhat.com>
-
- * acinclude.m4: Fix name of --enable-install-libbfd switch.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
- * Makefile.in: Regenerate.
-
-2003-05-01 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_copy_indirect_symbol): Test whether the
- weakdef sym has already been adjusted before treating it specially.
- * elf32-i386.c (elf_i386_copy_indirect_symbol): Don't copy
- ELF_LINK_NON_GOT_REF for weakdefs when symbol already adjusted.
- * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise.
- (ppc64_elf_check_relocs): Set ELF_LINK_NON_GOT_REF.
-
-2003-04-28 H.J. Lu <hjl@gnu.org>
-
- * elfxx-ia64.c (elfNN_ia64_relax_section): Relax ldxmov during
- the relax finalize pass.
-
- * section.c (struct sec): Add need_finalize_relax and remove
- flag11.
- (STD_SECTION): Update struct sec initializer.
- * bfd-in2.h: Regenerated.
-
-2003-04-28 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_merge_symbol): Call elf_backend_copy_indirect_symbol
- to copy any information related to dynamic linking when we flip
- the indirection.
-
-2003-04-27 H.J. Lu <hjl@gnu.org>
-
- * elf-bfd.h (ELF_LINK_DYNAMIC_DEF): New.
- (ELF_LINK_DYNAMIC_WEAK): New.
-
- * elflink.h (elf_merge_symbol): Add one argument to indicate if
- a symbol should be skipped. Ignore definitions in dynamic
- objects for symbols with non-default visibility.
- (elf_add_default_symbol): Adjusted.
- (elf_link_add_object_symbols): Check if a symbol should be
- skipped. Don't merge the visibility field with the one from
- a dynamic object.
- (elf_link_check_versioned_symbol): Use undef_bfd.
- (elf_link_output_extsym): Warn if a forced local symbol is
- referenced from dynamic objects. Make non-weak undefined symbol
- with non-default visibility a fatal error.
-
-2003-04-27 Daniel Jacobowitz <drow@mvista.com>
-
- * configure.in: Bump version on HEAD to 2.14.90.
- * configure: Regenerated.
-
-2003-04-26 Stephane Carrez <stcarrez@nerim.fr>
-
- PR savannah/3331:
- * elf32-m68hc11.c (m68hc11_elf_relax_section): Clear prev_insn_group
- when we couldn't relax something.
-
-2003-04-25 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_merge_symbol): When we find a regular definition
- for an indirect symbol, flip the indirection so that the old
- direct symbol now points to the new definition.
-
-2003-04-24 Roland McGrath <roland@redhat.com>
-
- * elf.c (bfd_section_from_phdr): Map PT_GNU_EH_FRAME to "eh_frame_hdr".
-
-2003-04-24 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c: Formatting and comment fixes.
- (ELIMINATE_COPY_RELOCS): Move before ppc_elf_copy_indirect_symbol.
- (ppc_elf_copy_indirect_symbol): Copy flags here for weakdefs.
-
-2003-04-24 Dhananjay Deshpande <dhananjayd@kpitcummins.com>
-
- * archures.c (bfd_mach_h8300hn, bfd_mach_h8300sn): Added.
- * bfd-in2.h: Rebuilt.
- * coff-h8300.c (BADMAG): Add check for H8300HNBADMAG & H8300SNBADMAG.
- * coffcode.h (coff_set_arch_mach_hook): Add case for H8300HNMAGIC
- & H8300SNMAGIC.
- (coff_set_flags): Add case for bfd_mach_h8300hn & bfd_mach_h8300sn.
- * cpu-h8300.c (h8300_scan): Handle h8300hn, h8300sn.
- (h8300sn_info_struct, h8300hn_info_struct): New.
- * elf32-h8300.c (elf32_h8_mach): Handle case for h8300hn & h8300sn
- (elf32_h8_final_write_processing): Likewise.
-
-2003-04-23 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (tpoff): New.
- (struct elf_sh_dyn_relocs): Remove tls_tpoff32.
- (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO.
- (allocate_dynrelocs): Don't make unnecessary dynamic TLS
- relocations. Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses.
- (sh_elf_relocate_section): Likewise. Remove unnecessary tests.
- (dtpoff_base): Fix wrong indentation.
- (sh_elf_check_relocs): Don't set DF_STATIC_TLS flag with non-TLS
- relocations. Don't set tls_tpoff32 flag. Don't make unnecessary
- R_SH_TLS_TPOFF32 relocations.
-
-2003-04-23 J"orn Rennecke <joern.rennecke@superh.com>
-
- * archures.c (enum bfd_architecture): Amend comment to refer to SuperH.
- * cpu-sh.c: Likewise.
- * elf32-sh.c: Likewise.
- * reloc.c (bfd_reloc_code_real): Likewise.
- * elf32-sh64-com.c: Change comment to refer to SuperH.
- * elf32-sh64.c: Likewise.
- * elf64-sh64.c: Likewise.
- * bfd-in2.h (enum bfd_architecture): Regenerate.
-
-2003-04-23 Alan Modra <amodra@bigpond.net.au>
-
- From Julien LEMOINE <speedblue@debian.org>
- * elf32-i386.c (elf_i386_info_to_howto): Delete.
- (elf_info_to_howto): Define as elf_i386_info_to_howto_rel.
-
-2003-04-22 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
-
- * archures.c: Replace references to Mitsubishi M32R with references
- to Renesas M32R.
- * relocs.c: Likewise.
- * bfd-in2.h: Regenerate.
-
-2003-04-21 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (alpha_elf_dynamic_symbol_p): Return false for an
- executable when a symbol is defined both regular and dynamic.
-
-2003-04-21 Stephane Carrez <stcarrez@nerim.fr>
-
- * Makefile.am (BFD32_BACKENDS): Add elf32-m68hc1x.lo.
- (elf32-m68hc1x.lo): Update dependencies
- * configure.in: Add elf32-m68hc1x.lo.
- * configure: Rebuild.
- * Makefile.in: Rebuild.
-
-2003-04-21 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc1x.c: New file (from elf32-m68hc11.c and elf32-m68hc12.c)
- (m68hc11_elf_hash_table_create): New function.
- (elf32_m68hc11_link_hash_table_free): New function.
- (stub_hash_newfunc): New function.
- (m68hc11_add_stub): New function.
- (elf32_m68hc11_add_symbol_hook): New function.
- (elf32_m68hc11_setup_section_lists): New function.
- (elf32_m68hc11_next_input_section): New function.
- (elf32_m68hc11_size_stubs): New function.
- (elf32_m68hc11_build_stubs): New function.
- (m68hc11_get_relocation_value): New function.
- (elf32_m68hc11_relocate_section): Call the above to redirect
- some relocations to the trampoline code.
- (m68hc11_elf_export_one_stub): New function.
- (m68hc11_elf_set_symbol): New function.
- (elf32_m68hc11_build_stubs): Call it via bfd_hash_traverse.
- (m68hc11_elf_get_bank_parameters): Get parameters only when the info
- is not yet initialized.
-
- * elf32-m68hc1x.h: New file (from elf32-m68hc11.c and elf32-m68hc12.c)
- (elf32_m68hc11_stub_hash_entry): New struct.
- (m68hc11_page_info): Add trampoline handler address.
- (m68hc11_elf_link_hash_table): Add stubs generation members.
- (elf32_m68hc11_add_symbol_hook): Declare.
- (elf32_m68hc11_setup_section_lists): Declare.
- (elf32_m68hc11_size_stubs): Declare.
- (elf32_m68hc11_build_stubs): Declare.
-
- * elf32-m68hc11.c (m68hc11_elf_ignore_reloc): Move to elf32-m68hc1x.c.
- (elf32_m68hc11_gc_mark_hook, elf32_m68hc11_gc_sweep_hook): Likewise.
- (elf32_m68hc11_check_relocs, elf32_m68hc11_relocate_section): Ditto.
- (_bfd_m68hc11_elf_set_private_flags): Ditto.
- (_bfd_m68hc11_elf_merge_private_bfd_data): Ditto.
- (_bfd_m68hc11_elf_print_private_bfd_data): Ditto.
- (bfd_elf32_bfd_link_hash_table_create): Define.
- (elf_backend_add_symbol_hook): Define.
- (m68hc11_elf_bfd_link_hash_table_create): New function.
- (m68hc11_elf_build_one_stub): New function.
- (m68hc11_elf_size_one_stub): New function.
- (m68hc11_elf_bfd_link_hash_table_create): Install the above.
- (bfd_elf32_bfd_link_hash_table_create): Define.
-
- * elf32-m68hc12.c (m68hc11_elf_ignore_reloc): Remove.
- (m68hc12_addr_is_banked): Remove, use m68hc11_addr_is_banked.
- (m68hc12_phys_addr): Ditto.
- (m68hc12_phys_page): Ditto.
- (m68hc12_elf_special_reloc): Move to elf32-m68hc1x.c.
- (elf32_m68hc11_gc_mark_hook): Likewise.
- (elf32_m68hc11_gc_sweep_hook): Likewise.
- (elf32_m68hc11_check_relocs): Likewise.
- (elf32_m68hc11_relocate_section): Likewise.
- (_bfd_m68hc12_elf_set_private_flags): Likewise.
- (_bfd_m68hc12_elf_merge_private_bfd_data): Likewise.
- (_bfd_m68hc12_elf_print_private_bfd_data): Likewise.
- (m68hc12_elf_build_one_stub): New function.
- (m68hc12_elf_size_one_stub): New function.
- (m68hc12_elf_bfd_link_hash_table_create): New function, use the above.
- (elf_backend_add_symbol_hook): Define.
- (elf_m68hc11_howto_table): Use TRUE for pcrel relocs; fix masks.
-
-2003-04-18 Nick Clifton <nickc@redhat.com>
-
- * format.c (bfd_check_format_matches): Only check associated
- vector if the matching_vector has been created.
-
-2003-04-15 Alexandre Oliva <aoliva@redhat.com>
-
- * dwarf2.c (_bfd_dwarf2_find_nearest_line): Fix typo in
- 2003-04-09's change.
-
-2003-04-15 Brian Ford <ford@vss.fsi.com>
-
- * peicode.h (coff_swap_scnhdr_in): If a section holds
- uninitialized data and is from an object file or from an
- executable image that has not initialized the s_size field, or if
- the physical size is padded, use the virtual size (stored in
- s_paddr) instead.
-
-2003-04-15 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_link_add_object_symbols): Properly report
- filename for alignment reduction.
-
-2003-04-15 Rohit Kumar Srivastava <rohits@kpitcummins.com>
-
- * archures.c: Replace occurrances of 'Hitachi' with 'Renesas'.
- * reloc.c: Likewise.
- * coff-h8300.c: Likewise.
- * coff-h8500.c: Likewise.
- * coff-sh.c: Likewise.
- * cpu-h8300.c: Likewise.
- * cpu-sh.c: Likewise.
+ * coff-h8300.c: Add comments about relaxation.
* elf32-h8300.c: Likewise.
- * elf32-sh.c: Likewise.
- * elf32-sh64-com.c: Likewise.
- * elf32-sh64.c: Likewise.
- * elf64-sh64.c: Likewise.
- * bfd-in2.h: Regenerate.
-
-2003-04-14 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_link_add_object_symbols): Maintain maximum
- alignment for common symbols. Warn reducing alignment for
- common symbols. Report old filename when symbol size changes.
-
-2003-04-12 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (mips_elf_calculate_relocation): Adjust two other
- occurrences of the same test changed in the previous patch.
- Optimize.
-
-2003-04-11 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (mips_elf_get_global_gotsym_index): New.
- (mips_elf_calculate_relocation): Decay GOT_PAGE/GOT_OFST to
- GOT_DISP/addend only if the symbol got a global GOT entry.
-
-2003-04-10 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (mips_elf_calculate_relocation): Decay
- GOT_PAGE/GOT_OFST referencing overridable symbol to
- GOT_DISP/addend.
- (_bfd_mips_elf_check_relocs): Handle GOT_PAGE referencing
- global symbol as GOT_DISP.
-
-2003-04-10 Bob Wilson <bob.wilson@acm.org>
-
- * elf32-xtensa.c (elf_xtensa_relocate_section): Don't continue to the
- next relocation on an undefined symbol.
-
-2003-04-09 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_relocate_section) <R_ALPHA_GPREL32>:
- Ignore relocations against r_symndx == 0.
-
-2003-04-09 H.J. Lu <hjl@gnu.org>
-
- * elf64-alpha.c (elf64_alpha_relocate_section): Don't return
- FALSE for undefined symbols.
- * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
-
-2003-04-09 Alexandre Oliva <aoliva@redhat.com>
-
- * dwarf2.c (_bfd_dwarf2_find_nearest_line): Try DWARF3-standard
- and IRIX-specific shift-to-64-bit 4-byte lengths before following
- addr_size.
-
-2003-04-08 Alexandre Oliva <aoliva@redhat.com>
-
- * elf32-mips.c (bfd_elf32_bfd_reloc_type_lookup): Detect (ctor)
- pointer size from ABI, not arch_bits_per_address.
-
-2003-04-07 Kevin Buettner <kevinb@redhat.com>
-
- * elfn32-mips.c (elf32_mips_grok_prstatus): Adjust core file related
- constants for n32 ABI.
-
-2003-04-06 Andrew Cagney <cagney@redhat.com>
-
- * simple.c (bfd_simple_get_relocated_section_contents): Disable
- free that leads to GDB vs BFD memory corruption.
-
-2003-04-04 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc11.c (m68hc11_elf_relax_delete_bytes): Also adjust
- symbols that mark the end of the section.
- (m68hc11_elf_relax_section): Use R_M68HC11_PCREL_8 relocs when
- converting to a relative branch so that the offset is computed after
- the relaxation; also relocate a jsr into a bsr if possible but don't
- relax them if they are to a far symbol as we need to call the
- trampoline code.
- (elf_m68hc11_howto_table): Set pcrel_offset to true.
-
-2003-04-04 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * archures.c: Namespace cleanup. Rename bfd_mach_c3x to
- bfd_mach_tic3x and bfd_mach_c4x to bfd_mach_tic4x
- * bfd-in2.h: Regenerate
- * coff-tic4x.c: Namespace cleanup. Replace s/c4x/tic4x/
- * cpu-tic4x.c: Ditto
-
-2003-04-03 Nick Clifton <nickc@redhat.com>
-
- * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Compute ps and ss
- differently for object files and executables.
- * peicode.h (coff_swap_scnhdr_in): Only set the s_size field
- for object files or for executables who have not already
- initialised the field.
- * libpei.h (bfd_pe_executable_p): New macro. Return true if
- the PE format bfd is an executable.
-
-2003-04-03 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_check_relocs): Don't use SYMBOL_REFERENCES_LOCAL
- here as it's too early to reliably determine locality.
- (ppc_elf_gc_sweep_hook): Likewise.
- (SYMBOL_REFERENCES_LOCAL): Expand comment.
-
-2003-04-02 Bob Wilson <bob.wilson@acm.org>
-
- * xtensa-modules.c: Remove comment indicating that this is a
- generated file.
-
-2003-04-02 Alan Modra <amodra@bigpond.net.au>
-
- * elfxx-mips.c (_bfd_mips_elf_hide_symbol): Test for NULL dynobj.
-
-2003-04-01 Bob Wilson <bob.wilson@acm.org>
-
- * Makefile.am (ALL_MACHINES): Add cpu-xtensa.lo.
- (ALL_MACHINES_CFILES): Add cpu-xtensa.c.
- (BFD32_BACKENDS): Add elf32-xtensa.lo, xtensa-isa.lo, and
- xtensa-modules.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-xtensa.c, xtensa-isa.c, and
- xtensa-modules.c.
- (cpu-xtensa.lo): New target.
- (elf32-xtensa.lo): Likewise.
- (xtensa-isa.lo): Likewise.
- (xtensa-modules.lo): Likewise.
- * Makefile.in: Regenerate.
- * archures.c (bfd_architecture): Add bfd_{arch,mach}_xtensa.
- (bfd_archures_list): Add bfd_xtensa_arch.
- * config.bfd: Handle xtensa-*-*.
- * configure.in: Handle bfd_elf32_xtensa_{le,be}_vec.
- * configure: Regenerate.
- * reloc.c: Add BFD_RELOC_XTENSA_{RTLD,GLOB_DAT,JMP_SLOT,RELATIVE,
- PLT,OP0,OP1,OP2,ASM_EXPAND,ASM_SIMPLIFY}.
- * targets.c (bfd_elf32_xtensa_be_vec): Declare.
- (bfd_elf32_xtensa_le_vec): Likewise.
- (bfd_target_vector): Add bfd_elf32_xtensa_{be,le}_vec.
- * cpu-xtensa.c: New file.
- * elf32-xtensa.c: Likewise.
- * xtensa-isa.c: Likewise.
- * xtensa-modules.c: Likewise.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Likewise.
-
-2003-04-01 Nick Clifton <nickc@redhat.com>
-
- * archures.c (bfd_mach_arm_unknown): Define.
- * bfd-in.h (bfd_arm_merge_machines, bfd_arm+update_notes,
- bfd_arm_get_mach_from_notes): Prototype.
- * bfd-in2.h: Regenerate.
- * coff-arm.c (coff_arm_merge_private_bfd_data): Call
- bfd_arm_merge_machines.
- (coff_arm_final_link_postscript): Call bfd_arm_update_notes.
- * coffcode.h (coff_set_arch_mach_hook): Call
- bfd_arm_get_mach_from_notes.
- * coffgen.c (coff_real_object_p): Revert previous delta.
- * cpu_arm.c (arm_check_note): New function. Examine a note in a
- .note section.
- (bfd_arm_merge_machines): New function: Handle the merging of ARM
- binaries compiled for different architectures..
- (bfd_arm_update_notes): New function: Update an ARM note section.
- (bfd_arm_get_mach_from_notes): New function: Extract a bfd machine
- number from an ARM note section.
- * elf32-arm.h (elf32_arm_object_p): Use
- bfd_arm_get_mach_from_notes.
- (elf32_arm_merge_private_bfd_data): Use bfd_arm_merge_machines.
- (elf32_arm_final_write_processing): Use bfd_arm_update_notes.
-
-2003-04-01 Ben Elliston <bje@wasabisystems.com>
-
- * dwarf2.c (read_attribute_value): Correct typo in comment.
-
-2003-04-01 Nick Clifton <nickc@redhat.com>
-
- * dwarf2.c (concat_filename): Use bfd_malloc() and strdup()
- instead of concat().
- (decode_line_info): Only free filename if it is not NULL.
- (add_line_info): Make a copy of the filename when storing it into
- the info structure.
-
-2003-03-31 Andreas Schwab <schwab@suse.de>
- Daniel Jacobowitz <drow@mvista.com>
-
- * simple.c (bfd_simple_get_relocated_section_contents): Add
- parameter symbol_table. Optionally use it instead of the symbol
- table from the bfd. Save and restore output offsets and output
- sections around bfd_get_relocated_section_contents. Fix a memory
- leak.
- (simple_save_output_info, simple_restore_output_info): New
- functions.
- * bfd-in2.h: Regenerate.
- * dwarf2.c (read_abbrevs): Use
- bfd_simple_get_relocated_section_contents instead of
- bfd_get_section_contents.
- (decode_line_info): Likewise.
- (_bfd_dwarf2_find_nearest_line): Likewise. Don't call
- find_rela_addend.
- (find_rela_addend): Remove.
- * elfxx-ia64.c (elfNN_ia64_reloc): Weaken sanity check for
- debugging sections.
- (elfNN_ia64_hash_table_create): Create the hash table with malloc,
- not bfd_zalloc.
-
-2003-03-31 David Heine <dlheine@suif.stanford.edu>
-
- * aoutx.h (aout_link_hash_table_create): Use bfd_malloc instead of
- bfd_alloc.
- * dwarf2.c (concat_filename): Always allocate space for the
- returned filename.
- (decode_line_info): Free the allocated filename returned by
- concat_filename.
- * elf-eh-frame.c (bfd_elf_write_section_eh_frame): Fix memory leaks.
- * elf.c (copy_private_bfd_data): Likewise.
- (_bfd_elf_slurp_version_tables): Fix bug freeing contents pointer.
- * elflink.h (elf_link_sort_relocs): Fix memory leak.
- * format.c (bfd_check_format_matches): Likewise.
- * linker.c (bfd_generic_final_link): Likewise.
- * opncls.c (find_separate_debug_info): Likewise.
- * simple.c (bfd_simple_get_relocated_section_contents): Likewise.
-
-2003-03-28 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_link_add_object_symbols): Correctly combine
- visibilities.
-
-2003-03-27 Jakub Jelinek <jakub@redhat.com>
-
- * elfxx-ia64.c (elfNN_ia64_relax_section): Reset self_dtpmod_offset
- to -1 before recomputing got offsets.
-
-2003-03-26 Andreas Schwab <schwab@suse.de>
-
- * elf32-m68k.c (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define.
- (elf_m68k_relocate_section): Use it to correctly handle symbols
- forced to be local.
- (elf_m68k_finish_dynamic_symbol): Emit RELATIVE reloc for got
- entries for symbols that are forced to be local.
-
-2003-03-25 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (_bfd_mips_relax_section): New function.
- * elfxx-mips.h (_bfd_mips_relax_section): Declare.
- * elfn32-mips.c, elf64-mips.c: Use it.
-
-2003-03-25 Stan Cox <scox@redhat.com>
- Nick Clifton <nickc@redhat.com>
-
- Contribute support for Intel's iWMMXt chip - an ARM variant:
-
- * archures.c: Add bfd_mach_arm_iWMMXt.
- * reloc.c: Add BFD_RELOC_ARM_CP_OFF_IMM_S2.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
- * coff-arm.c (coff_arm_merge_private_bfd_data): Allow iWMMXt
- object files to be linked with XScale ones.
- (coff_arm_final_link_postscript): Update note section.
- * coffcode.h (coff_set_arch_mach_hook): Handle note section.
- * coffgen.c (coff_real_object_p): Call bfd_coff_set_arch_mach_hook
- after identifying a coff binary.
- * cpu-arm.c (processors): Add iWMMXt.
- (arch_inf): Likewise.
- * elf32-arm.h (arm_object_p): Handle note section.
- (elf32_arm_merge_private_bfd_data): Allow iWMMXt object files to
- be linked with XScale ones.
- (elf32_arm_section_flags): New function: Set flags on note section.
- (elf32_arm_final_write_processing): Handle note section.
-
-2003-03-21 DJ Delorie <dj@redhat.com>
-
- * elf32-xstormy16.c (elf32_xstormy16_relocate_section): Call
- _bfd_elf_rela_local_sym.
-
-2003-03-20 H.J. Lu <hjl@gnu.org>
-
- * elfxx-ia64.c (elfNN_ia64_relax_section): Don't try relax for
- non-ELF outputs.
-
-2003-03-20 Nick Clifton <nickc@redhat.com>
-
- * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Initialise $idata2 and
- $idata5 in case bfd_coff_final_link is not called.
-
-2003-03-19 Jakub Jelinek <jakub@redhat.com>
-
- * elf64-sparc.c (struct sparc64_elf_section_data): Add reloc_count
- field.
- (canon_reloc_count): Define.
- (sparc64_elf_slurp_one_reloc_table, sparc64_elf_slurp_reloc_table,
- sparc64_elf_canonicalize_dynamic_reloc): Use it instead of
- reloc_count.
- (sparc64_elf_canonicalize_reloc): New routine.
- (bfd_elf64_canonicalize_reloc): Define.
-
-2003-03-18 Jakub Jelinek <jakub@redhat.com>
-
- * elfxx-ia64.c (elfNN_ia64_relax_section): Handle relaxation
- againt mergeable sections. Take r_addend into account when caching
- trampolines.
-
-2003-03-18 Richard Henderson <rth@redhat.com>
-
- * elfxx-ia64.c (get_dyn_sym_info): Return NULL gracefully for
- local symbols that have no dyninfo.
-
-2003-03-14 Gene Smith <gene.smith@siemens.com>
-
- * ieee.c (ieee_write_expression): Handle the case where symbol is
- NULL.
- General formatting improvements.
-
-2003-03-13 Nick Clifton <nickc@redhat.com>
-
- * configure.in (LINGUAS): Add zh_CN.
- * configure: Regenerate.
- * po/zh_CN.po: New file.
-
-2003-03-13 Elias Athanasopoulos <elathan@phys.uoa.gr>
-
- * aout-cris.c (BYTES_IN_WORD): Don't define.
- aout-encap.c: Likewise.
- aout-ns32k.c: Likewise.
- aout-tic30.c: Likewise.
- hp300bsd.c: Likewise.
- i386aout.c: Likewise.
- i386dynix.c: Likewise.
- i386linux.c: Likewise.
- i386lynx.c: Likewise.
- i386mach3.c: Likewise.
- m68k4knetbsd.c: Likewise.
- m68klinux.c: Likewise.
- m68klynx.c: Likewise.
- m68knetbsd.c: Likewise.
- m88kmach3.c: Likewise.
- mipsbsd.c: Likewise.
- newsos3.c: Likewise.
- sparclinux.c: Likewise.
- sparclynx.c: Likewise.
- sparcnetbsd.c: Likewise.
- vaxbsd.c: Likewise. Fix comment formatting.
-
-2003-03-12 Alexandre Oliva <aoliva@redhat.com>
-
- * Reverted 2003-03-02's patch.
-
- * elfxx-target.h (bfd_elfNN_canonicalize_reloc): Make it
- overridable.
- * elf64-mips.c (mips_elf64_canonicalize_reloc,
- mips_elf64_get_dynamic_reloc_upper_bound,
- mips_elf64_canonicalize_dynamic_reloc): New, adapted from elf.c.
- (bfd_elf64_get_canonicalize_reloc,
- bfd_elf64_get_dynamic_reloc_upper_bound,
- bfd_elf64_canonicalize_dynamic_reloc): Define.
- (mips_elf64_slurp_reloc_table): Support dynamic.
- (mips_elf64_slurp_one_reloc_table): Adjust.
-
-2003-03-12 Nick Clifton <nickc@redhat.com>
-
- * xsym.c (bfd_sym_fetch_type_information_table_entry): Change
- 'index' to 'offset' in test for zero value.
-
-2003-03-11 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (mips_elf_create_dynamic_relocation): Do not create
- dynamic relocations pointing to local or section symbols, use the
- NULL symbol instead. Document the choice to not emit an
- additional R_MIPS_64 relocation.
-
-2003-03-11 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Subtract tls seg vma from
- zero index dynamic tls relocs generated for the GOT. Tidy code.
- Set "relocation" to 1 on DTPMOD32 relocs. Optimize HA adjustment.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
-
-2003-03-07 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Don't look for a nop after
- a tls_get_addr call.
- * elf32-ppc.c (ELIMINATE_COPY_RELOCS): Define as one.
- (ppc_elf_adjust_dynamic_symbol): For weak symbols, copy
- ELF_LINK_NON_GOT_REF from weakdef.
- * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define as one.
- (ppc64_elf_adjust_dynamic_symbol): For weak symbols, copy
- ELF_LINK_NON_GOT_REF from weakdef.
- * elf32-i386.c (ELIMINATE_COPY_RELOCS): Define as one. Use throughout.
- (elf_i386_adjust_dynamic_symbol): For weak symbols, copy
- ELF_LINK_NON_GOT_REF from weakdef.
+2004-01-14 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
-2003-03-06 Jakub Jelinek <jakub@redhat.com>
- Andrew Haley <aph@redhat.com>
-
- * elflink.h (elf_bfd_discard_info): Don't process eh frames if
- output is relocateable.
-
-2003-03-06 Steven Konopa <skonopa@kgo.csc.com>
-
- * som.c (som_fixup_formats): Correct formats for R_AUX_UNWIND and
- R_COMMENT.
-
-2003-03-06 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_create_linker_section): Don't capitalize
- error messages.
- (ELIMINATE_COPY_RELOCS): Define to zero.
- (ppc_elf_relocate_section): Don't deref htab->tls_sec when calculating
- TLSLD relocs. Report reloc types on a number of errors. Optimize
- LOCAL24PC check for non-local syms. Don't capitalize error messages.
- * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define to zero.
- (ppc64_elf_relocate_section): Don't deref htab->tls_sec when
- calculating TLSLD relocs. Report reloc types on a number of errors.
- Don't capitalize error messages.
-
-2003-03-03 H.J. Lu <hjl@gnu.org>
-
- * elfxx-ia64.c (USE_BRL): Removed.
- (oor_ip): Removed.
-
-2003-03-03 J"orn Rennecke <joern.rennecke@superh.com>
-
- * elf32-sh.c (sh_elf_howto_tab): Make R_SH_IND12W into an ordinary
- relocation (no special function), and make it non-partial_inplace.
- (sh_elf_relax_section): When creating a bsr, use a consistent value
- no matter if the symbol is extern or not; set addend to -4.
- Don't swap load / non-load instructions for SH4.
- (sh_elf_relax_delete_bytes): In R_SH_IND12W case, check the offset
- rather than if the symbol is external to determine if adjusting the
- offset makes sense. Adjust the addend too if appropriate.
- (sh_elf_relocate_section): In R_SH_IND12W, don't fiddle with the
- relocation.
-
-2003-03-03 Nick Clifton <nickc@redhat.com>
-
- * po/da.po: Installed latest translation.
-
-2003-03-02 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elf32-mips.c (elf_mips_howto_table_rel): Change definition of
- R_MIPS_PC16 to rightshift 2.
- (elf_reloc_map mips_reloc_map): Map to rightshifted BFD reloc.
- (bfd_elf32_bfd_reloc_type_lookup): Support
- BFD_RELOC_MIPSEMB_16_PCREL_S2.
- * elf64-mips.c (mips_elf64_howto_table_rel): Change definition of
- R_MIPS_PC16 to rightshift 2.
- (mips_elf64_howto_table_rela): Likewise.
- (mips_reloc_map): Map to rightshifted BFD reloc.
- * elfn32-mips.c: The same as in elf64-mips.c.
- * elfxx-mips.c (mips_elf_got_for_ibfd): Typo in comment.
- (mips_elf_calculate_relocation): Handle rightshifted addends for
- R_MIPS_PC16.
- * reloc.c (BFD_RELOC_MIPSEMB_16_PCREL_S2): New BFD relocation for
- MIPS Embedded PIC. Remove superfluous empty COMMENT.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Regenerate.
-
-2003-02-28 Richard Henderson <rth@redhat.com>
-
- * elfxx-ia64.c (elfNN_ia64_relax_section): Correct bounds
- for ltoff22x relaxation.
-
-2003-03-01 Alan Modra <amodra@bigpond.net.au>
-
- * bfd-in.h (_bfd): Don't define.
- * bfd.c: Rename occurrences of "struct _bfd" to "struct bfd".
- * syms.c: Likewise.
- * bfd-in2.h: Regenerate.
-
-2003-02-27 Richard Henderson <rth@redhat.com>
-
- * elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add want_gotx;
- (elfNN_ia64_check_relocs): Set it.
- (allocate_global_data_got): Check it.
- (allocate_local_got): Likewise.
- (allocate_dynrel_entries): Likewise.
- (elfNN_ia64_relax_ldxmov): New.
- (elfNN_ia64_relax_section): Handle LTOFF22X, LDXMOV.
- (elfNN_ia64_choose_gp): Split out from ...
- (elfNN_ia64_final_link): ... here.
-
-2003-02-27 Andrew Cagney <cagney@redhat.com>
-
- * bfd.c (struct bfd): Rename "struct _bfd".
- * bfd-in.h: Update copyright.
- (struct bfd): Rename "struct _bfd".
- (_bfd): Define for backward compatibility.
- * bfd-in2.h: Regenerate.
-
-2003-02-25 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_bfd_final_link): Apportion reloc counts to rel_hdr
- and rel_hdr2 when initially counting input relocs rather than after
- creating output reloc sections.
- (elf_link_read_relocs_from_section): Don't abort with wrong reloc
- sizes.
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2003-02-24 Kris Warkentin <kewarken@qnx.com>
-
- * elf.c (elfcore_read_notes): Add check for QNX style core file.
- (elfcore_grog_nto_note): New function.
- (elfcore_grog_nto_gregs): New function.
- (elfcore_grog_nto_status): New function.
-
-2003-02-24 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.c (_bfd_elf_create_got_section): Check existing .got
- section flags before concluding that we've already been called.
- Don't use register keyword.
- (_bfd_elf_create_dynamic_sections): Don't use register keyword.
- (_bfd_elf_create_linker_section): Formatting.
-
-2003-02-20 jmc <jmc@prioris.mini.pw.edu.pl>
-
- * coff-h8300.c: Fix typo: intial -> initial.
- * coff-ppc.c: Likewise.
-
-2003-02-20 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c: Formatting.
- (allocate_dynrelocs): LD and GD relocs against the same sym need
- separate GOT entries.
- (ppc_elf_relocate_section): Correct GOT handling for multiple GOT
- entries per symbol.
-
-2003-02-19 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-hppa.c (elf32_hppa_gc_sweep_hook): Simplify dynamic reloc
- removal. Localize vars. Remove unnecessary dynobj test.
- * elf32-i386 (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead
- of INFO.
- (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses,
- and optimize.
- (elf_i386_relocate_section): Likewise.
- (elf_i386_gc_sweep_hook): Simplify dyn reloc removal. Localize vars.
- * elf32-s390.c (elf_s390_gc_sweep_hook): Likewise.
- * elf32-sh.c (sh_elf_gc_sweep_hook): Likewise.
- * elf64-s390.c (elf_s390_gc_sweep_hook): Likewise.
- * elf64-x86-64.c (elf64_x86_64_gc_sweep_hook): Likewise.
- * elf32-sparc.c (elf32_sparc_gc_sweep_hook): Likewise. Remove
- local_dynrel for section too. Don't touch HIPLT22, LOPLT10, PCPLT32
- or PCPLT10 relocs. Don't subtract twice on PLT32 relocs.
- Formatting.
-
- * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define.
- (ppc64_elf_check_relocs): Use it. Correct comment. Move SEC_ALLOC
- test.
- (ppc64_elf_adjust_dynamic_symbol): Use ELIMINATE_COPY_RELOCS.
- (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO.
- (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses,
- and optimize. Use ELIMINATE_COPY_RELOCS.
- (ppc64_elf_relocate_section): Likewise.
-
- * elf32-ppc.c (struct ppc_elf_dyn_relocs): Add pc_count field.
- (ppc_elf_copy_indirect_symbol): Copy pc_count field.
- (ELIMINATE_COPY_RELOCS): Define.
- (ppc_elf_adjust_dynamic_symbol): Convert copy relocs to dynamic.
- (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Pass SHARED instead of INFO.
- (MUST_BE_DYN_RELOC): Define.
- (allocate_dynrelocs): Adjust WILL_CALL_FINISH_DYNAMIC_SYMBOL uses,
- and optimize. Trim dyn_relocs.
- (ppc_elf_check_relocs): Don't generate dyn_relocs when we know they'll
- not be used. Do generate dyn_relocs for copy reloc avoidance. Keep
- track of pc_rel dyn relocs.
- (ppc_elf_relocate_section): Remove "will_become_local". Adjust
- WILL_CALL_FINISH_DYNAMIC_SYMBOL use. Trim dyn relocs as per
- allocate_dynrelocs. Don't recalculate "sec".
-
-2003-02-18 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Remove unnecessary test.
- * elf64-ppc.c (ppc64_elf_tls_optimize): Decrement tlsld_got.refcount
- on invalid LD relocs.
- (allocate_dynrelocs): Invalid LD relocs don't use tlsld_got entry.
- (ppc64_elf_relocate_section): Unify new handling of LD relocs and
- tlsld_got entry. Use IS_PPC64_TLS_RELOC.
-
- * elf32-ppc.h: New file.
- * elf32-ppc.c: Include elf32-ppc.h.
- (NOP, CROR_151515, CROR_313131, TP_OFFSET, DTP_OFFSET): Define.
- (struct ppc_elf_link_hash_entry): Rename "root" to "elf". Adjust uses.
- Add "tls_mask" field.
- (TLS_GD, TLS_LD, TLS_TPREL, TLS_DTPREL, TLS_TLS, TLS_TPRELGD): Define.
- (struct ppc_elf_link_hash_table): Rename "root" to "elf". Adjust uses.
- Add got, relgot, plt, relplt, dynbss, relbss, dynsbss, relsbss,
- sdata, sdata2, tls_sec, tls_get_addr, tlsld_got fields.
- Make use of htab shortcuts throughout file.
- (ppc_elf_link_hash_newfunc): Init tls_mask field.
- (ppc_elf_link_hash_table_create): Init new fields.
- (ppc_elf_copy_indirect_symbol): Copy tls_mask.
- (ppc_elf_howto_raw): Add tls relocs.
- (ppc_elf_reloc_type_lookup): Handle them.
- (ppc_elf_unhandled_reloc): New function.
- (ppc_elf_create_got): Stash got section pointer in hash table,
- return status. Make .rela.got too.
- (ppc_elf_create_dynamic_sections): Stash section pointers in htab.
- (ppc_elf_adjust_dynamic_symbol): Only set up copy relocs when
- NON_GOT_REF set. Don't allocate space in .plt here..
- (allocate_dynrelocs): ..do so here instead, properly ref-counting and
- not allocating plt entries unnecessarily. Allocate got entries here.
- (WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define.
- (ppc_elf_size_dynamic_sections): Allocate local got entries. Pass
- "info" during allocate_dynrelocs hash traversal. Use htab section
- shortcuts rather than searching for named sections. Get rid of
- "plt" and "strip" booleans.
- (update_local_sym_info, bad_shared_reloc): New functions.
- (ppc_elf_check_relocs): Handle TLS relocs. Move .rela.got creation to
- ppc_elf_create_got. Don't mark got or plt reloc syms dynamic, do so
- in allocate_dynreloc. Use update_local_sym_info and bad_shared_reloc.
- Disallow R_PPC_EMB_RELSDA, R_PPC_EMB_NADDR32, R_PPC_EMB_NADDR16,
- R_PPC_EMB_NADDR16_LO, R_PPC_EMB_NADDR16_HI and R_PPC_EMB_NADDR16_HA
- in shared libs. R_PPC_PLTREL32 is a plt reloc too. Refcount all
- relocs that might use a plt entry. Set NON_GOT_REF too.
- Enumerate all do-nothing relocs.
- (ppc_elf_gc_sweep_hook): Simplify removal of dynrelocs. Handle
- tls relocs and all plt relocs.
- (ppc_elf_tls_setup, ppc_elf_tls_optimize): New functions.
- (ppc_elf_finish_dynamic_symbol): Don't build got entries here.
- (ppc_elf_finish_dynamic_sections): Rewrite tag code using htab
- shortcuts.
- (ppc_elf_relocate_section): Tidy. Handle TLS relocs. Use
- bfd_elf_local_sym_name. Simplify unresolved reloc code. Build got
- entries and got relocs here. Warn on non-zero got reloc addend.
- Split out branch taken/not taken reloc code into a separate switch
- and correct offset calculation. Allow BRTAKEN/BRNTAKEN dynamic relocs.
- Split out HA reloc adjustments to separate switch statement. Don't
- warn on reloc overflow if we've already warned about undefined.
- Don't rebuild sym name when reporting errors. Report all possible
- errors from _bfd_final_link_relocate.
- (bfd_elf32_bfd_final_link): Don't define.
-
-2003-02-18 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_relocate_section): Don't init "r". Don't
- rebuild sym name when reporting errors.
-
-2003-02-17 Nick Clifton <nickc@redhat.com>
-
- * elflink.h (elf_link_output_extsym): Only check
- allow_shlib_undefined for shared libraries.
- * elf32-i386.c (elf_i386_relocate_section): Remove bogus check
- of allow_shlib_undefined.
- * elf32-cris.c (cris_elf_relocate_section): Likewise.
- * elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
- * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
- * elf32-s390.c (elf_s390_relocate_section): Likewise.
- * elf32-sh.c (sh_elf_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf32-vax.c (elf_vax_relocate_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
- * elf64-hppa.c (elf64_hppa_relocate_section): Likewise.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
- * elf64-s390.c (elf_s390_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
- * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
- * elfxx-mips.c (_bfd_mips_elf_relocate_section): Likewise.
-
-2003-02-17 Nick Clifton <nickc@redhat.com>
-
- * elf.c (SEGMENT_AFTER_SEGMENT): Add third parameter - the
- address field to use in the comparison.
- (SEGMENT_OVERLAPS): Check that LMAs overlap as well.
-
-2003-02-14 Bob Wilson <bob.wilson@acm.org>
-
- * elfcore.h (elf_core_file_p): Compare alternate machine codes for ELF
- backends when checking if the generic ELF target should be used.
-
- * syms.c (_bfd_stab_section_find_nearest_line): For line number stabs
- outside of functions, treat values as absolute addresses.
-
- * bfd.c: Change embedded documentation to use consistent indentation
- and to split up long lines. Change informal style of description
- for functions lacking real documentation.
- * coffcode.h: Break up long lines in embedded documentation.
- * format.c: Likewise.
- * targets.c: Likewise.
- * libcoff.h: Regenerate.
- * bfd-in2.h: Regenerate.
-
-2003-02-14 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_link_hash_table_create): Init tls_get_addr.
- (ppc64_elf_copy_indirect_symbol): Merge tls_mask too.
- (ppc64_elf_gc_sweep_hook): Simplify removal of dyn_relocs.
- (allocate_dynrelocs): Don't treat undefined and undefweak specially.
- (ppc_size_one_stub): Fix warning, and tighten plt entry check.
- (group_sections): Don't share a stub section if stubs are for a large
- section. Adjust comment.
- (ppc64_elf_size_stubs): Roughly double the size left for stubs if
- !stubs_always_before_branch.
- (ppc64_elf_relocate_section): Initialize tlsld GOT entry once. Don't
- treat undefined and undefweak specially when processing dyn relocs.
-
-2003-02-13 Jakub Jelinek <jakub@redhat.com>
-
- * elflink.h (elf_link_add_object_symbols): Handle .symver x, x@FOO.
-
-2003-02-13 Nick Clifton <nickc@redhat.com>
-
- * elf32-arm.h (elf32_thumb_to_arm_stub): Include section VMAs
- in computation of offset to insert into BL instruction.
-
-2003-02-11 Uwe Stieber <uwe@wwws.de>
-
- * config.bfd: Add support for kaOS as cross build target system.
-
-2003-02-11 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_check_relocs): Match versioned
- .__tls_get_addr too.
- (ppc64_elf_tls_setup): Ensure cached tls_get_addr is not indirect.
-
-2003-02-10 Kaz kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (elf_sh_dyn_relocs): Add tls_tpoff32 field.
- (elf_sh_link_hash_entry): Remove tls_tpoff32 field.
- (sh_elf_link_hash_newfunc): Remove the initialization of
- tls_tpoff32 field.
- (allocate_dynrelocs): Keep dyn_relocs if it includes the entry
- for which tls_tpoff32 flag is set.
- (sh_elf_relocate_section): Covert to LE only if the dyn_relocs
- of the symbol includes the entry matched with the input_section
- and having tls_tpoff32 flag on. When linking statically, set
- symbol index of R_SH_TLS_TPOFF32 relocation to zero if the symbol
- is defined in this executable.
- (sh_elf_check_relocs): Set tls_tpoff32 flag appropriately.
-
-2003-02-10 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-s390.c (elf_s390_size_dynamic_sections): Set relocs to TRUE
- even if there is just non-empty .rela.plt.
-
-2003-02-10 Nick Clifton <nickc@redhat.com>
-
- * archures.c (bfd_mach_arm_ep9312): Define.
- * bfd-in2.h: Regenerate.
- * cpu-arm.c (processors[]): Add ep9312.
- (bfd_arm_arch): Add ep9312.
- * elf32-arm.h (elf32_arm_merge_private_data): Update error
- messages and add test for Maverick floating point support.
- (elf32_arm_print_private_bfd_data): Handle
- EF_ARM_MAVERICK_FLOAT flag.
- (elf32_arm_object_p): New function.
- (elf_backend_object_p): Define.
-
-2003-02-10 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c: Rename assorted occurrences of tls_type and similar
- variables, structure fields or function params to tls_mask or
- similar to better reflect usage.
- (struct got_entry): Comment.
- (struct ppc_link_hash_entry): Expand comment, and renumber TLS_*.
- (get_tls_mask): Rename from get_tls_type.
-
-2003-02-09 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (TLS_GD_LD): Don't define..
- (TLS_GD): ..define this instead and update all uses.
- (TLS_TPRELGD): Define.
- (ppc64_elf_link_hash_table_create): Tweak initialization of
- init_refcount and init_offset.
- (ppc64_elf_check_relocs): Add one extra element to t_symndx array.
- Mark second slot of GD or LD toc entries.
- (get_tls_type): Return an int. Distinguish toc GD and LD entries
- from other tls types.
- (ppc64_elf_tls_setup): New function, split out from..
- (ppc64_elf_tls_optimize): ..here. Don't optimize when symbols are
- defined in a dynamic object. Fix LD optimization. Don't set TLS_TPREL
- on GD->IE optimization, use TLS_TPRELGD instead. Use get_tls_type
- return value to properly decide whether toc GD and LD entries can
- optimize away __tls_get_addr call. Check next reloc after DTPMOD64
- to determine GD or LD rather than looking at TLS_LD flag. Don't
- attempt to adjust got entry tls_type here..
- (allocate_dynrelocs): ..instead, adjust got entry tls_type here, and
- look for possible merges.
- (ppc64_elf_size_dynamic_sections): Adjust local got entries for
- optimization.
- (ppc64_elf_size_stubs): Tweak __tls_get_addr fudge.
- (ppc64_elf_relocate_section): Rename some vars to better reflect usage.
- Make use of return value from get_tls_type to properly detect GD and
- LD optimizations. Split tlsld/gd hi/ha from lo/ds case. Don't
- handle tls_get_addr removal when looking at REL24 relocs, do it when
- looking at the previous reloc. Check reloc after DTPMOD64 to determine
- GD or LD.
- * elf64-ppc.h (ppc64_elf_tls_setup): Declare.
-
-2003-02-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-hppa.c (group_sections): Don't share a stub section if
- stubs are for a large section.
-
- * elf32-hppa.c (elf32_hppa_size_stubs): Double the size left for
- stubs if !stubs_always_before_branch.
-
-2003-02-07 Nick Clifton <nickc@redhat.com>
-
- * elf.c (swap_out_syms): Generate an error message if an
- equivalent output section cannot be found for a symbol.
-
-2003-02-07 Jakub Jelinek <jakub@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_relax_section): Don't crash if
- local_got_entries is NULL.
-
-2003-02-06 Andreas Schwab <schwab@suse.de>
-
- * elf-eh-frame.c (get_DW_EH_PE_signed): Define.
- (read_value): Add parameter is_signed, use signed extraction if
- the value is signed.
- (_bfd_elf_write_section_eh_frame): Pass signed flag of the
- encoding to read_value.
-
-2003-02-06 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy got and
- plt info when called to transfer weak sym info.
-
-2003-02-05 Alan Modra <amodra@bigpond.net.au>
-
- * reloc.c: Add PPC and PPC64 TLS relocs.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Regenerate.
- * elf64-ppc.c (TP_OFFSET, DTP_OFFSET): Declare.
- (ppc64_elf_howto_raw): Add TLS howto's. Adjust R_PPC64_NONE to be
- against a 32 bit field.
- (ppc64_elf_reloc_type_lookup): Handle TLS relocs.
- (_ppc64_elf_section_data): Add t_symndx and comments.
- (ppc64_elf_section_data): Use elf_section_data macro.
- (ppc64_elf_new_section_hook): American spelling.
- (struct got_entry, struct plt_entry): New.
- (MUST_BE_DYN_RELOC): Rename from IS_ABSOLUTE_RELOC.
- (struct ppc_stub_hash_entry): Add "addend" field.
- (struct ppc_link_hash_entry): Add "tls_type".
- (TLS_TLS, TLS_GD_LD, TLS_LD, TLS_TPREL, TLS_DTPREL,
- TLS_EXPLICIT): Define.
- (struct ppc_link_hash_table): Add tls_sec, tls_get_addr, tlsld_got.
- (link_hash_newfunc): Init new fields.
- (ppc64_elf_link_hash_table_create): Likewise. Set init_refcount and
- init_offset to NULL.
- (ppc64_elf_copy_indirect_symbol): Copy got and plt info. Don't call
- _bfd_elf_link_hash_copy_indirect, rather insert relevant code from
- there.
- (update_local_sym_info, update_plt_info): New functions.
- (ppc64_elf_check_relocs): Use them. Handle TLS relocs. Adjust GOT
- handling to use got.glist rather than got.refcount. Likewise for PLT.
- (ppc64_elf_gc_sweep_hook): Handle TLS relocs, new GOT and PLT lists.
- (func_desc_adjust): Adjust for new PLT list.
- (ppc64_elf_adjust_dynamic_symbol): Likewise.
- (get_sym_h, get_tls_type): New functions.
- (ppc64_elf_edit_opd): Remove unused variable. Use get_sym_h.
- (ppc64_elf_tls_optimize): New function.
- (allocate_dynrelocs): Adjust for new PLT and GOT lists. Allocate
- TLS relocs.
- (ppc64_elf_size_dynamic_sections): Likewise.
- (ppc_type_of_stub): Adjust for new PLT list.
- (ppc_build_one_stub): Likewise.
- (ppc64_elf_size_stubs): Likewise. Use get_sym_h. Treat __tls_get_addr
- calls specially.
- (ppc64_elf_relocate_section): Adjust for new GOT and PLT lists. Handle
- TLS relocs. Report local syms using bfd_elf_local_sym_name. Don't
- init GOT entries that have a reloc. Generate GOT relocs here..
- (ppc64_elf_finish_dynamic_symbol): ..not here. Adjust for PLT list.
- * elf64-ppc.h (ppc64_elf_tls_optimize): Declare.
-
-2003-02-04 Andreas Schwab <schwab@suse.de>
-
- * elf32-m68k.c (elf_m68k_hash_entry): Define.
- (elf_m68k_link_hash_traverse): Remove.
- (elf_m68k_link_hash_newfunc): Use struct bfd_hash_entry and
- elf_m68k_hash_entry instead of struct elf_m68k_link_hash_entry to
- reduce casting.
- (elf_m68k_check_relocs): Use elf_m68k_hash_entry instead of
- casting.
- (elf_m68k_size_dynamic_sections): Use elf_link_hash_traverse
- instead of elf_m68k_link_hash_traverse.
- (elf_m68k_discard_copies): Change first parameter to pointer to
- struct elf_link_hash_entry and use elf_m68k_hash_entry when struct
- elf_m68k_link_hash_entry is needed.
-
-2003-02-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct got_entry, struct plt_entry): Forward declare.
- (struct elf_link_hash_entry): Add "glist" and "plist" fields to
- "got" union, and declare as gotplt_union. Use gotplt_uinion for
- "plt" field.
- (struct elf_link_hash_table): Make "init_refcount" a gotplt_union.
- Add "init_offset" field.
- (struct elf_obj_tdata <local_got>): Add "struct got_entry **" to union.
- (elf_local_got_ents): Declare.
- * elf.c (_bfd_elf_link_hash_newfunc): Adjust initialization of "got"
- and "plt".
- (_bfd_elf_link_hash_hide_symbol): Use "init_offset".
- (_bfd_elf_link_hash_table_init): Set "init_offset".
- * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set init_refcount
- from init_offset.
- (elf_adjust_dynamic_symbol): Set plt and got offsets using init_offset.
-
- * elf.c (bfd_elf_local_sym_name): Split out from..
- (group_signature): ..here.
- * elf-bfd.h (bfd_elf_local_sym_name): Declare.
-
-2003-02-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (enum elf_link_info_type): Remove.
- (struct bfd_elf_section_data): Move sec_info_type, use_rela_p fields
- to struct sec. Remove linkonce_p field.
- (elf_linkonce_p): Delete.
- (elf_discarded_section): Update for sec_info_type change.
- * section.c (struct sec): Add sec_info_type, use_rela_p, has_tls_reloc,
- flag11, flag12, flag13, flag14, flag15, flag16, flag20, flag24.
- (ELF_INFO_TYPE_NONE): Define.
- (ELF_INFO_TYPE_STABS): Define.
- (ELF_INFO_TYPE_MERGE): Define.
- (ELF_INFO_TYPE_EH_FRAME): Define.
- (ELF_INFO_TYPE_JUST_SYMS): Define.
- (STD_SECTION): Update struct sec initializer.
- * ecoff.c (bfd_debug_section): Likewise.
- * elf.c: Likewise. Update occurrences of sec_info_type and use_rela_p.
- * elflink.h: Likewise.
- * elf-eh-frame.c: Likewise.
- * elf64-alpha.c: Likewise.
- * elfxx-ia64.c: Likewise.
- * elfxx-mips.c: Likewise.
- * bfd-in2.h: Regenerate.
-
- * elf32-sparc.c (sec_do_relax): Use elf_section_data macro rather than
- referring to used_by_bfd.
- * elf64-sparc.c (sec_do_relax): Likewise.
- * elf64-mmix.c (mmix_elf_section_data): Likewise.
- * elfxx-mips.c (mips_elf_section_data): Likewise.
- * ieee.c (ieee_slurp_section_data): Use ieee_per_section macro.
- (ieee_get_section_contents): Likewise.
- (ieee_new_section_hook): Formatting.
- (ieee_canonicalize_reloc): Remove commented out code.
- * mmo.c (mmo_section_data): Define. Use throughout file.
- * oasys.c (oasys_get_section_contents): Use oasys_per_section macro.
-
-2003-01-31 Graydon Hoare <graydon@redhat.com>
-
- * Makefile.am (opncls.lo): Add dependency upon libiberty.h.
- * Makefile.in: Regenerate.
- * opncls.c (calc_crc32, get_debug_link_info,
- seperate_debug_file_exists, find_seperate_debug_file): New
- internal functions.
- (bfd_follow_gnu_debuglink): New function. Follow the pointer
- contained inside a .gnu_debuglink section.
- * bfd-in2.h: Regenerate.
-
-2003-01-29 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (mips_elf_got_entry_hash): Don't dereference
- entry->abfd when it's NULL.
-
-2003-01-27 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (mips_elf_create_dynamic_relocation): Handle
- _bfd_elf_section_offset returning -2 the same way as -1.
-
- * elfxx-mips.c (mips_elf_multi_got): New function.
- (struct mips_got_entry): Make symndx and gotidx signed. Moved
- addend into union along with address and link hash entry.
- (struct mips_got_info): Added bfd2got and next.
- (struct mips_elf_hash_sort_data): Added max_unref_got_dynindx.
- (mips_elf_got_section, mips_elf_create_got_section): Use
- SEC_EXCLUDE bit to tell whether we really need the got
- section. Take boolean arguments to disregard an excluded
- section, or to create it as excluded. Adjust all callers.
- Use mips_elf_got_section all over.
- (mips_elf_local_got_index, mips_elf_got_page,
- mips_elf_got16_entry): Take input bfd as argument, and pass it
- on to mips_elf_create_local_got_entry.
- (mips_elf_global_got_index, mips_elf_create_local_got_entry):
- Take input bfd as argument, and manage entries in the
- appropriate GOT.
- (mips_elf_got_offset_from_index): Take input bfd as argument,
- and use it to adjust the GP offset of the bfd.
- (mips_elf_sort_hash_table, mips_elf_sort_hash_table_f): Move
- unreferenced GOT entries of global symbols to the end.
- (mips_elf_record_global_got_symbol): Take input bfd as
- argument. Add entries to the master GOT hash table.
- (struct mips_elf_bfd2got_hash): New.
- (struct mips_elf_got_per_bfd_arg): New.
- (struct mips_elf_set_global_got_offset_arg): New.
- (mips_elf_hash_bfd_vma, mips_elf_multi_got_entry_hash,
- mips_elf_multi_got_entry_eq, mips_elf_bfd2got_entry_hash,
- mips_elf_bfd2got_entry_eq, mips_elf_make_got_per_bfd,
- mips_elf_merge_gots, mips_elf_set_global_got_offset,
- mips_elf_resolve_final_got_entry,
- mips_elf_resolve_final_got_entries, mips_elf_adjust_gp,
- mips_elf_got_for_ibfd): New functions.
- (ELF_MIPS_GP_OFFSET): Don't depend on SGI_COMPAT.
- (MIPS_ELF_GOT_MAX_SIZE): New macro.
- (STUB_LW): Generate 64-bit stub regardless of SGI_COMPAT.
- (mips_elf_got_entry_hash): Take new fields into account. Use
- mips_elf_hash_bfd_vma.
- (mips_elf_got_entry_eq): Take new fields into account.
- (mips_elf_create_got_section): Initialize new fields.
- (mips_elf_calculate_relocation): Pass input_bfd to functions
- that now take it. Adjust gp for the input_bfd.
- (mips_elf_allocate_dynamic_relocation,
- mips_elf_create_dynamic_relocation,
- _bfd_mips_elf_create_dynamic_sections): Use...
- (mips_elf_rel_dyn_section): New function. Borrow code from...
- (_bfd_mips_elf_check_relocs): Pass input_bfd to functions that
- now take it. Create the got section if needed, even if
- excluded, before recording a global got symbol. Move some
- code to...
- (mips_elf_record_local_got_symbol): New fn.
- (_bfd_mips_elf_size_dynamic_sections): Disable combreloc.
- Compute multi-got global entries offsets. Move GOT code to...
- (_bfd_mips_elf_always_size_sections): Call mips_elf_multi_got
- if the GOT is too big.
- (_bfd_mips_elf_finish_dynamic_symbol): Set got entry of
- undefweak symbol to zero. Generate dynamic relocations for
- non-primary GOT entries for global symbols.
- (_bfd_mips_elf_finish_dynamic_sections): Handle multi-got
- case. Generate dynamic relocations for local got entries.
- Sort dynamic relocations on N64 too, using...
- (sort_dynamic_relocs_64): New fns.
- (_bfd_mips_elf_hide_symbol): Adjust multi-got counters.
- (_bfd_mips_elf_merge_private_bfd_data): Ignore EF_MIPS_XGOT.
-
-2003-01-27 Alexandre Oliva <aoliva@redhat.com>
-
- * bfd.c (struct _bfd): Added id field.
- * opncls.c (_bfd_id_counter): New static variable.
- (_bfd_new_bfd): Use it.
- * bfd-in2.h: Rebuilt.
-
-2003-01-25 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-sparc.c (bfd_elf32_new_section_hook): Define.
-
-2003-01-25 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-sparc.c (_bfd_sparc_elf_howto_table): Add TLS relocs.
- (elf32_sparc_rev32_howto): New variable.
- (sparc_reloc_map): Add TLS relocs.
- (elf32_sparc_reloc_type_lookup, elf32_sparc_info_to_howto):
- Handle REV32.
- (sparc_elf_hix22_reloc, sparc_elf_lox10_reloc, elf32_sparc_mkobject):
- New functions.
- (struct elf32_sparc_dyn_relocs, struct elf32_sparc_link_hash_entry,
- struct elf32_sparc_link_hash_table):
- New structures.
- (elf32_sparc_tdata, elf32_sparc_local_got_tls_type,
- elf32_sparc_hash_table): Define.
- (link_hash_newfunc, elf32_sparc_link_hash_table_create,
- create_got_section, elf32_sparc_create_dynamic_sections,
- elf32_sparc_copy_indirect_symbol, elf32_sparc_tls_transition): New
- functions.
- (elf32_sparc_check_relocs): Handle TLS relocs. Add dynamic reloc
- reference counting.
- (elf32_sparc_gc_sweep_hook): Likewise.
- (elf32_sparc_adjust_dynamic_symbol): Likewise.
- (elf32_sparc_size_dynamic_sections): Likewise.
- (elf32_sparc_relocate_section): Likewise.
- (allocate_dynrelocs, readonly_dynrelocs, dtpoff_base, tpoff):
- New functions.
- (elf32_sparc_object_p): Allocate backend private object data.
- (bfd_elf32_bfd_link_hash_table_create,
- elf_backend_copy_indirect_symbol, bfd_elf32_mkobject,
- elf_backend_can_refcount): Define.
- (elf_backend_create_dynamic_sections): Define to
- elf32_sparc_create_dynamic_sections.
- * reloc.c: Add SPARC TLS relocs.
- * bfd-in2.h, libbfd.h: Rebuilt.
- * elf64-sparc.c (sparc64_elf_howto_table): Add TLS relocs.
- (sparc_reloc_map): Likewise.
-
-2003-01-24 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * bfd-in2.h: Regenerate.
- * elf32-s390.c (elf_s390_mkobject, elf_s390_tls_transition,
- s390_tls_reloc, dtpoff_base, tpoff, invalid_tls_insn): New functions.
- (elf_howto_table): Add TLS relocs.
- (elf_s390_reloc_type_lookup): Likewise.
- (elf_s390_link_hash_entry): Add tls_type.
- (elf_s390_hash_entry, elf_s390_obj_tdata, elf_s390_local_got_tls_type):
- New macros.
- (elf_s390_link_hash_table): Add tls_ldm_got.
- (link_hash_newfunc): Initialize tls_type.
- (elf_s390_link_hash_table_create): Initialize refcount of tls_ldm_got.
- (elf_s390_copy_indirect_symbol): Copy tls_type information.
- (elf_s390_check_relocs): Support TLS relocs.
- (elf_s390_gc_sweep_hook): Likewise.
- (allocate_dynrelocs): Likewise.
- (elf_s390_size_dynamic_sections): Likewise.
- (elf_s390_relocate_section): Likewise.
- (elf_s390_finish_dynamic_symbol): Likewise.
- (bfd_elf32_mkobject): Define for TLS.
- * elf64-s390.c: Same changes as for elf32-s390.c.
- * libbfd.h: Regenerate.
- * reloc.c: Add s390 TLS relocations.
-
-2003-01-24 Charles Lepple <clepple@ghz.cc>
-
- * aclocal.m4: Fix name of --enable-install-libbfd switch.
-
-2003-01-23 Nick Clifton <nickc@redhat.com>
-
- * Add sh2e support:
- 2002-04-02 Elena Zannoni <ezannoni@redhat.com>
- * archures.c (bfd_mach_sh2e): Added.
- * bfd-in2.h: Rebuilt.
- * cpu-sh.c (arch_info_struct): Added SH2e.
- * elf32-sh.c (sh_elf_set_mach_from_flags): Handle EF_SH2E.
-
-2003-01-23 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct bfd_elf_section_data): Remove tdata. Change
- dynindx to an int. Rearrange for better packing.
- * elf.c (_bfd_elf_new_section_hook): Don't alloc if already done.
- * elf32-mips.c (bfd_elf32_new_section_hook): Define.
- * elf32-sh64.h: New. Split out from include/elf/sh.h.
- (struct _sh64_elf_section_data): New struct.
- (sh64_elf_section_data): Don't dereference sh64_info (was tdata).
- * elf32-sh64-com.c: Include elf32-sh64.h.
- * elf32-sh64.c: Likewise.
- (sh64_elf_new_section_hook): New function.
- (bfd_elf32_new_section_hook): Define.
- (sh64_elf_fake_sections): Adjust for sh64_elf_section_data change.
- (sh64_bfd_elf_copy_private_section_data): Likewise.
- (sh64_elf_final_write_processing): Likewise.
- * elf32-sparc.c (struct elf32_sparc_section_data): New.
- (elf32_sparc_new_section_hook): New function.
- (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete.
- (sec_do_relax): Define.
- (elf32_sparc_relax_section): Adjust to use sec_do_relax.
- (elf32_sparc_relocate_section): Likewise.
- * elf64-mips.c (bfd_elf64_new_section_hook): Define.
- * elf64-mmix.c (struct _mmix_elf_section_data): New.
- (mmix_elf_section_data): Define. Use throughout file.
- (mmix_elf_new_section_hook): New function.
- (bfd_elf64_new_section_hook): Define.
- * elf64-ppc.c (struct _ppc64_elf_section_data): New.
- (ppc64_elf_section_data): Define. Use throughout.
- (ppc64_elf_new_section_hook): New function.
- (bfd_elf64_new_section_hook): Define.
- * elf64-sparc.c (struct sparc64_elf_section_data): New.
- (sparc64_elf_new_section_hook): New function.
- (SET_SEC_DO_RELAX, SEC_DO_RELAX): Delete.
- (sec_do_relax): Define.
- (sparc64_elf_relax_section): Adjust to use sec_do_relax.
- (sparc64_elf_relocate_section): Likewise.
- (bfd_elf64_new_section_hook): Define.
- * elfn32-mips.c (bfd_elf32_new_section_hook): Define.
- * elfxx-mips.c (struct _mips_elf_section_data): New.
- (mips_elf_section_data): Define. Use throughout.
- (_bfd_mips_elf_new_section_hook): New function.
- (mips_elf_create_got_section): Don't alloc used_by_bfd.
- * elfxx-mips.h (_bfd_mips_elf_new_section_hook): Declare.
- * elfxx-target.h (bfd_elfNN_new_section_hook): Add #ifndef.
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2003-01-21 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (ALPHA_ELF_LINK_HASH_PLT_LOC): New.
- (struct alpha_elf_link_hash_entry): Add plt_old_section, plt_old_value.
- (elf64_alpha_adjust_dynamic_symbol): Set them.
- (elf64_alpha_size_plt_section_1): Reset them when plt entry removed.
- (elf64_alpha_relax_tls_get_addr): Handle LDM relocs. Frob the
- symbol index when relaxing LDM to TPREL.
- (elf64_alpha_relax_section): Likewise. Allow relaxation of GD
- relocs, even if the target isn't locally defined.
- (elf64_alpha_check_relocs): Frob LDM reloc symndx to zero.
- (elf64_alpha_relocate_section): Likewise. Force TP-relative
- relocs vs symndx 0 to the tp base.
-
-2003-01-21 Fabio Alemagna <falemagn@aros.org>
-
- * config.bfd: Handle i[3456]86-*-aros*.
-
-2003-01-21 Andreas Schwab <schwab@suse.de>
-
- * elf32-ppc.c (struct ppc_elf_dyn_relocs): Define.
- (struct ppc_elf_link_hash_entry): Define.
- (ppc_elf_hash_entry): New function.
- (struct ppc_elf_link_hash_table): Define.
- (ppc_elf_hash_table): New function.
- (ppc_elf_link_hash_newfunc): New function.
- (ppc_elf_link_hash_table_create): New function.
- (ppc_elf_copy_indirect_symbol): New function.
- (allocate_dynrelocs): New function.
- (readonly_dynrelocs): New function.
- (ppc_elf_size_dynamic_sections): Allocate space for dynamic
- relocs and determine DT_TEXTREL.
- (ppc_elf_check_relocs): Don't do that here, just count the
- dynamic relocs.
- (ppc_elf_gc_sweep_hook): Discard any dynamic relocs against the
- removed section.
- (bfd_elf32_bfd_link_hash_table_create): Define.
- (elf_backend_copy_indirect_symbol): Define.
-
-2003-01-21 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (alpha_dynamic_entries_for_reloc): GOTTPREL and
- TPREL also get a reloc if shared. Remove SREL support.
- (elf64_alpha_emit_dynrel): New.
- (elf64_alpha_relocate_section): Use it. Resolve dynamic TPREL
- and GOTTPREL relocs to local symbols against the tp base.
- (elf64_alpha_finish_dynamic_symbol): Use elf64_alpha_emit_dynrel.
-
- * elf64-alpha.c (elf64_alpha_relax_got_load): Decrement got
- use count before clobbering r_type.
- (elf64_alpha_relax_tls_get_addr): Don't use pos[1] if insn
- ordering would mean dataflow inspection is necessary.
-
-2003-01-20 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * coffcode.h (coff_set_flags): Added get/set arch hooks.
-
-2003-01-20 Fabio Alemagna <falemagn@aros.org>
-
- * elf32-sh.c: Treat elfNN_bed like other macros defined in
- elfxx-target.h and #undef it before #define'ing it.
- * elf32-i386.c: Likewise.
- * elf32-sh64.c: Likewise.
- * elf64-alpha.c: Likewise.
- * elf64-sh64.c: Likewise.
-
-2003-01-20 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * bfd-in2.h: Regenerate.
- * elf32-s390.c (elf_s390_adjust_gotplt): New prototype.
- (elf_howto_table): Rename R_390_GOTOFF to R_390_GOTOFF32. Add
- R_390_GOTOFF16, R_390_GOTOFF64, R_390_GOTPLT12, R_390_GOTPLT16,
- R_390_GOTPLT32, R_390_GOTPLT64, R_390_GOTPLTENT, R_390_PLTOFF16,
- R_390_PLTOFF32 and R_390_PLTOFF64.
- (elf_s390_reloc_type_lookup): Likewise.
- (struct elf_s390_link_hash_entry): Add gotplt_refcount to keep track
- of GOTPLT references to a function.
- (link_hash_newfunc): Initialize gotplt_refcount.
- (elf_s390_check_relocs): Move allocation of local_got_refcounts array
- and creation of the got section out of the main switch. Add support
- for the gotoff, gotplt and pltoff relocations.
- (elf_s390_gc_sweep_hook): Add reference counting for gotoff, gotplt
- and pltoff.
- (elf_s390_adjust_gotplt): New function.
- (elf_s390_adjust_dynamic_symbol): Adjust gotplt refcount for removed
- plt entries.
- (allocate_dynrelocs): Add comment.
- (elf_s390_relocate_section): Change r_type to unsigned. Add support
- for gotoff, gotplt and pltoff relocations.
- * elf64-s390.c: Same changes as for elf32-s390.c.
- * libbfd.h: Regenerate.
- * reloc.c: Add BFD_RELOC_390_GOTOFF64, BFD_RELOC_390_GOTPLT12,
- BFD_RELOC_390_GOTPLT16, BFD_RELOC_390_GOTPLT32, BFD_RELOC_390_GOTPLT64,
- BFD_RELOC_390_GOTPLTENT, BFD_RELOC_390_PLTOFF16, BFD_RELOC_390_PLTOFF32
- and BFD_RELOC_390_PLTOFF64.
-
-2003-01-18 Jakub Jelinek <jakub@redhat.com>
-
- * elfxx-ia64.c (elfNN_ia64_relocate_section): Handle
- R_IA64_TPREL64[LM]SB against non-global symbol properly.
-
-2003-01-16 Jakub Jelinek <jakub@redhat.com>
-
- * elfxx-ia64.c (struct elfNN_ia64_link_hash_table): Add
- self_dtpmod_done and self_dtpmod_offset.
- (allocate_global_data_got): Only use one got entry for all
- dtpmod relocs against local symbols.
- (allocate_dynrel_entries): Only need .rela.got entry for
- dtpmod against global symbol.
- (elfNN_ia64_size_dynamic_sections): Initialize self_dtpmod_offset.
- Reserve space in .rela.got for the local dtpmod entry.
- (set_got_entry): Initialize the common local dtpmod .got entry.
- (elfNN_ia64_relocate_section): Handle R_IA_64_DTPREL64LSB
- and R_IA_64_DTPREL64MSB.
-
-2003-01-16 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c: Include elf/ppc64.h rather than elf/ppc.h.
- (R_PPC_*): Rename all occurrences to R_PPC64_*.
- (R_PPC64_ADDR30): Rename all occurrences to R_PPC64_REL30.
- (enum elf_ppc_reloc_type): Ditto to enum elf_ppc64_reloc_type.
- (ppc64_elf_gc_sweep_hook): Handle R_PPC64_REL30 along with other
- relative relocs, not with absolute ones.
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * po/SRC-POTFILES.in: Regenerate.
-
-2003-01-15 Andreas Schwab <schwab@suse.de>
-
- * elf32-ppc.c (ppc_elf_check_relocs): Don't set DF_TEXTREL for a
- relocation against a non-allocated readonly section.
-
-2003-01-10 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Adjust addend for GOT16_HA.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. PLTGOT16_HA too.
-
-2002-01-08 Klee Dienes <kdienes@apple.com>
-
- * Makefile.am (ALL_MACHINES): Use cpu-msp430.lo, not cpu-msp430.c.
- (BFD32_BACKENDS): Use elf32-msp430.lo, not elf32-msp430.c.
- * Makefile.in: Regenerate.
-
-2003-01-08 Alexandre Oliva <aoliva@redhat.com>
-
- * elfn32-mips.c (prev_reloc_section): New.
- (GET_RELOC_ADDEND): Use it. Parenthesize macro arguments.
- (SET_RELOC_ADDEND): Parenthesize macro argument.
-
-2003-01-07 John David Anglin <dave.anglin@nrc.gc.ca>
-
- * elf32-hppa.c (final_link_relocate): For all DP relative relocations,
- adjust addil instructions if the symbol has no section.
-
-2003-01-07 DJ Delorie <dj@redhat.com>
-
- * elf32-xstormy16.c (xstormy16_elf_howto_table): Make REL_12 not
- partial_inplace.
-
-2003-01-07 Andreas Schwab <schwab@suse.de>
-
- * elf32-m68k.c (elf_m68k_check_relocs): Don't set DF_TEXTREL for
- PC relative relocations.
- (elf_m68k_discard_copies): Set it here instead.
-
-2002-01-02 Ben Elliston <bje@redhat.com>
- Jeff Johnston <jjohnstn@redhat.com>
-
- * Makefile.am (ALL_MACHINES): Add cpu-iq2000.lo.
- (ALL_MACHINES_CFILES): Add cpu-iq2000.c.
- (BFD32_BACKENDS): Add elf32-iq2000.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-iq2000.c.
- (cpu-iq2000.lo): New target.
- * Makefile.in: Regenerate.
- * config.bfd: Handle iq2000-*-elf.
- * archures.c (bfd_architecture): Add bfd_{arch,mach}_iq2000.
- (bfd_archures_list): Add bfd_iq2000_arch.
- * configure.in: Handle bfd_elf32_iq2000_vec.
- * configure: Regenerate.
- * reloc.c: Add BFD_RELOC_IQ2000_OFFSET_16, BFD_RELOC_IQ2000_OFFSET_21,
- and BFD_RELOC_IQ2000_UHI16.
- * targets.c (bfd_elf32_iq2000_vec): Declare.
- (bfd_target_vector): Add bfd_elf32_iq2000_vec.
- * elf.c (prep_headers): Set e_machine to EM_IQ2000.
- * cpu-iq2000.c: New file.
- * elf32-iq2000.c: Likewise.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Likewise.
-
-2003-01-02 Richard Sandiford <rsandifo@redhat.com>
-
- * elfxx-mips.c: Include libiberty.h.
- (elf_mips_isa, _bfd_mips_elf_mach_extends_p): Remove.
- (mips_set_isa_flags): New function, split out from...
- (_bfd_mips_elf_final_write_processing): ...here. Only call
- mips_set_isa_flags if the EF_MIPS_MACH bits are clear.
- (mips_mach_extensions): New array.
- (mips_32bit_flags_p): New function.
- (_bfd_mips_elf_merge_private_bfd_data): Rework architecture checks.
- Use mips_32bit_flags_p to check if one binary is 32-bit and the
- other is 64-bit. When adopting IBFD's architecture, adopt the
- bfd_mach as well as the flags.
-
-2003-01-02 Nick Kelsey <nickk@ubicom.com>
-
- * elf32-ip2k.c: Re-work of linker relaxation code for the ip2k to
- fix internal errors, fix bad code generation, fix incorrect stabs
- information, and improve ability to eliminate redundant page
- instructions. Added code to ip2k_final_link_relocate to self-verify
- the linker relaxation. Fix formatting problems.
-
-2002-12-30 Chris Demetriou <cgd@broadcom.com>
-
- * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mipsisa32r2 case.
- * archures.c (bfd_mach_mipsisa32r2): New define.
- * bfd-in2.h: Regenerate.
- * cpu-mips.c (I_mipsisa32r2): New enum value.
- (arch_info_struct): Add entry for I_mipsisa32r2.
- * elfxx-mips.c (elf_mips_isa, _bfd_elf_mips_mach)
- (_bfd_mips_elf_print_private_bfd_data): Handle E_MIPS_ARCH_32R2.
- (_bfd_mips_elf_final_write_processing): Add
- bfd_mach_mipsisa32r2 case.
- (_bfd_mips_elf_merge_private_bfd_data): Handle merging of
- binaries marked as using MIPS32 Release 2.
-
-2002-12-30 Dmitry Diky <diwil@mail.ru>
-
- * Makefile.am: Add msp430 target.
- * configure.in: Likewise.
- * Makefile.in: Regenerate.
- * configure: Regenerate.
- * archures.c: Add msp430 architecture vector.
- * config.bfd: Likewise.
- * reloc.c: Add msp430 relocs.
- * targets.c: Add msp320 target.
- * cpu-msp430.c: New file: msp430 cpu detection.
- * elf32-msp430.c: New file: msp430 reloc processing.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
-
-2002-12-28 Jakub Jelinek <jakub@redhat.com>
-
- * elf.c (elf_sort_sections): Don't reorder .tbss.
- (assign_file_positions_for_segments): Only adjust off/voff
- for increased alignment in PT_LOAD or PT_NOTE segment,
- but adjust p_filesz for .tbss too. in PT_LOAD consider
- .tbss to have zero memory size.
- (copy_private_bfd_data) [SECTION_SIZE]: Define.
- [IS_CONTAINED_BY_VMA, IS_CONTAINED_BY_LMA]: Use it.
- [INCLUDE_SECTION_IN_SEGMENT]: Only put SHF_TLS sections
- into PT_TLS segment. Never put SHF_TLS sections in
- segments other than PT_TLS or PT_LOAD.
-
- * elf64-alpha.c (elf64_alpha_finish_dynamic_sections): Clear .plt
- sh_entsize.
-
-2002-12-23 DJ Delorie <dj@redhat.com>
-
- * coff64-rs6000.c (xcoff64_ppc_relocate_section): Fix logic reversal.
-
-2002-12-23 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_output_extsym): Heed strip_discarded.
-
-2002-12-23 Nick Clifton <nickc@redhat.com>
-
- * archures.c (bfd_arch_get_compatible): Add third parameter
- 'accept_unknowns'. Only accept unknown format BFDs if
- accept_unknowns is true, or if the format is "binary".
- * bfd-in2.h: Regenerate.
-
-2002-12-21 Nick Clifton <nickc@redhat.com>
-
- * coff-arm.c (coff_arm_relocate_section): Disable WINCE workaround
- that subtracted 8 from pc relative relocations.
-
-2002-12-20 Kazu Hirata <kazu@cs.umass.edu>
-
- * coff-h8300.c: Fix comment typos.
- * coffcode.h: Likewise.
- * cpu-cris.c: Likewise.
- * elf32-vax.c: Likewise.
- * genlink.h: Likewise.
- * linker.c: Likewise.
- * som.c: Likewise.
- * tekhex.c: Likewise.
- * vms-misc.c: Likewise.
-
-2002-12-20 DJ Delorie <dj@redhat.com>
-
- * reloc.c: Add BFD_RELOC_XSTORMY16_12.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Regenerate.
- * elf32-xstormy16.c (xstormy16_elf_howto): Add R_XSTORMY16_12.
- (xstormy16_reloc_map): Add R_XSTORMY16_12.
-
-2002-12-19 Kazu Hirata <kazu@cs.umass.edu>
-
- * doc/bfdint.texi: Fix typos.
-
-2002-12-20 Paul Eggert <eggert@twinsun.com>
-
- Port to POSIX 1003.1-2001.
- * acinclude.m4 (AM_INSTALL_LIBBFD): Do not rely on "test -o".
- * configure.in (build-warnings): Likewise.
- (Horrible hacks to build DLLs on Windows): Do not rely on "tail -1".
+ * acinclude.m4: Quote names of macros to be defined by AC_DEFUN
+ throughout.
* aclocal.m4: Regenerate.
- * config.in: Regenerate.
* configure: Regenerate.
-2002-12-19 Alan Modra <amodra@bigpond.net.au>
-
- * coff-h8300.c: Include libiberty.h.
- (h8300_reloc16_extra_cases): Check the hash table creator before
- referencing h8300 specific fields. Stash the hash table pointer
- in a local var. Comment typo fixes.
- (h8300_bfd_link_add_symbols): Likewise.
-
- * reloc.c (struct reloc_howto_struct): Revise src_mask and
- dst_mask comments.
- * bfd-in2.h: Regenerate.
-
-2002-12-18 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Reorganize dynamic reloc
- code a little. Comment on dynamic relocs against section symbols.
-
-2002-12-17 Roger Sayle <roger@eyesopen.com>
-
- * configure.host (ia64-*-hpux*): Support 64 bit targets using
- the HP compiler's "long long".
-
-2002-12-16 Andrew MacLeod <amacleod@redhat.com>
-
- * elf32-xstormy16.c (xstormy16_elf_howto): Add R_XSTORMY16_LO16
- and R_XSTORMY16_HI16) howto entries.
- (xstormy16_reloc_map): Map R_XSTORMY16_{LO,HI}16 to BFD_RELOC_{LO,HI}16.
- (xstormy16_info_to_howto_rela): Use R_XSTORMY16_GNU_VTINHERIT to
- determine the start of the second reloc table.
-
-2002-12-16 Nathan Tallent <eraxxon@alumni.rice.edu>
-
- * ecofflink.c: Fix the reading of the debugging information
- of Tru64/Alpha binaries that are produced by recent Compaq
- compilers.
- (mk_fdrtab): Fix error in creating the FDR (file descriptor)
- table.
- (lookup_line): Because of the strange information sometimes
- generated by Compaq's recent compilers, change how the FDR
- table is searched so that PDRs (procedure descriptors) are
- correctly found. Note that this change is really more of a hack;
- however, I have included extensive documentation as to why
- this is the best solution short of an extensive rewrite or
- another hack.
- (fdrtab_lookup): Add comments to explain the algorithm.
-
-2002-12-12 Alexandre Oliva <aoliva@redhat.com>
-
- * elf-m10300.c (elf32_mn10300_link_hash_newfunc): Reorder
- initializers to match struct declaration.
-
-2002-12-12 Alan Modra <amodra@bigpond.net.au>
-
- * dwarf2.c (comp_unit_contains_address): Comment typo fix.
- * elf.c (get_program_header_size): Likewise.
- * elf32-m32r.c (m32r_elf_lo16_reloc): Likewise.
- (m32r_elf_generic_reloc): Likewise.
- * elf32-ppc.c (ppc_elf_howto_init): Likewise.
- * elflink.h (elf_bfd_discard_info): Likewise.
-
-2002-12-12 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-i386.c (elf_i386_finish_dynamic_sections): Add output_offset
- to DT_JMPREL. Use srelplt input section size for DT_PLTRELSZ and
- DT_RELSZ adjustment, not output section. Avoid writing tags when
- unchanged. Don't assume linker script is sane, adjust DT_REL too.
- * elf32-hppa.c (elf32_hppa_finish_dynamic_sections): Just use raw
- size of srelplt for DT_PLTRELSZ. Use srelplt input section size for
- DT_RELASZ adjustment, not output section. Avoid writing tags when
- unchanged. Adjust DT_RELA.
- * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Tweaks for better
- formatting. Avoid writing tags when unchanged. Adjust DT_RELA.
-
-2002-12-12 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (mips_elf_calculate_relocation): Don't divide
- addend by 4.
-
-2002-12-12 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (struct mips_got_entry): New.
- (struct mips_got_info): Added got_entries field.
- (mips_elf_got_entry_hash, mips_elf_got_entry_eq): New functions.
- (mips_elf_local_got_index, mips_elf_got_page,
- mips_elf_got16_entry): Re-implement in terms of new...
- (mips_elf_create_local_got_entry): Rewrite to use got_entries.
- Change return type.
- (mips_elf_highest): Warning clean-up.
- (mips_elf_create_got_section): Initialize got_entries.
- (_bfd_mips_elf_check_relocs): Use got_entries to estimate
- local got size.
- (_bfd_mips_elf_size_dynamic_sections): Do not account for
- GOT_PAGE entries, since we now reuse GOT16 entries.
-
-2002-12-10 Jason Thorpe <thorpej@wasabisystems.com>
-
- * aoutx.h (set_section_contents): Allow an otherwise unrepresentable
- read-only section that lies after .text and before .data to be
- written into the output file and included in a_text.
- (translate_to_native_sym_flags): If an otherwise unrepresentable
- section was merged with .text, convert its symbols to N_TEXT
- symbols.
- * libaout.h (aout_section_merge_with_text_p): New macro.
-
-2002-12-08 Alan Modra <amodra@bigpond.net.au>
-
- * bfd-in.h: Comment typo fix. Formatting.
- * bfd-in2.h: Regenerate.
- * coff64-rs6000.c (xcoff64_openr_next_archived_file): Warning fix.
- * elf32-m68hc12.c (m68hc12_elf_set_mach_from_flags): Prototype.
- * elf64-mmix.c (mmix_dump_bpo_gregs): Warning fix.
-
-2002-12-05 Richard Henderson <rth@redhat.com>
-
- * elfxx-ia64.c (elfNN_ia64_relax_section): Handle PCREL21BI.
- Only send PCREL21B though the plt. Fix installed reloc type.
- (elfNN_ia64_relocate_section): Give error for dynamic reloc
- against PCREL22 or PCREL64I; clean up error messages for
- branch relocs.
-
-2002-12-04 Kevin Buettner <kevinb@redhat.com>
-
- * elf64-mips.c (elf64_mips_grok_prstatus, elf64_mips_grok_psinfo):
- New functions.
- (elf_backend_grok_prstatus, elf_backend_grok_psinfo): Define.
-
-2002-12-04 David Mosberger <davidm@hpl.hp.com>
-
- * cpu-ia64-opc.c: Add operand constant "ar.csd".
-
-2002-12-04 H.J. Lu <hjl@gnu.org>
-
- * elfxx-ia64.c (get_local_sym_hash): Use section ID instead of
- BFD address when constructing local name.
-
-2002-12-04 Andreas Schwab <schwab@suse.de>
-
- * elf32-m68k.c (struct elf_m68k_link_hash_table): Add sym_sec
- member.
- (elf_m68k_link_hash_table_create): Initialize it.
- (elf_m68k_check_relocs): Handle symbols that are forced to be
- local due to visibility changes.
- (elf_m68k_adjust_dynamic_symbol): Likewise.
- (elf_m68k_size_dynamic_sections): Likewise.
- (elf_m68k_discard_copies): Likewise.
- (elf_m68k_relocate_section): Likewise.
-
-2002-12-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_edit_opd): Correct typo.
-
-2002-12-04 Alan Modra <amodra@bigpond.net.au>
-
- * srec.c (srec_write_symbols): Restore '$' prefix to address
- accidentally removed in 2002-04-04 change.
- (srec_get_symtab): Use 0 instead of `(long) FALSE'.
-
-2002-12-03 Nick Clifton <nickc@redhat.com>
-
- * elf32-ppc.c (apuinfo_list_init): New function.
- (apuinfo_list_add): New function: Add a value to the list.
- (apuinfo_list_length): New function: Return the number of
- values on the list.
- (apuinfo_list_element): New function: Return a value on the
- list.
- (apuinfo_list_finish): New function: Free the resources used
- by the list.
- (ppc_elf_begin_write_processing): New function. Scan the
- input bfds for apuinfo sections.
- (ppc_elf_write_section): New function: Delay the creation of
- the contents of an apuinfo section in an output bfd.
- (ppc_elf_final_write_processing): New function. Create the
- contents of an apuinfo section in an output bfd.
- (elf_backend_begin_write_processing): Define.
- (elf_backend_final_write_processing): Define.
- (elf_backend_write_section): Define.
-
-2002-12-03 Richard Henderson <rth@redhat.com>
-
- * cpu-ia64-opc.c (elf64_ia64_operands): Add ldxmov entry.
-
-2002-12-01 Stephane Carrez <stcarrez@nerim.fr>
-
- Fix PR savannah/1417:
- * elf32-m68hc11.c (m68hc11_elf_relax_delete_bytes): Don't adjust
- branch if it goes to the start of the deleted region.
-
-2002-12-01 Stephane Carrez <stcarrez@nerim.fr>
-
- * bfd-in2.h (bfd_mach_m6812): Rebuild.
- * archures.c (bfd_mach_m6812_default, bfd_mach_m6812,
- bfd_mach_m6812s): Declare.
-
- * elf32-m68hc12.c (m68hc12_elf_set_mach_from_flags): New function.
- (_bfd_m68hc12_elf_set_private_flags): Call it.
- (_bfd_m68hc12_elf_print_private_bfd_data): Report processor version.
- (_bfd_m68hc12_elf_merge_private_bfd_data): Merge the flags and
- report microcontroller incompatibilities (HC12 vs HCS12).
- (elf_backend_object_p): Update.
-
-2002-11-30 Alan Modra <amodra@bigpond.net.au>
-
- * bfd-in.h (TRUE_FALSE_ALREADY_DEFINED, BFD_TRUE_FALSE): Delete.
- (enum bfd_boolean, boolean): Delete.
- (bfd_boolean): Typedef to an int.
- (FALSE, TRUE): Define.
- * aix386-core.c, aix5ppc-core.c, aout-adobe.c, aout-arm.c, aout-cris.c,
- aout-encap.c, aout-ns32k.c, aout-target.h, aout-tic30.c, aoutf1.h,
- aoutx.h, archive.c, archive64.c, archures.c, bfd-in.h, bfd.c, bfdwin.c,
- binary.c, bout.c, cache.c, cisco-core.c, coff-a29k.c, coff-alpha.c,
- coff-apollo.c, coff-arm.c, coff-aux.c, coff-h8300.c, coff-h8500.c,
- coff-i386.c, coff-i860.c, coff-i960.c, coff-ia64.c, coff-m68k.c,
- coff-m88k.c, coff-mcore.c, coff-mips.c, coff-or32.c, coff-ppc.c,
- coff-rs6000.c, coff-sh.c, coff-sparc.c, coff-stgo32.c, coff-tic30.c,
- coff-tic4x.c, coff-tic54x.c, coff-tic80.c, coff-w65.c, coff-we32k.c,
- coff-z8k.c, coff64-rs6000.c, coffcode.h, coffgen.c, cofflink.c,
- corefile.c, cpu-a29k.c, cpu-alpha.c, cpu-arc.c, cpu-arm.c, cpu-avr.c,
- cpu-cris.c, cpu-d10v.c, cpu-d30v.c, cpu-dlx.c, cpu-fr30.c, cpu-frv.c,
- cpu-h8300.c, cpu-h8500.c, cpu-hppa.c, cpu-i370.c, cpu-i386.c,
- cpu-i860.c, cpu-i960.c, cpu-ia64.c, cpu-ip2k.c, cpu-m10200.c,
- cpu-m10300.c, cpu-m32r.c, cpu-m68hc11.c, cpu-m68hc12.c, cpu-m68k.c,
- cpu-m88k.c, cpu-mcore.c, cpu-mips.c, cpu-mmix.c, cpu-ns32k.c,
- cpu-openrisc.c, cpu-or32.c, cpu-pdp11.c, cpu-pj.c, cpu-powerpc.c,
- cpu-rs6000.c, cpu-s390.c, cpu-sh.c, cpu-sparc.c, cpu-tic30.c,
- cpu-tic4x.c, cpu-tic54x.c, cpu-tic80.c, cpu-v850.c, cpu-vax.c,
- cpu-w65.c, cpu-we32k.c, cpu-xstormy16.c, cpu-z8k.c, dwarf1.c,
- dwarf2.c, ecoff.c, ecofflink.c, efi-app-ia32.c, efi-app-ia64.c,
- elf-bfd.h, elf-eh-frame.c, elf-hppa.h, elf-m10200.c, elf-m10300.c,
- elf-strtab.c, elf.c, elf32-arc.c, elf32-arm.h, elf32-avr.c,
- elf32-cris.c, elf32-d10v.c, elf32-d30v.c, elf32-dlx.c, elf32-fr30.c,
- elf32-frv.c, elf32-gen.c, elf32-h8300.c, elf32-hppa.c, elf32-hppa.h,
- elf32-i370.c, elf32-i386.c, elf32-i860.c, elf32-i960.c, elf32-ip2k.c,
- elf32-m32r.c, elf32-m68hc11.c, elf32-m68hc12.c, elf32-m68k.c,
- elf32-mcore.c, elf32-mips.c, elf32-openrisc.c, elf32-or32.c,
- elf32-pj.c, elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-sh64-com.c,
- elf32-sh64.c, elf32-sparc.c, elf32-v850.c, elf32-vax.c,
- elf32-xstormy16.c, elf64-alpha.c, elf64-gen.c, elf64-hppa.c,
- elf64-mips.c, elf64-mmix.c, elf64-ppc.c, elf64-ppc.h, elf64-s390.c,
- elf64-sh64.c, elf64-sparc.c, elf64-x86-64.c, elfarm-nabi.c,
- elfarm-oabi.c, elfcode.h, elfcore.h, elflink.c, elflink.h,
- elfn32-mips.c, elfxx-ia64.c, elfxx-mips.c, elfxx-mips.h,
- elfxx-target.h, format.c, freebsd.h, genlink.h, hash.c, hp300hpux.c,
- hppabsd-core.c, hpux-core.c, i386aout.c, i386linux.c, i386lynx.c,
- i386mach3.c, i386msdos.c, i386os9k.c, ieee.c, ihex.c, irix-core.c,
- libaout.h, libbfd-in.h, libbfd.c, libcoff-in.h, libecoff.h, libieee.h,
- libnlm.h, liboasys.h, libpei.h, libxcoff.h, linker.c, lynx-core.c,
- m68klinux.c, m68klynx.c, mach-o.c, mach-o.h, merge.c, mipsbsd.c,
- mmo.c, netbsd-core.c, netbsd.h, nlm.c, nlm32-alpha.c, nlm32-i386.c,
- nlm32-ppc.c, nlm32-sparc.c, nlmcode.h, oasys.c, opncls.c, osf-core.c,
- pc532-mach.c, pdp11.c, pe-arm.c, pe-i386.c, pe-mcore.c, pe-mips.c,
- pe-sh.c, peXXigen.c, pef.c, pei-arm.c, pei-i386.c, pei-mcore.c,
- pei-mips.c, pei-sh.c, peicode.h, ppcboot.c, ptrace-core.c, reloc.c,
- reloc16.c, riscix.c, rs6000-core.c, sco5-core.c, section.c, simple.c,
- som.c, som.h, sparclinux.c, sparclynx.c, srec.c, stabs.c, sunos.c,
- syms.c, targets.c, tekhex.c, ticoff.h, trad-core.c, versados.c,
- vms-gsd.c, vms-hdr.c, vms-misc.c, vms-tir.c, vms.c, vms.h,
- xcoff-target.h, xcofflink.c, xsym.c, xsym.h: Replace boolean with
- bfd_boolean, true with TRUE, false with FALSE. Simplify comparisons
- of bfd_boolean vars with TRUE/FALSE. Formatting.
- * bfd-in2.h, libbfd.h, libcoff.h: Regenerate
-
-2002-11-28 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h: Replace occurrences of Elf32_Internal_* and
- Elf64_Internal_* with Elf_Internal_*. Replace Elf_Internal_Rel
- with Elf_Internal_Rela.
- * elf-hppa.h, elf-m10200.c, elf-m10300.c, elf32-arc.c, elf32-arm.h,
- elf32-avr.c, elf32-cris.c, elf32-d10v.c, elf32-d30v.c, elf32-dlx.c,
- elf32-fr30.c, elf32-frv.c, elf32-gen.c, elf32-h8300.c, elf32-hppa.c,
- elf32-i370.c, elf32-i386.c, elf32-i860.c, elf32-i960.c, elf32-ip2k.c,
- elf32-m32r.c, elf32-m68hc11.c, elf32-m68hc12.c, elf32-m68k.c,
- elf32-mcore.c, elf32-mips.c, elf32-openrisc.c, elf32-or32.c,
- elf32-ppc.c, elf32-s390.c, elf32-sh.c, elf32-v850.c, elf32-vax.c,
- elf32-xstormy16.c, elf64-alpha.c, elf64-gen.c, elf64-hppa.c,
- elf64-mips.c, elf64-mmix.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c,
- elf64-sparc.c, elf64-x86-64.c, elfarm-nabi.c, elfarm-oabi.c,
- elfcode.h, elflink.h, elfn32-mips.c, elfxx-ia64.c, elfxx-mips.c: Ditto.
- * elf-hppa.h (elf_hppa_internal_shdr): Delete. Use Elf_Internal_Shdr
- throughout instead.
- * elf.c (_bfd_elf_no_info_to_howto_rel): Delete.
- * elfcode.h (elf_swap_reloca_in): Pass source operand as a bfd_byte *.
- Remove INLINE keyword.
- (elf_swap_reloc_in): Likewise. Also clear r_addend.
- (elf_swap_reloc_out, elf_swap_reloca_out): Pass destination operand
- as a bfd_byte *.
- (elf_write_relocs): Consolidate REL and RELA code.
- (elf_slurp_reloc_table_from_section): Simplify REL code.
- (NAME(_bfd_elf,size_info)): Populate reloc swap entries.
- * elf-bfd.h (MAX_INT_RELS_PER_EXT_REL): Define.
- * elflink.h (elf_link_read_relocs_from_section): Consolidate REL and
- RELA code.
- (elf_link_adjust_relocs): Likewise. Don't malloc space for temp
- reloc array, use a fixed size of MAX_INT_RELS_PER_EXT_REL.
- (elf_link_output_relocs): Likewise.
- (elf_reloc_link_order): Likewise.
- (elf_finish_pointer_linker_section): Likewise.
- (struct elf_link_sort_rela): Remove union.
- (elf_link_sort_cmp1): Update to suit.
- (elf_link_sort_cmp2): Here too.
- (elf_link_sort_relocs): Consolidate REL and RELA code. Fix memory
- over-allocation for int_rels_per_ext_rel != 1 case.
- * elf32-arm.h: Update all bfd_elf32_swap_reloc_out calls.
- * elf32-i386.c: Likewise.
- * elf32-cris.c: Likewise for bfd_elf32_swap_reloca_out.
- * elf32-hppa.c, elf32-i370.c, elf32-m68k.c, elf32-ppc.c, elf32-s390.c,
- elf32-sh.c, elf32-vax.c, elfxx-mips.c: Likewise.
- * elf64-alpha.c: Likewise for bfd_elf64_swap_reloca_out.
- * elf64-hppa.c, elf64-mips.c, elf64-ppc.c, elf64-s390.c, elf64-sh64.c,
- elf64-sparc.c, elf64-x86-64.c: Likewise.
- * elfxx-ia64.c: Likewise for bfd_elfNN_swap_reloca_out.
- * elfxx-mips.c (sort_dynamic_relocs): Likewise for
- bfd_elf32_swap_reloc_in.
-
- * elf32-arm.h: Update elf32_arm_info_to_howto calls.
- * elf32-mips.c: Likewise for mips_info_to_howto_rel.
- (mips_elf64_swap_reloc_in): Zero r_addend.
- (mips_elf64_be_swap_reloc_in): Likewise.
- (mips_elf64_slurp_one_reloc_table): Simplify.
-
- * elf64-alpha.c (alpha_elf_size_info): Populate reloc swap entries.
- * elf64-hppa.c (hppa64_elf_size_info): Likewise.
- * elf64-sparc.c (sparc64_elf_size_info): Likewise.
-
-2002-11-28 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_relocate_section): Don't complain about
- unresolved debugging relocs in dynamic applications.
- * elf64-sh64.c (sh_elf64_relocate_section): Likewise.
-
-2002-11-26 Alan Modra <amodra@bigpond.net.au>
-
- * elf-eh-frame.c (ENSURE_NO_RELOCS): Disregard R_*_NONE relocs.
- (_bfd_elf_discard_section_eh_frame): Don't discard duplicate CIEs
- on a relocatable link. Comment typos.
- * elf.c (_bfd_elf_link_hash_newfunc): Assign elements of structure
- in the order they are declared. Clear elf_hash_value too.
- (_bfd_elf_link_hash_table_init): Likewise assign in order. Clear
- eh_info and tls_segment.
- * elflink.h (elf_link_input_bfd <emit_relocs>): Keep reloc offsets
- sorted when discarding relocs by turning them into R_*_NONE.
-
- * libbfd.c (warn_deprecated): Comment spelling.
- * po/SRC-POTFILES.in: Regenerate.
-
-2002-11-21 Richard Henderson <rth@redhat.com>
-
- * elflink.h (elf_link_add_object_symbols): Don't overwrite the
- arch's st_other bits when merging visibilities.
- (elf_link_output_extsym): Tidy clearing of visibility field.
-
-2002-11-21 Alan Modra <amodra@bigpond.net.au>
-
- * coff-mcore.c (SWAP_IN_RELOC_OFFSET): Define.
- (SWAP_OUT_RELOC_OFFSET): Define.
-
-2002-11-20 Alexandre Oliva <aoliva@redhat.com>
-
- * elf.c (_bfd_elf_link_hash_table_init): Make sure
- can_refcount is properly extended to the type of
- init_refcount.
-
-2002-11-19 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (MIPS_RELOC_RELA_P): New macro.
- (_bfd_mips_elf_relocate_section): Use it.
-
- * elfxx-mips.c (MNAME): New macro.
- (_bfd_mips_elf_check_relocs): Use it.
- (_bfd_mips_elf_discard_info): Likewise.
- (_bfd_mips_elf_final_link): Likewise.
-
-2002-11-19 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_edit_opd): When deleting relocs, adjust
- rel_hdr.sh_size too.
-
-2002-11-18 Klee Dienes <kdienes@apple.com>
-
- * Makefile.am (BFD32_LIBS): Add bfdwin.lo, bfdio.lo.
- (BFD32_LIBS_CFILES): Add bfdwin.c, bfdio.c.
- (BFD_H_FILES): Add bfdwin.c, bfdio.c.
- (LIBBFD_H_FILES): Add bfdwin.c, bfdio.c.
- Add dependencies for bfdwin.c, bfdio.c.
- * bfd.c: Remove bfd_get_mtime, bfd_get_size.
- * libbfd.c: Remove real_read, bfd_bread, _bfd_window_internal,
- bfd_init_window, bfd_free_window, bfd_get_file_window, bfd_bwrite,
- bfd_tell, bfd_flush, bfd_stat, bfd_seek.
- * bfdio.c: New file. Contains real_read, bfd_bread, bfd_write,
- bfd_tell, bfd_flush, bfd_stat, bfd_seek, bfd_ge_mtime,
- bfd_get_size (moved from libbfd.c and bfd.c).
- * bfdwin.c New file. Contains _bfd_window_internal,
- bfd_init_window, bfd_free_window, bfd_get_file_window (moved from
- libbfd.c and bfd.c).
- * po/SRC-POTFILES.in: Regenerate.
- * po/bfd.pot: Regenerate.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Regenerate.
- * aclocal.m4: Regenerate.
- * Makefile.in: Regenerate.
- * configure: Regenerate.
-
-2002-11-18 Klee Dienes <kdienes@apple.com>
-
- * bfd.c (bfd_preserve_save): Don't zero BFD_IN_MEMORY.
-
-2002-11-15 Kazu Hirata <kazu@cs.umass.edu>
-
- * coff-h8300.c (h8300_reloc16_estimate): Do not optimize away
- jsr after a short jump.
- * elf32-h8300.c (elf32_h8_relax_section): Likewise.
-
-2002-11-15 Klee Dienes <kdienes@apple.com>
-
- * pef.c (bfd_pef_convert_architecture): Move declaration of
- ARCH_POWERPC and ARCH_M68K to the start of the function.
-
-2002-11-14 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * coff-tic4x.c (tic4x_howto_table): Formatting fixup
-
-2002-11-14 Hans-Peter Nilsson <hp@bitrange.com>
-
- * elf64-mmix.c (_bfd_mmix_finalize_linker_allocated_gregs):
- For bpo_gregs_section->contents, allocate _raw_size, not
- _cooked_size.
-
-2002-11-13 Klee Dienes <kdienes@apple.com>
-
- * config.bfd: Add entries for powerpc-*-darwin and cousins.
-
-2002-11-13 H.J. Lu <hjl@gnu.org>
-
- * elfcode.h (elf_object_p): Don't restore abfd->arch_info.
-
-2002-11-13 Klee Dienes <kdienes@apple.com>
- Alan Modra <amodra@bigpond.net.au>
-
- * bfd.c (struct bfd_preserve): New.
- (bfd_preserve_save): New function.
- (bfd_preserve_restore): Ditto.
- (bfd_preserve_finish): Ditto.
- * bfd-in2.h: Regenerate.
- * mach-o.c: Formatting.
- (bfd_mach_o_scan_read_symtab_symbol): Make "value" unsigned.
- (bfd_mach_o_object_p): Use bfd_preserve_save/restore/finish.
- (bfd_mach_o_core_p): Ditto.
- (bfd_mach_o_scan): Pass in mdata.
- * mach-o.h (bfd_mach_o_scan): Update prototype.
- * pef.c: Formatting.
- (bfd_pef_object_p): Use bfd_preserve_save/restore/finish.
- (bfd_pef_xlib_object_p): Ditto.
- (bfd_pef_scan): Pass in mdata. Move version check to bfd_pef_object_p.
- * pef.h (bfd_pef_scan): Update prototype.
- * xsym.c: Formatting, K&R fixes.
- (bfd_sym_object_p): Use bfd_preserve_save/restore/finish.
- (bfd_sym_scan): New function split out from bfd_sym_object_p.
- * xsym.h (bfd_sym_scan): Declare.
- * elfcode.h (elf_object_p): Use bfd_preserve_save/restore/finish.
- * elfcore.h (elf_core_file_p): Likewise.
- * targets.c (_bfd_target_vector): Revert 2002-11-08 change.
-
-2002-11-12 Nick Clifton <nickc@redhat.com>
-
- * po/da.po: Updated Danish translation.
-
-2002-11-12 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_add_object_symbols): Optimize stabs for
- relocatable link too.
- (elf_link_input_bfd): When emitting relocs, adjust offsets for
- eh_frame and stab sections. Zap deleted relocs.
- (elf_reloc_symbol_deleted_p): Return true for zero r_symndx.
- (elf_bfd_discard_info): Run for relocatable link too.
- * elf64-ppc.c (ppc64_elf_edit_opd): Rename from edit_opd. Make global.
- Handle ld -r case.
- (ppc64_elf_size_dynamic_sections): Don't call edit_opd from here.
- * elf64-ppc.h (ppc64_elf_edit_opd): Declare.
-
- * elf-bfd.h (struct cie_header): Move from elf_eh-frame.c.
- (struct cie, struct eh_cie_fde, struct eh_frame_sec_info): Likewise.
- (struct eh_frame_array_ent, struct eh_frame_hdr_info): Likewise.
- (enum elf_link_info_type): Remove ELF_INFO_TYPE_EH_FRAME_HDR.
- (struct eh_frame_hdr_info): Add "hdr_sec", remove "split".
- (struct elf_link_hash_table): Add eh_info.
- (struct elf_obj_tdata): Change eh_frame_hdr to an asection *.
- (_bfd_elf_discard_section_eh_frame): Update prototype.
- (_bfd_elf_discard_section_eh_frame_hdr): Likewise.
- (_bfd_elf_write_section_eh_frame): Likewise.
- (_bfd_elf_write_section_eh_frame_hdr): Likewise.
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Remove "ehdrsec"
- param. Get "hdr_info" from link hash table.
- (_bfd_elf_discard_section_eh_frame_hdr): Remove "sec" param. Get
- header section from link hash table. Save header section to elf_tdata.
- (_bfd_elf_maybe_strip_eh_frame_hdr): Remove local "sec". Use
- header section from link hash table. Don't alloc hdr_info. Clear
- hdr_sec instead of setting "strip".
- (_bfd_elf_eh_frame_section_offset): Formatting.
- (_bfd_elf_write_section_eh_frame): Remove "ehdrsec", add "info" param.
- Get header section from link hash table.
- (_bfd_elf_write_section_eh_frame_hdr): Remove "sec", add "info" param.
- Get header section from link hash table.
- * elf.c (map_sections_to_segments): Use cached eh_frame_hdr.
- (get_program_header_size): Likewise.
- (_bfd_elf_section_offset): Formatting.
- * elflink.h (elf_link_create_dynamic_sections): Stash eh frame header
- section pointer in link hash table.
- (elf_bfd_final_link): Adjust _bfd_elf_write_section_eh_frame_hdr
- and _bfd_elf_write_section_eh_frame calls. Update comment about
- eh_frame entries.
- (elf_bfd_discard_info): Adjust _bfd_elf_discard_section_eh_frame and
- _bfd_elf_discard_section_eh_frame_hdr calls. Remove "ehdr".
-
- * po/SRC-POTFILES.in: Regenerate.
-
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't zero
- relocs for discarded FDEs. Remove dead code.
- (_bfd_elf_write_section_eh_frame_hdr): Remove dead code.
- * elflink.h (elf_bfd_discard_info): Don't save edited relocs.
- Tidy conditions under which stabs are edited. Formatting.
- * elf64-sparc.c (sparc64_elf_relocate_section): Ignore overflows
- from discarded relocs.
- * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Add reloc output
- section adjustments after testing magic values.
-
-2002-11-12 Thomas Moestl <tmm@FreeBSD.org>
-
- * elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): Correct
- references to large plt symbols.
-
-2002-11-12 Klee Dienes <kdienes@apple.com>
-
- * mach-o.c (bfd_mach_o_scan_read_thread): Don't re-use 'i' when
- looking for an unused section name.
-
-2002-11-11 Kazu Hirata <kazu@cs.umass.edu>
-
- * coff-h8300.c: Fix formatting.
- * elf32-h8300.c: Likewise.
- * reloc16.c: Likewise.
-
-2002-11-09 Jeroen Dobbelaere <jeroen.dobbelaere@acunia.com>
-
- * elf32-arm.h (elf32_arm_size_dynamic_sections): Don't strip output
- section when dynamic section unused; _bfd_strip_section_from_output
- instead.
-
-2002-11-08 Alan Modra <amodra@bigpond.net.au>
+2004-01-13 Ian Lance Taylor <ian@wasabisystems.com>
- * targets.c (_bfd_target_vector): Disable pef_vec, pef_xlib_vec
- and sym_vec.
+ * elf64-mips.c (mips_elf64_slurp_one_reloc_table): Call
+ mips_elf64_rtype_to_howto instead of using howto_table.
- * dwarf2.c: Revert last change.
+2004-01-13 Daniel Jacobowitz <drow@mvista.com>
-2002-11-07 Michal Ludvig <mludvig@suse.cz>
+ * elf32-arm.h (elf32_arm_final_link_relocate): Check that we created
+ the .plt section.
+ (elf32_arm_check_relocs): Don't increment the PLT refcount for
+ relocs which would not use the PLT.
- * dwarf2.c (read_indirect_string, read_abbrevs, decode_line_info,
- _bfd_dwarf2_find_nearest_line): Use
- bfd_simple_get_relocated_section_contents() instead of
- bfd_get_section_contents().
- * reloc.c (bfd_perform_relocation): Add sanity check.
- * simple.c (simple_get_relocated_section_contents): If the section
- does not have any relocs associated with it, just return the
- unadjusted contents.
+2004-01-13 Alan Modra <amodra@bigpond.net.au>
-2002-11-07 Hans-Peter Nilsson <hp@axis.com>
-
- * elf32-cris.c (cris_elf_relocate_section) <case R_CRIS_16_GOT,
- case R_CRIS_32_GOT>: Correct test for filling in constant .got
- contents, enabling for a non-DSO, for symbols defined in the
- program with --export-dynamic.
-
-2002-11-07 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c: Comment typo fixes.
- (ppc64_elf_merge_private_bfd_data): Allow BFD_ENDIAN_UNKNOWN input.
-
-2002-11-07 Nick Clifton <nickc@redhat.com>
-
- * po/da.po: Updated Danish translation.
-
-2002-11-06 Alexandre Oliva <aoliva@redhat.com>
-
- * elf64-mips.c (mips_elf64_slurp_one_reloc_table): Generate
- exactly three internal relocs per external reloc. Set reloc_count
- to the external reloc count.
-
-2002-11-06 Klee Dienes <kdienes@apple.com>
-
- * coff-stgo32.c (stub_bytes): Mark as const.
- Fix comment formatting.
-
-2002-11-06 Klee Dienes <kdienes@apple.com>
-
- * Makefile.am (BFD32_BACKENDS): Add mach-o.lo, pef.lo, and
- xsym.lo.
- (BFD32_BACKENDS_CFILES): Add mach-o.c, pef.c, and xsym.c.
- (SOURCE_HFILES): Add mach-o.h, pef.h, pef-traceback.h, xsym.h
- * archures.c (enum bfd_architecture): Add bfd_arch_m98k.
- * bfd.c (struct bfd): Add private data for mach-o, pef, and sym.
- * targets.c (enum bfd_flavour): Add flavours for mach-o, pef, and
- sym.
- (_bfd_target_vector): Add target vectors for mach-o, pef, and sym.
- * Makefile.in: Regenerate.
- * doc/Makefile.in: Regenerate.
- * bfd-in2.h: Regenerate.
- * xsym.c: New file. Contains support for the Apple/Metrowerks
- xSYM debugging format.
- * xsym.h: New file.
- * pef.c: New file. Contains support for the Apple Code Fragment
- Manager Preferred Executable Format
- * pef.h: New file.
- * pef-traceback.h: New file. Contains support for parsing PowerPC
- traceback tables as used by PEF executables (and perhaps other
- systems as well).
- * mach-o.c: New file. Contains support for the Mach-O object file
- format.
- * mach-o.h: New file.
- * mach-o-target.c: New file. Declares the mach-o targets
- themselves. Included three times by mach-o.c; each time with a
- different set of macros set.
-
-2002-11-06 Graeme Peterson <gp@qnx.com>
-
- * Makefile.am: Remove entries for elf32-qnx.[ch].
- * Makefile.in: Regenerate.
- * config.bfd: Change arm-nto to use bfd_elf32_{big|little}arm_vec,
- ppc-nto to use bfd_elf32_powerpc{le}_vec, sh-nto to use
- bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
- * configure.in: Remove support for bfd_elf32_sh{l}qnx_vec,
- bfd_elf32_powerpc{le}qnx_vec, bfd_elf32_{big|little}armqnx_vec,
- and bfd_elf32_i386qnx_vec, and removed elf32-qnx.lo from other targets.
- bfd_elf32_sh{l}_vec, and i386-nto to use bfd_elf32_i386_vec.
- * configure: Regenerate.
- * elf32-qnx.c: Remove.
- * elf32-qnx.h: Remove.
- * elf.c: Remove calls to QNX specific set_nonloadable_filepos,
- is_contained_by_filepos, and copy_private_bfd_data_p.
- * elf-bfd.h (struct elf_backend_data): Remove set_nonloadable_filepos,
- is_contained_by_filepos, and copy_private_bfd_data_p.
- * elf32-i386.c: Remove QNX extended bfd support.
- * elf32-ppc.c: Remove QNX extended bfd support.
- * elf32-sh.c: Remove QNX extended bfd support.
- * elfarm-nabi.c: Remove QNX extended bfd support.
- * targets.c: Remove qnx vectors.
- * elfxx-target.h (elf_backend_set_nonloadable_filepos): Remove
- (elf_backend_is_contained_by_filepos): Remove.
- (elf_backend_copy_private_bfd_data_p): Remove.
- * po/SRC-POTFILES.in: Regenerate.
-
-2002-11-06 David O'Brien <obrien@FreeBSD.org>
- Alan Modra <amodra@bigpond.net.au>
-
- * elf64-sparc.c (sparc64_elf_relocate_section): Adjust addend of
- dynamic relocs against section symbols for the output section vma.
-
-2002-11-05 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-arm.h (t2a1_push_insn, t2a2_ldr_insn, t2a3_mov_insn,
- t2a4_bx_insn, t2a5_pop_insn, t2a6_bx_insn): Remove.
-
-2002-11-05 Kaz Kojima <kkojima@rr.iij4u.or.jp>
- Alan Modra <amodra@bigpond.net.au>
-
- * config.bfd (sh-*-linux*): Use bfd_elf*_sh64*lin_vec as sh64
- vectors in target_selvecs.
- (shle-*-netbsdelf*): Use bfd_elf*_sh64*nbsd_vec as sh64 vectors
- in target_selvecs.
- (sh-*-netbsdelf*): Likewise.
- * configure.in (assocvecs): New variable. Handle assocvecs like
- selvecs.
- * configure: Regenerate.
- * format.c (bfd_check_format_matches): Store bfd_target pointers
- in matching_vector instead of target names. Select first target
- from bfd_associated_vector that matches a list of ambiguous targets.
- * targets.c (_bfd_associated_vector): New array.
- (bfd_associated_vector): New variable.
- (_bfd_target_vector): Add bfd_elf*_sh64*lin_vec.
- * libbfd-in.h (bfd_associated_vector): Declare.
- * libbfd.h: Regenerate.
-
-2002-11-05 Elias Athanasopoulos <eathan@otenet.gr>
-
- * vms-gsd.c (_bfd_vms_write_gsd): Check that symbol->udata.p is
- non-NULL before dereferencing.
-
-2002-11-04 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * vms.c (vms_object_p): Restore the start address when returning
- NULL.
-
-2002-11-04 Alan Modra <amodra@bigpond.net.au>
- Hans-Peter Nilsson <hp@axis.com>
-
- * elflink.h (struct elf_final_link_info): Add shndxbuf_size.
- (elf_bfd_final_link): Don't bother zeroing symtab_hdr fields.
- Set up a larger symshndxbuf, and write it out. Free it on
- exit rather than freeing symbuf twice. Correct section index
- on output section symbol loop.
- (elf_link_output_sym): Accumulate symbol extension section
- indices, reallocating symshndxbuf rather than writing it out.
- (elf_link_flush_output_syms): Don't flush symshndxbuf.
- * elf.c (assign_section_numbers): Init i_shdrp to all zero.
- Use bfd_zalloc to clear i_shdrp[0] too.
-
-2002-11-03 Stephen Clarke <stephen.clarke@earthling.net>
-
- * elf32-sh64-com.c (sh64_address_in_cranges): Use
- _raw_size of cranges section if _cooked_size not yet set.
-
-2002-11-03 Hans-Peter Nilsson <hp@axis.com>
-
- * elf32-v850.c (v850_elf_relax_delete_bytes): Correct parameters
- for bfd_elf32_swap_symbol_out.
-
-2002-10-31 David O'Brien <obrien@FreeBSD.org>
-
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't mix
- signed and unsigned in comparison.
-
-2002-10-30 Daniel Jacobowitz <drow@mvista.com>
-
- * coffcode.h: Remove extraneous '\'.
-
-2002-10-28 H.J. Lu <hjl@gnu.org>
-
- * Makefile.am (targets.lo): Depend on Makefile instead of
- config.status.
- (archures.lo): Likewise.
- * Makefile.in: Regenerated.
-
-2002-10-25 Jason Thorpe <thorpej@wasabisystems.com>
-
- * config.bfd (mips*el-*-netbsd*, mips*-*-netbsd*): Add
- bfd_elf64_bigmips_vec and bfd_elf64_littlemips_vec to
- targ_selvecs.
-
-2002-10-25 Jim Wilson <wilson@redhat.com>
-
- * elf64-sh64.c (sh_elf64_relocate_section): Call
- _bfd_elf_rela_local_sym. Handle relocs against STT_SECTION symbol
- of SHF_MERGE section.
-
-2002-10-25 Hans-Peter Nilsson <hp@axis.com>
-
- * simple.c: Correct placement of ATTRIBUTE_UNUSED.
-
-2002-10-24 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * aoutx.h (NAME(aout,swap_ext_reloc_in)): Cast bytes->r_index to
- unsigned int. Cast RELOC_BASE10, RELOC_BASE13 and RELOC_BASE22 to
- unsigned int.
- (NAME(aout,final_link)): Cast enum used in assignment.
- (aout_link_write_symbols): Cast enums in comparisons, int values to
- boolean, enums in assignments to int.
- (aout_link_input_section_std): Cast rel->r_index to unsigned int.
- (aout_link_input_section_ext): Likewise. Cast enums used in
- comparisons with unsigned ints.
- (aout_link_reloc_link_order): Cast enum to int in assignment.
- * archive.c (_bfd_generic_read_ar_hdr_mag): Cast result of memchr
- calls to char *.
- * bfd-in.h (bfd_set_section_vma): Cast enum true to unsigned int in
- assignment.
- * bfd-in2.h (bfd_set_section_vma): Likewise.
- * bfd.c (bfd_record_phdr): Cast enums in assignments.
- * binary.c (bfd_alloc): Cast enum to long.
- * coffgen.c (_bfd_coff_is_local_label_name): Cast return to boolean.
- * dwarf2.c (read_abbrevs): Add casts to enum types.
- (read_attribute_value): Likewise.
- (arange_add): Cast result of bfd_zalloc call.
- (comp_unit_contains_address): Return true and false.
- (comp_unit_find_nearest_line): Cast return to boolean.
- * format.c (bfd_check_format_matches, bfd_set_format): Likewise.
- * gen-aout.c: define macro '_' if not defined.
- * libbfd.c (bfd_realloc): Cast malloc and realloc to PTR.
- (bfd_bwrite): Cast bfd_realloc to bfd_byte *.
- (bfd_write_bigendian_4byte_int): Cast return to boolean.
- (bfd_seek): Cast bfd_realloc to bfd_byte *.
- (bfd_generic_is_local_label_name): Cast return to boolean.
- * libcoff.h (_bfd_coff_adjust_symndx): Remove extraneous '\'.
- * linker.c (_bfd_link_hash_newfunc): Cast bfd_hash_allocate result to
- struct bfd_hash_entry *.
- (_bfd_generic_link_hash_newfunc): likewise.
- (_bfd_generic_final_link): Cast enum to unsigned int.
- * merge.c (sec_merge_emit): Cast return to boolean.
- (merge_strings): Add casts to const unsigned char *.
- * reloc.c (bfd_get_reloc_code_name): Cast enums in comparison to int.
- (bfd_generic_get_relocated_section_content): Cast enum to unsigned int.
- * section.c (bfd_section_hash_newfunc): Cast bfd_hash_allocate result
- to struct bfd_hash_entry *.
- (bfd_set_section_content): Add cast to PTR in comparison.
- * simple.c (simple_dummy_warning, simple_dummy_undefined_symbol,
- simple_dummy_reloc_overflow, simple_dummy_reloc_dangerous,
- simple_dummy_unattached_reloc,
- bfd_simple_get_relocated_section_contents): Add K&R declarations and
- function definitions.
- * srec.c (S3Forced): Initialize to false.
- (srec_get_symtab): Cast return value from bfd_alloc to asymbol *.
- * stabs.c (_bfd_link_section_stabs): Cast enum to int in comparisons.
- (_bfd_discard_section_stabs): Likewise. Also cast return to boolean.
- * syms.c (bfd_is_undefined_symclass): Cast return to boolean.
- (_bfd_stab_section_find_nearest_line): Cast enum to bfd_byte in
- comparisons.
-
-2002-10-23 Jakub Jelinek <jakub@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_check_relocs): Only put maybe_dynamic
- relocs into shared lib non-allocated reloc sections.
-
-2002-10-23 Nathan Tallent <eraxxon@alumni.rice.edu>
-
- * dwarf2.c (add_line_info): Ensure that the line_info_table is
- sorted even when given an out-of-order line sequence.
- (lookup_address_in_line_info_table): When an exact VMA match is
- not found, return line information with the closest VMA.
-
-2002-10-23 Ross Alexander <ross.alexander@uk.neceur.com>
-
- * elf64-hppa.c: Force DT_FLAGS to always be set. Required by
- HPUX 11.00 patch PHSS_26559.
-
-2002-10-22 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Don't move
- the options section into a separate section unless IRIX 6
- compatibility is enabled.
-
-2002-10-22 Alexandre Oliva <aoliva@redhat.com>
-
- * elflink.h (struct elf_link_sort_rela): Turn rel and rela
- into arrays.
- (elf_link_sort_cmp1, elf_link_sort_cmp2): Adjust.
- (elf_link_sort_relocs): Likewise. Take int_rels_per_ext_rel
- into account.
- * elfxx-mips.c (mips_elf_create_dynamic_relocation): Compose
- R_MIPS_REL32 with R_MIPS64 if ABI_64_P.
-
-2002-10-21 Graeme Peterson <gp@qnx.com>
-
- * targets.c (_bfd_target_vector): Add missing qnx vectors.
-
-2002-10-21 Alan Modra <amodra@bigpond.net.au>
-
- * targets.c (bfd_target_list): Don't return the default target twice.
-
-2002-10-21 Elias Athanasopoulos <eathan@otenet.gr>
-
- * archive.c (_bfd_archive_bsd_update_armap_timestamp): Replace
- perror with bfd_perror.
-
-2002-10-19 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_link_add_object_symbols): Correctly handle
- DT_RPATH and DT_RUNPATH.
-
-2002-10-19 Mark Kettenis <kettenis@gnu.org>
-
- * elf.c (elfcore_grok_note): Fix recognition on NT_PRXFPREG notes.
-
-2002-10-17 Denis Chertykov <denisc@overta.ru>
-
- * elf32-ip2k.c (ELF_MACHINE_ALT1): Define alternate machine code
- for ip2k port.
-
-2002-10-17 Alan Modra <amodra@bigpond.net.au>
-
- * elfxx-target.h (USE_REL): Don't define as 1.
- * elf32-arm.h (USE_REL): Provide a default define of 0.
- Use #if rather than #ifdef when testing USE_REL.
- * elf32-m32r.c: Likewise.
-
- * elf32-arc.c (USE_REL): Define as 1.
- * elf32-d10v.c (USE_REL): Likewise.
- * elf32-m32r.c (USE_REL): Likewise.
- * elf32-m68hc11.c (USE_REL): Likewise.
- * elf32-m68hc12.c (USE_REL): Likewise.
- * elf32-or32.c (USE_REL): Likewise.
- * elfarm-nabi.c (USE_REL): Likewise.
-
-2002-10-16 Jakub Jelinek <jakub@redhat.com>
-
- * config.bfd (s390-*-linux*): Add targ64_selvecs.
- (s390x-*-linux*): Add targ_selvecs.
-
-2002-10-16 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (BFD32_BACKENDS): Remove elfarmqnx-nabi.lo,
- elf32-i386-fbsd.lo, elf32-i386qnx.lo, elf32-ppcqnx.lo,
- elf32-sh-lin.lo, elf32-sh64-lin.lo, elf32-sh-nbsd.lo,
- elf32-sh64-nbsd.lo, elf32-shqnx.lo. Add elf32-qnx.lo.
- (BFD32_BACKENDS_CFILES): Likewise for corresponding C files.
- (BFD64_BACKENDS): Remove elf64-sh64-lin.lo, elf64-sh64-nbsd.lo.
- (BFD64_BACKENDS_CFILES): Likewise for corresponding C files.
- (SOURCE_HFILES): Add elf32-qnx.h.
- (BUILD_HFILES): Add bfdver.h.
- Run "make dep-am".
- * Makefile.in: Regenerate.
- * configure.in Update bfd vector dependencies.
- * configure: Regenerate.
- * elf32-i386-fbsd.c: Delete. Move code to elf32-i386.c.
- * elf32-i386qnx.c: Likewise.
- * elf32-ppcqnx.c: Delete. Move code to elf32-ppc.c.
- * elf32-sh-nbsd.c: Delete. Move code to elf32-sh.c.
- * elf32-sh-lin.c: Likewise.
- * elf32-shqnx.c: Likewise.
- * elf32-sh64-lin.c: Delete. Move code to elf32-sh64.c.
- * elf32-sh64-nbsd.c: Likewise.
- * elf64-sh64-lin.c: Delete. Move code to elf64-sh64.c.
- * elf64-sh64-nbsd.c: Likewise.
- * elfarmqnx-nabi.c: Delete. Move code to elfarm-nabi.c.
- * elf32-arm.h (ELF_MAXPAGESIZE): Always define.
- * elf32-i386.c: Remove ELF_ARCH and ELF32_I386_C_INCLUDED tests.
- * elf32-ppc.c: Remove ELF32_PPC_C_INCLUDED tests.
- * elf32-qnx.h (elf_backend_set_nonloadable_filepos): Always define.
- (elf_backend_is_contained_by_filepos): Likewise.
- (elf_backend_copy_private_bfd_data_p): Likewise.
- Globalize and move functions to..
- * elf32-qnx.c: ..here. New file.
- * elf32-sh.c: Remove ELF_ARCH and ELF32_SH_C_INCLUDED tests. Don't
- emit target vectors when INCLUDE_SHMEDIA.
- * elf32-sh64.c: Remove ELF_ARCH test. Move TARGET_* etc. defines to
- end of file.
- * elf64-sh64.c: Remove ELF_ARCH test.
- * elfarm-nabi.c: Remove ELFARM_NABI_C_INCLUDED test.
- * po/BLD-POTFILES.in: Regenerate.
- * po/SRC-POTFILES.in: Regenerate.
-
-2002-10-16 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_add_object_symbols): Error out on dynamic objects
- loaded with --just-symbols.
-
- * elf32-i386qnx.c (TARGET_LITTLE_NAME): Define.
- * elf32-ppcqnx.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define.
- * elf32-shqnx.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define.
- * elfarmqnx-nabi.c (TARGET_LITTLE_NAME, TARGET_BIG_NAME): Define.
-
-2002-10-15 Richard Henderson <rth@redhat.com>
-
- * Makefile.am (BFD64_BACKENDS): Remove elf64-alpha-fbsd.
- (BFD64_BACKENDS_CFILES): Likewise.
- * configure.in (bfd_elf64_alpha_freebsd_vec): Use elf64-alpha.
- * elf64-alpha-fbsd.c: Remove file, move code ...
- * elf64-alpha.c: ... here.
- * Makefile.in, configure: Rebuild.
-
-2002-10-14 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: Increment
- VALUE, not ADDEND.
-
-2002-10-14 Stephen Clarke <stephen.clarke@superh.com>
-
- * elf32-sh.c (elf_sh_link_hash_entry): Replace
- datalabel_got_offset with union of datalabel_got
- offset and refcount.
- (sh_elf_link_hash_newfunc): Initialize datalabel_got.refcount.
- (allocate_dynrelocs): Delete unnecessary code for
- STT_DATALABEL type. Create entry in got for
- datalabel version of symbol if datalabel_got.refcount > 0.
- (sh_elf_relocate_section): Use datalabel_got union.
- (sh_elf_gc_sweep_hook): Pull common code to initialize
- h and eh out of switch statement. Declare seen_stt_datalabel.
- Initialize it. Decrement datalabel_got.refcount for
- got relocs when seen_stt_datalabel is true.
- Decrement local_got_refcounts entry for datalabel got relocs
- of local symbols.
- (sh_elf_copy_indirect_symbol): Copy datalabel_got field over.
- (sh_elf_check_relocs): Declare seen_stt_datalabel.
- Initialize it. When seen_stt_datalabel is true, increment
- datalabel_got refcount rather than got.refcount.
- (sh_elf_finish_dynamic_symbol): Create relocs to
- initialize got entry for datalabel version of symbol.
-
-2002-10-14 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- (BFD_H_FILES): Remove version.h.
- * bfd-in.h (BFD_VERSION, BFD_VERSION_DATE, BFD_VERSION_STRING): Move..
- * version.h: ..to here.
- * configure.in (bfd_version_date): Remove.
- (AC_OUTPUT): Make bfdver.h from version.h.
- * bfd.c: #include "bfdver.h".
- * vms-hdr.c: Likewise.
- * Makefile.in: Regenerate.
- * bfd-in2.h: Regenerate.
- * configure: Regenerate.
- * po/SRC-POTFILES.in: Regenerate.
-
-2002-10-14 Alan Modra <amodra@bigpond.net.au>
-
- * archures.c (bfd_mach_i386_i386, bfd_mach_i386_i8086,
- bfd_mach_i386_i386_intel_syntax, bfd_mach_x86_64,
- bfd_mach_x86_64_intel_syntax bfd_mach_ppc, bfd_mach_ppc64,
- bfd_mach_rs6k, bfd_mach_d10v, bfd_mach_sh, bfd_mach_v850,
- bfd_mach_arc_5, bfd_mach_arc_6, bfd_mach_arc_7, bfd_mach_arc_8,
- bfd_mach_m32r, bfd_mach_frv, bfd_mach_frvsimple,
- bfd_mach_ia64_elf64, bfd_mach_ia64_elf32,
- bfd_mach_ip2022, bfd_mach_ip2022ext,
- bfd_mach_s390_31, bfd_mach_s390_64, bfd_mach_xstormy16): Renumber.
- * bfd-in2.h: Regenerate.
-
-2002-10-14 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * config.bfd (sh*eb-*-linux*, sh*-*-linux*): Add the alternative
- endian vector to targ_selvecs.
-
-2002-10-13 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (mips_elf_calculate_relocation): Take
- save_addend argument. Don't apply the 32-bit mask to a
- GPREL32 value if it's to be used in another relocation. Don't
- use forced-check computation of local_p to decide whether to
- add gp0 to GPREL16 value. Don't use only the lowest 16 bits
- of the addend of a non-in-place GPREL16 relocation.
- (_bfd_mips_elf_relocate_section): Pass use_saved_addend_p to
- mips_elf_calculate_relocation().
-
-2002-10-12 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc11.c (m68hc11_elf_relax_section): Don't treat relocs
- with symbols in other sections if we relaxed something; the sections
- output offsets must be re-computed before.
-
-2002-10-12 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc11.c (m68hc11_elf_relax_section): Update symbols
- handling to use Elf_Internal_Sym.
- (m68hc11_elf_relax_delete_bytes): Likewise.
-
-2002-10-11 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_optimized_tls_reloc, sh_elf_mkobject,
- sh_elf_object_p, dtpoff_base): New functions.
- (sh_elf_howto_table): Add TLS relocs.
- (sh_reloc_map): Likewise.
- (sh_elf_info_to_howto): Support TLS relocs.
- (elf_sh_link_hash_entry): Add tls_type and tls_tpoff32.
- (sh_elf_hash_entry, sh_elf_tdata, sh_elf_local_got_tls_type):
- New macros.
- (sh_elf_obj_tdata): New.
- (elf_sh_link_hash_table): Add tls_ldm_got.
- (sh_elf_link_hash_table_create): Clear refcount of tls_ldm_got.
- (allocate_dynrelocs): Support TLS relocs.
- (sh_elf_size_dynamic_sections): Likewise.
- (sh_elf_relocate_section): Support TLS relocs. Don't try to find
- .rela.got section when found already. Return false after printing
- error about unresolvable relocation.
- (sh_elf_gc_sweep_hook): Support TLS relocs.
- (sh_elf_check_relocs): Likewise.
- (sh_elf_finish_dynamic_symbol): Likewise.
- (bfd_elf32_mkobject, elf_backend_object_p): Define for TLS case.
- * reloc.c: Add SH TLS relocs.
- * bfd-in2.h, libbfd.h: Regenerate.
-
-2002-10-11 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in: Regenerated.
-
-2002-10-11 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.am: Run dep-am.
- (BFD_H_DEP): Add simple.c and linker.c.
- (BFD32_LIBS): Add simple.lo.
- (BFD32_LIBS_CFILES): Add simple.c.
- * Makefile.in: Regenerated.
- * bfd-in2.h: Regenerated.
- * simple.c: New file.
-
-2002-10-11 Alan Modra <amodra@bigpond.net.au>
-
- * coff-arm.c (record_arm_to_thumb_glue): Avoid type-punned pointers.
- (record_thumb_to_arm_glue): Likewise.
- * ecoff.c (ecoff_link_add_externals): Likewise.
- * elf32-arm.h (record_arm_to_thumb_glue): Likewise.
- (record_thumb_to_arm_glue): Likewise.
- * elf32-m32r.c (m32r_elf_add_symbol_hook): Likewise.
- * elf32-sh.c (sh_elf_create_dynamic_sections): Likewise.
- * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise.
- * elf64-alpha.c (elf64_alpha_create_dynamic_sections): Likewise.
- * elf64-ppc.c (func_desc_adjust): Likewise.
- * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise.
- (sh64_elf64_create_dynamic_sections): Likewise.
- * elflink.c (_bfd_elf_create_got_section): Likewise.
- (_bfd_elf_create_dynamic_sections): Likewise.
- (_bfd_elf_create_linker_section): Likewise.
- * elflink.h (elf_add_default_symbol): Likewise.
- (elf_link_create_dynamic_sections): Likewise.
- (NAME(bfd_elf,size_dynamic_sections)): Likewise.
- * elfxx-ia64.c (elfNN_ia64_aix_add_symbol_hook): Likewise.
- * elfxx-mips.c (mips_elf_create_got_section): Likewise.
- (_bfd_mips_elf_add_symbol_hook): Likewise.
- (_bfd_mips_elf_create_dynamic_sections): Likewise.
- * linker.c (generic_link_add_symbol_list): Likewise.
- * xcofflink.c (xcoff_link_add_symbols): Likewise.
-
- * elfxx-ia64.c (oor_brl, oor_ip): Conditionally define.
-
- * elf64-ppc.c (edit_opd): Only zero opd syms when function is
- completely removed. Correct local sym adjustment.
-
-2002-10-10 Stephen Clarke <stephen.clarke@superh.com>
-
- * elf32-sh.c (elf_sh_pic_plt_entry_be, elf_sh_pic_plt_entry_le):
- Correct mistake in calculation of address of .got.
- * elf64-sh64.c (elf_sh64_pic_plt_entry_be,
- elf_sh64_pic_plt_entry_le): Likewise.
-
-2002-10-09 Richard Shann <richard.shann@superh.com>
- Stephen Clarke <stephen.clarke@superh.com>
-
- * Makefile.am: Add entries for elf32-sh64-lin.c and
- elf64-sh64-lin.c. Regenerate.
- * Makefile.in: Regenerate.
- * config.bfd: Change sh64eb-*-linux* and sh64-*-linux*
- to use sh64 vectors rather than sh vectors.
- * configure.in: Add bfd_elf32_sh64lin_vec, bfd_elf32_sh64blin_vec,
- bfd_elf64_sh64lin_vec, bfd_elf64_sh64blin_vec.
- * configure: Regenerate.
- * elf32-sh64-lin.c: New file.
- * elf64-sh64-lin.c: New file.
- * targets.c: Add bfd_elf32_sh64lin_vec, bfd_elf32_sh64blin_vec,
- bfd_elf64_sh64lin_vec, bfd_elf64_sh64blin_vec.
-
-2002-10-08 H.J. Lu <hjl@gnu.org>
-
- * elf32-i386.c (elf_i386_relocate_section): Re-arrange the
- IE->LE transition for R_386_TLS_IE.
-
-2002-10-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (edit_opd): Correct test for discarded sections.
-
-2002-10-07 Mark Elbrecht <snowball3@softhome.net>
-
- * cofflink.c (mark_relocs): Don't mark relocations in excluded
+ * elf64-ppc.c (ppc64_elf_check_relocs): Ignore !SEC_ALLOC relocs.
+ (ppc64_elf_gc_sweep_hook): Likewise.
+ (ppc64_elf_size_dynamic_sections): Test for .plt directly.
+
+2004-01-12 Anil Paranjpe <anilp1@KPITCummins.com>
+
+ Adds linker relaxation support for bit manipulation insns like
+ band, bclr, biand, bild, bior, bist, bixor, bld, bnot, bor, bset,
+ bst, btst, bxor.
+ * elf32-h8300.c: Opcode for bit manipulation insn is checked in
+ elf32_h8_relax_section function while relxation for aa:16 and aa:32.
+ * coff-h8300.c: Opcode for bit manipulation insn is checked in
+ h8300_reloc16_extra_cases function while relxation for aa:16 and aa:32.
+
+2004-01-12 Alan Modra <amodra@bigpond.net.au>
+
+ * dwarf2.c: Convert to C90, remove unneeded casts and prototypes.
+
+2004-01-11 Kazu Hirata <kazu@cs.umass.edu>
+
+ * elf32-h8300.c: Fix formatting.
+
+2004-01-11 Kazu Hirata <kazu@cs.umass.edu>
+
+ * elf32-cris.c (cris_elf_gc_sweep_hook): Return early if no
+ dynamic object is present. Declare r_symndx and h in an inner
+ scope.
+ * elf32-vax.c (elf_vax_gc_sweep_hook): Likewise.
+
+2004-01-09 Daniel Jacobowitz <drow@mvista.com>
+
+ * elf32-arm.h (struct elf32_arm_relocs_copied): Remove pc_count.
+ (elf32_arm_copy_indirect_symbol): Don't copy pc_count.
+ (elf32_arm_final_link_relocate): Handle PLT32 and PC24 relocs
+ identically. Do not emit PC24 relocations for shared libraries.
+ (elf32_arm_gc_sweep_hook): Handle PLT32 and PC24 relocs
+ identically. Don't adjust pc_count.
+ (elf32_arm_check_relocs): Handle PLT32 and PC24 relocs identically.
+ Set ELF_LINK_HASH_NEEDS_PLT for both. Don't adjust pc_count; don't
+ adjust count for branch relocations.
+ (allocate_dynrelocs): Correct typo in call to
+ WILL_CALL_FINISH_DYNAMIC_SYMBOL. Never allocate space for
+ PC24 or PLT32 relocs when linking.
+
+2004-01-09 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru>
+
+ * coff-arm.c (aoutarm_std_reloc_howto): [ARM_WINCE] Synchronize ARM_26D
+ relocation howto with ARM_26 one for consistency.
+ (coff_arm_relocate_section): Set partial_inplace for ARM_26 relocations
+ that will be converted to ARM_26D ones, since we always want 'done'
+ relocations to be reflected in section's data.
+ (coff_arm_relocate_section): [ARM_WINCE] Quick fix for BL instruction
+ offset.
+ (_bfd_final_link_relocate): Do not modify "inplace" data, if not
+ requested.
+
+2004-01-08 Dmitry Semyonov <Dmitry.Semyonov@oktet.ru>
+
+ * coff-arm.c (coff_arm_relocate_section): Do not alter relocs that
+ are not partial_inplace during a relocatable link.
+
+2004-01-08 Kazu Hirata <kazu@cs.umass.edu>
+
+ * elf32-m68k.c (elf_m68k_gc_sweep_hook): Return early
+ if no dynamic object is present. Declare r_symndx and h in an
+ inner scope.
+
+2004-01-07 H.J. Lu <hongjiu.lu@intel.com>
+
+ * elfxx-ia64.c (elfNN_ia64_relax_section): Don't install
+ trampoline if it is known out of range.
+
+2004-01-06 Alexandre Oliva <aoliva@redhat.com>
+
+ 2003-12-17 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (_frv_osec_readonly_p): New.
+ (_frv_emit_got_relocs_plt_entries): Don't emit rofixup for
+ undefweak symbol.
+ (_frv_count_got_plt_entries): Adjust expected count accordingly.
+ (elf32_frv_relocate_section): Likewise. Error out if attempting
+ to emit rofixups or dynamic relocs in read-only segments. Use
+ _bfd_elf_section_offset to adjust r_offsets in rofixups and
+ dynamic relocations.
+ 2003-12-12 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (elf32_frv_relocate_section): Compute dynamic
+ relocations or fixups involving merged sections correctly. Avoid
+ crash when undefined symbol is referenced by R_FRV_32 or
+ R_FRV_FUNCDESC_VALUE.
+ 2003-12-02 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (elf32_frv_relocate_section): Add output_offset of
+ input section holding local symbol to addend of R_FRV_32 or
+ R_FRV_FUNCDESC_VALUE dynamic relocation.
+ 2003-11-27 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (elf32_frv_modify_segment_map): Add link info arg.
+ (elf32_frv_always_size_sections): Don't store pointer to
+ __stacksize symbol in sec_info.
+ (elf32_frv_modify_segment_map): Look it up here.
+ 2003-11-26 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Emit the address
+ of the lazy PLT entry, not only its offset, as the low word of a
+ function descriptor.
+ 2003-11-10 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (elf32_frv_always_size_sections): Define __stacksize
+ if a hash table entry already exists but is not a definition.
+ 2003-11-05 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (frv_elf_link_hash_table_create): Use bfd_zalloc.
+ (_frv_add_rofixup): Don't inline.
+ (_frv_emit_got_relocs_plt_entries): Use NULL as funcdesc address
+ for undefweak symbols.
+ (elf32_frv_relocate_section): Avoid crash while computing
+ relocation when linking with shared library. Only emit rofixups
+ and dynamic relocations for alloc&load sections. Mark binaries
+ with inter-segment relocations for relocation as a unit.
+ (_frv_create_got_section): Rename .rofixup.got to .rofixup.
+ (DEFAULT_STACK_SIZE): New.
+ (_frv_count_got_plt_entries): Fix thinko in deciding whether to
+ emit rofixups or dynamic relocs when linking dynamic non-PIE
+ executables.
+ (elf32_frv_size_dynamic_sections): Generate rofixup on PIEs and
+ shared libs too. Reserve the last entry for the GOT pointer.
+ (elf32_frv_finish_dynamic_sections): Emit it.
+ (elf32_frv_always_size_sections): New.
+ (elf32_frv_modify_segment_map): New.
+ (elf32_frv_check_relocs): Reserve relocs32 space only in ALLOC
sections.
-
-2002-10-07 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_input_bfd): Remove BFD_VERSION_DATE dependent
- code.
-
- * elf64-ppc.c (ppc64_elf_build_stubs): Increment .glink indx.
-
-2002-10-06 Alan Modra <amodra@bigpond.net.au>
-
- * opncls.c: Formatting.
- (_bfd_new_bfd): Use a smaller section hash table.
-
-2002-10-05 Alexandre Oliva <aoliva@redhat.com>
-
- * elfxx-mips.c (mips_elf_create_dynamic_relocation): Set the type
- of the other two relocations packed with a REL32 to NONE.
-
-2002-10-02 Stephen Clarke <stephen.clarke@superh.com>
-
- * elf32-sh.c (elf_sh_link_hash_entry): Add gotplt_refcount.
- (sh_elf_link_hash_newfunc): Initialize it.
- (allocate_dynrelocs): Transfer gotplt refs from plt.refcount
- to got.refcount for symbols that are forced local or when
- we have direct got refs.
- (sh_elf_gc_sweep_hook): Adjust gotplt_refcount. Use it
- to correctly adjust got.refcount and plt.refcount.
- (sh_elf_copy_indirect_symbol): Copy gotplt_refcount across.
- (sh_elf_check_relocs): Increment gotplt_refcount.
-
-2002-10-01 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-i386.c (elf_i386_relocate_section): Fix
- movl foo@indntpoff, %eax IE->LE transition.
-
-2002-10-01 Jakub Jelinek <jakub@redhat.com>
-
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Change TLSGD
- sequence and its transitions.
-
-2002-10-01 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-i386.c (elf_i386_relocate_section): Resolve R_386_TLS_LDO_32
- to st_value + addend in non-code sections.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Resolve
- R_X86_64_DTPOFF32 to st_value + addend in non-code sections.
-
-2002-09-30 Gavin Romig-Koch <gavin@redhat.com>
- Ken Raeburn <raeburn@cygnus.com>
- Aldy Hernandez <aldyh@redhat.com>
- Eric Christopher <echristo@redhat.com>
- Richard Sandiford <rsandifo@redhat.com>
-
- * archures.c (bfd_mach_mips4120, bfd_mach_mips5400): New.
- (bfd_mach_mips5500): New.
- * cpu-mips.c (I_mips4120, I_mips5400, I_mips5500): New.
- (arch_info_struct): Add corresponding entries here.
- * elfxx-mips.c (_bfd_elf_mips_mach): Handle E_MIPS_MACH_4120,
- E_MIPS_MACH_5400 and E_MIPS_MACH_5500.
- (_bfd_mips_elf_final_write_processing): Handle bfd_mach_mips4120,
- bfd_mach_mips5400 and bfd_mach_mips5500.
- (_bfd_mips_elf_mach_extends_p): New function.
- (_bfd_mips_elf_merge_private_bfd_data): Use it to help merge
- the EF_MIPS_MACH flags.
- * bfd-in2.h: Regenerate.
-
-2002-09-28 Jason Thorpe <thorpej@wasabisystems.com>
-
- * elf32-vax.c (elf_vax_size_dynamic_section): Don't strip
- .got sections.
-
-2002-09-28 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (map_sections_to_segments): Correct test for start of
- writable section in the same page as end of read-only section.
-
-2002-09-27 Matt Thomas <matt@3am-software.com>
-
- * elf32-vax.c (elf_vax_check_relocs): Remove unused
- local_got_refcounts usage. Remove allocation of got slot.
- (elf_vax_gc_sweep_hook): Remove unused local_got_refcounts usage.
- Remove de-allocation of got slot.
- (elf_vax_size_dynamic_section): Fix some indentation. Add hash
- traversal for elf_vax_instantiate_got_entries. Allow empty .got
- sections to be GC'ed.
- (elf_vax_instantiate_got_entries): New function.
- (elf_vax_relocate_section): Simplify R_VAX_GOT32 handling. Remove
- tests that are now handled by elf_vax_instantiate_got_entries.
- Assert GOT entry falls within .got section size. Remove redundant
- comparisions. Fix comments.
-
-2002-09-27 Jakub Jelinek <jakub@redhat.com>
-
- * reloc.c: Add x86-64 TLS relocs.
+ (frv_elf_merge_private_bfd_data): Clear PIC bit if FDPIC is set.
+ (frv_elf_print_private_bfd_data): Handle FDPIC and LIBPIC.
+ (elf_backend_always_size_sections): New.
+ (elf_backend_modify_segment_map): New.
+ 2003-10-31 Alexandre Oliva <aoliva@redhat.com>
+ * config.bfd: Added frv-*-*linux*.
+ * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Use idx 0 for
+ ABS section, instead of crashing.
+ (elf32_frv_relocate_section): Don't crash before warning about
+ different segments in non-PIC relocation.
+ 2003-10-17 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (elf32_frv_relocate_section): Don't warn on LABEL24
+ relocs to undefweak symbols.
+ (elf32_frv_relocate_section): Ditto for undefined symbols.
+ 2003-10-06 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (elf32_frv_create_dynamic_sections): Make sure
+ gotfixup section was created.
+ 2003-09-30 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (elf32_frv_howto_table): Change GOT12,
+ FUNCDESC_GOT12, GOTOFF12 and FUNCDESC_GOTOFF12 to
+ complain_overflow_signed.
+ * elf32-frv.c (_frv_add_rofixup): Do not error out if contents
+ have not been allocated.
+ (_frv_emit_got_relocs_plt_entries): Return non-void. Assert
+ privfd only if dynamic sections were created.
+ (elf32_frv_relocate_section): Compute gprel_segment, and use it
+ for GPREL relocs. When linking relocatable FDPIC executables,
+ emit warnings for relocations that would be illegal on PIE or
+ shared libraries. Emit rofixup for R_FRV_32 only if input object
+ is not FDPIC.
+ (_frv_create_got_section): Define _gp symbol in the rofixup
+ section.
+ (elf32_frv_finish_dynamic_sections): If rofixups needed but
+ dynamic sections missing, error out requesting -melf32frvfd.
+ 2003-09-19 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Rearrange
+ computation of addends from section and global or local symbol
+ value. Change return type to bfd_boolean, and return a failure if
+ a dynamic FUNCDESC or FUNCDESC_VALUE relocation that requires a
+ nonzero addend is required.
+ (elf32_frv_relocate_section): Likewise. Print error for
+ unsupported nonzero addends.
+ 2003-09-18 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (FRV_SYM_LOCAL): In the absence of dynamic sections,
+ force everything local.
+ (_frv_emit_got_relocs_plt_entries): Cope with NULL sec.
+ * elf32-frv.c (struct frv_elf_link_hash_table): Added sgotfixup.
+ (frv_gotfixup_section): New.
+ (FRV_SYM_LOCAL): Accept undefweak and local common symbols.
+ (struct frv_pic_relocs_info): Split relocs into relocs32, relocsfd
+ and relocsfdv.
+ (_frv_add_rofixup): New.
+ (_frv_emit_got_relocs_plt_entries): Generate fixups for non-PIE
+ fdpic executables. Use FRV_SYM_LOCAL more widely to simplify and
+ improve some ugly conditions.
+ (elf32_frv_relocate_section): Likewise. Reject inter-segment
+ relocations in fdpic.
+ (_frv_create_got_section): Create .rofixup.got section.
+ (struct _frv_dynamic_got_info): Added fixups.
+ (_frv_count_got_plt_entries): Account in-GOT relocations into
+ relocs32, relocsfd and relocsfdv. Account them into relocs or
+ fixups, as appropriate.
+ (elf32_frv_size_dynamic_sections): Size rofixup section. Simplify
+ sizing of gotrel.
+ (elf32_frv_finish_dynamic_sections): Verify that the right number
+ of relocations and fixups was generated.
+ (elf32_frv_check_relocs): Compute relocs32, relocsfd and
+ relocsfdv.
+ * elf32-frv.c (FRV_SYM_LOCAL): New macro, used instead of
+ SYMBOL_CALLS_LOCAL and SYMBOL_REFERENCES_LOCAL.
+ (FRV_FUNCDESC_LOCAL): New macro, used to decide whether a function
+ descriptor of a (formerly-)global symbol is local.
+ (struct frv_pic_relocs_info): Adjust comments.
+ (_frv_emit_got_relocs_plt_entries): Adjust.
+ (elf32_frv_relocate_section): Likewise.
+ (_frv_count_got_plt_entries): Likewise.
+ * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Don't add global
+ symbol's value to addend in the common preamble. Decay dynamic
+ symbols to section+offset if they bind or call locally, for GOT
+ and FUNCDESC_VALUE, respectively.
+ (elf32_frv_relocate_section): Likewise.
+ (elf32_frv_check_relocs): Don't register as dynamic symbols of
+ internal or hidden visibility.
+ 2003-09-17 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (_frv_emit_got_relocs_plt_entries): Get addend as
+ argument, so as to not call _bfd_elf_rel_local_sym to compute it.
+ (elf32_frv_relocate_section): Pass relocation addend in. Use
+ original relocation addend to look up the got relocs/plt entries
+ table. Do not call _bfd_elf_rel_local_sym. Don't error out when
+ processing relocations that reference .scommon symbols.
+ 2003-09-15 Alexandre Oliva <aoliva@redhat.com>
+ Introduce support for dynamic linking.
+ * elf32-frv.c (R_FRV_FUNCDESC_VALUE): Mark it as 64 bits.
+ (elf32_frv_rel_32_howto, elf32_frv_rel_funcdesc_howto,
+ elf32_frv_rel_funcdesc_value_howto): New REL descriptors.
+ (frv_reloc_type_lookup): Return REL howtos for executables and
+ dynamic libraries.
+ (frv_info_to_howto_rel): New.
+ (struct frv_elf_link_hash_table): New.
+ (frv_hash_table, frv_got_section, frv_gotrel_section,
+ frv_plt_section, frv_pltrel_section, frv_relocs_info,
+ frv_got_initial_offset, frv_plt_initial_offset): New macros.
+ (frv_elf_link_hash_table_create): New.
+ (struct frv_pic_relocs_info): New.
+ (frv_pic_relocs_info_hash, frv_pic_relocs_info_eq): New.
+ (frv_pic_relocs_info_find): New.
+ (frv_pic_relocs_info_for_global, frv_pic_relocs_info_for_local):
+ New.
+ (FRV_LZPLT_BLOCK_SIZE, FRV_LZPLT_RESOLVE_LOC): New.
+ (_frv_add_dyn_reloc, _frv_osec_to_segment): New.
+ (_frv_emit_got_relocs_plt_entries): New.
+ (elf32_frv_relocate_section): Add support for dynamic linking.
+ Handle new relocations.
+ (_frv_create_got_section): New.
+ (elf32_frv_create_dynamic_sections): New.
+ (ELF_DYNAMIC_INTERPRETER): New.
+ (struct _frv_dynamic_got_info): New.
+ (_frv_count_got_plt_entries): New.
+ (struct _frv_dynamic_got_plt_info): New.
+ (_frv_compute_got_alloc_data): New.
+ (_frv_get_got_entry, _frv_get_fd_entry): New.
+ (_frv_assign_got_entries, _frv_assign_plt_entries): New.
+ (_frv_resolve_final_relocs_info): New.
+ (elf32_frv_size_dynamic_sections): New.
+ (elf32_frv_finish_dynamic_sections): New.
+ (elf32_frv_adjust_dynamic_symbol): New.
+ (elf32_frv_finish_dynamic_symbol): New.
+ (elf32_frv_check_relocs): Handle new relocs. Explain how the
+ whole thing works.
+ (elf_info_to_howto_rel): Define.
+ (bfd_elf32_bfd_link_hash_table_create): Define.
+ (elf_backend_create_dynamic_sections): Define.
+ (elf_backend_adjust_dynamic_symbol): Define.
+ (elf_backend_size_dynamic_sections): Define.
+ (elf_backend_finish_dynamic_symbol): Define.
+ (elf_backend_finish_dynamic_sections): Define.
+ (elf_backend_want_got_sym): Define.
+ (elf_backend_got_header_size): Define.
+ (elf_backend_want_got_plt): Define.
+ (elf_backend_plt_readonly): Define.
+ (elf_backend_want_plt_sym): Define.
+ (elf_backend_plt_header_size): Define.
+ (elf_backend_may_use_rel_p): Define.
+ (elf_backend_may_use_rela_p): Define.
+ (elf_backend_default_use_rela_p): Define.
+ 2003-08-08 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (R_FRV_FUNCDESC_VALUE, R_FRV_FUNCDESC_GOTOFF12,
+ R_FRV_FUNCDESC_GOTOFFHI, R_FRV_FUNCDESC_GOTOFFLO, R_FRV_GOTOFF12,
+ R_FRV_GOTOFFHI, R_FRV_GOTOFFLO): New.
+ (frv_reloc_map): Map the corresponding BFD relocs to them.
+ (frv_reloc_type_lookup): ... and back to BFD relocs.
+ * reloc.c: New relocs.
* bfd-in2.h, libbfd.h: Rebuilt.
- * elf64-x86-64.c (x86_64_elf_howto): Fix size fields for 32-bit
- relocs. Add TLS relocs.
- (x86_64_reloc_map): Add TLS relocs.
- (elf64_x86_64_info_to_howto): Adjust for added TLS relocs.
- (struct elf64_x86_64_link_hash_entry): Add tls_type field.
- (GOT_UNKNOWN, GOT_NORMAL, GOT_TLS_GD, GOT_TLS_IE): Define.
- (elf64_x86_64_hash_entry): Define.
- (struct elf64_x86_64_obj_tdata): New.
- (elf64_x86_64_tdata, elf64_x86_64_local_got_tls_type): Define.
- (struct elf64_x86_64_link_hash_table): Add tls_ld_got.
- (link_hash_newfunc): Initialize tls_type.
- (elf64_x86_64_link_hash_table_create): Initialize tls_ld_got.
- (elf64_x86_64_copy_indirect_symbol): Swap tls_type if necessary.
- (elf64_x86_64_mkobject): New.
- (elf64_x86_64_elf_object_p): Allocate struct elf64_x86_64_obj_tdata.
- (elf64_x86_64_tls_transition): New.
- (elf64_x86_64_check_relocs): Add r_type variable and use it.
- Handle TLS relocs.
- (elf64_x86_64_gc_sweep_hook): Handle TLS relocs.
- (allocate_dynrelocs): Allocate GOT space for TLS relocs.
- (elf64_x86_64_size_dynamic_sections): Likewise.
- (dtpoff_base, tpoff): New.
- (elf64_x86_64_relocate_section): Handle TLS relocs.
- (elf64_x86_64_finish_dynamic_symbol): Only handle non-TLS GOT
- entries.
- (bfd_elf64_mkobject): Define.
-
- * elf32-i386.c (elf_i386_check_relocs) [R_386_TLS_LE]: Set
- DF_STATIC_TLS if shared.
-
-2002-09-26 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (_bfd_mips_elf_fake_sections): Don't emit unneeded
- empty relocation sections.
-
-2002-09-26 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc_build_one_stub): Don't build glink stubs here.
- (ppc64_elf_build_stubs): Build them here instead.
-
-2002-09-24 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-sparc.c (elf32_sparc_relocate_section): Put R_SPARC_RELATIVE
- addend into r_addend, not *r_offset.
- (elf32_sparc_finish_dynamic_symbol): Likewise.
- * elf64-sparc.c (sparc64_elf_finish_dynamic_symbol): Clear xword at
- R_SPARC_RELATIVE's r_offset.
-
-2002-09-23 Nathan Tallent <eraxxon@alumni.rice.edu>
-
- * dwarf2.c (decode_line_info): Update to correctly decode
- the (non-standard DWARF2) out-of-order address sequences
- generated by the Intel C++ 6.0 compiler for ia64-Linux.
-
-2002-09-23 Mark Elbrecht <snowball3@softhome.net>
-
- * config.bfd: For DJGPP targets, match with any cpu and any machine.
-
-2002-09-23 Alan Modra <amodra@bigpond.net.au>
-
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Zero relocs
- for discarded FDEs. Remove redundant assignment.
- * elflink.h (elf_bfd_discard_info): Save edited relocs.
-
-2002-09-22 H.J. Lu <hjl@gnu.org>
-
- * elf64-alpha.c (elf64_alpha_merge_ind_symbols): Don't merge
- the relocation count between different .reloc sections.
-
-2002-09-21 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_relocate_section): Allow ".sbss.*" and
- ".sdata.*" for R_PPC_SDAREL16, ".sbss2*" and ".sdata2*" for
- R_PPC_EMB_SDA2REL. Similarly for R_PPC_EMB_SDA21 and
- R_PPC_EMB_RELSDA.
-
- * elfcode.h (elf_slurp_reloc_table_from_section): Make "symcount"
- unsigned. Move "symcount" assignment out of loop.
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * configure: Regenerate.
- * po/SRC-POTFILES.in: Regnerate.
-
-2002-09-19 Nathan Tallent <eraxxon@alumni.rice.edu>
-
- * dwarf2.c (_bfd_dwarf2_find_nearest_line): If address length is
- zero, set it to 8 for (non-standard) 64-bit DWARF2 formats
- (e.g. IRIX64).
-
-2002-09-19 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-ppc.c (ppc_elf_finish_dynamic_symbol): Clear .got word
- even if generating R_PPC_RELATIVE reloc.
- (ppc_elf_relocate_section): Make sure relocation is performed
- if skip == -2. Clear memory at r_offset when creating dynamic
- relocation.
-
-2002-09-19 Jakub Jelinek <jakub@redhat.com>
-
- * reloc.c (BFD_RELOC_386_TLS_TPOFF, BFD_RELOC_386_TLS_IE,
- BFD_RELOC_386_TLS_GOTIE): Add.
+ 2003-08-04 Alexandre Oliva <aoliva@redhat.com>
+ * elf32-frv.c (R_FRV_GOT12, R_FRV_GOTHI, R_FRV_GOTLO,
+ R_FRV_FUNCDESC, R_FRV_FUNCDESC_GOT12, R_FRV_FUNCDESC_GOTHI,
+ R_FRV_FUNCDESC_GOTLO): New.
+ (frv_reloc_map): Map the corresponding BFD relocs to them.
+ (frv_reloc_type_lookup): ... and back to BFD relocs.
+ * reloc.c: New relocs.
* bfd-in2.h, libbfd.h: Rebuilt.
- * elf32-i386.c (elf_howto_table): Add R_386_TLS_TPOFF, R_386_TLS_IE
- and R_386_TLS_GOTIE.
- (elf_i386_reloc_type_lookup): Handle it.
- (struct elf_i386_link_hash_entry): Change tls_type type to unsigned
- char instead of enum, change GOT_* into defines.
- (GOT_TLS_IE_POS, GOT_TLS_IE_NEG, GOT_TLS_IE_BOTH): Define.
- (elf_i386_tls_transition): Handle R_386_TLS_IE and R_386_TLS_GOTIE.
- (elf_i386_check_relocs): Likewise. Avoid crash if local symbol is
- accessed both as normal and TLS symbol. Move R_386_TLS_LDM and
- R_386_PLT32 cases so that R_386_TLS_IE can fall through.
- Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs.
- (elf_i386_gc_sweep_hook): Handle R_386_TLS_IE and R_386_TLS_GOTIE.
- Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs.
- (allocate_dynrelocs): Allocate 2 .got and 2 .rel.got entries if
- tls_type is GOT_TLS_IE_BOTH.
- (elf_i386_size_dynamic_sections): Likewise.
- (elf_i386_relocate_section): Handle R_386_TLS_IE and R_386_TLS_GOTIE.
- Handle R_386_TLS_LE_32 and R_386_TLS_LE in shared libs.
- (elf_i386_finish_dynamic_symbol): Use tls_type & GOT_TLS_IE to catch
- all 4 GOT_TLS_* TLS types.
-
-2002-09-19 Nick Clifton <nickc@redhat.com>
-
- * elflink.h (elf_fix_symbol_flags): When examining weak symbols,
- follow indirect links.
-
-2002-09-19 Nathan Tallent <eraxxon@alumni.rice.edu>
-
- * ecoffswap.h (ecoff_swap_pdr_in) <isym, iline>: Update to
- correctly sign-extend 32-bit ECOFF null values (0xffffffff, -1)
- on 64 bit machines.
- (ecoff_swap_sym_in) <iss>: Likewise.
- * ecoff.c (_bfd_ecoff_slurp_symbolic_info): Fix error reading
- ECOFF information: 'ioptMax' refers to the actual *size*
- of the optimization symtab, not the number of entries.
-
-2002-09-19 Daniel Jacobowitz <drow@mvista.com>
-
- * elf32-arm.h (elf32_arm_adjust_dynamic_symbol): Update
- ELF_LINK_HASH_NEEDS_PLT logic.
-
-2002-09-18 Daniel Jacobowitz <drow@mvista.com>
-
- * elfcode.h (elf_slurp_reloc_table_from_section): Check
- correct relocation count.
-
-2002-09-17 Daniel Jacobowitz <drow@mvista.com>
-
- * bfd-in.h (bfd_get_dynamic_symcount): Define.
- * bfd.c (struct _bfd): Add dynsymcount.
- * bfd-in2.h: Regenerated.
- * elf.c (_bfd_elf_canonicalize_dynamic_symtab): Set
- abfd->dynsymcount.
- * elfcode.h (elf_slurp_reloc_table_from_section): Check
- for overflow.
-
-2002-09-17 Stan Cox <scox@redhat.com>
-
- * elf64-mips.c (mips_elf64_be_swap_reloca_out): Handle type2 and type3.
- (mips_elf64_final_gp): Don't make up gp value.
- * elfn32-mips.c (mips_elf_final_gp): Likewise.
- * elfxx-mips.c (_bfd_mips_elf_final_link): Always create
- .MIPS.options/.options section.
-
-2002-09-17 David O'Brien <obrien@FreeBSD.org>
-
- * elf32-i386-fbsd.c: Always label using the EI_OSABI method.
- It is benign for FreeBSD < 4.1. Minor reformatting.
- * elf64-alpha-fbsd.c: Likewise.
-
-2002-09-17 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-i386.c (elf_i386_relocate_section) [R_386_TLS_TPOFF32]: Negate
- addend.
-
-2002-09-17 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-alpha.c (alpha_elf_size_info): Make static.
-
-2002-09-17 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * coff-tic4x.c: Add function declarations and ATTRIBUTE_UNUSED.
- * cpu-tic4x.c: Ditto.
-
-2002-09-17 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elf64-mips.c (define elf_backend_ignore_discarded_relocs): Remove
- duplicate define.
-
-2002-09-16 Bruno Haible <bruno@clisp.org>
-
- * elf32-i386.c: Don't defined ELF_ARCH etc. if this file is included
- by a target variant implementation.
- * elf64-alpha.c: Likewise.
- * elf32-i386-fbsd.c: New file.
- * elf64-alpha-fbsd.c: New file.
- * targets.c: Support bfd_elf32_i386_freebsd_vec and
- bfd_elf64_alpha_freebsd_vec.
- * configure.in: Accept the vectors bfd_elf32_i386_freebsd_vec,
- bfd_elf64_alpha_freebsd_vec.
- * Makefile.am (BFD32_BACKENDS): Add elf32-i386-fbsd.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-i386-fbsd.c.
- (BFD64_BACKENDS): Add elf64-alpha-fbsd.lo.
- (BFD64_BACKENDS_CFILES): Add elf64-alpha-fbsd.c.
- (elf32-i386-fbsd.lo, elf64-alpha-fbsd.lo): Add dependencies.
- * config.bfd: For FreeBSD targets, set targ_defvec to a FreeBSD
- specific targets. Define OLD_FREEBSD_ABI_LABEL if appropriate.
-
-2002-09-12 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-i386.c (dtpoff_base, tpoff): Don't crash if tls_segment is
- NULL.
- (elf_i386_relocate_section): Return false after printing error about
- unresolvable relocation.
-
-2002-09-12 Nick Clifton <nickc@redhat.com>
-
- * elf32-arm.h (elf32_arm_final_link_relocate): Fix handling of
- R_ARM_THM_PC11.
-
-2002-09-11 Jeffrey Law <law@redhat.com>
-
- * elf32-h8300.c (elf32_h8_relax_section): Fix typo.
-
-2002-09-11 Andrew Haley <aph@cambridge.redhat.com>
-
- * elf.c (_bfd_elf_find_nearest_line): Check functionname_ptr and
- line_ptr before deciding we've found a symbol.
-
-2002-09-11 Nick Clifton <nickc@redhat.com>
-
- * po/da.po: New Danish translation file.
- * configure.in (LINGUAS): Add 'da'.
- * configure: Regenerate.
-
-2002-09-10 Michael Snyder <msnyder@redhat.com>
-
- * irix-core.c (do_sections, do_sections64): New functions.
- (irix_core_core_file_p): Call new functions do_sections,
- do_sections64, depending on corefile (32-bit or 64-bit).
-
-2002-09-09 Richard Henderson <rth@redhat.com>
-
- * elfxx-ia64.c (elfNN_ia64_relax_section): Handle PCREL21M
- and PCREL21F like PCREL21B.
-
-2002-09-04 Kevin Buettner <kevinb@redhat.com>
-
- * config.bfd (mips*-*-irix6*): Add new ABI vectors. Make n32 default
- vector.
-
-2002-09-02 Nick Clifton <nickc@redhat.com>
-
- * elf32-v850.c (v850_elf_final_link_relocate): Use helpful
- names instead of cryptically overloaded bfd_reloc error
- codes.
- (v850_elf_relocate_section): Likewise.
- (v850_elf_relax_section): Replace caching of external symbols
- with caching of internal symbols obtained from calling
- bfd_elf_get_elf_syms().
- Fixup problems with freeing cached allocated memory blocks.
-
-2002-09-02 Alan Modra <amodra@bigpond.net.au>
-
- * cpu-pj.c (scan_mach, compatible, arch_info_struct): Remove.
- (bfd_pj_arch): Use bfd_default_scan.
- * cpu-v850.c (scan): Remove.
- (N): Use bfd_default_scan.
- * cpu-z8k.c (scan_mach): Remove.
- (arch_info_struct, bfd_z8k_arch): Reorganize so that the default is
- first. Use bfd_default_scan.
-
- * ecoff.c (_bfd_ecoff_set_arch_mach_hook): Don't use hard-coded
- bfd_mach constants.
- (ecoff_get_magic): Likewise.
- * elf32-v850.c (v850_elf_object_p): Likewise.
- (v850_elf_final_write_processing): Likewise.
- * mipsbsd.c (MY(set_arch_mach)): Likewise.
- (MY(write_object_contents)): Likewise.
- * coff64-rs6000.c (xcoff64_write_object_contents): Likewise.
- * coffcode.h (coff_write_object_contents): Likewise.
- (coff_set_arch_mach_hook): Add comment describing machine == 0.
- Remove unnecessary "machine" assignments.
- (coff_write_relocs): Test for the absolute section sym by testing
- section and flags.
-
- * aoutx.h (NAME(aout,machine_type)): Recognize bfd_mach_i386_i386
- and bfd_mach_i386_i386_intel_syntax.
- * pdp11.c (NAME(aout,machine_type)): Likewise.
-
-2002-08-30 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * bfd-in.h (align_power): Cast constants to bfd_vma type.
- * bfd-in2.h (align_power): Likewise.
-
-2002-08-30 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
-
- * cpu-avr.c (compatible): Don't use hard-coded mach constants.
- * cpu-powerpc.c (powerpc_compatible): Likewise.
- * cpu-rs6000.c (rs6000_compatible): Likewise.
-
-2002-08-28 Catherine Moore <clm@redhat.com>
-
- * elf32-v850.c (v850_elf_reloc_map): Add new relocs.
- (v850-elf-reloc): Don't resolve pc relative relocs.
- (v850_elf_ignore_reloc): New routine.
- (v850_elf_final_link_relocate): Handle new relocs.
- (v850_elf_relax_delete_bytes ): New routine.
- (v850_elf_relax_section): New routine.
- (bfd_elf32_bfd_relax_section): Define.
- (HOWTO): New entries for new relocs.
- * reloc.c (BFD_RELOC_V850_LONGCALL): New reloc.
- (BFD_RELOC_V850_LONGJUMP): New reloc.
- (BFD_RELOC_V850_ALIGN): New reloc.
- * archures.c: Remove redundant v850ea architecture.
- * cpu-v850.c: Remove redundant v850ea support.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Regenerated.
-
-2002-08-28 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * config.bfd: Add tic4x-*-*coff* and c4x-*-*coff* target.
- * configure.in: Add tic4x_coff vector files.
- * configure: Regenerate.
- * Makefile.am: Add tic4x target.
- * Makefile.in: Regenerate.
-
-2002-08-27 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
-
- * archures.c: Add the BFD arch type tic4x.
- * bfd-in.h: Add BFD_IN_MEMORY flag.
- * coff-tic4x.c: New file.
- * coffswap.h (coff_swap_sym_out): Add preadjuster.
- * cpu-tic4x.c: New file.
- * targets.c: Added tic4x- in list of xvecs.
- * ticoff.h: New file.
- * bfd-in2.h: Regenerate.
-
-2002-08-27 Adam Nemet <anemet@lnxw.com>
-
- * elf32-arm.h (elf32_arm_finish_dynamic_sections): Set the last
- bit of DT_INIT and DT_FINI for Thumb functions.
-
-2002-08-26 Alan Modra <amodra@bigpond.net.au>
-
- * coffcode.h (coff_set_arch_mach_hook): Handle W65MAGIC.
-
-2002-08-26 Alan Modra <amodra@bigpond.net.au>
-
- * aoutx.h (NAME(aout,reloc_type_lookup)): Handle BFD_RELOC_8.
-
-2002-08-24 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf32-sh.c (sh_elf_copy_indirect_symbol): New.
- (create_got_section, allocate_dynrelocs, readonly_dynrelocs):
- Likewise.
- (struct elf_sh_pcrel_relocs_copied): Removed.
- (struct elf_sh_dyn_relocs): New.
- (struct elf_sh_link_hash_entry): Replace pcrel_relocs_copied
- field with dyn_relocs.
- (struct elf_sh_link_hash_table): Add short-cuts to get dynamic
- sections and sym_sec.
- (sh_elf_link_hash_newfunc): Clear dyn_relocs.
- (sh_elf_link_hash_table_create): Clear shorts-cuts and sym_sec.
- (sh_elf_create_dynamic_sections): Use create_got_section instead
- of _bfd_elf_create_got_section.
- (sh_elf_check_relocs): Likewise.
- (sh_elf_create_dynamic_sections): Use short-cuts to the dynamic
- sections.
- (sh_elf_adjust_dynamic_symbol, sh_elf_size_dynamic_sections,
- sh_elf_relocate_section, sh_elf_check_relocs,
- sh_elf_finish_dynamic_symbol, sh_elf_finish_dynamic_sections):
- Likewise.
- (sh_elf_adjust_dynamic_symbol): Handle nocopyreloc. Keep the
- dynamic relocations and avoiding the copy relocation when we
- didn't find any dynamic relocations in the section which has
- contents or is read-only.
- (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New.
- (sh_elf_size_dynamic_sections): Don't reset the size of
- .rela.got section even if dynamic_sections_created flag is off.
- Don't use sh_elf_discard_copies. Scan all input bfd and use
- allocate_dynrelocs. Call readonly_dynrelocs to determine
- whether we need DT_TEXTREL.
- (sh_elf_adjust_dynamic_symbol): Use plt.refcount to determine
- whether the symbol was never referred to.
- (sh_elf_relocate_section): Use WILL_CALL_FINISH_DYNAMIC_SYMBOL.
- (sh_elf_gc_sweep_hook): Fill with the real sweep function.
- (sh_elf_check_relocs): Call create_got_section if the short-cut
- to .got is null. Increment reference counters only instead of
- allocating space on dynamic sections here. Don't conditionalize
- uninitialized got.offset value when marking the symbol as a
- global offset table entry. Keep relocations for symbols satisfied
- by a dynamic library to avoid copy relocations for the symbol.
- Set dynobj field of an elf hash table if needed.
- (sh_elf_finish_dynamic_sections): Handle null section pointer
- correctly.
- (elf_backend_copy_indirect_symbol): Defined.
- (elf_backend_can_refcount): Defined.
-
-2002-08-23 Nick Clifton <nickc@redhat.com>
-
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Undo
- previous change. Add comment explaining why.
-
-2002-08-23 Stephen Clarke <stephen.clarke@superh.com>
-
- * elf32-sh.c (elf_sh_plt0_entry_be, elf_sh_plt0_entry_le): Copy
- contents of .got.plt[2] to tr0, not address of .got.plt.
- (sh_elf_finish_dynamic_symbol): Do not apply GOT_BIAS when
- patching absolute plt entry. For shmedia plt entry, set bottom bit
- of branch to plt0 as this is a branch to an shmedia instruction.
- * elf64-sh64.c (elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le):
- Copy contents of .got.plt[2] to tr0, not address of .got.plt.
- (elf_sh64_plt_entry_be, elf_sh64_plt_entry_le): Use ptrel to
- branch to plt0.
- (sh64_elf64_finish_dynamic_symbol): Do not apply GOT_BIAS when
- patching absolute plt entry. For shmedia plt entry, branch to
- plt0 is now ptrel, so use relative offset. Set bottom bit of
- branch target as it is a branch to an shmedia instruction.
-
-2002-08-23 Stephen Clarke <stephen.clarke@superh.com>,
- Richard Shann <richard.shann@superh.com>
-
- * elf32-sh.c (sh_elf_finish_dynamic_sections): Set LSB of DT_INIT
- value if .init is an SHmedia function. Similarly for DT_FINI.
- * elf64-sh64.c (sh64_elf64_finish_dynamic_sections): Likewise.
-
-2002-08-23 Stephen Clarke <stephen.clarke@superh.com>
-
- * elf32-sh.c (sh_elf_size_dynamic_sections): Zero initialize
- dynamic section.
- * elf64-sh64.c (sh64_elf64_size_dynamic_sections): Likewise.
-
-2002-08-22 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Use a simple
- byte read when reading the return address register column.
-
-2002-08-22 Nick Clifton <nickc@redhat.com>
-
- * config.bfd: Add powepc64-*-*bsd* target.
-
-2002-08-22 Graeme Peterson <gp@qnx.com>
-
- * Makefile.am: Add entries for elf32-shqnx.c
- * Makefile.in: Regenerate.
- * config.bfd: Add support sh-*-nto* target.
- * configure.in: Add support for bfd_elf32_sh{l}qnx_vec.
- * configure: Regenerate.
- * elf32-qnx.h: Changed typo "elf_i386qnx_*" to "elf_qnx_*" .
- * elf32-sh.c: Do not include elf32-target.h if
- ELF32_SH_C_INCLUDED is defined.
- * elf32-shqnx.c: New file: Support for QNX.
- * targets.c: Add bfd_elf32_sh{l}qnx_vec.
-
-2002-08-22 Nick Clifton <nickc@redhat.com>
-
- * po/tr.po: Updated Turkish translation.
-
- * syms.c (_bfd_generic_read_minisymbols): Set bfd_error if the
- symbols are not read.
-
-2002-08-22 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-m68hc11.c: Formatting fixes.
- (elf32_m68hc11_gc_mark_hook): Correct params. Remove unnecessary test.
- * elf32-m68hc12.c: Formatting fixes.
- (elf32_m68hc11_gc_mark_hook): Correct params. Remove unnecessary test.
-
-2002-08-22 Alan Modra <amodra@bigpond.net.au>
-
- * coff-rs6000.c (rs6000coff_vec <object_flags>): Add SEC_CODE and
- SEC_DATA.
- (pmac_xcoff_vec): Likewise.
- * coff64-rs6000.c (rs6000coff64_vec): Likewise.
- (aix5coff64_vec): Likewise.
-
-2002-08-22 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct elf_backend_data): Add struct elf_backend_data
- param to elf_backend_copy_indirect_symbol.
- (_bfd_elf_link_hash_copy_indirect): Likewise.
- * elflink.h (elf_add_default_symbol, elf_fix_symbol_flags): Adjust
- calls to copy_indirect_symbol.
- * elf32-hppa.c (elf32_hppa_copy_indirect_symbol): Likewise.
- * elf32-i386.c (elf_i386_copy_indirect_symbol): Likewise.
- * elf32-s390.c (elf_s390_copy_indirect_symbol): Likewise.
- * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Likewise.
- * elf64-s390.c (elf_s390_copy_indirect_symbol): Likewise.
- * elf64-x86-64.c (elf64_x86_64_copy_indirect_symbol): Likewise.
- * elfxx-ia64.c (elfNN_ia64_hash_copy_indirect): Likewise.
- * elfxx-mips.c (_bfd_mips_elf_copy_indirect_symbol): Likewise.
- * elfxx-mips.h (_bfd_mips_elf_copy_indirect_symbol): Likewise.
- * elf.c (_bfd_elf_link_hash_copy_indirect): Likewise. Properly
- test refcounts for "used" values.
-
-2002-08-21 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Add PARAMS to
- argument declaration.
-
-2002-08-19 Elena Zannoni <ezannoni@redhat.com>
-
- * archures.c (bfd_mach_ppc_e500): Added.
- * bfd-in2.h: Rebuilt.
- * cpu-powerpc.c (bfd_powerpc_archs): Added e500.
-
-2002-08-19 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-m68hc12.c (elf_backend_can_gc_sections): False.
-
-2002-08-17 Andrew Cagney <ac131313@redhat.com>
-
- * elf.c (bfd_elf_get_elf_syms): Change type of `esym' to
- `bfd_byte'.
-
-2002-08-17 Stan Cox <scox@redhat.com>
-
- * elfxx-mips.c (_bfd_mips_elf_modify_segment_map): Use the
- IRIX 6 segment layout for NEWABI.
-
-2002-08-16 Stephen Clarke <stephen.clarke@superh.com>
-
- * elf32-sh.c (sh_elf_gc_mark_hook): For sh64, skip indirect
- symbols when looking for section referred to by a relocation.
- * elf64-sh.c (sh_elf64_gc_mark_hook): Likewise.
-
-2002-08-15 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-i370.c: Move reloc enum to include/elf/i370.h.
-
-2002-08-15 Hans-Peter Nilsson <hp@axis.com>
-
- * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Add
- missing check for whether the symbol is referenced by DSO before
- unexporting it as an unneeded dynamic symbol.
-
-2002-08-14 H.J. Lu <hjl@gnu.org>
-
- * libbfd.h: Regenerate.
-
-2002-08-14 H.J. Lu <hjl@gnu.org>
-
- * config.bfd: Always add 64bit vectors to 32bit Linux/mips.
-
-2002-08-14 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc11.c (m68hc11_relax_group): New to relax group of
- instructions.
- (m68hc11_direct_relax): New to define table of relaxable instructions.
- (find_relaxable_insn): New, find a relaxable insn.
- (compare_reloc): New to compare two relocs.
- (m68hc11_elf_relax_section): New, relax text sections.
- (m68hc11_elf_relax_delete_bytes): New, delete bytes and adjust branchs.
- (elf32_m68hc11_check_relocs): New function for GC support.
- (elf32_m68hc11_relocate_section): New function for GC support.
- (bfd_elf32_bfd_relax_section): Define to support linker relaxation.
- (elf_backend_check_relocs): Likewise.
- (elf_backend_relocate_section): Likewise.
-
-2002-08-13 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (NAME(bfd_elf,size_dynamic_sections): Don't count
- definitions in shared objects when checking symbol with
- undefined version.
-
-2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc11.c (elf32_m68hc11_gc_mark_hook): New for section GC.
- (elf32_m68hc11_gc_sweep_hook): Likewise.
- (elf_backend_gc_mark_hook): Define for GC section support.
- (elf_backend_gc_sweep_hook): Likewise.
- (elf_backend_can_gc_sections): Likewise.
-
- * elf32-m68hc12.c: Likewise.
-
-2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc11.c (_bfd_m68hc11_elf_print_private_bfd_data): New.
- (_bfd_m68hc11_elf_merge_private_bfd_data): New function.
- (_bfd_m68hc11_elf_set_private_flags): New function.
- Use them to set/check/print ELF flags specific to 68HC11.
-
- * elf32-m68hc12.c (_bfd_m68hc12_elf_print_private_bfd_data): New.
- (_bfd_m68hc12_elf_merge_private_bfd_data): New function.
- (_bfd_m68hc12_elf_set_private_flags): New function.
- Use them to set/check/print ELF flags specific to 68HC12.
-
-2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * elf32-m68hc11.c (elf_m68hc11_howto_table): Add the new relocs;
- fix masks for PC-rel relocs.
- (m68hc11_elf_ignore_reloc): New function.
-
- * elf32-m68hc12.c (m68hc12_elf_special_reloc): New to handle specific
- 68HC12 banked addressing relocs.
- (m68hc12_phys_addr): New to compute physical address of banked memory.
- (m68hc12_phys_page): Likewise for page.
- (m68hc12_addr_is_banked): New to see if address is in banked area.
- (elf_m68hc12_howto_table): Add new relocs and rename to xx12.
-
-2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * reloc.c (BFD_RELOC_M68HC11_RL_JUMP, BFD_RELOC_M68HC11_RL_GROUP,
- BFD_RELOC_M68HC11_LO16, BFD_RELOC_M68HC11_PAGE,
- BFD_RELOC_M68HC11_24): New relocs for 68HC11/68HC12.
- * bfd-in2.h: Regenerate.
-
-2002-08-12 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_add_default_symbol): Preserve section across
- elf_merge_symbol.
-
-2002-08-09 Graeme Peterson <gp@qnx.com>
-
- * Makefile.am: Add entries for elf32-ppcqnx.c, and add
- elf32-qnx.h dependency to elfarmqnx-nabi.c and elf32-i386qnx.c.
- * Makefile.in: Regenerate.
- * config.bfd: Add support for powerpc{le}-*-nto targets.
- * configure.in: Add support for bfd_elf32_powerpc{le}qnx_vec.
- * configure: Regenerate.
- * elf32-i386qnx.c: Moved backend functions into a QNX specific
- common file "elf32-qnx.h", and now include that file.
- * elf32-qnx.h: New file: QNX specific common elf backend.
- * elf32-ppc.c: Do not include elf32-target.h if
- ELF32_PPC_C_INCLUDED is defined.
- * elf32-ppcqnx.c: New file: Support for QNX.
- * elfarmqnx-nabi.c: Include elf32-qnx.h for qnx elf backend.
- * targets.c: Add bfd_elf32_powerpc{le}qnx_vec.
-
-2002-08-09 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
-
-2002-08-09 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if
- g->global_gotsym is NULL.
-
-2002-08-08 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_add_default_symbol): Don't warn if a definition
- overrides an indirect versioned symbol.
-
-2002-08-08 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-i386.c (elf_i386_relocate_section): Fill in proper addend
- for R_386_TLS_TPOFF32 relocs against symndx 0.
-
-2002-08-07 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Check symbol
- with undefined version if needed.
- (elf_link_assign_sym_version): Match a default symbol with a
- version without definition. No need to hide the default
- definition separately.
-
-2002-08-08 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_output_extsym): Don't output symbols from
- SEC_EXCLUDE sections.
-
- * aoutx.h (aout_link_write_symbols): Correct handling of warning syms.
-
-2002-08-07 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (edit_opd): Arrange to drop symbols for discarded .opd
- entries.
-
-2002-08-07 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (mips_elf_create_dynamic_relocation): Cast signedness
- mismatch.
-
-2002-08-07 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (ABI_64_P): Remove superfluous check.
-
-2002-08-07 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elf32-mips.c (mips_reloc_map): Fix typo.
-
-2002-08-06 Alan Modra <amodra@bigpond.net.au>
-
- * xcofflink.c (xcoff_write_global_symbol): Set n_scnum for abs_section.
-
-2002-08-06 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_howto_raw): Zero all src_mask entries.
-
-2002-08-06 Alan Modra <amodra@bigpond.net.au>
-
- * libxcoff.h: Use PARAMS on function declarations.
- * coff-rs6000.c (xcoff_generate_rtinit): Simplify size calc.
- * coff64-rs6000.c (xcoff64_generate_rtinit): Likewise.
-
- * coff-rs6000.c: (xcoff_rtype2howto): Don't place reloc address in
- addend.
- * coff64-rs6000.c: (xcoff64_rtype2howto): Likewise.
-
-2002-08-06 Alan Modra <amodra@bigpond.net.au>
-
- * coff-rs6000.c: Formatting fixes.
- (xcoff_calculate_relocation): Use PARAMS in declaration.
- (xcoff_complain_overflow): Likewise.
- (xcoff_ppc_relocate_section): Use old-style function pointer call.
- (bfd_xcoff_backend_data): Remove useless comments.
- (rs6000coff_vec): Likewise.
- (bfd_pmac_xcoff_backend_data): Likewise.
- (pmac_xcoff_vec): Likewise.
-
- * coff64-rs6000.c: Formatting fixes.
- (xcoff64_calculate_relocation): Use PARAMS in declaration.
- (xcoff64_ppc_relocate_section): Use old-style function pointer call.
- (bfd_xcoff_backend_data): Remove useless comments.
- (rs6000coff64_vec): Likewise.
- (bfd_xcoff_aix5_backend_data): Likewise.
- (aix5coff64_vec): Likewise.
-
-2002-08-06 Alan Modra <amodra@bigpond.net.au>
-
- * coff-rs6000.c (xcoff_howto_table): Revert some of last change to
- mask entries. Use complain_overflow_dont for R_REF.
- (xcoff_reloc_type_ba): Revert last change.
- (xcoff_reloc_type_br): Likewise.
- (xcoff_reloc_type_crel): Likewise.
- (xcoff_ppc_relocate_section): Likewise.
- * coff64-rs6000.c (xcoff64_reloc_type_br): Likewise.
- (xcoff64_ppc_relocate_section): Likewise.
- (xcoff64_howto_table): Revert some of last change to mask entries.
- Use complain_overflow_dont for R_REF.
-
- * coff-rs6000.c (xcoff_howto_table): Fix src_mask entries. Make all
- relocs with bitsize == 16 have size = 1.
- (xcoff_reloc_type_ba): Correct src_mask and dst_mask adjustment.
- (xcoff_reloc_type_br): Likewise.
- (xcoff_reloc_type_crel): Likewise.
- (xcoff_ppc_relocate_section): Set up src_mask and dst_mask correctly.
- * coff64-rs6000.c (xcoff64_reloc_type_br): Correct src_mask and
- dst_mask adjustment.
- (xcoff64_ppc_relocate_section): Set up src_mask and dst_mask correctly.
- (xcoff64_howto_table): Fix src_mask entries. Make all relocs with
- bitsize == 16 have size = 1.
-
-2002-08-01 Denis Chertykov <denisc@overta.ru>
-
- * elf32-ip2k.c: Processor manufacturer changed to Ubicom.
- (struct misc): New field isymbuf. All free_* fields removed.
- (symbol_value): Pass in internal syms. No need to swap syms in.
- (ip2k_elf_relax_section): Use bfd_elf_get_elf_syms. Properly free
- possibly cached info.
- (tidyup_after_error): Removed.
- (ip2k_elf_relax_section_pass1): Don't use removed fields of struct
- misc. Use new field.
- (adjust_all_relocations): Use internal syms. No need to swap syms
- in and out.
- (add_page_insn): Don't use removed fields of struct misc.
-
-2002-08-01 Nick Clifton <nickc@redhat.com>
-
- * elf32-arm.h: Revert previous delta.
-
-2002-08-01 Nick Clifton <nickc@redhat.com>
-
- * configure.in (AM_INIT_AUTOMAKE): Bump version number.
- * configure: Regenerate.
-
-2002-07-31 H.J. Lu <hjl@gnu.org>
-
- * config.bfd: Add x86-64 vector to Linux/i386 if 64bit BFD is
- selected.
-
-2002-07-31 H.J. Lu <hjl@gnu.org>
-
- * config.bfd: Add n32 vectors to 32bit Linux/mips if 64bit BFD
- is selected.
-
-2002-07-31 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-i386.c (elf_i386_copy_indirect_symbol): Swap tls_type
- if _bfd_elf_link_hash_copy_indirect will swap got.refcount.
-
-2002-07-31 Ian Dall <ian@sibyl.beware.dropbear.id.au>
-
- * cpu-ns32k.c (_bfd_ns32k_put_immdeiate, _bfd_ns32k_get_immediate):
- There is no 8 byte relocation type for this architecture.
- (do_ns32k_reloc): Use bfd_vma instead of native types.
- (bfd_ns32k_put_immediate, _bfd_ns32k_relocate_contents) put_data
- returns void.
- (_bfd_ns32k_put_displacement): Don't check for overflow. We can
- rely on generic code to do that.
- * aout-ns32k.c (howto_table): Add appropriate overflow detection
- to all table entries.
- (_bfd_ns32k_relocate_contents): put_data returns void.
- * ns32k.h: (_bfd_ns32k_put_displacement, _bfd_ns32k_put_immediate)
- (_bfd_do_ns32k_reloc_contents): Fix prototypes. put data functions
- return void.
-
-2002-07-31 Ian Dall <ian@sibyl.beware.dropbear.id.au>
-
- * aoutx.h (aout_link_check_ar_symbols): Whether to include an
- archive object is target dependant.
-
-2002-07-31 Adam Nemet <anemet@lnxw.com>
-
- * elf32-arm.h (ARM_PLT_ENTRY_SIZE): Rename PLT_ENTRY_SIZE.
- (THUMB_PLT_ENTRY_SIZE): New macro.
- (PLT_ENTRY_SIZE): Return the appropriate *_PLT_ENTRY_SIZE.
- (elf32_arm_plt0_entry): Rename PLT_ENTRY_SIZE to
- ARM_PLT_ENTRY_SIZE.
- (elf32_arm_plt_entry): Likewise.
- (elf_backend_plt_header_size): Likewise.
- (elf32_thumb_plt0_entry): New global.
- (elf32_arm_finish_dynamic_sections): Use it. Put Thumb entries
- into .plt.thumb.
- (elf32_thumb_plt_entry): New global.
- (elf32_arm_finish_dynamic_symbol): Use it. Use .thumb.plt for
- Thumb entries. Set the bottom bit of the corresponding GOT entry
- for a Thumb PLT entry.
- (struct elf32_arm_plt_entry_info): New structure.
- (struct elf32_arm_link_hash_entry, plt_info): New member of this
- type.
- (elf32_arm_link_hash_newfunc): Initialize new member.
- (elf32_arm_final_link_relocate, R_ARM_THM_PC22 case): Handle
- relocations against the PLT.
- (elf32_arm_check_relocs, case R_ARM_PLT32 case): Set
- first_rel_type if this is the first time we encounter the symbol.
- (elf32_arm_check_relocs, case R_ARM_THM_PC22 case): New case.
- Determine if relocation needs a PLT entry. Set first_rel_type if
- this is the first time we encounter the symbol
- (elf32_arm_adjust_dynamic_symbol): Create PLT entries for Thumb
- functions as well.
- (elf32_arm_size_dynamic_sections): Handle .plt.thumb like .plt.
- (elf32_arm_create_dynamic_sections): New function. Create the
- .plt.thumb section.
- (elf_backend_create_dynamic_sections): Call it.
-
-2002-07-31 Nick Clifton <nickc@redhat.com>
-
- * bfd.c (bfd_alt_mach_code): Rename parameter 'index' to
- 'alternative' in order to avoid shadowing global symbol of the
- same name.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
- * libcoff.h: Regenerate.
-
-2002-07-31 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * Makefile.am: Add n32 ABI support.
- * Makefile.in: Regenerate.
- * config.bfd: Add n32 vectors to mips64*-*-linux* targets. Treat 64
- bit vectors for mips*-*-linux targets as optional.
- * configure.in: Add n32 ABI vectors.
- * configure: Regenerate.
- * elf32-mips.c (mips_elf32_object_p): Reject n32 ABI files.
- * elfn32-mips.c: New file, n32 ABI support.
- * targets.c: Add n32 ABI vectors.
-
-2002-07-30 Graeme Peterson <gp@qnx.com>
-
- * elfarmqnx-nabi.c: New file: Support for QNX.
- * config.bfd: Add support for arm-*-nto target.
- * configure.in: Add support for bfd_elf32_{big|little}armqnx_vec.
- * configure: Regenerate.
- * Makefile.am: Add entries for elfarmqnx-nabi.c.
- * Makefile.in: Regenerate.
- * elf32-arm.h (ELF_MAXPAGESIZE): Do not define if already defined.
- Do not define global function if ELFARM_NABI_C_INCLUDED is defined.
- * elfarm-nabi.c: Do not include elf32-arm.h if
- ELFARM_NABI_C_INCLUDED is defined.
- * targets.c: Add bfd_elf32_{big|little}armqnx_vec.
-
-2002-07-30 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
-
-2002-07-30 Jakub Jelinek <jakub@redhat.com>
-
- * elf.c (elf_fake_sections): Fix up .tbss sh_size and sh_type.
-
-2002-07-30 Alan Modra <amodra@bigpond.net.au>
-
- * aoutx.h (some_aout_object_p): Clean up tdata properly on error.
- * archive.c (bfd_generic_archive_p): Likewise.
- * coff-rs6000.c (_bfd_xcoff_archive_p): Likewise.
- (_bfd_xcoff_archive_p): Use bfd_scan_vma in place of strtol.
- * coff64-rs6000.c (xcoff64_slurp_armap): Likewise.
- (xcoff64_archive_p): Likewise.
- (xcoff64_openr_next_archived_file): Likewise.
- (xcoff64_archive_p): Clean up tdata properly on error.
- * coffgen.c (coff_real_object_p): Likewise.
- (coff_object_p): Release filehdr and opthdr.
- * ecoff.c (_bfd_ecoff_archive_p): Clean up tdata properly on error.
- * ieee.c (ieee_archive_p): Likewise.
- * ihex.c (ihex_object_p): Likewise.
- (ihex_mkobject): Always allocate tdata.
- * peicode.h (pe_ILF_object_p): Release bfd_alloc'd buffer on error.
- * srec.c (srec_mkobject): Always allocate tdata.
- (srec_object_p): Clean up tdata properly on error.
- (symbolsrec_object_p): Likewise.
- * versados.c (versados_object_p): Likewise.
- * vms-misc.c (_bfd_vms_get_record): Use bfd_malloc instead of malloc,
- and bfd_realloc instead of realloc.
- (add_new_contents): Use bfd_alloc instead of bfd_malloc for sections.
- * vms.c (vms_initialize): Always allocate tdata. Use bfd_alloc in
- place of bfd_malloc, simplifying error freeing. Free hash table too.
- (vms_object_p): Clean up tdata on error.
- (vms_mkobject): Don't complain on stderr if vms_initialize fails.
- (vms_close_and_cleanup): Adjust for bfd_alloc use.
-
-2002-07-30 Alan Modra <amodra@bigpond.net.au>
-
- * elfxx-ia64.c (elfNN_ia64_final_write_processing): Set e_flags.
-
-2002-07-26 Chris Demetriou <cgd@broadcom.com>
-
- * elfxx-mips.c (_bfd_mips_elf_merge_private_bfd_data): Merge ASE
- flags into resulting BFD.
-
-2002-07-26 Alan Modra <amodra@bigpond.net.au>
-
- From John Reiser <jreiser@BitWagon.com>
- * elf32-i386.c (elf_i386_link_hash_table_create): Clear
- tls_ldm_got.refcount.
-
-2002-07-25 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elf64-mips.c: Update TODO comment.
- (mips_elf64_higher_reloc,mips_elf64_highest_reloc,
- mips_elf64_gprel16_reloca): Remove prototypes.
- (mips16_jump_reloc,mips16_gprel_reloc): Add functions.
- (UNUSED_RELOC): Replace by EMPTY_RELOC.
- (mips_elf64_howto_table_rel): Use special R_MIPS_HI16 handling. Remove
- wrong comments. Remove disfunctional support of R_MIPS_HIGHER and
- R_MIPS_HIGHEST.
- (mips_elf64_howto_table_rela): Fix handling of R_MIPS_GPREL16 and
- R_MIPS_GOT16. Remove wrong comments.
- (elf_mips16_jump_howto,elf_mips16_gprel_howto,
- elf_mips_gnu_vtinherit_howto,elf_mips_gnu_vtentry_howto): New, code
- from elf32-mips.c.
- (mips_elf64_hi16_reloc): Fix formatting.
- (mips_elf64_higher_reloc,mips_elf64_highest_reloc): Remove.
- (mips_elf64_got16_reloc): Fix formatting. Remove superfluous code.
- Better comment. Fall back to R_MIPS_GOT_DISP instead of abort().
- (mips_elf64_gprel16_reloc): Make static. Add check for
- partial_inplace.
- (mips_elf64_gprel16_reloca): Remove.
- (mips_elf64_literal_reloc): New function.
- (mips_elf64_gprel32_reloc): Fix formatting.
- (mips_elf64_shift6_reloc): Fix comment. Make static.
- (mips16_jump_reloc,mips16_gprel_reloc): New functions, code from
- elf32-mips.c.
- (elf_reloc_map,mips_reloc_map): New mapping table, similiar as in
- elf32-mips.c
- (bfd_elf64_bfd_reloc_type_lookup): Use the mapping table. Enable GNU
- specific relocations.
- (mips_elf64_rtype_to_howto): Enable GNU specific relocations.
- (mips_elf64_object_p): Invert logic to check for SGI-ish ABI.
- (ELF_MAXPAGESIZE): Add comment.
-
-2002-07-25 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
- * po/es.po: Updated Spanish translation.
- * po/fr.po: Updated French translation.
-
-2002-07-25 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (_bfd_elf32_link_record_local_dynamic_symbol): Define
- as elf_link_record_local_dynamic_symbol.
- (_bfd_elf64_link_record_local_dynamic_symbol): Likewise.
- (elf_link_record_local_dynamic_symbol): Declare. Now returns int.
- * elflink.h (elf_link_record_local_dynamic_symbol): Move to..
- * elflink.c: .. here. Use bfd_elf_get_elf_syms. Check whether an
- attempt is made to record a symbol in a discarded section, and
- return `2' in that case.
-
-2002-07-24 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
- * po/es.po: Updated Spanish translation.
-
-2002-07-23 Alan Modra <amodra@bigpond.net.au>
-
- * po/SRC-POTFILES.in: Regenerate.
-
- * elf-hppa.h (elf_hppa_relocate_section): If relocatable, return
- immediately. Remove code handling relocatable linking.
- * elf32-avr.c (elf32_avr_relocate_section): Likewise.
- * elf32-cris.c (cris_elf_relocate_section): Likewise.
- * elf32-fr30.c (elf32_frv_relocate_section): Likewise.
- * elf32-frv.c (elf32_frv_relocate_section): Likewise.
- * elf32-h8300.c (elf32_h8_relocate_section): Likewise.
- * elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
- * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf32-v850.c (v850_elf_relocate_section): Likewise.
- * elf32-vax.c (elf_vax_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elf32-avr.c (elf_backend_rela_normal): Define.
- * elf32-cris.c: Likewise.
- * elf32-fr30.c: Likewise.
- * elf32-frv.c: Likewise.
- * elf32-h8300.c: Likewise.
- * elf32-hppa.c: Likewise.
- * elf32-ip2k.c: Likewise.
- * elf32-sparc.c: Likewise.
- * elf32-v850.c: Likewise.
- * elf32-vax.c: Likewise.
- * elf64-hppa.c: Likewise.
- * elf64-sparc.c: Likewise.
- * elf32-fr30.c (elf32_frv_relocate_section): Edit comment.
- * elf32-frv.c (elf32_frv_relocate_section): Likewise.
- * elf32-i860.c (elf32_i860_relocate_section): Likewise.
- * elf32-ip2k.c (ip2k_elf_relocate_section): Likewise.
- * elf32-m32r.c (m32r_elf_relocate_section): Likewise.
- * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise.
- * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise.
- * elf-m10200.c (USE_RELA): Don't define.
- * elf-m10300.c: Likewise.
- * elfarm-oabi.c: Likewise.
- * elf32-i370.c: Likewise.
- * elf32-ip2k.c: Likewise.
- * elf32-m68k.c: Likewise.
- * elf32-mcore.c: Likewise.
- * elf32-ppc.c: Likewise.
- * elf32-s390.c: Likewise.
- * elf32-vax.c: Likewise.
- * elf64-ppc.c: Likewise.
- * elf64-s390.c: Likewise.
- * elf64-x86-64.c: Likewise.
- * elfxx-ia64.c: Likewise.
- * elf32-avr.c (USE_REL): Don't undef.
- * elf32-ip2k.c: Likewise.
-
-2002-07-23 Nick Clifton <nickc@redhat.com>
-
- * elf-bfd.h (struct elf_backend_data): Add new bitfield
- 'want_p_paddr_set_to_zero'.
- * elfxx-target.h: Set default value for want_p_paddr_set_to_zero
- to false;
- * elfxx-ia64.c: Set want_p_paddr_set_zero for HPUX target.
- * elf.c (copy_private_bfd_data): Test want_p_paddr_set_zero.
-
-2002-07-23 Gabor Keresztfalvi <keresztg@mail.com>
-
- * nlmcode.h (nlm_swap_auxiliary_headers_out): Swapped the order of
- the MeSsAgEs and CoPyRiGhT tags to make >=NW4.x NLM loaders to
- show the Copyright string.
- Minor formatting tidy ups.
-
-2002-07-23 Nick Clifton <nickc@redhat.com>
-
- * po/fr.po: Updated French translation.
- * po/sv.po: Updated Swedish translation.
-
-2002-07-23 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_input_bfd): Don't change internal symbols
- when outputting relocs.
-
-2002-07-20 Jason Thorpe <thorpej@wasabisystems.com>
-
- * elf64-alpha.c (elf64_alpha_size_dynamic_sections): Only insert
- DT_PLTGOT into the dynamic section if there is a PLT.
-
-2002-07-19 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (_bfd_mips_elf_discard_info): New function, code from
- elf32-mips.c.
- (_bfd_mips_elf_write_section): Likewise.
- * elfxx-mips.h (_bfd_mips_elf_discard_info): New prototype.
- (_bfd_mips_elf_write_section): Likewise.
- * elf32-mips.c (elf32_mips_discard_info): Move to elfxx-mips.c.
- (elf32_mips_write_section): Likewise.
- * elf64-mips.c (_bfd_mips_elf_ignore_discarded_relocs): Use it.
- (_bfd_mips_elf_write_section): Likewise.
-
-2002-07-19 Alan Modra <amodra@bigpond.net.au>
-
- * elfxx-ia64.c: (elfNN_ia64_modify_segment_map): Properly scan
- PT_IA_64_UNWIND segments for a given section.
-
-2002-07-17 H.J. Lu <hjl@gnu.org>
-
- * Makefile.am: Fix a typo.
- * Makefile.in: Regenerate.
-
-2002-07-15 Denis Chertykov <denisc@overta.ru>
- Frank Ch. Eigler <fche@redhat.com>
- Ben Elliston <bje@redhat.com>
- Alan Lehotsky <alehotsky@cygnus.com>
- John Healy <jhealy@redhat.com>
- Graham Stott <grahams@redhat.com>
- Jeff Johnston <jjohnstn@redhat.com>
-
- * Makefile.am: Add support for ip2k.
- * Makefile.in: Regenerate.
- * doc/Makefile.in: Regenerate.
- * archures.c: Add support for ip2k.
- * config.bfd: Add support for ip2k.
- * configure.in: Add support for ip2k.
- * configure: Regenerate.
- * reloc.c: Add support for ip2k.
- * targets.c: Add support for ip2k.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
- * cpu-ip2k.c: New file.
- * elf32-ip2k.c: New file.
-
-2002-07-17 Ian Rickards <irickard@arm.com>
-
- * dwarf2.c (concat_filename): If we can't establish the directory
- just return the filename.
-
-2002-07-16 Moritz Jodeit <moritz@jodeit.org>
-
- * peXXigen.c (_bfd_XXi_swap_aouthdr_out): Correct order of memset args.
-
-2002-07-16 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h: Formatting fixes, tidy prototypes.
- (elf_link_assign_sym_version): Move common code out of loop.
-
-2002-07-16 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_input_bfd): Don't call reloc_emitter when
- reloc section size is zero. Correct reloc output location.
-
-2002-07-16 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * elf-hppa.h (elf_hppa_reloc_final_type): Use R_PARISC_PCREL16F as
- the final type for the e_fsel selector when generating PA2.0W code.
- (elf_hppa_relocate_insn): Provide support for PA2.0W 16-bit format 1
- relocations.
-
-2002-07-14 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_link_assign_sym_version): Hide the default
- definition if there is a hidden versioned definition.
-
-2002-07-12 Hans-Peter Nilsson <hp@axis.com>
-
- * elf32-cris.c (cris_elf_relocate_section): Drop nonsensical
- dynamic reference test in assertion when initializing GOT with
- static contents. Just assert that there are either no dynamic
- sections, the symbol is defined in the regular objects or that the
- symbol is undef weak. Tweak comment.
- (elf_cris_finish_dynamic_symbol): Emit .got reloc for a program
- only if the symbol isn't defined in the program and isn't undef
- weak.
- (elf_cris_adjust_dynamic_symbol): Simplify condition for getting
- rid of PLT entry: only do it if the symbol isn't defined in a DSO.
- When doing so, clear ELF_LINK_HASH_NEEDS_PLT. Tweak comments.
- (elf_cris_discard_excess_program_dynamics): Don't consider
- ELF_LINK_HASH_REF_DYNAMIC when omitting .got runtime relocs.
-
-2002-07-11 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-i386.c (elf_i386_relocate_section): Don't complain about
- unresolved debugging relocs in dynamic applications.
- * elf32-s390.c (elf_s390_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
- * elf64-s390.c (elf_s390_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
-
-2002-07-10 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ONES): Define.
- (ppc64_elf_howto_table): Use ONES here to avoid warnings. Fill in
- missing src_mask fields. Tweak R_PPC64_NONE, R_PPC64_COPY. Fill
- in missing dst_mask fields on R_PPC64_PLT32, R_PPC64_PLTREL32.
-
- * elf64-ppc.c (ppc64_elf_get_symbol_info): Delete.
- (ppc64_elf_set_private_flags): Delete.
- (ppc64_elf_section_from_shdr): Delete.
- (ppc64_elf_merge_private_bfd_data): Remove flag checking/merging code.
- (ppc64_elf_fake_sections): Delete.
- (bfd_elf64_bfd_set_private_flags): Don't define.
- (bfd_elf64_get_symbol_info): Likewise.
- (elf_backend_section_from_shdr): Likewise.
- (elf_backend_fake_sections): Likewise.
-
-2002-07-10 Marco Walther <Marco.Walther@sun.com>
-
- * elf.c: (assign_section_numbers) Set sh_entsize for .stab only
- when not already set.
- * elf64-sparc.c: (sparc64_elf_fake_sections): New function.
- (elf_backend_fake_sections): Define.
-
-2002-07-10 Alan Modra <amodra@bigpond.net.au>
-
- * merge.c (_bfd_merge_section): Remove redundant output_section check.
- Formatting.
- (_bfd_merge_sections): Don't set SEC_EXCLUDE on unused sections.
-
-2002-07-09 Hans-Peter Nilsson <hp@axis.com>
-
- * elf32-cris.c (cris_elf_relocate_section): Move sanity-check for
- NULL sym_hashes to just before use.
- <case R_CRIS_32_GOTREL>: In test for local symbol, accept also
- symbol with non-default visibility.
- <case R_CRIS_32_GOTREL, case R_CRIS_32_PLT_GOTREL>: Ditto.
- <case R_CRIS_8_PCREL, case R_CRIS_16_PCREL, case R_CRIS_32_PCREL>:
- Ditto.
- (cris_elf_gc_sweep_hook): Only decrease h->plt.refcount for
- symbol with non-default visibility.
- (cris_elf_check_relocs): At tests for local symbol before
- increasing h->plt.refcount, also check for non-default
- visibility. Ditto when checking for local symbol to eliminate
- pc-relative runtime relocs.
-
-2002-07-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c: Formatting.
- (IS_SOLARIS_PT_INTERP): Add p_paddr and p_memsz checks.
- (INCLUDE_SECTION_IN_SEGMENT): Remove IS_SOLARIS_PT_INTERP.
- (copy_private_bfd_data): Set p_vaddr on broken Solaris PT_INTERP
- segments.
-
-2002-07-07 Mark Mitchell <mark@codesourcery.com>
- Alan Modra <amodra@bigpond.net.au>
-
- * cofflink.c (_bfd_coff_final_link): On PE COFF systems, take into
- account the impact of relocation count overflow when computing
- section offsets.
- * coffcode.h (coff_write_relocs): Use obj_pe when deciding whether
- or not to apply the PE COFF reloc overflow handling. Fix a
- fencepost error in deciding whether or not to use that technique.
-
-2002-07-07 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct elf_reloc_cookie): Remove locsym_shndx,
- change type of locsyms.
- (bfd_elf_get_elf_syms): Declare.
- * elf.c (bfd_elf_get_elf_syms): New function.
- (group_signature): Use bfd_elf_get_elf_syms.
- (bfd_section_from_r_symndx): Likewise.
- * elfcode.h (elf_slurp_symbol_table): Likewise.
- * elflink.h (elf_link_is_defined_archive_symbol): Likewise.
- (elf_link_add_object_symbols): Likewise. Reorganise to increase
- locality of various data structures. Properly free internal relocs.
- (elf_bfd_final_link): Properly free internal relocs.
- (elf_link_check_versioned_symbol): Use bfd_elf_get_elf_syms.
- (elf_link_input_bfd): Likewise.
- (elf_gc_mark): Likewise. Properly free internal relocs.
- (elf_gc_sweep): Properly free internal relocs.
- (elf_reloc_symbol_deleted_p): No need to swap syms in.
- (elf_bfd_discard_info): Use bfd_elf_get_elf_syms. Properly free
- internal relocs.
- * elf-m10200.c (mn10200_elf_relax_section): Use bfd_elf_get_elf_syms.
- Properly free possibly cached info.
- (mn10200_elf_relax_delete_bytes): Remove symbol swapping code.
- (mn10200_elf_symbol_address_p): Pass in internal syms. Remove
- symbol swapping code.
- (mn10200_elf_get_relocated_section_contents): Use bfd_elf_get_elf_syms.
- Properly free possibly cached info.
- * elf-m10300.c (mn10300_elf_relax_section): As above for elf-m10200.c.
- (mn10300_elf_relax_delete_bytes): Likewise.
- (mn10300_elf_symbol_address_p): Likewise.
- (mn10300_elf_get_relocated_section_contents): Likewise.
- * elf32-h8300.c (elf32_h8_relax_section): As above for elf-m10200.c.
- (elf32_h8_relax_delete_bytes): Likewise.
- (elf32_h8_symbol_address_p): Likewise.
- (elf32_h8_get_relocated_section_contents): Likewise.
- * elf32-m32r.c (m32r_elf_relax_section): As above for elf-m10200.c.
- (m32r_elf_relax_delete_bytes): Likewise.
- (m32r_elf_get_relocated_section_contents): Likewise.
- * elf32-sh.c (sh_elf_reloc_loop): Free section contents using
- elf_section_data to determine whether cached.
- (sh_elf_relax_section): As above for elf-m10200.c.
- (sh_elf_relax_delete_bytes): Likewise.
- (sh_elf_get_relocated_section_contents): Likewise.
- * elf32-xstormy16.c (xstormy16_elf_relax_section): As above.
- * elf64-alpha.c (elf64_alpha_relax_section): As above. Also delay
- reading of local syms.
- * elf64-mmix.c (mmix_elf_relax_section): Likewise.
- * elf64-sh64.c (sh_elf64_get_relocated_section_contents): As above.
- * elfxx-ia64.c (elfNN_ia64_relax_section): As above.
- * elfxx-mips.c (_bfd_mips_elf_check_relocs): Properly free internal
- relocs.
- * elf32-arm.h (bfd_elf32_arm_process_before_allocation): Properly
- free internal relocs and section contents. Don't read symbols.
- * elf32-hppa.c (get_local_syms): Use bfd_elf_get_elf_syms.
- (elf32_hppa_size_stubs): Don't free local syms.
- * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Delay
- reading of local syms. Use bfd_elf_get_elf_syms. Properly free
- possibly cached info.
- * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise.
- * elf64-hppa.c (elf64_hppa_check_relocs): Use bfd_elf_get_elf_syms.
- * elf64-ppc.c (struct ppc_link_hash_table): Delete bfd_count and
- all_local_syms.
- (get_local_syms): Delete function.
- (edit_opd): Use bfd_elf_get_elf_syms. Free on error exit. Cache
- on exit.
- (ppc64_elf_size_stubs): Use bfd_elf_get_elf_syms. Free/cache on exit.
-
-2002-07-05 Jim Wilson <wilson@redhat.com>
-
- * syms.c (decode_section_type): New.
- (bfd_decode_symclass): Call decode_section_type.
-
-2002-07-04 Jakub Jelinek <jakub@redhat.com>
-
- * merge.c (_bfd_merged_section_offset): Avoid accessing byte before
- section content start.
- Reported by Michael Schumacher <mike@hightec-rt.com>.
-
-2002-07-04 Alan Modra <amodra@bigpond.net.au>
-
- * section.c (_bfd_strip_section_from_output): Remove unnecessary
- link order code. Don't actually remove the output section here;
- Just set a flag for the linker to do so.
- * elflink.c (_bfd_elf_link_renumber_dynsyms): Test for removed
- sections when setting up output section dynsyms.
-
-2002-07-04 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_add_object_symbols): Revert 1999-09-02 hpux
- fudge.
- * elf.c (bfd_section_from_shdr): Work around broken hpux shared
- libs here instead.
-
-2002-07-02 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf64-s390.c (create_got_section): Set .got section alignment to
- 8 bytes.
- (elf_s390_check_relocs): Set .rela.dyn section alignment to 8 bytes.
-
-2002-07-02 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (_bfd_elf_reloc_type_class): Fix comment grammar.
-
-2002-07-01 Matt Thomas <matt@3am-software.com>
-
- * elf32-vax.c (elf32_vax_print_private_bfd_data): Change EF_*
- to EF_VAX_*.
-
-2002-07-01 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (ABI_64_P): Fix comment.
- (MIPS_ELF_OPTIONS_SECTION_NAME,MIPS_ELF_STUB_SECTION_NAME): Use the
- new section names for N64 ABI.
- (mips_elf_output_extsym): No special _gp_disp handling for NewABI.
- (mips_elf_calculate_relocation): Code formatting.
- (mips_elf_create_dynamic_relocation): Likewise.
- (_bfd_mips_elf_fake_sections): IRIX6 needs this hack, too.
- (_bfd_mips_elf_size_dynamic_sections): Handle GOT_PAGE for any NewABI.
- (_bfd_mips_elf_relocate_section): No special handling for R_MIPS_64
- in any NewABI.
- (_bfd_mips_elf_finish_dynamic_symbol): No special _gp_disp handling
- for NewABI.
- (_bfd_mips_elf_modify_segment_map): Handle any N64 ABI.
- (_bfd_mips_elf_gc_sweep_hook): NewABI GOT relocs should be handled
- here, too.
-
-2002-07-01 Andreas Schwab <schwab@suse.de>
-
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Only convert
- R_X86_64_64 to R_X86_64_RELATIVE.
-
-2002-07-01 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * vaxbsd.c: New BFD backend for VAX BSD and Ultrix.
- * Makefile.am (BFD32_BACKENDS, BFD32_BACKENDS_CFILES): Add new backend.
- Run "make dep-am".
- * config.bfd (vax-*-bsd* | vax-*-ultrix*): Use vaxbsd_vec instead of
- host_aout_vec.
- * configure.in (vaxbsd_vec): Add.
- * targets.c (vaxbsd_vec): Add.
- * Makefile.in: Rebuild.
- * configure: Rebuild.
- * po/SRC-POTFILES.in: Rebuild.
-
-2002-07-01 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_gc_mark): Pass in the section whose relocs we are
- examining to gc_mark_hook, rather than the bfd.
- (elf_gc_sections): Adjust.
- * elf-bfd.h (struct elf_backend_data <gc_mark_hook>): Likewise.
- * elf-m10300.c (mn10300_elf_gc_mark_hook): Likewise.
- * elf32-arm.h (elf32_arm_gc_mark_hook): Likewise.
- * elf32-avr.c (elf32_avr_gc_mark_hook): Likewise.
- * elf32-cris.c (cris_elf_gc_mark_hook): Likewise.
- * elf32-d10v.c (elf32_d10v_gc_mark_hook): Likewise.
- * elf32-fr30.c (fr30_elf_gc_mark_hook): Likewise.
- * elf32-hppa.c (elf32_hppa_gc_mark_hook): Likewise.
- * elf32-i386.c (elf_i386_gc_mark_hook): Likewise.
- * elf32-m32r.c (m32r_elf_gc_mark_hook): Likewise.
- * elf32-m68k.c (elf_m68k_gc_mark_hook): Likewise.
- * elf32-mcore.c (mcore_elf_gc_mark_hook): Likewise.
- * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Likewise.
- * elf32-ppc.c (ppc_elf_gc_mark_hook): Likewise.
- * elf32-s390.c (elf_s390_gc_mark_hook): Likewise.
- * elf32-sh.c (sh_elf_gc_mark_hook): Likewise.
- * elf32-sparc.c (elf32_sparc_gc_mark_hook): Likewise.
- * elf32-v850.c (v850_elf_gc_mark_hook): Likewise.
- * elf32-vax.c (elf_vax_gc_mark_hook): Likewise.
- * elf32-xstormy16.c (xstormy16_elf_gc_mark_hook): Likewise.
- * elf64-mmix.c (mmix_elf_gc_mark_hook): Likewise.
- * elf64-ppc.c (ppc64_elf_gc_mark_hook): Likewise.
- * elf64-s390.c (elf_s390_gc_mark_hook): Likewise.
- * elf64-sh64.c (sh_elf64_gc_mark_hook): Likewise.
- * elfxx-mips.c (_bfd_mips_elf_gc_mark_hook): Likewise.
- * elfxx-mips.h (_bfd_mips_elf_gc_mark_hook): Likewise.
- * elf64-x86-64.c (elf64_x86_64_gc_mark_hook): Likewise.
- * elf32-frv.c (elf32_frv_gc_mark_hook): Likewise. Also remove
- redundant local sym tests.
- * elf64-ppc.c (struct ppc_link_hash_entry): Add is_entry.
- (link_hash_newfunc): Init is_entry.
- (ppc64_elf_copy_indirect_symbol): Copy is_entry.
- (ppc64_elf_link_hash_table_create): Init all_local_syms.
- (create_linkage_sections): Use bfd_make_section_anyway rather than
- bfd_make_section.
- (ppc64_elf_mark_entry_syms): New function.
- (ppc64_elf_check_relocs): Don't bother testing elf_bad_symtab. Set
- up opd entry to function section map.
- (ppc64_elf_gc_mark_hook): Special case opd section relocs, and
- relocs that reference the opd section.
- (edit_opd): New function.
- (ppc64_elf_size_dynamic_sections): Call get_local_syms and edit_opd.
- (ppc64_elf_setup_section_lists): Don't calculate htab->bfd_count here.
- (get_local_syms): Do so here. Exit if we already have local syms.
- Remove bogus comment imported from elf32-hppa.c. Don't attempt to
- read local syms on non-ELF input.
- (ppc64_elf_size_stubs): Call _bfd_elf64_link_read_relocs rather
- than duplicating it's function here. Adjust free of internal
- relocs to suit.
- (ppc64_elf_relocate_section): Adjust local syms in opd section.
- * elf64-ppc.h (ppc64_elf_mark_entry_syms): Declare.
- * elf32-hppa.c (elf32_hppa_size_stubs): Call
- _bfd_elf32_link_read_relocs rather than duplicating it's function
- here. Adjust free of internal relocs to suit.
-
-2002-07-01 Andreas Jaeger <aj@suse.de>
-
- * elf64-x86-64.c (elf64_x86_64_check_relocs): Certain relocations
- are not allowed in shared libs code, enforce -fPIC.
-
-2002-06-29 Hans-Peter Nilsson <hp@bitrange.com>
-
- * mmo.c (mmo_write_loc_chunk): Don't eliminate leading and
- trailing zero-sequences when there's previous left-over data.
-
-2002-06-27 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * elf64-hppa.c (elf64_hppa_reloc_type_class): New function.
- (elf64_hppa_finish_dynamic_sections): Check other_rel_sec, dlt_rel_sec
- and opd_rel_sec in order for starting rela section. Check _raw_size.
- (elf_backend_reloc_type_class): Define.
-
-2002-06-27 Kevin Buettner <kevinb@redhat.com>
-
- * dwarf2.c (decode_line_info): Handle older, non-standard, 64-bit
- DWARF2 formats.
-
-2002-06-27 Alan Modra <amodra@bigpond.net.au>
-
- * cpu-powerpc.c: Comment on ordering of arch_info.
- * elf32-ppc.c (ppc_elf_object_p): New function.
- (elf_backend_object_p): Define.
- * elf64-ppc.c (ppc64_elf_object_p): New function.
- (elf_backend_object_p): Define.
-
-2002-06-26 Jason Thorpe <thorpej@wasabisystems.com>
-
- * configure.in (vax-*-netbsd*): Set COREFILE to netbsd-core.lo.
- * configure: Regenerate.
-
-2002-06-25 Jason Eckhardt <jle@rice.edu>
-
- * dwarf2.c (decode_line_info): Check unit->addr_size
- to read in the proper number of prologue bytes.
-
-2002-06-25 Nick Clifton <nickc@cambridge.redhat.com>
-
- * config.bfd (powerpc-*-aix5*): Only create a selvecs for
- aix5coff64_vec if 64-bit bfd support has been enabled.
- (powerpc64-*-aix5*): Only define if 64-bit bfd support has
- been enabled.
-
- * targets.c (_bfd_target_vector[]): Only include
- aix5coff64_vec if 64-bit bfd support has been enabled.
-
-2002-06-25 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc_add_stub): Replace strcpy/strncpy with memcpy.
- * elf32-hppa.c (hppa_add_stub): Likewise.
- * elflink.c (_bfd_elf_link_record_dynamic_symbol): Likewise.
- * elflink.h (elf_add_default_symbol): Fix comment typo.
- (elf_add_default_symbol): Replace strcpy and strncpy with memcpy.
- (elf_link_add_object_symbols): Likewise.
- (elf_link_assign_sym_version): Likewise.
- * hash.c (bfd_hash_lookup): Likewise.
- * linker.c (_bfd_generic_link_add_one_symbol): Likewise.
- * section.c (bfd_get_unique_section_name): Likewise.
- * syms.c (_bfd_stab_section_find_nearest_line): Likewise.
- * elf.c (_bfd_elf_make_section_from_phdr): Likewise.
- (assign_section_numbers): Likewise.
- (_bfd_elfcore_make_pseudosection): Likewise.
- (elfcore_grok_lwpstatus): Likewise.
- (elfcore_grok_win32pstatus): Likewise.
- (elfcore_write_note): Constify input params. Use PTR instead of
- void *. Include terminating NUL in namesz. Correct padding.
- Support NULL "name" param. Use memcpy instead of strcpy.
- (elfcore_write_prpsinfo): Constify input params.
- (elfcore_write_prstatus): Likewise. Use PTR instead of void *.
- (elfcore_write_lwpstatus): Likewise.
- (elfcore_write_pstatus): Likewise.
- (elfcore_write_prfpreg): Likewise.
- (elfcore_write_prxfpreg): Likewise.
- * elf-bfd.h (elfcore_write_note): Update declaration.
- (elfcore_write_prpsinfo): Likewise.
- (elfcore_write_prstatus): Likewise.
- (elfcore_write_pstatus): Likewise.
- (elfcore_write_prfpreg): Likewise.
- (elfcore_write_prxfpreg): Likewise.
- (elfcore_write_lwpstatus): Likewise.
-
-2002-06-25 Jason Eckhardt <jle@rice.edu>
-
- * ecoff.c (ecoff_set_symbol_info): Set BSF_FUNCTION for
- symbols of type stProc and stStaticProc.
-
-2002-06-25 Nick Clifton <nickc@redhat.com>
-
- * ecoff.c: VArious formatting fixes.
-
-2002-06-25 Alan Modra <amodra@bigpond.net.au>
-
- * coff-rs6000.c (xcoff_generate_rtinit): Fix typo.
-
-2002-06-25 Alan Modra <amodra@bigpond.net.au>
-
- * aout-adobe.c: Don't compare against "true" or "false.
- * aout-target.h: Likewise.
- * aoutx.h: Likewise.
- * archive.c: Likewise.
- * bout.c: Likewise.
- * cache.c: Likewise.
- * coff-a29k.c: Likewise.
- * coff-alpha.c: Likewise.
- * coff-i386.c: Likewise.
- * coff-mips.c: Likewise.
- * coff-or32.c: Likewise.
- * coff64-rs6000.c: Likewise.
- * coffcode.h: Likewise.
- * coffgen.c: Likewise.
- * cpu-ns32k.c: Likewise.
- * ecoff.c: Likewise.
- * ecofflink.c: Likewise.
- * elf.c: Likewise.
- * elf32-arm.h: Likewise.
- * elf32-cris.c: Likewise.
- * elf32-d30v.c: Likewise.
- * elf32-i386.c: Likewise.
- * elf32-mcore.c: Likewise.
- * elf32-ppc.c: Likewise.
- * elf32-sh.c: Likewise.
- * elf32-sh64.c: Likewise.
- * elf32-v850.c: Likewise.
- * elf64-alpha.c: Likewise.
- * elf64-sh64.c: Likewise.
- * elfcode.h: Likewise.
- * elfcore.h: Likewise.
- * elflink.h: Likewise.
- * elfxx-mips.c: Likewise.
- * i386os9k.c: Likewise.
- * ieee.c: Likewise.
- * libbfd.c: Likewise.
- * linker.c: Likewise.
- * mmo.c: Likewise.
- * nlm32-alpha.c: Likewise.
- * nlm32-i386.c: Likewise.
- * nlm32-ppc.c: Likewise.
- * nlm32-sparc.c: Likewise.
- * nlmcode.h: Likewise.
- * oasys.c: Likewise.
- * pdp11.c: Likewise.
- * peicode.h: Likewise.
- * reloc.c: Likewise.
- * som.c: Likewise.
- * srec.c: Likewise.
- * tekhex.c: Likewise.
- * vms.c: Likewise.
- * xcofflink.c: Likewise.
- * elf64-sparc.c: Edit comment to not use "== false".
-
- * aoutf1.h: Don't use "? true : false".
- * ecoff.c: Likewise.
- * format.c: Likewise.
- * ieee.c: Likewise.
- * linker.c: Likewise.
- * mmo.c: Likewise.
- * oasys.c: Likewise.
-
-2002-06-23 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (elf_link_add_archive_symbols): For the default
- version, check references with only one `@' first.
-
-2002-06-23 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * elf64-hppa.c (elf64_hppa_mark_milli_and_exported_functions): New
- function.
- (allocate_global_data_dlt): Don't add millicode symbols to dynamic
- symbol table.
- (allocate_global_data_opd, allocate_dynrel_entries): Likewise.
- (elf64_hppa_size_dynamic_sections): Revise to use
- elf64_hppa_mark_milli_and_exported_functions.
- (elf64_hppa_finish_dynamic_symbol): Remove code to keep millicode
- symbols out of dynamic symbol table.
-
-2002-06-23 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.in: Regenerate.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Regenerate.
- * configure: Regenerate.
- * po/SRC-POTFILES.in: Regenerate.
-
- * elflink.h: Comment typo fixes.
-
-2002-06-23 H.J. Lu <hjl@gnu.org>
-
- * elf-bfd.h (elf_link_loaded_list): New structure.
- (elf_link_hash_table): Add "loaded".
- * elf.c (_bfd_elf_link_hash_table_init): Initialize "loaded".
- * elflink.h (elf_link_check_versioned_symbol): New function.
- (elf_link_output_extsym): Call elf_link_check_versioned_symbol.
-
-2002-06-19 Nick Clifton <nickc@cambridge.redhat.com>
-
- * elflink.h (size_dynamic_sections): If the target does not
- support an ELF style hash table, return true, indicating that
- nothing needed to be done, rather than false, indicating that the
- section's size could not be computed.
-
-2002-06-18 Dave Brolley <brolley@redhat.com>
-
- From Catherine Moore, Michael Meissner, Dave Brolley:
- * po/SRC-POTFILES.in: Add cpu-frv.c and elf32-frv.c
- * targets.c: Support bfd_elf32_frv_vec.
- * reloc.c: Add FRV relocs.
- * configure.in: Add support for bfd-elf32-frv-vec.
- * config.bfd (targ_cpu): Add support for frv-*-elf.
- * archures.c: Add frv arch and machines.
- * Makefile.am (ALL_MACHINES): Add cpu-frv.lo.
- (ALL_MACHINES_CFILES): Add cpu-frv.c.
- (BFD32_BACKENDS): Add elf32-frv.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-frv.c
- (cpu-frv.lo): New target.
- (elf32-frv.lo): New target.
- * cpu-frv.c: New file.
- * elf32-frv.c: New file.
-
-2002-06-18 Jakub Jelinek <jakub@redhat.com>
-
- * elfcode.h (elf_object_p): Sanity check eh_shoff == 0 implies
- e_shnum == 0.
- Only read the first section header if e_shoff is non-zero.
- Don't consider e_shstrndx if there are no sections.
-
-2002-06-17 Tom Rix <trix@redhat.com>
-
- * elf32-d10v.c (elf_d10v_howto_table): Change R_D10V_10_PCREL_R,
- R_D10V_10_PCREL_L and R_D10V_18_PCREL to use
- complain_overflow_bitfield.
-
-2002-06-17 Alan Modra <amodra@bigpond.net.au>
-
- * opncls.c (bfd_openr): Remove redundant bfd_set_error.
- (bfd_fdopenr): Likewise.
- (bfd_openstreamr): Likewise.
- (bfd_openw): Likewise.
-
- * targets.c: Sort target vecs.
- (_bfd_target_vector): Add aix5coff64_vec, bfd_elf32_sh64_vec,
- bfd_elf32_sh64l_vec, bfd_elf32_sh64lnbsd_vec,
- bfd_elf32_sh64nbsd_vec, bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec,
- bfd_elf64_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec.
- * configure.in: Sort target vecs. Add m88kmach3_vec.
- * configure: Regenerate.
-
-2002-06-16 Hans-Peter Nilsson <hp@bitrange.com>
-
- * elf64-mmix.c (bpo_reloc_request_sort_fn): Use member
- bpo_reloc_no to break sort order ties, not address of items.
-
-2002-06-16 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * elf-hppa.h (elf_hppa_final_link): Fix formatting in comment.
- Skip excluded sections in determing __gp value.
- (elf_hppa_final_link_relocate): Use the symbol's address in
- R_PARISC_FPTR64 relocations that don't need an opd entry.
- * elf64-hppa.c (allocate_dynrel_entries): Simplify code.
- (elf64_hppa_finalize_dynreloc): Likewise.
- (elf64_hppa_size_dynamic_sections): Move comments and fix typo.
- (elf64_hppa_finish_dynamic_symbol): Break up assert.
-
-2002-06-14 Sergey Grigoriev <serge@leopold.Physik.Uni-Augsburg.DE>
-
- * pei-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Enable 16 byte
- alignment for .bss, .data and .text sections so that sse and sse2
- code will work.
- * pe-i386.c (COFF_SECTION_ALIGNMENT_ENTRIES): Likewise.
-
-2002-06013 J"orn Rennecke <joern.rennecke@superh.com>
-
- config.bfd: Add support for sh[1234]l*-*-elf* | sh3el*-*-elf*,
- sh[1234]*-elf*.
-
-2002-06-12 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * elflink.h (elf_bfd_final_link): Improve error handling for missing
- dynamic sections.
-
- * elf64-hppa.c (allocate_global_data_opd): We don't need an opd entry
- for a symbol that has no output section.
- (allocate_dynrel_entries): Correct comment.
- (elf64_hppa_finalize_dynreloc): Likewise. Don't create an opd entry
- unless we want one.
- (elf64_hppa_finalize_opd): Prevent segfault if dyn_h is NULL.
- (elf64_hppa_finalize_dlt): Likewise. Prevent segfault for symbols
- with no section. Remove unnecessary parentheses.
-
-2002-06-11 Tom Rix <trix@redhat.com>
-
- * coffcode.h (coff_compute_section_file_positions): Add data
- section to AIX loader alignment check.
-
- * coff-rs6000.c (_bfd_xcoff_mkobject): Set default text section
- alignment to 4 bytes.
- (_bfd_xcoff_copy_private_bfd_data): Use text and data alignment
- power accessor macro.
- (do_shared_object_padding): Remove invalid assertion.
-
-2002-06-10 Richard Sandiford <rsandifo@redhat.com>
-
- * section.c (_bfd_strip_section_from_output): Set SEC_EXCLUDE
- for removed output sections.
-
-2002-06-10 Geoffrey Keating <geoffk@redhat.com>
-
- * merge.c (merge_strings): Use htab_create_alloc with calloc, not
- htab_alloc.
- * elf-strtab.c (_bfd_elf_strtab_finalize): Likewise.
-
-2002-06-08 H.J. Lu <hjl@gnu.org>
-
- * elf.c (copy_private_bfd_data): Don't cast to bfd_size_type to
- work around a long long bug in gcc 2.96 on mips.
-
-2002-06-08 Jason Thorpe <thorpej@wasabisystems.com>
-
- * Makefile.am (BFD32_BACKENDS): Add vax1knetbsd.lo.
- (BFD32_BACKENDS_CFILES): Add vax1knetbsd.c.
- Regenerate dependency lists.
- * Makefile.in: Regenerate.
- * config.bfd (vax-*-netbsdelf*, vax-*-netbsdaout*): Add
- vax1knetbsd_vec to targ_selvecs.
- * configure.in: Add vax1knetbsd_vec.
- * configure: Regenerate.
- * targets.c (_bfd_target_vector): Add vax1knetbsd_vec.
- * vax1knetbsd.c: New file.
- * vaxnetbsd.c: Update copyright years.
- (TARGET_PAGE_SIZE): Set to 0x1000.
- (DEFAULT_MID): Set to M_VAX4K_NETBSD.
-
-2002-06-08 Matt Thomas <matt@3am-software.com>
-
- * libaout.h (enum machine_type): Add M_VAX4K_NETBSD.
-
-2002-06-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): Make static.
-
-2002-06-08 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
-
- * armnetbsd.c: Replace CONST with const.
- * corefile.c: Likewise.
- * elf32-dlx.c: Likewise.
- * elf64-mips.c: Likewise.
- * mmo.c: Likewise.
- * ns32knetbsd.c: Likewise.
-
- * elf64-sparc.c (sparc64_elf_add_symbol_hook): Check the hash
- table is elf64-sparc.
-
-2002-06-08 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c (_bfd_mips_elf_relocate_section): Simplify code.
- Fix RELA addends to get not shifted in the result. Don't do special
- handling of R_MIPS_64 for NewABI.
-
-2002-06-07 Alan Modra <amodra@bigpond.net.au>
-
- * aoutx.h (NAME(aout,slurp_symbol_table)): Use bfd_zmalloc.
- (NAME(aout,slurp_reloc_table)): Likewise.
- * coff-mips.c (mips_relax_section): Use bfd_zalloc.
- * coff-rs6000.c (xcoff_write_armap_big): Use bfd_zmalloc.
- (xcoff_write_archive_contents_big): Likewise.
- (xcoff_generate_rtinit): Likewise.
- (xcoff_generate_rtinit): Likewise, and check error return.
- * coff64-rs6000.c (xcoff64_generate_rtinit): Likewise.
- * coffgen.c (coff_section_symbol): Use bfd_zalloc.
- (coff_get_normalized_symtab): Likewise.
- (coff_make_empty_symbol): Likewise.
- (bfd_coff_set_symbol_class): Likewise.
- * cofflink.c (coff_link_add_symbols): Likewise.
- * ecoff.c (_bfd_ecoff_make_empty_symbol): Likewise.
- * ecofflink.c (ecoff_write_shuffle): Use bfd_zmalloc.
- (bfd_ecoff_write_accumulated_debug): Likewise.
- * elf64-alpha.c (get_got_entry): Use bfd_zalloc.
- * i386linux.c (bfd_i386linux_size_dynamic_sections): Likewise.
- * i386lynx.c (NAME(lynx,slurp_reloc_table)): Use bfd_zmalloc.
- * ieee.c (do_with_relocs): Use bfd_zalloc.
- * m68klinux.c (bfd_m68klinux_size_dynamic_sections): Likewise.
- * pdp11.c (NAME(aout,slurp_symbol_table)): Use bfd_zmalloc.
- (NAME(aout,slurp_reloc_table)): Likewise.
- (NAME(aout,squirt_out_relocs)): Don't memset when zalloc'd.
- * reloc16.c (bfd_coff_reloc16_relax_section): Use bfd_zmalloc.
- * som.c (som_build_and_write_symbol_table): Likewise.
- (som_slurp_string_table): Likewise.
- (som_slurp_symbol_table): Likewise.
- (som_bfd_ar_write_symbol_stuff): Likewise.
- * sparclinux.c (bfd_sparclinux_size_dynamic_sections): Use bfd_zalloc.
- * sunos.c (bfd_sunos_size_dynamic_sections): Likewise.
- * tekhex.c (find_chunk): Likewise. Get rid of unused "sname".
- * vms-gsd.c (_bfd_vms_slurp_gsd): Use bfd_zmalloc.
- * xcofflink.c (xcoff_link_add_symbols): Use bfd_zalloc/bfd_zmalloc.
-
-2002-06-07 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct bfd_elf_section_data <group_name>): Replace with
- "group" union.
- (elf_group_name): Update.
- (elf_group_id): Define.
- (bfd_elf_set_group_contents): Declare.
- * elf.c (elf_fake_sections): Qualify use of elf_group_name.
- (set_group_contents): Rename to bfd_elf_set_group_contents. Remove
- ATTRIBUTE_UNUSED from failedptrarg. If elf_group_id is set, use
- that sym for the signature.
- (_bfd_elf_compute_section_file_positions): Don't call
- set_group_contents for "ld -r" case.
- (swap_out_syms): Use bfd_zalloc.
- * elflink.h (elf_link_add_archive_symbols): Likewise.
- (NAME(bfd_elf,size_dynamic_sections)): Likewise.
- (elf_bfd_final_link): Call bfd_elf_set_group_contents.
-
-2002-06-07 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_relocate_section): Allow unresolved
- relocs in opd for non-shared too.
-
-2002-06-06 Jeffrey Law <law@redhat.com>
-
- * elf32-h8300.c (elf32_h8_relax_section): Ignore uninteresting
- relocations.
-
-2002-06-06 Nick Clifton <nickc@cambridge.redhat.com>
-
- * merge.c: Include libiberty.h.
- * elf-strtab.c: Include libiberty.h.
-
-2002-06-06 Elias Athanasopoulos <eathan@otenet.gr>
-
- * peXXigen.c (pe_print_idata): Remove unused variable.
-
-2002-06-06 David Heine <dlheine@tensilica.com>
-
- * elf.c (assign_file_positions_for_segments): Remove unallocated
- sections from the section to segment mapping for PT_LOAD segments.
- Update comment about empty loadable segments.
-
-2002-06-06 Richard Sandiford <rsandifo@redhat.com>
-
- * stabs.c (_bfd_link_section_stabs): Check that the symbol offset
- is within the .stabstr section.
-
-2002-06-06 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct elf_size_info <swap_symbol_in>): Function args
- are "const PTR", not "const PTR *".
- (bfd_elf32_swap_symbol_in): Likewise.
- (bfd_elf64_swap_symbol_in): Likewise.
- * elfcode.h (elf_swap_symbol_in): Change input args to const PTR.
- (elf_slurp_symbol_table): Adjust call to elf_swap_symbol_in.
- * elflink.h (elf_link_is_defined_archive_symbol): Likewise.
- (elf_link_add_object_symbols): Likewise.
- (elf_link_record_local_dynamic_symbol): Likewise.
- (elf_link_input_bfd): Likewise.
- (elf_gc_mark): Likewise.
- (elf_reloc_symbol_deleted_p): Likewise.
- * elf-m10200.c (mn10200_elf_relax_section): Likewise.
- (mn10200_elf_relax_delete_bytes): Likewise.
- (mn10200_elf_symbol_address_p): Likewise.
- (mn10200_elf_get_relocated_section_contents): Likewise.
- * elf-m10300.c (mn10300_elf_relax_section): Likewise.
- (mn10300_elf_relax_section): Likewise.
- (mn10300_elf_relax_delete_bytes): Likewise.
- (mn10300_elf_symbol_address_p): Likewise.
- (mn10300_elf_get_relocated_section_contents): Likewise.
- * elf32-h8300.c (elf32_h8_relax_section): Likewise.
- (elf32_h8_relax_delete_bytes): Likewise.
- (elf32_h8_symbol_address_p): Likewise.
- (elf32_h8_get_relocated_section_contents): Likewise.
- * elf32-hppa.c (get_local_syms): Likewise.
- * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise.
- * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise.
- * elf32-sh.c (sh_elf_relax_section): Likewise.
- (sh_elf_relax_delete_bytes): Likewise.
- (sh_elf_get_relocated_section_contents): Likewise.
- * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relax_section): Likewise.
- * elf64-hppa.c (elf64_hppa_check_relocs): Likewise.
- * elf64-mmix.c (mmix_elf_relax_section): Likewise.
- * elf64-ppc.c (get_local_syms): Likewise.
- * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise.
- * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise.
-
-2002-06-05 J"orn Rennecke <joern.rennecke@superh.com>
-
- * config.bfd (sh64l*-*-elf*, shl*-*-elf*): New configurations.
-
-2002-06-05 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (group_signature): Swap in the whole symbol, and handle
- extracting section symbol names.
- (setup_group): Add comment.
- (set_group_contents): When called from objcopy or ld, arrange for
- section contents to be written. Write group member output section
- indices to allow objcopy to reorganize sections.
- (_bfd_elf_copy_private_section_data): Copy group info.
-
- * elf-bfd.h (struct elf_size_info): Add swap_symbol_in field.
- (bfd_elf32_swap_symbol_in): Update prototype.
- (bfd_elf64_swap_symbol_in): Likewise.
- * elfcode.h (elf_swap_symbol_in): Change input args to const PTR *.
- (elf_slurp_symbol_table): Adjust call to elf_swap_symbol_in.
- * elflink.h (elf_link_is_defined_archive_symbol): Likewise.
- (elf_link_add_object_symbols): Likewise.
- (elf_link_record_local_dynamic_symbol): Likewise.
- (elf_link_input_bfd): Likewise.
- (elf_gc_mark): Likewise.
- (elf_reloc_symbol_deleted_p): Likewise.
- * elf-m10200.c (mn10200_elf_relax_section): Likewise.
- (mn10200_elf_relax_delete_bytes): Likewise.
- (mn10200_elf_symbol_address_p): Likewise.
- (mn10200_elf_get_relocated_section_contents): Likewise.
- * elf-m10300.c (mn10300_elf_relax_section): Likewise.
- (mn10300_elf_relax_section): Likewise.
- (mn10300_elf_relax_delete_bytes): Likewise.
- (mn10300_elf_symbol_address_p): Likewise.
- (mn10300_elf_get_relocated_section_contents): Likewise.
- * elf32-h8300.c (elf32_h8_relax_section): Likewise.
- (elf32_h8_relax_delete_bytes): Likewise.
- (elf32_h8_symbol_address_p): Likewise.
- (elf32_h8_get_relocated_section_contents): Likewise.
- * elf32-hppa.c (get_local_syms): Likewise.
- * elf32-m68k.c (bfd_m68k_elf32_create_embedded_relocs): Likewise.
- * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): Likewise.
- * elf32-sh.c (sh_elf_relax_section): Likewise.
- (sh_elf_relax_delete_bytes): Likewise.
- (sh_elf_get_relocated_section_contents): Likewise.
- * elf32-xstormy16.c (xstormy16_elf_relax_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relax_section): Likewise.
- * elf64-hppa.c (elf64_hppa_check_relocs): Likewise.
- * elf64-mmix.c (mmix_elf_relax_section): Likewise.
- * elf64-ppc.c (get_local_syms): Likewise.
- * elf64-sh64.c (sh_elf64_get_relocated_section_contents): Likewise.
- * elfxx-ia64.c (elfNN_ia64_relax_section): Likewise.
- * elfcode.h (NAME(_bfd_elf,size_info)): Update initialiser.
- * elf64-alpha.c (alpha_elf_size_info): Likewise.
- * elf64-hppa.c (hppa64_elf_size_info): Likewise.
- * elf64-mips.c (mips_elf64_size_info): Likewise.
- * elf64-s390.c (s390_elf64_size_info): Likewise.
- * elf64-sparc.c (sparc64_elf_size_info): Likewise.
-
-2002-06-05 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
-
- * elf32-mips.c (elf32_mips_ignore_discarded_relocs): Move to...
- elfxx-mips.c (_bfd_mips_elf_ignore_discarded_relocs): ... here.
- elf64-mips.c (elf_backend_ignore_discarded_relocs): Use
- _bfd_mips_elf_ignore_discarded_relocs.
- elfxx-mips.h (_bfd_mips_elf_ignore_discarded_relocs): Declare.
-
-2002-06-05 H.J. Lu <hjl@gnu.org>
-
- * elfxx-mips.c (mips_elf_calculate_relocation): Call
- _bfd_elf_rel_local_sym for STT_SECTION relocations against
- the SEC_MERGE section.
-
-2002-06-05 Alan Modra <amodra@bigpond.net.au>
-
- * coff-alpha.c: Update copyright date.
- * coff-mips.c: Likewise.
- * xcoff-target.h: Likewise.
- * bfd-in.h: Remove "taken from the source" comment.
- * libbfd-in.h: Likewise.
- * libcoff-in.h: Likewise.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
- * libcoff.h: Regenerate.
+2004-01-05 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
- * elf.c (bfd_elf_discard_group): Return true.
- * elf-bfd.h (bfd_elf_discard_group): Declare.
- * bfd-in.h (bfd_elf_discard_group): Don't declare here.
- * section.c (bfd_discard_group): Rename to bfd_generic_discard_group.
- * bfd.c (bfd_discard_group): Define.
- * targets.c (struct bfd_target): Add _bfd_discard_group.
- (BFD_JUMP_TABLE_LINK): Here too.
- * libbfd-in.h (_bfd_nolink_bfd_discard_group): Define.
- * aout-adobe.c (aout_32_bfd_discard_group): Define.
- * aout-target.h (MY_bfd_discard_group): Define.
- * aout-tic30.c (MY_bfd_discard_group): Define.
- * binary.c (binary_bfd_discard_group): Define.
- * bout.c (b_out_bfd_discard_group): Define.
- * coff-alpha.c (_bfd_ecoff_bfd_discard_group): Define.
- * coffcode.h (coff_bfd_discard_group): Define.
- * coff-mips.c (_bfd_ecoff_bfd_discard_group): Define.
- * elfxx-target.h (bfd_elfNN_bfd_discard_group): Define.
- * i386msdos.c (msdos_bfd_discard_group): Define.
- * i386os9k.c (os9k_bfd_discard_group): Define.
- * ieee.c (ieee_bfd_discard_group): Define.
- * ihex.c (ihex_bfd_discard_group): Define.
- * mmo.c (mmo_bfd_discard_group): Define.
- * nlm-target.h (nlm_bfd_discard_group): Define.
- * oasys.c (oasys_bfd_discard_group): Define.
- * ppcboot.c (ppcboot_bfd_discard_group): Define.
- * som.c (som_bfd_discard_group): Define.
- * srec.c (srec_bfd_discard_group): Define.
- * tekhex.c (tekhex_bfd_discard_group): Define.
- * versados.c (versados_bfd_discard_group): Define.
- * vms.c (vms_bfd_discard_group): Define.
- * xcoff-target.h (_bfd_xcoff_bfd_discard_group): Define.
- * coff64-rs6000.c (rs6000coff64_vec): Update initialiser.
- (aix5coff64_vec): Likewise.
- * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Likewise.
+ * elf32-mips.c (ELF_MAXPAGESIZE): Redefine for traditional
+ targets to support pages of up to 64kB.
+ (elf32_bed): Redefine to get a separate backend data structure for
+ traditional targets.
+ * elf64-mips.c (ELF_MAXPAGESIZE): Redefine for traditional
+ targets to support pages of up to 64kB.
+ (elf64_bed): Redefine to get a separate backend data structure for
+ traditional targets.
+ * elfn32-mips.c (ELF_MAXPAGESIZE): Redefine for traditional
+ targets to support pages of up to 64kB.
+ (elf32_bed): Redefine to get a separate backend data structure for
+ traditional targets.
-2002-06-04 Jason Thorpe <thorpej@wasabisystems.com>
+2004-01-04 Mark Kettenis <kettenis@gnu.org>
- * Makefile.am (BFD32_BACKENDS): Add elf32-sh64-com.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-sh64-com.c.
- (elf32-sh64-com.lo): New dependency list.
- * Makefile.in: Regenerate.
- * configure.in (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec)
- (bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec): Add
- elf32-sh64-com.lo.
- * configure: Regenerate.
- * elf32-sh64.c (sh64_address_in_cranges)
- (sh64_get_contents_type, sh64_address_is_shmedia): Move to...
- (crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb):
- (crange_bsearch_cmpl): Prepend _bfd_sh64_ to name and move to...
- * elf32-sh64-com.c: ...here. New file.
-
-2002-06-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-openrisc.c (openrisc_elf_gc_mark_hook): Remove
- ATTRIBUTE_UNUSED on used params.
- * elf32-vax.c (elf_vax_gc_mark_hook): Remove unnecessary checks
- before calling bfd_section_from_elf_index on local syms.
- * elf64-sh64.c (sh_elf64_gc_mark_hook): Likewise.
-
-2002-06-04 Jason Thorpe <thorpej@wasabisystems.com>
-
- * Makefile.am (BFD32_BACKENDS): Add elf32-sh64-nbsd.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-sh64-nbsd.c.
- (BFD64_BACKENDS): Add elf64-sh64-nbsd.lo.
- (BFD64_BACKENDS_CFILES): Add elf64-sh64-nbsd.c.
- (elf32-sh64-nbsd.lo, elf64-sh64-nbsd.lo): New rules.
- * Makefile.in: Regenerate.
- * config.bfd (sh5le-*-netbsd*, sh5-*-netbsd*, sh64le-*-netbsd*)
- (sh64-*-netbsd*): New targets.
- * configure.in: Add bfd_elf32_sh64nbsd_vec, bfd_elf32_sh64lnbsd_vec,
- bfd_elf64_sh64nbsd_vec, and bfd_elf64_sh64lnbsd_vec.
- * configure: Regenerate.
- * elf32-sh64-nbsd.c: New file.
- * elf64-sh64-nbsd.c: New file.
- * targets.c: Add extern decls for bfd_elf32_sh64nbsd_vec,
- bfd_elf32_sh64lnbsd_vec, bfd_elf64_sh64nbsd_vec, and
- bfd_elf64_sh64lnbsd_vec.
-
-2002-06-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (setup_group): Set SEC_LINK_ONCE on GRP_COMDAT groups.
- (bfd_section_from_shdr): Likewise. Set section name of group
- sections from signature.
- (group_signature): Split out from setup_group. Ensure symbol table
- is available.
- (bfd_elf_discard_group): New function.
- (_bfd_elf_make_section_from_shdr): Don't set SEC_LINK_ONCE on
- .gnu.linkonce* sections if they are members of a group.
- (set_group_contents): Set GRP_COMDAT flag.
- * section.c (bfd_discard_group): New function.
- * bfd-in.h (bfd_elf_discard_group): Declare.
- * bfd-in2.h: Regenerate.
- * elf-bfd.h (struct bfd_elf_section_data): Add linkonce_p field.
- (elf_linkonce_p): Define.
-
-2002-06-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (bfd_section_from_shdr): Make "name" const.
- * elf-bfd.h (elf_backend_section_from_shdr): Likewise.
- * elf32-i370.c (i370_elf_section_from_shdr): Likewise.
- * elf32-ppc.c (ppc_elf_section_from_shdr): Likewise.
- * elf32-sh64.c (sh64_backend_section_from_shdr): Likewise.
- * elf32-v850.c (v850_elf_section_from_shdr): Likewise.
- * elf64-alpha.c (elf64_alpha_section_from_shdr): Likewise.
- * elf64-hppa.c (elf64_hppa_section_from_shdr): Likewise.
- * elf64-ppc.c (ppc64_elf_section_from_shdr): Likewise.
- * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Likewise.
- * elfxx-mips.c (_bfd_mips_elf_section_from_shdr): Likewise.
- * elfxx-mips.h (_bfd_mips_elf_section_from_shdr): Likewise.
-
-2002-06-03 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
-
- * elfxx-mips.c (ABI_64_P): Use backend's data to determine the
- ABI.
-
-2002-06-02 Kazu Hirata <kazu@cs.umass.edu>
-
- * elf32-arc.c: Fix formatting.
- * elf32-arm.h: Likewise.
- * elf32-cris.c: Likewise.
- * elf32-dlx.c: Likewise.
- * elf32-hppa.c: Likewise.
- * elf32-i386.c: Likewise.
- * elf32-i386qnx.c: Likewise.
- * elf32-or32.c: Likewise.
- * elf32-s390.c: Likewise.
- * elf32-sh64.c: Likewise.
- * elf32-vax.c: Likewise.
- * elf32-xstormy16.c: Likewise.
- * elf64-alpha.c: Likewise.
- * elf64-mmix.c: Likewise.
- * elf64-ppc.c: Likewise.
- * elf64-s390.c: Likewise.
- * elf64-sh64.c: Likewise.
- * elf64-x86-64.c: Likewise.
-
-2002-06-02 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_relocate_section): Don't dereference
- null when there are no got entries for a symbol.
- (elf64_alpha_relax_find_tls_segment): Rearrange to avoid
- uninitialized variable warning.
-
-2002-06-01 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_relax_with_lituse): Don't test for
- undefined symbols here.
- (elf64_alpha_relax_section): Do it here. Also test for not
- defined in the current module.
- (elf64_alpha_relocate_section_r): Split out of ...
- (elf64_alpha_relocate_section): ... here. Don't dereference
- NULL when looking up local got entries.
-
-2002-06-01 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_relax_with_lituse): Reject undefined
- symbols from JSR relaxation.
- (elf64_alpha_size_plt_section_1): New.
- (elf64_alpha_calc_dynrel_sizes): Split out .rela.got bits ...
- (elf64_alpha_size_rela_got_1): ... here.
- (elf64_alpha_size_dynamic_sections): Split out .rela.got bits ...
- (elf64_alpha_size_rela_got_section): ... here.
- (elf64_alpha_size_plt_section): New.
- (elf64_alpha_relax_section): Call them.
- (elf64_alpha_size_got_sections): Remove output_bfd arg.
- (elf64_alpha_finish_dynamic_symbol): Check gotent use_count.
-
-2002-06-01 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (alpha_get_dtprel_base, alpha_get_tprel_base): New.
- (elf64_alpha_relocate_section): Use them. Reject LE TLS relocs
- in shared libraries. Fix DTPRELHI and TPRELHI value.
- (INSN_ADDQ, INSN_RDUNIQ): New.
- (struct alpha_relax_info): Add symtab_hdr, tls_segment, first_gotent.
- (elf64_alpha_relax_with_lituse): Return boolean. Remove irelend
- argument. Reject dynamic symbols. Use LITUSE symbolic constants.
- (elf64_alpha_relax_got_load): Rename from relax_without_lituse.
- Handle GOTDTPREL and GOTTPREL relocations.
- (elf64_alpha_relax_gprelhilo): New.
- (elf64_alpha_relax_tls_get_addr): New.
- (elf64_alpha_relax_find_tls_segment): New.
- (elf64_alpha_relax_section): Handle TLS relocations.
- (ALPHA_ELF_LINK_HASH_TLS_IE): New.
- (elf64_alpha_check_relocs): Set it.
-
-2002-06-01 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_relax_section): Don't store computed gp.
-
- * elf64-alpha.c (elf64_alpha_check_relocs): Fix typo on maybe_dynamic
- check; don't suppress dynamic relocs for non-allocated sections.
-
- * elf64-alpha.c: Remove dead code.
-
-2002-05-31 Alan Modra <amodra@bigpond.net.au>
-
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
- * po/SRC-POTFILES.in: Regenerate.
-
- * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Don't allocate
- space for bss .plt.
-
-2002-05-31 Graeme Peterson <gp@qnx.com>
-
- * Makefile.am (BFD32_BACKENDS): Add elf32-i386qnx.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-i386qnx.c.
- Run "make dep-am".
- * Makefile.in: Regenerate.
- * config.bfd: Add i[3456]86-*-nto-qnx* support.
- * configure.in: Add bfd_elf32_i386qnx_vec support.
- * configure: Regenerate.
- * elf-bfd.h (struct elf_backend_data): Add set_nonloadable_filepos,
- is_contained_by_filepos, and copy_private_bfd_data_p.
- * elf.c (assign_file_positions_for_segments): Call backend
- set_nonloadable_filepos. Fix non-K&R call to _bfd_error_handler.
- (IS_CONTAINED_BY_FILEPOS): Define.
- (INCLUDE_SECTION_IN_SEGMENT): Also test IS_CONTAINED_BY_FILEPOS.
- (copy_private_bfd_data): Use IS_CONTAINED_BY_FILEPOS. Typo fix.
- Fix non-K&R call to _bfd_error_handler.
- (_bfd_elf_copy_private_section_data): Use backend
- copy_private_bfd_data_p.
- * elf32-i386.c: Don't include elfxx-target.h when
- ELF32_I386_C_INCLUDED is defined.
- * elf32-i386qnx.c: New QNX elf backend file.
- * elfxx-target.h: Add elf_backend_set_nonloadable_filepos,
- elf_backend_is_contained_by_filepos, and
- elf_backend_do_copy_private_bfd_data.
- * targets.c: Add bfd_target bfd_elf32_i386qnx_vec.
-
-2002-05-31 Alan Modra <amodra@bigpond.net.au>
-
- * elfarm-oabi.c (bfd_elf32_arm_add_glue_sections_to_bfd): Define.
- Move other similar defines to start of file.
-
-2002-05-30 Tom Rix <trix@redhat.com>
-
- * coff-rs6000.c (xcoff_rtype2howto): Handle 16 bit R_RBA.
- * coff64-rs6000.c (xcoff64_rtype2howto): Same.
-
-2002-05-30 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (ALPHA_ELF_LINK_HASH_LU_TLSGD,
- ALPHA_ELF_LINK_HASH_LU_TLSLDM, ALPHA_ELF_LINK_HASH_LU_FUNC): New.
- (ALPHA_ELF_GOT_ENTRY_RELOCS_DONE): Remove.
- (ALPHA_ELF_GOT_ENTRY_RELOCS_XLATED): Remove.
- (struct alpha_elf_got_entry): Add reloc_type, reloc_done, reloc_xlated.
- (struct alpha_elf_obj_tdata): Rename total_got_entries and
- n_local_got_entries to total_got_size and local_got_size.
- (elf64_alpha_howto, elf64_alpha_reloc_map): Update for TLS relocs.
- (alpha_got_entry_size): New.
- (elf64_alpha_relax_with_lituse): Use it.
- (elf64_alpha_relax_without_lituse): Likewise.
- (MAX_GOT_SIZE): Rename from MAX_GOT_ENTRIES.
- (get_got_entry): New.
- (elf64_alpha_check_relocs): Handle TLS relocs. Reorganize.
- (elf64_alpha_adjust_dynamic_symbol): Test LU_FUNC as a mask.
- (elf64_alpha_merge_ind_symbols): Check gotent->reloc_type.
- (elf64_alpha_can_merge_gots, elf64_alpha_merge_gots): Likewise.
- (elf64_alpha_calc_got_offsets_for_symbol): Use alpha_got_entry_size.
- (elf64_alpha_calc_got_offsets): Likewise.
- (alpha_dynamic_entries_for_reloc): New.
- (elf64_alpha_calc_dynrel_sizes): Use it.
- (elf64_alpha_size_dynamic_sections): Likewise.
- (elf64_alpha_relocate_section): Handle TLS relocations.
- * reloc.c: Add Alpha TLS relocations.
- * bfd-in2.h, libbfd.h: Rebuild.
-
-2002-05-29 Ralf Habacker <ralf.habacker@freenet.de>
-
- * peXXigen.c (pe_print_idata): Remove double printed
- import table lines; add Bound-To comment.
-
-2002-05-29 Matt Thomas <matt@3am-software.com>
-
- * Makefile.am (BFD32_BACKENDS): Add elf32-vax.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-vax.c.
- (elf32-vax.lo): New rule.
- * Makefile.in: Regenerate.
- * configure.in (bfd_elf32_vax_vec)
- (vaxnetbsd_vec): New vectors.
- * configure: Regenerate.
- * config.bfd (vax-*-netbsdelf*)
- (vax-*-netbsdaout*)
- (vax-*-netbsd*): New targets.
- * elf32-vax.c: New file.
- * reloc.c: Add VAX relocations.
- * bfd-in2.h: Regenerate.
- * targets.c (_bfd_target_vector): Add bfd_elf32_vax_vec.
-
-2002-05-29 Jason Thorpe <thorpej@wasabisystems.com>
-
- * config.bfd (arm-*-netbsd*): Add bfd_elf32_littlearm_vec
- and bfd_elf32_bigarm_vec to targ_selvecs.
-
-2002-05-29 Ralf Habacker <ralf.habacker@freenet.de>
-
- * peXXigen.c (pe_print_idata): Fix seg faults on printing import tables
- with auto-imported symbols.
-
-2002-05-29 Adam Nemet <anemet@lnxw.com>
-
- * elf32-arm.h (bfd_elf32_arm_get_bfd_for_interworking): Don't add glue
- sections only record bfd.
- (bfd_elf32_arm_add_glue_sections_to_bfd): New function.
- * bfd-in.h (bfd_elf32_arm_add_glue_sections_to_bfd): Declare it.
- * bfd-in2.h: Regenerate.
-
-2002-05-28 Nick Clifton <nickc@cambridge.redhat.com>
-
- * syms.c (_bfd_stab_section_find_nearest_line): Move
- declaration and initialisation of saw_line and saw_func out of
- for loop.
-
-2002-05-29 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_get_symbol_info): New function.
- (bfd_elf64_get_symbol_info): Define.
- * elfxx-target.h (bfd_elfNN_get_symbol_info): Only define if undef.
-
-2002-05-29 Andrey Volkov <avolkov@transas.com>
-
- * cpu-h8300.c: Make default h8300 machine first in machine list.
-
-2002-05-28 Kuang Hwa Lin <kuang@sbcglobal.net>
-
- * config.bfd: Added DLX configuraton.
- * Makefile.am: Added DLX configuraton.
- * configure.in: Added DLX configuraton.
- * archures.c: Add DLX architecture.
- * reloc.c: Add DLX relocs.
- * targets.c: Added DLX target vector.
- * configure: Regenerate.
- * Makefile.in: Regenreate.
- * bfd-in2.h: Regenreate.
- * elf32-dlx.c: New file: Support DLX target.
- * cpu-dlx.c: New file: Support DLX target.
-
-2002-05-25 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-m68k.c (elf32_m68k_print_private_bfd_data): Formatting.
-
- * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Revert last change.
- (ppc64_elf_check_relocs): Don't set up function descriptor symbol
- strings to point inside function code sym string.
- (func_desc_adjust): Likewise.
- (ppc64_elf_hide_symbol): Rewrite code to look up function code sym.
-
-2002-05-24 Michal Ludvig <mludvig@suse.cz>
-
- * elf64-x86-64.c (elf64_x86_64_grok_prstatus): Added.
- (elf64_x86_64_grok_psinfo): Added.
-
-2002-05-24 TAMURA Kent <kent@netbsd.org>
-
- * config.bfd: Add a target for i386-netbsdpe.
-
-2002-05-24 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_copy_indirect_symbol): Don't copy is_func
- and is_func_descriptor.
- (func_desc_adjust): Hide function code sym in shared libs unless
- there is a matching exported function descriptor sym.
-
-2002-05-23 Jakub Jelinek <jakub@redhat.com>
-
- * elf.c (_bfd_elf_make_section_from_shdr): Set SEC_THREAD_LOCAL
- for symbols from SHF_TLS section.
- (_bfd_elf_print_private_bfd_data): Add PT_TLS.
- (elf_fake_sections): Set SHF_TLS for SEC_THREAD_LOCAL sections.
- (map_sections_to_segments): Build PT_TLS segment if necessary.
- (assign_file_positions_for_segments): Likewise.
- (get_program_header_size): Account for PT_TLS segment.
- (swap_out_syms): Set type of BSF_THREAD_LOCAL symbols and symbols from
- SEC_THREAD_LOCAL sections to STT_TLS.
- * reloc.c: Add 386 and IA-64 TLS relocs.
- * section.c (SEC_THREAD_LOCAL): Define.
- (SEC_CONSTRUCTOR_TEXT, SEC_CONSTRUCTOR_DATA, SEC_CONSTRUCTOR_BSS):
- Remove.
- * elflink.h (elf_link_add_object_symbols): Support .tcommon.
- (size_dynamic_sections): If DF_STATIC_TLS, set DF_FLAGS
- unconditionally.
- (struct elf_final_link_info): Add first_tls_sec.
- (elf_bfd_final_link): Set first_tls_sec.
- Compute elf_hash_table (info)->tls_segment.
- (elf_link_output_extsym): Handle STT_TLS symbols.
- (elf_link_input_bfd): Likewise.
- * syms.c (BSF_THREAD_LOCAL): Define.
- * bfd-in2.h: Rebuilt.
- * libbfd.h: Rebuilt.
- * elf32-i386.c (elf_i386_tls_transition, dtpoff_base, tpoff,
- elf_i386_mkobject, elf_i386_object_p): New functions.
- (elf_howto_table): Add TLS relocs.
- (elf_i386_reloc_type_lookup): Support TLS relocs.
- (elf_i386_info_to_howto_rel): Likewise.
- (struct elf_i386_link_hash_entry): Add tls_type.
- (struct elf_i386_obj_tdata): New.
- (elf_i386_hash_entry, elf_i386_tdata, elf_i386_local_got_tls_type):
- New macros.
- (struct elf_i386_link_hash_table): Add tls_ldm_got.
- (link_hash_newfunc): Clear tls_type.
- (elf_i386_check_relocs): Support TLS relocs.
- (elf_i386_gc_sweep_hook): Likewise.
- (allocate_dynrelocs): Likewise.
- (elf_i386_size_dynamic_sections): Likewise.
- (elf_i386_relocate_section): Likewise.
- (elf_i386_finish_dynamic_symbol): Likewise.
- (bfd_elf32_mkobject, elf_backend_object_p): Define.
- * elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add tprel_offset,
- dtpmod_offset, dtprel_offset, tprel_done, dtpmod_done, dtprel_done,
- want_tprel, want_dtpmod, want_dtprel.
- (elfNN_ia64_tprel_base, elfNN_ia64_dtprel_base): New functions.
- (ia64_howto_table): Add TLS relocs, rename R_IA64_LTOFF_TP22 to
- R_IA64_LTOFF_TPREL22.
- (elf_code_to_howto_index): Add TLS relocs.
- (elfNN_ia64_check_relocs): Support TLS relocs.
- (allocate_global_data_got): Account for TLS .got data.
- (allocate_dynrel_entries): Account for TLS dynamic relocations.
- (elfNN_ia64_install_value): Supprt TLS relocs.
- (set_got_entry): Support TLS relocs.
- (elfNN_ia64_relocate_section): Likewise.
-
-2002-05-23 Nick Clifton <nickc@cambridge.redhat.com>
-
- * elf32-arm.h (elf32_arm_final_link_relocate): For the Thumb
- BLX reloc round the relocation up rather than down.
- * coff-arm.c (coff_arm_relocate_section): Likewise.
-
-2002-05-21 H.J. Lu (hjl@gnu.org)
-
- * linker.c (_bfd_generic_link_add_one_symbol): Allow multiple
- definition.
-
-2002-05-22 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_size_stubs): Don't strip .branch_lt.
- (ppc64_elf_relocate_section): Handle unresolved relocs in opd.
-
-2002-05-22 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_relocate_section): Return false for
- unresolved relocs.
- (ppc64_elf_size_dynamic_sections): Check for splt NULL.
-
-2002-05-21 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * bfd.c (bfd_get_arch_size): Remove bfd_set_error call for
- non-ELF targets.
-
-2002-05-21 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elf-bfd.h (elf_backend_emit_relocs): Change prototype to return
- an error value.
- * elflink.h (elf_link_output_relocs): Likewise. Improve error message.
- return with false on error.
- (elf_link_input_bfd): Check reloc_emitter return value.
-
-2002-05-21 Jason Thorpe <thorpej@wasabisystems.com>
-
- * config.bfd (armeb-*-netbsdelf*): New target.
-
-2002-05-20 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc_build_one_stub): Point undefined function syms
- at the plt call stub.
-
-2002-05-19 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * cpu-mips.c (mips_compatible): Don't try to check machine
- compatibility.
-
-2002-05-18 Tom Rix <trix@redhat.com>
-
- * coff64-rs6000.c (_bfd_xcoff64_swap_aux_out): Fix C_FILE auxent.
-
-2002-05-17 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_info_to_howto): Formatting.
- (ppc64_elf_relocate_section): Don't warn about reloc overflow when
- we've already warned about an undefined symbol. Report more
- detail on reloc errors.
-
-2002-05-17 Alan Modra <amodra@bigpond.net.au>
-
- * acinclude.m4 (AM_INSTALL_LIBBFD): New.
- * configure.in: Invoke AM_INSTALL_LIBBFD.
- * Makefile.am (install-data-local): Revert 2002-05-13. Move to..
- (install_libbfd): .. New target.
- (uninstall_libbfd): Likewise.
- (install-bfdlibLTLIBRARIES): Likewise.
- (uninstall-bfdlibLTLIBRARIES): Likewise.
- (bfdlibdir): New.
- (bfdincludedir): New.
- (lib_LTLIBRARIES): Rename to bfdlib_LTLIBRARIES.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
- * Makefile.in: Regenerate.
-
-2002-05-17 Stuart Balfour <sbalfour@cisco.com>
-
- * hash.c (bfd_hash_lookup): Remove computation of len from inside
- hash loop.
-
-2002-05-16 Nick Clifton <nickc@cambridge.redhat.com>
-
- * config.bfd: Add targets for sh64-linux (little endian and
- big endian).
-
-2002-05-15 Laurent Pinchart <laurent.pinchart@skynet.be>
-
- * peXXigen.c (pe_print_idata): Do not assume that the first thunk
- is located in the same section as the import table. Instead
- check, and if necessary load the section containing the thunk.
-
-2002-05-15 Nick Clifton <nickc@cambridge.redhat.com>
-
- * aix5ppc-core.c (xcoff64_core_p): Replace bfd_read with
- bfd_bread.
- (xcoff64_core_file_matches_executable_p): Replace bfd_read
- with bfd_bread.
-
-2002-05-15 Alan Modra <amodra@bigpond.net.au>
-
- * aix5ppc-core.c: Warning fixes.
- * aout-adobe.c (aout_32_bfd_link_just_syms): Define.
- * aout-target.h (MY_bfd_link_just_syms): Define.
- * aout-tic30.c (MY_bfd_link_just_syms): Define.
- * bfd.c (bfd_link_just_syms): Define.
- * binary.c (binary_bfd_link_just_syms): Define.
- * bout.c (b_out_bfd_link_just_syms): Define.
- * coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): Update initializer.
- * coff64-rs6000.c (rs6000coff64_vec, aix5coff64_vec): Likewise.
- * coffcode.h (coff_bfd_link_just_syms): Define.
- * elf-bfd.h (enum elf_link_info_type): Add ELF_INFO_TYPE_JUST_SYMS.
- (elf_discarded_section): Check for ELF_INFO_TYPE_JUST_SYMS.
- (_bfd_elf_link_just_syms): Declare.
- * elf.c (_bfd_elf_link_just_syms): New function.
- * elf-eh-frame.c (_bfd_elf_maybe_strip_eh_frame_hdr): Check that
- sections haven't already been discarded by the linker.
- * elflink.h (elf_link_add_object_symbols): Likewise for stab
- sections and SEC_MERGE sections.
- (elf_bfd_discard_info): Similarly here.
- * elfxx-target.h (bfd_elfNN_bfd_link_just_syms): Define.
- * i386msdos.c (msdos_bfd_link_just_syms): Define.
- * i386os9k.c (os9k_bfd_link_just_syms): Define.
- * ieee.c (ieee_bfd_link_just_syms): Define.
- * ihex.c (ihex_bfd_link_just_syms): Define.
- * libbfd-in.h (_bfd_nolink_bfd_link_just_syms): Define.
- (_bfd_generic_link_just_syms): Declare.
- * libecoff.h (_bfd_ecoff_bfd_link_just_syms): Define.
- * linker.c (_bfd_generic_link_just_syms): New function.
- * mmo.c (mmo_bfd_link_just_syms): Define.
- * nlm-target.h (nlm_bfd_link_just_syms): Define.
- * oasys.c (oasys_bfd_link_just_syms): Define.
- * ppcboot.c (ppcboot_bfd_link_just_syms): Define.
- * som.c (som_bfd_link_just_syms): Define.
- * srec.c (srec_bfd_link_just_syms): Define.
- * targets.c (struct bfd_target): Add _bfd_link_just_syms.
- (BFD_JUMP_TABLE_LINK): And here.
- * tekhex.c (tekhex_bfd_link_just_syms): Define.
- * versados.c (versados_bfd_link_just_syms): Define.
- * vms.c (vms_bfd_link_just_syms): Define.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Regenerate.
-
-2002-05-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elf32-mips.c: Remove superfluous definitions copied from
- elfxx-mips.c.
- (bfd_elf32_bigmips_vec,bfd_elf32_littlemips_vec): Use the
- SGIish vectors to check the special case.
- (mips_elf_hi16_reloc): Fix comment.
- (mips_elf_got16_reloc): Likewise.
- (_bfd_mips_elf32_gprel16_reloc): Likewise.
- (elf_reloc_map): Code cleanup.
- (mips_reloc_map): Add comment.
- (bfd_elf23_bfd_reloc_type_lookup): Code cleanup.
- (mips_elf32_rtype_to_howto): Likewise.
- (mips_elf32_discard_info): Likewise.
- (elf32_mips_irix_compat): Invert logic: Only SGIish vectors
- lead to IRIX compatibility now.
-
-2002-05-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * elfxx-mips.c: Call it IRIX, not Irix in comments.
-
-2002-05-13 Jason Thorpe <thorpej@wasabisystems.com>
-
- * config.bfd (shle-*-netbsdelf*): Add target which includes
- sh64 support.
-
-2002-05-13 David Edelsohn <edelsohn@gnu.org>
-
- * configure.in: Revert 2002-04-07. Instead, auto-configure
- HAVE_ST_C_IMPL.
- * configure: Regenerate.
- * config.in: Regenerate.
- * rs6000-core.c (CNEW_IMPL): Guard use of c_impl with HAVE_ST_C_IMPL
- or AIX_5_CORE.
-
-2002-05-11 Federico G. Schwindt <fgsch@olimpo.com.br>
-
- * configure.in (sparc*-*-openbsd*): Support sparc64-openbsd
- corefiles as well.2
- * configure: Regenerate.
-
-2002-05-13 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (install-data-local): Install headers to
- $(exec_prefix)/include.
- * Makefile.in: Regenerate.
-
-2002-05-11 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
- Daniel Jacobowitz <drow@mvista.com>
-
- * coff-sh.c (sh_reloc_map): Map to R_SH_IMM32 for non-PE. Don't
- map BFD_RELOC_RVA.
-
-2002-05-11 Federico G. Schwindt <fgsch@olimpo.com.br>
-
- * config.bfd (alpha*-*-openbsd*, sparc64*-*-openbsd*,
- hppa*-*-openbsd*): New targets.
- * configure.in (alpha*-*-openbsd*): Set COREFILE.
- * configure: Regenerate.
-
-2002-05-10 Tom Rix <trix@redhat.com>
-
- * coff64-rs6000.c (xcoff64_reloc_type_br): New function for
- xcoff64_ppc_relocate_section.
- * coff-rs6000.c : Extern common xcoff_reloc_type functions.
- * libxcoff.h: Common xcoff_reloc_type function declaration.
-
-2002-05-10 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-i386.c (elf_i386_relocate_section): Remove overflow checks
- added in 2002-05-09 commit.
-
- * elf32-hppa.c (elf32_hppa_size_stubs): Revert part of 2002-05-04,
- don't look for stubs on all undefined syms.
-
-2002-05-09 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (RA_REGISTER_MASK, RA_REGISTER_SHIFT): Delete.
- (ppc64_elf_howto_raw <R_PPC64_RELATIVE>): Not pc_relative or
- pcrel_offset.
-
- * elf32-i386.c (elf_howto_table): Comments.
- (elf_i386_relocate_section): Handle more relocs for relocatable
- linking and against SEC_MERGE sections.
-
-2002-05-08 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_create_got): New function.
- (ppc_elf_create_dynamic_sections): Call ppc_elf_create_got before
- _bfd_elf_create_dynamic_sections. Correct .plt flags.
- (ppc_elf_check_relocs): Use ppc_elf_create_got in place of
- _bfd_elf_create_got_section.
-
-2002-05-07 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (struct elf_backend_data): Add rela_normal.
- * elfxx-target.h (elf_backend_rela_normal): Define.
- (elfNN_bed): Init rela_normal.
- * elflink.h (elf_link_input_bfd <emit_relocs>): Handle adjustment
- for section symbols here if rela_normal. Simplify abs section test.
- * elf-m10200.c (mn10200_elf_relocate_section): If relocatable,
- return immediately. Remove code handling relocatable linking.
- * elf-m10300.c (mn10300_elf_relocate_section): Likewise.
- * elf32-fr30.c (fr30_elf_relocate_section): Likewise.
- * elf32-i370.c (i370_elf_relocate_section): Likewise.
- * elf32-i860.c (elf32_i860_relocate_section): Likewise.
- * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
- * elf32-mcore.c (mcore_elf_relocate_section): Likewise.
- * elf32-openrisc.c (openrisc_elf_relocate_section): Likewise.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
- * elf32-s390.c (elf_s390_relocate_section): Likewise.
- * elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
- * elf64-s390.c (elf_s390_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
- * elfxx-ia64.c (elfNN_ia64_relocate_section): Likewise.
- * elf32-arm.h (elf32_arm_relocate_section): Likewise #ifndef USE_REL.
- * elf32-m32r.c (m32r_elf_relocate_section): Likewise.
- * elf-m10200.c (elf_backend_rela_normal): Define.
- * elf-m10300.c (elf_backend_rela_normal): Define.
- * elf32-fr30.c (elf_backend_rela_normal): Define.
- * elf32-i370.c (elf_backend_rela_normal): Define.
- * elf32-i860.c (elf_backend_rela_normal): Define.
- * elf32-m68k.c (elf_backend_rela_normal): Define.
- * elf32-mcore.c (elf_backend_rela_normal): Define.
- * elf32-openrisc.c (elf_backend_rela_normal): Define.
- * elf32-ppc.c (elf_backend_rela_normal): Define.
- * elf32-s390.c (elf_backend_rela_normal): Define.
- * elf32-xstormy16.c (elf_backend_rela_normal): Define.
- * elf64-ppc.c (elf_backend_rela_normal): Define.
- * elf64-s390.c (elf_backend_rela_normal): Define.
- * elf64-x86-64.c (elf_backend_rela_normal): Define.
- * elfxx-ia64.c (elf_backend_rela_normal): Define.
- * elf32-arm.h (elf_backend_rela_normal): Define #ifndef USE_REL.
- * elf32-m32r.c (elf_backend_rela_normal): Likewise.
-
-2002-05-06 Nick Clifton <nickc@cambridge.redhat.com>
-
- * elf32-arm.h (elf32_arm_final_link_relocate): Convert
- 'reloc_signed_max' and 'reloc_signed_min' into half-word offsets.
-
-2002-05-06 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_link_input_bfd <emit_relocs>): Adjust r_offset
- when not relocatable. Fix reloc_emitter call for K&R.
-
-2002-05-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_relocate_section): Reinstate code
- reloading local sym addend mistakenly removed in 2002-05-01 change.
-
- * dwarf2.c (struct line_head): Make prologue_length a bfd_vma.
- (read_abbrevs): Change "offset" param to bfd_vma.
- (parse_comp_unit): Change "version" and addr_size to unsigned ints.
- Change "abbrev_offset" to bfd_vma.
- (read_indirect_string): Use correct conversion chars in error
- message format string, cast bfd_vma's to unsigned long.
- (read_abbrevs): Likewise.
- (read_attribute_value): Likewise.
- (decode_line_info): Likewise.
- (scan_unit_for_functions): Likewise.
- (parse_comp_unit): Likewise.
-
-2002-05-04 Tom Rix <trix@redhat.com>
-
- * coffswap.h (coff_swap_reloc_in): Remove XCOFF support.
- (coff_swap_reloc_out): Same.
- * coff-rs6000.c: (xcoff_swap_reloc_in): Moved from coffswap.h.
- (xcoff_swap_reloc_out): Same.
- (xcoff_rtype2howto): Renamed from _bfd_xcoff_rtype2howto. Special
- case some 16 bit relocs. Add reloc value to output.
- (xcoff_howto_table): Remove 64 bit R_POS, add 16 bit
- R_RBR. Improve names.
- (_bfd_xcoff_reloc_type_lookup): Adjust for removal of 64 bit R_POS.
- (bfd_xcoff_backend_data): Update with new reloc swap names.
- (bfd_pmac_xcoff_backend_data) : Same.
- * coff64-rs6000.c: (xcoff64_swap_reloc_in): Moved from coffswap.h.
- (xcoff64_swap_reloc_out): Same.
- (xcoff64_rtype2howto): Special case some 16 bit relocs and 32 bit
- R_POS. Add reloc value to output.
- (xcoff64_howto_table): Move 64 bit R_POS to first entry. Add 16
- bit R_RBR. Improve names, masks.
- (xcoff64_reloc_type_lookup): Adjust for move of 64 bit R_POS.
- (bfd_xcoff_backend_data): Update with new reloc swap names.
- (bfd_xcoff_aix5_backend_data) : Same.
-
-2002-05-04 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-hppa.c (struct elf32_hppa_link_hash_table): Add
- bfd_count top_index, input_list, all_local_syms.
- (elf32_hppa_setup_section_lists): New function, split from
- elf32_hppa_size_stubs.
- (elf32_hppa_next_input_section): Likewise.
- (group_sections): Likewise.
- (get_local_syms): Likewise.
- (elf32_hppa_size_stubs): Adjust for split out functions. Look for
- stubs on undefined syms too.
- (elf32_hppa_set_gp): Use bfd_link_hash* instead of elf_link_hash*.
- Only access htab elf fields when we have an elf hash table.
- * elf32-hppa.h (elf32_hppa_setup_section_lists): Declare.
- (elf32_hppa_next_input_section): Declare.
-
-2002-05-04 Bob Byrnes <byrnes@curl.com>
-
- * opncls.c (_bfd_new_bfd_contained_in): Check return value of
- _bfd_new_bfd.
-
-2002-05-03 H.J. Lu (hjl@gnu.org)
-
- * elfxx-mips.c (mips_elf_link_hash_entry): Add forced_local.
- (mips_elf_link_hash_newfunc): Initialize forced_local to false.
- (mips_elf_record_global_got_symbol): Call _bfd_mips_elf_hide_symbol
- to hide a global symbol.
- (_bfd_mips_elf_hide_symbol): Return if forced_local is true. Set
- forced_local to true.
-
-2002-05-02 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_relocate_section): Force relative relocs
- vs SHN_UNDEF to zero.
-
-2002-05-02 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_howto_raw <R_PPC64_SECTOFF>): Change to a
- 16 bit reloc.
- <R_PPC64_SECTOFF_DS>: Likewise.
- (ppc64_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to
- SECTOFF reloc.
- * elf32-ppc.c (ppc_elf_howto_raw <R_PPC_SECTOFF>): Correct.
- (ppc_elf_reloc_type_lookup): Map from BFD_RELOC_16_BASEREL to
- SECTOFF reloc.
-
- * elf64-ppc.c (ppc64_elf_addr16_ha_reloc): Delete.
- (ppc64_elf_ha_reloc): New function.
- (ppc64_elf_brtaken_reloc): New function.
- (ppc64_elf_sectoff_reloc): New function.
- (ppc64_elf_sectoff_ha_reloc): New function.
- (ppc64_elf_toc_reloc): New function.
- (ppc64_elf_toc_ha_reloc): New function.
- (ppc64_elf_toc64_reloc): New function.
- (ppc64_elf_unhandled_reloc): New function.
- (ppc64_elf_howto_raw): Use the above.
- <R_PPC64_RELATIVE>: Mark pc_relative, pcrel_offset.
- <R_PPC64_SECTOFF>: Not pc_relative or pcrel_offset. Fix dst_mask.
- <R_PPC64_SECTOFF_DS>: Likewise.
- (IS_ABSOLUTE_RELOC): Update.
- (struct ppc_link_hash_table): Add have_undefweak.
- (ppc64_elf_link_hash_table_create): Init.
- (func_desc_adjust): Set have_undefweak.
- (ppc64_elf_func_desc_adjust): Call func_desc_adjust earlier. Only
- add the .sfpr blr when have_undefweak.
- (ppc64_elf_setup_section_lists): Check hash table flavour.
- (ppc64_elf_next_input_section): Move output_section->owner test to
- ppc64elf.em.
- (ppc64_elf_set_toc): Rename to ppc64_elf_toc, remove info param
- and relocatable test. Return TOCstart and don't set elf_gp.
- (ppc64_elf_relocate_section): Correct BRTAKEN/BRNTAKEN branch
- offset calculation. Add assert on weak sym branch tweaks.
- * elf64-ppc.h (ppc64_elf_set_toc): Delete.
- (ppc64_elf_toc): Declare.
- (ppc64_elf_next_input_section): Update.
-
-2002-05-01 Alan Modra <amodra@bigpond.net.au>
-
- * syms.c (_bfd_stab_section_find_nearest_line): Don't bomb on NULL
- file_name.
-
-2002-05-01 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (CROR_151515, CROR_313131): Define.
- (ppc64_elf_relocate_section): Use them. Don't look for plt calls
- on R_PPC64_ADDR24 relocs. Require a nop or no link reg on plt
- call branches. Correct undefined weak destination.
- (ppc64_elf_func_desc_adjust): Always create at least one blr in
- .sfpr, and correct case where either only savef* or restf* is
- needed.
-
- Long branch stubs, multiple stub sections.
- * elf64-ppc.h (ppc64_elf_setup_section_lists): Declare.
- (ppc64_elf_next_input_section): Declare.
- * elf64-ppc.c: Move linker-only prototypes.
- (STUB_SUFFIX): Define.
- (enum ppc_stub_type): New.
- (struct ppc_stub_hash_entry): New.
- (struct ppc_branch_hash_entry): New.
- (struct ppc_link_hash_entry): Add stub_cache, oh.
- (struct ppc_link_hash_table): Add stub_hash_table etc. Remove
- sstub. Add sbrlt, srelbrlt, has_14bit_branch, stub_iteration.
- Rename plt_overflow to stub_error.
- (ppc_stub_hash_lookup): Define.
- (ppc_branch_hash_lookup): Define.
- (stub_hash_newfunc): New function.
- (branch_hash_newfunc): New function.
- (link_hash_newfunc): Init new fields.
- (ppc64_elf_link_hash_table_create): Likewise.
- (ppc64_elf_link_hash_table_free): New function.
- (ppc_stub_name): New function.
- (ppc_get_stub_entry): New function.
- (ppc_add_stub): New function.
- (create_linkage_sections): Use bfd_make_section_anyway. Create
- .branch_lt and .rela.branch_lt sections. Don't create .stub.
- (ppc64_elf_check_relocs): Set has_14bit_branch on R_PPC64_REL14*,
- and set up for plt call stubs. Link func and func desc syms.
- (ppc64_elf_gc_sweep_hook): Handle REL14* as per REL24.
- (func_desc_adjust): Avoid hash lookup when func desc sym available
- via shortcut, and set links when processing.
- (ppc64_elf_hide_symbol): Likewise.
- (allocate_dynrelocs): Don't allocate stub section here.
- (ppc64_elf_size_dynamic_sections): Handle sbrlt and srelbrlt.
- Remove sstub code.
- (ppc_type_of_stub): New function.
- (build_one_stub): Delete.
- (ppc_build_one_stub): New function.
- (ppc_size_one_stub): New function.
- (ppc64_elf_setup_section_lists): New function.
- (ppc64_elf_next_input_section): New function.
- (group_sections): New function.
- (get_local_syms): New function.
- (ppc64_elf_size_stubs): Rewrite.
- (ppc64_elf_build_stubs): Rewrite.
- (ppc64_elf_relocate_section): Look up stub entry for REL24
- relocs. Don't propagate REL14* to dynamic objects. Look for long
- branch stubs if REL14* or REL24 relocs won't reach.
- (bfd_elf64_bfd_link_hash_table_free): Define.
-
-2002-04-30 Mark Mitchell <mark@codesourcery.com>
-
- * config.bfd: Add support for powerpc-*-windiss.
-
-2002-04-30 Tom Rix <trix@redhat.com>
-
- * xcofflink.c (xcoff_link_add_symbols): Always copy undef C_EXT
- symbol names into the hash table.
-
-2002-04-28 Tom Rix <trix@redhat.com>
-
- * coff-rs6000.c (xcoff_calculate_relocation) : Function table for
- calulating relocations.
- (xcoff_complain_overflow) : Function table for relocation errors.
- (xcoff_ppc_relocate_section): Use relocation and complain function
- tables.
- (xcoff_complain_overflow_unsigned_func): New complain function.
- (xcoff_complain_overflow_signed_func): Same.
- (xcoff_complain_overflow_bitfield_func): Same.
- (xcoff_complain_overflow_dont_func): Same.
- (xcoff_reloc_type_crel): New recot function.
- (xcoff_reloc_type_br): Same.
- (xcoff_reloc_type_ba): Same.
- (xcoff_reloc_type_toc): Same.
- (xcoff_reloc_type_rel): Same.
- (xcoff_reloc_type_neg): Same.
- (xcoff_reloc_type_pos): Same.
- (xcoff_reloc_type_fail): Same.
- (xcoff_reloc_type_noop): Same.
- * libxcoff.h : Declare common parts for xcoff64.
- * coff64-rs6000.c (xcoff64_ppc_relocate_section): Use relocation
- and complain function tables.
-
-2002-04-28 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-x86-64.c (struct elf64_x86_64_dyn_relocs): Comment typo.
- * elf32-hppa.c (elf32_hppa_final_link): Formatting.
-
-2002-04-26 Alan Modra <amodra@bigpond.net.au>
-
- * opncls.c (bfd_make_readable): Call bfd_section_list_clear.
- * xcofflink.c (xcoff_link_add_dynamic_symbols): Likewise.
-
- * elflink.h (elf_bfd_final_link): Ensure input bfd class is the
- same as the output before calling elf_link_input_bfd.
-
- * coffcode.h (coff_compute_section_file_positions): Set
- section_tail after shuffling section list.
-
-2002-04-24 Christian Groessler <chris@groessler.org>
-
- * coff-z8k.c (extra_case): Fix R_IMM32 relocations: The
- addresses are 23bit with a special layout, not plain 32bit
- values. Prevent relocation of immediate values.
-
-2002-04-24 Chris G. Demetriou <cgd@broadcom.com>
-
- * elfxx-mips.c (_bfd_mips_elf_print_private_bfd_data): If MDMX or
- MIPS-16 ASE flags are set, print something to indicate that.
-
-2002-04-23 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-hppa.c (hppa_type_of_stub): Correct and simplify condition
- under which a plt call stub is used.
- (final_link_relocate): Similarly.
- (allocate_plt_static): Clear h-plabel except when plt entry is
- exclusively used for a plabel.
- (allocate_dynrelocs): Use the above to simplify plt sizing.
- (struct elf32_hppa_link_hash_table): Add has_22bit_branch.
- (elf32_hppa_link_hash_table_create): Init.
- (BL22_RP): Define.
- (hppa_build_one_stub): Use BL22_RP if has_22bit_branch.
- (elf32_hppa_check_relocs): Set has_22bit_branch.
-
- * elf32-hppa.c (elf32_hppa_check_relocs): Remove debug message.
- (final_link_relocate): Likewise.
-
-2002-04-22 Jakub Jelinek <jakub@redhat.com>
-
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Don't build
- search table if some FDE is DW_EH_PE_aligned encoded either.
- (_bfd_elf_write_section_eh_frame): Handle terminating FDE specially.
-
-2002-04-22 Richard Smith <richard@ex-parrot.com>
- Jakub Jelinek <jakub@redhat.com>
-
- * elf-eh-frame.c (struct eh_cie_fde): Add per_encoding_relative.
- (_bfd_elf_discard_section_eh_frame): Set it for CIEs with pcrel
- encoded personality.
- (_bfd_elf_write_section_eh_frame): Adjust pcrel encoded personality
- for CIE/FDE removal.
-
-2002-04-20 Tom Rix <trix@redhat.com>
-
- * coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Fix C_FILE auxent.
-
-2002-04-20 Alan Modra <amodra@bigpond.net.au>
-
- * archures.c (bfd_lookup_arch): Move the list order comment..
- (struct bfd_arch_info): ..to where it belongs.
- * bfd-in2.h: Regenerate.
-
- * archures.c (bfd_lookup_arch): Add comment on list order.
- (bfd_default_set_arch_mach): Use bfd_lookup_arch.
- * cpu-powerpc.c (bfd_powerpc_archs): Re-order so that the default
- is always at head of list.
-
-2002-04-18 Nick Clifton <nickc@cambridge.redhat.com>
-
- * coff-arm.c (coff_thumb_pcrel_12, coff_thumb_pcrel_9,
- insert_thumb_branch, record_thumb_to_arm_glue): Suppress
- definition of these functions for ARM_WINCE builds as they are
- not used.
- (SWAP_IN_RELOC_OFFSET, SWAP_OUT_RELOC_OFFSET): Do not define
- for ARM_WINCE builds.
-
-2002-04-18 Nick Clifton <nickc@cambridge.redhat.com>
-
- * coff-arm.c (bfd_arm_process_before_allocation):
-
-2002-04-17 J"orn Rennecke <joern.rennecke@superh.com>
-
- * cpu-sh.c (scan_mach): Delete.
- (arch_info_struct): Replace scan_mach with bfd_default_scan.
- (bfd_sh_arch): Likewise.
-
-2002-04-16 Nick Clifton <nickc@cambridge.redhat.com>
-
- * ihex.c (ihex_write_object_contents): Fix check for records
- crossing 64K boundaries.
-
-2002-04-16 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-m32r.c (m32r_elf_add_symbol_hook): Check the hash table
- type rather than just assuming entries are ELF.
- * elf32-sh64.c (sh64_elf_add_symbol_hook): Likewise.
- * elf64-sh64.c (sh64_elf64_add_symbol_hook): Likewise.
- * elf64-sparc.c (sparc64_elf_add_symbol_hook): Likewise.
- * elf64-mmix.c (mmix_elf_add_symbol_hook): Use bfd_link_hash_entry
- rather than elf_link_hash_entry.
-
-2002-04-15 Richard Henderson <rth@redhat.com>
-
- * elf32-mips.c (mips_elf32_object_p): Revert 0404 fragment: allow
- n32 binaries.
-
-2002-04-15 Michael Snyder <msnyder@redhat.com>
-
- * opncls.c (bfd_close): Write contents if writeable.
- Minor formatting tidy-ups.
-
-2002-04-15 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-ppc.c (ppc_elf_add_symbol_hook): Check the hash table type.
-
-2002-04-12 Michael Snyder <msnyder@redhat.com>
-
- * bfd-in.h (bfd_get_section_lma): New access macro.
- Minor white-space fix-up.
-
-2002-04-12 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (prep_headers): Don't zero EI_OSABI, EI_ABIVERSION or
- header pad.
-
-2002-04-09 DJ Delorie <dj@redhat.com>
-
- * elfarm-nabi.c (elf32_arm_howto_table): Fix ABS16 masks.
-
-2002-04-09 Casper S. Hornstrup <chorns@users.sourceforge.net>
-
- * coffcode.h (coff_read_word): New.
- (coff_compute_checksum): New.
- (coff_apply_checksum): New.
- (coff_write_object_contents): Call coff_apply_checksum () to
- apply checksum to PE image.
-
-2002-04-08 Randolph Chung <tausq@debian.org>
-
- * elf32-hppa.c (hppa_unwind_entry_compare): Move to elf-hppa.h.
- (elf32_hppa_final_link): Split out sorting logic to..
- * elf-hppa.h (elf_hppa_sort_unwind): ..here.
- (elf_hppa_final_link): Call elf_hppa_sort_unwind.
-
-2002-04-07 Andrew Cagney <ac131313@redhat.com>
-
- * configure.in: Add missing ``|'' to powerpc-*-aix4.[4-9]*
- pattern.
- * configure: Re-generate.
-
-2002-04-07 Andrew Cagney <ac131313@redhat.com>
-
- * configure.in: Only define AIX_CORE_DUMPX_CORE when AIX version
- is greater or equal to 4.3.3.
- * configure: Regenerate.
- Fix PR gdb/344.
-
-2002-04-05 Hans-Peter Nilsson <hp@axis.com>
-
- * elf32-cris.c (cris_elf_howto_table) <R_CRIS_16_PCREL,
- R_CRIS_32_PCREL>: Fix typo in name.
- (cris_elf_check_relocs): Always create .rela.got here when
- R_CRIS_16_GOTPLT or R_CRIS_32_GOTPLT is seen.
- (elf_cris_adjust_gotplt_to_got): Don't create .rela.got here;
- assume it's created.
-
-2002-04-04 Daniel Jacobowitz <drow@mvista.com>
-
- * aout-adobe.c (aout_32_bfd_link_hash_table_free): Define.
- * aout-target.h (MY_bfd_link_hash_table_free): Conditionally
- define.
- * aout-tic30.c (MY_bfd_link_hash_table_free): Likewise.
- * bfd.c (bfd_link_hash_table_free): Define.
- * binary.c (binary_bfd_link_hash_table_free): Define.
- * bout.c (b_out_bfd_link_hash_table_free): Define.
- * coff-rs6000.c (rs6000coff_vec): Include
- _bfd_generic_link_hash_table_free.
- (pmac_xcoff_vec): Likewise.
- * coff64-rs6000.c (rs6000coff64_vec): Likewise.
- (aix5coff64_vec): Likewise.
- * coffcode.h (coff_bfd_link_hash_table_free): Conditionally define.
- * elf-m10300.c (elf32_mn10300_link_hash_table_free): New function.
- (bfd_elf32_bfd_link_hash_table_free): Define.
- * elf32-hppa.c (elf32_hppa_link_hash_table_free): New function.
- (bfd_elf32_bfd_link_hash_table_free): Define.
- * elfxx-target.h (bfd_elfNN_bfd_link_hash_table_free): Conditionally
- define.
- * i386msdos.c (msdos_bfd_link_hash_table_free): Define.
- * i386os9k.c (os9k_bfd_link_hash_table_free): Define.
- * ieee.c (ieee_bfd_link_hash_table_free): Define.
- * ihex.c (ihex_bfd_link_hash_table_free): Define.
- * libbfd-in.h (_bfd_nolink_bfd_link_hash_table_free): Define.
- (_bfd_generic_link_hash_table_free): Add prototype.
- * libcoff-in.h (_bfd_xcoff_bfd_link_hash_table_free): Add prototype.
- * libecoff.h (_bfd_ecoff_bfd_link_hash_table_free): Define.
- * linker.c (_bfd_generic_link_hash_table_free): New function.
- * mmo.c (mmo_bfd_link_hash_table_free): Define.
- * nlm-target.h (nlm_bfd_link_hash_table_free): Define.
- * oasys.c (oasys_bfd_link_hash_table_free): Define.
- * ppcboot.c (ppcboot_bfd_link_hash_table_free): Define.
- * som.c (som_bfd_link_hash_table_free): Define.
- * srec.c (srec_bfd_link_hash_table_free): Define.
- * tekhex.c (tekhex_bfd_link_hash_table_free): Define.
- * versados.c (versados_bfd_link_hash_table_free): Define.
- * vms.c (vms_bfd_link_hash_table_free): New function.
- * xcofflink.c (_bfd_xcoff_bfd_link_hash_table_free): New function.
-
- * coff-arm.c (coff_arm_link_hash_table_create): Use bfd_malloc
- instead of bfd_alloc.
- * coff-h8300.c (h8300_coff_link_hash_table_create): Likewise.
- * coff-mcore.c (coff_mcore_link_hash_table_create): Likewise.
- * coff-ppc.c (ppc_coff_link_hash_table_create): Likewise.
- * cofflink.c (_bfd_coff_link_hash_table_create): Likewise.
- * ecoff.c (_bfd_ecoff_bfd_link_hash_table_create): Likewise.
- * elf-m10300.c (elf32_mn10300_link_hash_table_create): Likewise.
- * elf.c (_bfd_elf_link_hash_table_create): Likewise.
- * elf32-arm.h (elf32_arm_link_hash_table_create): Likewise.
- * elf32-cris.c (elf_cris_link_hash_table_create): Likewise.
- * elf32-hppa.c (elf32_hppa_link_hash_table_create): Likewise.
- * elf32-i386.c (elf_i386_link_hash_table_create): Likewise.
- * elf32-m68k.c (elf_m68k_link_hash_table_create): Likewise.
- * elf32-s390.c (elf_s390_link_hash_table_create): Likewise.
- * elf32-sh.c (sh_elf_link_hash_table_create): Likewise.
- * elf64-alpha.c (elf64_alpha_bfd_link_hash_table_create): Likewise.
- * elf64-ppc.c (ppc64_elf_link_hash_table_create): Likewise.
- * elf64-s390.c (elf_s390_link_hash_table_create): Likewise.
- * elf64-sh64.c (sh64_elf64_link_hash_table_create): Likewise.
- * elf64-sparc.c (sparc64_elf_bfd_link_hash_table_create): Likewise.
- * elf64-x86-64.c (elf64_x86_64_link_hash_table_create): Likewise.
- * elfxx-mips.c (_bfd_mips_elf_link_hash_table_create): Likewise.
- * linker.c (_bfd_generic_link_hash_table_create): Likewise.
- * m68klinux.c (linux_link_hash_table_create): Likewise.
- * sparclinux.c (linux_link_hash_table_create): Likewise.
- * sunos.c (sunos_link_hash_table_create): Likewise.
- * xcofflink.c (_bfd_xcoff_bfd_link_hash_table_create): Likewise.
-
- * targets.c: Add _bfd_link_hash_table_free to xvec.
-
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
- * libcoff.h: Regenerate.
-
-2002-04-04 Alan Modra <amodra@bigpond.net.au>
-
- * dep-in.sed: Cope with absolute paths.
- * Makefile.am (dep.sed): Subst TOPDIR, and not INCDIR.
- Run "make dep-am".
- * Makefile.in: Regenerate.
- * coff-arm.c: Fix copyright date.
- * cpu-h8300.c: Likewise.
- * cpu-i370.c: Likewise.
- * cpu-s390.c: Likewise.
- * cpu-mips.c: Likewise.
- * po/SRC-POTFILES.in: Regenerate.
-
-2002-04-04 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * Makefile.am: Add elfxx-mips.c to the known backends.
- (elf32-mips.lo): remove dependency to coff/external.h.
- * Makefile.in: Regenerate.
- * configure.in: Add elfxx-mips.lo to all vectors using elf32-mips.lo
- Remove elf32-mips.lo from 64 bit vectors. Update dependencies
- accordingly.
- * configure: Regenerate.
- * elf-bfd.h: Move all MIPS ELF specific prototypes to elfxx-mips.h.
- (irix_compat_t): IRIX compatibility level, moved from elf32-mips.c.
- (elf_backend_mips_irix_compat, elf_backend_mips_rtype_to_howto): New
- MIPS specific backend functions.
- * elf32-mips.c: Moved most code to elfxx-mips.c.
- (mips_elf_hi16_reloc): Rename from _bfd_mips_elf_hi16_reloc and make
- static.
- (mips_elf_lo16_reloc): Likewise, was _bfd_mips_elf_lo16_reloc.
- (mips_elf_got16_reloc): Likewise, was _bfd_mips_elf_got16_reloc.
- (mips_elf_gprel32_reloc): Likewise, was _bfd_mips_elf_gprel32_reloc.
- (mips_elf32_rtype_to_howto): Rename from mips_rtype_to_howto. Changed
- interface to allow selection of the right REL or RELA howto table.
- (mips_elf32_object_p): Rename from _bfd_mips_elf_object_p and made
- static. Let it refuse n32 objects.
- (elf32_mips_grok_prstatus): Rename from _bfd_elf32_mips_grok_prstatus.
- (elf32_mips_grok_psinfo): Rename from _bfd_elf32_mips_grok_psinfo.
- (elf32_mips_discard_info): Rename from _bfd_elf32_mips_discard_info.
- (elf32_mips_ignore_discarded_relocs): Rename from
- _bfd_elf32_mips_ignore_discarded_relocs.
- (elf32_mips_write_section): Rename from _bfd_elf32_mips_write_section.
- (elf32_mips_irix_compat): New function, replaces IRIX_COMPAT.
- (elf_mips_howto_table_rela): Remove.
- * elf64-mips.c: Moved most code to elfxx-mips.c.
- (bfd_elf64_bfd_reloc_type_lookup): Make static.
- (mips_elf64_rtype_to_howto): New function.
- (mips_elf64_object_p): Likewise.
- (elf64_mips_irix_compat): Likewise.
- * elfxx-mips.c: New file containing common code merged together from
- elf32-mips.c and elf64-mips.c.
- * elfxx-mips.h: New file containing MIPS specific prototypes from
- elf-bfd.h.
- * elfxx-target.h: Add handling for elf_backend_mips_irix_compat and
- elf_backend_mips_rtype_to_howto.
-
-2002-04-04 Alan Modra <amodra@bigpond.net.au>
-
- * srec.c (MAXCHUNK, Chunk): Revise comments.
- (srec_write_record): Correct buffer size.
- (srec_write_header): Do without intermediate buffer.
- (srec_write_section): Validate Chunk.
- (srec_write_terminator): Pass NULL instead of dummy buffer.
- (srec_write_symbols): Pass file and symbol names directly to
- bfd_bwrite so sprintf won't overflow buffer.
-
-2002-04-03 Jakub Jelinek <jakub@redhat.com>
-
- * elf32-sparc.c (elf32_sparc_relocate_section): Don't emit dynamic
- PC relative relocs against hidden symbols.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
-
-2002-04-03 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (_bfd_elf_make_section_from_shdr): When setting section
- LMAs, loop over segments until p_vaddr and p_memsz specify an
- extent enclosing the section.
-
-2002-04-02 Nick Clifton <nickc@cambridge.redhat.com>
-
- * ihex.c (ihex_write_object_contents): Do not allow records to
- cross a 64K boundary - wrap if necessary.
-
-2002-04-01 Nathan Williams <nathanw@wasabisystems.com>
-
- * elf.c (elfcore_netbsd_get_lwpid): Fix off-by-one error
- which caused the returned LWP ID to always be 0.
-
-2002-04-01 Richard Henderson <rth@redhat.com>
-
- * elf32-sparc.c (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New.
- (elf32_sparc_relocate_section): Use it to figure out when to
- initialize .got entries.
- * elf64-sparc.c: Similarly.
-
-2002-03-28 Alan Modra <amodra@bigpond.net.au>
-
- * linker.c (link_action): Ignore duplicate warning syms.
- (_bfd_generic_link_write_global_symbol): Follow warning symbol link.
- * elflink.h (elf_adjust_dynstr_offsets): Likewise.
- (elf_adjust_dynamic_symbol): Likewise.
- (elf_export_symbol): Likewise.
- (elf_link_find_version_dependencies): Likewise.
- (elf_link_assign_sym_version): Likewise.
- (elf_link_sec_merge_syms): Likewise.
- (elf_link_output_extsym): Likewise.
- (elf_gc_sweep_symbol): Likewise.
- (elf_gc_propagate_vtable_entries_used): Likewise.
- (elf_gc_smash_unused_vtentry_relocs): Likewise.
- (elf_gc_allocate_got_offsets): Likewise.
- (elf_collect_hash_codes): Likewise.
- * elflink.c (elf_link_renumber_hash_table_dynsyms): Likewise.
- * elf-hppa.h (elf_hppa_unmark_useless_dynamic_symbols): Likewise.
- (elf_hppa_remark_useless_dynamic_symbols): Likewise.
- * elf-m10300.c (elf32_mn10300_finish_hash_table_entry): Likewise.
- * elf32-arm.h (elf32_arm_discard_copies): Likewise.
- * elf32-cris.c (elf_cris_adjust_gotplt_to_got): Likewise.
- (elf_cris_discard_excess_dso_dynamics): Likewise.
- * elf32-hppa.c (clobber_millicode_symbols): Likewise.
- (mark_PIC_calls): Likewise.
- (allocate_plt_static): Likewise.
- (allocate_dynrelocs): Likewise.
- (readonly_dynrelocs): Likewise.
- * elf32-i386.c (allocate_dynrelocs): Likewise.
- (readonly_dynrelocs): Likewise.
- * elf32-i370.c (i370_elf_adjust_dynindx): Likewise.
- * elf32-m68k.c (elf_m68k_discard_copies): Likewise.
- * elf32-mips.c (mips_elf_output_extsym): Likewise.
- (mips_elf_sort_hash_table_f): Likewise.
- (mips_elf_check_mips16_stubs): Likewise.
- * elf32-s390.c (allocate_dynrelocs): Likewise.
- (readonly_dynrelocs): Likewise.
- * elf32-sh.c (sh_elf_discard_copies): Likewise.
- * elf32-xstormy16.c (xstormy16_relax_plt_check): Likewise.
- (xstormy16_relax_plt_realloc): Likewise.
- * elf64-alpha.c (elf64_alpha_calc_got_offsets_for_symbol): Likewise.
- (elf64_alpha_output_extsym): Likewise.
- * elf64-hppa.c (elf64_hppa_mark_exported_functions): Likewise.
- * elf64-mips.c (mips_elf64_sort_hash_table_f): Likewise.
- (mips_elf64_check_mips16_stubs): Likewise.
- (mips_elf64_output_extsym): Likewise.
- * elf64-ppc.c (func_desc_adjust): Likewise.
- (allocate_dynrelocs): Likewise.
- (readonly_dynrelocs): Likewise.
- * elf64-s390.c (allocate_dynrelocs): Likewise.
- (readonly_dynrelocs): Likewise.
- * elf64-sh64.c (sh64_elf64_discard_copies): Likewise.
- * elf64-x86-64.c (allocate_dynrelocs): Likewise.
- (readonly_dynrelocs): Likewise.
- * elfxx-ia64.c (elfNN_ia64_global_dyn_sym_thunk): Likewise.
- * aoutx.h (aout_link_write_other_symbol): Likewise.
- * cofflink.c (_bfd_coff_write_task_globals): Likewise.
- (_bfd_coff_write_global_sym): Likewise.
- * i386linux.c (linux_tally_symbols): Likewise.
- * m68klinux.c (linux_tally_symbols): Likewise.
- * sparclinux.c (linux_tally_symbols): Likewise.
- * pdp11.c (aout_link_write_other_symbol): Likewise.
- * sunos.c (sunos_scan_dynamic_symbol): Likewise.
- * xcofflink.c (xcoff_build_ldsyms): Likewise.
- (xcoff_write_global_symbol): Likewise.
-
- * cofflink.c (_bfd_coff_final_link): Formatting.
- * cpu-mips.c (mips_compatible): Make static, prototype.
- * elf32-i386.c (elf_i386_check_relocs): Formatting.
- * elf32-sh.c (sh_elf_size_dynamic_sections): Likewise.
- * elf64-alpha.c (elf64_alpha_output_extsym): Likewise.
- * elf64-mips.c (mips_elf64_sort_hash_table): Likewise.
- (mips_elf64_final_link): Likewise.
- * elflink.h (elf_link_find_version_dependencies): Remove duplicate
- prototype.
-
-2002-03-27 Nick Clifton <nickc@cambridge.redhat.com>
-
- * coff-arm.c (SWAP_IN_RELOC_OFFSET): Define.
- (SWAP_OUT_RELOC_OFFSET): Define.
-
-2002-03-27 Gregory Steuck <greg@nest.cx>
-
- * elf.c (_bfd_elf_get_symtab_upper_bound): Leave space for
- terminating NULL if empty symbol table.
- (_bfd_elf_get_dynamic_symtab_upper_bound): Likewise.
-
-2002-03-26 H.J. Lu (hjl@gnu.org)
-
- * elflink.h (elf_link_input_bfd): Revert the last change since
- the gcc exception handling isn't fixed yet.
-
-2002-03-26 H.J. Lu (hjl@gnu.org)
-
- * elflink.h (elf_link_input_bfd): Complain about relocations
- against local symbols in discarded sections.
-
-2002-03-26 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.h (elf_gc_mark): Don't recurse into non-ELF sections.
-
-2002-03-23 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (_bfd_elf_make_section_from_shdr): Don't set lma based on
- section file offset for !SEC_LOAD sections.
-
-2002-03-21 Richard Earnshaw <rearnsha@arm.com>
-
- * elf32-arm.h (elf32_arm_final_link_relocate <case R_ARM_GOTOFF>,
- <case R_ARM_GOT>): Handle relocations to Thumb functions.
-
-2002-03-21 Alan Modra <amodra@bigpond.net.au>
-
- * coff64-rs6000.c (_bfd_xcoff64_put_symbol_name): Prototype.
- Whitespace changes.
- * archive.c: Update copyright date.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
- * Makefile.am: Run "make dep-am"
- * Makefile.in: Regenerate.
- * po/SRC-POTFILES.in: Regenerate.
-
-2002-03-20 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2.c (struct funcinfo): Move up.
- (lookup_address_in_function_table): New argument function_ptr.
- Set it.
- (lookup_address_in_line_table): New argument function. If function
- is non-NULL, use it to handle ``addr'' before the first line note of
- the function.
- (comp_unit_find_nearest_line): Update and swap calls to
- lookup_address_in_function_table and lookup_address_in_line_table.
- * syms.c (_bfd_stab_section_find_nearest_line): Use the first
- N_SLINE encountered if we see an N_FUN before any N_SLINE.
-
-2002-03-20 Tom Rix <trix@redhat.com>
-
- * coff-rs6000.c (_bfd_xcoff_stat_arch_elt): Renamed from
- _bfd_xcoff_generic_stat_arch_elt. Fix format check.
- * coff64-rs6000.c : Use _bfd_xcoff_stat_arch_elt.
-
-2002-03-19 Tom Rix <trix@redhat.com>
-
- * xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): Look through all
- dynamic objects in archives.
-
-2002-03-19 Hans-Peter Nilsson <hp@bitrange.com>
-
- * elflink.h (NAME(bfd_elf,record_link_assignment)): Don't set
- STT_NOTYPE symbols to STT_OBJECT.
-
-2002-03-18 Jan Hubicka <jh@suse.cz>
-
- * cpu-i386.c (bfd_x86_64_arch): Rename to "i386:x86-64"
-
-2002-03-18 Tom Rix <trix@redhat.com>
-
- * aix5ppc.core.c : New file for AIX 5 64 bit core support.
- * bfd-in.h : Add bfd_xcoff_ar_archive_set_magic declaration.
- * coff-rs6000 (do_pad) : New function for archive padding.
- (do_copy) : New function for object file copying in archives.
- (do_shared_object_padding) : New function for padding shared
- objects to their text section alignment in archives.
- (bfd_xcoff_ar_achive_set_magic) : Stub.
- (xcoff_write_armap_big) : Use do_copy and do_pad.
- (xcoff_write_archive_contents_big) : Use do_shared_object_padding,
- do_copy and do_pad.
- * coff64-rs6000.c (xcoff64_write_ojbect_contents) : Use
- bfd_xcoff_magic_number.
- (xcoff64_bad_format_hook) : New function for _bfd_bad_format_hook
- fop.
- (xcoff_backend_data_r) : Use xcoff64_bad_format_hook.
- (bfd_xcoff_aix5_backend_data) : New Aix 5 backend data.
- (aix5coff64_vec) : New Aix 5 target aix5coff64-rs6000.
- * rs6000-core.c : Update copyright date.
- * xcofflink.c (bfd_xcoff_size_dynamic_sections): Check for NULL
- csectpp.
- * coffcode.h (coff_new_section_hook) : Use new accessor macros.
- (coff_set_arch_mach_hook) : Add Aix 5 U64_TOCMAGIC magic #.
- (coff_set_flags) : Use bfd_xcoff_magic_number.
- * libxcoff.h (bfd_xcoff_is_xcoff64): Add U64_TOCMAGIC.
- * configure.in : Add powerpc-*-aix5 and rs6000-*-aix5 support.
- * Makefile.am : Same.
- * config.bfd : Same.
- * targets.c : Same.
- * configure : Regnerate.
- * Makefile.in : Same.
- * bfd-in2.h : Same.
-
-2002-03-18 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/fr.po: Updated version.
-
-2002-03-18 Alan Modra <amodra@bigpond.net.au>
-
- * libbfd.c (bfd_write_bigendian_4byte_int): Return true iff success.
- * libbfd.h: Regenerate.
- * archive.c (coff_write_armap): Pass on failures from
- bfd_write_bigendian_4byte_int.
-
-2002-03-14 H.J. Lu <hjl@gnu.org>
-
- * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Set the BFD
- error to bfd_error_nonrepresentable_section for reinit_array
- section in DSO.
-
-2002-03-14 Nick Clifton <nickc@cambridge.redhat.com>
-
- * coffcode.h (coff_slurp_symbol_table): When adding BSF_WEAK flag,
- OR it in rather than replacing previously selected flags.
-
- * elfxx-target.h (TARGET_BIG_SYM): Set ar_max_namelen to 15.
- (TARGET_LITTLE_SYM): Set ar_max_namelen to 15.
-
-2002-03-14 Alan Modra <amodra@bigpond.net.au>
-
- * cpu-mips.c (mips_compatible): New. Don't check bits_per_word.
- (N): Use the above.
- * elflink.h (elf_bfd_final_link): Revert last change. Instead,
- ensure reloc size matches before calling elf_link_input_bfd.
- Add an assert to check reloc size when counting output relocs.
-
-2002-03-14 Nick Clifton <nickc@cambridge.redhat.com>
+ * elf32-sparc.c (elf32_sparc_grok_psinfo): New function.
- * mmo.c (mmo_get_loc): Return NULL rather than false.
+2004-01-02 Mark Kettenis <kettenis@gnu.org>
-2002-03-13 Nick Clifton <nickc@cambridge.redhat.com>
+ * elf32-i386.c (elf_i386_grok_prstatus): Add support for FreeBSD.
+ (elf_i386_grok_psinfo): Likewise.
- * po/fr.po: Updated version.
+2004-01-02 Bernardo Innocenti <bernie@develer.com>
-2002-03-13 Alan Modra <amodra@bigpond.net.au>
+ * config.bfd: Add m68k-uClinux target.
- * archures.c (bfd_default_compatible): Test bits_per_word.
- * cpu-i386.c (i386_compatible): Remove. Replace occurrences with
- bfd_default_compatible.
- * cpu-i370.c (i370_compatible): Likewise.
- * cpu-sparc.c (sparc_compatible): Likewise.
- * cpu-h8300.c (compatible): Test in->arch == out->arch.
+2004-01-01 Grant Edwards <grante@visi.com>
- * elflink.h: Formatting fixes.
- (elf_link_output_extsym): Merge undefined and undef weak cases.
-
- * elflink.h (elf_bfd_final_link): Only call elf_link_input_bfd
- when word size of input matches output word size.
-
-2002-03-12 Andreas Jaeger <aj@suse.de>
-
- * cpu-i386.c (i386_compatible): New. Use it instead of
- bfd_default_compatible.
-
-2002-03-07 H.J. Lu (hjl@gnu.org)
-
- * coff-sh.c (shcoff_reloc_map): Use bfd_reloc_code_real_type
- as the type for bfd_reloc_val.
-
-2002-03-05 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * elf-hppa.h (elf_hppa_is_dynamic_loader_symbol): New function.
- (elf_hppa_relocate_section): Ignore undefined dynamic loader symbols.
- (elf_hppa_final_link_relocate): Correct relocations for indirect
- references to local data through the DLT. Fix .opd creation for
- local symbols using R_PARISC_LTOFF_FPTR32 and R_PARISC_FPTR64
- relocations. Use e_lsel selector for R_PARISC_DLTIND21L,
- R_PARISC_LTOFF_FPTR21L and R_PARISC_LTOFF_TP21L as per
- "Processor-Specific ELF for PA_RISC, Version 1.43" document.
- Similarly, use e_rsel for DLT and LTOFF 'R' relocations.
- * elf32-hppa.c (final_link_relocate): Revise relocation selectors
- as per "Processor-Specific ELF for PA_RISC, Version 1.43" document.
-
-2002-03-05 Jakub Jelinek <jakub@redhat.com>
-
- * merge.c (_bfd_merge_sections): Don't segfault if there
- is nothing to merge due to GC.
-
-2002-03-05 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-hppa.c (clobber_millicode_symbols): Remove hack to keep
- symbols that have been forced local.
-
- * elflink.h (elf_bfd_final_link): Call elf_link_output_extsym
- to output forced local syms for non-shared link.
- (elf_link_output_extsym): Tweak condition for calling backend
- adjust_dynamic_symbol so that previous behaviour is kept.
- Whitespace changes throughout file.
-
-2002-03-04 H.J. Lu <hjl@gnu.org>
-
- * elf.c (bfd_section_from_shdr): Handle special sections,
- .init_array, .fini_array and .preinit_array.
- (elf_fake_sections): Likewise.
-
- * elflink.h (NAME(bfd_elf,size_dynamic_sections)): Create the
- DT entry only if the section is in output for .init_array,
- .fini_array and .preinit_array. Complain about .preinit_array
- section in DSO.
- (elf_bfd_final_link): Warn zero size for .init_array,
- .fini_array and .preinit_array sections.
-
- * elfxx-ia64.c (elfNN_ia64_section_from_shdr): Remove
- SHT_INIT_ARRAY, SHT_FINI_ARRAY and SHT_PREINIT_ARRAY.
- (elfNN_ia64_fake_sections): Remove .init_array, .fini_array and
- .preinit_array.
-
-2002-03-04 Alan Modra <amodra@bigpond.net.au>
-
- * configure.in (WIN32LIBADD): Don't eval PICFLAG assignment.
- * configure: Regenerate.
-
-2002-03-02 Tom Rix <trix@redhat.com>
-
- * coff64-rs6000.c (xcoff64_howto_table): Replace howto types with
- symbolic equiv.
- * coff-rs6000.c (xcoff_howto_table): Same.
-
-2002-03-01 David Mosberger <davidm@hpl.hp.com>
-
- * elflink.h (size_dynamic_sections): If section named
- ".preinit_array" exists, create DT_PREINIT_ARRAY and
- DT_PREINIT_ARRAYSZ entries in dynamic table. Analogously for
- ".init_array" and ".fini_array".
- (elf_bfd_final_link): Handle DT_PREINIT_ARRAYSZ, DT_INIT_ARRAYSZ,
- DT_FINI_ARRAYSZ, DT_PREINIT_ARRAY, DT_INIT_ARRAY, and
- DT_FINI_ARRAY.
-
-2002-02-26 Andrew Macleod <amacleod@cygnus.com>
-
- * elflink.h (elf_bfd_final_link): Don't crash on SHN_UNDEF local
- dynsyms.
-
-2002-02-25 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-hppa.h: Update copyright date.
-
- * elf64-ppc.c (ppc64_elf_check_relocs): Warning fix.
- (ppc64_elf_relocate_section): Don't generate power4 style branch
- hints for *_BRTAKEN and *_BRNTAKEN relocs.
-
-2002-02-22 Jakub Jelinek <jakub@redhat.com>
-
- * elf64-sh64.c (sh_elf64_relocate_section): Fix a typo from my
- last patch.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
-
-2002-02-21 Andreas Jaeger <aj@suse.de>
-
- * elf64-x86-64.c: Major rework that introduces all recent changes
- to the x86-64 backend. Get a closer match to elf32-i386.
- (struct elf64_x86_64_dyn_relocs): Rename from
- elf64_x86_64_pcrel_relocs_copied, add additional fields. Change
- all users.
- (struct elf64_x86_64_link_hash_table): Add short cuts to some
- sections.
- (link_hash_newfunc): Rename from elf64_x86_64_link_hash_newfunc,
- remove casts, initialize new hash members.
- (create_got_section): New.
- (elf64_x86_64_create_dynamic_sections): New.
- (elf64_x86_64_copy_indirect_symbol): New.
- (elf64_x86_64_check_relocs): Don't allocate space for dynamic
- relocs, .got or .relgot here but do it in allocate_dynrelocs.
- Reference count possible .plt and .got entries. Don't test input
- section SEC_READONLY here to try to avoid copy relocs, and keep
- dyn_relocs regardless of ELF_LINK_NON_GOT_REF. Don't set
- DF_TEXTREL here. Delay setting of variables until needed. Cache
- pointer to "sreloc" section in elf_section_data. Tweak condition
- under which .got created. Report files with bad relocation
- section names.
- (elf64_x86_64_gc_sweep_hook): Sweep dyn_relocs and local_dynrel.
- Reference count possible .plt entries. Don't deallocate .got and
- .relgot space here.
- (elf64_x86_64_adjust_dynamic_symbol): Handle nocopyreloc. Don't
- do copy reloc processing for weakdefs. Remove redundant casts and
- aborts. Delay setting of vars until needed. Move creation of
- dynamic symbols and allocation of .plt and .rela.plt to
- allocate_dynrelocs. Replace BFD_ASSERT with abort.
- (WILL_CALL_FINISH_DYNAMIC_SYMBOL): New.
- (allocate_dynrelocs): New.
- (readonly_dynrelocs): New.
- (elf64_x86_64_size_dynamic_sections): Call readonly_dynrelocs.
- Allocate space for dyn relocs. Replace BFD_ASSERT with abort.
- Zero out the dynamic allocated content space.
- (elf64_x86_64_discard_copies): Removed.
- (elf64_x86_64_relocate_section): Make use of dynamic section
- short-cuts. Localise vars, and delay setting. Better error
- reporting, replace BFD_ASSERT with abort. Check
- ELF_LINK_HASH_DEF_DYNAMIC to see if a symbol is not defined in the
- regular object file and tread the weak definition as the normal
- one. Don't discard relocs for undefweak or undefined symbols and
- check !DEF_REGULAR as well as DEF_DYNAMIC in test for avoided copy
- relocs.
- (elf64_x86_64_finish_dynamic_symbol): Don't copy relocs for
- symbols that have been forced local. Use same test to decide if
- we can use a relative reloc for got as relocate_section. Expand
- SHN_UNDEF comment. Move expressions out of function calls.
- Replace BFD_ASSERT with abort.
- (bfd_elf64_bfd_final_link): Removed.
- (elf_backend_copy_indirect_symbol): Define.
-
-2002-02-20 Tom Rix <trix@redhat.com>
-
- * coff-rs6000.c (xcoff_howto_table): Add 16 bit R_BA.
- (_bfd_xcoff_reloc_type_lookup): Use it.
- * coff64-rs6000.c (xcoff64_howto_table): Same.
- (xcoff64_reloc_type_lookup): Same.
-
-2002-02-20 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
-
- * osf-core.c (osf_core_vec): OSF/1 (Digital Unix) core files are
- little endian.
-
-2002-02-19 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * archures.c (bfd_mach_s390_esa): Rename to bfd_mach_s390_31.
- (bfd_mach_s390_esame): Rename to bfd_mach_s390_64.
- * bfd-in2.h: Regenerate.
- * cpu-s390.c (arch_info_struct): Use renamed architecture defines.
- Replace architecture name "s390" with "s390:31-bit" and "s390:esame"
- with "s390:64-bit".
- * elf32-s390.c (elf_howto_table): Add 32 bit pc relative relocations.
- (elf_s390_reloc_type_lookup): Likewise.
- (elf_s390_check_relocs): Likewise.
- (elf_s390_gc_sweep_hook): Likewise.
- (elf_s390_relocate_section): Likewise.
- (elf_s390_object_p): Use renamed architecture define.
- * elf64-s390.c (elf_s390_object_p): Use renamed architecture define.
-
-2002-02-19 Frank Ch. Eigler <fche@redhat.com>
-
- * syms.c (stt[]): Sorted. Added .init/.fini -> "t" mapping.
-
-2002-02-19 Jakub Jelinek <jakub@redhat.com>
-
- * elf-eh-frame.c (_bfd_elf_discard_section_eh_frame): Enable
- absptr -> pcrel optimization for shared libs.
- Only create minimal .eh_frame_hdr if absptr FDE encoding in shared
- library cannot be converted to pcrel.
- (_bfd_elf_eh_frame_section_offset): Return -2 if making absptr
- relative.
- * elf32-i386.c (elf_i386_relocate_section): If
- _bfd_elf_section_offset returned -2, skip, but make sure the
- relocation is installed.
- * elf32-arm.h (elf32_arm_final_link_relocate): Likewise.
- * elf32-cris.c (cris_elf_relocate_section): Likewise.
- * elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
- * elf32-i370.c (i370_elf_relocate_section): Likewise.
- * elf32-m68k.c (elf_m68k_relocate_section): Likewise.
- * elf32-ppc.c (ppc_elf_relocate_section): Likewise.
- * elf32-s390.c (elf_s390_relocate_section): Likewise.
- * elf32-sh.c (sh_elf_relocate_section): Likewise.
- * elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
- * elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
- * elf64-s390.c (elf_s390_relocate_section): Likewise.
- * elf64-sh64.c (sh_elf64_relocate_section): Likewise.
- * elf64-sparc.c (sparc64_elf_relocate_section): Likewise.
- * elf64-x86-64.c (elf64_x86_64_relocate_section): Likewise.
- * elf64-alpha.c (elf64_alpha_relocate_section): Handle
- _bfd_elf_section_offset returning -2 the same way as -1.
- * elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Likewise.
- * elf32-mips.c (mips_elf_create_dynamic_relocation): Add FIXME
- and BFD_ASSERT.
- * elf64-mips.c (mips_elf64_create_dynamic_relocation): Likewise.
-
-2002-02-18 Tom Rix <trix@redhat.com>
-
- * xcofflink.c (bfd_xcoff_link_gernate_rtinit): Add -brtl support.
- (bfd_xcoff_size_dynamic_sections): Same.
- * bfd-in.h (bfd_xcoff_link_generate_rtinit): Same.
- (bfd_xcoff_size_dynamic_sections): Same.
- * coff-rs6000.c (xcoff_generate_rtinit): Same.
- * coff-rs646000.c (xcoff64_generate_rtinit): Same.
- * libxcoff.h (struct xcoff_backend_data_rec): Same.
- * xcofflink.c (xcoff_build_ldsyms, xcoff_link_add_symbols): Clean.
- * bfd-in2.h: Regenerate.
-
-2002-02-18 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (STFD_FR0_0R1, LFD_FR0_0R1, BLR): Define.
- (struct ppc_link_hash_table): Add sfpr.
- (ppc64_elf_link_hash_table_create): Init it.
- (ppc64_elf_create_dynamic_sections): Split creation of .stub and
- .glink out to..
- (create_linkage_sections): ..here. Make .sfpr too.
- (ppc64_elf_check_relocs): Call create_linkage_sections, and set
- dynobj early.
- (MIN_SAVE_FPR, MAX_SAVE_FPR): Define.
- (ppc64_elf_func_desc_adjust): Look for missing ._savef* and
- ._restf* functions, and create as needed.
- (func_desc_adjust): Only force_local for shared libs.
-
-2002-02-18 David O'Brien <obrien@FreeBSD.org>
-
- * configure.in: Bump version number post 2.12 branching.
- * configure: Regenerate.
-
-2002-02-17 Hans-Peter Nilsson <hp@bitrange.com>
-
- * mmo.c: Correct and improve comments.
- (mmo_write_chunk): Store trailing byte in bfd buffer; don't
- zero-pad. Use input to fill up non-empty bfd buffer.
- (mmo_flush_chunk): New function.
- (mmo_write_loc_chunk): Add parameter last_vmap, all callers
- changed. Don't emit location specifier if VMA is same as
- *LAST_VMAP after omitting leading zero contents. Call
- mmo_flush_chunk before emitting location specifier.
- (mmo_write_loc_chunk_list): Call mmo_flush_chunk when finished
- with mmo_write_loc_chunk calls.
- (mmo_internal_write_section): Call mmo_flush_chunk after
- mmo_write_chunk.
- (mmo_write_symbols_and_terminator): Move :Main to first position
- in symbol array. Add faked one if it does not exist if there are
- other symbols. Don't add it if there are no symbols at all. Move
- out test for value of :Main from symbol loop. Rename table
- fakemain to maintable and variable mainsym to fakemain.
-
-2002-02-15 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_relocate_section) [BRSGP]: A target
- section with no got matches any got. Simplify error generaion.
-
-2002-02-15 Alan Modra <amodra@bigpond.net.au>
-
- Support arbitrary length fill patterns.
- * linker.c (bfd_new_link_order): Zero all fields with bfd_zalloc.
- (_bfd_default_link_order): Remove bfd_fill_link_order code.
- Call default_data_link_order.
- (default_fill_link_order): Delete.
- (default_data_link_order): New function.
- * elf32-mips.c (_bfd_mips_elf_final_link): Replace occurrences
- of bfd_fill_link_order with bfd_data_link_order.
- * elf64-alpha.c (elf64_alpha_final_link): Likewise.
- * elf64-mips.c (mips_elf64_final_link): Likewise.
-
- * bfd.c (bfd_scan_vma): Clamp overflows to max bfd_vma value.
- Correct value returned in "end" for "0x<non-hex>".
-
-2002-02-14 Nick Clifton <nickc@cambridge.redhat.com>
-
- * cpu-arm.c (processors): Replace 'arch' field with 'mach'.
- (scan): Test against 'mach' field in info structure.
-
-2002-02-14 Alan Modra <amodra@bigpond.net.au>
-
- * elf.c (elf_fake_sections): Use SHT_NOBITS when SEC_NEVER_LOAD.
-
-2002-02-14 Matt Fredette <fredette@netbsd.org>
-
- * elf32-m68k.c (elf32_m68k_print_private_bfd_data): Recognize
- EF_M68000.
-
-2002-02-13 Nick Clifton <nickc@cambridge.redhat.com>
-
- * elf.c (_bfd_elf_make_section_from_shdr): Do not insist on
- non-zero physical addresses when adjusting the LMAs of new
- sections.
-
-2002-02-12 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * elf-hppa.h (elf_hppa_reloc_final_type): New function stripped
- from _bfd_elf_hppa_gen_reloc_type.
- (_bfd_elf_hppa_gen_reloc_type): Remove duplicate prototype.
- * elf32-hppa.h (elf32_hppa_reloc_final_type): Add protptype.
- * elf32-hppa.c: Include elf32-hppa.h before elf-hppa.h.
- * elf64-hppa.h (elf64_hppa_reloc_final_type): Add protptype.
-
-2002-02-12 Alexandre Oliva <aoliva@redhat.com>
-
- * elf-m10300.c (mn10300_elf_relax_section): Skip section before
- loading its contents if there's nothing to do in it.
-
-2002-02-12 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_size_stubs): Correct test for crossing
- 64k boundary.
-
- * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Add dynamic
- DT_PPC64_OPD and DT_PPC64_OPDSZ tags.
- (ppc64_elf_finish_dynamic_sections): Set values for them.
-
-2002-02-11 Michael Snyder <msnyder@redhat.com>
-
- * elf-bfd.h (elfcore_write_lwpstatus): Add prototype.
- * elf.c (elfcore_grok_pstatus): Add prototype.
- (elfcore_grok_lwpstatus): Add prototype.
- (elfcore_write_lwpstatus): New function.
- (elfcore_write_pstatus): Fix typo, eliminate unnecessary memcpy.
-
-2002-02-11 Alexandre Oliva <aoliva@redhat.com>
-
- * elf32-sh.c: Added missing prototypes.
- * elf32-sh64.c: Likewise.
- (sh_elf_align_loads): Mark unused args as such.
- * elf64-sh64.c: Added missing prototypes.
- (struct elf_sh64_link_hash_entry): Fix typo.
- (sh_elf64_relocate_section): Fix info argument passed to
- _bfd_elf_section_offset.
-
-2002-02-11 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: "make dep-am".
- * Makefile.in: Regenerate.
- * aclocal.m4: Regenerate.
- * config.in: Regenerate.
- * configure: Regenerate.
-
-2002-02-10 Daniel Jacobowitz <drow@mvista.com>
-
- * coff-rs6000.c (xcoff_generate_rtinit): Silence uninitialized
- variable warnings.
- * elf32-sh.c (sh_elf_relax_section): Silence signed/unsigned
- comparison warning.
- * trad-core.c (trad_unix_core_file_p): Silence pointer/integer
- cast warnings for the common case.
-
-2002-02-10 Hans-Peter Nilsson <hp@bitrange.com>
-
- * config.bfd (sh-*-linux*, sh-*-elf* | sh-*-rtemself*): Add sh64
- vectors.
- (sh-*-netbsdelf*): New, to trump sh*-*-netbsdelf* and add sh64
- vectors.
-
-2002-02-09 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_howto): Add R_ALPHA_BRSGP.
- (elf64_alpha_reloc_map, elf64_alpha_check_relocs): Likewise.
- (elf64_alpha_relocate_section): Likewise.
- * reloc.c (BFD_RELOC_ALPHA_BRSGP): New.
- * bfd-in2.h, libbfd.h: Rebuild.
-
-2002-02-09 Hans-Peter Nilsson <hp@bitrange.com>
-
- * elf64-mmix.c (_bfd_mmix_finalize_linker_allocated_gregs): Check
- that base-plus-offset reloc accounting is consistent.
- (mmix_elf_relax_section): Keep base-plus-offset reloc accounting
- up to date for undefined symbols.
-
-2002-02-08 Eric Christopher <echristo@redhat.com>
-
- From Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
-
- * elf32-mips.c (_bfd_mips_elf_fake_sections): Don't create .rela
- sections for the O32 ABI.
-
-2002-02-08 Chris Demetriou <cgd@broadcom.com>
-
- * elf32-arm.h: Fix formatting of _("...").
- * elf32-d10v.c: Likewise.
- * elf32-m68k.c: Likewise.
- * elf32-mips.c: Likewise.
-
-2002-02-08 Ivan Guzvinec <ivang@opencores.org>
-
- * coff-or32.c: Fix compile time warning messages.
-
-2002-02-08 Alexandre Oliva <aoliva@redhat.com>
-
- Contribute sh64-elf.
- 2002-01-23 Alexandre Oliva <aoliva@redhat.com>
- * reloc.c (R_SH_GOTPLT32, R_SH_GOT_LOW16, R_SH_GOT_MEDLOW16,
- R_SH_GOT_MEDHI16, R_SH_GOT_HI16, R_SH_GOTPLT_LOW16,
- R_SH_GOTPLT_MEDLOW16, R_SH_GOTPLT_MEDHI16, R_SH_GOTPLT_HI16,
- R_SH_PLT_LOW16, R_SH_PLT_MEDLOW16, R_SH_PLT_MEDHI16,
- R_SH_PLT_HI16, R_SH_GOTOFF_LOW16, R_SH_GOTOFF_MEDLOW16,
- R_SH_GOTOFF_MEDHI16, R_SH_GOTOFF_HI16, R_SH_GOTPC_LOW16,
- R_SH_GOTPC_MEDLOW16, R_SH_GOTPC_MEDHI16, R_SH_GOTPC_HI16,
- R_SH_GOT10BY4, R_SH_GOTPLT10BY4, R_SH_GOT10BY8, R_SH_GOTPLT10BY8,
- R_SH_COPY64, R_SH_GLOB_DAT64, R_SH_JMP_SLOT64, R_SH_RELATIVE64):
- New relocs.
- * libbfd.h, bfd-in2.h: Rebuilt.
- * elf32-sh.c (sh_elf_howto_table): Define new relocs.
- (sh_reloc_map): Map them.
- (PLT_ENTRY_SIZE, elf_sh_plt0_entry_be, elf_sh_plt0_entry_le,
- elf_sh_plt_entry_be, elf_sh_plt_entry_le, elf_sh_pic_plt_entry_be,
- elf_sh_pic_plt_entry_le, elf_sh_plt0_entry, elf_sh_plt_entry,
- elf_sh_pic_plt_entry, elf_sh_sizeof_plt, elf_sh_plt_plt0_offset,
- elf_sh_plt0_gotplt_offset, elf_sh_plt_temp_offset,
- elf_sh_plt_symbol_offset, elf_sh_plt_reloc_offset,
- movi_shori_putval) [INCLUDE_SHMEDIA]: New.
- (elf_sh_link_hash_entry) [INCLUDE_SHMEDIA]: Add
- datalabel_got_offset.
- (sh_elf_link_hash_newfunc): Initialize it.
- (sh_elf_relocate_section): Augment the scope of
- seen_stt_datalabel. Introduce GOTPLT support. Extend GOTPC, PLT,
- GOT and GOTOFF handling to new SHmedia relocation types. Support
- GOT_BIAS.
- (sh_elf_check_relocs): Likewise.
- (sh_elf_finish_dynamic_symbol) [TARGET_SHMEDIA]: Set up values in
- PLT entries using movi_shori_putval. Support GOT_BIAS.
- (sh_elf_finish_dynamic_sections): Likewise.
- * elf32-sh64.c (shmedia_prepare_reloc): Do not add addend to
- relocation, it's now done by the caller.
- (GOT_BIAS): New.
- * elf64-sh64.c (GOT_BIAS, PLT_ENTRY_SIZE, elf_sh64_sizeof_plt,
- elf_sh64_plt_plt0_offset, elf_sh64_plt0_gotplt_offset,
- elf_sh64_plt_temp_offset, elf_sh64_plt_symbol_offset,
- elf_sh64_plt_reloc_offset, ELF_DYNAMIC_INTERPRETER,
- elf_sh64_pcrel_relocs_copied, elf_sh64_link_hash_entry,
- elf_sh64_link_hash_table, sh64_elf64_link_hash_traverse,
- sh64_elf64_hash_table): New.
- (sh_elf64_howto_table): Introduce new relocs.
- (sh_elf64_info_to_howto): Accept new PIC relocs.
- (sh_elf64_relocate_section): Augment the scope of
- seen_stt_datalabel. Support new PIC relocs.
- (sh_elf64_check_relocs): Support new PIC relocs.
- (elf_sh64_plt0_entry_be, elf_sh64_plt0_entry_le,
- elf_sh64_plt_entry_be, elf_sh64_plt_entry_le,
- elf_sh64_pic_plt_entry_be, elf_sh64_pic_plt_entry_le,
- elf_sh64_plt0_entry, elf_sh64_plt_entry, elf_sh64_pic_plt_entry,
- sh64_elf64_link_hash_newfunc, sh64_elf64_link_hash_table_create,
- movi_shori_putval, movi_3shori_putval,
- sh64_elf64_create_dynamic_sections,
- sh64_elf64_adjust_dynamic_symbol, sh64_elf64_discard_copies,
- sh64_elf64_size_dynamic_sections,
- sh64_elf64_finish_dynamic_symbol,
- sh64_elf64_finish_dynamic_sections): New.
- (elf_backend_create_dynamic-sections,
- bfd_elf64_bfd_link_hash_table_create,
- elf_backend_adjust_dynamic_symbol,
- elf_backend_size_dynamic_sections,
- elf_backend_finish_dynamic_symbol,
- elf_backend_finish_dynamic_sections, elf_backend_want_got_plt,
- elf_backend_plt_readonly, elf_backend_want_plt_sym,
- elf_backend_got_header_size, elf_backend_plt_header_size):
- Define.
- 2001-05-16 Alexandre Oliva <aoliva@redhat.com>
- * elf32-sh.c: Renumbered and renamed some SH5 relocations to
- match official numbers and names; moved unmaching ones to the
- range 0xf2-0xff.
- * elf32-sh64.c, elf64-sh64.c: Likewise.
- 2001-03-12 DJ Delorie <dj@redhat.com>
- * elf32-sh.c (sh_elf_relax_section): Don't relax SHmedia
- sections.
- 2001-03-12 DJ Delorie <dj@redhat.com>
- * elf32-sh64.c (shmedia_prepare_reloc): Validate relocs that must
- be aligned.
- * elf64-sh64.c (sh_elf64_relocate_section): Ditto.
- 2001-01-14 Hans-Peter Nilsson <hpn@cygnus.com>
- * elf32-sh64.c (bfd_elf32_bfd_copy_private_section_data): Define.
- (sh64_elf_fake_sections): Set type to SHT_SH5_CR_SORTED for a
- .cranges section with SEC_SORT_ENTRIES set.
- (sh64_backend_section_from_shdr): Set SEC_SORT_ENTRIES on an
- incoming sorted .cranges section.
- (sh64_bfd_elf_copy_private_section_data): New.
- (sh64_elf_final_write_processing): Only sort .cranges and modify
- start address if called by linker.
- 2001-01-08 Ben Elliston <bje@redhat.com>
- * elf32-sh64.c (sh64_elf_final_write_processing): Activate
- Hans-Peter Nilsson's set bit 0 patch from 2001-01-06.
- * elf64-sh64.c (sh64_elf64_final_write_processing): Ditto.
- 2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
- * elf64-sh64.c (sh_elf64_howto_table): No open brace at start of
- line. Add comments before all entries.
- <R_SH_PT_16, R_SH_SHMEDIA_CODE>: Correct and clarify describing
- comment.
- (sh_elf64_reloc): Correct head comment.
- (sh_elf64_relocate_section): Correct spacing.
- <relocating for a local symbol>: Do not honour STO_SH5_ISA32;
- instead call reloc_dangerous callback.
- <case R_SH_SHMEDIA_CODE>: New case.
- (sh_elf64_gc_mark_hook): Correct spacing.
- (sh_elf64_check_relocs): Ditto.
- * elf32-sh64.c (shmedia_prepare_reloc) <case R_SH_SHMEDIA_CODE>:
- New case.
- * elf32-sh.c: Correct #endif comments for #ifndef-wrapped
- functions.
- (sh_elf_howto_table) <R_SH_PT_16, R_SH_SHMEDIA_CODE>: Correct,
- clarify describing comment. Add comments before all entries.
- (sh_elf_relocate_section) <relocating for a local symbol>: Do not
- honour STO_SH5_ISA32; instead call reloc_dangerous callback.
- 2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
- Sort .cranges section in final link. Prepare to set bit 0 on
- entry address.
- * elf32-sh64.c (struct sh64_find_section_vma_data): New.
- (sh64_elf_link_output_symbol_hook): Fix typo in prototype.
- (sh64_elf_set_mach_from_flags): Set SEC_DEBUGGING on incoming
- .cranges section.
- (sh64_backend_section_from_shdr): New, to recognize
- SHT_SH5_CR_SORTED on incoming .cranges section.
- (elf_backend_section_from_shdr): Define.
- (sh64_elf_final_write_processing): Sort outgoing .cranges
- section. (New, temporarily disabled:) Set bit 0 on entry address
- according to ISA type.
- (sh64_find_section_for_address): New.
- (crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb,
- crange_bsearch_cmpl): Move here from opcodes/sh64-dis.c.
- (sh64_address_in_cranges): Move here from opcodes/sh64-dis.c. Use
- bfd_malloc, not xmalloc.
- (sh64_get_contents_type): Move here from opcodes/sh64-dis.c. Make
- global.
- * elf32-sh64.c (sh64_elf64_final_write_processing): New, (but
- temporarily disabled) setting bit 0 on entry address.
- (elf_backend_final_write_processing): Define.
- 2001-01-05 Hans-Peter Nilsson <hpn@cygnus.com>
- * elf32-sh.c (sh_elf_howto_table) <R_SH_PT_16>: Adjust fields to
- be a proper relocation for PTA and PTB rather than a marker.
- <R_SH_IMMU5, R_SH_IMMS6, R_SH_IMMU6, R_SH_IMMS10, R_SH_IMMS10BY2,
- R_SH_IMMS10BY4, R_SH_IMMS10BY8, R_SH_IMMS16, R_SH_IMMU16,
- R_SH_IMM_LOW16, R_SH_IMM_LOW16_PCREL, R_SH_IMM_MEDLOW16,
- R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16, R_SH_IMM_MEDHI16_PCREL,
- R_SH_IMM_HI16, R_SH_IMM_HI16_PCREL, R_SH_64, R_SH_64_PCREL>:
- Zero src_mask.
- * elf64-sh64.c: Ditto.
- (sh_elf64_relocate_section) <case R_SH_PT_16>: New case.
- * elf32-sh64.c: Include opcodes/sh64-opc.h
- (shmedia_prepare_reloc): Take a bfd_link_info pointer as first
- argument. Drop const qualifiers from "bfd *" and "bfd_byte *"
- parameters. No unused parameters. Caller changed.
- <case R_SH_PT_16>: New case.
- * Makefile.am (elf32-sh64.lo): Add dependency on sh64-opc.h.
- * Makefile.in: Regenerate.
- 2000-12-30 Hans-Peter Nilsson <hpn@cygnus.com>
- * elf64-sh64.c (sh64_elf64_fake_sections): Set SHF_SH5_ISA32 for
- all code sections.
- (sh_elf64_set_mach_from_flags): Change from EF_SH64 to EF_SH5.
- (sh64_elf_merge_private_data): Ditto.
- * elf32-sh64.c (sh64_elf_fake_sections): Use sh64_elf_section_data
- to access stored section flags.
- (sh64_elf_final_write_processing): Return immediately unless
- called by linker. Use sh64_elf_section_data (cranges) to get size
- of linker-generated cranges entries.
- (sh64_elf_copy_private_data): Add missing "return true".
- (sh64_elf_set_mach_from_flags): Change from EF_SH64 to EF_SH5.
- (sh_elf64_merge_private_data): Ditto.
- 2000-12-19 Hans-Peter Nilsson <hpn@cygnus.com>
- * elf64-sh64.c (sh64_elf64_fake_sections): New, copy of
- elf64-sh64.c:sh64_elf_fake_sections.
- (elf_backend_fake_sections): Define as sh64_elf64_fake_sections.
- 2000-12-18 Hans-Peter Nilsson <hpn@cygnus.com>
- * elf32-sh64.c (sh64_elf_copy_private_data_internal): Delete.
- (sh64_elf_final_write_processing): New.
- (elf_backend_final_write_processing): Define.
- (sh64_elf_fake_sections): Get header flags from tdata field.
- (sh64_elf_copy_private_data): Do not call
- sh64_elf_copy_private_data_internal, just copy e_flags field.
- (sh64_elf_merge_private_data): Do not call
- sh64_elf_copy_private_data_internal.
- 2000-12-12 Hans-Peter Nilsson <hpn@cygnus.com>
- Remove EF_SH64_ABI64, let ELF size make difference.
- Remove SH64-specific BFD section flag.
- * elf32-sh64.c (sh64_elf_fake_sections): Recognize section as
- containing SHmedia through elf_section_data (asect)->tdata
- non-zero, not using a BFD section flag.
- (sh64_elf_set_mach_from_flags): Don't recognize EF_SH64_ABI64.
- (sh64_elf_merge_private_data): Similar.
- (elf_backend_section_flags): Don't define.
- (sh64_elf_backend_section_flags): Delete.
- * elf64-sh64.c (sh_elf64_set_mach_from_flags): Recognize EF_SH64,
- not EF_SH64_ABI64.
- (sh_elf64_merge_private_data): Similar.
- * section.c (Section flags definitions): Don't define
- SEC_SH_ISA_SHMEDIA.
- (bfd-in2.h): Regenerate.
- 2000-12-09 Hans-Peter Nilsson <hpn@cygnus.com>
- Make DataLabel references work with partial linking.
- * elf32-sh64.c: Fix formatting.
- (sh64_elf_link_output_symbol_hook): New.
- (elf_backend_link_output_symbol_hook): Define to
- sh64_elf_link_output_symbol_hook.
- (sh64_elf_add_symbol_hook): Make DataLabel symbol just global
- undefined if partial linking. Adjust sanity check.
- * elf64-sh64.c (sh64_elf64_link_output_symbol_hook): New.
- (elf_backend_link_output_symbol_hook): Define to
- sh64_elf64_link_output_symbol_hook.
- (sh64_elf64_add_symbol_hook): Make DataLabel symbol just global
- undefined if partial linking. Adjust sanity check.
- 2000-12-07 Hans-Peter Nilsson <hpn@cygnus.com>
- Implement semantics for inter-file DataLabel references.
- * elf64-sh64.c (DATALABEL_SUFFIX): Define.
- (sh64_elf64_add_symbol_hook): New.
- (sh_elf64_relocate_section): If passing an indirect symbol with
- st_type STT_DATALABEL on the way to a symbol with st_other
- STO_SH5_ISA32, do not bitor 1 to the relocation.
- (elf_backend_add_symbol_hook): Define to
- sh64_elf64_add_symbol_hook.
- * elf64-sh32.c: Tweak comments.
- (DATALABEL_SUFFIX): Define.
- (sh64_elf_add_symbol_hook): New.
- (elf_backend_add_symbol_hook): Define to sh64_elf_add_symbol_hook.
- * elf32-sh.c (sh_elf_relocate_section): If passing an indirect
- symbol with st_type STT_DATALABEL on the way to a symbol with
- st_other STO_SH5_ISA32, do not bitor 1 to the relocation.
- 2000-12-05 Hans-Peter Nilsson <hpn@cygnus.com>
- Pass through STT_DATALABEL.
- * elf32-sh64.c (sh64_elf_get_symbol_type): New.
- (elf_backend_get_symbol_type): Define.
- * elf64-sh64.c (sh64_elf64_get_symbol_type): New.
- (elf_backend_get_symbol_type): Define.
- 2000-11-30 Hans-Peter Nilsson <hpn@cygnus.com>
- * elf32-sh64.c: Tweak comments.
- (sh64_elf_copy_private_data_internal): Add prototype.
- (bfd_elf32_bfd_set_private_flags): Define.
- (sh64_elf_copy_private_data_internal): Compare machine name, not
- textual BFD target name, to check whether to copy section flag
- SHF_SH5_ISA32.
- (sh64_elf_merge_private_data): Validize bfd_get_arch_size.
- Tweak section-contents-type-mismatch message.
- (shmedia_prepare_reloc): Add ATTRIBUTE_UNUSED markers.
- Validize reloc-types.
- * elf64-sh64.c: New file.
- * targets.c (bfd_elf64_sh64_vec, bfd_elf64_sh64l_vec): Declare.
- * Makefile.am (BFD64_BACKENDS): Add elf64-sh64.lo.
- (BFD64_BACKENDS_CFILES): Add elf64-sh64.c.
- Regenerate dependencies.
- * Makefile.in: Regenerate.
- * config.bfd (sh64-*-elf*): Add bfd_elf64_sh64_vec and
- bfd_elf64_sh64l_vec.
- * configure.in: Handle bfd_elf64_sh64_vec and
- bfd_elf64_sh64l_vec.
- * configure: Regenerate.
- * po/POTFILES.in: Regenerate.
- * po/bfd.pot: Regenerate.
- 2000-11-29 Hans-Peter Nilsson <hpn@cygnus.com>
- * elf32-sh64.c (sh64_elf_set_mach_from_flags): Do not recognize
- anything else but EF_SH64 and EF_SH64_ABI64.
- (sh64_elf_merge_private_data): Emit error for anything else but
- EF_SH64 and EF_SH64_ABI64.
- * config.bfd: Remove bfd_elf32_shblin_vec and bfd_elf32_shlin_vec
- from targ_selvecs.
- * configure.in: Add cofflink.lo to bfd_elf32_sh64_vec and
- bfd_elf32_sh64l_vec as a temporary measure.
- * configure: Regenerate.
- 2000-11-27 Hans-Peter Nilsson <hpn@cygnus.com>
- * cpu-sh.c (arch_info_struct): Include sh5 item
- unconditionalized.
- * config.bfd (sh64-*-elf*): Do not set targ_cflags.
- Add targ_selvecs bfd_elf32_sh_vec, bfd_elf32_shl_vec,
- bfd_elf32_shblin_vec and bfd_elf32_shlin_vec.
- * elf32-sh64.c: Tweak comments.
- (sh64_elf_set_mach_from_flags): Recognize all machine flags that
- are proper subsets of SH64 as bfd_mach_sh5. Add EF_SH64_ABI64.
- (sh64_elf_copy_private_data_internal): Wrap long line.
- (sh64_elf_merge_private_data): Rewrite to allow objects from
- SH64 subsets to be linked together.
- (INCLUDE_SHMEDIA): Define.
- * elf32-sh.c (sh_elf_relocate_section) <local symbol>:
- Parenthesize plus-expression inside or-expression.
- <global symbol>: Ditto.
- (sh_elf_set_mach_from_flags): Remove code refusing
- deleted EF_SH64_32BIT_ABI flag.
- 2000-11-26 Hans-Peter Nilsson <hpn@cygnus.com>
- * elf32-sh.c (sh_elf_howto_table) <R_SH_IMM_LOW16_PCREL,
- R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16_PCREL,
- R_SH_IMM_HI16_PCREL, R_SH_64_PCREL>: Set pcrel_offset to true.
- (sh_elf_relocate_section) <local symbol>: Or 1 in
- calculation of relocation if sym->st_other & STO_SH5_ISA32.
- <global symbol>: Ditto if h->other & STO_SH5_ISA32.
- * elf32-sh64.c (shmedia_prepare_reloc): Add rel->r_addend to
- relocation.
- 2000-11-24 Hans-Peter Nilsson <hpn@cygnus.com>
- * Makefile.am (BFD32_BACKENDS): Add elf32-sh64.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-sh64.c.
- Regenerate dependencies.
- * Makefile.in: Regenerate.
- * archures.c: Add bfd_mach_sh5.
- * config.bfd: Map targ_cpu sh* to bfd_sh_arch.
- Handle sh64-*-elf*. Set targ_cflags to -DINCLUDE_SHMEDIA.
- * configure.in: Handle bfd_elf32_sh64_vec and bfd_elf32_sh64l_vec.
- * configure: Regenerate.
- * reloc.c (BFD_RELOC_SH_SHMEDIA_CODE, BFD_RELOC_SH_IMMU5,
- BFD_RELOC_SH_IMMS6, BFD_RELOC_SH_IMMS6BY32, BFD_RELOC_SH_IMMU6,
- BFD_RELOC_SH_IMMS10, BFD_RELOC_SH_IMMS10BY2,
- BFD_RELOC_SH_IMMS10BY4, BFD_RELOC_SH_IMMS10BY8,
- BFD_RELOC_SH_IMMS16, BFD_RELOC_SH_IMMU16, BFD_RELOC_SH_IMM_LOW16,
- BFD_RELOC_SH_IMM_LOW16_PCREL, BFD_RELOC_SH_IMM_MEDLOW16,
- BFD_RELOC_SH_IMM_MEDLOW16_PCREL, BFD_RELOC_SH_IMM_MEDHI16,
- BFD_RELOC_SH_IMM_MEDHI16_PCREL, BFD_RELOC_SH_IMM_HI16,
- BFD_RELOC_SH_IMM_HI16_PCREL, BFD_RELOC_SH_PT_16): New relocations.
- * cpu-sh.c [INCLUDE_SHMEDIA] (arch_info_struct): Define and link
- in item for SH5.
- * elf32-sh.c [INCLUDE_SHMEDIA] (sh_elf_howto_table): Add howto items
- for SHmedia relocs.
- [INCLUDE_SHMEDIA] (sh_rel): Add mappings for SHmedia relocs.
- [INCLUDE_SHMEDIA] (sh_elf_relocate_section) [default]: Call
- shmedia_prepare_reloc, goto final_link_relocate if it returns
- non-zero, else fail as before.
- (sh_elf_set_mach_from_flags): Provide function only if not defined
- as macro. Do not recognize objects with EF_SH64_32BIT_ABI set.
- (sh_elf_set_private_flags): Provide function only if not defined
- as a macro.
- (sh_elf_copy_private_data): Similar.
- (sh_elf_merge_private_data): Similar.
- * section.c (SEC_SH_ISA_SHMEDIA): New.
- * targets.c (bfd_elf32_sh64_vec, bfd_elf32_sh64l_vec): Declare.
- * elf32-sh64.c: New file.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Regenerate.
- * po/POTFILES.in: Regenerate.
- * po/bfd.pot: Regenerate.
- * bfd-in2.h: Regenerate.
- * libbfd.h: Regenerate.
-
-2002-02-07 Daniel Jacobowitz <drow@mvista.com>
-
- * bfd-in.h: Update <stdbool.h> check to only see if <stdbool.h> has
- been included, not drag it in.
- * bfd-in2.h: Regenerate.
-
-2002-02-06 H.J. Lu (hjl@gnu.org)
-
- * elf32-mips.c (_bfd_mips_elf_merge_private_bfd_data): Update
- the mach and ISA fields if necessary.
-
-2002-02-06 Nick Clifton <nickc@cambridge.redhat.com>
-
- * coffcode.h (coff_set_arch_mach_hook): Select the highest known
- ARM architecture when an F_ARM_5 flag is detected, since we cannot
- be sure exactly which architecture this represents.
-
-2002-02-05 Nick Clifton <nickc@redhat.com>
-
- * po/tr.po: Updated translation.
-
-2002-02-05 Alan Modra <amodra@bigpond.net.au>
-
- From Jimi X <jimix@watson.ibm.com>
- * archures (bfd_mach_ppc64): Define.
- (bfd_powerpc_arch): Rename to bfd_powerpc_archs.
- (bfd_powerpc_arch): Define.
- * bfd-in2.h: Regenerate.
- * cpu-powerpc.c (arch_info_struct): Rename to bfd_powerpc_archs.
- (bfd_powerpc_arch): Move to tail of bfd_powerpc_archs.
- (bfd_powerpc_archs): Add default powerpc64 arch.
-
-2002-02-05 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_size_dynamic_sections): Check for relocs
- against section syms in readonly sections. Don't do the global
- sym check if we find one.
- * elf64-s390.c (elf_s390_size_dynamic_sections): Likewise.
- * elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise.
- * elf32-i386.c (elf_i386_size_dynamic_sections): Likewise.
- * elf32-s390.c (elf_s390_size_dynamic_sections): Likewise.
- (elf_s390_grok_prstatus): Add missing prototype.
-
-2002-02-04 Hans-Peter Nilsson <hp@bitrange.com>
-
- * elf64-mmix.c (mmix_dump_bpo_gregs): New function.
- (mmix_elf_check_common_relocs) <case R_MMIX_BASE_PLUS_OFFSET>:
- Call bfd_get_section_by_name only once. Initialize
- bpodata->n_bpo_relocs_this_section.
- (_bfd_mmix_prepare_linker_allocated_gregs): Remove comment
- referring to DSOs.
- (bpo_reloc_request_sort_fn): Don't use difference of values as
- return-value.
-
-2002-02-02 David O'Brien <obrien@FreeBSD>
-
- * configure.in: Tweak the FreeBSD 4.x recognition more. Only treat
- version 4.5 and later the same as 5-CURRENT.
- * configure: Re-generate.
-
-2002-02-02 Jason Thorpe <thorpej@wasabisystems.com>
-
- * config.bfd (hppa*-*-netbsd*): New target.
-
-2002-01-31 Philipp Thomas <pthomas@suse.de>
-
- * coff-arm.c (coff_arm_merge_private_bfd_data): Move ERROR
- to front of message. Unify messages with elf32-arm.h. Use
- commas where neccessary.
- * elf32-arm.h (elf32_arm_merge_private_bfd_data): Use all upcase
- ERROR in messages. Unify messages with coff-arm.c. Correct
- VFP/FPA error message.
- (elf32_arm_print_private_bfd_data): Don't mark APCS-26 and
- APCS-32 for translation.
-
-2002-02-01 Hans-Peter Nilsson <hp@bitrange.com>
-
- Perform on-demand global register allocation from
- R_MMIX_BASE_PLUS_OFFSET relocs.
- * elf64-mmix.c (struct bpo_reloc_section_info, struct
- bpo_reloc_request, struct bpo_greg_section_info): New.
- (mmix_elf_check_common_relocs, mmix_elf_gc_sweep_hook,
- bpo_reloc_request_sort_fn, mmix_elf_relax_section,
- _bfd_mmix_check_all_relocs,
- _bfd_mmix_prepare_linker_allocated_gregs,
- _bfd_mmix_finalize_linker_allocated_gregs): New functions.
- (elf_mmix_howto_table): Correct src_mask for most relocs.
- (mmix_elf_perform_relocation) <case R_MMIX_BASE_PLUS_OFFSET>: New
- case.
- (mmix_final_link_relocate) <case R_MMIX_BASE_PLUS_OFFSET>: New
- case. Fix typo in comment. New label do_mmix_reloc.
- (mmix_elf_check_relocs): Abuse bfd_link_info member base_file to
- store first object file with a base-plus-offset reloc. Call
- mmix_elf_check_common_relocs for the part common with mmo.
- (mmix_elf_final_link): Write out linker-allocated register
- contents section.
+ * elflink.h (elf_gc_sections): Warn when gc-sections option is ignored.
+ * elf32-h8300.c (elf32_h8_gc_mark_hook): New function.
+ (elf32_h8_gc_sweep_hook): New function.
+ (elf_backend_gc_mark_hook): Define.
(elf_backend_gc_sweep_hook): Define.
- (bfd_elf64_bfd_relax_section): Define.
-
- * mmo.c: Don't include <ctype.h>
- (mmo_init): Correct init-once logic.
-
-2002-02-01 Tom Rix <trix@redhat.com>
-
- * config.bfd: Conditionally support <aiaff> for pre AIX 4.3.
-
-2002-02-01 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am"
- * Makefile.in: Regenerate.
-
-2002-01-31 David O'Brien <obrien@FreeBSD>
-
- * configure.in: Recognize the differences in core files from FreeBSD
- 4.{0,1} and later versions of 4.x. This treats 4.2+ the same as
- 5-CURRENT.
- * configure: Regenerate.
-
-2002-01-31 Ivan Guzvinec <ivang@opencores.org>
-
- * coff-or32.c: New file.
- * cpu-or32.c: New file.
- * elf32-or32.c: New file.
- * archures.c: Add support for or32.
- * targets.c: Add support for or32.
- * bfd-in2.h: Regenerate.
- * coffcode.h (coff_set_arch_mach_hook, coff_set_flags,
- coff_write_object_contents): Add support for or32.
- * config.bfd: Add target.
- * configure.in: Add support for or32.
- * configure: Regenerate.
- * Makefile.am: Add support for or32.
- * Makefile.in: Regenerate.
- * po/SRC-POTFILES.in: Add or32 files.
- * po/bfd.pot: Regenerate.
-
-2002-01-31 Nick Clifton <nickc@cambridge.redhat.com>
- Don Lindsay <lindsayd@cisco.com>
-
- * elf32-mips.c (mips_elf_calculate_relocation): Replace 'return
- false' with a return of a bfd_reloc_ error code.
-
-2002-01-31 Hans-Peter Nilsson <hp@axis.com>
-
- * elf32-cris.c (elf_cris_discard_excess_program_dynamics): Don't
- unexport unreferenced symbols when --export-dynamic. Call
- _bfd_elf_strtab_delref when unexporting.
-
-2002-01-30 Daniel Jacobowitz <drow@mvista.com>
-
- * bfd-in.h: Include <stdbool.h> if it is available.
- * bfd-in2.h: Regenerated.
-
-2002-01-31 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (func_desc_adjust): STV_PROTECTED functions should
- not go via the plt.
-
-2002-01-30 Nick Clifton <nickc@cambridge.redhat.com>
-
- * archures.c: Tidy up formatting of embedded comments.
- * bfd.c: Tidy up formatting of embedded comments.
- * bfd-in.h: Fix formatting of comments.
- * reloc.c: Tidy up formatting of ordinary & embedded comments.
- * section.c: Tidy up formatting of embedded comments.
- * syms.c: Tidy up formatting of embedded comments.
- * targets.c: Tidy up formatting of embedded comments.
-
- * bfd-in2.h: Regenerate.
-
-2002-01-30 Nick Clifton <nickc@cambridge.redhat.com>
-
- * vms-tir.c (cmd_name): New function.
- (tir_cmd_name): New function.
- (etir_sta, etir_sto, etir_opr, etir_stc): Use cmd_name().
- (tir_opr, tir_ctl, tir_cmd): use tir_cmd_name().
- Fix formatting.
-
- * peXXigen.c (pe_print_idata): Rearrange message to aid in
- translation.
- (pe_print_pdata): Rearrange message to aid in translation.
-
- * libbfd.c (warn_deprecated): Rearrange error message to aid in
- translation.
-
- * ihex.c (ihex_write_object_contents): Fix spelling typo.
-
- * ieee.c (ieee_slurp_external_symbols): Remove spurious space.
-
- * elf64-sparc.c (sparc64_elf_add_symbol_hook): Rearrange error
- message to aid in translation.
-
- * elf64-mmix.c (mmix_final_link_relocate): Rearrange error message
- to aid in translation.
-
- * elf32-arm.h (elf32_arm_merge_private_bfd_data): Fix typo.
-
-2002-01-30 Philipp Thomas <pthomas@suse.de>
-
- * coff-arm.c, elf32-elf.h: Unify messages.
-
-2002-01-30 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated translation.
-
-2002-01-30 Philipp Thomas <pthomas@suse.de>
-
- * dwarf2.c (read_abbrev): Use full section name in error message.
- (decode_line_info): Likewise.
-
- * elf.c (_bfd_elf_symbol_from_bfd_symbol): Don't translate debugging
- message.
-
-2002-01-30 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (func_desc_adjust): Only provide missing function
- descriptor symbols for undefined function code syms. Clear
- ELF_LINK_NON_ELF so that they can stay weak.
-
-2002-01-29 Chris Demetriou <cgd@broadcom.com>
- Mitch Lichtenberg <mpl@broadcom.com>
-
- * bfd-in.h (bfd_mips_elf32_create_embedded_relocs): New prototype.
- * elf32-mips.c (bfd_mips_elf32_create_embedded_relocs): New function
- to handle 32-bit ELF embedded reloc (ld --embedded-relocs)
- generation.
- * bfd-in2.h: Regenerate.
-
-2002-01-29 Chris Demetriou <cgd@broadcom.com>
-
- * elf32-mips.c: Add additional comments about HI16 relocation
- processing.
- (_bfd_mips_elf_hi16_reloc): Don't subtract address here for
- pc-relative relocations. (Reverts change made on 2001-10-31.)
- (_bfd_mips_elf_lo16_reloc): Subtract address of LO16 part here
- for pc-relative relocations.
- (mips_elf_calculate_relocation): Add a comment about a kludge
- in the R_MIPS_GNU_REL_HI16 handling.
- (_bfd_mips_elf_relocate_section): Implement that kludge;
- adjust pc-relative HI16 relocation for difference in HI16 and
- LO16 addresses, since it can't easily be done in
- mips_elf_calculate_relocation.
-
-2002-01-29 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * elf32-i386 (elf_i386_adjust_dynamic_symbol): Do not replace PLT32
- relocations with PC32 relocations for undefined or weak symbols.
- * elf32-s390 (elf_i386_adjust_dynamic_symbol): Likewise.
- * elf64-s390x (elf_i386_adjust_dynamic_symbol): Likewise.
-
-2002-01-28 Jason Thorpe <thorpej@wasabisystems.com>
-
- * elfcore.h (elf_core_file_p): Improve comment for last change.
-
-2002-01-27 Daniel Jacobowitz <drow@mvista.com>
-
- * configure: Regenerated.
-
-2002-01-27 Jason Thorpe <thorpej@wasabisystems.com>
-
- * elfcore.h (elf_core_file_p): Set the machine architecture
- before processing the program headers.
-
-2002-01-26 Hans-Peter Nilsson <hp@bitrange.com>
-
- * configure.in <64-bit configuration>: If using gcc, check and
- emit error for egcs-1.1.2.
- * configure: Regenerate.
-
-2002-01-26 Egor Duda <deo@logos-m.ru>
-
- * elf.c (elfcore_grok_win32pstatus): Copy only as much information
- as possible to avoid stack corruption.
-
-2002-01-26 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_check_relocs): Don't set reltext
- for non-allocated sections.
-
-2002-01-25 Mark Kettenis <kettenis@gnu.org>
-
- * elf.c (elfcore_write_prstatus): Make sure we pass the address of
- prstat.pr_reg even if it is a struct.
-
-2002-01-25 Steve Ellcey <sje@cup.hp.com>
-
- * elfxx-ia64.c: Reset AIX vector function overrides for HP-UX.
-
-2002-01-25 Philipp Thomas <pthomas@suse.de>
-
- * coffgen.c (coff_print_symbol): Don't mark info message
- for translation.
-
-2002-01-25 Nick Clifton <nickc@redhat.com>
-
- * po/fr.po: Updated translation.
- * po/es.po: Updated translation.
-
-2002-01-25 Philipp Thomas <pthomas@suse.de>
-
- * coff-alpha.c (alpha_relocate_section): Unify warning message
- for GP relative relocations without GP defined.
- * coff-mips.c (mips_relocate_section): Likewise.
-
-2002-01-25 Alan Modra <amodra@bigpond.net.au>
-
- * elf-eh-frame.c (_bfd_elf_eh_frame_section_offset): Avoid
- unsigned overflow when new_offset < old_offset.
-
-2002-01-24 Philipp Thomas <pthomas@suse.de>
-
- * bfd.c (_bfd_abort): Fix typo.
-
-2002-01-23 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (elf64_alpha_adjust_dynamic_symbol): Don't suppress
- plt entries for undefweak symbols.
-
-2002-01-23 Steve Ellcey <sje@cup.hp.com>
-
- * targets.c (bfd_elf32_ia64_hpux_big_vec): Add to DEFAULT_VECTOR.
- (bfd_elf64_ia64_hpux_big_vec): Ditto.
- (bfd_elf32_h8300_vec): Ditto.
-
-2002-01-23 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c: Remove stale part of ABI comment.
- (NO_OPD_RELOCS): Define.
- (ppc64_elf_check_relocs): Use it.
- (ppc64_elf_relocate_section): Here too.
- (build_one_stub): Don't point function syms at the stub. Instead,
- hijack plt.offset.
- (ppc64_elf_relocate_section): Check whether REL24 relocs should
- really go to the stub. Make all dynamic relocs in opd against
- locals.
- (ppc64_elf_finish_dynamic_symbol): Allow for non-standard use of
- plt.offset.
-
-2002-01-22 Richard Henderson <rth@redhat.com>
-
- * elf64-alpha.c (INSN_UNOP): Encode with RB as $sp.
-
-2002-01-22 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Correct sign of
- TOC_BASE_OFF adjustment.
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * po/SRC-POTFILES.in: Regenerate.
-
-2002-01-22 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * configure.host (hppa*64*-*-hpux*, hppa*64*-*-linux*): Add new
- host defines.
-
-2002-01-21 Hans-Peter Nilsson <hp@axis.com>
-
- * elf32-cris.c (cris_elf_relocate_section) <case R_CRIS_32_GOTREL>:
- Check for and emit error if sgot is NULL at this point.
-
-2002-01-21 Jason Thorpe <thorpej@wasabisystems.com>
-
- * config.bfd (ia64*-*-netbsd*): New target.
-
-2002-01-21 Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
- * som.c (som_write_space_strings): Comment typo fix.
-
-2002-01-21 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (struct ppc_link_hash_entry): Add is_func and
- is_func_descriptor fields.
- (link_hash_newfunc): Init them.
- (ppc64_elf_check_relocs): Only R_PPC24_REL24 syms starting with a
- dot are candidates for plt entries. When processing .opd relocs,
- set function descriptor strings to point inside function code
- string, and set new ppc_link_hash_entry fields.
- (ppc64_elf_gc_sweep_hook): Don't sweep R_PPC64_REL24 relocs.
- (ppc64_elf_adjust_dynamic_symbol): Remove most code dealing with
- function descriptors. It's now done in..
- (func_desc_adjust): New.
- (ppc64_elf_func_desc_adjust): New.
- (define elf_backend_always_size_sections): Define.
- (ppc64_elf_hide_symbol): New.
- (define elf_backend_hide_symbol): Define.
- (allocate_dynrelocs): Remove code looking up function descriptors
- as that has been done earlier.
- (ppc64_elf_size_dynamic_sections): Use htab shortcut to elf hash
- table.
- (ppc64_elf_finish_dynamic_symbol): Likewise. Remove code looking
- up function descriptor.
- (build_one_stub): Look up the function code sym. Check for
- invalid plt offsets.
- (ppc64_elf_relocate_section): Tweak calls to undefined weak syms.
- Convert R_PPC64_TOC relocs to R_PPC64_RELATIVE in shared libs.
-
- * elf-bfd.h (elf_backend_data <elf_backend_hide_symbol>): Add
- boolean param.
- (_bfd_elf_link_hash_hide_symbol): Likewise.
- * elflink.h (elf_link_add_object_symbols): Adjust call to
- elf_backend_hide_symbol.
- (elf_fix_symbol_flags): Likewise.
- (elf_link_assign_sym_version): Likewise. Use bfd_malloc rather
- than bfd_alloc.
- * elf.c (_bfd_elf_link_hash_hide_symbol): Add "force_local" param.
- Set ELF_LINK_FORCED_LOCAL and call _bfd_elf_strtab_delref.
- * elf32-hppa.c (elf32_hppa_hide_symbol): Likewise.
- (clobber_millicode_symbols): Adjust to suit new hide_symbol.
- * elf32-cris.c (elf_cris_hide_symbol): Add "force_local" param
- and adjust to suit.
- * elf32-mips.c (_bfd_mips_elf_hide_symbol): Likewise, and call
- _bfd_elf_link_hash_hide_symbol rather than duplicating code.
- * elfxx-ia64.c (elfNN_ia64_hash_hide_symbol): Likewise.
-
-2002-01-18 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Test for a
- dynamic function descriptor symbol, not the associated function
- symbol.
-
-2002-01-17 Eric Christopher <echristo@redhat.com>
-
- * elf32-mips.c (mips_elf_calculate_relocation): Fix typo.
-
-2002-01-17 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/bfd.pot: Regenerate.
- * po/fr.po: Regenerate.
-
-2002-01-17 Alan Modra <amodra@bigpond.net.au>
-
- * elf-bfd.h (elf_backend_data <elf_backend_section_from_bfd_section>):
- Remove "Elf_Internal_Shdr *" param.
- (_bfd_mips_elf_section_from_bfd_section): Ditto.
- * elf32-mips.c (_bfd_mips_elf_section_from_bfd_section): Ditto.
- * elf32-m32r.c (_bfd_m32r_elf_section_from_bfd_section): Ditto.
- * elf32-v850.c (v850_elf_section_from_bfd_section): Ditto.
- * elf64-mmix.c (mmix_elf_section_from_bfd_section): Ditto.
- * elfxx-ia64.c (elfNN_hpux_backend_section_from_bfd_section): Ditto.
- * elf.c (_bfd_elf_section_from_bfd_section): Allow backend
- function to override special sections. Remove hdr arg from
- backend call, and don't loop.
-
-2002-01-16 Eric Christopher <echristo@redhat.com>
-
- * elf32-mips.c (mips_elf_calculate_relocation): Set require_jalxp
- on R_MIPS_26 and target is 16bit. Add R_MIPS16_GPREL to list of
- relocations requiring gp0 and gp.
-
-2002-01-16 Richard Earnshaw <rearnsha@arm.com>
-
- * elf32-arm.h (elf32_arm_merge_private_bfd_data): Handle
- EF_ARM_VFP_FLOAT.
- (elf32_arm_print_private_bfd_data): Likewise.
-
-2002-01-16 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/tr.po: Import new version.
-
-2002-01-16 Alan Modra <amodra@bigpond.net.au>
-
- * elf64-ppc.c (ppc64_elf_howto_raw): Remove stale FIXMEs.
- (ppc64_elf_reloc_type_lookup): Use proper CTOR reloc.
- (ORI_R0_R0_0): Correct.
-
-2002-01-16 Alan Modra <amodra@bigpond.net.au>
-
- * elflink.c (_bfd_elf_create_dynamic_sections): Don't set SEC_CODE
- when plt_not_loaded.
- * elf64-ppc.c (ppc64_elf_create_dynamic_sections): No need to
- clear .plt SEC_CODE here. Create .stub and correct .glink flags.
- (PLT_INITIAL_ENTRY_SIZE): Set to 24.
- (ppc64_elf_glink_code): Delete.
- (PPC64_ELF_GLINK_SIZE): Delete.
- (ADDIS_R12_R2, STD_R2_40R1, LD_R11_0R12, LD_R2_0R12, MTCTR_R11,
- BCTR, ADDIS_R12_R12_1, LD_R2_40R1, NOP, LI_R0_0, B_DOT, LIS_R0_0,
- ORI_R0_R0_0): Define.
- (PLT_CALL_STUB_SIZE, GLINK_CALL_STUB_SIZE): Define.
- (struct ppc_link_hash_table): Add sstub and plt_overflow.
- (ppc64_elf_link_hash_table_create): Init them.
- (ppc64_elf_check_relocs <R_PPC64_REL24>): Refcount .plt entry.
- Don't copy to shared lib.
- (ppc64_elf_check_relocs): Call bfd_set_error on errors.
- (ppc64_elf_gc_sweep_hook <R_PPC64_REL24>): Sweep plt refcount.
- (allocate_dynrelocs <plt>): Don't change function sym here. Make
- room for .stub and .glink code.
- (ppc64_elf_size_dynamic_sections): Handle .stub. Make entry for
- DT_PPC64_GLINK.
- (ppc64_elf_final_link): Rename to ppc64_elf_set_toc. Don't call
- bfd_elf64_bfd_final_link.
- (bfd_elf64_bfd_final_link): Don't define.
- (ppc64_elf_size_stubs): New.
- (build_plt_stub): New.
- (build_one_stub): New.
- (ppc64_elf_build_stubs): New.
- (ppc64_elf_relocate_section <toc relocs>): Remove assert.
- (ppc64_elf_relocate_section): Don't copy R_PPC64_REL24 relocs.
- (ppc64_elf_finish_dynamic_symbol): Don't build stubs here. Set
- DT_PPC64_GLINK entry. Tweak DT_PLTGOT, DT_JMPREL, DT_PLTRELSZ in
- case output sections not separate. Adjust DT_RELASZ to not
- include plt relocs. Set reserved got entry. Set got and plt
- entry size.
- (elf_backend_got_header_size): Set to 8.
- * elf64-ppc.h: New file.
-
-2002-01-16 Alan Modra <amodra@bigpond.net.au>
-
- * elf32-arm.h (elf32_arm_size_dynamic_sections): When removing
- sections, use bfd_section_list_remove.
- * elf32-i370.c (i370_elf_size_dynamic_sections): Likewise.
- * elflink.h (elf_link_add_object_symbols): When removing all
- sections, use bfd_section_list_clear.
-
-2002-01-15 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/sv.po: New file: Swedish translation.
- * configure.in (ALL_LINGUAS): Add sv.
- * configure: Regenerate.
-
-2002-01-15 Jakub Jelinek <jakub@redhat.com>
-
- * elflink.h (elf_link_input_bfd): Back out 2002-01-07 change.
- * elf.c (merge_sections_remove_hook): New function.
- (_bfd_elf_merge_sections): Pass it as 3rd argument to
- _bfd_merge_sections.
- * libbfd-in.h (_bfd_merge_sections): Add 3rd argument.
- * libbfd.h: Rebuilt.
- * merge.c (_bfd_merge_sections): Add remove_hook argument.
- Call remove_hook if a SEC_EXCLUDE section is encountered.
-
-2002-01-15 Nick Clifton <nickc@cambridge.redhat.com>
-
- * elf32-xstormy16.c (xstormy16_reloc_map): Add new field 'table'.
- (xstormy16_reloc_map): Initialise new field with correct howto
- table.
- (xstormy16_reloc_type_lookup): Use 'table' field to locate correct
- howto entry.
-
-2002-01-10 Michael Snyder <msnyder@redhat.com>
-
- * elf.c (elfcore_write_prstatus): Use long instead of pid_t;
- (elfcore_write_pstatus): Use long instead of pid_t;
- * elf-bfd.h: Change prototypes to use long instead of pid_t;
-
-2002-01-09 Jason Thorpe <thorpej@wasabisystems.com>
-
- * elf.c: Update copyright years.
- (elfcore_grok_netbsd_note): Use NT_NETBSDCORE_PROCINFO
- and NT_NETBSDCORE_FIRSTMACH. Improve a comment.
-
-2002-01-08 Michael Snyder <msnyder@redhat.com>
-
- Add capability to write corefile note sections, for gdb.
- * elf.c (elfcore_write_note): New function.
- (elfcore_write_prpsinfo): New function.
- (elfcore_write_prstatus): New function.
- (elfcore_write_pstatus): New function.
- (elfcore_write_prfpreg): New function.
- (elfcore_write_prxfpreg): New function.
- * elf-bfd.h: Add prototypes for above functions.
-
-2002-01-08 Alexandre Oliva <aoliva@redhat.com>
-
- * elf.c (elf_fake_sections): Propagate errors from
- elf_backend_fake_section.
-
-2002-01-07 Jason Thorpe <thorpej@wasabisystems.com>
-
- * Makefile.am (BFD32_BACKENDS): Add elf32-sh-nbsd.lo.
- (BFD32_BACKENDS_CFILES): Add elf32-sh-nbsd.c.
- (elf32-sh-nbsd.lo): New rule.
- * Makefile.in: Regenerate.
- * config.bfd (sh*le-*-netbsdelf*): New target.
- (sh*-*-netbsdelf*): New target.
- * configure.in: Include netbsd-core.lo for native sh*-*-netbsd*.
- (bfd_elf32_shnbsd_vec): New vector.
- (bfd_elf32_shlnbsd_vec): New vector.
- * configure: Regenerate.
- * elf32-sh-nbsd.c: New file.
- * targets.c: Update copyright years.
- (_bfd_target_vector): Add bfd_elf32_shlnbsd_vec and
- bfd_elf32_shnbsd_vec.
-
-2002-01-07 Aldy Hernandez <aldyh@redhat.com>
-
- * coff-rs6000.c (READ20): Use bfd_scan_vma.
-
-2002-01-07 Geoffrey Keating <geoffk@redhat.com>
-
- * elflink.h (elf_link_input_bfd): Don't ask for the merged offset
- of a symbol in a section that will be deleted.
-
-2002-01-07 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/es.po: New file: Spanish translation.
- * configure.in (ALL_LINGUAS): Add es.
- * configure: Regenerate.
-
-2002-01-06 Steve Ellcey <sje@cup.hp.com>
-
- * elfxx-ia64.c (is_unwind_section_name): Add target vector as
- argument so we can handle HP-UX specially.
- (elfNN_ia64_hpux_vec): New for use in is_unwind_section_name.
- (elfNN_hpux_backend_section_from_bfd_section): New for support
- of SHN_IA_64_ANSI_COMMON.
- (elfNN_ia64_relax_section): Add support for SHN_IA_64_ANSI_COMMON.
- (is_unwind_section_name): Add special HP-UX support.
- (elfNN_ia64_section_from_shdr): Add support for more sections.
- (elfNN_ia64_fake_sections): Modify is_unwind_section_name call and
- add support for more sections.
- (elfNN_ia64_additional_program_headers): Modify
- is_unwind_section_name call.
- (elfNN_ia64_modify_segment_map): Remove assumption that there is
- only one unwind section in segment.
-
-2002-01-06 Alan Modra <amodra@bigpond.net.au>
-
- * syms.c (_bfd_generic_make_empty_symbol): New function.
- * libbfd-in.h (_bfd_nosymbols_make_empty_symbol): Define as
- _bfd_generic_make_empty_symbol.
- * libbfd.h: Regenerate.
- * bfd-in2.h: Regenerate.
- * hppabsd-core.c (hppabsd_core_make_empty_symbol): Delete function.
- (hppabsd_core_get_symtab_upper_bound): Don't define.
- (hppabsd_core_get_symtab): Likewise.
- (hppabsd_core_print_symbol): Likewise.
- (hppabsd_core_get_symbol_info): Likewise.
- (hppabsd_core_bfd_is_local_label_name): Likewise.
- (hppabsd_core_get_lineno): Likewise.
- (hppabsd_core_find_nearest_line): Likewise.
- (hppabsd_core_bfd_make_debug_symbol): Likewise.
- (hppabsd_core_read_minisymbols): Likewise.
- (hppabsd_core_minisymbol_to_symbol): Likewise.
- (hppabsd_core_vec): Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).
- Formatting fixes.
- * hpux-core.c: Similarly.
- * irix-core.c: Similarly.
- * osf-core.c: Similarly.
- * sco5-core.c: Similarly.
- * binary.c (binary_make_empty_symbol): Remove function, define as
- _bfd_generic_make_empty_symbol.
- * ihex.c (ihex_make_empty_symbol): Likewise.
- * mmo.c (mmo_make_empty_symbol): Likewise.
- * ppcboot.c (ppcboot_make_empty_symbol): Likewise.
- * srec.c (srec_make_empty_symbol): Likewise.
- * versados.c (versados_make_empty_symbol): Likewise.
- * vms.c (_bfd_vms_make_empty_symbol): Remove.
- (vms_make_empty_symbol): Define as _bfd_generic_make_empty_symbol.
- * vms-gsd.c (_bfd_vms_slurp_gsd): Call bfd_make_empty_symbol
- rather than _bfd_vms_make_empty_symbol.
- * vms-misc.c (new_symbol): Likewise.
-
-2002-01-05 Alan Modra <amodra@bigpond.net.au>
-
- * section.c (bfd_section_init): Remove unnecessary initialisations.
- (bfd_section_list_clear): New function.
- (bfd_section_list_remove, bfd_section_list_insert): New macros.
- (_bfd_strip_section_from_output): Use them.
- * coffcode.h (coff_set_alignment_hook): Likewise.
- * elf32-mips.c (_bfd_mips_elf_final_link): Likewise.
- * elf64-mips.c (mips_elf64_final_link): Likewise.
- * elf64-mmix.c (mmix_elf_final_link): Likewise.
- * sunos.c (sunos_add_dynamic_symbols): Likewise.
- * xcofflink.c (_bfd_xcoff_bfd_final_link): Likewise.
- * bfd-in2.h: Regenerate.
-
- * netbsd-core.c (netbsd_core_file_p): Use bfd_make_section_anyway
- rather than doing our own section handling. Clean up after errors
- with bfd_release and bfd_section_list_clear. Handle unexpected
- flags.
- * aoutf1.h (sunos4_core_file_p): Likewise.
- * aix386-core.c (aix386_core_file_p): Likewise.
- * cisco-core.c (cisco_core_file_validate): Likewise.
- * ptrace-core.c (ptrace_unix_core_file_p): Likewise.
- * trad-core.c (trad_unix_core_file_p): Likewise.
-
- * hppabsd-core.c (hppabsd_core_core_file_p): Clean up after errors
- with bfd_release and bfd_section_list_clear.
- * hpux-core.c (hpux_core_core_file_p): Likewise.
- * irix-core.c (irix_core_core_file_p): Likewise.
- * lynx-core.c (lynx_core_file_p): Likewise.
- * osf-core.c (osf_core_core_file_p): Likewise.
- * rs6000-core.c (rs6000coff_core_p): Likewise.
- * sco5-core.c (sco5_core_file_p): Likewise.
-
- * elf32-mips.c (_bfd_mips_elf_lo16_reloc): Simplify, and perform
- sign extension adjustments without conditionals.
-
-2002-01-04 Jakub Jelinek <jakub@redhat.com>
-
- * elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Don't crash if
- CIE at .eh_frame start is removed due to no FDEs referencing it.
-
-2002-01-04 Jason Thorpe <thorpej@wasabisystems.com>
-
- * config.bfd (x86_64-*-netbsd*): New target.
- * configure.in (x86_64-*-netbsd*): Set COREFILE
- to netbsd-core.lo.
- * configure: Regenerated.
-
-2002-01-03 Tom Rix <trix@redhat.com>
-
- * xcofflink.c (_bfd_xcoff_bfd_final_link): Update .pad section ordering
- for recent bfd_make_section_anyway change.
-
-2002-01-03 Nick Clifton <nickc@cambridge.redhat.com>
-
- * elf32-arm.h (elf32_arm_final_link_relocate): Handle
- R_ARM_THM_PC11 reloc.
-
-2002-01-02 Nick Clifton <nickc@cambridge.redhat.com>
-
- * configure.in (LINGUAS): Add ja.
- * configure: Regenerate.
- * po/ja.po: Import from translation project's web site.
-
-2002-01-02 Nick Clifton <nickc@cambridge.redhat.com>
-
- * elf32-arm.h (elf32_arm_merge_private_bfd_data): Reformat error
- messages to ease translation into other languages.
+ (elf_backend_can_gc_sections): Define.
-For older changes see ChangeLog-0001
+For older changes see ChangeLog-0203
Local Variables:
mode: change-log
diff --git a/bfd/acinclude.m4 b/bfd/acinclude.m4
index b1bd1bec784..63b4bf92b17 100644
--- a/bfd/acinclude.m4
+++ b/bfd/acinclude.m4
@@ -1,7 +1,7 @@
sinclude(../config/accross.m4)
dnl See whether we need to use fopen-bin.h rather than fopen-same.h.
-AC_DEFUN(BFD_BINARY_FOPEN,
+AC_DEFUN([BFD_BINARY_FOPEN],
[AC_REQUIRE([AC_CANONICAL_SYSTEM])
case "${host}" in
changequote(,)dnl
@@ -11,7 +11,7 @@ changequote([,])dnl
esac])dnl
dnl Get a default for CC_FOR_BUILD to put into Makefile.
-AC_DEFUN(BFD_CC_FOR_BUILD,
+AC_DEFUN([BFD_CC_FOR_BUILD],
[# Put a plausible default for CC_FOR_BUILD in Makefile.
if test -z "$CC_FOR_BUILD"; then
if test "x$cross_compiling" = "xno"; then
@@ -44,7 +44,7 @@ fi
AC_SUBST(EXEEXT_FOR_BUILD)])dnl
dnl See whether we need a declaration for a function.
-AC_DEFUN(BFD_NEED_DECLARATION,
+AC_DEFUN([BFD_NEED_DECLARATION],
[AC_MSG_CHECKING([whether $1 must be declared])
AC_CACHE_VAL(bfd_cv_decl_needed_$1,
[AC_TRY_COMPILE([
@@ -73,7 +73,7 @@ fi
dnl Check for existence of a type $1 in sys/procfs.h
-AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE,
+AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE],
[AC_MSG_CHECKING([for $1 in sys/procfs.h])
AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_$1,
[AC_TRY_COMPILE([
@@ -93,7 +93,7 @@ AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE,
dnl Check for existence of member $2 in type $1 in sys/procfs.h
-AC_DEFUN(BFD_HAVE_SYS_PROCFS_TYPE_MEMBER,
+AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE_MEMBER],
[AC_MSG_CHECKING([for $1.$2 in sys/procfs.h])
AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_member_$1_$2,
[AC_TRY_COMPILE([
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 2afcf7f48af..f66c29ce23c 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -2356,6 +2356,20 @@ to compensate for the borrow when the low bits are added. */
BFD_RELOC_FRV_GPREL32,
BFD_RELOC_FRV_GPRELHI,
BFD_RELOC_FRV_GPRELLO,
+ BFD_RELOC_FRV_GOT12,
+ BFD_RELOC_FRV_GOTHI,
+ BFD_RELOC_FRV_GOTLO,
+ BFD_RELOC_FRV_FUNCDESC,
+ BFD_RELOC_FRV_FUNCDESC_GOT12,
+ BFD_RELOC_FRV_FUNCDESC_GOTHI,
+ BFD_RELOC_FRV_FUNCDESC_GOTLO,
+ BFD_RELOC_FRV_FUNCDESC_VALUE,
+ BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
+ BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
+ BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
+ BFD_RELOC_FRV_GOTOFF12,
+ BFD_RELOC_FRV_GOTOFFHI,
+ BFD_RELOC_FRV_GOTOFFLO,
/* This is a 24bit GOT-relative reloc for the mn10300. */
@@ -2807,6 +2821,22 @@ used when the lower 16 bits are treated as signed. */
add3, load, and store instructions. */
BFD_RELOC_M32R_SDA16,
+/* For PIC. */
+ BFD_RELOC_M32R_GOT24,
+ BFD_RELOC_M32R_26_PLTREL,
+ BFD_RELOC_M32R_COPY,
+ BFD_RELOC_M32R_GLOB_DAT,
+ BFD_RELOC_M32R_JMP_SLOT,
+ BFD_RELOC_M32R_RELATIVE,
+ BFD_RELOC_M32R_GOTOFF,
+ BFD_RELOC_M32R_GOTPC24,
+ BFD_RELOC_M32R_GOT16_HI_ULO,
+ BFD_RELOC_M32R_GOT16_HI_SLO,
+ BFD_RELOC_M32R_GOT16_LO,
+ BFD_RELOC_M32R_GOTPC_HI_ULO,
+ BFD_RELOC_M32R_GOTPC_HI_SLO,
+ BFD_RELOC_M32R_GOTPC_LO,
+
/* This is a 9-bit reloc */
BFD_RELOC_V850_9_PCREL,
@@ -3347,6 +3377,10 @@ value and a 8-bit page number. The symbol address is transformed
to follow the 16K memory bank of 68HC12 (seen as mapped in the window). */
BFD_RELOC_M68HC11_24,
+/* Motorola 68HC12 reloc.
+This is the 5 bits of a value. */
+ BFD_RELOC_M68HC12_5B,
+
/* These relocs are only used within the CRIS assembler. They are not
(at present) written to any object files. */
BFD_RELOC_CRIS_BDISP8,
diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c
index 9b2612327f8..e51d07d583c 100644
--- a/bfd/coff-arm.c
+++ b/bfd/coff-arm.c
@@ -268,7 +268,7 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
2,
2,
24,
- FALSE,
+ TRUE,
0,
complain_overflow_dont,
aoutarm_fix_pcrel_26_done,
@@ -276,7 +276,7 @@ static reloc_howto_type aoutarm_std_reloc_howto[] =
FALSE,
0x00ffffff,
0x0,
- FALSE),
+ PCRELOFFSET),
HOWTO (ARM_32,
0,
2,
@@ -1250,7 +1250,8 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
when doing a relocatable link. However, we want to convert
ARM_26 to ARM_26D relocs if possible. We return a fake howto in
this case without pcrel_offset set, and adjust the addend to
- compensate. */
+ compensate. 'partial_inplace' is also set, since we want 'done'
+ relocations to be reflected in section's data. */
if (rel->r_type == ARM_26
&& h != NULL
&& info->relocatable
@@ -1269,12 +1270,17 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
complain_overflow_signed,
aoutarm_fix_pcrel_26 ,
"ARM_26",
- FALSE,
+ TRUE,
0x00ffffff,
0x00ffffff,
FALSE);
addend -= rel->r_vaddr - input_section->vma;
+#ifdef ARM_WINCE
+ /* FIXME: I don't know why, but the hack is necessary for correct
+ generation of bl's instruction offset. */
+ addend -= 8;
+#endif
howto = &fake_arm26_reloc;
}
@@ -1734,10 +1740,13 @@ coff_arm_relocate_section (output_bfd, info, input_bfd, input_section,
#endif
else
#endif /* THUMBEXTENSION */
- rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
- contents,
- rel->r_vaddr - input_section->vma,
- val, addend);
+ if (info->relocatable && ! howto->partial_inplace)
+ rstat = bfd_reloc_ok;
+ else
+ rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
+ contents,
+ rel->r_vaddr - input_section->vma,
+ val, addend);
#if 1 /* THUMBEXTENSION */
/* FIXME:
Is this the best way to fix up thumb addresses? krk@cygnus.com
diff --git a/bfd/coff-h8300.c b/bfd/coff-h8300.c
index e9d19643e43..bd798a64b65 100644
--- a/bfd/coff-h8300.c
+++ b/bfd/coff-h8300.c
@@ -1,6 +1,6 @@
/* BFD back-end for Renesas H8/300 COFF binaries.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003
+ 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Written by Steve Chamberlain, <sac@cygnus.com>.
@@ -265,8 +265,8 @@ static reloc_howto_type howto_table[] = {
the function vector's entry in the jsr instruction. */
HOWTO (R_MEM_INDIRECT, 0, 0, 8, FALSE, 0, complain_overflow_bitfield, special, "8/indirect", FALSE, 0x000000ff, 0x000000ff, FALSE),
- /* Internal reloc for relaxing. This is created when a 16bit pc-relative
- branch is turned into an 8bit pc-relative branch. */
+ /* Internal reloc for relaxing. This is created when a 16-bit pc-relative
+ branch is turned into an 8-bit pc-relative branch. */
HOWTO (R_PCRWORD_B, 0, 0, 8, TRUE, 0, complain_overflow_bitfield, special, "relaxed bCC:16", FALSE, 0x000000ff, 0x000000ff, FALSE),
HOWTO (R_MOVL1, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,special, "32/24 relaxable move", FALSE, 0xffffffff, 0xffffffff, FALSE),
@@ -458,8 +458,8 @@ h8300_reloc16_estimate (bfd *abfd, asection *input_section, arelent *reloc,
/* Only examine the relocs which might be relaxable. */
switch (reloc->howto->type)
{
- /* This is the 16/24 bit absolute branch which could become an 8 bit
- pc-relative branch. */
+ /* This is the 16-/24-bit absolute branch which could become an
+ 8-bit pc-relative branch. */
case R_JMP1:
case R_JMPL1:
/* Get the address of the target of this branch. */
@@ -547,7 +547,7 @@ h8300_reloc16_estimate (bfd *abfd, asection *input_section, arelent *reloc,
}
break;
- /* This is the 16 bit pc-relative branch which could become an 8 bit
+ /* This is the 16-bit pc-relative branch which could become an 8-bit
pc-relative branch. */
case R_PCRWORD:
/* Get the address of the target of this branch, add one to the value
@@ -575,8 +575,8 @@ h8300_reloc16_estimate (bfd *abfd, asection *input_section, arelent *reloc,
}
break;
- /* This is a 16 bit absolute address in a mov.b insn, which can
- become an 8 bit absolute address if it's in the right range. */
+ /* This is a 16-bit absolute address in a mov.b insn, which can
+ become an 8-bit absolute address if it's in the right range. */
case R_MOV16B1:
/* Get the address of the data referenced by this mov.b insn. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -595,9 +595,9 @@ h8300_reloc16_estimate (bfd *abfd, asection *input_section, arelent *reloc,
}
break;
- /* Similarly for a 24 bit absolute address in a mov.b. Note that
- if we can't relax this into an 8 bit absolute, we'll fall through
- and try to relax it into a 16bit absolute. */
+ /* Similarly for a 24-bit absolute address in a mov.b. Note that
+ if we can't relax this into an 8-bit absolute, we'll fall through
+ and try to relax it into a 16-bit absolute. */
case R_MOV24B1:
/* Get the address of the data referenced by this mov.b insn. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -616,11 +616,11 @@ h8300_reloc16_estimate (bfd *abfd, asection *input_section, arelent *reloc,
break;
}
- /* FALLTHROUGH and try to turn the 32/24 bit reloc into a 16 bit
+ /* FALLTHROUGH and try to turn the 24-/32-bit reloc into a 16-bit
reloc. */
- /* This is a 24/32 bit absolute address in a mov insn, which can
- become an 16 bit absolute address if it's in the right range. */
+ /* This is a 24-/32-bit absolute address in a mov insn, which can
+ become an 16-bit absolute address if it's in the right range. */
case R_MOVL1:
/* Get the address of the data referenced by this mov insn. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -666,10 +666,11 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
bfd_vma value;
bfd_vma dot;
int gap, tmp;
+ unsigned char temp_code;
switch (reloc->howto->type)
{
- /* Generic 8bit pc-relative relocation. */
+ /* Generic 8-bit pc-relative relocation. */
case R_PCRBYTE:
/* Get the address of the target of this branch. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -699,7 +700,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
/* All done. */
break;
- /* Generic 16bit pc-relative relocation. */
+ /* Generic 16-bit pc-relative relocation. */
case R_PCRWORD:
/* Get the address of the target of this branch. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -730,7 +731,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
/* All done. */
break;
- /* Generic 8bit absolute relocation. */
+ /* Generic 8-bit absolute relocation. */
case R_RELBYTE:
/* Get the address of the object referenced by this insn. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -742,7 +743,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
/* All done. */
break;
- /* Various simple 16bit absolute relocations. */
+ /* Various simple 16-bit absolute relocations. */
case R_MOV16B1:
case R_JMP1:
case R_RELWORD:
@@ -752,7 +753,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
src_address += 2;
break;
- /* Various simple 24/32bit absolute relocations. */
+ /* Various simple 24-/32-bit absolute relocations. */
case R_MOV24B1:
case R_MOVL1:
case R_RELLONG:
@@ -763,7 +764,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
src_address += 4;
break;
- /* Another 24/32bit absolute relocation. */
+ /* Another 24-/32-bit absolute relocation. */
case R_JMPL1:
/* Get the address of the target of this branch. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -775,8 +776,15 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
src_address += 4;
break;
- /* A 16bit absolute relocation that was formerly a 24/32bit
- absolute relocation. */
+ /* This is a 24-/32-bit absolute address in one of the following
+ instructions:
+
+ "band", "bclr", "biand", "bild", "bior", "bist", "bixor",
+ "bld", "bnot", "bor", "bset", "bst", "btst", "bxor", and
+ "mov.[bwl]"
+
+ We may relax this into an 16-bit absolute address if it's in
+ the right range. */
case R_MOVL2:
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
value = bfd_h8300_pad_address (abfd, value);
@@ -784,11 +792,12 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
/* Sanity check. */
if (value <= 0x7fff || value >= 0xffff8000u)
{
- /* Insert the 16bit value into the proper location. */
+ /* Insert the 16-bit value into the proper location. */
bfd_put_16 (abfd, value, data + dst_address);
- /* Fix the opcode. For all the move insns, we simply
- need to turn off bit 0x20 in the previous byte. */
+ /* Fix the opcode. For all the instructions that belong to
+ this relaxation, we simply need to turn off bit 0x20 in
+ the previous byte. */
data[dst_address - 1] &= ~0x20;
dst_address += 2;
src_address += 4;
@@ -803,7 +812,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
}
break;
- /* A 16bit absolute branch that is now an 8-bit pc-relative branch. */
+ /* A 16-bit absolute branch that is now an 8-bit pc-relative branch. */
case R_JMP2:
/* Get the address of the target of this branch. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -833,7 +842,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
bfd_put_8 (abfd, 0x55, data + dst_address - 1);
break;
case 0x5a:
- /* jmp ->bra */
+ /* jmp -> bra */
bfd_put_8 (abfd, 0x40, data + dst_address - 1);
break;
@@ -841,7 +850,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
abort ();
}
- /* Write out the 8bit value. */
+ /* Write out the 8-bit value. */
bfd_put_8 (abfd, gap, data + dst_address);
dst_address += 1;
@@ -849,7 +858,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
break;
- /* A 16bit pc-relative branch that is now an 8-bit pc-relative branch. */
+ /* A 16-bit pc-relative branch that is now an 8-bit pc-relative branch. */
case R_PCRWORD_B:
/* Get the address of the target of this branch. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -876,12 +885,15 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
{
case 0x58:
/* bCC:16 -> bCC:8 */
- /* Get the condition code from the original insn. */
+ /* Get the second byte of the original insn, which contains
+ the condition code. */
tmp = data[dst_address - 1];
+
+ /* Compute the fisrt byte of the relaxed instruction. The
+ original sequence 0x58 0xX0 is relaxed to 0x4X, where X
+ represents the condition code. */
tmp &= 0xf0;
tmp >>= 4;
-
- /* Now or in the high nibble of the opcode. */
tmp |= 0x40;
/* Write it. */
@@ -900,13 +912,13 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
/* Output the target. */
bfd_put_8 (abfd, gap, data + dst_address - 1);
- /* We don't advance dst_address -- the 8bit reloc is applied at
+ /* We don't advance dst_address -- the 8-bit reloc is applied at
dst_address - 1, so the next insn should begin at dst_address. */
src_address += 2;
break;
- /* Similarly for a 24bit absolute that is now 8 bits. */
+ /* Similarly for a 24-bit absolute that is now 8 bits. */
case R_JMPL2:
/* Get the address of the target of this branch. */
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
@@ -939,23 +951,52 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
break;
- /* A 16bit absolute mov.b that is now an 8bit absolute mov.b. */
+ /* This is a 16-bit absolute address in one of the following
+ instructions:
+
+ "band", "bclr", "biand", "bild", "bior", "bist", "bixor",
+ "bld", "bnot", "bor", "bset", "bst", "btst", "bxor", and
+ "mov.b"
+
+ We may relax this into an 8-bit absolute address if it's in
+ the right range. */
case R_MOV16B2:
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
- /* Sanity check. */
+ /* All instructions with R_H8_DIR16B2 start with 0x6a. */
if (data[dst_address - 2] != 0x6a)
abort ();
+ temp_code = data[src_address - 1];
+
+ /* If this is a mov.b instruction, clear the lower nibble, which
+ contains the source/destination register number. */
+ if ((temp_code & 0x10) != 0x10)
+ temp_code &= 0xf0;
+
/* Fix up the opcode. */
- switch (data[src_address - 1] & 0xf0)
+ switch (temp_code)
{
case 0x00:
+ /* This is mov.b @aa:16,Rd. */
data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x20;
break;
case 0x80:
+ /* This is mov.b Rs,@aa:16. */
data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x30;
break;
+ case 0x18:
+ /* This is a bit-maniputation instruction that stores one
+ bit into memory, one of "bclr", "bist", "bnot", "bset",
+ and "bst". */
+ data[dst_address - 2] = 0x7f;
+ break;
+ case 0x10:
+ /* This is a bit-maniputation instruction that loads one bit
+ from memory, one of "band", "biand", "bild", "bior",
+ "bixor", "bld", "bor", "btst", and "bxor". */
+ data[dst_address - 2] = 0x7e;
+ break;
default:
abort ();
}
@@ -964,23 +1005,52 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
src_address += 2;
break;
- /* Similarly for a 24bit mov.b */
+ /* This is a 24-bit absolute address in one of the following
+ instructions:
+
+ "band", "bclr", "biand", "bild", "bior", "bist", "bixor",
+ "bld", "bnot", "bor", "bset", "bst", "btst", "bxor", and
+ "mov.b"
+
+ We may relax this into an 8-bit absolute address if it's in
+ the right range. */
case R_MOV24B2:
value = bfd_coff_reloc16_get_value (reloc, link_info, input_section);
- /* Sanity check. */
+ /* All instructions with R_MOV24B2 start with 0x6a. */
if (data[dst_address - 2] != 0x6a)
abort ();
+ temp_code = data[src_address - 1];
+
+ /* If this is a mov.b instruction, clear the lower nibble, which
+ contains the source/destination register number. */
+ if ((temp_code & 0x30) != 0x30)
+ temp_code &= 0xf0;
+
/* Fix up the opcode. */
- switch (data[src_address - 1] & 0xf0)
+ switch (temp_code)
{
case 0x20:
+ /* This is mov.b @aa:24/32,Rd. */
data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x20;
break;
case 0xa0:
+ /* This is mov.b Rs,@aa:24/32. */
data[dst_address - 2] = (data[src_address - 1] & 0xf) | 0x30;
break;
+ case 0x38:
+ /* This is a bit-maniputation instruction that stores one
+ bit into memory, one of "bclr", "bist", "bnot", "bset",
+ and "bst". */
+ data[dst_address - 2] = 0x7f;
+ break;
+ case 0x30:
+ /* This is a bit-maniputation instruction that loads one bit
+ from memory, one of "band", "biand", "bild", "bior",
+ "bixor", "bld", "bor", "btst", and "bxor". */
+ data[dst_address - 2] = 0x7e;
+ break;
default:
abort ();
}
@@ -1025,7 +1095,7 @@ h8300_reloc16_extra_cases (bfd *abfd, struct bfd_link_info *link_info,
src_address += 4;
break;
- /* An 8bit memory indirect instruction (jmp/jsr).
+ /* An 8-bit memory indirect instruction (jmp/jsr).
There's several things that need to be done to handle
this relocation.
diff --git a/bfd/coffcode.h b/bfd/coffcode.h
index ccac05bcaec..15d97093f67 100644
--- a/bfd/coffcode.h
+++ b/bfd/coffcode.h
@@ -1064,7 +1064,11 @@ styp_to_sec_flags (abfd, hdr, name, section, flags_ptr)
sec_flags &= ~ SEC_READONLY;
break;
case IMAGE_SCN_MEM_DISCARDABLE:
- sec_flags |= SEC_DEBUGGING;
+ /* The MS PE spec sets the DISCARDABLE flag on .reloc sections
+ but we do not want them to be labelled as debug section, since
+ then strip would remove them. */
+ if (strncmp (name, ".reloc", sizeof ".reloc" - 1) != 0)
+ sec_flags |= SEC_DEBUGGING;
break;
case IMAGE_SCN_MEM_SHARED:
sec_flags |= SEC_SHARED;
diff --git a/bfd/config.bfd b/bfd/config.bfd
index c1ca87e8537..da8d94684b7 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -329,7 +329,7 @@ case "${targ}" in
targ_defvec=bfd_elf32_fr30_vec
;;
- frv-*-elf)
+ frv-*-elf | frv-*-*linux*)
targ_defvec=bfd_elf32_frv_vec
;;
@@ -597,6 +597,21 @@ case "${targ}" in
targ_defvec=bfd_elf32_iq2000_vec
;;
+ m32r*le-*-linux*)
+ targ_defvec=bfd_elf32_m32rlelin_vec
+ targ_selvecs="bfd_elf32_m32rlin_vec bfd_elf32_m32rlelin_vec"
+ ;;
+
+ m32r*-*-linux*)
+ targ_defvec=bfd_elf32_m32rlin_vec
+ targ_selvecs="bfd_elf32_m32rlin_vec bfd_elf32_m32rlelin_vec"
+ ;;
+
+ m32r*le-*-*)
+ targ_defvec=bfd_elf32_m32rle_vec
+ targ_selvecs="bfd_elf32_m32r_vec bfd_elf32_m32rle_vec"
+ ;;
+
m32r-*-*)
targ_defvec=bfd_elf32_m32r_vec
;;
@@ -636,7 +651,7 @@ case "${targ}" in
targ_defvec=m68kcoff_vec
targ_selvecs="m68kcoff_vec versados_vec ieee_vec aout0_big_vec"
;;
- m68*-*-elf* | m68*-*-sysv4*)
+ m68*-*-elf* | m68*-*-sysv4* | m68*-*-uclinux*)
targ_defvec=bfd_elf32_m68k_vec
targ_selvecs="m68kcoff_vec ieee_vec"
;;
diff --git a/bfd/configure b/bfd/configure
index 42345bb24bc..5704aef6eae 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -6320,6 +6320,9 @@ do
bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
bfd_elf32_littlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
+ bfd_elf32_m32rle_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
+ bfd_elf32_m32rlin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
+ bfd_elf32_m32rlelin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
bfd_elf32_m68hc12_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
bfd_elf32_m68k_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
@@ -6579,10 +6582,10 @@ case ${host64}-${target64}-${want64} in
if test -n "$GCC" ; then
bad_64bit_gcc=no;
echo $ac_n "checking for gcc version with buggy 64-bit support""... $ac_c" 1>&6
-echo "configure:6583: checking for gcc version with buggy 64-bit support" >&5
+echo "configure:6586: checking for gcc version with buggy 64-bit support" >&5
# Add more tests for gcc versions with non-working 64-bit support here.
cat > conftest.$ac_ext <<EOF
-#line 6586 "configure"
+#line 6589 "configure"
#include "confdefs.h"
:__GNUC__:__GNUC_MINOR__:__i386__:
EOF
@@ -6628,17 +6631,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:6632: checking for $ac_hdr" >&5
+echo "configure:6635: 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 6637 "configure"
+#line 6640 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6642: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6645: \"$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*
@@ -6667,12 +6670,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6671: checking for $ac_func" >&5
+echo "configure:6674: 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 6676 "configure"
+#line 6679 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6695,7 +6698,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6699: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6702: \"$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
@@ -6720,7 +6723,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:6724: checking for working mmap" >&5
+echo "configure:6727: 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
@@ -6728,7 +6731,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 6732 "configure"
+#line 6735 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -6868,7 +6871,7 @@ main()
}
EOF
-if { (eval echo configure:6872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6875: \"$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
@@ -6893,12 +6896,12 @@ fi
for ac_func in madvise mprotect
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6897: checking for $ac_func" >&5
+echo "configure:6900: 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 6902 "configure"
+#line 6905 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6921,7 +6924,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6928: \"$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.in b/bfd/configure.in
index 72c32bd695e..760bfe3afea 100644
--- a/bfd/configure.in
+++ b/bfd/configure.in
@@ -631,6 +631,9 @@ do
bfd_elf32_littlearm_vec) tb="$tb elfarm-nabi.lo elf32.lo $elf" ;;
bfd_elf32_littlemips_vec) tb="$tb elf32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
+ bfd_elf32_m32rle_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
+ bfd_elf32_m32rlin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
+ bfd_elf32_m32rlelin_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
bfd_elf32_m68hc11_vec) tb="$tb elf32-m68hc11.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
bfd_elf32_m68hc12_vec) tb="$tb elf32-m68hc12.lo elf32-m68hc1x.lo elf32.lo $elf" ;;
bfd_elf32_m68k_vec) tb="$tb elf32-m68k.lo elf32.lo $elf" ;;
diff --git a/bfd/doc/ChangeLog b/bfd/doc/ChangeLog
index 3636ed8bfaa..33163834229 100644
--- a/bfd/doc/ChangeLog
+++ b/bfd/doc/ChangeLog
@@ -1,594 +1,9 @@
-2003-10-15 Andrew Cagney <cagney@redhat.com>
-
- * bfdint.texi (BFD target vector symbols): Rename _get_symtab to
- _canonicalize_symtab.
-
-2003-10-08 David Taylor <dtaylor@emc.com>
-
- * bfd.texinfo: Remove spurious backslash.
-
-2003-07-04 Josh Baratz <baratz@intersystems.com>
-
- * Makefile.am (MKDOC rule): Add $(CFLAGS) in case it contains
- CC_FOR_BUILD specific switches.
- * Makefile.in: Regenerate.
-
-2003-06-29 Alan Modra <amodra@bigpond.net.au>
-
- * chew.c (paramstuff): Don't emit PARAMS.
-
-2003-02-12 Bob Wilson <bob.wilson@acm.org>
-
- * bfd.texinfo: Fix quotes for texinfo. Make section title
- capitalization more consistent. Use @example instead of @lisp.
- Replace FDL appendix with include of fdl.texi.
- * fdl.texi: New file.
-
-2002-11-18 Klee Dienes <kdienes@apple.com>
-
- * Makefile.am (DOCFILES): Add bfdwin.texi, bfdio.texi.
- (PROTOS): Add bfdio.p, bfdwin.p.
- (SRCDOC): Add bfdio.c, bfdwin.c.
- (SRCPROT): Add bfdio.c, bfdwin.c.
- (SRCIPROT): Add bfdio.c, bfdwin.c.
- (LIBBFD_H_DEP): Add bfdio.c, bfdwin.c.
- (BFD_H_DEP): Add bfdio.c, bfdwin.c.
- Add rules for bfdio.texi, bfdwin.text.
- * bfd.texinfo: Include bfdio.texi.
-
-2002-10-14 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.in: Regenerate.
-
-2002-10-11 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in: Regenerated.
-
-2002-08-29 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * chew.c (paramstuff, outputdots, perform, bang and usage): Remove
- void from function definitions.
-
-2002-08-13 Alan Modra <amodra@bigpond.net.au>
-
- * header.sed: Strip tabs.
-
-2002-06-08 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Fix quote style in last change.
- * Makefile.in: Regenerate.
-
-2002-06-07 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (libbfd.h): Don't use "echo -n".
- (libcoff.h, bfd.h): Likewise.
- * Makefile.in: Regenerate.
-
-2002-06-06 Lars Brinkhoff <lars@nocrew.org>
-
- * bfdint.texi: Change registry@sco.com to registry@caldera.com.
-
-2002-06-05 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (libbfd.h): Add "Extracted from.." comment.
- (libcoff.h, bfd.h): Likewise.
- * Makefile.in: Regenerate.
-
-2002-05-25 Alan Modra <amodra@bigpond.net.au>
-
- * chew.c: Use #include "" instead of <> for local header files.
-
-2002-04-20 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.in: Regenerate.
-
-2002-02-11 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.in: Regenerate.
-
-2002-02-01 Alan Modra <amodra@bigpond.net.au>
-
- * chew.c (WORD): Eliminate.
-
-2002-01-31 Ivan Guzvinec <ivang@opencores.org>
-
- * Makefile.in: Regenerate.
-
-2002-01-31 Alan Modra <amodra@bigpond.net.au>
-
- * chew.c (courierize): Don't modify @command params.
-
-2002-01-30 Nick Clifton <nickc@cambridge.redhat.com>
-
- * proto.str (ENUMDOC): Place two spaces between the end of
- the text and the closing comment marker.
-
-2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
-
- * bfdint.texi (BFD target vector miscellaneous): Add
- bfd_target_mmo_flavour.
- * bfd.texinfo (BFD back ends): Add entry for mmo.
- * Makefile.am (DOCFILES): Add mmo.texi.
- (SRCDOC): Add mmo.c.
- (s-mmo, mmo.texi): New rules.
-
-2001-10-29 Kazu Hirata <kazu@hxi.com>
-
- * bfdsumm.texi: Fix a typo.
-
-2001-10-26 Nick Clifton <nickc@cambridge.redhat.com>
-
- * bfd.texinfo: Change footer to refer to FSF. Change subtitle
- to refer to original creation date.
-
-2002-01-26 Hans-Peter Nilsson <hp@bitrange.com>
-
- * Makefile.am (install): Depend on install-info.
- * Makefile.in: Regenerate.
-
-2001-10-03 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (BFD_H_DEP): Add ../version.h.
- * Makefile.in: Regenerate.
-
-2001-10-02 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.in: Regenerate.
-
-2001-10-01 Alan Modra <amodra@bigpond.net.au>
-
- * header.sed: New file, adds header to generated files.
- * Makefile.am: Rewrite rules generating libbfd.h, libcoff.h and
- bfd.h, using above. Add missing elf.c dependecy for libbfd.h.
- * Makefile.in: Regenerate.
-
-2001-09-21 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.in: Regenerate.
-
-2001-09-18 Alan Modra <amodra@bigpond.net.au>
-
- * bfdint.texi: Replace reference to bfd_read with bfd_bread.
- Likewise for bfd_write.
-
-2001-07-24 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.in: Regenerate.
-
-2001-06-21 Hans-Peter Nilsson <hp@axis.com>
-
- * bfdint.texi (BFD relocation functions) <different formats>:
- Mention that the GNU linker is aware of input-output format
- restrictions when generating relocatable output. Make new
- paragraph for final-link case.
- (BFD target vector swap): Fix typo.
-
-2001-01-25 Kazu Hirata <kazu@hxi.com>
-
- * chew.c: Do not output trailing whitespaces in type and
- functionname. Update copyright.
-
-2001-01-24 Kazu Hirata <kazu@hxi.com>
-
- * chew.c: Do not output a trailing whitespace.
-
-2000-11-06 Nick Clifton <nickc@redhat.com>
-
- * bfd.texinfo: Add GNU Free Documentation License.
-
-2000-07-09 Alan Modra <alan@linuxcare.com.au>
-
- * Makefile.in: Regenerate.
-
-2000-07-08 Alan Modra <alan@linuxcare.com.au>
-
- * chew.c (outputdots): Don't add a space before `/*'.
- (courierize): Likewise.
-
-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.
-
-2000-04-07 Andrew Cagney <cagney@b1.cygnus.com>
-
- * Makefile.in: Rebuild with current autoconf/automake.
-
-1999-02-04 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in: Rebuild with current autoconf/automake.
-
-1998-07-23 Nick Clifton <nickc@cygnus.com>
-
- * bfdint.texi (BFD ELF processor required): Add paragraph
- describing the necessity to create "include/elf/CPU.h".
-
-1998-05-07 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (chew.o): Add -I options for intl srcdir and
- objdir.
- * Makefile.in: Rebuild.
-
-1998-04-27 Ian Lance Taylor <ian@cygnus.com>
-
- * bfdint.texi: New file.
- * Makefile.am (noinst_TEXINFOS): New variable.
- * Makefile.in: Rebuild.
-
-1998-04-13 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in: Rebuild.
-
-1998-04-06 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (STAGESTUFF): Remove variable.
- (CLEANFILES): Don't remove $(STAGESTUFF).
- (DISTCLEANFILES, MAINTAINERCLEANFILES): New variables.
- * Makefile.in: Rebuild.
-
-1998-03-27 Ian Lance Taylor <ian@cygnus.com>
-
- * chew.c (skip_white_and_starts): Remove unused declaration.
- (skip_white_and_stars): Add casts to avoid warnings.
- (skip_trailing_newlines, paramstuff, courierize): Likewise.
- (bulletize, do_fancy_stuff, iscommand): Likewise.
- (kill_bogus_lines, nextword, main): Likewise.
- (manglecomments): Comment out.
- (outputdots, kill_bogus_lines): Remove unused local variables.
- (perform, compile): Likewise.
- (courierize): Fully parenthesize expression.
- (copy_past_newline): Declare return value.
- (print): Change printf format string.
- (main): Call usage for an unrecognized option.
-
-1998-02-13 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (AUTOMAKE_OPTIONS): Define.
- * Makefile.in: Rebuild.
-
-1998-01-26 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * doc.str (bodytext): Don't output @* at the end.
- * chew.c (kill_bogus_lines): Make sure that a period at the
- beginning is recognized.
- (indent): Don't put indentation at the end.
- (copy_past_newline): Expand tabs.
- * Makefile.am (s-reloc, s-syms): Depend on doc.str.
- * Makefile.in: Rebuild.
-
-1997-10-01 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (libbfd.h): Don't use cpu-h8300.c, cpu-i960.c, or
- elfcode.h as input files; they don't contribute anything.
- * Makefile.in: Rebuild.
-
-1997-08-15 Doug Evans <dje@canuck.cygnus.com>
-
- * Makefile.am (libbfd.h, libcoff.h): Invoke $(MKDOC) as ./$(MKDOC).
- * Makefile.in: Rebuild.
-
-1997-08-01 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am (CC_FOR_BUILD): Don't set explicitly.
- * Makefile.in: Rebuild.
-
-1997-07-31 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.am: New file, based on old Makefile.in.
- * Makefile.in: Now built with automake.
-
-1997-07-22 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
-
- * Makefile.in: Change stamp-* files to s-* files. Use bfdt.texi
- rather than bfd.texi.
- (DOCFILES): Change bfd.texi to bfdt.texi.
- * bfd.texinfo: Include bfdt.texi, not bfd.texi.
-
-1997-06-16 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (CC, CFLAGS): Substitute from configure script.
- From Jeff Makey <jeff@cts.com>.
-
-1997-04-15 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (install-info): Use mkinstalldirs to build
- $(infodir).
-
-1997-04-08 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (install-info): Permit info files to be in srcdir.
- (stamp-*): Add a stamp-X target for each X.texi target.
- (*.texi): Just depend upon stamp-X.
- (clean): Remove stamp-*.
- (distclean): Depend upon mostlyclean. Remove stamp-*. Don't
- remove $(DOCFILES).
-
-1997-04-07 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (distclean): Don't remove *.info files.
-
-1997-02-13 Klaus Kaempf (kkaempf@progis.de)
-
- * makefile.vms: New file.
-
-1996-06-18 Ian Lance Taylor <ian@cygnus.com>
-
- * chew.c (kill_bogus_lines): Reset sl when not at the start of a
- line. From Uwe Ohse <uwe@tirka.gun.de>.
-
-1996-01-30 Ian Lance Taylor <ian@cygnus.com>
-
- From Ronald F. Guilmette <rfg@monkeys.com>:
- * Makefile.in (libbfd.h): Depend upon proto.str.
- (libcoff.h, bfd.h): Likewise.
-
-1995-11-03 Fred Fish <fnf@cygnus.com>
-
- * Makefile.in (SRCDOC, SRCPROT, core.texi, bfd.h): Use corefile.c,
- renamed from core.c.
-
-1995-11-01 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
-
- * chew.c: Include <ctype.h>.
-
-1995-10-06 Ken Raeburn <raeburn@cygnus.com>
-
- Mon Sep 25 22:49:32 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * Makefile.in (Makefile): Only remake this Makefile.
-
-1995-10-04 Ken Raeburn <raeburn@cygnus.com>
-
- * chew.c: Include <stdio.h>.
-
-1995-09-12 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (maintainer-clean): New target.
-
-1995-08-31 Ian Lance Taylor <ian@cygnus.com>
-
- * Makefile.in (bfd.h): Add additional #endif at end of bfd.h if
- __cplusplus is defined.
-
-1994-11-29 Doug Evans <dje@canuck.cygnus.com>
-
- * chew.c (write_buffer): New argument `f', all callers changed.
- (stdout, stderr, print, drop, idrop): New forth words.
- * proto.str (COMMENT): New command.
- * doc.str (COMMENT): Likewise.
-
-1994-09-12 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * Makefile.in (DOCFILES): Remove ctor.texi.
- (IPROTOS): Remove ctor.ip.
- (SRCIPROT): Remove $(srcdir)/../ctor.c.
- (ctor.texi): Remove target.
- (libbfd.h): Remove dependency on $(srcdir)/../ctor.c. Remove
- $(MKDOC) run on $(srcdir)/../ctor.c.
- * bfd.texinfo (Constructors): Remove section.
-
-1994-09-02 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * chew.c: Include assert.h. Added prototypes for most functions.
- Changed most uses of int to long. Do bounds checking on the
- stacks. Added comment at the beginning documenting most of the
- intrinsics. Lots of whitespace changes. Re-ordered some
- functions.
- (die, check_range, icheck_range): New functions.
- (strip_trailing_newlines, print_stack_level): New functions.
- (translatecomments): Don't insert tab before "/*".
- (iscommand): Minimum command length is now 4.
- (nextword): Handle some \-sequences.
- (push_addr): Deleted.
- (main): Add new intrinsics strip_trailing_newlines and
- print_stack_level. Complain at end if stack contains more than
- one element, or less.
- (remchar): Make sure the string is not empty before chopping off a
- character.
-
- * doc.str, proto.str: Handle new commands SENUM, ENUM, ENUMX,
- ENUMEQ, ENUMEQX, ENUMDOC.
-
-1994-01-12 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * bfd.texinfo: Added Linker Functions node.
- * Makefile.in (DOCFILES): Added linker.texi.
- (SRCDOC): Added linker.c.
- (linker.texi): New target.
-
-1994-01-04 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * chew.c: Don't rely on a correct declaration of exit.
- (chew_exit): New function which just calls exit.
- (main): Use it.
-
-1994-01-03 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * bfd.texinfo: Added Hash Tables node.
- * Makefile.in (DOCFILES): Added hash.texi.
- (SRCDOC): Added hash.c.
- (hash.texi): New target.
-
-1993-12-30 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * Makefile.in: Delete all references to seclet.c, since it's just
- been deleted. Don't mention hash.c, linker.c, or genlink.h yet,
- since they don't contain documentation yet (hint, hint!).
-
-1993-11-05 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * bfd.texinfo: Small cleanups.
-
-1993-11-19 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * Makefile.in (archures.texi): Depends on $(MKDOC).
-
-1993-08-10 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * bfd.texinfo (BFD back end): Don't include elfcode.texi, since
- it's empty now and that triggers a makeinfo bug.
-
-1993-08-09 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * bfd.texinfo (BFD back end): New section on ELF, includes
- elf.texi and elfcode.texi.
- * Makefile.in (DOCFILES): Include elf.texi, elfcode.texi.
- (SRCDOC): Include elfcode.h, elf.c.
- (elf.texi, elfcode.texi): New intermediate targets.
-
-1993-06-24 David J. Mackenzie (djm@thepub.cygnus.com)
-
- * Makefile.in (.c.o, chew.o): Put CFLAGS last.
- * bfdsumm.texi: New file, broken out of bfd.texinfo, to share
- with ld.texinfo.
-
-1993-06-14 david d `zoo' zuhn (zoo at rtl.cygnus.com)
-
- * Makefile.in (install-info): remove parentdir cruft,
-
-1993-06-09 Jim Kingdon (kingdon@cygnus.com)
-
- * Makefile.in (mostlyclean): Remove chew.o.
-
-1993-05-25 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * Makefile.in (libbfd.h): Use elfcode.h, not elf32.c.
-
-1993-05-24 Ken Raeburn (raeburn@cygnus.com)
-
- * chew.c (compile): Add a couple of missing casts.
-
-1993-05-12 Ian Lance Taylor (ian@cygnus.com)
-
- * Makefile.in (CC_FOR_BUILD): New variable, define to be $(CC).
- (chew.o, $(MKDOC)): Build using CC_FOR_BUILD rather than CC, since
- it must run on the build machine.
-
-1993-04-07 John Gilmore (gnu@cygnus.com)
-
- * Makefile.in (chew): Don't compile from .c to executable in a
- single step; it puts a temporary .o filename into the executable,
- which makes multi-stage comparisons fail. Compile chew.c to
- chew.o, and link that, which makes identical executables every time.
-
-1993-03-24 david d `zoo' zuhn (zoo at poseidon.cygnus.com)
-
- * Makefile.in: fix typo (bfd.texinfo not bfd.texino)
-
-1993-03-19 Ken Raeburn (raeburn@kr-pc.cygnus.com)
-
- * bfd.texinfo: Since BFD version number has been bumped, do same
- to "version number" on title page, and elsewhere. Should be
- fixed to extract real version number.
-
-1993-03-16 Per Bothner (bothner@rtl.cygnus.com)
-
- * Makefile.in: Add *clean rules.
-
-1993-01-11 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * Makefile.in (libbfd.h): Removed duplicate init.c and libbfd.c.
- Added seclet.c.
- (bfd.h): Added dependency on bfd.c and seclet.c. Added seclet.c
- to build.
-
-1992-12-17 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
-
- * Makefile.in: added dvi target, define and use $(TEXI2DVI)
-
-1992-12-03 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * Makefile.in (TEXIDIR): New variable.
- (bfd.dvi): Look for bfd.texinfo in $(srcdir). Generate index.
-
- * bfd.texinfo: Minor doc fixes.
-
-1992-11-05 John Gilmore (gnu@cygnus.com)
-
- Cleanup: Replace all uses of EXFUN in the BFD sources, with PARAMS.
-
- * chew.c (exfunstuff): Eliminate.
- (paramstuff): Replace exfunstuff with function to generate PARAMS.
- * proto.str: Use paramstuff rather than exfunstuff.
-
-1992-08-17 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * chew.c: various patches provided by Howard Chu.
-
-1992-06-19 John Gilmore (gnu at cygnus.com)
-
- * Makefile.in (libbfd.h): Add elf.c as a source of prototypes.
-
-1992-05-11 John Gilmore (gnu at cygnus.com)
-
- * chew.c: exit() should be declared by config files, not by
- portable source code. Its type could be int or void function.
-
-1992-05-04 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.in: another CFLAGS correction.
-
-1992-04-28 K. Richard Pixley (rich@rtl.cygnus.com)
-
- * Makefile.in: Do the CFLAGS thing.
-
-1992-04-11 Fred Fish (fnf@cygnus.com)
-
- * Makefile.in (MINUS_G): Add macro and default to -g.
-
-1992-03-06 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * chew.c: now has -w switch turn on warnings
-
-1992-02-26 K. Richard Pixley (rich@cygnus.com)
-
- * Makefile.in, configure.in: removed traces of namesubdir,
- -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced
- copyrights to '92, changed some from Cygnus to FSF.
-
-1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * Makefile.in: build chew into the current directory. Complete
- the MKDOC macro transition.
-
-1991-12-10 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * chew.c: don't core dump when can't open file
- * Makefile.in: get proto.str from the right place when built in
- odd directories
-
-1991-12-10 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * Makefile.in: infodir belongs in datadir.
-
-1991-12-07 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * chew.c: Much modified
- * proto.str, doc.str: New files for extracting to product
- prototypes and documents respectively.
-
-
-1991-12-06 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * Makefile.in: added standards.text support, host/site/target
- inclusion hooks, install using INSTALL_DATA rather than cp,
- don't echo on install.
-
-1991-12-05 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * Makefile.in: idestdir and ddestdir go away. Added copyrights
- and shift gpl to v2. Added ChangeLog if it didn't exist. docdir
- and mandir now keyed off datadir by default.
+For older changes see ChangeLog-9103
Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
version-control: never
End:
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 68b3660e248..c109fa7e3fb 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -1,6 +1,6 @@
/* DWARF 2 support.
- Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+ Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+ 2004 Free Software Foundation, Inc.
Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions
(gavin@cygnus.com).
@@ -200,51 +200,6 @@ struct attr_abbrev
#define ATTR_ALLOC_CHUNK 4
#endif
-static unsigned int read_1_byte PARAMS ((bfd *, char *));
-static int read_1_signed_byte PARAMS ((bfd *, char *));
-static unsigned int read_2_bytes PARAMS ((bfd *, char *));
-static unsigned int read_4_bytes PARAMS ((bfd *, char *));
-static bfd_vma read_8_bytes PARAMS ((bfd *, char *));
-static char *read_n_bytes PARAMS ((bfd *, char *, unsigned int));
-static char *read_string PARAMS ((bfd *, char *, unsigned int *));
-static char *read_indirect_string PARAMS ((struct comp_unit *, char *, unsigned int *));
-static unsigned int read_unsigned_leb128
- PARAMS ((bfd *, char *, unsigned int *));
-static int read_signed_leb128
- PARAMS ((bfd *, char *, unsigned int *));
-static bfd_vma read_address PARAMS ((struct comp_unit *, char *));
-static struct abbrev_info *lookup_abbrev
- PARAMS ((unsigned int, struct abbrev_info **));
-static struct abbrev_info **read_abbrevs
- PARAMS ((bfd *, bfd_vma, struct dwarf2_debug *));
-static char *read_attribute
- PARAMS ((struct attribute *, struct attr_abbrev *,
- struct comp_unit *, char *));
-static char *read_attribute_value
- PARAMS ((struct attribute *, unsigned,
- struct comp_unit *, char *));
-static void add_line_info
- PARAMS ((struct line_info_table *, bfd_vma, char *,
- unsigned int, unsigned int, int));
-static char *concat_filename PARAMS ((struct line_info_table *, unsigned int));
-static void arange_add PARAMS ((struct comp_unit *, bfd_vma, bfd_vma));
-static struct line_info_table *decode_line_info
- PARAMS ((struct comp_unit *, struct dwarf2_debug *));
-static bfd_boolean lookup_address_in_line_info_table
- PARAMS ((struct line_info_table *, bfd_vma, struct funcinfo *,
- const char **, unsigned int *));
-static bfd_boolean lookup_address_in_function_table
- PARAMS ((struct funcinfo *, bfd_vma, struct funcinfo **, const char **));
-static bfd_boolean scan_unit_for_functions PARAMS ((struct comp_unit *));
-static struct comp_unit *parse_comp_unit
- PARAMS ((bfd *, struct dwarf2_debug *, bfd_vma, unsigned int));
-static bfd_boolean comp_unit_contains_address
- PARAMS ((struct comp_unit *, bfd_vma));
-static bfd_boolean comp_unit_find_nearest_line
- PARAMS ((struct comp_unit *, bfd_vma, const char **, const char **,
- unsigned int *, struct dwarf2_debug *));
-static asection *find_debug_info PARAMS ((bfd *, asection *));
-
/* VERBATIM
The following function up to the END VERBATIM mark are
copied directly from dwarf2read.c. */
@@ -252,74 +207,39 @@ static asection *find_debug_info PARAMS ((bfd *, asection *));
/* Read dwarf information from a buffer. */
static unsigned int
-read_1_byte (abfd, buf)
- bfd *abfd ATTRIBUTE_UNUSED;
- char *buf;
+read_1_byte (bfd *abfd ATTRIBUTE_UNUSED, char *buf)
{
- return bfd_get_8 (abfd, (bfd_byte *) buf);
+ return bfd_get_8 (abfd, buf);
}
static int
-read_1_signed_byte (abfd, buf)
- bfd *abfd ATTRIBUTE_UNUSED;
- char *buf;
+read_1_signed_byte (bfd *abfd ATTRIBUTE_UNUSED, char *buf)
{
- return bfd_get_signed_8 (abfd, (bfd_byte *) buf);
+ return bfd_get_signed_8 (abfd, buf);
}
static unsigned int
-read_2_bytes (abfd, buf)
- bfd *abfd;
- char *buf;
-{
- return bfd_get_16 (abfd, (bfd_byte *) buf);
-}
-
-#if 0 /* This is not used. */
-
-static int
-read_2_signed_bytes (abfd, buf)
- bfd *abfd;
- char *buf;
+read_2_bytes (bfd *abfd, char *buf)
{
- return bfd_get_signed_16 (abfd, (bfd_byte *) buf);
+ return bfd_get_16 (abfd, buf);
}
-#endif
-
static unsigned int
-read_4_bytes (abfd, buf)
- bfd *abfd;
- char *buf;
+read_4_bytes (bfd *abfd, char *buf)
{
- return bfd_get_32 (abfd, (bfd_byte *) buf);
+ return bfd_get_32 (abfd, buf);
}
-#if 0 /* This is not used. */
-
-static int
-read_4_signed_bytes (abfd, buf)
- bfd *abfd;
- char *buf;
-{
- return bfd_get_signed_32 (abfd, (bfd_byte *) buf);
-}
-
-#endif
-
static bfd_vma
-read_8_bytes (abfd, buf)
- bfd *abfd;
- char *buf;
+read_8_bytes (bfd *abfd, char *buf)
{
- return bfd_get_64 (abfd, (bfd_byte *) buf);
+ return bfd_get_64 (abfd, buf);
}
static char *
-read_n_bytes (abfd, buf, size)
- bfd *abfd ATTRIBUTE_UNUSED;
- char *buf;
- unsigned int size ATTRIBUTE_UNUSED;
+read_n_bytes (bfd *abfd ATTRIBUTE_UNUSED,
+ char *buf,
+ unsigned int size ATTRIBUTE_UNUSED)
{
/* If the size of a host char is 8 bits, we can return a pointer
to the buffer, otherwise we have to copy the data to a buffer
@@ -328,10 +248,9 @@ read_n_bytes (abfd, buf, size)
}
static char *
-read_string (abfd, buf, bytes_read_ptr)
- bfd *abfd ATTRIBUTE_UNUSED;
- char *buf;
- unsigned int *bytes_read_ptr;
+read_string (bfd *abfd ATTRIBUTE_UNUSED,
+ char *buf,
+ unsigned int *bytes_read_ptr)
{
/* Return a pointer to the embedded string. */
if (*buf == '\0')
@@ -345,10 +264,9 @@ read_string (abfd, buf, bytes_read_ptr)
}
static char *
-read_indirect_string (unit, buf, bytes_read_ptr)
- struct comp_unit* unit;
- char *buf;
- unsigned int *bytes_read_ptr;
+read_indirect_string (struct comp_unit* unit,
+ char *buf,
+ unsigned int *bytes_read_ptr)
{
bfd_vma offset;
struct dwarf2_debug *stash = unit->stash;
@@ -374,12 +292,12 @@ read_indirect_string (unit, buf, bytes_read_ptr)
}
stash->dwarf_str_size = msec->_raw_size;
- stash->dwarf_str_buffer = (char*) bfd_alloc (abfd, msec->_raw_size);
+ stash->dwarf_str_buffer = bfd_alloc (abfd, msec->_raw_size);
if (! stash->dwarf_abbrev_buffer)
return NULL;
if (! bfd_get_section_contents (abfd, msec, stash->dwarf_str_buffer,
- (bfd_vma) 0, msec->_raw_size))
+ 0, msec->_raw_size))
return NULL;
}
@@ -398,10 +316,9 @@ read_indirect_string (unit, buf, bytes_read_ptr)
}
static unsigned int
-read_unsigned_leb128 (abfd, buf, bytes_read_ptr)
- bfd *abfd ATTRIBUTE_UNUSED;
- char *buf;
- unsigned int *bytes_read_ptr;
+read_unsigned_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
+ char *buf,
+ unsigned int *bytes_read_ptr)
{
unsigned int result;
unsigned int num_read;
@@ -414,7 +331,7 @@ read_unsigned_leb128 (abfd, buf, bytes_read_ptr)
do
{
- byte = bfd_get_8 (abfd, (bfd_byte *) buf);
+ byte = bfd_get_8 (abfd, buf);
buf ++;
num_read ++;
result |= ((byte & 0x7f) << shift);
@@ -428,10 +345,9 @@ read_unsigned_leb128 (abfd, buf, bytes_read_ptr)
}
static int
-read_signed_leb128 (abfd, buf, bytes_read_ptr)
- bfd *abfd ATTRIBUTE_UNUSED;
- char *buf;
- unsigned int * bytes_read_ptr;
+read_signed_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
+ char *buf,
+ unsigned int * bytes_read_ptr)
{
int result;
int shift;
@@ -444,7 +360,7 @@ read_signed_leb128 (abfd, buf, bytes_read_ptr)
do
{
- byte = bfd_get_8 (abfd, (bfd_byte *) buf);
+ byte = bfd_get_8 (abfd, buf);
buf ++;
num_read ++;
result |= ((byte & 0x7f) << shift);
@@ -463,18 +379,16 @@ read_signed_leb128 (abfd, buf, bytes_read_ptr)
/* END VERBATIM */
static bfd_vma
-read_address (unit, buf)
- struct comp_unit* unit;
- char *buf;
+read_address (struct comp_unit *unit, char *buf)
{
switch (unit->addr_size)
{
case 8:
- return bfd_get_64 (unit->abfd, (bfd_byte *) buf);
+ return bfd_get_64 (unit->abfd, buf);
case 4:
- return bfd_get_32 (unit->abfd, (bfd_byte *) buf);
+ return bfd_get_32 (unit->abfd, buf);
case 2:
- return bfd_get_16 (unit->abfd, (bfd_byte *) buf);
+ return bfd_get_16 (unit->abfd, buf);
default:
abort ();
}
@@ -483,9 +397,7 @@ read_address (unit, buf)
/* Lookup an abbrev_info structure in the abbrev hash table. */
static struct abbrev_info *
-lookup_abbrev (number,abbrevs)
- unsigned int number;
- struct abbrev_info **abbrevs;
+lookup_abbrev (unsigned int number, struct abbrev_info **abbrevs)
{
unsigned int hash_number;
struct abbrev_info *abbrev;
@@ -510,10 +422,7 @@ lookup_abbrev (number,abbrevs)
in a hash table. */
static struct abbrev_info**
-read_abbrevs (abfd, offset, stash)
- bfd * abfd;
- bfd_vma offset;
- struct dwarf2_debug *stash;
+read_abbrevs (bfd *abfd, bfd_vma offset, struct dwarf2_debug *stash)
{
struct abbrev_info **abbrevs;
char *abbrev_ptr;
@@ -551,7 +460,7 @@ read_abbrevs (abfd, offset, stash)
}
amt = sizeof (struct abbrev_info*) * ABBREV_HASH_SIZE;
- abbrevs = (struct abbrev_info**) bfd_zalloc (abfd, amt);
+ abbrevs = bfd_zalloc (abfd, amt);
abbrev_ptr = stash->dwarf_abbrev_buffer + offset;
abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
@@ -561,7 +470,7 @@ read_abbrevs (abfd, offset, stash)
while (abbrev_number)
{
amt = sizeof (struct abbrev_info);
- cur_abbrev = (struct abbrev_info *) bfd_zalloc (abfd, amt);
+ cur_abbrev = bfd_zalloc (abfd, amt);
/* Read in abbrev header. */
cur_abbrev->number = abbrev_number;
@@ -583,8 +492,7 @@ read_abbrevs (abfd, offset, stash)
{
amt = cur_abbrev->num_attrs + ATTR_ALLOC_CHUNK;
amt *= sizeof (struct attr_abbrev);
- cur_abbrev->attrs = ((struct attr_abbrev *)
- bfd_realloc (cur_abbrev->attrs, amt));
+ cur_abbrev->attrs = bfd_realloc (cur_abbrev->attrs, amt);
if (! cur_abbrev->attrs)
return 0;
}
@@ -625,11 +533,10 @@ read_abbrevs (abfd, offset, stash)
/* Read an attribute value described by an attribute form. */
static char *
-read_attribute_value (attr, form, unit, info_ptr)
- struct attribute *attr;
- unsigned form;
- struct comp_unit *unit;
- char *info_ptr;
+read_attribute_value (struct attribute *attr,
+ unsigned form,
+ struct comp_unit *unit,
+ char *info_ptr)
{
bfd *abfd = unit->abfd;
unsigned int bytes_read;
@@ -648,7 +555,7 @@ read_attribute_value (attr, form, unit, info_ptr)
break;
case DW_FORM_block2:
amt = sizeof (struct dwarf_block);
- blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
+ blk = bfd_alloc (abfd, amt);
blk->size = read_2_bytes (abfd, info_ptr);
info_ptr += 2;
blk->data = read_n_bytes (abfd, info_ptr, blk->size);
@@ -657,7 +564,7 @@ read_attribute_value (attr, form, unit, info_ptr)
break;
case DW_FORM_block4:
amt = sizeof (struct dwarf_block);
- blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
+ blk = bfd_alloc (abfd, amt);
blk->size = read_4_bytes (abfd, info_ptr);
info_ptr += 4;
blk->data = read_n_bytes (abfd, info_ptr, blk->size);
@@ -686,7 +593,7 @@ read_attribute_value (attr, form, unit, info_ptr)
break;
case DW_FORM_block:
amt = sizeof (struct dwarf_block);
- blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
+ blk = bfd_alloc (abfd, amt);
blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
info_ptr += bytes_read;
blk->data = read_n_bytes (abfd, info_ptr, blk->size);
@@ -695,7 +602,7 @@ read_attribute_value (attr, form, unit, info_ptr)
break;
case DW_FORM_block1:
amt = sizeof (struct dwarf_block);
- blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
+ blk = bfd_alloc (abfd, amt);
blk->size = read_1_byte (abfd, info_ptr);
info_ptr += 1;
blk->data = read_n_bytes (abfd, info_ptr, blk->size);
@@ -754,11 +661,10 @@ read_attribute_value (attr, form, unit, info_ptr)
/* Read an attribute described by an abbreviated attribute. */
static char *
-read_attribute (attr, abbrev, unit, info_ptr)
- struct attribute *attr;
- struct attr_abbrev *abbrev;
- struct comp_unit *unit;
- char *info_ptr;
+read_attribute (struct attribute *attr,
+ struct attr_abbrev *abbrev,
+ struct comp_unit *unit,
+ char *info_ptr)
{
attr->name = abbrev->name;
info_ptr = read_attribute_value (attr, abbrev->form, unit, info_ptr);
@@ -814,16 +720,15 @@ struct funcinfo
line_info->prev_line always accesses an equal or smaller VMA. */
static void
-add_line_info (table, address, filename, line, column, end_sequence)
- struct line_info_table* table;
- bfd_vma address;
- char* filename;
- unsigned int line;
- unsigned int column;
- int end_sequence;
+add_line_info (struct line_info_table *table,
+ bfd_vma address,
+ char *filename,
+ unsigned int line,
+ unsigned int column,
+ int end_sequence)
{
bfd_size_type amt = sizeof (struct line_info);
- struct line_info* info = (struct line_info*) bfd_alloc (table->abfd, amt);
+ struct line_info* info = bfd_alloc (table->abfd, amt);
/* Find the correct location for 'info'. Normally we will receive
new line_info data 1) in order and 2) with increasing VMAs.
@@ -912,9 +817,7 @@ add_line_info (table, address, filename, line, column, end_sequence)
responsibility to free it. */
static char *
-concat_filename (table, file)
- struct line_info_table* table;
- unsigned int file;
+concat_filename (struct line_info_table *table, unsigned int file)
{
char* filename;
@@ -951,10 +854,7 @@ concat_filename (table, file)
}
static void
-arange_add (unit, low_pc, high_pc)
- struct comp_unit *unit;
- bfd_vma low_pc;
- bfd_vma high_pc;
+arange_add (struct comp_unit *unit, bfd_vma low_pc, bfd_vma high_pc)
{
struct arange *arange;
@@ -987,8 +887,7 @@ arange_add (unit, low_pc, high_pc)
}
/* Need to allocate a new arange and insert it into the arange list. */
- arange = (struct arange *)
- bfd_zalloc (unit->abfd, (bfd_size_type) sizeof (*arange));
+ arange = bfd_zalloc (unit->abfd, sizeof (*arange));
arange->low = low_pc;
arange->high = high_pc;
@@ -999,9 +898,7 @@ arange_add (unit, low_pc, high_pc)
/* Decode the line number information for UNIT. */
static struct line_info_table*
-decode_line_info (unit, stash)
- struct comp_unit *unit;
- struct dwarf2_debug *stash;
+decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash)
{
bfd *abfd = unit->abfd;
struct line_info_table* table;
@@ -1044,7 +941,7 @@ decode_line_info (unit, stash)
}
amt = sizeof (struct line_info_table);
- table = (struct line_info_table*) bfd_alloc (abfd, amt);
+ table = bfd_alloc (abfd, amt);
table->abfd = abfd;
table->comp_dir = unit->comp_dir;
@@ -1096,7 +993,7 @@ decode_line_info (unit, stash)
lh.opcode_base = read_1_byte (abfd, line_ptr);
line_ptr += 1;
amt = lh.opcode_base * sizeof (unsigned char);
- lh.standard_opcode_lengths = (unsigned char *) bfd_alloc (abfd, amt);
+ lh.standard_opcode_lengths = bfd_alloc (abfd, amt);
lh.standard_opcode_lengths[0] = 1;
@@ -1115,7 +1012,7 @@ decode_line_info (unit, stash)
{
amt = table->num_dirs + DIR_ALLOC_CHUNK;
amt *= sizeof (char *);
- table->dirs = (char **) bfd_realloc (table->dirs, amt);
+ table->dirs = bfd_realloc (table->dirs, amt);
if (! table->dirs)
return 0;
}
@@ -1134,7 +1031,7 @@ decode_line_info (unit, stash)
{
amt = table->num_files + FILE_ALLOC_CHUNK;
amt *= sizeof (struct fileinfo);
- table->files = (struct fileinfo *) bfd_realloc (table->files, amt);
+ table->files = bfd_realloc (table->files, amt);
if (! table->files)
return 0;
}
@@ -1225,8 +1122,7 @@ decode_line_info (unit, stash)
{
amt = table->num_files + FILE_ALLOC_CHUNK;
amt *= sizeof (struct fileinfo);
- table->files =
- (struct fileinfo *) bfd_realloc (table->files, amt);
+ table->files = bfd_realloc (table->files, amt);
if (! table->files)
return 0;
}
@@ -1322,13 +1218,11 @@ decode_line_info (unit, stash)
LINENUMBER_PTR, are pointers to the objects to be filled in. */
static bfd_boolean
-lookup_address_in_line_info_table (table, addr, function, filename_ptr,
- linenumber_ptr)
- struct line_info_table* table;
- bfd_vma addr;
- struct funcinfo *function;
- const char **filename_ptr;
- unsigned int *linenumber_ptr;
+lookup_address_in_line_info_table (struct line_info_table *table,
+ bfd_vma addr,
+ struct funcinfo *function,
+ const char **filename_ptr,
+ unsigned int *linenumber_ptr)
{
/* Note: table->last_line should be a descendingly sorted list. */
struct line_info* next_line = table->last_line;
@@ -1401,12 +1295,10 @@ lookup_address_in_line_info_table (table, addr, function, filename_ptr,
/* If ADDR is within TABLE, set FUNCTIONNAME_PTR, and return TRUE. */
static bfd_boolean
-lookup_address_in_function_table (table, addr, function_ptr,
- functionname_ptr)
- struct funcinfo* table;
- bfd_vma addr;
- struct funcinfo** function_ptr;
- const char **functionname_ptr;
+lookup_address_in_function_table (struct funcinfo *table,
+ bfd_vma addr,
+ struct funcinfo **function_ptr,
+ const char **functionname_ptr)
{
struct funcinfo* each_func;
@@ -1431,8 +1323,7 @@ lookup_address_in_function_table (table, addr, function_ptr,
to the function table. */
static bfd_boolean
-scan_unit_for_functions (unit)
- struct comp_unit *unit;
+scan_unit_for_functions (struct comp_unit *unit)
{
bfd *abfd = unit->abfd;
char *info_ptr = unit->first_child_die_ptr;
@@ -1467,7 +1358,7 @@ scan_unit_for_functions (unit)
if (abbrev->tag == DW_TAG_subprogram)
{
bfd_size_type amt = sizeof (struct funcinfo);
- func = (struct funcinfo *) bfd_zalloc (abfd, amt);
+ func = bfd_zalloc (abfd, amt);
func->prev_func = unit->function_table;
unit->function_table = func;
}
@@ -1538,11 +1429,10 @@ scan_unit_for_functions (unit)
to get to the line number information for the compilation unit. */
static struct comp_unit *
-parse_comp_unit (abfd, stash, unit_length, offset_size)
- bfd* abfd;
- struct dwarf2_debug *stash;
- bfd_vma unit_length;
- unsigned int offset_size;
+parse_comp_unit (bfd *abfd,
+ struct dwarf2_debug *stash,
+ bfd_vma unit_length,
+ unsigned int offset_size)
{
struct comp_unit* unit;
unsigned int version;
@@ -1615,7 +1505,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size)
}
amt = sizeof (struct comp_unit);
- unit = (struct comp_unit*) bfd_zalloc (abfd, amt);
+ unit = bfd_zalloc (abfd, amt);
unit->abfd = abfd;
unit->addr_size = addr_size;
unit->offset_size = offset_size;
@@ -1655,7 +1545,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size)
{
/* Irix 6.2 native cc prepends <machine>.: to the compilation
directory, get rid of it. */
- char *cp = (char*) strchr (comp_dir, ':');
+ char *cp = strchr (comp_dir, ':');
if (cp && cp != comp_dir && cp[-1] == '.' && cp[1] == '/')
comp_dir = cp + 1;
@@ -1676,9 +1566,7 @@ parse_comp_unit (abfd, stash, unit_length, offset_size)
/* Return TRUE if UNIT contains the address given by ADDR. */
static bfd_boolean
-comp_unit_contains_address (unit, addr)
- struct comp_unit* unit;
- bfd_vma addr;
+comp_unit_contains_address (struct comp_unit *unit, bfd_vma addr)
{
struct arange *arange;
@@ -1706,14 +1594,12 @@ comp_unit_contains_address (unit, addr)
FALSE otherwise. */
static bfd_boolean
-comp_unit_find_nearest_line (unit, addr, filename_ptr, functionname_ptr,
- linenumber_ptr, stash)
- struct comp_unit* unit;
- bfd_vma addr;
- const char **filename_ptr;
- const char **functionname_ptr;
- unsigned int *linenumber_ptr;
- struct dwarf2_debug *stash;
+comp_unit_find_nearest_line (struct comp_unit *unit,
+ bfd_vma addr,
+ const char **filename_ptr,
+ const char **functionname_ptr,
+ unsigned int *linenumber_ptr,
+ struct dwarf2_debug *stash)
{
bfd_boolean line_p;
bfd_boolean func_p;
@@ -1768,9 +1654,7 @@ comp_unit_find_nearest_line (unit, addr, filename_ptr, functionname_ptr,
#define GNU_LINKONCE_INFO ".gnu.linkonce.wi."
static asection *
-find_debug_info (abfd, after_sec)
- bfd * abfd;
- asection * after_sec;
+find_debug_info (bfd *abfd, asection *after_sec)
{
asection * msec;
@@ -1800,18 +1684,15 @@ find_debug_info (abfd, after_sec)
used. */
bfd_boolean
-_bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
- filename_ptr, functionname_ptr,
- linenumber_ptr, addr_size, pinfo)
- bfd *abfd;
- asection *section;
- asymbol **symbols;
- bfd_vma offset;
- const char **filename_ptr;
- const char **functionname_ptr;
- unsigned int *linenumber_ptr;
- unsigned int addr_size;
- PTR *pinfo;
+_bfd_dwarf2_find_nearest_line (bfd *abfd,
+ asection *section,
+ asymbol **symbols,
+ bfd_vma offset,
+ const char **filename_ptr,
+ const char **functionname_ptr,
+ unsigned int *linenumber_ptr,
+ unsigned int addr_size,
+ void **pinfo)
{
/* Read each compilation unit from the section .debug_info, and check
to see if it contains the address we are searching for. If yes,
@@ -1821,7 +1702,7 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
We keep a list of all the previously read compilation units, and
a pointer to the next un-read compilation unit. Check the
previously read units before reading more. */
- struct dwarf2_debug *stash = (struct dwarf2_debug *) *pinfo;
+ struct dwarf2_debug *stash = *pinfo;
/* What address are we looking for? */
bfd_vma addr = offset + section->vma;
@@ -1845,11 +1726,11 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
asection *msec;
bfd_size_type amt = sizeof (struct dwarf2_debug);
- stash = (struct dwarf2_debug*) bfd_zalloc (abfd, amt);
+ stash = bfd_zalloc (abfd, amt);
if (! stash)
return FALSE;
- *pinfo = (PTR) stash;
+ *pinfo = stash;
msec = find_debug_info (abfd, NULL);
if (! msec)
@@ -1866,7 +1747,7 @@ _bfd_dwarf2_find_nearest_line (abfd, section, symbols, offset,
for (total_size = 0; msec; msec = find_debug_info (abfd, msec))
total_size += msec->_raw_size;
- stash->info_ptr = (char *) bfd_alloc (abfd, total_size);
+ stash->info_ptr = bfd_alloc (abfd, total_size);
if (stash->info_ptr == NULL)
return FALSE;
diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h
index d42eb27f5a5..7c284c17474 100644
--- a/bfd/elf32-arm.h
+++ b/bfd/elf32-arm.h
@@ -205,8 +205,6 @@ struct elf32_arm_relocs_copied
asection * section;
/* Number of relocs copied in this section. */
bfd_size_type count;
- /* Number of relocs copied in this section. */
- bfd_size_type pc_count;
};
/* Arm ELF linker hash entry. */
@@ -383,7 +381,6 @@ elf32_arm_copy_indirect_symbol (const struct elf_backend_data *bed,
for (q = edir->relocs_copied; q != NULL; q = q->next)
if (q->section == p->section)
{
- q->pc_count += p->pc_count;
q->count += p->count;
*pp = p->next;
break;
@@ -1307,21 +1304,44 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
#ifndef OLD_ARM_ABI
case R_ARM_XPC25:
#endif
+ case R_ARM_PLT32:
/* r_symndx will be zero only for relocs against symbols
from removed linkonce sections, or sections discarded by
a linker script. */
if (r_symndx == 0)
return bfd_reloc_ok;
+ /* Handle relocations which should use the PLT entry. ABS32/REL32
+ will use the symbol's value, which may point to a PLT entry, but we
+ don't need to handle that here. If we created a PLT entry, all
+ branches in this object should go to it. */
+ if ((r_type != R_ARM_ABS32 && r_type != R_ARM_REL32)
+ && h != NULL
+ && splt != NULL
+ && h->plt.offset != (bfd_vma) -1)
+ {
+ /* If we've created a .plt section, and assigned a PLT entry to
+ this function, it should not be known to bind locally. If
+ it were, we would have cleared the PLT entry. */
+ BFD_ASSERT (!SYMBOL_CALLS_LOCAL (info, h));
+
+ value = (splt->output_section->vma
+ + splt->output_offset
+ + h->plt.offset);
+ return _bfd_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel->r_offset, value,
+ (bfd_vma) 0);
+ }
+
/* When generating a shared object, these relocations are copied
into the output file to be resolved at run time. */
- if ((info->shared
- && (input_section->flags & SEC_ALLOC)
- && (h == NULL
- || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
- || h->root.type != bfd_link_hash_undefweak)
- && (r_type != R_ARM_PC24
- || !SYMBOL_CALLS_LOCAL (info, h))))
+ if (info->shared
+ && (input_section->flags & SEC_ALLOC)
+ && (h == NULL
+ || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+ || h->root.type != bfd_link_hash_undefweak)
+ && r_type != R_ARM_PC24
+ && r_type != R_ARM_PLT32)
{
Elf_Internal_Rela outrel;
bfd_byte *loc;
@@ -1364,8 +1384,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
memset (&outrel, 0, sizeof outrel);
else if (h != NULL
&& h->dynindx != -1
- && (r_type == R_ARM_PC24
- || !info->shared
+ && (!info->shared
|| !info->symbolic
|| (h->elf_link_hash_flags
& ELF_LINK_HASH_DEF_REGULAR) == 0))
@@ -1397,6 +1416,7 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
case R_ARM_XPC25: /* Arm BLX instruction. */
#endif
case R_ARM_PC24: /* Arm B/BL instruction */
+ case R_ARM_PLT32:
#ifndef OLD_ARM_ABI
if (r_type == R_ARM_XPC25)
{
@@ -1869,37 +1889,6 @@ elf32_arm_final_link_relocate (howto, input_bfd, output_bfd,
contents, rel->r_offset, value,
(bfd_vma) 0);
- case R_ARM_PLT32:
- /* Relocation is to the entry for this symbol in the
- procedure linkage table. */
-
- /* Resolve a PLT32 reloc against a local symbol directly,
- without using the procedure linkage table. */
- if (h == NULL)
- return _bfd_final_link_relocate (howto, input_bfd, input_section,
- contents, rel->r_offset, value,
- (bfd_vma) 0);
-
- if (h->plt.offset == (bfd_vma) -1
- || globals->splt == NULL)
- /* We didn't make a PLT entry for this symbol. This
- happens when statically linking PIC code, or when
- using -Bsymbolic. */
- return _bfd_final_link_relocate (howto, input_bfd, input_section,
- contents, rel->r_offset, value,
- (bfd_vma) 0);
-
- BFD_ASSERT(splt != NULL);
- if (splt == NULL)
- return bfd_reloc_notsupported;
-
- value = (splt->output_section->vma
- + splt->output_offset
- + h->plt.offset);
- return _bfd_final_link_relocate (howto, input_bfd, input_section,
- contents, rel->r_offset, value,
- (bfd_vma) 0);
-
case R_ARM_SBREL32:
return bfd_reloc_notsupported;
@@ -2808,6 +2797,7 @@ elf32_arm_gc_sweep_hook (abfd, info, sec, relocs)
case R_ARM_ABS32:
case R_ARM_REL32:
case R_ARM_PC24:
+ case R_ARM_PLT32:
r_symndx = ELF32_R_SYM (rel->r_info);
if (r_symndx >= symtab_hdr->sh_info)
{
@@ -2817,31 +2807,24 @@ elf32_arm_gc_sweep_hook (abfd, info, sec, relocs)
h = sym_hashes[r_symndx - symtab_hdr->sh_info];
- if (!info->shared && h->plt.refcount > 0)
+ if (h->plt.refcount > 0)
h->plt.refcount -= 1;
- eh = (struct elf32_arm_link_hash_entry *) h;
-
- for (pp = &eh->relocs_copied; (p = *pp) != NULL; pp = &p->next)
- if (p->section == sec)
- {
- if (ELF32_R_TYPE (rel->r_info) == R_ARM_PC24)
- p->pc_count -= 1;
- p->count -= 1;
- if (p->count == 0)
- *pp = p->next;
- break;
- }
- }
- break;
+ if (ELF32_R_TYPE (rel->r_info) == R_ARM_ABS32
+ || ELF32_R_TYPE (rel->r_info) == R_ARM_REL32)
+ {
+ eh = (struct elf32_arm_link_hash_entry *) h;
- case R_ARM_PLT32:
- r_symndx = ELF32_R_SYM (rel->r_info);
- if (r_symndx >= symtab_hdr->sh_info)
- {
- h = sym_hashes[r_symndx - symtab_hdr->sh_info];
- if (h->plt.refcount > 0)
- h->plt.refcount -= 1;
+ for (pp = &eh->relocs_copied; (p = *pp) != NULL;
+ pp = &p->next)
+ if (p->section == sec)
+ {
+ p->count -= 1;
+ if (p->count == 0)
+ *pp = p->next;
+ break;
+ }
+ }
}
break;
@@ -2902,23 +2885,6 @@ elf32_arm_check_relocs (abfd, info, sec, relocs)
switch (ELF32_R_TYPE (rel->r_info))
{
- case R_ARM_PLT32:
- /* This symbol requires a procedure linkage table entry. We
- actually build the entry in adjust_dynamic_symbol,
- because this might be a case of linking PIC code which is
- never referenced by a dynamic object, in which case we
- don't need to generate a procedure linkage table entry
- after all. */
-
- /* If this is a local symbol, we resolve it directly without
- creating a procedure linkage table entry. */
- if (h == NULL)
- continue;
-
- h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
- h->plt.refcount++;
- break;
-
case R_ARM_GOT32:
/* This symbol requires a global offset table entry. */
if (h != NULL)
@@ -2961,7 +2927,8 @@ elf32_arm_check_relocs (abfd, info, sec, relocs)
case R_ARM_ABS32:
case R_ARM_REL32:
case R_ARM_PC24:
- if (h != NULL && !info->shared)
+ case R_ARM_PLT32:
+ if (h != NULL)
{
/* If this reloc is in a read-only section, we might
need a copy reloc. We can't check reliably at this
@@ -2969,10 +2936,19 @@ elf32_arm_check_relocs (abfd, info, sec, relocs)
sections have not yet been mapped to output sections.
Tentatively set the flag for now, and correct in
adjust_dynamic_symbol. */
- h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
-
+ if (!info->shared)
+ h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
+
/* We may need a .plt entry if the function this reloc
- refers to is in a shared lib. */
+ refers to is in a different object. We can't tell for
+ sure yet, because something later might force the
+ symbol local. */
+ if (ELF32_R_TYPE (rel->r_info) == R_ARM_PC24
+ || ELF32_R_TYPE (rel->r_info) == R_ARM_PLT32)
+ h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
+
+ /* If we create a PLT entry, this relocation will reference
+ it, even if it's an ABS32 relocation. */
h->plt.refcount += 1;
}
@@ -2990,7 +2966,8 @@ elf32_arm_check_relocs (abfd, info, sec, relocs)
relocs_copied field of the hash table entry. */
if (info->shared
&& (sec->flags & SEC_ALLOC) != 0
- && (ELF32_R_TYPE (rel->r_info) != R_ARM_PC24
+ && ((ELF32_R_TYPE (rel->r_info) != R_ARM_PC24
+ && ELF32_R_TYPE (rel->r_info) != R_ARM_PLT32)
|| (h != NULL
&& (! info->symbolic
|| (h->elf_link_hash_flags
@@ -3068,12 +3045,11 @@ elf32_arm_check_relocs (abfd, info, sec, relocs)
*head = p;
p->section = sec;
p->count = 0;
- p->pc_count = 0;
}
- p->count += 1;
- if (ELF32_R_TYPE (rel->r_info) == R_ARM_PC24)
- p->pc_count += 1;
+ if (ELF32_R_TYPE (rel->r_info) == R_ARM_ABS32
+ || ELF32_R_TYPE (rel->r_info) == R_ARM_REL32)
+ p->count += 1;
}
break;
@@ -3348,7 +3324,7 @@ allocate_dynrelocs (h, inf)
}
if (info->shared
- || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info, h))
+ || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
{
asection *s = htab->splt;
@@ -3432,29 +3408,8 @@ allocate_dynrelocs (h, inf)
if (info->shared)
{
- /* The only reloc that uses pc_count is R_ARM_PC24, which will
- appear on a call or on something like ".long foo - .". We
- want calls to protected symbols to resolve directly to the
- function rather than going via the plt. If people want
- function pointer comparisons to work as expected then they
- should avoid writing assembly like ".long foo - .". */
- if (SYMBOL_CALLS_LOCAL (info, h))
- {
- struct elf32_arm_relocs_copied **pp;
-
- for (pp = &eh->relocs_copied; (p = *pp) != NULL; )
- {
- p->count -= p->pc_count;
- p->pc_count = 0;
- if (p->count == 0)
- *pp = p->next;
- else
- pp = &p->next;
- }
- }
-
- /* Also discard relocs on undefined weak syms with non-default
- visibility. */
+ /* Discard relocs on undefined weak syms with non-default
+ visibility. */
if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
&& h->root.type == bfd_link_hash_undefweak)
eh->relocs_copied = NULL;
diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c
index 2c634740668..e2a51f64181 100644
--- a/bfd/elf32-cris.c
+++ b/bfd/elf32-cris.c
@@ -1770,26 +1770,27 @@ cris_elf_gc_sweep_hook (abfd, info, sec, relocs)
struct elf_link_hash_entry **sym_hashes;
bfd_signed_vma *local_got_refcounts;
const Elf_Internal_Rela *rel, *relend;
- unsigned long r_symndx;
- struct elf_link_hash_entry *h;
bfd *dynobj;
asection *sgot;
asection *srelgot;
- symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
- sym_hashes = elf_sym_hashes (abfd);
- local_got_refcounts = elf_local_got_refcounts (abfd);
-
dynobj = elf_hash_table (info)->dynobj;
if (dynobj == NULL)
return TRUE;
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (abfd);
+ local_got_refcounts = elf_local_got_refcounts (abfd);
+
sgot = bfd_get_section_by_name (dynobj, ".got");
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
relend = relocs + sec->reloc_count;
for (rel = relocs; rel < relend; rel++)
{
+ unsigned long r_symndx;
+ struct elf_link_hash_entry *h;
+
switch (ELF32_R_TYPE (rel->r_info))
{
case R_CRIS_16_GOT:
diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
index 5157f407f40..016f233545d 100644
--- a/bfd/elf32-frv.c
+++ b/bfd/elf32-frv.c
@@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "libbfd.h"
#include "elf-bfd.h"
#include "elf/frv.h"
+#include "hashtab.h"
/* Forward declarations. */
static bfd_reloc_status_type elf32_frv_relocate_lo16
@@ -236,6 +237,229 @@ static reloc_howto_type elf32_frv_howto_table [] =
0xffff, /* src_mask */
0xffff, /* dst_mask */
FALSE), /* pcrel_offset */
+
+ /* A 12-bit signed operand with the GOT offset for the address of
+ the symbol. */
+ HOWTO (R_FRV_GOT12, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 12, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_GOT12", /* name */
+ FALSE, /* partial_inplace */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The upper 16 bits of the GOT offset for the address of the
+ symbol. */
+ HOWTO (R_FRV_GOTHI, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_GOTHI", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The lower 16 bits of the GOT offset for the address of the
+ symbol. */
+ HOWTO (R_FRV_GOTLO, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_GOTLO", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The 32-bit address of the canonical descriptor of a function. */
+ HOWTO (R_FRV_FUNCDESC, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 12-bit signed operand with the GOT offset for the address of
+ canonical descriptor of a function. */
+ HOWTO (R_FRV_FUNCDESC_GOT12, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 12, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC_GOT12", /* name */
+ FALSE, /* partial_inplace */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The upper 16 bits of the GOT offset for the address of the
+ canonical descriptor of a function. */
+ HOWTO (R_FRV_FUNCDESC_GOTHI, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC_GOTHI", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The lower 16 bits of the GOT offset for the address of the
+ canonical descriptor of a function. */
+ HOWTO (R_FRV_FUNCDESC_GOTLO, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC_GOTLO", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The 32-bit address of the canonical descriptor of a function. */
+ HOWTO (R_FRV_FUNCDESC_VALUE, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 64, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC_VALUE", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 12-bit signed operand with the GOT offset for the address of
+ canonical descriptor of a function. */
+ HOWTO (R_FRV_FUNCDESC_GOTOFF12, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 12, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC_GOTOFF12", /* name */
+ FALSE, /* partial_inplace */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The upper 16 bits of the GOT offset for the address of the
+ canonical descriptor of a function. */
+ HOWTO (R_FRV_FUNCDESC_GOTOFFHI, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC_GOTOFFHI", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The lower 16 bits of the GOT offset for the address of the
+ canonical descriptor of a function. */
+ HOWTO (R_FRV_FUNCDESC_GOTOFFLO, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC_GOTOFFLO", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 12-bit signed operand with the GOT offset for the address of
+ the symbol. */
+ HOWTO (R_FRV_GOTOFF12, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 12, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_GOTOFF12", /* name */
+ FALSE, /* partial_inplace */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The upper 16 bits of the GOT offset for the address of the
+ symbol. */
+ HOWTO (R_FRV_GOTOFFHI, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_GOTOFFHI", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* The lower 16 bits of the GOT offset for the address of the
+ symbol. */
+ HOWTO (R_FRV_GOTOFFLO, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_GOTOFFLO", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
};
/* GNU extension to record C++ vtable hierarchy. */
@@ -269,6 +493,54 @@ static reloc_howto_type elf32_frv_vtentry_howto =
0, /* src_mask */
0, /* dst_mask */
FALSE); /* pcrel_offset */
+
+/* The following 3 relocations are REL. The only difference to the
+ entries in the table above are that partial_inplace is TRUE. */
+static reloc_howto_type elf32_frv_rel_32_howto =
+ HOWTO (R_FRV_32, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_32", /* name */
+ TRUE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE); /* pcrel_offset */
+
+static reloc_howto_type elf32_frv_rel_funcdesc_howto =
+ HOWTO (R_FRV_FUNCDESC, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC", /* name */
+ TRUE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE); /* pcrel_offset */
+
+static reloc_howto_type elf32_frv_rel_funcdesc_value_howto =
+ HOWTO (R_FRV_FUNCDESC_VALUE, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 64, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_FRV_FUNCDESC_VALUE", /* name */
+ TRUE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE); /* pcrel_offset */
+
/* Map BFD reloc types to FRV ELF reloc types. */
#if 0
@@ -291,11 +563,743 @@ static const struct frv_reloc_map frv_reloc_map [] =
{ BFD_RELOC_FRV_GPREL32, R_FRV_GPREL32 },
{ BFD_RELOC_FRV_GPRELHI, R_FRV_GPRELHI },
{ BFD_RELOC_FRV_GPRELLO, R_FRV_GPRELLO },
+ { BFD_RELOC_FRV_GOT12, R_FRV_GOT12 },
+ { BFD_RELOC_FRV_GOTHI, R_FRV_GOTHI },
+ { BFD_RELOC_FRV_GOTLO, R_FRV_GOTLO },
+ { BFD_RELOC_FRV_FUNCDESC, R_FRV_FUNCDESC },
+ { BFD_RELOC_FRV_FUNCDESC_GOT12, R_FRV_FUNCDESC_GOT12 },
+ { BFD_RELOC_FRV_FUNCDESC_GOTHI, R_FRV_FUNCDESC_GOTHI },
+ { BFD_RELOC_FRV_FUNCDESC_GOTLO, R_FRV_FUNCDESC_GOTLO },
+ { BFD_RELOC_FRV_FUNCDESC_VALUE, R_FRV_FUNCDESC_VALUE },
+ { BFD_RELOC_FRV_FUNCDESC_GOTOFF12, R_FRV_FUNCDESC_GOTOFF12 },
+ { BFD_RELOC_FRV_FUNCDESC_GOTOFFHI, R_FRV_FUNCDESC_GOTOFFHI },
+ { BFD_RELOC_FRV_FUNCDESC_GOTOFFLO, R_FRV_FUNCDESC_GOTOFFLO },
+ { BFD_RELOC_FRV_GOTOFF12, R_FRV_GOTOFF12 },
+ { BFD_RELOC_FRV_GOTOFFHI, R_FRV_GOTOFFHI },
+ { BFD_RELOC_FRV_GOTOFFLO, R_FRV_GOTOFFLO },
{ BFD_RELOC_VTABLE_INHERIT, R_FRV_GNU_VTINHERIT },
{ BFD_RELOC_VTABLE_ENTRY, R_FRV_GNU_VTENTRY },
};
#endif
+
+/* An extension of the elf hash table data structure, containing some
+ additional FRV-specific data. */
+struct frv_elf_link_hash_table
+{
+ struct elf_link_hash_table elf;
+
+ /* A pointer to the .got section. */
+ asection *sgot;
+ /* A pointer to the .rel.got section. */
+ asection *sgotrel;
+ /* A pointer to the .rofixup section. */
+ asection *sgotfixup;
+ /* A pointer to the .plt section. */
+ asection *splt;
+ /* A pointer to the .rel.plt section. */
+ asection *spltrel;
+ /* GOT base offset. */
+ bfd_vma got0;
+ /* Location of the first non-lazy PLT entry, i.e., the number of
+ bytes taken by lazy PLT entries. */
+ bfd_vma plt0;
+ /* A hash table holding information about which symbols were
+ referenced with which PIC-related relocations. */
+ struct htab *relocs_info;
+};
+
+/* Get the FRV ELF linker hash table from a link_info structure. */
+
+#define frv_hash_table(info) \
+ ((struct frv_elf_link_hash_table *) ((info)->hash))
+
+#define frv_got_section(info) \
+ (frv_hash_table (info)->sgot)
+#define frv_gotrel_section(info) \
+ (frv_hash_table (info)->sgotrel)
+#define frv_gotfixup_section(info) \
+ (frv_hash_table (info)->sgotfixup)
+#define frv_plt_section(info) \
+ (frv_hash_table (info)->splt)
+#define frv_pltrel_section(info) \
+ (frv_hash_table (info)->spltrel)
+#define frv_relocs_info(info) \
+ (frv_hash_table (info)->relocs_info)
+#define frv_got_initial_offset(info) \
+ (frv_hash_table (info)->got0)
+#define frv_plt_initial_offset(info) \
+ (frv_hash_table (info)->plt0)
+
+/* Create an FRV ELF linker hash table. */
+
+static struct bfd_link_hash_table *
+frv_elf_link_hash_table_create (bfd *abfd)
+{
+ struct frv_elf_link_hash_table *ret;
+ bfd_size_type amt = sizeof (struct frv_elf_link_hash_table);
+
+ ret = bfd_zalloc (abfd, amt);
+ if (ret == NULL)
+ return NULL;
+
+ if (! _bfd_elf_link_hash_table_init (&ret->elf, abfd,
+ _bfd_elf_link_hash_newfunc))
+ {
+ free (ret);
+ return NULL;
+ }
+
+ return &ret->elf.root;
+}
+
+/* Decide whether a reference to a symbol can be resolved locally or
+ not. If the symbol is protected, we want the local address, but
+ its function descriptor must be assigned by the dynamic linker. */
+#define FRV_SYM_LOCAL(INFO, H) \
+ (_bfd_elf_symbol_refs_local_p ((H), (INFO), 1) \
+ || ! elf_hash_table (INFO)->dynamic_sections_created \
+ || (H)->root.type == bfd_link_hash_undefweak \
+ || (/* The condition below is an ugly hack to get .scommon data to
+ be regarded as local. For some reason the
+ ELF_LINK_HASH_DEF_REGULAR bit is not set on such common
+ symbols, and the SEC_IS_COMMON bit is not set any longer
+ when we need to perform this test. Hopefully this
+ approximation is good enough. */ \
+ ((H)->root.type == bfd_link_hash_defined \
+ || (H)->root.type == bfd_link_hash_defweak) \
+ && (H)->root.u.def.section->output_section \
+ && ((H)->root.u.def.section->flags & SEC_LINKER_CREATED)))
+#define FRV_FUNCDESC_LOCAL(INFO, H) \
+ ((H)->dynindx == -1 || ! elf_hash_table (INFO)->dynamic_sections_created)
+
+/* This structure collects information on what kind of GOT, PLT or
+ function descriptors are required by relocations that reference a
+ certain symbol. */
+struct frv_pic_relocs_info
+{
+ /* The index of the symbol, as stored in the relocation r_info, if
+ we have a local symbol; -1 otherwise. */
+ long symndx;
+ union
+ {
+ /* The input bfd in which the symbol is defined, if it's a local
+ symbol. */
+ bfd *abfd;
+ /* If symndx == -1, the hash table entry corresponding to a global
+ symbol (even if it turns out to bind locally, in which case it
+ should ideally be replaced with section's symndx + addend). */
+ struct elf_link_hash_entry *h;
+ } d;
+ /* The addend of the relocation that references the symbol. */
+ bfd_vma addend;
+
+ /* The fields above are used to identify an entry. The fields below
+ contain information on how an entry is used and, later on, which
+ locations it was assigned. */
+ /* The following 3 fields record whether the symbol+addend above was
+ ever referenced with a GOT relocation. The 12 suffix indicates a
+ GOT12 relocation; los is used for GOTLO relocations that are not
+ matched by a GOTHI relocation; hilo is used for GOTLO/GOTHI
+ pairs. */
+ unsigned got12:1;
+ unsigned gotlos:1;
+ unsigned gothilo:1;
+ /* Whether a FUNCDESC relocation references symbol+addend. */
+ unsigned fd:1;
+ /* Whether a FUNCDESC_GOT relocation references symbol+addend. */
+ unsigned fdgot12:1;
+ unsigned fdgotlos:1;
+ unsigned fdgothilo:1;
+ /* Whether a FUNCDESC_GOTOFF relocation references symbol+addend. */
+ unsigned fdgoff12:1;
+ unsigned fdgofflos:1;
+ unsigned fdgoffhilo:1;
+ /* Whether symbol+addend is referenced with GOTOFF12, GOTOFFLO or
+ GOTOFFHI relocations. The addend doesn't really matter, since we
+ envision that this will only be used to check whether the symbol
+ is mapped to the same segment as the got. */
+ unsigned gotoff:1;
+ /* Whether symbol+addend is referenced by a LABEL24 relocation. */
+ unsigned call:1;
+ /* Whether symbol+addend is referenced by a 32 or FUNCDESC_VALUE
+ relocation. */
+ unsigned sym:1;
+ /* Whether we need a PLT entry for a symbol. Should be implied by
+ something like:
+ (call && symndx == -1 && ! FRV_SYM_LOCAL (info, d.h)) */
+ unsigned plt:1;
+ /* Whether a function descriptor should be created in this link unit
+ for symbol+addend. Should be implied by something like:
+ (plt || fdgotoff12 || fdgotofflos || fdgotofflohi
+ || ((fd || fdgot12 || fdgotlos || fdgothilo)
+ && (symndx != -1 || FRV_FUNCDESC_LOCAL (info, d.h)))) */
+ unsigned privfd:1;
+ /* Whether a lazy PLT entry is needed for this symbol+addend.
+ Should be implied by something like:
+ (privfd && symndx == -1 && ! FRV_SYM_LOCAL (info, d.h)
+ && ! (info->flags & DF_BIND_NOW)) */
+ unsigned lazyplt:1;
+ /* Whether we've already emitted GOT relocations and PLT entries as
+ needed for this symbol. */
+ unsigned done:1;
+
+ /* The number of R_FRV_32, R_FRV_FUNCDESC and R_FRV_FUNCDESC_VALUE
+ relocations referencing the symbol. */
+ unsigned relocs32, relocsfd, relocsfdv;
+
+ /* The offsets of the GOT entries assigned to symbol+addend, to the
+ function descriptor's address, and to a function descriptor,
+ respectively. Should be zero if unassigned. The offsets are
+ counted from the value that will be assigned to the PIC register,
+ not from the beginning of the .got section. */
+ bfd_signed_vma got_entry, fdgot_entry, fd_entry;
+ /* The offsets of the PLT entries assigned to symbol+addend,
+ non-lazy and lazy, respectively. If unassigned, should be
+ (bfd_vma)-1. */
+ bfd_vma plt_entry, lzplt_entry;
+};
+
+/* Compute a hash with the key fields of an frv_pic_relocs_info entry. */
+static hashval_t
+frv_pic_relocs_info_hash (const void *entry_)
+{
+ const struct frv_pic_relocs_info *entry = entry_;
+
+ return (entry->symndx == -1
+ ? entry->d.h->root.root.hash
+ : entry->symndx + entry->d.abfd->id * 257) + entry->addend;
+}
+
+/* Test whether the key fields of two frv_pic_relocs_info entries are
+ identical. */
+static int
+frv_pic_relocs_info_eq (const void *entry1, const void *entry2)
+{
+ const struct frv_pic_relocs_info *e1 = entry1;
+ const struct frv_pic_relocs_info *e2 = entry2;
+
+ return e1->symndx == e2->symndx && e1->addend == e2->addend
+ && (e1->symndx == -1 ? e1->d.h == e2->d.h : e1->d.abfd == e2->d.abfd);
+}
+
+/* Find or create an entry in a hash table HT that matches the key
+ fields of the given ENTRY. If it's not found, memory for a new
+ entry is allocated in ABFD's obstack. */
+static struct frv_pic_relocs_info *
+frv_pic_relocs_info_find (struct htab *ht,
+ bfd *abfd,
+ const struct frv_pic_relocs_info *entry)
+{
+ struct frv_pic_relocs_info **loc =
+ (struct frv_pic_relocs_info **) htab_find_slot (ht, entry, INSERT);
+
+ if (*loc)
+ return *loc;
+
+ *loc = bfd_zalloc (abfd, sizeof (**loc));
+
+ if (! *loc)
+ return *loc;
+
+ (*loc)->symndx = entry->symndx;
+ (*loc)->d = entry->d;
+ (*loc)->addend = entry->addend;
+ (*loc)->plt_entry = (bfd_vma)-1;
+ (*loc)->lzplt_entry = (bfd_vma)-1;
+
+ return *loc;
+}
+
+/* Obtain the address of the entry in HT associated with H's symbol +
+ addend, creating a new entry if none existed. ABFD is only used
+ for memory allocation purposes. */
+inline static struct frv_pic_relocs_info *
+frv_pic_relocs_info_for_global (struct htab *ht,
+ bfd *abfd,
+ struct elf_link_hash_entry *h,
+ bfd_vma addend)
+{
+ struct frv_pic_relocs_info entry;
+
+ entry.symndx = -1;
+ entry.d.h = h;
+ entry.addend = addend;
+
+ return frv_pic_relocs_info_find (ht, abfd, &entry);
+}
+
+/* Obtain the address of the entry in HT associated with the SYMNDXth
+ local symbol of the input bfd ABFD, plus the addend, creating a new
+ entry if none existed. */
+inline static struct frv_pic_relocs_info *
+frv_pic_relocs_info_for_local (struct htab *ht,
+ bfd *abfd,
+ long symndx,
+ bfd_vma addend)
+{
+ struct frv_pic_relocs_info entry;
+
+ entry.symndx = symndx;
+ entry.d.abfd = abfd;
+ entry.addend = addend;
+
+ return frv_pic_relocs_info_find (ht, abfd, &entry);
+}
+
+/* Every block of 65535 lazy PLT entries shares a single call to the
+ resolver, inserted in the 32768th lazy PLT entry (i.e., entry #
+ 32767, counting from 0). All other lazy PLT entries branch to it
+ in a single instruction. */
+
+#define FRV_LZPLT_BLOCK_SIZE ((bfd_vma) 8 * 65535 + 4)
+#define FRV_LZPLT_RESOLV_LOC (8 * 32767)
+
+/* Add a dynamic relocation to the SRELOC section. */
+
+inline static bfd_vma
+_frv_add_dyn_reloc (bfd *output_bfd, asection *sreloc, bfd_vma offset,
+ int reloc_type, long dynindx, bfd_vma addend)
+{
+ Elf_Internal_Rela outrel;
+ bfd_vma reloc_offset;
+
+ outrel.r_offset = offset;
+ outrel.r_info = ELF32_R_INFO (dynindx, reloc_type);
+ outrel.r_addend = addend;
+
+ reloc_offset = sreloc->reloc_count * sizeof (Elf32_External_Rel);
+ BFD_ASSERT (reloc_offset < sreloc->_raw_size);
+ bfd_elf32_swap_reloc_out (output_bfd, &outrel,
+ sreloc->contents + reloc_offset);
+ sreloc->reloc_count++;
+
+ return reloc_offset;
+}
+
+/* Add a fixup to the ROFIXUP section. */
+
+static bfd_vma
+_frv_add_rofixup (bfd *output_bfd, asection *rofixup, bfd_vma offset)
+{
+ bfd_vma fixup_offset;
+
+ if (rofixup->flags & SEC_EXCLUDE)
+ return -1;
+
+ fixup_offset = rofixup->reloc_count * 4;
+ if (rofixup->contents)
+ {
+ BFD_ASSERT (fixup_offset < rofixup->_raw_size);
+ bfd_put_32 (output_bfd, offset, rofixup->contents + fixup_offset);
+ }
+ rofixup->reloc_count++;
+
+ return fixup_offset;
+}
+
+/* Find the segment number in which OSEC, and output section, is
+ located. */
+
+static unsigned
+_frv_osec_to_segment (bfd *output_bfd, asection *osec)
+{
+ struct elf_segment_map *m;
+ Elf_Internal_Phdr *p;
+
+ /* Find the segment that contains the output_section. */
+ for (m = elf_tdata (output_bfd)->segment_map,
+ p = elf_tdata (output_bfd)->phdr;
+ m != NULL;
+ m = m->next, p++)
+ {
+ int i;
+
+ for (i = m->count - 1; i >= 0; i--)
+ if (m->sections[i] == osec)
+ break;
+
+ if (i >= 0)
+ break;
+ }
+
+ return p - elf_tdata (output_bfd)->phdr;
+}
+
+inline static bfd_boolean
+_frv_osec_readonly_p (bfd *output_bfd, asection *osec)
+{
+ unsigned seg = _frv_osec_to_segment (output_bfd, osec);
+
+ return ! (elf_tdata (output_bfd)->phdr[seg].p_flags & PF_W);
+}
+
+/* Generate relocations for GOT entries, function descriptors, and
+ code for PLT and lazy PLT entries. */
+
+inline static bfd_boolean
+_frv_emit_got_relocs_plt_entries (struct frv_pic_relocs_info *entry,
+ bfd *output_bfd,
+ struct bfd_link_info *info,
+ asection *sec,
+ Elf_Internal_Sym *sym,
+ bfd_vma addend)
+
+{
+ bfd_vma fd_lazy_rel_offset = (bfd_vma)-1;
+ int dynindx = -1;
+
+ if (entry->done)
+ return TRUE;
+ entry->done = 1;
+
+ if (entry->got_entry || entry->fdgot_entry || entry->fd_entry)
+ {
+ /* If the symbol is dynamic, consider it for dynamic
+ relocations, otherwise decay to section + offset. */
+ if (entry->symndx == -1 && entry->d.h->dynindx != -1)
+ dynindx = entry->d.h->dynindx;
+ else
+ {
+ if (sec->output_section
+ && ! bfd_is_abs_section (sec->output_section)
+ && ! bfd_is_und_section (sec->output_section))
+ dynindx = elf_section_data (sec->output_section)->dynindx;
+ else
+ dynindx = 0;
+ }
+ }
+
+ /* Generate relocation for GOT entry pointing to the symbol. */
+ if (entry->got_entry)
+ {
+ int idx = dynindx;
+ bfd_vma ad = addend;
+
+ /* If the symbol is dynamic but binds locally, use
+ section+offset. */
+ if (sec && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h)))
+ {
+ if (entry->symndx == -1)
+ ad += entry->d.h->root.u.def.value;
+ else
+ ad += sym->st_value;
+ ad += sec->output_offset;
+ if (sec->output_section && elf_section_data (sec->output_section))
+ idx = elf_section_data (sec->output_section)->dynindx;
+ else
+ idx = 0;
+ }
+
+ /* If we're linking an executable at a fixed address, we can
+ omit the dynamic relocation as long as the symbol is local to
+ this module. */
+ if (info->executable && !info->pie
+ && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h)))
+ {
+ if (sec)
+ ad += sec->output_section->vma;
+ if (entry->symndx != -1 ||
+ entry->d.h->root.type != bfd_link_hash_undefweak)
+ _frv_add_rofixup (output_bfd, frv_gotfixup_section (info),
+ frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset
+ + frv_got_initial_offset (info)
+ + entry->got_entry);
+ }
+ else
+ _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info),
+ _bfd_elf_section_offset
+ (output_bfd, info,
+ frv_got_section (info),
+ frv_got_initial_offset (info)
+ + entry->got_entry)
+ + frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset,
+ R_FRV_32, idx, ad);
+
+ bfd_put_32 (output_bfd, ad,
+ frv_got_section (info)->contents
+ + frv_got_initial_offset (info)
+ + entry->got_entry);
+ }
+
+ /* Generate relocation for GOT entry pointing to a canonical
+ function descriptor. */
+ if (entry->fdgot_entry)
+ {
+ int reloc, idx;
+ bfd_vma ad;
+
+ /* If the symbol is dynamic and there may be dynamic symbol
+ resolution because we are or are linked with a shared
+ library, emit a FUNCDESC relocation such that the dynamic
+ linker will allocate the function descriptor. */
+ if (entry->symndx == -1 && ! FRV_FUNCDESC_LOCAL (info, entry->d.h))
+ {
+ reloc = R_FRV_FUNCDESC;
+ idx = dynindx;
+ ad = addend;
+ if (ad)
+ return FALSE;
+ }
+ else
+ {
+ /* Otherwise, we know we have a private function descriptor,
+ so reference it directly. */
+ if (elf_hash_table (info)->dynamic_sections_created)
+ BFD_ASSERT (entry->privfd);
+ reloc = R_FRV_32;
+ idx = elf_section_data (frv_got_section (info)->output_section)
+ ->dynindx;
+ ad = frv_got_section (info)->output_offset +
+ frv_got_initial_offset (info) + entry->fd_entry;
+ }
+
+ /* If there is room for dynamic symbol resolution, emit the
+ dynamic relocation. However, if we're linking an executable
+ at a fixed location, we won't have emitted a dynamic symbol
+ entry for the got section, so idx will be zero, which means
+ we can and should compute the address of the private
+ descriptor ourselves. */
+ if (info->executable && !info->pie
+ && (entry->symndx != -1 || FRV_FUNCDESC_LOCAL (info, entry->d.h)))
+ {
+ if (entry->symndx == -1
+ && entry->d.h->root.type == bfd_link_hash_undefweak)
+ ad = 0;
+ else
+ {
+ ad += frv_got_section (info)->output_section->vma;
+ _frv_add_rofixup (output_bfd, frv_gotfixup_section (info),
+ frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset
+ + frv_got_initial_offset (info)
+ + entry->fdgot_entry);
+ }
+ }
+ else
+ _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info),
+ _bfd_elf_section_offset
+ (output_bfd, info,
+ frv_got_section (info),
+ frv_got_initial_offset (info)
+ + entry->fdgot_entry)
+ + frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset,
+ reloc, idx, ad);
+
+ bfd_put_32 (output_bfd, ad,
+ frv_got_section (info)->contents
+ + frv_got_initial_offset (info)
+ + entry->fdgot_entry);
+ }
+
+ /* Generate relocation to fill in a private function descriptor in
+ the GOT. */
+ if (entry->fd_entry)
+ {
+ int idx = dynindx;
+ bfd_vma ad = addend;
+ bfd_vma ofst;
+ long lowword, highword;
+
+ /* If the symbol is dynamic but binds locally, use
+ section+offset. */
+ if (sec && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h)))
+ {
+ if (entry->symndx == -1)
+ ad += entry->d.h->root.u.def.value;
+ else
+ ad += sym->st_value;
+ ad += sec->output_offset;
+ if (sec->output_section && elf_section_data (sec->output_section))
+ idx = elf_section_data (sec->output_section)->dynindx;
+ else
+ idx = 0;
+ }
+
+ /* If we're linking an executable at a fixed address, we can
+ omit the dynamic relocation as long as the symbol is local to
+ this module. */
+ if (info->executable && !info->pie
+ && (entry->symndx != -1 || FRV_SYM_LOCAL (info, entry->d.h)))
+ {
+ if (sec)
+ ad += sec->output_section->vma;
+ ofst = 0;
+ if (entry->symndx != -1 ||
+ entry->d.h->root.type != bfd_link_hash_undefweak)
+ {
+ _frv_add_rofixup (output_bfd, frv_gotfixup_section (info),
+ frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset
+ + frv_got_initial_offset (info)
+ + entry->fd_entry);
+ _frv_add_rofixup (output_bfd, frv_gotfixup_section (info),
+ frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset
+ + frv_got_initial_offset (info)
+ + entry->fd_entry + 4);
+ }
+ }
+ else
+ {
+ ofst =
+ _frv_add_dyn_reloc (output_bfd,
+ entry->lazyplt ? frv_pltrel_section (info)
+ : frv_gotrel_section (info),
+ _bfd_elf_section_offset
+ (output_bfd, info,
+ frv_got_section (info),
+ frv_got_initial_offset (info)
+ + entry->fd_entry)
+ + frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset,
+ R_FRV_FUNCDESC_VALUE, idx, ad);
+ }
+
+ /* If we've omitted the dynamic relocation, just emit the fixed
+ addresses of the symbol and of the local GOT base offset. */
+ if (info->executable && !info->pie && sec && sec->output_section)
+ {
+ lowword = ad;
+ highword = frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset
+ + frv_got_initial_offset (info);
+ }
+ else if (entry->lazyplt)
+ {
+ if (ad)
+ return FALSE;
+
+ fd_lazy_rel_offset = ofst;
+
+ /* A function descriptor used for lazy or local resolving is
+ initialized such that its high word contains the output
+ section index in which the PLT entries are located, and
+ the low word contains the address of the lazy PLT entry
+ entry point, that must be within the memory region
+ assigned to that section. */
+ lowword = entry->lzplt_entry + 4
+ + frv_plt_section (info)->output_offset
+ + frv_plt_section (info)->output_section->vma;
+ highword = _frv_osec_to_segment
+ (output_bfd, frv_plt_section (info)->output_section);
+ }
+ else
+ {
+ /* A function descriptor for a local function gets the index
+ of the section. For a non-local function, it's
+ disregarded. */
+ lowword = ad;
+ if (entry->symndx == -1 && entry->d.h->dynindx != -1
+ && entry->d.h->dynindx == idx)
+ highword = 0;
+ else
+ highword = _frv_osec_to_segment (output_bfd, sec->output_section);
+ }
+
+ bfd_put_32 (output_bfd, lowword,
+ frv_got_section (info)->contents
+ + frv_got_initial_offset (info)
+ + entry->fd_entry);
+ bfd_put_32 (output_bfd, highword,
+ frv_got_section (info)->contents
+ + frv_got_initial_offset (info)
+ + entry->fd_entry + 4);
+ }
+
+ /* Generate code for the PLT entry. */
+ if (entry->plt_entry != (bfd_vma) -1)
+ {
+ bfd_byte *plt_code = frv_plt_section (info)->contents + entry->plt_entry;
+
+ BFD_ASSERT (entry->fd_entry);
+
+ /* Figure out what kind of PLT entry we need, depending on the
+ location of the function descriptor within the GOT. */
+ if (entry->fd_entry >= -(1 << (12 - 1))
+ && entry->fd_entry < (1 << (12 - 1)))
+ {
+ /* lddi @(gr15, fd_entry), gr14 */
+ bfd_put_32 (output_bfd,
+ 0x9cccf000 | (entry->fd_entry & ((1 << 12) - 1)),
+ plt_code);
+ plt_code += 4;
+ }
+ else
+ {
+ if (entry->fd_entry >= -(1 << (16 - 1))
+ && entry->fd_entry < (1 << (16 - 1)))
+ {
+ /* setlos lo(fd_entry), gr14 */
+ bfd_put_32 (output_bfd,
+ 0x9cfc0000
+ | (entry->fd_entry & (((bfd_vma)1 << 16) - 1)),
+ plt_code);
+ plt_code += 4;
+ }
+ else
+ {
+ /* sethi.p hi(fd_entry), gr14
+ setlo lo(fd_entry), gr14 */
+ bfd_put_32 (output_bfd,
+ 0x1cf80000
+ | ((entry->fd_entry >> 16)
+ & (((bfd_vma)1 << 16) - 1)),
+ plt_code);
+ bfd_put_32 (output_bfd,
+ 0x9cf40000
+ | (entry->fd_entry & (((bfd_vma)1 << 16) - 1)),
+ plt_code);
+ plt_code += 8;
+ }
+ /* ldd @(gr14,gr15),gr14 */
+ bfd_put_32 (output_bfd, 0x9c08e14f, plt_code);
+ plt_code += 4;
+ }
+ /* jmpl @(gr14,gr0) */
+ bfd_put_32 (output_bfd, 0x8030e000, plt_code);
+ }
+
+ /* Generate code for the lazy PLT entry. */
+ if (entry->lzplt_entry != (bfd_vma) -1)
+ {
+ bfd_byte *lzplt_code = frv_plt_section (info)->contents
+ + entry->lzplt_entry;
+ bfd_vma resolverStub_addr;
+
+ bfd_put_32 (output_bfd, fd_lazy_rel_offset, lzplt_code);
+ lzplt_code += 4;
+
+ resolverStub_addr = entry->lzplt_entry / FRV_LZPLT_BLOCK_SIZE
+ * FRV_LZPLT_BLOCK_SIZE + FRV_LZPLT_RESOLV_LOC;
+ if (resolverStub_addr >= frv_plt_initial_offset (info))
+ resolverStub_addr = frv_plt_initial_offset (info) - 12;
+
+ if (entry->lzplt_entry == resolverStub_addr)
+ {
+ /* This is a lazy PLT entry that includes a resolver call. */
+ /* ldd @(gr15,gr0), gr4
+ jmpl @(gr4,gr0) */
+ bfd_put_32 (output_bfd, 0x8808f140, lzplt_code);
+ bfd_put_32 (output_bfd, 0x80304000, lzplt_code + 4);
+ }
+ else
+ {
+ /* bra resolverStub */
+ bfd_put_32 (output_bfd,
+ 0xc01a0000
+ | (((resolverStub_addr - entry->lzplt_entry)
+ / 4) & (((bfd_vma)1 << 16) - 1)),
+ lzplt_code);
+ }
+ }
+
+ return TRUE;
+}
+
/* Handle an FRV small data reloc. */
static bfd_reloc_status_type
@@ -555,6 +1559,10 @@ frv_reloc_type_lookup (abfd, code)
return &elf32_frv_howto_table[ (int) R_FRV_NONE];
case BFD_RELOC_32:
+ if (elf_elfheader (abfd)->e_type == ET_EXEC
+ || elf_elfheader (abfd)->e_type == ET_DYN)
+ return &elf32_frv_rel_32_howto;
+ /* Fall through. */
case BFD_RELOC_CTOR:
return &elf32_frv_howto_table[ (int) R_FRV_32];
@@ -585,6 +1593,54 @@ frv_reloc_type_lookup (abfd, code)
case BFD_RELOC_FRV_GPRELLO:
return &elf32_frv_howto_table[ (int) R_FRV_GPRELLO];
+ case BFD_RELOC_FRV_GOT12:
+ return &elf32_frv_howto_table[ (int) R_FRV_GOT12];
+
+ case BFD_RELOC_FRV_GOTHI:
+ return &elf32_frv_howto_table[ (int) R_FRV_GOTHI];
+
+ case BFD_RELOC_FRV_GOTLO:
+ return &elf32_frv_howto_table[ (int) R_FRV_GOTLO];
+
+ case BFD_RELOC_FRV_FUNCDESC:
+ if (elf_elfheader (abfd)->e_type == ET_EXEC
+ || elf_elfheader (abfd)->e_type == ET_DYN)
+ return &elf32_frv_rel_funcdesc_howto;
+ return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC];
+
+ case BFD_RELOC_FRV_FUNCDESC_GOT12:
+ return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOT12];
+
+ case BFD_RELOC_FRV_FUNCDESC_GOTHI:
+ return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTHI];
+
+ case BFD_RELOC_FRV_FUNCDESC_GOTLO:
+ return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTLO];
+
+ case BFD_RELOC_FRV_FUNCDESC_VALUE:
+ if (elf_elfheader (abfd)->e_type == ET_EXEC
+ || elf_elfheader (abfd)->e_type == ET_DYN)
+ return &elf32_frv_rel_funcdesc_value_howto;
+ return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_VALUE];
+
+ case BFD_RELOC_FRV_FUNCDESC_GOTOFF12:
+ return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTOFF12];
+
+ case BFD_RELOC_FRV_FUNCDESC_GOTOFFHI:
+ return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTOFFHI];
+
+ case BFD_RELOC_FRV_FUNCDESC_GOTOFFLO:
+ return &elf32_frv_howto_table[ (int) R_FRV_FUNCDESC_GOTOFFLO];
+
+ case BFD_RELOC_FRV_GOTOFF12:
+ return &elf32_frv_howto_table[ (int) R_FRV_GOTOFF12];
+
+ case BFD_RELOC_FRV_GOTOFFHI:
+ return &elf32_frv_howto_table[ (int) R_FRV_GOTOFFHI];
+
+ case BFD_RELOC_FRV_GOTOFFLO:
+ return &elf32_frv_howto_table[ (int) R_FRV_GOTOFFLO];
+
case BFD_RELOC_VTABLE_INHERIT:
return &elf32_frv_vtinherit_howto;
@@ -621,6 +1677,34 @@ frv_info_to_howto_rela (abfd, cache_ptr, dst)
break;
}
}
+
+/* Set the howto pointer for an FRV ELF REL reloc. */
+static void
+frv_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
+ arelent *cache_ptr, Elf_Internal_Rela *dst)
+{
+ unsigned int r_type;
+
+ r_type = ELF32_R_TYPE (dst->r_info);
+ switch (r_type)
+ {
+ case R_FRV_32:
+ cache_ptr->howto = &elf32_frv_rel_32_howto;
+ break;
+
+ case R_FRV_FUNCDESC:
+ cache_ptr->howto = &elf32_frv_rel_funcdesc_howto;
+ break;
+
+ case R_FRV_FUNCDESC_VALUE:
+ cache_ptr->howto = &elf32_frv_rel_funcdesc_value_howto;
+ break;
+
+ default:
+ cache_ptr->howto = NULL;
+ break;
+ }
+}
/* Perform a single relocation. By default we use the standard BFD
routines, but a few relocs, we have to do them ourselves. */
@@ -687,6 +1771,9 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
struct elf_link_hash_entry **sym_hashes;
Elf_Internal_Rela *rel;
Elf_Internal_Rela *relend;
+ unsigned isec_segment, got_segment, plt_segment, gprel_segment,
+ check_segment[2];
+ int silence_segment_error = !(info->shared || info->pie);
if (info->relocatable)
return TRUE;
@@ -695,6 +1782,27 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
sym_hashes = elf_sym_hashes (input_bfd);
relend = relocs + input_section->reloc_count;
+ isec_segment = _frv_osec_to_segment (output_bfd,
+ input_section->output_section);
+ if (frv_got_section (info))
+ got_segment = _frv_osec_to_segment (output_bfd,
+ frv_got_section (info)
+ ->output_section);
+ else
+ got_segment = -1;
+ if (frv_gotfixup_section (info))
+ gprel_segment = _frv_osec_to_segment (output_bfd,
+ frv_gotfixup_section (info)
+ ->output_section);
+ else
+ gprel_segment = -1;
+ if (elf_hash_table (info)->dynamic_sections_created)
+ plt_segment = _frv_osec_to_segment (output_bfd,
+ frv_plt_section (info)
+ ->output_section);
+ else
+ plt_segment = -1;
+
for (rel = relocs; rel < relend; rel ++)
{
reloc_howto_type *howto;
@@ -706,6 +1814,9 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
bfd_reloc_status_type r;
const char * name = NULL;
int r_type;
+ asection *osec;
+ struct frv_pic_relocs_info *picrel;
+ bfd_vma orig_addend = rel->r_addend;
r_type = ELF32_R_TYPE (rel->r_info);
@@ -723,7 +1834,7 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
if (r_symndx < symtab_hdr->sh_info)
{
sym = local_syms + r_symndx;
- sec = local_sections [r_symndx];
+ osec = sec = local_sections [r_symndx];
relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
name = bfd_elf_string_from_elf_section
@@ -740,6 +1851,14 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
name = h->root.root.string;
+ if ((h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak)
+ && ! FRV_SYM_LOCAL (info, h))
+ {
+ sec = NULL;
+ relocation = 0;
+ }
+ else
if (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
{
@@ -752,6 +1871,11 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
{
relocation = 0;
}
+ else if ( ! info->executable
+ && ! info->symbolic
+ && info->unresolved_syms_in_objects == RM_IGNORE
+ && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+ relocation = 0;
else
{
if (! ((*info->callbacks->undefined_symbol)
@@ -760,6 +1884,464 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
return FALSE;
relocation = 0;
}
+ osec = sec;
+ }
+
+ switch (r_type)
+ {
+ case R_FRV_LABEL24:
+ case R_FRV_32:
+ case R_FRV_GOT12:
+ case R_FRV_GOTHI:
+ case R_FRV_GOTLO:
+ case R_FRV_FUNCDESC_GOT12:
+ case R_FRV_FUNCDESC_GOTHI:
+ case R_FRV_FUNCDESC_GOTLO:
+ case R_FRV_GOTOFF12:
+ case R_FRV_GOTOFFHI:
+ case R_FRV_GOTOFFLO:
+ case R_FRV_FUNCDESC_GOTOFF12:
+ case R_FRV_FUNCDESC_GOTOFFHI:
+ case R_FRV_FUNCDESC_GOTOFFLO:
+ case R_FRV_FUNCDESC:
+ case R_FRV_FUNCDESC_VALUE:
+ if (h != NULL)
+ picrel = frv_pic_relocs_info_for_global (frv_relocs_info (info),
+ input_bfd, h,
+ orig_addend);
+ else
+ /* In order to find the entry we created before, we must
+ use the original addend, not the one that may have been
+ modified by _bfd_elf_rela_local_sym(). */
+ picrel = frv_pic_relocs_info_for_local (frv_relocs_info (info),
+ input_bfd, r_symndx,
+ orig_addend);
+ if (! picrel)
+ return FALSE;
+
+ if (!_frv_emit_got_relocs_plt_entries (picrel, output_bfd, info,
+ osec, sym, rel->r_addend))
+ {
+ info->callbacks->warning
+ (info, _("Dynamic relocation references symbol with nonzero addend"),
+ name, input_bfd, input_section, rel->r_offset);
+ return FALSE;
+
+ }
+
+ break;
+
+ default:
+ picrel = NULL;
+ if (h && ! FRV_SYM_LOCAL (info, h))
+ {
+ info->callbacks->warning
+ (info, _("relocation references symbol not defined in the module"),
+ name, input_bfd, input_section, rel->r_offset);
+ return FALSE;
+ }
+ break;
+ }
+
+ switch (r_type)
+ {
+ case R_FRV_LABEL24:
+ check_segment[0] = isec_segment;
+ if (picrel->plt)
+ {
+ relocation = frv_plt_section (info)->output_section->vma
+ + frv_plt_section (info)->output_offset
+ + picrel->plt_entry;
+ check_segment[1] = plt_segment;
+ }
+ /* We don't want to warn on calls to undefined weak symbols,
+ as calls to them must be protected by non-NULL tests
+ anyway, and unprotected calls would invoke undefined
+ behavior. */
+ else if (picrel->symndx == -1
+ && picrel->d.h->root.type == bfd_link_hash_undefweak)
+ check_segment[1] = check_segment[0];
+ else
+ check_segment[1] = sec
+ ? _frv_osec_to_segment (output_bfd, sec->output_section)
+ : (unsigned)-1;
+ break;
+
+ case R_FRV_GOT12:
+ case R_FRV_GOTHI:
+ case R_FRV_GOTLO:
+ relocation = picrel->got_entry;
+ check_segment[0] = check_segment[1] = got_segment;
+ break;
+
+ case R_FRV_FUNCDESC_GOT12:
+ case R_FRV_FUNCDESC_GOTHI:
+ case R_FRV_FUNCDESC_GOTLO:
+ relocation = picrel->fdgot_entry;
+ check_segment[0] = check_segment[1] = got_segment;
+ break;
+
+ case R_FRV_GOTOFFHI:
+ case R_FRV_GOTOFF12:
+ case R_FRV_GOTOFFLO:
+ relocation -= frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset
+ + frv_got_initial_offset (info);
+ check_segment[0] = got_segment;
+ check_segment[1] = sec
+ ? _frv_osec_to_segment (output_bfd, sec->output_section)
+ : (unsigned)-1;
+ break;
+
+ case R_FRV_FUNCDESC_GOTOFF12:
+ case R_FRV_FUNCDESC_GOTOFFHI:
+ case R_FRV_FUNCDESC_GOTOFFLO:
+ relocation = picrel->fd_entry;
+ check_segment[0] = check_segment[1] = got_segment;
+ break;
+
+ case R_FRV_FUNCDESC:
+ {
+ int dynindx;
+ bfd_vma addend = rel->r_addend;
+
+ /* If the symbol is dynamic and there may be dynamic
+ symbol resolution because we are or are linked with a
+ shared library, emit a FUNCDESC relocation such that
+ the dynamic linker will allocate the function
+ descriptor. */
+ if (h && ! FRV_FUNCDESC_LOCAL (info, h))
+ {
+ if (addend)
+ {
+ info->callbacks->warning
+ (info, _("R_FRV_FUNCDESC references dynamic symbol with nonzero addend"),
+ name, input_bfd, input_section, rel->r_offset);
+ return FALSE;
+ }
+ dynindx = h->dynindx;
+ }
+ else
+ {
+ /* Otherwise, we know we have a private function
+ descriptor, so reference it directly. */
+ BFD_ASSERT (picrel->privfd);
+ r_type = R_FRV_32;
+ dynindx = elf_section_data (frv_got_section
+ (info)->output_section)->dynindx;
+ addend = frv_got_section (info)->output_offset
+ + frv_got_initial_offset (info)
+ + picrel->fd_entry;
+ }
+
+ /* If there is room for dynamic symbol resolution, emit
+ the dynamic relocation. However, if we're linking an
+ executable at a fixed location, we won't have emitted a
+ dynamic symbol entry for the got section, so idx will
+ be zero, which means we can and should compute the
+ address of the private descriptor ourselves. */
+ if (info->executable && !info->pie
+ && (!h || FRV_FUNCDESC_LOCAL (info, h)))
+ {
+ addend += frv_got_section (info)->output_section->vma;
+ if ((bfd_get_section_flags (output_bfd,
+ input_section->output_section)
+ & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
+ {
+ if (_frv_osec_readonly_p (output_bfd,
+ input_section->output_section))
+ {
+ info->callbacks->warning
+ (info,
+ _("cannot emit fixups in read-only section"),
+ name, input_bfd, input_section, rel->r_offset);
+ return FALSE;
+ }
+ if (! h || h->root.type != bfd_link_hash_undefweak)
+ _frv_add_rofixup (output_bfd,
+ frv_gotfixup_section (info),
+ _bfd_elf_section_offset
+ (output_bfd, info,
+ input_section, rel->r_offset)
+ + input_section->output_section->vma
+ + input_section->output_offset);
+ }
+ }
+ else if ((bfd_get_section_flags (output_bfd,
+ input_section->output_section)
+ & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
+ {
+ if (_frv_osec_readonly_p (output_bfd,
+ input_section->output_section))
+ {
+ info->callbacks->warning
+ (info,
+ _("cannot emit dynamic relocations in read-only section"),
+ name, input_bfd, input_section, rel->r_offset);
+ return FALSE;
+ }
+ _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info),
+ _bfd_elf_section_offset
+ (output_bfd, info,
+ input_section, rel->r_offset)
+ + input_section->output_section->vma
+ + input_section->output_offset,
+ r_type, dynindx, addend);
+ }
+
+ /* We want the addend in-place because dynamic
+ relocations are REL. Setting relocation to it should
+ arrange for it to be installed. */
+ relocation = addend - rel->r_addend;
+ }
+ check_segment[0] = check_segment[1] = got_segment;
+ break;
+
+ case R_FRV_32:
+ case R_FRV_FUNCDESC_VALUE:
+ {
+ int dynindx;
+ bfd_vma addend = rel->r_addend;
+
+ /* If the symbol is dynamic but binds locally, use
+ section+offset. */
+ if (h && ! FRV_SYM_LOCAL (info, h))
+ {
+ if (addend && r_type == R_FRV_FUNCDESC_VALUE)
+ {
+ info->callbacks->warning
+ (info, _("R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend"),
+ name, input_bfd, input_section, rel->r_offset);
+ return FALSE;
+ }
+ dynindx = h->dynindx;
+ }
+ else
+ {
+ if (h)
+ addend += h->root.u.def.value;
+ else
+ addend += sym->st_value;
+ if (osec)
+ addend += osec->output_offset;
+ if (osec && osec->output_section
+ && ! bfd_is_abs_section (osec->output_section)
+ && ! bfd_is_und_section (osec->output_section))
+ dynindx = elf_section_data (osec->output_section)->dynindx;
+ else
+ dynindx = 0;
+ }
+
+ /* If we're linking an executable at a fixed address, we
+ can omit the dynamic relocation as long as the symbol
+ is defined in the current link unit (which is implied
+ by its output section not being NULL). */
+ if (info->executable && !info->pie
+ && (!h || FRV_SYM_LOCAL (info, h)))
+ {
+ if (osec)
+ addend += osec->output_section->vma;
+ if ((elf_elfheader (input_bfd)->e_flags & EF_FRV_FDPIC)
+ && (bfd_get_section_flags (output_bfd,
+ input_section->output_section)
+ & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
+ {
+ if (_frv_osec_readonly_p (output_bfd,
+ input_section->output_section))
+ {
+ info->callbacks->warning
+ (info,
+ _("cannot emit fixups in read-only section"),
+ name, input_bfd, input_section, rel->r_offset);
+ return FALSE;
+ }
+ if (!h || h->root.type != bfd_link_hash_undefweak)
+ {
+ _frv_add_rofixup (output_bfd,
+ frv_gotfixup_section (info),
+ _bfd_elf_section_offset
+ (output_bfd, info,
+ input_section, rel->r_offset)
+ + input_section->output_section->vma
+ + input_section->output_offset);
+ if (r_type == R_FRV_FUNCDESC_VALUE)
+ _frv_add_rofixup
+ (output_bfd,
+ frv_gotfixup_section (info),
+ _bfd_elf_section_offset
+ (output_bfd, info,
+ input_section, rel->r_offset)
+ + input_section->output_section->vma
+ + input_section->output_offset + 4);
+ }
+ }
+ }
+ else
+ {
+ if ((bfd_get_section_flags (output_bfd,
+ input_section->output_section)
+ & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
+ {
+ if (_frv_osec_readonly_p (output_bfd,
+ input_section->output_section))
+ {
+ info->callbacks->warning
+ (info,
+ _("cannot emit dynamic relocations in read-only section"),
+ name, input_bfd, input_section, rel->r_offset);
+ return FALSE;
+ }
+ _frv_add_dyn_reloc (output_bfd, frv_gotrel_section (info),
+ _bfd_elf_section_offset
+ (output_bfd, info,
+ input_section, rel->r_offset)
+ + input_section->output_section->vma
+ + input_section->output_offset,
+ r_type, dynindx, addend);
+ }
+ /* We want the addend in-place because dynamic
+ relocations are REL. Setting relocation to it
+ should arrange for it to be installed. */
+ relocation = addend - rel->r_addend;
+ }
+
+ if (r_type == R_FRV_FUNCDESC_VALUE)
+ {
+ /* If we've omitted the dynamic relocation, just emit
+ the fixed addresses of the symbol and of the local
+ GOT base offset. */
+ if (info->executable && !info->pie
+ && (!h || FRV_SYM_LOCAL (info, h)))
+ bfd_put_32 (output_bfd,
+ frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset
+ + frv_got_initial_offset (info),
+ contents + rel->r_offset + 4);
+ else
+ /* A function descriptor used for lazy or local
+ resolving is initialized such that its high word
+ contains the output section index in which the
+ PLT entries are located, and the low word
+ contains the offset of the lazy PLT entry entry
+ point into that section. */
+ bfd_put_32 (output_bfd,
+ h && ! FRV_SYM_LOCAL (info, h)
+ ? 0
+ : _frv_osec_to_segment (output_bfd,
+ sec->output_section),
+ contents + rel->r_offset + 4);
+ }
+ }
+ check_segment[0] = check_segment[1] = got_segment;
+ break;
+
+ case R_FRV_GPREL12:
+ case R_FRV_GPRELU12:
+ case R_FRV_GPREL32:
+ case R_FRV_GPRELHI:
+ case R_FRV_GPRELLO:
+ check_segment[0] = gprel_segment;
+ check_segment[1] = sec
+ ? _frv_osec_to_segment (output_bfd, sec->output_section)
+ : (unsigned)-1;
+ break;
+
+ default:
+ check_segment[0] = isec_segment;
+ check_segment[1] = sec
+ ? _frv_osec_to_segment (output_bfd, sec->output_section)
+ : (unsigned)-1;
+ break;
+ }
+
+ if (check_segment[0] != check_segment[1]
+ && (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC))
+ {
+#if 1
+ /* This helps catch problems in GCC while we can't do more
+ than static linking. The idea is to test whether the
+ input file basename is crt0.o only once. */
+ if (silence_segment_error == 1)
+ silence_segment_error =
+ (strlen (input_bfd->filename) == 6
+ && strcmp (input_bfd->filename, "crt0.o") == 0)
+ || (strlen (input_bfd->filename) > 6
+ && strcmp (input_bfd->filename
+ + strlen (input_bfd->filename) - 7,
+ "/crt0.o") == 0)
+ ? -1 : 0;
+#endif
+ if (!silence_segment_error
+ /* We don't want duplicate errors for undefined
+ symbols. */
+ && !(picrel && picrel->symndx == -1
+ && picrel->d.h->root.type == bfd_link_hash_undefined))
+ info->callbacks->warning
+ (info,
+ (info->shared || info->pie)
+ ? _("relocations between different segments are not supported")
+ : _("warning: relocation references a different segment"),
+ name, input_bfd, input_section, rel->r_offset);
+ if (!silence_segment_error && (info->shared || info->pie))
+ return FALSE;
+ elf_elfheader (output_bfd)->e_flags |= EF_FRV_PIC;
+ }
+
+ switch (r_type)
+ {
+ case R_FRV_GOTOFFHI:
+ /* We need the addend to be applied before we shift the
+ value right. */
+ relocation += rel->r_addend;
+ /* Fall through. */
+ case R_FRV_GOTHI:
+ case R_FRV_FUNCDESC_GOTHI:
+ case R_FRV_FUNCDESC_GOTOFFHI:
+ relocation >>= 16;
+ /* Fall through. */
+
+ case R_FRV_GOTLO:
+ case R_FRV_FUNCDESC_GOTLO:
+ case R_FRV_GOTOFFLO:
+ case R_FRV_FUNCDESC_GOTOFFLO:
+ relocation &= 0xffff;
+ break;
+
+ default:
+ break;
+ }
+
+ switch (r_type)
+ {
+ case R_FRV_LABEL24:
+ if (! picrel->plt)
+ break;
+ /* Fall through. */
+
+ /* When referencing a GOT entry, a function descriptor or a
+ PLT, we don't want the addend to apply to the reference,
+ but rather to the referenced symbol. The actual entry
+ will have already been created taking the addend into
+ account, so cancel it out here. */
+ case R_FRV_GOT12:
+ case R_FRV_GOTHI:
+ case R_FRV_GOTLO:
+ case R_FRV_FUNCDESC_GOT12:
+ case R_FRV_FUNCDESC_GOTHI:
+ case R_FRV_FUNCDESC_GOTLO:
+ case R_FRV_FUNCDESC_GOTOFF12:
+ case R_FRV_FUNCDESC_GOTOFFHI:
+ case R_FRV_FUNCDESC_GOTOFFLO:
+ /* Note that we only want GOTOFFHI, not GOTOFFLO or GOTOFF12
+ here, since we do want to apply the addend to the others.
+ Note that we've applied the addend to GOTOFFHI before we
+ shifted it right. */
+ case R_FRV_GOTOFFHI:
+ relocation -= rel->r_addend;
+ break;
+
+ default:
+ break;
}
if (r_type == R_FRV_HI16)
@@ -929,9 +2511,1270 @@ elf32_frv_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp)
return TRUE;
}
+/* Create a .got section, as well as its additional info field. This
+ is almost entirely copied from
+ elflink.c:_bfd_elf_create_got_section(). */
+
+static bfd_boolean
+_frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
+{
+ flagword flags;
+ asection *s;
+ struct elf_link_hash_entry *h;
+ struct bfd_link_hash_entry *bh;
+ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+ int ptralign;
+
+ /* This function may be called more than once. */
+ s = bfd_get_section_by_name (abfd, ".got");
+ if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0)
+ return TRUE;
+
+ /* Machine specific: although pointers are 32-bits wide, we want the
+ GOT to be aligned to a 64-bit boundary, such that function
+ descriptors in it can be accessed with 64-bit loads and
+ stores. */
+ ptralign = 3;
+
+ flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED);
+
+ s = bfd_make_section (abfd, ".got");
+ if (s == NULL
+ || !bfd_set_section_flags (abfd, s, flags)
+ || !bfd_set_section_alignment (abfd, s, ptralign))
+ return FALSE;
+
+ if (bed->want_got_plt)
+ {
+ s = bfd_make_section (abfd, ".got.plt");
+ if (s == NULL
+ || !bfd_set_section_flags (abfd, s, flags)
+ || !bfd_set_section_alignment (abfd, s, ptralign))
+ return FALSE;
+ }
+
+ if (bed->want_got_sym)
+ {
+ /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the .got
+ (or .got.plt) section. We don't do this in the linker script
+ because we don't want to define the symbol if we are not creating
+ a global offset table. */
+ bh = NULL;
+ if (!(_bfd_generic_link_add_one_symbol
+ (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s,
+ bed->got_symbol_offset, (const char *) NULL, FALSE,
+ bed->collect, &bh)))
+ return FALSE;
+ h = (struct elf_link_hash_entry *) bh;
+ h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
+ h->type = STT_OBJECT;
+
+ /* Machine-specific: we want the symbol for executables as
+ well. */
+ if (! _bfd_elf_link_record_dynamic_symbol (info, h))
+ return FALSE;
+
+ elf_hash_table (info)->hgot = h;
+ }
+
+ /* The first bit of the global offset table is the header. */
+ s->_raw_size += bed->got_header_size + bed->got_symbol_offset;
+
+ /* This is the machine-specific part. Create and initialize section
+ data for the got. */
+ frv_got_section (info) = s;
+ frv_relocs_info (info) = htab_try_create (1, frv_pic_relocs_info_hash,
+ frv_pic_relocs_info_eq,
+ (htab_del) NULL);
+ if (! frv_relocs_info (info))
+ return FALSE;
+
+ s = bfd_make_section (abfd, ".rel.got");
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, (flags | SEC_READONLY))
+ || ! bfd_set_section_alignment (abfd, s, 2))
+ return FALSE;
+
+ frv_gotrel_section (info) = s;
+
+ /* Machine-specific. */
+ s = bfd_make_section (abfd, ".rofixup");
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, (flags | SEC_READONLY))
+ || ! bfd_set_section_alignment (abfd, s, 2))
+ return FALSE;
+
+ frv_gotfixup_section (info) = s;
+
+ /* Define _gp in .rofixup, for FDPIC. If it turns out that
+ we're linking with a different linker script, the linker script
+ will override it. */
+ bh = NULL;
+ if (!(_bfd_generic_link_add_one_symbol
+ (info, abfd, "_gp", BSF_GLOBAL, s, -2048, (const char *) NULL, FALSE,
+ bed->collect, &bh)))
+ return FALSE;
+ h = (struct elf_link_hash_entry *) bh;
+ h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
+ h->type = STT_OBJECT;
+
+ /* Machine-specific: we want the symbol for executables as well. */
+ if (! _bfd_elf_link_record_dynamic_symbol (info, h))
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Make sure the got and plt sections exist, and that our pointers in
+ the link hash table point to them. */
+
+static bfd_boolean
+elf32_frv_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
+{
+ /* This is mostly copied from
+ elflink.c:_bfd_elf_create_dynamic_sections(). */
+ flagword flags, pltflags;
+ asection *s;
+ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+
+ /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
+ .rel[a].bss sections. */
+
+ flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED);
+
+ pltflags = flags;
+ pltflags |= SEC_CODE;
+ if (bed->plt_not_loaded)
+ pltflags &= ~ (SEC_CODE | SEC_LOAD | SEC_HAS_CONTENTS);
+ if (bed->plt_readonly)
+ pltflags |= SEC_READONLY;
+
+ s = bfd_make_section (abfd, ".plt");
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, pltflags)
+ || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+ return FALSE;
+ /* FRV-specific: remember it. */
+ frv_plt_section (info) = s;
+
+ if (bed->want_plt_sym)
+ {
+ /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the
+ .plt section. */
+ struct elf_link_hash_entry *h;
+ struct bfd_link_hash_entry *bh = NULL;
+
+ if (! (_bfd_generic_link_add_one_symbol
+ (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, 0, NULL,
+ FALSE, get_elf_backend_data (abfd)->collect, &bh)))
+ return FALSE;
+ h = (struct elf_link_hash_entry *) bh;
+ h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
+ h->type = STT_OBJECT;
+
+ if (! info->executable
+ && ! _bfd_elf_link_record_dynamic_symbol (info, h))
+ return FALSE;
+ }
+
+ /* FRV-specific: we want rel relocations for the plt. */
+ s = bfd_make_section (abfd, ".rel.plt");
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
+ || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+ return FALSE;
+ /* FRV-specific: remember it. */
+ frv_pltrel_section (info) = s;
+
+ /* FRV-specific: we want to create the GOT in the FRV way. */
+ if (! _frv_create_got_section (abfd, info))
+ return FALSE;
+
+ /* FRV-specific: make sure we created everything we wanted. */
+ BFD_ASSERT (frv_got_section (info) && frv_gotrel_section (info)
+ && frv_gotfixup_section (info)
+ && frv_plt_section (info) && frv_pltrel_section (info));
+
+ if (bed->want_dynbss)
+ {
+ /* The .dynbss section is a place to put symbols which are defined
+ by dynamic objects, are referenced by regular objects, and are
+ not functions. We must allocate space for them in the process
+ image and use a R_*_COPY reloc to tell the dynamic linker to
+ initialize them at run time. The linker script puts the .dynbss
+ section into the .bss section of the final image. */
+ s = bfd_make_section (abfd, ".dynbss");
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, SEC_ALLOC | SEC_LINKER_CREATED))
+ return FALSE;
+
+ /* The .rel[a].bss section holds copy relocs. This section is not
+ normally needed. We need to create it here, though, so that the
+ linker will map it to an output section. We can't just create it
+ only if we need it, because we will not know whether we need it
+ until we have seen all the input files, and the first time the
+ main linker code calls BFD after examining all the input files
+ (size_dynamic_sections) the input sections have already been
+ mapped to the output sections. If the section turns out not to
+ be needed, we can discard it later. We will never need this
+ section when generating a shared object, since they do not use
+ copy relocs. */
+ if (! info->shared)
+ {
+ s = bfd_make_section (abfd,
+ (bed->default_use_rela_p
+ ? ".rela.bss" : ".rel.bss"));
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
+ || ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align))
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+/* The name of the dynamic interpreter. This is put in the .interp
+ section. */
+
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
+
+#define DEFAULT_STACK_SIZE 0x20000
+
+/* This structure is used to collect the number of entries present in
+ each addressable range of the got. */
+struct _frv_dynamic_got_info
+{
+ /* Several bits of information about the current link. */
+ struct bfd_link_info *info;
+ /* Total size needed for GOT entries within the 12-, 16- or 32-bit
+ ranges. */
+ bfd_vma got12, gotlos, gothilo;
+ /* Total size needed for function descriptor entries within the 12-,
+ 16- or 32-bit ranges. */
+ bfd_vma fd12, fdlos, fdhilo;
+ /* Total size needed function descriptor entries referenced in PLT
+ entries, that would be profitable to place in offsets close to
+ the PIC register. */
+ bfd_vma fdplt;
+ /* Total size needed by lazy PLT entries. */
+ bfd_vma lzplt;
+ /* Number of relocations carried over from input object files. */
+ unsigned long relocs;
+ /* Number of fixups introduced by relocations in input object files. */
+ unsigned long fixups;
+};
+
+/* Compute the total GOT size required by each symbol in each range.
+ Symbols may require up to 4 words in the GOT: an entry pointing to
+ the symbol, an entry pointing to its function descriptor, and a
+ private function descriptors taking two words. */
+
+static int
+_frv_count_got_plt_entries (void **entryp, void *dinfo_)
+{
+ struct frv_pic_relocs_info *entry = *entryp;
+ struct _frv_dynamic_got_info *dinfo = dinfo_;
+
+ /* Allocate space for a GOT entry pointing to the symbol. */
+ if (entry->got12)
+ dinfo->got12 += 4;
+ else if (entry->gotlos)
+ dinfo->gotlos += 4;
+ else if (entry->gothilo)
+ dinfo->gothilo += 4;
+ else
+ entry->relocs32--;
+ entry->relocs32++;
+
+ /* Allocate space for a GOT entry pointing to the function
+ descriptor. */
+ if (entry->fdgot12)
+ dinfo->got12 += 4;
+ else if (entry->fdgotlos)
+ dinfo->gotlos += 4;
+ else if (entry->fdgothilo)
+ dinfo->gothilo += 4;
+ else
+ entry->relocsfd--;
+ entry->relocsfd++;
+
+ /* Decide whether we need a PLT entry, a function descriptor in the
+ GOT, and a lazy PLT entry for this symbol. */
+ entry->plt = entry->call
+ && entry->symndx == -1 && ! FRV_SYM_LOCAL (dinfo->info, entry->d.h)
+ && elf_hash_table (dinfo->info)->dynamic_sections_created;
+ entry->privfd = entry->plt
+ || entry->fdgoff12 || entry->fdgofflos || entry->fdgoffhilo
+ || ((entry->fd || entry->fdgot12 || entry->fdgotlos || entry->fdgothilo)
+ && (entry->symndx != -1
+ || FRV_FUNCDESC_LOCAL (dinfo->info, entry->d.h)));
+ entry->lazyplt = entry->privfd
+ && entry->symndx == -1 && ! FRV_SYM_LOCAL (dinfo->info, entry->d.h)
+ && ! (dinfo->info->flags & DF_BIND_NOW)
+ && elf_hash_table (dinfo->info)->dynamic_sections_created;
+
+ /* Allocate space for a function descriptor. */
+ if (entry->fdgoff12)
+ dinfo->fd12 += 8;
+ else if (entry->fdgofflos)
+ dinfo->fdlos += 8;
+ else if (entry->privfd && entry->plt)
+ dinfo->fdplt += 8;
+ else if (entry->privfd)
+ dinfo->fdhilo += 8;
+ else
+ entry->relocsfdv--;
+ entry->relocsfdv++;
+
+ if (entry->lazyplt)
+ dinfo->lzplt += 8;
+
+ if (!dinfo->info->executable || dinfo->info->pie)
+ dinfo->relocs += entry->relocs32 + entry->relocsfd + entry->relocsfdv;
+ else
+ {
+ if (entry->symndx != -1 || FRV_SYM_LOCAL (dinfo->info, entry->d.h))
+ {
+ if (entry->symndx != -1
+ || entry->d.h->root.type != bfd_link_hash_undefweak)
+ dinfo->fixups += entry->relocs32 + 2 * entry->relocsfdv;
+ }
+ else
+ dinfo->relocs += entry->relocs32 + entry->relocsfdv;
+ if (entry->symndx != -1 || FRV_FUNCDESC_LOCAL (dinfo->info, entry->d.h))
+ {
+ if (entry->symndx != -1
+ || entry->d.h->root.type != bfd_link_hash_undefweak)
+ dinfo->fixups += entry->relocsfd;
+ }
+ else
+ dinfo->relocs += entry->relocsfd;
+ }
+
+ return 1;
+}
+
+/* This structure is used to assign offsets to got entries, function
+ descriptors, plt entries and lazy plt entries. */
+
+struct _frv_dynamic_got_plt_info
+{
+ /* Summary information collected with _frv_count_got_plt_entries. */
+ struct _frv_dynamic_got_info g;
+
+ /* For each addressable range, we record a MAX (positive) and MIN
+ (negative) value. CUR is used to assign got entries, and it's
+ incremented from an initial positive value to MAX, then from MIN
+ to FDCUR (unless FDCUR wraps around first). FDCUR is used to
+ assign function descriptors, and it's decreased from an initial
+ non-positive value to MIN, then from MAX down to CUR (unless CUR
+ wraps around first). All of MIN, MAX, CUR and FDCUR always point
+ to even words. ODD, if non-zero, indicates an odd word to be
+ used for the next got entry, otherwise CUR is used and
+ incremented by a pair of words, wrapping around when it reaches
+ MAX. FDCUR is decremented (and wrapped) before the next function
+ descriptor is chosen. FDPLT indicates the number of remaining
+ slots that can be used for function descriptors used only by PLT
+ entries. */
+ struct _frv_dynamic_got_alloc_data
+ {
+ bfd_signed_vma max, cur, odd, fdcur, min;
+ bfd_vma fdplt;
+ } got12, gotlos, gothilo;
+};
+
+/* Determine the positive and negative ranges to be used by each
+ offset range in the GOT. FDCUR and CUR, that must be aligned to a
+ double-word boundary, are the minimum (negative) and maximum
+ (positive) GOT offsets already used by previous ranges, except for
+ an ODD entry that may have been left behind. GOT and FD indicate
+ the size of GOT entries and function descriptors that must be
+ placed within the range from -WRAP to WRAP. If there's room left,
+ up to FDPLT bytes should be reserved for additional function
+ descriptors. */
+
+inline static bfd_signed_vma
+_frv_compute_got_alloc_data (struct _frv_dynamic_got_alloc_data *gad,
+ bfd_signed_vma fdcur,
+ bfd_signed_vma odd,
+ bfd_signed_vma cur,
+ bfd_vma got,
+ bfd_vma fd,
+ bfd_vma fdplt,
+ bfd_vma wrap)
+{
+ bfd_signed_vma wrapmin = -wrap;
+
+ /* Start at the given initial points. */
+ gad->fdcur = fdcur;
+ gad->cur = cur;
+
+ /* If we had an incoming odd word and we have any got entries that
+ are going to use it, consume it, otherwise leave gad->odd at
+ zero. We might force gad->odd to zero and return the incoming
+ odd such that it is used by the next range, but then GOT entries
+ might appear to be out of order and we wouldn't be able to
+ shorten the GOT by one word if it turns out to end with an
+ unpaired GOT entry. */
+ if (odd && got)
+ {
+ gad->odd = odd;
+ got -= 4;
+ odd = 0;
+ }
+ else
+ gad->odd = 0;
+
+ /* If we're left with an unpaired GOT entry, compute its location
+ such that we can return it. Otherwise, if got doesn't require an
+ odd number of words here, either odd was already zero in the
+ block above, or it was set to zero because got was non-zero, or
+ got was already zero. In the latter case, we want the value of
+ odd to carry over to the return statement, so we don't want to
+ reset odd unless the condition below is true. */
+ if (got & 4)
+ {
+ odd = cur + got;
+ got += 4;
+ }
+
+ /* Compute the tentative boundaries of this range. */
+ gad->max = cur + got;
+ gad->min = fdcur - fd;
+ gad->fdplt = 0;
+
+ /* If function descriptors took too much space, wrap some of them
+ around. */
+ if (gad->min < wrapmin)
+ {
+ gad->max += wrapmin - gad->min;
+ gad->min = wrapmin;
+ }
+ /* If there is space left and we have function descriptors
+ referenced in PLT entries that could take advantage of shorter
+ offsets, place them here. */
+ else if (fdplt && gad->min > wrapmin)
+ {
+ bfd_vma fds;
+ if ((bfd_vma) (gad->min - wrapmin) < fdplt)
+ fds = gad->min - wrapmin;
+ else
+ fds = fdplt;
+
+ fdplt -= fds;
+ gad->min -= fds;
+ gad->fdplt += fds;
+ }
+
+ /* If GOT entries took too much space, wrap some of them around.
+ This may well cause gad->min to become lower than wrapmin. This
+ will cause a relocation overflow later on, so we don't have to
+ report it here . */
+ if ((bfd_vma) gad->max > wrap)
+ {
+ gad->min -= gad->max - wrap;
+ gad->max = wrap;
+ }
+ /* If there is more space left, try to place some more function
+ descriptors for PLT entries. */
+ else if (fdplt && (bfd_vma) gad->max < wrap)
+ {
+ bfd_vma fds;
+ if ((bfd_vma) (wrap - gad->max) < fdplt)
+ fds = wrap - gad->max;
+ else
+ fds = fdplt;
+
+ fdplt -= fds;
+ gad->max += fds;
+ gad->fdplt += fds;
+ }
+
+ /* If odd was initially computed as an offset past the wrap point,
+ wrap it around. */
+ if (odd > gad->max)
+ odd = gad->min + odd - gad->max;
+
+ /* _frv_get_got_entry() below will always wrap gad->cur if needed
+ before returning, so do it here too. This guarantees that,
+ should cur and fdcur meet at the wrap point, they'll both be
+ equal to min. */
+ if (gad->cur == gad->max)
+ gad->cur = gad->min;
+
+ return odd;
+}
+
+/* Compute the location of the next GOT entry, given the allocation
+ data for a range. */
+
+inline static bfd_signed_vma
+_frv_get_got_entry (struct _frv_dynamic_got_alloc_data *gad)
+{
+ bfd_signed_vma ret;
+
+ if (gad->odd)
+ {
+ /* If there was an odd word left behind, use it. */
+ ret = gad->odd;
+ gad->odd = 0;
+ }
+ else
+ {
+ /* Otherwise, use the word pointed to by cur, reserve the next
+ as an odd word, and skip to the next pair of words, possibly
+ wrapping around. */
+ ret = gad->cur;
+ gad->odd = gad->cur + 4;
+ gad->cur += 8;
+ if (gad->cur == gad->max)
+ gad->cur = gad->min;
+ }
+
+ return ret;
+}
+
+/* Compute the location of the next function descriptor entry in the
+ GOT, given the allocation data for a range. */
+
+inline static bfd_signed_vma
+_frv_get_fd_entry (struct _frv_dynamic_got_alloc_data *gad)
+{
+ /* If we're at the bottom, wrap around, and only then allocate the
+ next pair of words. */
+ if (gad->fdcur == gad->min)
+ gad->fdcur = gad->max;
+ return gad->fdcur -= 8;
+}
+
+/* Assign GOT offsets for every GOT entry and function descriptor.
+ Doing everything in a single pass is tricky. */
+
+static int
+_frv_assign_got_entries (void **entryp, void *info_)
+{
+ struct frv_pic_relocs_info *entry = *entryp;
+ struct _frv_dynamic_got_plt_info *dinfo = info_;
+
+ if (entry->got12)
+ entry->got_entry = _frv_get_got_entry (&dinfo->got12);
+ else if (entry->gotlos)
+ entry->got_entry = _frv_get_got_entry (&dinfo->gotlos);
+ else if (entry->gothilo)
+ entry->got_entry = _frv_get_got_entry (&dinfo->gothilo);
+
+ if (entry->fdgot12)
+ entry->fdgot_entry = _frv_get_got_entry (&dinfo->got12);
+ else if (entry->fdgotlos)
+ entry->fdgot_entry = _frv_get_got_entry (&dinfo->gotlos);
+ else if (entry->fdgothilo)
+ entry->fdgot_entry = _frv_get_got_entry (&dinfo->gothilo);
+
+ if (entry->fdgoff12)
+ entry->fd_entry = _frv_get_fd_entry (&dinfo->got12);
+ else if (entry->plt && dinfo->got12.fdplt)
+ {
+ dinfo->got12.fdplt -= 8;
+ entry->fd_entry = _frv_get_fd_entry (&dinfo->got12);
+ }
+ else if (entry->fdgofflos)
+ entry->fd_entry = _frv_get_fd_entry (&dinfo->gotlos);
+ else if (entry->plt && dinfo->gotlos.fdplt)
+ {
+ dinfo->gotlos.fdplt -= 8;
+ entry->fd_entry = _frv_get_fd_entry (&dinfo->gotlos);
+ }
+ else if (entry->plt)
+ {
+ dinfo->gothilo.fdplt -= 8;
+ entry->fd_entry = _frv_get_fd_entry (&dinfo->gothilo);
+ }
+ else if (entry->privfd)
+ entry->fd_entry = _frv_get_fd_entry (&dinfo->gothilo);
+
+ return 1;
+}
+
+/* Assign GOT offsets to private function descriptors used by PLT
+ entries (or referenced by 32-bit offsets), as well as PLT entries
+ and lazy PLT entries. */
+
+static int
+_frv_assign_plt_entries (void **entryp, void *info_)
+{
+ struct frv_pic_relocs_info *entry = *entryp;
+ struct _frv_dynamic_got_plt_info *dinfo = info_;
+
+ /* If this symbol requires a local function descriptor, allocate
+ one. */
+ if (entry->privfd && entry->fd_entry == 0)
+ {
+ if (dinfo->got12.fdplt)
+ {
+ entry->fd_entry = _frv_get_fd_entry (&dinfo->got12);
+ dinfo->got12.fdplt -= 8;
+ }
+ else if (dinfo->gotlos.fdplt)
+ {
+ entry->fd_entry = _frv_get_fd_entry (&dinfo->gotlos);
+ dinfo->gotlos.fdplt -= 8;
+ }
+ else
+ {
+ BFD_ASSERT (dinfo->gothilo.fdplt)
+ entry->fd_entry = _frv_get_fd_entry (&dinfo->gothilo);
+ dinfo->gothilo.fdplt -= 8;
+ }
+ }
+
+ if (entry->plt)
+ {
+ int size;
+
+ /* We use the section's raw size to mark the location of the
+ next PLT entry. */
+ entry->plt_entry = frv_plt_section (dinfo->g.info)->_raw_size;
+
+ /* Figure out the length of this PLT entry based on the
+ addressing mode we need to reach the function descriptor. */
+ BFD_ASSERT (entry->fd_entry);
+ if (entry->fd_entry >= -(1 << (12 - 1))
+ && entry->fd_entry < (1 << (12 - 1)))
+ size = 8;
+ else if (entry->fd_entry >= -(1 << (16 - 1))
+ && entry->fd_entry < (1 << (16 - 1)))
+ size = 12;
+ else
+ size = 16;
+
+ frv_plt_section (dinfo->g.info)->_raw_size += size;
+ }
+
+ if (entry->lazyplt)
+ {
+ entry->lzplt_entry = dinfo->g.lzplt;
+ dinfo->g.lzplt += 8;
+ /* If this entry is the one that gets the resolver stub, account
+ for the additional instruction. */
+ if (entry->lzplt_entry % FRV_LZPLT_BLOCK_SIZE == FRV_LZPLT_RESOLV_LOC)
+ dinfo->g.lzplt += 4;
+ }
+
+ return 1;
+}
+
+/* Follow indirect and warning hash entries so that each got entry
+ points to the final symbol definition. P must point to a pointer
+ to the hash table we're traversing. Since this traversal may
+ modify the hash table, we set this pointer to NULL to indicate
+ we've made a potentially-destructive change to the hash table, so
+ the traversal must be restarted. */
+static int
+_frv_resolve_final_relocs_info (void **entryp, void *p)
+{
+ struct frv_pic_relocs_info *entry = *entryp;
+ htab_t *htab = p;
+
+ if (entry->symndx == -1)
+ {
+ struct elf_link_hash_entry *h = entry->d.h;
+
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *)h->root.u.i.link;
+
+ if (entry->d.h == h)
+ return 1;
+
+ entry->d.h = h;
+
+ /* If we can't find this entry with the new bfd hash, re-insert
+ it, and get the traversal restarted. */
+ if (! htab_find (*htab, entry))
+ {
+ htab_clear_slot (*htab, entryp);
+ entryp = htab_find_slot (*htab, entry, INSERT);
+ if (! *entryp)
+ *entryp = entry;
+ /* Abort the traversal, since the whole table may have
+ moved, and leave it up to the parent to restart the
+ process. */
+ *(htab_t *)p = NULL;
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+/* Set the sizes of the dynamic sections. */
+
+static bfd_boolean
+elf32_frv_size_dynamic_sections (bfd *output_bfd,
+ struct bfd_link_info *info)
+{
+ bfd *dynobj;
+ asection *s;
+ struct _frv_dynamic_got_plt_info gpinfo;
+ bfd_signed_vma odd;
+ bfd_vma limit;
+
+ dynobj = elf_hash_table (info)->dynobj;
+ BFD_ASSERT (dynobj != NULL);
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ /* Set the contents of the .interp section to the interpreter. */
+ if (info->executable)
+ {
+ s = bfd_get_section_by_name (dynobj, ".interp");
+ BFD_ASSERT (s != NULL);
+ s->_raw_size = sizeof ELF_DYNAMIC_INTERPRETER;
+ s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
+ }
+ }
+
+ memset (&gpinfo, 0, sizeof (gpinfo));
+ gpinfo.g.info = info;
+
+ for (;;)
+ {
+ htab_t relocs = frv_relocs_info (info);
+
+ htab_traverse (relocs, _frv_resolve_final_relocs_info, &relocs);
+
+ if (relocs == frv_relocs_info (info))
+ break;
+ }
+
+ htab_traverse (frv_relocs_info (info), _frv_count_got_plt_entries,
+ &gpinfo.g);
+
+ odd = 12;
+ /* Compute the total size taken by entries in the 12-bit and 16-bit
+ ranges, to tell how many PLT function descriptors we can bring
+ into the 12-bit range without causing the 16-bit range to
+ overflow. */
+ limit = odd + gpinfo.g.got12 + gpinfo.g.gotlos
+ + gpinfo.g.fd12 + gpinfo.g.fdlos;
+ if (limit < (bfd_vma)1 << 16)
+ limit = ((bfd_vma)1 << 16) - limit;
+ else
+ limit = 0;
+ if (gpinfo.g.fdplt < limit)
+ limit = gpinfo.g.fdplt;
+
+ /* Determine the ranges of GOT offsets that we can use for each
+ range of addressing modes. */
+ odd = _frv_compute_got_alloc_data (&gpinfo.got12,
+ 0,
+ odd,
+ 16,
+ gpinfo.g.got12,
+ gpinfo.g.fd12,
+ limit,
+ (bfd_vma)1 << (12-1));
+ odd = _frv_compute_got_alloc_data (&gpinfo.gotlos,
+ gpinfo.got12.min,
+ odd,
+ gpinfo.got12.max,
+ gpinfo.g.gotlos,
+ gpinfo.g.fdlos,
+ gpinfo.g.fdplt - gpinfo.got12.fdplt,
+ (bfd_vma)1 << (16-1));
+ odd = _frv_compute_got_alloc_data (&gpinfo.gothilo,
+ gpinfo.gotlos.min,
+ odd,
+ gpinfo.gotlos.max,
+ gpinfo.g.gothilo,
+ gpinfo.g.fdhilo,
+ gpinfo.g.fdplt - gpinfo.got12.fdplt
+ - gpinfo.gotlos.fdplt,
+ (bfd_vma)1 << (32-1));
+
+ /* Now assign (most) GOT offsets. */
+ htab_traverse (frv_relocs_info (info), _frv_assign_got_entries, &gpinfo);
+
+ frv_got_section (info)->_raw_size = gpinfo.gothilo.max - gpinfo.gothilo.min
+ /* If an odd word is the last word of the GOT, we don't need this
+ word to be part of the GOT. */
+ - (odd + 4 == gpinfo.gothilo.max ? 4 : 0);
+ if (frv_got_section (info)->_raw_size == 0)
+ frv_got_section (info)->flags |= SEC_EXCLUDE;
+ else if (frv_got_section (info)->_raw_size == 12
+ && ! elf_hash_table (info)->dynamic_sections_created)
+ {
+ frv_got_section (info)->flags |= SEC_EXCLUDE;
+ frv_got_section (info)->_raw_size = 0;
+ }
+ else
+ {
+ frv_got_section (info)->contents =
+ (bfd_byte *) bfd_zalloc (dynobj, frv_got_section (info)->_raw_size);
+ if (frv_got_section (info)->contents == NULL)
+ return FALSE;
+ }
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ /* Subtract the number of lzplt entries, since those will generate
+ relocations in the pltrel section. */
+ frv_gotrel_section (info)->_raw_size =
+ (gpinfo.g.relocs - gpinfo.g.lzplt / 8)
+ * get_elf_backend_data (output_bfd)->s->sizeof_rel;
+ else
+ BFD_ASSERT (gpinfo.g.relocs == 0);
+ if (frv_gotrel_section (info)->_raw_size == 0)
+ frv_gotrel_section (info)->flags |= SEC_EXCLUDE;
+ else
+ {
+ frv_gotrel_section (info)->contents =
+ (bfd_byte *) bfd_zalloc (dynobj, frv_gotrel_section (info)->_raw_size);
+ if (frv_gotrel_section (info)->contents == NULL)
+ return FALSE;
+ }
+
+ if (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC)
+ frv_gotfixup_section (info)->_raw_size = (gpinfo.g.fixups + 1) * 4;
+ if (frv_gotfixup_section (info)->_raw_size == 0)
+ frv_gotfixup_section (info)->flags |= SEC_EXCLUDE;
+ else
+ {
+ frv_gotfixup_section (info)->contents =
+ (bfd_byte *) bfd_zalloc (dynobj,
+ frv_gotfixup_section (info)->_raw_size);
+ if (frv_gotfixup_section (info)->contents == NULL)
+ return FALSE;
+ }
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ frv_pltrel_section (info)->_raw_size =
+ gpinfo.g.lzplt / 8 * get_elf_backend_data (output_bfd)->s->sizeof_rel;
+ if (frv_pltrel_section (info)->_raw_size == 0)
+ frv_pltrel_section (info)->flags |= SEC_EXCLUDE;
+ else
+ {
+ frv_pltrel_section (info)->contents =
+ (bfd_byte *) bfd_zalloc (dynobj,
+ frv_pltrel_section (info)->_raw_size);
+ if (frv_pltrel_section (info)->contents == NULL)
+ return FALSE;
+ }
+ }
+
+ /* Add 4 bytes for every block of at most 65535 lazy PLT entries,
+ such that there's room for the additional instruction needed to
+ call the resolver. Since _frv_assign_got_entries didn't account
+ for them, our block size is 4 bytes smaller than the real block
+ size. */
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ frv_plt_section (info)->_raw_size = gpinfo.g.lzplt
+ + ((gpinfo.g.lzplt + (FRV_LZPLT_BLOCK_SIZE - 4) - 8)
+ / (FRV_LZPLT_BLOCK_SIZE - 4) * 4);
+ }
+
+ /* Reset it, such that _frv_assign_plt_entries() can use it to
+ actually assign lazy PLT entries addresses. */
+ gpinfo.g.lzplt = 0;
+
+ /* Save information that we're going to need to generate GOT and PLT
+ entries. */
+ frv_got_initial_offset (info) = -gpinfo.gothilo.min;
+
+ if (get_elf_backend_data (output_bfd)->want_got_sym)
+ elf_hash_table (info)->hgot->root.u.def.value
+ += frv_got_initial_offset (info);
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ frv_plt_initial_offset (info) = frv_plt_section (info)->_raw_size;
+
+ htab_traverse (frv_relocs_info (info), _frv_assign_plt_entries, &gpinfo);
+
+ /* Allocate the PLT section contents only after
+ _frv_assign_plt_entries has a chance to add the size of the
+ non-lazy PLT entries. */
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ if (frv_plt_section (info)->_raw_size == 0)
+ frv_plt_section (info)->flags |= SEC_EXCLUDE;
+ else
+ {
+ frv_plt_section (info)->contents =
+ (bfd_byte *) bfd_zalloc (dynobj, frv_plt_section (info)->_raw_size);
+ if (frv_plt_section (info)->contents == NULL)
+ return FALSE;
+ }
+ }
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ if (frv_got_section (info)->_raw_size)
+ if (! bfd_elf32_add_dynamic_entry (info, DT_PLTGOT, 0))
+ return FALSE;
+
+ if (frv_pltrel_section (info)->_raw_size)
+ if (! bfd_elf32_add_dynamic_entry (info, DT_PLTRELSZ, 0)
+ || ! bfd_elf32_add_dynamic_entry (info, DT_PLTREL, DT_REL)
+ || ! bfd_elf32_add_dynamic_entry (info, DT_JMPREL, 0))
+ return FALSE;
+
+ if (frv_gotrel_section (info)->_raw_size)
+ if (! bfd_elf32_add_dynamic_entry (info, DT_REL, 0)
+ || ! bfd_elf32_add_dynamic_entry (info, DT_RELSZ, 0)
+ || ! bfd_elf32_add_dynamic_entry (info, DT_RELENT,
+ sizeof (Elf32_External_Rel)))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bfd_boolean
+elf32_frv_always_size_sections (bfd *output_bfd,
+ struct bfd_link_info *info)
+{
+ if (!info->relocatable
+ && elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC)
+ {
+ struct elf_link_hash_entry *h;
+ asection *sec;
+
+ /* Force a PT_GNU_STACK segment to be created. */
+ if (! elf_tdata (output_bfd)->stack_flags)
+ elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
+
+ /* Define __stacksize if it's not defined yet. */
+ h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize",
+ FALSE, FALSE, FALSE);
+ if (! h || h->root.type != bfd_link_hash_defined
+ || h->type != STT_OBJECT
+ || !(h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))
+ {
+ struct bfd_link_hash_entry *bh;
+
+ if (!(_bfd_generic_link_add_one_symbol
+ (info, output_bfd, "__stacksize",
+ BSF_GLOBAL, bfd_abs_section_ptr, DEFAULT_STACK_SIZE,
+ (const char *) NULL, FALSE,
+ get_elf_backend_data (output_bfd)->collect, &bh)))
+ return FALSE;
+
+ h = (struct elf_link_hash_entry *) bh;
+ h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
+ h->type = STT_OBJECT;
+ }
+
+ /* Create a stack section, and set its alignment. */
+ sec = bfd_make_section (output_bfd, ".stack");
+
+ if (sec == NULL
+ || ! bfd_set_section_alignment (output_bfd, sec, 3))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static bfd_boolean
+elf32_frv_modify_segment_map (bfd *output_bfd,
+ struct bfd_link_info *info)
+{
+ if (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC)
+ {
+ struct elf_segment_map *m;
+
+ for (m = elf_tdata (output_bfd)->segment_map; m != NULL; m = m->next)
+ if (m->p_type == PT_GNU_STACK)
+ break;
+
+ if (m)
+ {
+ asection *sec = bfd_get_section_by_name (output_bfd, ".stack");
+ struct elf_link_hash_entry *h;
+
+ if (sec)
+ {
+ /* Obtain the pointer to the __stacksize symbol. */
+ h = elf_link_hash_lookup (elf_hash_table (info), "__stacksize",
+ FALSE, FALSE, FALSE);
+ while (h->root.type == bfd_link_hash_indirect
+ || h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *)h->root.u.i.link;
+ BFD_ASSERT (h->root.type == bfd_link_hash_defined);
+
+ /* Set the section size from the symbol value. We
+ intentionally ignore the symbol section. */
+ if (h->root.type == bfd_link_hash_defined)
+ sec->_raw_size = h->root.u.def.value;
+ else
+ sec->_raw_size = DEFAULT_STACK_SIZE;
+
+ /* Add the stack section to the PT_GNU_STACK segment,
+ such that its size and alignment requirements make it
+ to the segment. */
+ m->sections[m->count] = sec;
+ m->count++;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+/* Fill in code and data in dynamic sections. */
+
+static bfd_boolean
+elf32_frv_finish_dynamic_sections (bfd *output_bfd,
+ struct bfd_link_info *info)
+{
+ bfd *dynobj;
+ asection *sdyn;
+
+ dynobj = elf_hash_table (info)->dynobj;
+
+ if (frv_got_section (info))
+ {
+ BFD_ASSERT (frv_gotrel_section (info)->_raw_size
+ == (frv_gotrel_section (info)->reloc_count
+ * sizeof (Elf32_External_Rel)));
+
+ if (frv_gotfixup_section (info))
+ {
+ if (elf_elfheader (output_bfd)->e_flags & EF_FRV_FDPIC)
+ {
+ struct elf_link_hash_entry *hgot = elf_hash_table (info)->hgot;
+ bfd_vma got_value = hgot->root.u.def.value
+ + hgot->root.u.def.section->output_section->vma
+ + hgot->root.u.def.section->output_offset;
+
+ _frv_add_rofixup (output_bfd, frv_gotfixup_section (info),
+ got_value);
+ }
+
+ if (frv_gotfixup_section (info)->_raw_size
+ != (frv_gotfixup_section (info)->reloc_count * 4))
+ {
+ if (!elf_hash_table (info)->dynamic_sections_created)
+ {
+ info->callbacks->warning
+ (info, "no dynamic sections, missing -melf32frvfd?",
+ ".rofixup", NULL, NULL, 0);
+ return FALSE;
+ }
+ BFD_ASSERT (0);
+ }
+ }
+ }
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ BFD_ASSERT (frv_pltrel_section (info)->_raw_size
+ == (frv_pltrel_section (info)->reloc_count
+ * sizeof (Elf32_External_Rel)));
+ }
+
+ sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
+
+ if (elf_hash_table (info)->dynamic_sections_created)
+ {
+ Elf32_External_Dyn * dyncon;
+ Elf32_External_Dyn * dynconend;
+
+ BFD_ASSERT (sdyn != NULL);
+
+ dyncon = (Elf32_External_Dyn *) sdyn->contents;
+ dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->_raw_size);
+
+ for (; dyncon < dynconend; dyncon++)
+ {
+ Elf_Internal_Dyn dyn;
+
+ bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);
+
+ switch (dyn.d_tag)
+ {
+ default:
+ break;
+
+ case DT_PLTGOT:
+ dyn.d_un.d_ptr = frv_got_section (info)->output_section->vma
+ + frv_got_section (info)->output_offset
+ + frv_got_initial_offset (info);
+ bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ case DT_JMPREL:
+ dyn.d_un.d_ptr = frv_pltrel_section (info)->output_section->vma
+ + frv_pltrel_section (info)->output_offset;
+ bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ case DT_PLTRELSZ:
+ if (frv_pltrel_section (info)->_cooked_size != 0)
+ dyn.d_un.d_val = frv_pltrel_section (info)->_cooked_size;
+ else
+ dyn.d_un.d_val = frv_pltrel_section (info)->_raw_size;
+ bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+ }
+ }
+ }
+
+ return TRUE;
+}
+
+/* Adjust a symbol defined by a dynamic object and referenced by a
+ regular object. */
+
+static bfd_boolean
+elf32_frv_adjust_dynamic_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ struct elf_link_hash_entry *h ATTRIBUTE_UNUSED)
+{
+ bfd * dynobj;
+
+ dynobj = elf_hash_table (info)->dynobj;
+
+ /* Make sure we know what is going on here. */
+ BFD_ASSERT (dynobj != NULL
+ && (h->weakdef != NULL
+ || ((h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_DYNAMIC) != 0
+ && (h->elf_link_hash_flags
+ & ELF_LINK_HASH_REF_REGULAR) != 0
+ && (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_REGULAR) == 0)));
+
+ /* If this is a weak symbol, and there is a real definition, the
+ processor independent code will have arranged for us to see the
+ real definition first, and we can just use the same value. */
+ if (h->weakdef != NULL)
+ {
+ BFD_ASSERT (h->weakdef->root.type == bfd_link_hash_defined
+ || h->weakdef->root.type == bfd_link_hash_defweak);
+ h->root.u.def.section = h->weakdef->root.u.def.section;
+ h->root.u.def.value = h->weakdef->root.u.def.value;
+ }
+
+ return TRUE;
+}
+
+/* Perform any actions needed for dynamic symbols. */
+
+static bfd_boolean
+elf32_frv_finish_dynamic_symbol (bfd *output_bfd ATTRIBUTE_UNUSED,
+ struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ struct elf_link_hash_entry *h ATTRIBUTE_UNUSED,
+ Elf_Internal_Sym *sym ATTRIBUTE_UNUSED)
+{
+ return TRUE;
+}
+
/* Look through the relocs for a section during the first phase.
- Since we don't do .gots or .plts, we just need to consider the
- virtual table relocs for gc. */
+
+ Besides handling virtual table relocs for gc, we have to deal with
+ all sorts of PIC-related relocations. We describe below the
+ general plan on how to handle such relocations, even though we only
+ collect information at this point, storing them in hash tables for
+ perusal of later passes.
+
+ 32 relocations are propagated to the linker output when creating
+ position-independent output. LO16 and HI16 relocations are not
+ supposed to be encountered in this case.
+
+ LABEL16 should always be resolvable by the linker, since it's only
+ used by branches.
+
+ LABEL24, on the other hand, is used by calls. If it turns out that
+ the target of a call is a dynamic symbol, a PLT entry must be
+ created for it, which triggers the creation of a private function
+ descriptor and, unless lazy binding is disabled, a lazy PLT entry.
+
+ GPREL relocations require the referenced symbol to be in the same
+ segment as _gp, but this can only be checked later.
+
+ All GOT, GOTOFF and FUNCDESC relocations require a .got section to
+ exist. LABEL24 might as well, since it may require a PLT entry,
+ that will require a got.
+
+ Non-FUNCDESC GOT relocations require a GOT entry to be created
+ regardless of whether the symbol is dynamic. However, since a
+ global symbol that turns out to not be exported may have the same
+ address of a non-dynamic symbol, we don't assign GOT entries at
+ this point, such that we can share them in this case. A relocation
+ for the GOT entry always has to be created, be it to offset a
+ private symbol by the section load address, be it to get the symbol
+ resolved dynamically.
+
+ FUNCDESC GOT relocations require a GOT entry to be created, and
+ handled as if a FUNCDESC relocation was applied to the GOT entry in
+ an object file.
+
+ FUNCDESC relocations referencing a symbol that turns out to NOT be
+ dynamic cause a private function descriptor to be created. The
+ FUNCDESC relocation then decays to a 32 relocation that points at
+ the private descriptor. If the symbol is dynamic, the FUNCDESC
+ relocation is propagated to the linker output, such that the
+ dynamic linker creates the canonical descriptor, pointing to the
+ dynamically-resolved definition of the function.
+
+ Non-FUNCDESC GOTOFF relocations must always refer to non-dynamic
+ symbols that are assigned to the same segment as the GOT, but we
+ can only check this later, after we know the complete set of
+ symbols defined and/or exported.
+
+ FUNCDESC GOTOFF relocations require a function descriptor to be
+ created and, unless lazy binding is disabled or the symbol is not
+ dynamic, a lazy PLT entry. Since we can't tell at this point
+ whether a symbol is going to be dynamic, we have to decide later
+ whether to create a lazy PLT entry or bind the descriptor directly
+ to the private function.
+
+ FUNCDESC_VALUE relocations are not supposed to be present in object
+ files, but they may very well be simply propagated to the linker
+ output, since they have no side effect.
+
+
+ A function descriptor always requires a FUNCDESC_VALUE relocation.
+ Whether it's in .plt.rel or not depends on whether lazy binding is
+ enabled and on whether the referenced symbol is dynamic.
+
+ The existence of a lazy PLT requires the resolverStub lazy PLT
+ entry to be present.
+
+
+ As for assignment of GOT, PLT and lazy PLT entries, and private
+ descriptors, we might do them all sequentially, but we can do
+ better than that. For example, we can place GOT entries and
+ private function descriptors referenced using 12-bit operands
+ closer to the PIC register value, such that these relocations don't
+ overflow. Those that are only referenced with LO16 relocations
+ could come next, but we may as well place PLT-required function
+ descriptors in the 12-bit range to make them shorter. Symbols
+ referenced with LO16/HI16 may come next, but we may place
+ additional function descriptors in the 16-bit range if we can
+ reliably tell that we've already placed entries that are ever
+ referenced with only LO16. PLT entries are therefore generated as
+ small as possible, while not introducing relocation overflows in
+ GOT or FUNCDESC_GOTOFF relocations. Lazy PLT entries could be
+ generated before or after PLT entries, but not intermingled with
+ them, such that we can have more lazy PLT entries in range for a
+ branch to the resolverStub. The resolverStub should be emitted at
+ the most distant location from the first lazy PLT entry such that
+ it's still in range for a branch, or closer, if there isn't a need
+ for so many lazy PLT entries. Additional lazy PLT entries may be
+ emitted after the resolverStub, as long as branches are still in
+ range. If the branch goes out of range, longer lazy PLT entries
+ are emitted.
+
+ We could further optimize PLT and lazy PLT entries by giving them
+ priority in assignment to closer-to-gr17 locations depending on the
+ number of occurrences of references to them (assuming a function
+ that's called more often is more important for performance, so its
+ PLT entry should be faster), or taking hints from the compiler.
+ Given infinite time and money... :-) */
static bfd_boolean
elf32_frv_check_relocs (abfd, info, sec, relocs)
@@ -944,6 +3787,8 @@ elf32_frv_check_relocs (abfd, info, sec, relocs)
struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
const Elf_Internal_Rela *rel;
const Elf_Internal_Rela *rel_end;
+ bfd *dynobj;
+ struct frv_pic_relocs_info *picrel;
if (info->relocatable)
return TRUE;
@@ -954,6 +3799,7 @@ elf32_frv_check_relocs (abfd, info, sec, relocs)
if (!elf_bad_symtab (abfd))
sym_hashes_end -= symtab_hdr->sh_info;
+ dynobj = elf_hash_table (info)->dynobj;
rel_end = relocs + sec->reloc_count;
for (rel = relocs; rel < rel_end; rel++)
{
@@ -967,7 +3813,114 @@ elf32_frv_check_relocs (abfd, info, sec, relocs)
h = sym_hashes[r_symndx - symtab_hdr->sh_info];
switch (ELF32_R_TYPE (rel->r_info))
+ {
+ case R_FRV_LABEL24:
+ case R_FRV_32:
+ case R_FRV_GOT12:
+ case R_FRV_GOTHI:
+ case R_FRV_GOTLO:
+ case R_FRV_FUNCDESC_GOT12:
+ case R_FRV_FUNCDESC_GOTHI:
+ case R_FRV_FUNCDESC_GOTLO:
+ case R_FRV_GOTOFF12:
+ case R_FRV_GOTOFFHI:
+ case R_FRV_GOTOFFLO:
+ case R_FRV_FUNCDESC_GOTOFF12:
+ case R_FRV_FUNCDESC_GOTOFFHI:
+ case R_FRV_FUNCDESC_GOTOFFLO:
+ case R_FRV_FUNCDESC:
+ case R_FRV_FUNCDESC_VALUE:
+ if (! dynobj)
+ {
+ elf_hash_table (info)->dynobj = dynobj = abfd;
+ if (! _frv_create_got_section (abfd, info))
+ return FALSE;
+ }
+ if (h != NULL)
+ {
+ if (h->dynindx == -1)
+ switch (ELF_ST_VISIBILITY (h->other))
+ {
+ case STV_INTERNAL:
+ case STV_HIDDEN:
+ break;
+ default:
+ bfd_elf32_link_record_dynamic_symbol (info, h);
+ break;
+ }
+ picrel
+ = frv_pic_relocs_info_for_global (frv_relocs_info (info),
+ abfd, h,
+ rel->r_addend);
+ }
+ else
+ picrel = frv_pic_relocs_info_for_local (frv_relocs_info (info),
+ abfd, r_symndx,
+ rel->r_addend);
+ if (! picrel)
+ return FALSE;
+ break;
+
+ default:
+ picrel = NULL;
+ break;
+ }
+
+ switch (ELF32_R_TYPE (rel->r_info))
{
+ case R_FRV_LABEL24:
+ picrel->call = 1;
+ break;
+
+ case R_FRV_FUNCDESC_VALUE:
+ picrel->relocsfdv++;
+ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+ picrel->relocs32--;
+ /* Fall through. */
+ case R_FRV_32:
+ picrel->sym = 1;
+ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC)
+ picrel->relocs32++;
+ break;
+
+ case R_FRV_GOT12:
+ picrel->got12 = 1;
+ break;
+
+ case R_FRV_GOTHI:
+ case R_FRV_GOTLO:
+ picrel->gothilo = 1;
+ break;
+
+ case R_FRV_FUNCDESC_GOT12:
+ picrel->fdgot12 = 1;
+ break;
+
+ case R_FRV_FUNCDESC_GOTHI:
+ case R_FRV_FUNCDESC_GOTLO:
+ picrel->fdgothilo = 1;
+ break;
+
+ case R_FRV_GOTOFF12:
+ case R_FRV_GOTOFFHI:
+ case R_FRV_GOTOFFLO:
+ picrel->gotoff = 1;
+ break;
+
+ case R_FRV_FUNCDESC_GOTOFF12:
+ picrel->fdgoff12 = 1;
+ break;
+
+ case R_FRV_FUNCDESC_GOTOFFHI:
+ case R_FRV_FUNCDESC_GOTOFFLO:
+ picrel->fdgoffhilo = 1;
+ break;
+
+ case R_FRV_FUNCDESC:
+ picrel->fd = 1;
+ picrel->relocsfd++;
+ break;
+
/* This relocation describes the C++ object vtable hierarchy.
Reconstruct it for later use during GC. */
case R_FRV_GNU_VTINHERIT:
@@ -1067,6 +4020,9 @@ frv_elf_merge_private_bfd_data (ibfd, obfd)
new_flags = elf_elfheader (ibfd)->e_flags;
old_flags = elf_elfheader (obfd)->e_flags;
+ if (new_flags & EF_FRV_FDPIC)
+ new_flags &= ~EF_FRV_PIC;
+
#ifdef DEBUG
(*_bfd_error_handler) ("old_flags = 0x%.8lx, new_flags = 0x%.8lx, init = %s, filename = %s",
old_flags, new_flags, elf_flags_init (obfd) ? "yes" : "no",
@@ -1369,6 +4325,12 @@ frv_elf_print_private_bfd_data (abfd, ptr)
if (flags & EF_FRV_BIGPIC)
fprintf (file, " -fPIC");
+ if (flags & EF_FRV_LIBPIC)
+ fprintf (file, " -mlibrary-pic");
+
+ if (flags & EF_FRV_FDPIC)
+ fprintf (file, " -mfdpic");
+
if (flags & EF_FRV_NON_PIC_RELOCS)
fprintf (file, " non-pic relocations");
@@ -1387,7 +4349,7 @@ frv_elf_print_private_bfd_data (abfd, ptr)
#define TARGET_BIG_SYM bfd_elf32_frv_vec
#define TARGET_BIG_NAME "elf32-frv"
-#define elf_info_to_howto_rel NULL
+#define elf_info_to_howto_rel frv_info_to_howto_rel
#define elf_info_to_howto frv_info_to_howto_rela
#define elf_backend_relocate_section elf32_frv_relocate_section
#define elf_backend_gc_mark_hook elf32_frv_gc_mark_hook
@@ -1405,4 +4367,33 @@ frv_elf_print_private_bfd_data (abfd, ptr)
#define bfd_elf32_bfd_merge_private_bfd_data frv_elf_merge_private_bfd_data
#define bfd_elf32_bfd_print_private_bfd_data frv_elf_print_private_bfd_data
+#define bfd_elf32_bfd_link_hash_table_create frv_elf_link_hash_table_create
+#define elf_backend_always_size_sections \
+ elf32_frv_always_size_sections
+#define elf_backend_modify_segment_map \
+ elf32_frv_modify_segment_map
+
+#define elf_backend_create_dynamic_sections \
+ elf32_frv_create_dynamic_sections
+#define elf_backend_adjust_dynamic_symbol \
+ elf32_frv_adjust_dynamic_symbol
+#define elf_backend_size_dynamic_sections \
+ elf32_frv_size_dynamic_sections
+#define elf_backend_finish_dynamic_symbol \
+ elf32_frv_finish_dynamic_symbol
+#define elf_backend_finish_dynamic_sections \
+ elf32_frv_finish_dynamic_sections
+
+#define elf_backend_want_got_sym 1
+#define elf_backend_got_header_size 0
+#define elf_backend_want_got_plt 0
+#define elf_backend_plt_readonly 1
+#define elf_backend_want_plt_sym 0
+#define elf_backend_plt_header_size 0
+
+#define elf_backend_may_use_rel_p 1
+#define elf_backend_may_use_rela_p 1
+/* We use REL for dynamic relocations only. */
+#define elf_backend_default_use_rela_p 1
+
#include "elf32-target.h"
diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c
index 18d87d45002..1a176214f01 100644
--- a/bfd/elf32-h8300.c
+++ b/bfd/elf32-h8300.c
@@ -1,5 +1,5 @@
/* BFD back-end for Renesas H8/300 ELF binaries.
- Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003
+ Copyright 1993, 1995, 1998, 1999, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -30,23 +30,23 @@ static void elf32_h8_info_to_howto
(bfd *, arelent *, Elf_Internal_Rela *);
static void elf32_h8_info_to_howto_rel
(bfd *, arelent *, Elf_Internal_Rela *);
-static unsigned long elf32_h8_mach
- (flagword);
-static void elf32_h8_final_write_processing
- (bfd *, bfd_boolean);
-static bfd_boolean elf32_h8_object_p
- (bfd *);
-static bfd_boolean elf32_h8_merge_private_bfd_data
- (bfd *, bfd *);
+static unsigned long elf32_h8_mach (flagword);
+static void elf32_h8_final_write_processing (bfd *, bfd_boolean);
+static bfd_boolean elf32_h8_object_p (bfd *);
+static bfd_boolean elf32_h8_merge_private_bfd_data (bfd *, bfd *);
static bfd_boolean elf32_h8_relax_section
(bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
static bfd_boolean elf32_h8_relax_delete_bytes
(bfd *, asection *, bfd_vma, int);
-static bfd_boolean elf32_h8_symbol_address_p
- (bfd *, asection *, bfd_vma);
+static bfd_boolean elf32_h8_symbol_address_p (bfd *, asection *, bfd_vma);
static bfd_byte *elf32_h8_get_relocated_section_contents
(bfd *, struct bfd_link_info *, struct bfd_link_order *,
bfd_byte *, bfd_boolean, asymbol **);
+static asection *elf32_h8_gc_mark_hook
+ (asection *, struct bfd_link_info *, Elf_Internal_Rela *,
+ struct elf_link_hash_entry *, Elf_Internal_Sym *);
+static bfd_boolean elf32_h8_gc_sweep_hook
+ (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *);
static bfd_reloc_status_type elf32_h8_final_link_relocate
(unsigned long, bfd *, bfd *, asection *,
bfd_byte *, bfd_vma, bfd_vma, bfd_vma,
@@ -348,7 +348,7 @@ elf32_h8_final_link_relocate (unsigned long r_type, bfd *input_bfd,
value += addend;
/* HIT_DATA is the address for the first byte for the relocated
- value. Subtract 1 so that we can manipulate the data in 32bit
+ value. Subtract 1 so that we can manipulate the data in 32-bit
hunks. */
hit_data--;
@@ -358,7 +358,7 @@ elf32_h8_final_link_relocate (unsigned long r_type, bfd *input_bfd,
/* Retrieve the type byte for value from the section contents. */
value |= (bfd_get_32 (input_bfd, hit_data) & 0xff000000);
- /* Now scribble it out in one 32bit hunk. */
+ /* Now scribble it out in one 32-bit hunk. */
bfd_put_32 (input_bfd, value, hit_data);
return bfd_reloc_ok;
@@ -640,8 +640,8 @@ elf32_h8_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
&& bfd_get_mach (obfd) < bfd_get_mach (ibfd))
{
if (! bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
- bfd_get_mach (ibfd)))
- return FALSE;
+ bfd_get_mach (ibfd)))
+ return FALSE;
}
return TRUE;
@@ -659,9 +659,16 @@ elf32_h8_merge_private_bfd_data (bfd *ibfd, bfd *obfd)
bCC:16 -> bCC:8 2 bytes
bsr:16 -> bsr:8 2 bytes
+ bset:16 -> bset:8 2 bytes
+ bset:24/32 -> bset:8 4 bytes
+ (also applicable to other bit manipulation instructions)
+
mov.b:16 -> mov.b:8 2 bytes
mov.b:24/32 -> mov.b:8 4 bytes
+ bset:24/32 -> bset:16 2 bytes
+ (also applicable to other bit manipulation instructions)
+
mov.[bwl]:24/32 -> mov.[bwl]:16 2 bytes */
static bfd_boolean
@@ -804,7 +811,7 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
the linker is run. */
switch (ELF32_R_TYPE (irel->r_info))
{
- /* Try to turn a 24 bit absolute branch/call into an 8 bit
+ /* Try to turn a 24-bit absolute branch/call into an 8-bit
pc-relative branch/call. */
case R_H8_DIR24R8:
{
@@ -915,8 +922,10 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
}
if (code == 0x5e)
+ /* This is jsr. */
bfd_put_8 (abfd, 0x55, contents + irel->r_offset - 1);
else if (code == 0x5a)
+ /* This is jmp. */
bfd_put_8 (abfd, 0x40, contents + irel->r_offset - 1);
else
abort ();
@@ -937,7 +946,7 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
break;
}
- /* Try to turn a 16bit pc-relative branch into a 8bit pc-relative
+ /* Try to turn a 16-bit pc-relative branch into a 8-bit pc-relative
branch. */
case R_H8_PCREL16:
{
@@ -971,14 +980,21 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
if (code == 0x58)
{
/* bCC:16 -> bCC:8 */
- /* Get the condition code from the original insn. */
+ /* Get the second byte of the original insn, which
+ contains the condition code. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
+
+ /* Compute the fisrt byte of the relaxed
+ instruction. The original sequence 0x58 0xX0
+ is relaxed to 0x4X, where X represents the
+ condition code. */
code &= 0xf0;
code >>= 4;
code |= 0x40;
bfd_put_8 (abfd, code, contents + irel->r_offset - 2);
}
else if (code == 0x5c)
+ /* This is bsr. */
bfd_put_8 (abfd, 0x55, contents + irel->r_offset - 2);
else
abort ();
@@ -1000,8 +1016,15 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
break;
}
- /* This is a 16 bit absolute address in a "mov.b" insn, which may
- become an 8 bit absolute address if its in the right range. */
+ /* This is a 16-bit absolute address in one of the following
+ instructions:
+
+ "band", "bclr", "biand", "bild", "bior", "bist", "bixor",
+ "bld", "bnot", "bor", "bset", "bst", "btst", "bxor", and
+ "mov.b"
+
+ We may relax this into an 8-bit absolute address if it's in
+ the right range. */
case R_H8_DIR16A8:
{
bfd_vma value;
@@ -1010,6 +1033,7 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
if (value >= 0xffffff00u)
{
unsigned char code;
+ unsigned char temp_code;
/* Note that we've changed the relocs, section contents,
etc. */
@@ -1020,22 +1044,46 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 2);
- /* Sanity check. */
+ /* All instructions with R_H8_DIR16A8 start with
+ 0x6a. */
if (code != 0x6a)
abort ();
- code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
+ temp_code = code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
+ /* If this is a mov.b instruction, clear the lower
+ nibble, which contains the source/destination
+ register number. */
+ if ((temp_code & 0x10) != 0x10)
+ temp_code &= 0xf0;
- if ((code & 0xf0) == 0x00)
- bfd_put_8 (abfd,
- (code & 0xf) | 0x20,
- contents + irel->r_offset - 2);
- else if ((code & 0xf0) == 0x80)
- bfd_put_8 (abfd,
- (code & 0xf) | 0x30,
- contents + irel->r_offset - 2);
- else
- abort ();
+ switch (temp_code)
+ {
+ case 0x00:
+ /* This is mov.b @aa:16,Rd. */
+ bfd_put_8 (abfd, (code & 0xf) | 0x20,
+ contents + irel->r_offset - 2);
+ break;
+ case 0x80:
+ /* This is mov.b Rs,@aa:16. */
+ bfd_put_8 (abfd, (code & 0xf) | 0x30,
+ contents + irel->r_offset - 2);
+ break;
+ case 0x18:
+ /* This is a bit-maniputation instruction that
+ stores one bit into memory, one of "bclr",
+ "bist", "bnot", "bset", and "bst". */
+ bfd_put_8 (abfd, 0x7f, contents + irel->r_offset - 2);
+ break;
+ case 0x10:
+ /* This is a bit-maniputation instruction that
+ loads one bit from memory, one of "band",
+ "biand", "bild", "bior", "bixor", "bld", "bor",
+ "btst", and "bxor". */
+ bfd_put_8 (abfd, 0x7e, contents + irel->r_offset - 2);
+ break;
+ default:
+ abort ();
+ }
/* Fix the relocation's type. */
irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
@@ -1056,8 +1104,15 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
break;
}
- /* This is a 24 bit absolute address in a "mov.b" insn, which may
- become an 8 bit absolute address if its in the right range. */
+ /* This is a 24-bit absolute address in one of the following
+ instructions:
+
+ "band", "bclr", "biand", "bild", "bior", "bist", "bixor",
+ "bld", "bnot", "bor", "bset", "bst", "btst", "bxor", and
+ "mov.b"
+
+ We may relax this into an 8-bit absolute address if it's in
+ the right range. */
case R_H8_DIR24A8:
{
bfd_vma value;
@@ -1066,6 +1121,7 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
if (value >= 0xffffff00u)
{
unsigned char code;
+ unsigned char temp_code;
/* Note that we've changed the relocs, section contents,
etc. */
@@ -1076,24 +1132,46 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 2);
- /* Sanity check. */
+ /* All instructions with R_H8_DIR24A8 start with
+ 0x6a. */
if (code != 0x6a)
abort ();
- code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
+ temp_code = code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
+
+ /* If this is a mov.b instruction, clear the lower
+ nibble, which contains the source/destination
+ register number. */
+ if ((temp_code & 0x30) != 0x30)
+ temp_code &= 0xf0;
- switch (code & 0xf0)
+ switch (temp_code)
{
case 0x20:
+ /* This is mov.b @aa:24/32,Rd. */
bfd_put_8 (abfd, (code & 0xf) | 0x20,
contents + irel->r_offset - 2);
break;
case 0xa0:
+ /* This is mov.b Rs,@aa:24/32. */
bfd_put_8 (abfd, (code & 0xf) | 0x30,
contents + irel->r_offset - 2);
break;
+ case 0x38:
+ /* This is a bit-maniputation instruction that
+ stores one bit into memory, one of "bclr",
+ "bist", "bnot", "bset", and "bst". */
+ bfd_put_8 (abfd, 0x7f, contents + irel->r_offset - 2);
+ break;
+ case 0x30:
+ /* This is a bit-maniputation instruction that
+ loads one bit from memory, one of "band",
+ "biand", "bild", "bior", "bixor", "bld", "bor",
+ "btst", and "bxor". */
+ bfd_put_8 (abfd, 0x7e, contents + irel->r_offset - 2);
+ break;
default:
- abort ();
+ abort();
}
/* Fix the relocation's type. */
@@ -1113,10 +1191,17 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
}
}
- /* FALLTHRU */
+ /* Fall through. */
+
+ /* This is a 24-/32-bit absolute address in one of the
+ following instructions:
- /* This is a 24/32bit absolute address in a "mov" insn, which may
- become a 16-bit absolute address if it is in the right range. */
+ "band", "bclr", "biand", "bild", "bior", "bist",
+ "bixor", "bld", "bnot", "bor", "bset", "bst", "btst",
+ "bxor", and "mov.[bwl]"
+
+ We may relax this into an 16-bit absolute address if it's
+ in the right range. */
case R_H8_DIR32A16:
{
bfd_vma value;
@@ -1135,7 +1220,9 @@ elf32_h8_relax_section (bfd *abfd, asection *sec,
/* Get the opcode. */
code = bfd_get_8 (abfd, contents + irel->r_offset - 1);
- /* We just need to turn off bit 0x20. */
+ /* Fix the opcode. For all the instructions that
+ belong to this relaxation, we simply need to turn
+ off bit 0x20 in the previous byte. */
code &= ~0x20;
bfd_put_8 (abfd, code, contents + irel->r_offset - 1);
@@ -1428,6 +1515,42 @@ elf32_h8_get_relocated_section_contents (bfd *output_bfd,
return NULL;
}
+static asection *
+elf32_h8_gc_mark_hook (asection *sec,
+ struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ Elf_Internal_Rela *rel ATTRIBUTE_UNUSED,
+ struct elf_link_hash_entry *h,
+ Elf_Internal_Sym *sym)
+{
+ if (h != NULL)
+ {
+ switch (h->root.type)
+ {
+ case bfd_link_hash_defined:
+ case bfd_link_hash_defweak:
+ return h->root.u.def.section;
+
+ case bfd_link_hash_common:
+ return h->root.u.c.p->section;
+
+ default:
+ break;
+ }
+ }
+ else
+ return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
+ return NULL;
+}
+
+static bfd_boolean
+elf32_h8_gc_sweep_hook (bfd *abfd ATTRIBUTE_UNUSED,
+ struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ asection *sec ATTRIBUTE_UNUSED,
+ const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED)
+{
+ return TRUE;
+}
+
#define TARGET_BIG_SYM bfd_elf32_h8300_vec
#define TARGET_BIG_NAME "elf32-h8300"
@@ -1446,6 +1569,8 @@ elf32_h8_get_relocated_section_contents (bfd *output_bfd,
elf32_h8_object_p
#define bfd_elf32_bfd_merge_private_bfd_data \
elf32_h8_merge_private_bfd_data
+#define elf_backend_gc_mark_hook elf32_h8_gc_mark_hook
+#define elf_backend_gc_sweep_hook elf32_h8_gc_sweep_hook
/* ??? when elf_backend_relocate_section is not defined, elf32-target.h
defaults to using _bfd_generic_link_hash_table_create, but
@@ -1457,6 +1582,7 @@ elf32_h8_get_relocated_section_contents (bfd *output_bfd,
/* Use an H8 specific linker, not the ELF generic linker. */
#define elf_backend_relocate_section elf32_h8_relocate_section
#define elf_backend_rela_normal 1
+#define elf_backend_can_gc_sections 1
/* And relaxing stuff. */
#define bfd_elf32_bfd_relax_section elf32_h8_relax_section
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 876efc6ab0c..0a3d83fb5a8 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -1,5 +1,5 @@
/* Intel 80386/80486-specific support for 32-bit ELF
- Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -346,29 +346,50 @@ elf_i386_is_local_label_name (bfd *abfd, const char *name)
}
/* Support for core dump NOTE sections. */
+
static bfd_boolean
elf_i386_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
{
int offset;
size_t raw_size;
- switch (note->descsz)
+ if (note->namesz == 8 && strcmp (note->namedata, "FreeBSD") == 0)
{
- default:
- return FALSE;
+ int pr_version = bfd_get_32 (abfd, note->descdata);
+
+ if (pr_version != 1)
+ return FALSE;
+
+ /* pr_cursig */
+ elf_tdata (abfd)->core_signal = bfd_get_32 (abfd, note->descdata + 20);
+
+ /* pr_pid */
+ elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24);
+
+ /* pr_reg */
+ offset = 28;
+ raw_size = bfd_get_32 (abfd, note->descdata + 8);
+ }
+ else
+ {
+ switch (note->descsz)
+ {
+ default:
+ return FALSE;
- case 144: /* Linux/i386 */
- /* pr_cursig */
- elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12);
+ case 144: /* Linux/i386 */
+ /* pr_cursig */
+ elf_tdata (abfd)->core_signal = bfd_get_16 (abfd, note->descdata + 12);
- /* pr_pid */
- elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24);
+ /* pr_pid */
+ elf_tdata (abfd)->core_pid = bfd_get_32 (abfd, note->descdata + 24);
- /* pr_reg */
- offset = 72;
- raw_size = 68;
+ /* pr_reg */
+ offset = 72;
+ raw_size = 68;
- break;
+ break;
+ }
}
/* Make a ".reg/999" section. */
@@ -379,22 +400,36 @@ elf_i386_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
static bfd_boolean
elf_i386_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
{
- switch (note->descsz)
+ if (note->namesz == 8 && strcmp (note->namedata, "FreeBSD") == 0)
{
- default:
+ int pr_version = bfd_get_32 (abfd, note->descdata);
+
+ if (pr_version != 1)
return FALSE;
- case 124: /* Linux/i386 elf_prpsinfo */
- elf_tdata (abfd)->core_program
- = _bfd_elfcore_strndup (abfd, note->descdata + 28, 16);
- elf_tdata (abfd)->core_command
- = _bfd_elfcore_strndup (abfd, note->descdata + 44, 80);
+ elf_tdata (abfd)->core_program
+ = _bfd_elfcore_strndup (abfd, note->descdata + 8, 17);
+ elf_tdata (abfd)->core_command
+ = _bfd_elfcore_strndup (abfd, note->descdata + 25, 81);
+ }
+ else
+ {
+ switch (note->descsz)
+ {
+ default:
+ return FALSE;
+
+ case 124: /* Linux/i386 elf_prpsinfo. */
+ elf_tdata (abfd)->core_program
+ = _bfd_elfcore_strndup (abfd, note->descdata + 28, 16);
+ elf_tdata (abfd)->core_command
+ = _bfd_elfcore_strndup (abfd, note->descdata + 44, 80);
+ }
}
/* Note that for some reason, a spurious space is tacked
onto the end of the args in some (at least one anyway)
implementations, so strip it off if it exists. */
-
{
char *command = elf_tdata (abfd)->core_command;
int n = strlen (command);
diff --git a/bfd/elf32-m32r.c b/bfd/elf32-m32r.c
index 2794ffb413f..3edf4a9738f 100644
--- a/bfd/elf32-m32r.c
+++ b/bfd/elf32-m32r.c
@@ -44,6 +44,8 @@ static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
static void m32r_info_to_howto_rel
PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
+static void m32r_info_to_howto
+ PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
bfd_boolean _bfd_m32r_elf_section_from_bfd_section
PARAMS ((bfd *, asection *, int *));
void _bfd_m32r_elf_symbol_processing
@@ -77,10 +79,34 @@ static bfd_boolean m32r_elf_check_relocs
PARAMS ((bfd *, struct bfd_link_info *, asection *,
const Elf_Internal_Rela *));
+static bfd_boolean m32r_elf_adjust_dynamic_symbol
+ PARAMS ((struct bfd_link_info *, struct elf_link_hash_entry *));
+static bfd_boolean m32r_elf_size_dynamic_sections
+ PARAMS ((bfd *, struct bfd_link_info *));
+
asection * m32r_elf_gc_mark_hook
PARAMS ((asection *, struct bfd_link_info *, Elf_Internal_Rela *,
struct elf_link_hash_entry *, Elf_Internal_Sym *));
+static bfd_boolean m32r_elf_create_dynamic_sections
+ PARAMS ((bfd *, struct bfd_link_info *));
+
+static bfd_boolean m32r_elf_finish_dynamic_sections
+ PARAMS ((bfd *, struct bfd_link_info *));
+
+static bfd_boolean m32r_elf_finish_dynamic_symbol
+ PARAMS ((bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
+ Elf_Internal_Sym *));
+
+static bfd_boolean allocate_dynrelocs
+ PARAMS ((struct elf_link_hash_entry *, PTR));
+static bfd_boolean readonly_dynrelocs
+ PARAMS ((struct elf_link_hash_entry *, PTR));
+static enum elf_reloc_type_class m32r_elf_reloc_type_class
+ PARAMS ((const Elf_Internal_Rela *));
+static bfd_boolean m32r_elf_fake_sections
+ PARAMS ((bfd *, Elf_Internal_Shdr *, asection *));
+
#define NOP_INSN 0x7000
#define MAKE_PARALLEL(insn) ((insn) | 0x8000)
@@ -88,11 +114,55 @@ asection * m32r_elf_gc_mark_hook
This only saves space in libraries and object files, but perhaps
relocs will be put in ROM? All in all though, REL relocs are a pain
to work with. */
-#define USE_REL 1
+/* #define USE_REL 1
#ifndef USE_REL
#define USE_REL 0
-#endif
+#endif */
+/* Use RELA. But use REL to link old objects for backwords compatibility. */
+
+/* Functions for the M32R ELF linker. */
+
+/* The name of the dynamic interpreter. This is put in the .interp
+ section. */
+
+#define ELF_DYNAMIC_INTERPRETER "/usr/lib/libc.so.1"
+
+/* The nop opcode we use. */
+
+#define M32R_NOP 0x7000f000
+
+#define PLT_EMPTY 0x10101010 /* RIE -> RIE */
+
+/* The size in bytes of an entry in the procedure linkage table. */
+
+#define PLT_ENTRY_SIZE 20
+#define PLT_HEADER_SIZE 20
+
+/* The first one entries in a procedure linkage table are reserved,
+ and the initial contents are unimportant (we zero them out).
+ Subsequent entries look like this. */
+
+#define PLT0_ENTRY_WORD0 0xd6c00000 /* seth r6, #high(.got+4) */
+#define PLT0_ENTRY_WORD1 0x86e60000 /* or3 r6, r6, #low(.got)+4) */
+#define PLT0_ENTRY_WORD2 0x24e626c6 /* ld r4, @r6+ -> ld r6, @r6 */
+#define PLT0_ENTRY_WORD3 0x1fc6f000 /* jmp r6 || pnop */
+#define PLT0_ENTRY_WORD4 PLT_EMPTY /* RIE -> RIE */
+
+#define PLT0_PIC_ENTRY_WORD0 0xa4cc0004 /* ld r4, @(4,r12) */
+#define PLT0_PIC_ENTRY_WORD1 0xa6cc0008 /* ld r6, @(8,r12) */
+#define PLT0_PIC_ENTRY_WORD2 0x1fc6f000 /* jmp r6 || nop */
+#define PLT0_PIC_ENTRY_WORD3 PLT_EMPTY /* RIE -> RIE */
+#define PLT0_PIC_ENTRY_WORD4 PLT_EMPTY /* RIE -> RIE */
+
+#define PLT_ENTRY_WORD0 0xe6000000 /* ld24 r6, .name_in_GOT */
+#define PLT_ENTRY_WORD1 0x06acf000 /* add r6, r12 || nop */
+#define PLT_ENTRY_WORD0b 0xd6c00000 /* seth r6, #high(.name_in_GOT) */
+#define PLT_ENTRY_WORD1b 0x86e60000 /* or3 r6, r6, #low(.name_in_GOT) */
+#define PLT_ENTRY_WORD2 0x26c61fc6 /* ld r6, @r6 -> jmp r6 */
+#define PLT_ENTRY_WORD3 0xe5000000 /* ld24 r5, $offset */
+#define PLT_ENTRY_WORD4 0xff000000 /* bra .plt0. */
+
static reloc_howto_type m32r_elf_howto_table[] =
{
@@ -302,6 +372,437 @@ static reloc_howto_type m32r_elf_howto_table[] =
0, /* dst_mask */
FALSE), /* pcrel_offset */
+ EMPTY_HOWTO (13),
+ EMPTY_HOWTO (14),
+ EMPTY_HOWTO (15),
+ EMPTY_HOWTO (16),
+ EMPTY_HOWTO (17),
+ EMPTY_HOWTO (18),
+ EMPTY_HOWTO (19),
+ EMPTY_HOWTO (20),
+ EMPTY_HOWTO (21),
+ EMPTY_HOWTO (22),
+ EMPTY_HOWTO (23),
+ EMPTY_HOWTO (24),
+ EMPTY_HOWTO (25),
+ EMPTY_HOWTO (26),
+ EMPTY_HOWTO (27),
+ EMPTY_HOWTO (28),
+ EMPTY_HOWTO (29),
+ EMPTY_HOWTO (30),
+ EMPTY_HOWTO (31),
+ EMPTY_HOWTO (32),
+
+ /* A 16 bit absolute relocation. */
+ HOWTO (R_M32R_16_RELA, /* type */
+ 0, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_16_RELA", /* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 32 bit absolute relocation. */
+ HOWTO (R_M32R_32_RELA, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc,/* special_function */
+ "R_M32R_32_RELA", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* A 24 bit address. */
+ HOWTO (R_M32R_24_RELA, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 24, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_unsigned, /* complain_on_overflow */
+ bfd_elf_generic_reloc,/* special_function */
+ "R_M32R_24_RELA", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffff, /* src_mask */
+ 0xffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ HOWTO (R_M32R_10_PCREL_RELA, /* type */
+ 2, /* rightshift */
+ 1, /* size (0 = byte, 1 = short, 2 = long) */
+ 10, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ m32r_elf_10_pcrel_reloc, /* special_function */
+ "R_M32R_10_PCREL_RELA",/* name */
+ FALSE, /* partial_inplace */
+ 0xff, /* src_mask */
+ 0xff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* A relative 18 bit relocation, right shifted by 2. */
+ HOWTO (R_M32R_18_PCREL_RELA, /* type */
+ 2, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_18_PCREL_RELA",/* name */
+ FALSE, /* partial_inplace */
+ 0xffff, /* src_mask */
+ 0xffff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* A relative 26 bit relocation, right shifted by 2. */
+ HOWTO (R_M32R_26_PCREL_RELA, /* type */
+ 2, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 26, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_26_PCREL_RELA",/* name */
+ FALSE, /* partial_inplace */
+ 0xffffff, /* src_mask */
+ 0xffffff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* High 16 bits of address when lower 16 is or'd in. */
+ HOWTO (R_M32R_HI16_ULO_RELA, /* type */
+ 16, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_HI16_ULO_RELA",/* name */
+ FALSE, /* partial_inplace */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* High 16 bits of address when lower 16 is added in. */
+ HOWTO (R_M32R_HI16_SLO_RELA, /* type */
+ 16, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_HI16_SLO_RELA",/* name */
+ FALSE, /* partial_inplace */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* Lower 16 bits of address. */
+ HOWTO (R_M32R_LO16_RELA, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_LO16_RELA", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* Small data area 16 bits offset. */
+ HOWTO (R_M32R_SDA16_RELA, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_SDA16_RELA", /* name */
+ TRUE, /* partial_inplace */ /* FIXME: correct? */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* GNU extension to record C++ vtable hierarchy */
+ HOWTO (R_M32R_RELA_GNU_VTINHERIT, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ NULL, /* special_function */
+ "R_M32R_RELA_GNU_VTINHERIT", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* GNU extension to record C++ vtable member usage */
+ HOWTO (R_M32R_RELA_GNU_VTENTRY, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ _bfd_elf_rel_vtable_reloc_fn, /* special_function */
+ "R_M32R_RELA_GNU_VTENTRY", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ EMPTY_HOWTO (45),
+ EMPTY_HOWTO (46),
+ EMPTY_HOWTO (47),
+
+ /* Like R_M32R_24, but referring to the GOT table entry for
+ the symbol. */
+ HOWTO (R_M32R_GOT24, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 24, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_unsigned, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GOT24", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffff, /* src_mask */
+ 0xffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* Like R_M32R_PCREL, but referring to the procedure linkage table
+ entry for the symbol. */
+ HOWTO (R_M32R_26_PLTREL, /* type */
+ 2, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 24, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_signed, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_26_PLTREL", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffff, /* src_mask */
+ 0xffffff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* This is used only by the dynamic linker. The symbol should exist
+ both in the object being run and in some shared library. The
+ dynamic linker copies the data addressed by the symbol from the
+ shared library into the object, because the object being
+ run has to have the data at some particular address. */
+ HOWTO (R_M32R_COPY, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_COPY", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* Like R_M32R_24, but used when setting global offset table
+ entries. */
+ HOWTO (R_M32R_GLOB_DAT, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GLOB_DAT", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* Marks a procedure linkage table entry for a symbol. */
+ HOWTO (R_M32R_JMP_SLOT, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_JMP_SLOT", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* Used only by the dynamic linker. When the object is run, this
+ longword is set to the load address of the object, plus the
+ addend. */
+ HOWTO (R_M32R_RELATIVE, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_RELATIVE", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ HOWTO (R_M32R_GOTOFF, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 32, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_bitfield, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GOTOFF", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffffff, /* src_mask */
+ 0xffffffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* An PC Relative 24-bit relocation used when setting PIC offset
+ table register. */
+ HOWTO (R_M32R_GOTPC24, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 24, /* bitsize */
+ TRUE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_unsigned, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GOTPC24", /* name */
+ FALSE, /* partial_inplace */
+ 0xffffff, /* src_mask */
+ 0xffffff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* Like R_M32R_HI16_ULO, but referring to the GOT table entry for
+ the symbol. */
+ HOWTO (R_M32R_GOT16_HI_ULO, /* type */
+ 16, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GOT16_HI_ULO", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* Like R_M32R_HI16_SLO, but referring to the GOT table entry for
+ the symbol. */
+ HOWTO (R_M32R_GOT16_HI_SLO, /* type */
+ 16, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GOT16_HI_SLO", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* Like R_M32R_LO16, but referring to the GOT table entry for
+ the symbol. */
+ HOWTO (R_M32R_GOT16_LO, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GOT16_LO", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ FALSE), /* pcrel_offset */
+
+ /* An PC Relative relocation used when setting PIC offset table register.
+ Like R_M32R_HI16_ULO, but referring to the GOT table entry for
+ the symbol. */
+ HOWTO (R_M32R_GOTPC_HI_ULO, /* type */
+ 16, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GOTPC_HI_ULO", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* An PC Relative relocation used when setting PIC offset table register.
+ Like R_M32R_HI16_SLO, but referring to the GOT table entry for
+ the symbol. */
+ HOWTO (R_M32R_GOTPC_HI_SLO, /* type */
+ 16, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GOTPC_HI_SLO", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ TRUE), /* pcrel_offset */
+
+ /* An PC Relative relocation used when setting PIC offset table register.
+ Like R_M32R_LO16, but referring to the GOT table entry for
+ the symbol. */
+ HOWTO (R_M32R_GOTPC_LO, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 16, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ bfd_elf_generic_reloc, /* special_function */
+ "R_M32R_GOTPC_LO", /* name */
+ FALSE, /* partial_inplace */
+ 0x0000ffff, /* src_mask */
+ 0x0000ffff, /* dst_mask */
+ TRUE), /* pcrel_offset */
};
/* Handle the R_M32R_10_PCREL reloc. */
@@ -715,7 +1216,7 @@ struct m32r_reloc_map
unsigned char elf_reloc_val;
};
-static const struct m32r_reloc_map m32r_reloc_map[] =
+static const struct m32r_reloc_map m32r_reloc_map_old[] =
{
{ BFD_RELOC_NONE, R_M32R_NONE },
{ BFD_RELOC_16, R_M32R_16 },
@@ -732,6 +1233,38 @@ static const struct m32r_reloc_map m32r_reloc_map[] =
{ BFD_RELOC_VTABLE_ENTRY, R_M32R_GNU_VTENTRY },
};
+static const struct m32r_reloc_map m32r_reloc_map[] =
+{
+ { BFD_RELOC_NONE, R_M32R_NONE },
+ { BFD_RELOC_16, R_M32R_16_RELA },
+ { BFD_RELOC_32, R_M32R_32_RELA },
+ { BFD_RELOC_M32R_24, R_M32R_24_RELA },
+ { BFD_RELOC_M32R_10_PCREL, R_M32R_10_PCREL_RELA },
+ { BFD_RELOC_M32R_18_PCREL, R_M32R_18_PCREL_RELA },
+ { BFD_RELOC_M32R_26_PCREL, R_M32R_26_PCREL_RELA },
+ { BFD_RELOC_M32R_HI16_ULO, R_M32R_HI16_ULO_RELA },
+ { BFD_RELOC_M32R_HI16_SLO, R_M32R_HI16_SLO_RELA },
+ { BFD_RELOC_M32R_LO16, R_M32R_LO16_RELA },
+ { BFD_RELOC_M32R_SDA16, R_M32R_SDA16_RELA },
+ { BFD_RELOC_VTABLE_INHERIT, R_M32R_RELA_GNU_VTINHERIT },
+ { BFD_RELOC_VTABLE_ENTRY, R_M32R_RELA_GNU_VTENTRY },
+
+ { BFD_RELOC_M32R_GOT24, R_M32R_GOT24 },
+ { BFD_RELOC_M32R_26_PLTREL, R_M32R_26_PLTREL },
+ { BFD_RELOC_M32R_COPY, R_M32R_COPY },
+ { BFD_RELOC_M32R_GLOB_DAT, R_M32R_GLOB_DAT },
+ { BFD_RELOC_M32R_JMP_SLOT, R_M32R_JMP_SLOT },
+ { BFD_RELOC_M32R_RELATIVE, R_M32R_RELATIVE },
+ { BFD_RELOC_M32R_GOTOFF, R_M32R_GOTOFF },
+ { BFD_RELOC_M32R_GOTPC24, R_M32R_GOTPC24 },
+ { BFD_RELOC_M32R_GOT16_HI_ULO, R_M32R_GOT16_HI_ULO },
+ { BFD_RELOC_M32R_GOT16_HI_SLO, R_M32R_GOT16_HI_SLO },
+ { BFD_RELOC_M32R_GOT16_LO, R_M32R_GOT16_LO },
+ { BFD_RELOC_M32R_GOTPC_HI_ULO, R_M32R_GOTPC_HI_ULO },
+ { BFD_RELOC_M32R_GOTPC_HI_SLO, R_M32R_GOTPC_HI_SLO },
+ { BFD_RELOC_M32R_GOTPC_LO, R_M32R_GOTPC_LO },
+};
+
static reloc_howto_type *
bfd_elf32_bfd_reloc_type_lookup (abfd, code)
bfd *abfd ATTRIBUTE_UNUSED;
@@ -739,6 +1272,16 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, code)
{
unsigned int i;
+#ifdef USE_M32R_OLD_RELOC
+ for (i = 0;
+ i < sizeof (m32r_reloc_map_old) / sizeof (struct m32r_reloc_map);
+ i++)
+ {
+ if (m32r_reloc_map_old[i].bfd_reloc_val == code)
+ return &m32r_elf_howto_table[m32r_reloc_map_old[i].elf_reloc_val];
+ }
+#else /* ! USE_M32R_OLD_RELOC */
+
for (i = 0;
i < sizeof (m32r_reloc_map) / sizeof (struct m32r_reloc_map);
i++)
@@ -746,6 +1289,7 @@ bfd_elf32_bfd_reloc_type_lookup (abfd, code)
if (m32r_reloc_map[i].bfd_reloc_val == code)
return &m32r_elf_howto_table[m32r_reloc_map[i].elf_reloc_val];
}
+#endif
return NULL;
}
@@ -761,9 +1305,22 @@ m32r_info_to_howto_rel (abfd, cache_ptr, dst)
unsigned int r_type;
r_type = ELF32_R_TYPE (dst->r_info);
- BFD_ASSERT (r_type < (unsigned int) R_M32R_max);
+ BFD_ASSERT (ELF32_R_TYPE(dst->r_info) <= (unsigned int) R_M32R_GNU_VTENTRY)
cache_ptr->howto = &m32r_elf_howto_table[r_type];
}
+
+static void
+m32r_info_to_howto (abfd, cache_ptr, dst)
+ bfd *abfd ATTRIBUTE_UNUSED;
+ arelent *cache_ptr;
+ Elf_Internal_Rela *dst;
+{
+ BFD_ASSERT ((ELF32_R_TYPE(dst->r_info) == (unsigned int) R_M32R_NONE)
+ || ((ELF32_R_TYPE(dst->r_info) > (unsigned int) R_M32R_GNU_VTENTRY)
+ && (ELF32_R_TYPE(dst->r_info) < (unsigned int) R_M32R_max)));
+ cache_ptr->howto = &m32r_elf_howto_table[ELF32_R_TYPE(dst->r_info)];
+}
+
/* Given a BFD section, try to locate the corresponding ELF section
index. */
@@ -935,6 +1492,997 @@ m32r_elf_final_sda_base (output_bfd, info, error_message, psb)
return bfd_reloc_ok;
}
+/* Return size of a PLT entry. */
+#define elf_m32r_sizeof_plt(info) PLT_ENTRY_SIZE
+
+/* The m32r linker needs to keep track of the number of relocs that it
+ decides to copy in check_relocs for each symbol. This is so that
+ it can discard PC relative relocs if it doesn't need them when
+ linking with -Bsymbolic. We store the information in a field
+ extending the regular ELF linker hash table. */
+
+/* This structure keeps track of the number of PC relative relocs we
+ have copied for a given symbol. */
+
+struct elf_m32r_pcrel_relocs_copied
+{
+ /* Next section. */
+ struct elf_m32r_pcrel_relocs_copied *next;
+ /* A section in dynobj. */
+ asection *section;
+ /* Number of relocs copied in this section. */
+ bfd_size_type count;
+};
+
+/* The sh linker needs to keep track of the number of relocs that it
+ decides to copy as dynamic relocs in check_relocs for each symbol.
+ This is so that it can later discard them if they are found to be
+ unnecessary. We store the information in a field extending the
+ regular ELF linker hash table. */
+
+struct elf_m32r_dyn_relocs
+{
+ struct elf_m32r_dyn_relocs *next;
+
+ /* The input section of the reloc. */
+ asection *sec;
+
+ /* Total number of relocs copied for the input section. */
+ bfd_size_type count;
+
+ /* Number of pc-relative relocs copied for the input section. */
+ bfd_size_type pc_count;
+};
+
+
+/* m32r ELF linker hash entry. */
+
+struct elf_m32r_link_hash_entry
+{
+ struct elf_link_hash_entry root;
+
+ /* Track dynamic relocs copied for this symbol. */
+ struct elf_m32r_dyn_relocs *dyn_relocs;
+
+// bfd_signed_vma gotplt_refcount;
+
+ /* Number of PC relative relocs copied for this symbol. */
+ /* struct elf_m32r_pcrel_relocs_copied *pcrel_relocs_copied; FIXME */
+};
+
+/* m32r ELF linker hash table. */
+
+struct elf_m32r_link_hash_table
+{
+ struct elf_link_hash_table root;
+
+ /* Short-cuts to get to dynamic linker sections. */
+ asection *sgot;
+ asection *sgotplt;
+ asection *srelgot;
+ asection *splt;
+ asection *srelplt;
+ asection *sdynbss;
+ asection *srelbss;
+
+ /* Small local sym to section mapping cache. */
+ struct sym_sec_cache sym_sec;
+};
+
+/* Traverse an m32r ELF linker hash table. */
+
+#define m32r_elf_link_hash_traverse(table, func, info) \
+ (elf_link_hash_traverse \
+ (&(table)->root, \
+ (bfd_boolean (*) PARAMS ((struct elf_link_hash_entry *, PTR))) (func), \
+ (info)))
+
+/* Get the m32r ELF linker hash table from a link_info structure. */
+
+
+#define m32r_elf_hash_table(p) \
+ ((struct elf_m32r_link_hash_table *) ((p)->hash))
+
+/* Create an entry in an m32r ELF linker hash table. */
+static struct bfd_hash_entry *
+m32r_elf_link_hash_newfunc (struct bfd_hash_entry *, struct bfd_hash_table *,
+ const char * );
+
+static struct bfd_hash_entry *
+m32r_elf_link_hash_newfunc (entry, table, string)
+ struct bfd_hash_entry *entry;
+ struct bfd_hash_table *table;
+ const char *string;
+{
+ struct elf_m32r_link_hash_entry *ret =
+ (struct elf_m32r_link_hash_entry *) entry;
+
+ /* Allocate the structure if it has not already been allocated by a
+ subclass. */
+ if (ret == (struct elf_m32r_link_hash_entry *) NULL)
+ ret = ((struct elf_m32r_link_hash_entry *)
+ bfd_hash_allocate (table,
+ sizeof (struct elf_m32r_link_hash_entry)));
+ if (ret == (struct elf_m32r_link_hash_entry *) NULL)
+ return (struct bfd_hash_entry *) ret;
+
+ /* Call the allocation method of the superclass. */
+ ret = ((struct elf_m32r_link_hash_entry *)
+ _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
+ table, string));
+ if (ret != (struct elf_m32r_link_hash_entry *) NULL)
+ {
+ struct elf_m32r_link_hash_entry *eh;
+
+ eh = (struct elf_m32r_link_hash_entry *) ret;
+ eh->dyn_relocs = NULL;
+// eh->gotplt_refcount = 0;
+ /* eh->pcrel_relocs_copied = NULL; FIXME */
+ }
+
+ return (struct bfd_hash_entry *) ret;
+}
+
+/* Create an m32r ELF linker hash table. */
+static struct bfd_link_hash_table *m32r_elf_link_hash_table_create (bfd *);
+
+static struct bfd_link_hash_table *
+m32r_elf_link_hash_table_create (abfd)
+ bfd *abfd;
+{
+ struct elf_m32r_link_hash_table *ret;
+ bfd_size_type amt = sizeof (struct elf_m32r_link_hash_table);
+
+ ret = (struct elf_m32r_link_hash_table *) bfd_malloc (amt);
+ if (ret == (struct elf_m32r_link_hash_table *) NULL)
+ return NULL;
+
+ if (! _bfd_elf_link_hash_table_init (&ret->root, abfd,
+ m32r_elf_link_hash_newfunc))
+ {
+ free (ret);
+ return NULL;
+ }
+
+ ret->sgot = NULL;
+ ret->sgotplt = NULL;
+ ret->srelgot = NULL;
+ ret->splt = NULL;
+ ret->srelplt = NULL;
+ ret->sdynbss = NULL;
+ ret->srelbss = NULL;
+ ret->sym_sec.abfd = NULL;
+
+ return &ret->root.root;
+}
+
+/* Create .got, .gotplt, and .rela.got sections in DYNOBJ, and set up
+ shortcuts to them in our hash table. */
+static bfd_boolean create_got_section (bfd *, struct bfd_link_info *);
+
+static bfd_boolean
+create_got_section (dynobj, info)
+ bfd *dynobj;
+ struct bfd_link_info *info;
+{
+ struct elf_m32r_link_hash_table *htab;
+
+ if (! _bfd_elf_create_got_section (dynobj, info))
+ return FALSE;
+
+ htab = m32r_elf_hash_table (info);
+ htab->sgot = bfd_get_section_by_name (dynobj, ".got");
+ htab->sgotplt = bfd_get_section_by_name (dynobj, ".got.plt");
+ if (! htab->sgot || ! htab->sgotplt)
+ abort ();
+
+ htab->srelgot = bfd_make_section (dynobj, ".rela.got");
+ if (htab->srelgot == NULL
+ || ! bfd_set_section_flags (dynobj, htab->srelgot,
+ (SEC_ALLOC
+ | SEC_LOAD
+ | SEC_HAS_CONTENTS
+ | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED
+ | SEC_READONLY))
+ || ! bfd_set_section_alignment (dynobj, htab->srelgot, 2))
+ return FALSE;
+
+ return TRUE;
+}
+
+/* Create dynamic sections when linking against a dynamic object. */
+
+static bfd_boolean
+m32r_elf_create_dynamic_sections (abfd, info)
+ bfd *abfd;
+ struct bfd_link_info *info;
+{
+ struct elf_m32r_link_hash_table *htab;
+ flagword flags, pltflags;
+ register asection *s;
+ const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+ int ptralign = 2; /* 32bit */
+
+ htab = m32r_elf_hash_table (info);
+
+ /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
+ .rel[a].bss sections. */
+
+ flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+ | SEC_LINKER_CREATED);
+
+ pltflags = flags;
+ pltflags |= SEC_CODE;
+ if (bed->plt_not_loaded)
+ pltflags &= ~ (SEC_LOAD | SEC_HAS_CONTENTS);
+ if (bed->plt_readonly)
+ pltflags |= SEC_READONLY;
+
+ s = bfd_make_section (abfd, ".plt");
+ htab->splt = s;
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, pltflags)
+ || ! bfd_set_section_alignment (abfd, s, bed->plt_alignment))
+ return FALSE;
+
+ if (bed->want_plt_sym)
+ {
+ /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the
+ .plt section. */
+ struct elf_link_hash_entry *h = NULL;
+ if (! (_bfd_generic_link_add_one_symbol
+ (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s,
+ (bfd_vma) 0, (const char *) NULL, FALSE,
+ get_elf_backend_data (abfd)->collect,
+ (struct bfd_link_hash_entry **) &h)))
+ return FALSE;
+ h->elf_link_hash_flags |= ELF_LINK_HASH_DEF_REGULAR;
+ h->type = STT_OBJECT;
+
+ if (info->shared
+ && ! _bfd_elf_link_record_dynamic_symbol (info, h))
+ return FALSE;
+ }
+
+ s = bfd_make_section (abfd,
+ bed->default_use_rela_p ? ".rela.plt" : ".rel.plt");
+ htab->srelplt = s;
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
+ || ! bfd_set_section_alignment (abfd, s, ptralign))
+ return FALSE;
+
+ if (htab->sgot == NULL
+ && ! create_got_section (abfd, info))
+ return FALSE;
+
+ {
+ const char *secname;
+ char *relname;
+ flagword secflags;
+ asection *sec;
+
+ for (sec = abfd->sections; sec; sec = sec->next)
+ {
+ secflags = bfd_get_section_flags (abfd, sec);
+ if ((secflags & (SEC_DATA | SEC_LINKER_CREATED))
+ || ((secflags & SEC_HAS_CONTENTS) != SEC_HAS_CONTENTS))
+ continue;
+ secname = bfd_get_section_name (abfd, sec);
+ relname = (char *) bfd_malloc ((bfd_size_type) strlen (secname) + 6);
+ strcpy (relname, ".rela");
+ strcat (relname, secname);
+ if (bfd_get_section_by_name (abfd, secname))
+ continue;
+ s = bfd_make_section (abfd, relname);
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
+ || ! bfd_set_section_alignment (abfd, s, ptralign))
+ return FALSE;
+ }
+ }
+
+ if (bed->want_dynbss)
+ {
+ /* The .dynbss section is a place to put symbols which are defined
+ by dynamic objects, are referenced by regular objects, and are
+ not functions. We must allocate space for them in the process
+ image and use a R_*_COPY reloc to tell the dynamic linker to
+ initialize them at run time. The linker script puts the .dynbss
+ section into the .bss section of the final image. */
+ s = bfd_make_section (abfd, ".dynbss");
+ htab->sdynbss = s;
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, SEC_ALLOC))
+ return FALSE;
+ /* The .rel[a].bss section holds copy relocs. This section is not
+ normally needed. We need to create it here, though, so that the
+ linker will map it to an output section. We can't just create it
+ only if we need it, because we will not know whether we need it
+ until we have seen all the input files, and the first time the
+ main linker code calls BFD after examining all the input files
+ (size_dynamic_sections) the input sections have already been
+ mapped to the output sections. If the section turns out not to
+ be needed, we can discard it later. We will never need this
+ section when generating a shared object, since they do not use
+ copy relocs. */
+ if (! info->shared)
+ {
+ s = bfd_make_section (abfd,
+ (bed->default_use_rela_p
+ ? ".rela.bss" : ".rel.bss"));
+ htab->srelbss = s;
+ if (s == NULL
+ || ! bfd_set_section_flags (abfd, s, flags | SEC_READONLY)
+ || ! bfd_set_section_alignment (abfd, s, ptralign))
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+/* Copy the extra info we tack onto an elf_link_hash_entry. */
+static void m32r_elf_copy_indirect_symbol (const struct elf_backend_data *,
+ struct elf_link_hash_entry *,
+ struct elf_link_hash_entry *);
+
+static void
+m32r_elf_copy_indirect_symbol (const struct elf_backend_data *bed,
+ struct elf_link_hash_entry *dir,
+ struct elf_link_hash_entry *ind)
+{
+ struct elf_m32r_link_hash_entry *edir, *eind;
+
+ edir = (struct elf_m32r_link_hash_entry *) dir;
+ eind = (struct elf_m32r_link_hash_entry *) ind;
+
+ if (eind->dyn_relocs != NULL)
+ {
+ if (edir->dyn_relocs != NULL)
+ {
+ struct elf_m32r_dyn_relocs **pp;
+ struct elf_m32r_dyn_relocs *p;
+
+ if (ind->root.type == bfd_link_hash_indirect)
+ abort ();
+
+ /* Add reloc counts against the weak sym to the strong sym
+ list. Merge any entries against the same section. */
+ for (pp = &eind->dyn_relocs; (p = *pp) != NULL; )
+ {
+ struct elf_m32r_dyn_relocs *q;
+
+ for (q = edir->dyn_relocs; q != NULL; q = q->next)
+ if (q->sec == p->sec)
+ {
+ q->pc_count += p->pc_count;
+ q->count += p->count;
+ *pp = p->next;
+ break;
+ }
+ if (q == NULL)
+ pp = &p->next;
+ }
+ *pp = edir->dyn_relocs;
+ }
+
+ edir->dyn_relocs = eind->dyn_relocs;
+ eind->dyn_relocs = NULL;
+ }
+
+// if (ind->root.type == bfd_link_hash_indirect
+// && dir->got.refcount <= 0)
+// {
+// edir->tls_type = eind->tls_type;
+// eind->tls_type = GOT_UNKNOWN;
+// }
+ _bfd_elf_link_hash_copy_indirect (bed, dir, ind);
+}
+
+
+/* Adjust a symbol defined by a dynamic object and referenced by a
+ regular object. The current definition is in some section of the
+ dynamic object, but we're not including those sections. We have to
+ change the definition to something the rest of the link can
+ understand. */
+
+static bfd_boolean
+m32r_elf_adjust_dynamic_symbol (info, h)
+ struct bfd_link_info *info;
+ struct elf_link_hash_entry *h;
+{
+ struct elf_m32r_link_hash_table *htab;
+ struct elf_m32r_link_hash_entry *eh;
+ struct elf_m32r_dyn_relocs *p;
+ bfd *dynobj;
+ asection *s;
+ unsigned int power_of_two;
+
+#ifdef DEBUG_PIC
+printf("m32r_elf_adjust_dynamic_symbol()\n");
+#endif
+
+ dynobj = elf_hash_table (info)->dynobj;
+
+ /* Make sure we know what is going on here. */
+ BFD_ASSERT (dynobj != NULL
+ && ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT)
+ || h->weakdef != NULL
+ || ((h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_DYNAMIC) != 0
+ && (h->elf_link_hash_flags
+ & ELF_LINK_HASH_REF_REGULAR) != 0
+ && (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_REGULAR) == 0)));
+
+
+ /* If this is a function, put it in the procedure linkage table. We
+ will fill in the contents of the procedure linkage table later,
+ when we know the address of the .got section. */
+ 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
+ && h->root.type != bfd_link_hash_undefweak
+ && h->root.type != bfd_link_hash_undefined)
+ {
+ /* This case can occur if we saw a PLT 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 PCREL
+ reloc instead. */
+ h->plt.offset = (bfd_vma) -1;
+ h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
+ }
+
+ return TRUE;
+ }
+ else
+ h->plt.offset = (bfd_vma) -1;
+
+ /* 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;
+ }
+
+ /* This is a reference to a symbol defined by a dynamic object which
+ is not a function. */
+
+ /* If we are creating a shared library, we must presume that the
+ only references to the symbol are via the global offset table.
+ For such cases we need not do anything here; the relocations will
+ be handled correctly by relocate_section. */
+ if (info->shared)
+ return TRUE;
+
+ /* If there are no references to this symbol that do not use the
+ GOT, we don't need to generate a copy reloc. */
+ if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0)
+ return TRUE;
+
+ /* If -z nocopyreloc was given, we won't generate them either. */
+ if (info->nocopyreloc)
+ {
+ h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF;
+ return TRUE;
+ }
+
+ eh = (struct elf_m32r_link_hash_entry *) h;
+ for (p = eh->dyn_relocs; p != NULL; p = p->next)
+ {
+ s = p->sec->output_section;
+ if (s != NULL && (s->flags & (SEC_READONLY | SEC_HAS_CONTENTS)) != 0)
+ break;
+ }
+
+ /* If we didn't find any dynamic relocs in sections which needs the
+ copy reloc, then we'll be keeping the dynamic relocs and avoiding
+ the copy reloc. */
+ if (p == NULL)
+ {
+ h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF;
+ return TRUE;
+ }
+
+ /* We must allocate the symbol in our .dynbss section, which will
+ become part of the .bss section of the executable. There will be
+ an entry for this symbol in the .dynsym section. The dynamic
+ object will contain position independent code, so all references
+ from the dynamic object to this symbol will go through the global
+ offset table. The dynamic linker will use the .dynsym entry to
+ determine the address it must put in the global offset table, so
+ both the dynamic object and the regular object will refer to the
+ same memory location for the variable. */
+
+ htab = m32r_elf_hash_table (info);
+ s = htab->sdynbss;
+ BFD_ASSERT (s != NULL);
+
+ /* We must generate a R_M32R_COPY reloc to tell the dynamic linker
+ to copy the initial value out of the dynamic object and into the
+ runtime process image. We need to remember the offset into the
+ .rela.bss section we are going to use. */
+ if ((h->root.u.def.section->flags & SEC_ALLOC) != 0)
+ {
+ asection *srel;
+
+ srel = htab->srelbss;
+ BFD_ASSERT (srel != NULL);
+ srel->_raw_size += sizeof (Elf32_External_Rela);
+ h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_COPY;
+ }
+
+ /* We need to figure out the alignment required for this symbol. I
+ have no idea how ELF linkers handle this. */
+ power_of_two = bfd_log2 (h->size);
+ if (power_of_two > 3)
+ power_of_two = 3;
+
+ /* Apply the required alignment. */
+ s->_raw_size = BFD_ALIGN (s->_raw_size,
+ (bfd_size_type) (1 << power_of_two));
+ if (power_of_two > bfd_get_section_alignment (dynobj, s))
+ {
+ if (! bfd_set_section_alignment (dynobj, s, power_of_two))
+ return FALSE;
+ }
+
+ /* Define the symbol as being at this point in the section. */
+ h->root.u.def.section = s;
+ h->root.u.def.value = s->_raw_size;
+
+ /* Increment the section size to make room for the symbol. */
+ s->_raw_size += h->size;
+
+ return TRUE;
+}
+
+/* This is the condition under which finish_dynamic_symbol will be called
+ from elflink.h. If elflink.h doesn't call our finish_dynamic_symbol
+ routine, we'll need to do something about initializing any .plt and .got
+ entries in relocate_section. */
+#define WILL_CALL_FINISH_DYNAMIC_SYMBOL(DYN, INFO, H) \
+ ((DYN) \
+ && ((INFO)->shared \
+ || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0) \
+ && ((H)->dynindx != -1 \
+ || ((H)->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0))
+
+/* Allocate space in .plt, .got and associated reloc sections for
+ dynamic relocs. */
+
+static bfd_boolean
+allocate_dynrelocs (h, inf)
+ struct elf_link_hash_entry *h;
+ PTR inf;
+{
+ struct bfd_link_info *info;
+ struct elf_m32r_link_hash_table *htab;
+ struct elf_m32r_link_hash_entry *eh;
+ struct elf_m32r_dyn_relocs *p;
+
+ if (h->root.type == bfd_link_hash_indirect)
+ return TRUE;
+
+ if (h->root.type == bfd_link_hash_warning)
+ /* When warning symbols are created, they **replace** the "real"
+ entry in the hash table, thus we never get to see the real
+ symbol in a hash traversal. So look at it now. */
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ info = (struct bfd_link_info *) inf;
+ htab = m32r_elf_hash_table (info);
+
+ eh = (struct elf_m32r_link_hash_entry *) h;
+// if ((h->got.refcount > 0
+// || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL))
+// && eh->gotplt_refcount > 0)
+// {
+// /* The symbol has been forced local, or we have some direct got refs,
+// so treat all the gotplt refs as got refs. */
+// h->got.refcount += eh->gotplt_refcount;
+// if (h->plt.refcount >= eh->gotplt_refcount)
+// h->plt.refcount -= eh->gotplt_refcount;
+// }
+
+ if (htab->root.dynamic_sections_created
+ && h->plt.refcount > 0)
+ {
+ /* Make sure this symbol is output as a dynamic symbol.
+ Undefined weak syms won't yet be marked as dynamic. */
+ if (h->dynindx == -1
+ && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
+ {
+ if (! bfd_elf32_link_record_dynamic_symbol (info, h))
+ return FALSE;
+ }
+
+ if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, info, h))
+ {
+ asection *s = htab->splt;
+
+ /* If this is the first .plt entry, make room for the special
+ first entry. */
+ if (s->_raw_size == 0)
+ s->_raw_size += PLT_ENTRY_SIZE;
+
+ h->plt.offset = s->_raw_size;
+
+ /* If this symbol is not defined in a regular file, and we are
+ not generating a shared library, then set the symbol to this
+ location in the .plt. This is required to make function
+ pointers compare as equal between the normal executable and
+ the shared library. */
+ if (! info->shared
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
+ {
+ h->root.u.def.section = s;
+ h->root.u.def.value = h->plt.offset;
+ }
+
+ /* Make room for this entry. */
+ s->_raw_size += PLT_ENTRY_SIZE;
+
+ /* We also need to make an entry in the .got.plt section, which
+ will be placed in the .got section by the linker script. */
+ htab->sgotplt->_raw_size += 4;
+
+ /* We also need to make an entry in the .rel.plt section. */
+ htab->srelplt->_raw_size += sizeof (Elf32_External_Rela);
+ }
+ else
+ {
+ h->plt.offset = (bfd_vma) -1;
+ h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
+ }
+ }
+ else
+ {
+ h->plt.offset = (bfd_vma) -1;
+ h->elf_link_hash_flags &= ~ELF_LINK_HASH_NEEDS_PLT;
+ }
+
+ if (h->got.refcount > 0)
+ {
+ asection *s;
+ bfd_boolean dyn;
+
+ /* Make sure this symbol is output as a dynamic symbol.
+ Undefined weak syms won't yet be marked as dynamic. */
+ if (h->dynindx == -1
+ && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
+ {
+ if (! bfd_elf32_link_record_dynamic_symbol (info, h))
+ return FALSE;
+ }
+
+ s = htab->sgot;
+
+ h->got.offset = s->_raw_size;
+ s->_raw_size += 4;
+ dyn = htab->root.dynamic_sections_created;
+ if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h))
+ htab->srelgot->_raw_size += sizeof (Elf32_External_Rela);
+ }
+ else
+ h->got.offset = (bfd_vma) -1;
+
+ if (eh->dyn_relocs == NULL)
+ return TRUE;
+
+ /* In the shared -Bsymbolic case, discard space allocated for
+ dynamic pc-relative relocs against symbols which turn out to be
+ defined in regular objects. For the normal shared case, discard
+ space for pc-relative relocs that have become local due to symbol
+ visibility changes. */
+
+ if (info->shared)
+ {
+ if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0
+ && ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0
+ || info->symbolic))
+ {
+ struct elf_m32r_dyn_relocs **pp;
+ for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
+ {
+ p->count -= p->pc_count;
+ p->pc_count = 0;
+ if (p->count == 0)
+ *pp = p->next;
+ else
+ pp = &p->next;
+ }
+ }
+ }
+ else
+ {
+ /* For the non-shared case, discard space for relocs against
+ symbols which turn out to need copy relocs or are not
+ dynamic. */
+
+ if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0
+ && (((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
+ || (htab->root.dynamic_sections_created
+ && (h->root.type == bfd_link_hash_undefweak
+ || h->root.type == bfd_link_hash_undefined))))
+ {
+ /* Make sure this symbol is output as a dynamic symbol.
+ Undefined weak syms won't yet be marked as dynamic. */
+ if (h->dynindx == -1
+ && (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) == 0)
+ {
+ if (! bfd_elf32_link_record_dynamic_symbol (info, h))
+ return FALSE;
+ }
+
+ /* If that succeeded, we know we'll be keeping all the
+ relocs. */
+ if (h->dynindx != -1)
+ goto keep;
+ }
+
+ eh->dyn_relocs = NULL;
+
+ keep: ;
+ }
+
+ /* Finally, allocate space. */
+ for (p = eh->dyn_relocs; p != NULL; p = p->next)
+ {
+ asection *sreloc = elf_section_data (p->sec)->sreloc;
+ sreloc->_raw_size += p->count * sizeof (Elf32_External_Rela);
+ }
+
+ return TRUE;
+}
+/* Find any dynamic relocs that apply to read-only sections. */
+
+static bfd_boolean
+readonly_dynrelocs (h, inf)
+ struct elf_link_hash_entry *h;
+ PTR inf;
+{
+ struct elf_m32r_link_hash_entry *eh;
+ struct elf_m32r_dyn_relocs *p;
+
+ if (h->root.type == bfd_link_hash_warning)
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+ eh = (struct elf_m32r_link_hash_entry *) h;
+ for (p = eh->dyn_relocs; p != NULL; p = p->next)
+ {
+ asection *s = p->sec->output_section;
+
+ if (s != NULL && (s->flags & SEC_READONLY) != 0)
+ {
+ struct bfd_link_info *info = (struct bfd_link_info *) inf;
+
+ info->flags |= DF_TEXTREL;
+
+ /* Not an error, just cut short the traversal. */
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+/* Set the sizes of the dynamic sections. */
+
+static bfd_boolean
+m32r_elf_size_dynamic_sections (output_bfd, info)
+ bfd *output_bfd ATTRIBUTE_UNUSED;
+ struct bfd_link_info *info;
+{
+ struct elf_m32r_link_hash_table *htab;
+ bfd *dynobj;
+ asection *s;
+ bfd_boolean relocs;
+ bfd *ibfd;
+
+#ifdef DEBUG_PIC
+printf("m32r_elf_size_dynamic_sections()\n");
+#endif
+
+ htab = m32r_elf_hash_table (info);
+ dynobj = htab->root.dynobj;
+ BFD_ASSERT (dynobj != NULL);
+
+ if (htab->root.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;
+ }
+ }
+
+ /* Set up .got offsets for local syms, and space for local dynamic
+ relocs. */
+ for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link_next)
+ {
+ bfd_signed_vma *local_got;
+ bfd_signed_vma *end_local_got;
+ bfd_size_type locsymcount;
+ Elf_Internal_Shdr *symtab_hdr;
+ asection *srel;
+
+ if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
+ continue;
+
+ for (s = ibfd->sections; s != NULL; s = s->next)
+ {
+ struct elf_m32r_dyn_relocs *p;
+
+ for (p = ((struct elf_m32r_dyn_relocs *)
+ elf_section_data (s)->local_dynrel);
+ p != NULL;
+ p = p->next)
+ {
+ if (! bfd_is_abs_section (p->sec)
+ && bfd_is_abs_section (p->sec->output_section))
+ {
+ /* Input section has been discarded, either because
+ it is a copy of a linkonce section or due to
+ linker script /DISCARD/, so we'll be discarding
+ the relocs too. */
+ }
+ else if (p->count != 0)
+ {
+ srel = elf_section_data (p->sec)->sreloc;
+ srel->_raw_size += p->count * sizeof (Elf32_External_Rela);
+ if ((p->sec->output_section->flags & SEC_READONLY) != 0)
+ info->flags |= DF_TEXTREL;
+ }
+ }
+ }
+
+ local_got = elf_local_got_refcounts (ibfd);
+ if (!local_got)
+ continue;
+
+ symtab_hdr = &elf_tdata (ibfd)->symtab_hdr;
+ locsymcount = symtab_hdr->sh_info;
+ end_local_got = local_got + locsymcount;
+ s = htab->sgot;
+ srel = htab->srelgot;
+ for (; local_got < end_local_got; ++local_got)
+ {
+ if (*local_got > 0)
+ {
+ *local_got = s->_raw_size;
+ s->_raw_size += 4;
+ if (info->shared)
+ srel->_raw_size += sizeof (Elf32_External_Rela);
+ }
+ else
+ *local_got = (bfd_vma) -1;
+ }
+ }
+
+ /* Allocate global sym .plt and .got entries, and space for global
+ sym dynamic relocs. */
+ elf_link_hash_traverse (&htab->root, allocate_dynrelocs, (PTR) info);
+
+ /* We now have determined the sizes of the various dynamic sections.
+ Allocate memory for them. */
+ relocs = FALSE;
+ for (s = dynobj->sections; s != NULL; s = s->next)
+ {
+ if ((s->flags & SEC_LINKER_CREATED) == 0)
+ continue;
+
+ if (s == htab->splt
+ || s == htab->sgot
+ || s == htab->sgotplt)
+ {
+ /* Strip this section if we don't need it; see the
+ comment below. */
+ }
+ else if (strncmp (bfd_get_section_name (dynobj, s), ".rela", 5) == 0)
+ {
+ if (s->_raw_size != 0 && s != htab->srelplt)
+ relocs = 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
+ {
+ /* It's not one of our sections, so don't allocate space. */
+ continue;
+ }
+
+ 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. */
+ _bfd_strip_section_from_output (info, s);
+ continue;
+ }
+
+ /* Allocate memory for the section contents. We use bfd_zalloc
+ here in case unused entries are not reclaimed before the
+ section's contents are written out. This should not happen,
+ but this way if it does, we get a R_M32R_NONE reloc instead
+ of garbage. */
+ s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->_raw_size);
+ if (s->contents == NULL)
+ return FALSE;
+ }
+
+ if (htab->root.dynamic_sections_created)
+ {
+ /* Add some entries to the .dynamic section. We fill in the
+ values later, in m32r_elf_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. */
+#define add_dynamic_entry(TAG, VAL) \
+ bfd_elf32_add_dynamic_entry (info, (bfd_vma) (TAG), (bfd_vma) (VAL))
+
+ if (! info->shared)
+ {
+ if (! add_dynamic_entry (DT_DEBUG, 0))
+ return FALSE;
+ }
+
+ if (htab->splt->_raw_size != 0)
+ {
+ if (! add_dynamic_entry (DT_PLTGOT, 0)
+ || ! add_dynamic_entry (DT_PLTRELSZ, 0)
+ || ! add_dynamic_entry (DT_PLTREL, DT_RELA)
+ || ! add_dynamic_entry (DT_JMPREL, 0))
+ return FALSE;
+ }
+
+ if (relocs)
+ {
+ if (! add_dynamic_entry (DT_RELA, 0)
+ || ! add_dynamic_entry (DT_RELASZ, 0)
+ || ! add_dynamic_entry (DT_RELAENT,
+ sizeof (Elf32_External_Rela)))
+ return FALSE;
+
+ /* If any dynamic relocs apply to a read-only section,
+ then we need a DT_TEXTREL entry. */
+ if ((info->flags & DF_TEXTREL) == 0)
+ elf_link_hash_traverse (&htab->root, readonly_dynrelocs,
+ (PTR) info);
+
+ if ((info->flags & DF_TEXTREL) != 0)
+ {
+ if (! add_dynamic_entry (DT_TEXTREL, 0))
+ return FALSE;
+ }
+ }
+ }
+#undef add_dynamic_entry
+
+ return TRUE;
+}
/* Relocate an M32R/D ELF section.
There is some attempt to make this function usable for many architectures,
both for RELA and REL type relocs, if only to serve as a learning tool.
@@ -986,10 +2534,17 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
/* Assume success. */
bfd_boolean ret = TRUE;
-#if !USE_REL
- if (info->relocatable)
- return TRUE;
-#endif
+ struct elf_m32r_link_hash_table *htab = m32r_elf_hash_table (info);
+ bfd *dynobj;
+ bfd_vma *local_got_offsets;
+ asection *sgot, *splt, *sreloc;
+
+ dynobj = htab->root.dynobj;
+ local_got_offsets = elf_local_got_offsets (input_bfd);
+
+ sgot = htab->sgot;
+ splt = htab->splt;
+ sreloc = NULL;
rel = relocs;
relend = relocs + input_section->reloc_count;
@@ -998,18 +2553,19 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
int r_type;
reloc_howto_type *howto;
unsigned long r_symndx;
+ struct elf_link_hash_entry *h;
/* We can't modify r_addend here as elf_link_input_bfd has an assert to
- ensure it's zero (we use REL relocs, not RELA). Therefore this
- should be assigning zero to `addend', but for clarity we use
- `r_addend'. */
+ ensure it's zero (we use REL relocs, not RELA). Therefore this
+ should be assigning zero to `addend', but for clarity we use
+ `r_addend'. */
bfd_vma addend = rel->r_addend;
bfd_vma offset = rel->r_offset;
- struct elf_link_hash_entry *h;
Elf_Internal_Sym *sym;
asection *sec;
const char *sym_name;
bfd_reloc_status_type r;
const char *errmsg = NULL;
+ bfd_boolean use_rel = FALSE;
h = NULL;
r_type = ELF32_R_TYPE (rel->r_info);
@@ -1024,14 +2580,19 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
if (r_type == R_M32R_GNU_VTENTRY
- || r_type == R_M32R_GNU_VTINHERIT)
+ || r_type == R_M32R_GNU_VTINHERIT
+ || r_type == R_M32R_NONE
+ || r_type == R_M32R_RELA_GNU_VTENTRY
+ || r_type == R_M32R_RELA_GNU_VTINHERIT)
continue;
+ if (r_type <= R_M32R_GNU_VTENTRY)
+ use_rel = TRUE;
+
howto = m32r_elf_howto_table + r_type;
r_symndx = ELF32_R_SYM (rel->r_info);
-#if USE_REL
- if (info->relocatable)
+ if (info->relocatable && (use_rel == TRUE))
{
/* This is a relocatable link. We don't have to change
anything, unless the reloc is against a section symbol,
@@ -1092,13 +2653,13 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
}
}
else
-#endif /* USE_REL */
{
bfd_vma relocation;
/* This is a final link. */
sym = NULL;
sec = NULL;
+ h = NULL;
if (r_symndx < symtab_hdr->sh_info)
{
@@ -1106,20 +2667,37 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
sym = local_syms + r_symndx;
sec = local_sections[r_symndx];
sym_name = "<local symbol>";
-#if !USE_REL
- relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
- addend = rel->r_addend;
-#else
- /* FIXME: This won't handle local relocations against SEC_MERGE
- symbols. See elf32-i386.c for how to do this. */
- relocation = (sec->output_section->vma
- + sec->output_offset
- + sym->st_value);
-#endif
+
+ if (use_rel == FALSE)
+ {
+ relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
+ addend = rel->r_addend;
+
+ if (info->relocatable)
+ {
+ /* This is a relocatable 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 (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+ rel->r_addend += sec->output_offset + sym->st_value;
+
+ continue;
+ }
+ }
+ else
+ {
+ relocation = (sec->output_section->vma
+ + sec->output_offset
+ + sym->st_value);
+ }
}
else
{
/* External symbol. */
+ if (info->relocatable && (use_rel == FALSE))
+ continue;
+
h = sym_hashes[r_symndx - symtab_hdr->sh_info];
while (h->root.type == bfd_link_hash_indirect
|| h->root.type == bfd_link_hash_warning)
@@ -1129,9 +2707,64 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
if (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
{
+ bfd_boolean dyn;
sec = h->root.u.def.section;
- if (sec->output_section == NULL)
- relocation = 0;
+
+ dyn = htab->root.dynamic_sections_created;
+ sec = h->root.u.def.section;
+ if (r_type == R_M32R_GOTPC24
+ || (r_type == R_M32R_GOTPC_HI_ULO
+ || r_type == R_M32R_GOTPC_HI_SLO
+ || r_type == R_M32R_GOTPC_LO)
+ || (r_type == R_M32R_26_PLTREL
+ && h->plt.offset != (bfd_vma) -1)
+ || ((r_type == R_M32R_GOT24
+ || r_type == R_M32R_GOT16_HI_ULO
+ || r_type == R_M32R_GOT16_HI_SLO
+ || r_type == R_M32R_GOT16_LO)
+ && WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h)
+ && (! info->shared
+ || (! info->symbolic && h->dynindx != -1)
+ || (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_REGULAR) == 0))
+ || (info->shared
+ && ((! info->symbolic && h->dynindx != -1)
+ || (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_REGULAR) == 0)
+ && (((r_type == R_M32R_16_RELA
+ || r_type == R_M32R_32_RELA
+ || r_type == R_M32R_24_RELA
+ || r_type == R_M32R_HI16_ULO_RELA
+ || r_type == R_M32R_HI16_SLO_RELA
+ || r_type == R_M32R_LO16_RELA)
+ && (h->elf_link_hash_flags
+ & ELF_LINK_FORCED_LOCAL) == 0)
+ || r_type == R_M32R_10_PCREL_RELA
+ || r_type == R_M32R_18_PCREL_RELA
+ || r_type == R_M32R_26_PCREL_RELA)
+ && ((input_section->flags & SEC_ALLOC) != 0
+ /* DWARF will emit R_M32R_16(24,32) relocations
+ in its sections against symbols defined
+ externally in shared libraries. We can't do
+ anything with them here. */
+ || ((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
+ obscure cases sec->output_section will be NULL. */
+ relocation = 0;
+ }
+ else if (sec->output_section == NULL)
+ {
+ (*_bfd_error_handler)
+ (_("%s: warning: unresolvable relocation against symbol `%s' from %s section"),
+ bfd_get_filename (input_bfd), h->root.root.string,
+ bfd_get_section_name (input_bfd, input_section));
+
+ relocation = 0;
+ }
else
relocation = (h->root.u.def.value
+ sec->output_section->vma
@@ -1139,11 +2772,17 @@ m32r_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)
+ && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+ relocation = 0;
else
{
if (! ((*info->callbacks->undefined_symbol)
(info, h->root.root.string, input_bfd,
- input_section, offset, TRUE)))
+ input_section, offset,
+ (!info->shared
+ || ELF_ST_VISIBILITY (h->other)))))
return FALSE;
relocation = 0;
}
@@ -1158,11 +2797,283 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
switch ((int) r_type)
{
+ case R_M32R_GOTPC24:
+ /* .got(_GLOBAL_OFFSET_TABLE_) - pc relocation
+ ld24 rx,#_GLOBAL_OFFSET_TABLE_
+ */
+ relocation = sgot->output_section->vma;
+ break;
+
+ case R_M32R_GOTPC_HI_ULO:
+ case R_M32R_GOTPC_HI_SLO:
+ case R_M32R_GOTPC_LO:
+ {
+ /* .got(_GLOBAL_OFFSET_TABLE_) - pc relocation
+ bl .+4
+ seth rx,#high(_GLOBAL_OFFSET_TABLE_)
+ or3 rx,rx,#low(_GLOBAL_OFFSET_TABLE_ +4)
+ or
+ bl .+4
+ seth rx,#shigh(_GLOBAL_OFFSET_TABLE_)
+ add3 rx,rx,#low(_GLOBAL_OFFSET_TABLE_ +4)
+ */
+ relocation = sgot->output_section->vma;
+ relocation -= (input_section->output_section->vma
+ + input_section->output_offset
+ + rel->r_offset);
+ if ((r_type == R_M32R_GOTPC_HI_SLO)
+ && ((relocation + rel->r_addend) & 0x8000))
+ rel->r_addend += 0x10000;
+
+ break;
+ }
+ case R_M32R_GOT16_HI_ULO:
+ case R_M32R_GOT16_HI_SLO:
+ case R_M32R_GOT16_LO:
+ /* Fall through. */
+ case R_M32R_GOT24:
+ /* Relocation is to the entry for this symbol in the global
+ offset table. */
+ BFD_ASSERT (sgot != NULL);
+
+ if (h != NULL)
+ {
+ bfd_boolean dyn;
+ bfd_vma off;
+
+ off = h->got.offset;
+ BFD_ASSERT (off != (bfd_vma) -1);
+
+ dyn = htab->root.dynamic_sections_created;
+ if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, info, h)
+ || (info->shared
+ && (info->symbolic
+ || h->dynindx == -1
+ || (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL))
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR)))
+ {
+ /* This is actually a static link, or it is a
+ -Bsymbolic link and the symbol is defined
+ locally, or the symbol was forced to be local
+ because of a version file. We must initialize
+ this entry in the global offset table. Since the
+ offset must always be a multiple of 4, we use the
+ least significant bit to record whether we have
+ initialized it already.
+
+ When doing a dynamic link, we create a .rela.got
+ relocation entry to initialize the value. This
+ is done in the finish_dynamic_symbol routine. */
+ if ((off & 1) != 0)
+ off &= ~1;
+ else
+ {
+ bfd_put_32 (output_bfd, relocation,
+ sgot->contents + off);
+ h->got.offset |= 1;
+ }
+ }
+
+ relocation = sgot->output_offset + off;
+ }
+ else
+ {
+ bfd_vma off;
+ bfd_byte *loc;
+
+ BFD_ASSERT (local_got_offsets != NULL
+ && local_got_offsets[r_symndx] != (bfd_vma) -1);
+
+ off = local_got_offsets[r_symndx];
+
+ /* The offset must always be a multiple of 4. We use
+ the least significant bit to record whether we have
+ already processed this entry. */
+ if ((off & 1) != 0)
+ off &= ~1;
+ else
+ {
+ bfd_put_32 (output_bfd, relocation, sgot->contents + off);
+
+ if (info->shared)
+ {
+ asection *srelgot;
+ Elf_Internal_Rela outrel;
+
+ /* We need to generate a R_M32R_RELATIVE reloc
+ for the dynamic linker. */
+ srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
+ BFD_ASSERT (srelgot != NULL);
+
+ outrel.r_offset = (sgot->output_section->vma
+ + sgot->output_offset
+ + off);
+ outrel.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE);
+ outrel.r_addend = relocation;
+ loc = srelgot->contents;
+ loc += srelgot->reloc_count * sizeof(Elf32_External_Rela);
+ bfd_elf32_swap_reloca_out (output_bfd, &outrel,loc);
+ ++srelgot->reloc_count;
+ }
+
+ local_got_offsets[r_symndx] |= 1;
+ }
+
+ relocation = sgot->output_offset + off;
+ }
+ if ((r_type == R_M32R_GOT16_HI_SLO)
+ && ((relocation + rel->r_addend) & 0x8000))
+ rel->r_addend += 0x10000;
+
+ break;
+
+ case R_M32R_26_PLTREL:
+ /* Relocation is to the entry for this symbol in the
+ procedure linkage table. */
+
+ /* The native assembler will generate a 26_PLTREL reloc
+ for a local symbol if you assemble a call from one
+ section to another when using -K pic. */
+ if (h == NULL)
+ break;
+
+ //if (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
+ // || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN)
+ // break;
+ if (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)
+ break;
+
+ if (h->plt.offset == (bfd_vma) -1)
+ {
+ /* We didn't make a PLT entry for this symbol. This
+ happens when statically linking PIC code, or when
+ using -Bsymbolic. */
+ break;
+ }
+
+ relocation = (splt->output_section->vma
+ + splt->output_offset
+ + h->plt.offset);
+ break;
+
+ case R_M32R_HI16_SLO_RELA:
+ {
+ if ((relocation + rel->r_addend) & 0x8000)
+ {
+ rel->r_addend += 0x10000;
+ }
+ }
+ /* Fall through. */
+ case R_M32R_16_RELA:
+ case R_M32R_24_RELA:
+ case R_M32R_32_RELA:
+ case R_M32R_18_PCREL_RELA:
+ case R_M32R_26_PCREL_RELA:
+ case R_M32R_HI16_ULO_RELA:
+ case R_M32R_LO16_RELA:
+ case R_M32R_SDA16_RELA:
+ if (info->shared
+ && r_symndx != 0
+ && (input_section->flags & SEC_ALLOC) != 0
+ && ((r_type != R_M32R_18_PCREL_RELA
+ && r_type != R_M32R_26_PCREL_RELA)
+ || (h != NULL
+ && h->dynindx != -1
+ && (! info->symbolic
+ || (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_REGULAR) == 0))))
+ {
+ Elf_Internal_Rela outrel;
+ bfd_boolean skip, relocate;
+ bfd_byte *loc;
+
+ /* When generating a shared object, these relocations
+ are copied into the output file to be resolved at run
+ time. */
+
+ if (sreloc == NULL)
+ {
+ const char *name;
+
+ name = (bfd_elf_string_from_elf_section
+ (input_bfd,
+ elf_elfheader (input_bfd)->e_shstrndx,
+ elf_section_data (input_section)->rel_hdr.sh_name));
+ if (name == NULL)
+ return FALSE;
+
+ BFD_ASSERT (strncmp (name, ".rela", 5) == 0
+ && strcmp (bfd_get_section_name (input_bfd,
+ input_section),
+ name + 5) == 0);
+
+ sreloc = bfd_get_section_by_name (dynobj, name);
+ BFD_ASSERT (sreloc != NULL);
+ }
+
+ skip = FALSE;
+ relocate = FALSE;
+
+ outrel.r_offset = _bfd_elf_section_offset (output_bfd,
+ info,
+ input_section,
+ rel->r_offset);
+ if (outrel.r_offset == (bfd_vma) -1)
+ skip = TRUE;
+ else if (outrel.r_offset == (bfd_vma) -2)
+ skip = TRUE, relocate = TRUE;
+ outrel.r_offset += (input_section->output_section->vma
+ + input_section->output_offset);
+
+ if (skip)
+ memset (&outrel, 0, sizeof outrel);
+ else if (r_type == R_M32R_18_PCREL_RELA
+ || r_type == R_M32R_26_PCREL_RELA)
+ {
+ BFD_ASSERT (h != NULL && h->dynindx != -1);
+ outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
+ outrel.r_addend = rel->r_addend;
+ }
+ else
+ {
+ /* h->dynindx may be -1 if this symbol was marked to
+ become local. */
+ if (h == NULL
+ || ((info->symbolic || h->dynindx == -1)
+ && (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_REGULAR) != 0))
+ {
+ relocate = TRUE;
+ outrel.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE);
+ outrel.r_addend = relocation + rel->r_addend;
+ }
+ else
+ {
+ BFD_ASSERT (h->dynindx != -1);
+ outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
+ outrel.r_addend = relocation + rel->r_addend;
+ }
+ }
+
+ loc = sreloc->contents;
+ loc += sreloc->reloc_count * sizeof(Elf32_External_Rela);
+ bfd_elf32_swap_reloca_out (output_bfd, &outrel,loc);
+ ++sreloc->reloc_count;
+
+ /* If this reloc is against an external symbol, we do
+ not want to fiddle with the addend. Otherwise, we
+ need to include the symbol value so that it becomes
+ an addend for the dynamic reloc. */
+ if (! relocate)
+ continue;
+ }
+ break;
+
case (int) R_M32R_10_PCREL :
r = m32r_elf_do_10_pcrel_reloc (input_bfd, howto, input_section,
contents, offset,
sec, relocation, addend);
- break;
+ goto check_reloc;
case (int) R_M32R_HI16_SLO :
case (int) R_M32R_HI16_ULO :
@@ -1190,7 +3101,8 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
contents, offset,
relocation, addend);
}
- break;
+
+ goto check_reloc;
case (int) R_M32R_SDA16 :
{
@@ -1233,14 +3145,20 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
continue;
}
}
- /* fall through */
+ /* fall through */
+
+ default : /* OLD_M32R_RELOC */
- default :
r = _bfd_final_link_relocate (howto, input_bfd, input_section,
contents, offset,
relocation, addend);
- break;
+ goto check_reloc;
}
+
+ r = _bfd_final_link_relocate (howto, input_bfd, input_section,
+ contents, rel->r_offset,
+ relocation, rel->r_addend);
+
}
check_reloc:
@@ -1307,6 +3225,353 @@ m32r_elf_relocate_section (output_bfd, info, input_bfd, input_section,
return ret;
}
+
+/* Finish up dynamic symbol handling. We set the contents of various
+ dynamic sections here. */
+static bfd_boolean
+m32r_elf_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 elf_m32r_link_hash_table *htab;
+ bfd *dynobj;
+ bfd_byte *loc;
+
+#ifdef DEBUG_PIC
+printf("m32r_elf_finish_dynamic_symbol()\n");
+#endif
+
+ htab = m32r_elf_hash_table (info);
+ dynobj = htab->root.dynobj;
+
+ if (h->plt.offset != (bfd_vma) -1)
+ {
+ asection *splt;
+ asection *sgot;
+ asection *srela;
+
+ bfd_vma plt_index;
+ bfd_vma got_offset;
+ Elf_Internal_Rela rela;
+
+ /* This symbol has an entry in the procedure linkage table. Set
+ it up. */
+
+ BFD_ASSERT (h->dynindx != -1);
+
+ splt = htab->splt;
+ sgot = htab->sgotplt;
+ srela = htab->srelplt;
+ BFD_ASSERT (splt != NULL && sgot != NULL && srela != NULL);
+
+ /* Get the index in the procedure linkage table which
+ corresponds to this symbol. This is the index of this symbol
+ in all the symbols for which we are making plt entries. The
+ first entry in the procedure linkage table is reserved. */
+ plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1;
+
+ /* Get the offset into the .got table of the entry that
+ corresponds to this function. Each .got entry is 4 bytes.
+ The first three are reserved. */
+ got_offset = (plt_index + 3) * 4;
+
+ /* Fill in the entry in the procedure linkage table. */
+ if (! info->shared)
+ {
+ bfd_put_32 (output_bfd,
+ (PLT_ENTRY_WORD0b
+ + (((sgot->output_section->vma
+ + sgot->output_offset
+ + got_offset) >> 16) & 0xffff)),
+ splt->contents + h->plt.offset);
+ bfd_put_32 (output_bfd,
+ (PLT_ENTRY_WORD1b
+ + ((sgot->output_section->vma
+ + sgot->output_offset
+ + got_offset) & 0xffff)),
+ splt->contents + h->plt.offset + 4);
+ bfd_put_32 (output_bfd, PLT_ENTRY_WORD2,
+ splt->contents + h->plt.offset + 8);
+ bfd_put_32 (output_bfd,
+ (PLT_ENTRY_WORD3
+ + plt_index * sizeof (Elf32_External_Rela)),
+ splt->contents + h->plt.offset + 12);
+ bfd_put_32 (output_bfd,
+ (PLT_ENTRY_WORD4
+ + (((unsigned int) ((- (h->plt.offset + 16)) >> 2)) & 0xffffff)),
+ splt->contents + h->plt.offset + 16);
+ }
+ else
+ {
+ bfd_put_32 (output_bfd,
+ PLT_ENTRY_WORD0 + got_offset,
+ splt->contents + h->plt.offset);
+ bfd_put_32 (output_bfd, PLT_ENTRY_WORD1,
+ splt->contents + h->plt.offset + 4);
+ bfd_put_32 (output_bfd, PLT_ENTRY_WORD2,
+ splt->contents + h->plt.offset + 8);
+ bfd_put_32 (output_bfd,
+ (PLT_ENTRY_WORD3
+ + plt_index * sizeof (Elf32_External_Rela)),
+ splt->contents + h->plt.offset + 12);
+ bfd_put_32 (output_bfd,
+ (PLT_ENTRY_WORD4
+ + (((unsigned int) ((- (h->plt.offset + 16)) >> 2)) & 0xffffff)),
+ splt->contents + h->plt.offset + 16);
+ }
+
+ /* Fill in the entry in the global offset table. */
+ bfd_put_32 (output_bfd,
+ (splt->output_section->vma
+ + splt->output_offset
+ + h->plt.offset
+ + 12), /* same offset */
+ sgot->contents + got_offset);
+
+ /* Fill in the entry in the .rela.plt section. */
+ rela.r_offset = (sgot->output_section->vma
+ + sgot->output_offset
+ + got_offset);
+ rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_JMP_SLOT);
+ rela.r_addend = 0;
+ loc = srela->contents;
+ loc += plt_index * sizeof(Elf32_External_Rela);
+ bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+
+ if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) == 0)
+ {
+ /* Mark the symbol as undefined, rather than as defined in
+ the .plt section. Leave the value alone. */
+ sym->st_shndx = SHN_UNDEF;
+ }
+ }
+
+ if (h->got.offset != (bfd_vma) -1)
+ {
+ asection *sgot;
+ asection *srela;
+ Elf_Internal_Rela rela;
+
+ /* This symbol has an entry in the global offset table. Set it
+ up. */
+
+ sgot = htab->sgot;
+ srela = htab->srelgot;
+ BFD_ASSERT (sgot != NULL && srela != NULL);
+
+ rela.r_offset = (sgot->output_section->vma
+ + 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.
+ 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_FORCED_LOCAL))
+ && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR))
+ {
+ rela.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE);
+ rela.r_addend = (h->root.u.def.value
+ + h->root.u.def.section->output_section->vma
+ + h->root.u.def.section->output_offset);
+ }
+ else
+ {
+ BFD_ASSERT((h->got.offset & 1) == 0);
+ bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + h->got.offset);
+ rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_GLOB_DAT);
+ rela.r_addend = 0;
+ }
+
+ loc = srela->contents;
+ loc += srela->reloc_count * sizeof(Elf32_External_Rela);
+ bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+ ++srela->reloc_count;
+ }
+
+ if ((h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_COPY) != 0)
+ {
+ asection *s;
+ Elf_Internal_Rela rela;
+
+ /* This symbols needs a copy reloc. Set it up. */
+
+ BFD_ASSERT (h->dynindx != -1
+ && (h->root.type == bfd_link_hash_defined
+ || h->root.type == bfd_link_hash_defweak));
+
+ s = bfd_get_section_by_name (h->root.u.def.section->owner,
+ ".rela.bss");
+ BFD_ASSERT (s != NULL);
+
+ rela.r_offset = (h->root.u.def.value
+ + h->root.u.def.section->output_section->vma
+ + h->root.u.def.section->output_offset);
+ rela.r_info = ELF32_R_INFO (h->dynindx, R_M32R_COPY);
+ rela.r_addend = 0;
+ loc = s->contents;
+ loc += s->reloc_count * sizeof(Elf32_External_Rela);
+ bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+ ++s->reloc_count;
+ }
+
+ /* Mark some specially defined symbols as absolute. */
+ if (strcmp (h->root.root.string, "_DYNAMIC") == 0
+ || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
+ sym->st_shndx = SHN_ABS;
+
+ return TRUE;
+}
+
+
+/* Finish up the dynamic sections. */
+
+static bfd_boolean
+m32r_elf_finish_dynamic_sections (output_bfd, info)
+ bfd *output_bfd;
+ struct bfd_link_info *info;
+{
+ struct elf_m32r_link_hash_table *htab;
+ bfd *dynobj;
+ asection *sdyn;
+ asection *sgot;
+
+#ifdef DEBUG_PIC
+printf("m32r_elf_finish_dynamic_sections()\n");
+#endif
+
+ htab = m32r_elf_hash_table (info);
+ dynobj = htab->root.dynobj;
+
+ sgot = htab->sgotplt;
+ sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
+
+ if (htab->root.dynamic_sections_created)
+ {
+ asection *splt;
+ Elf32_External_Dyn *dyncon, *dynconend;
+
+ BFD_ASSERT (sgot != NULL && sdyn != NULL);
+
+ dyncon = (Elf32_External_Dyn *) sdyn->contents;
+ dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->_raw_size);
+
+ for (; dyncon < dynconend; dyncon++)
+ {
+ Elf_Internal_Dyn dyn;
+ const char *name;
+ asection *s;
+
+ bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);
+
+ switch (dyn.d_tag)
+ {
+ default:
+ break;
+
+ case DT_PLTGOT:
+ name = ".got";
+ s = htab->sgot->output_section;
+ goto get_vma;
+ case DT_JMPREL:
+ name = ".rela.plt";
+ s = htab->srelplt->output_section;
+ get_vma:
+ BFD_ASSERT (s != NULL);
+ dyn.d_un.d_ptr = s->vma;
+ bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ case DT_PLTRELSZ:
+ s = htab->srelplt->output_section;
+ BFD_ASSERT (s != NULL);
+ if (s->_cooked_size != 0)
+ dyn.d_un.d_val = s->_cooked_size;
+ else
+ dyn.d_un.d_val = s->_raw_size;
+ bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+
+ case DT_RELASZ:
+ /* My reading of the SVR4 ABI indicates that the
+ procedure linkage table relocs (DT_JMPREL) should be
+ included in the overall relocs (DT_RELA). This is
+ what Solaris does. However, UnixWare can not handle
+ that case. Therefore, we override the DT_RELASZ entry
+ here to make it not include the JMPREL relocs. Since
+ the linker script arranges for .rela.plt to follow all
+ other relocation sections, we don't have to worry
+ about changing the DT_RELA entry. */
+ if (htab->srelplt != NULL)
+ {
+ s = htab->srelplt->output_section;
+ if (s->_cooked_size != 0)
+ dyn.d_un.d_val -= s->_cooked_size;
+ else
+ dyn.d_un.d_val -= s->_raw_size;
+ }
+ bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
+ break;
+ }
+ }
+
+ /* Fill in the first entry in the procedure linkage table. */
+ splt = htab->splt;
+ if (splt && splt->_raw_size > 0)
+ {
+ if (info->shared)
+ {
+ bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD0, splt->contents);
+ bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD1, splt->contents + 4);
+ bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD2, splt->contents + 8);
+ bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD3, splt->contents + 12);
+ bfd_put_32 (output_bfd, PLT0_PIC_ENTRY_WORD4, splt->contents + 16);
+ }
+ else
+ {
+ unsigned long addr;
+ /* addr = .got + 4 */
+ addr = sgot->output_section->vma + sgot->output_offset + 4;
+ bfd_put_32 (output_bfd,
+ PLT0_ENTRY_WORD0 | ((addr >> 16) & 0xffff),
+ splt->contents);
+ bfd_put_32 (output_bfd,
+ PLT0_ENTRY_WORD1 | (addr & 0xffff),
+ splt->contents + 4);
+ bfd_put_32 (output_bfd, PLT0_ENTRY_WORD2, splt->contents + 8);
+ bfd_put_32 (output_bfd, PLT0_ENTRY_WORD3, splt->contents + 12);
+ bfd_put_32 (output_bfd, PLT0_ENTRY_WORD4, splt->contents + 16);
+ }
+
+ elf_section_data (splt->output_section)->this_hdr.sh_entsize =
+ PLT_ENTRY_SIZE;
+ }
+ }
+
+ /* Fill in the first three entries in the global offset table. */
+ if (sgot && sgot->_raw_size > 0)
+ {
+ if (sdyn == NULL)
+ bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents);
+ else
+ bfd_put_32 (output_bfd,
+ sdyn->output_section->vma + sdyn->output_offset,
+ sgot->contents);
+ bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 4);
+ bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + 8);
+
+ elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4;
+ }
+
+ return TRUE;
+}
+
#if 0 /* relaxing not supported yet */
@@ -2005,6 +4270,8 @@ m32r_elf_gc_mark_hook (sec, info, rel, h, sym)
{
case R_M32R_GNU_VTINHERIT:
case R_M32R_GNU_VTENTRY:
+ case R_M32R_RELA_GNU_VTINHERIT:
+ case R_M32R_RELA_GNU_VTENTRY:
break;
default:
@@ -2035,7 +4302,97 @@ m32r_elf_gc_sweep_hook (abfd, info, sec, relocs)
asection *sec ATTRIBUTE_UNUSED;
const Elf_Internal_Rela *relocs ATTRIBUTE_UNUSED;
{
- /* we don't use got and plt entries for m32r */
+ /* Update the got entry reference counts for the section being removed. */
+ 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;
+
+ elf_section_data (sec)->local_dynrel = NULL;
+
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (abfd);
+ local_got_refcounts = elf_local_got_refcounts (abfd);
+
+ relend = relocs + sec->reloc_count;
+ for (rel = relocs; rel < relend; rel++)
+ switch (ELF32_R_TYPE (rel->r_info))
+ {
+ case R_M32R_GOT16_HI_ULO:
+ case R_M32R_GOT16_HI_SLO:
+ case R_M32R_GOT16_LO:
+ case R_M32R_GOT24:
+ case R_M32R_GOTPC_HI_ULO:
+ case R_M32R_GOTPC_HI_SLO:
+ case R_M32R_GOTPC_LO:
+ case R_M32R_GOTPC24:
+ 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--;
+ }
+ else
+ {
+ if (local_got_refcounts && local_got_refcounts[r_symndx] > 0)
+ local_got_refcounts[r_symndx]--;
+ }
+ break;
+
+ case R_M32R_16_RELA:
+ case R_M32R_24_RELA:
+ case R_M32R_32_RELA:
+ case R_M32R_HI16_ULO_RELA:
+ case R_M32R_HI16_SLO_RELA:
+ case R_M32R_LO16_RELA:
+ case R_M32R_SDA16_RELA:
+ case R_M32R_18_PCREL_RELA:
+ case R_M32R_26_PCREL_RELA:
+ r_symndx = ELF32_R_SYM (rel->r_info);
+ if (r_symndx >= symtab_hdr->sh_info)
+ {
+ struct elf_m32r_link_hash_entry *eh;
+ struct elf_m32r_dyn_relocs **pp;
+ struct elf_m32r_dyn_relocs *p;
+
+ h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+
+ if (!info->shared && h->plt.refcount > 0)
+ h->plt.refcount -= 1;
+
+ eh = (struct elf_m32r_link_hash_entry *) h;
+
+ for (pp = &eh->dyn_relocs; (p = *pp) != NULL; pp = &p->next)
+ if (p->sec == sec)
+ {
+ if (ELF32_R_TYPE (rel->r_info) == R_M32R_26_PCREL_RELA
+ || ELF32_R_TYPE (rel->r_info) == R_M32R_26_PCREL_RELA)
+ p->pc_count -= 1;
+ p->count -= 1;
+ if (p->count == 0)
+ *pp = p->next;
+ break;
+ }
+ }
+ break;
+
+ case R_M32R_26_PLTREL:
+ 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--;
+ }
+ break;
+
+ default:
+ break;
+ }
+
return TRUE;
}
@@ -2054,32 +4411,250 @@ m32r_elf_check_relocs (abfd, info, sec, relocs)
struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
const Elf_Internal_Rela *rel;
const Elf_Internal_Rela *rel_end;
+ struct elf_m32r_link_hash_table *htab;
+ bfd *dynobj;
+ bfd_vma *local_got_offsets;
+ asection *sgot, *srelgot, *sreloc;
if (info->relocatable)
return TRUE;
+ sgot = srelgot = sreloc = NULL;
+
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
sym_hashes = elf_sym_hashes (abfd);
sym_hashes_end = sym_hashes + symtab_hdr->sh_size/sizeof (Elf32_External_Sym);
if (!elf_bad_symtab (abfd))
sym_hashes_end -= symtab_hdr->sh_info;
+ htab = m32r_elf_hash_table (info);
+ dynobj = htab->root.dynobj;
+ local_got_offsets = elf_local_got_offsets (abfd);
+
rel_end = relocs + sec->reloc_count;
for (rel = relocs; rel < rel_end; rel++)
{
+ int r_type;
struct elf_link_hash_entry *h;
unsigned long r_symndx;
r_symndx = ELF32_R_SYM (rel->r_info);
+ r_type = ELF32_R_TYPE (rel->r_info);
if (r_symndx < symtab_hdr->sh_info)
h = NULL;
else
h = sym_hashes[r_symndx - symtab_hdr->sh_info];
- switch (ELF32_R_TYPE (rel->r_info))
+ /* Some relocs require a global offset table. */
+ if (htab->sgot == NULL)
+ {
+ switch (r_type)
+ {
+ case R_M32R_GOT16_HI_ULO:
+ case R_M32R_GOT16_HI_SLO:
+ case R_M32R_GOT16_LO:
+ case R_M32R_GOTPC24:
+ case R_M32R_GOTPC_HI_ULO:
+ case R_M32R_GOTPC_HI_SLO:
+ case R_M32R_GOTPC_LO:
+ case R_M32R_GOT24:
+ if (dynobj == NULL)
+ htab->root.dynobj = dynobj = abfd;
+ if (! create_got_section (dynobj, info))
+ return FALSE;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ switch (r_type)
{
+ case R_M32R_GOT16_HI_ULO:
+ case R_M32R_GOT16_HI_SLO:
+ case R_M32R_GOT16_LO:
+ case R_M32R_GOT24:
+
+ if (h != NULL)
+ h->got.refcount += 1;
+ else
+ {
+ bfd_signed_vma *local_got_refcounts;
+
+ /* This is a global offset table entry for a local
+ symbol. */
+ local_got_refcounts = elf_local_got_refcounts (abfd);
+ if (local_got_refcounts == NULL)
+ {
+ bfd_size_type size;
+
+ size = symtab_hdr->sh_info;
+ size *= sizeof (bfd_signed_vma);
+ local_got_refcounts = ((bfd_signed_vma *)
+ bfd_zalloc (abfd, size));
+ if (local_got_refcounts == NULL)
+ return FALSE;
+ elf_local_got_refcounts (abfd) = local_got_refcounts;
+ }
+ local_got_refcounts[r_symndx] += 1;
+ }
+ break;
+
+ case R_M32R_26_PLTREL:
+ /* This symbol requires a procedure linkage table entry. We
+ actually build the entry in adjust_dynamic_symbol,
+ because this might be a case of linking PIC code without
+ linking in any dynamic objects, in which case we don't
+ need to generate a procedure linkage table after all. */
+
+ /* If this is a local symbol, we resolve it directly without
+ creating a procedure linkage table entry. */
+ if (h == NULL)
+ continue;
+
+ if (h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL)
+ break;
+
+ h->elf_link_hash_flags |= ELF_LINK_HASH_NEEDS_PLT;
+ h->plt.refcount += 1;
+ break;
+
+ case R_M32R_16_RELA:
+ case R_M32R_24_RELA:
+ case R_M32R_32_RELA:
+ case R_M32R_HI16_ULO_RELA:
+ case R_M32R_HI16_SLO_RELA:
+ case R_M32R_LO16_RELA:
+ case R_M32R_SDA16_RELA:
+ case R_M32R_18_PCREL_RELA:
+ case R_M32R_26_PCREL_RELA:
+
+ if (h != NULL && !info->shared)
+ {
+ h->elf_link_hash_flags |= ELF_LINK_NON_GOT_REF;
+ h->plt.refcount += 1;
+ }
+
+ /* If we are creating a shared library, and this is a reloc
+ against a global symbol, or a non PC relative reloc
+ against a local symbol, then we need to copy the reloc
+ into the shared library. However, if we are linking with
+ -Bsymbolic, we do not need to copy a reloc against a
+ global symbol which is defined in an object we are
+ including in the link (i.e., DEF_REGULAR is set). At
+ this point we have not seen all the input files, so it is
+ possible that DEF_REGULAR is not set now but will be set
+ later (it is never cleared). We account for that
+ possibility below by storing information in the
+ dyn_relocs field of the hash table entry. A similar
+ situation occurs when creating shared libraries and symbol
+ visibility changes render the symbol local.
+
+ If on the other hand, we are creating an executable, we
+ may need to keep relocations for symbols satisfied by a
+ dynamic library if we manage to avoid copy relocs for the
+ symbol. */
+ if ((info->shared
+ && (sec->flags & SEC_ALLOC) != 0
+ && ((r_type != R_M32R_26_PCREL_RELA
+ && r_type != R_M32R_18_PCREL_RELA)
+ || (h != NULL
+ && (! info->symbolic
+ || h->root.type == bfd_link_hash_defweak
+ || (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_REGULAR) == 0))))
+ || (!info->shared
+ && (sec->flags & SEC_ALLOC) != 0
+ && h != NULL
+ && (h->root.type == bfd_link_hash_defweak
+ || (h->elf_link_hash_flags
+ & ELF_LINK_HASH_DEF_REGULAR) == 0)))
+ {
+ struct elf_m32r_dyn_relocs *p;
+ struct elf_m32r_dyn_relocs **head;
+
+ if (dynobj == NULL)
+ htab->root.dynobj = dynobj = abfd;
+
+ /* When creating a shared object, we must copy these
+ relocs into the output file. We create a reloc
+ section in dynobj and make room for the reloc. */
+ if (sreloc == NULL)
+ {
+ const char *name;
+
+ name = (bfd_elf_string_from_elf_section
+ (abfd,
+ elf_elfheader (abfd)->e_shstrndx,
+ elf_section_data (sec)->rel_hdr.sh_name));
+ if (name == NULL)
+ return FALSE;
+
+ BFD_ASSERT (strncmp (name, ".rela", 5) == 0
+ && strcmp (bfd_get_section_name (abfd, sec),
+ name + 5) == 0);
+
+ sreloc = bfd_get_section_by_name (dynobj, name);
+ if (sreloc == NULL)
+ {
+ flagword flags;
+
+ sreloc = bfd_make_section (dynobj, name);
+ flags = (SEC_HAS_CONTENTS | SEC_READONLY
+ | SEC_IN_MEMORY | SEC_LINKER_CREATED);
+ if ((sec->flags & SEC_ALLOC) != 0)
+ flags |= SEC_ALLOC | SEC_LOAD;
+ if (sreloc == NULL
+ || ! bfd_set_section_flags (dynobj, sreloc, flags)
+ || ! bfd_set_section_alignment (dynobj, sreloc, 2))
+ return FALSE;
+ }
+ elf_section_data (sec)->sreloc = sreloc;
+ }
+
+ /* If this is a global symbol, we count the number of
+ relocations we need for this symbol. */
+ if (h != NULL)
+ head = &((struct elf_m32r_link_hash_entry *) h)->dyn_relocs;
+ else
+ {
+ asection *s;
+
+ /* Track dynamic relocs needed for local syms too. */
+ s = bfd_section_from_r_symndx (abfd, &htab->sym_sec,
+ sec, r_symndx);
+ if (s == NULL)
+ return FALSE;
+
+ head = ((struct elf_m32r_dyn_relocs **)
+ &elf_section_data (s)->local_dynrel);
+ }
+
+ p = *head;
+ if (p == NULL || p->sec != sec)
+ {
+ bfd_size_type amt = sizeof (*p);
+ p = ((struct elf_m32r_dyn_relocs *) bfd_alloc (dynobj, amt));
+ if (p == NULL)
+ return FALSE;
+ p->next = *head;
+ *head = p;
+ p->sec = sec;
+ p->count = 0;
+ p->pc_count = 0;
+ }
+
+ p->count += 1;
+ if (ELF32_R_TYPE (rel->r_info) == R_M32R_26_PCREL_RELA
+ || ELF32_R_TYPE (rel->r_info) == R_M32R_18_PCREL_RELA)
+ p->pc_count += 1;
+ }
+ break;
+
/* This relocation describes the C++ object vtable hierarchy.
Reconstruct it for later use during GC. */
+ case R_M32R_RELA_GNU_VTINHERIT:
case R_M32R_GNU_VTINHERIT:
if (!_bfd_elf32_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
return FALSE;
@@ -2091,6 +4666,10 @@ m32r_elf_check_relocs (abfd, info, sec, relocs)
if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_offset))
return FALSE;
break;
+ case R_M32R_RELA_GNU_VTENTRY:
+ if (!_bfd_elf32_gc_record_vtentry (abfd, sec, h, rel->r_addend))
+ return FALSE;
+ break;
}
}
@@ -2103,6 +4682,61 @@ static struct bfd_elf_special_section const m32r_elf_special_sections[]=
{ ".sbss", 5, -2, SHT_NOBITS, SHF_ALLOC + SHF_WRITE },
{ NULL, 0, 0, 0, 0 }
};
+
+static bfd_boolean
+m32r_elf_fake_sections (abfd, hdr, sec)
+ bfd *abfd;
+ Elf_Internal_Shdr *hdr ATTRIBUTE_UNUSED;
+ asection *sec;
+{
+ register const char *name;
+
+ name = bfd_get_section_name (abfd, sec);
+
+ /* The generic elf_fake_sections will set up REL_HDR using the
+ default kind of relocations. But, we may actually need both
+ kinds of relocations, so we set up the second header here.
+
+ This is not necessary for the O32 ABI since that only uses Elf32_Rel
+ relocations (cf. System V ABI, MIPS RISC Processor Supplement,
+ 3rd Edition, p. 4-17). It breaks the IRIX 5/6 32-bit ld, since one
+ of the resulting empty .rela.<section> sections starts with
+ sh_offset == object size, and ld doesn't allow that. While the check
+ is arguably bogus for empty or SHT_NOBITS sections, it can easily be
+ avoided by not emitting those useless sections in the first place. */
+ if ((sec->flags & SEC_RELOC) != 0)
+ {
+ struct bfd_elf_section_data *esd;
+ bfd_size_type amt = sizeof (Elf_Internal_Shdr);
+
+ esd = elf_section_data (sec);
+ BFD_ASSERT (esd->rel_hdr2 == NULL);
+ esd->rel_hdr2 = (Elf_Internal_Shdr *) bfd_zalloc (abfd, amt);
+ if (!esd->rel_hdr2)
+ return FALSE;
+ _bfd_elf_init_reloc_shdr (abfd, esd->rel_hdr2, sec,
+ !sec->use_rela_p);
+ }
+
+ return TRUE;
+}
+
+static enum elf_reloc_type_class
+m32r_elf_reloc_type_class (rela)
+ const Elf_Internal_Rela *rela;
+{
+ switch ((int) ELF32_R_TYPE (rela->r_info))
+ {
+ case R_M32R_RELATIVE:
+ return reloc_class_relative;
+ case R_M32R_JMP_SLOT:
+ return reloc_class_plt;
+ case R_M32R_COPY:
+ return reloc_class_copy;
+ default:
+ return reloc_class_normal;
+ }
+}
#define ELF_ARCH bfd_arch_m32r
#define ELF_MACHINE_CODE EM_M32R
@@ -2111,8 +4745,10 @@ static struct bfd_elf_special_section const m32r_elf_special_sections[]=
#define TARGET_BIG_SYM bfd_elf32_m32r_vec
#define TARGET_BIG_NAME "elf32-m32r"
+#define TARGET_LITTLE_SYM bfd_elf32_m32rle_vec
+#define TARGET_LITTLE_NAME "elf32-m32rle"
-#define elf_info_to_howto 0
+#define elf_info_to_howto m32r_info_to_howto
#define elf_info_to_howto_rel m32r_info_to_howto_rel
#define elf_backend_section_from_bfd_section _bfd_m32r_elf_section_from_bfd_section
#define elf_backend_symbol_processing _bfd_m32r_elf_symbol_processing
@@ -2122,10 +4758,35 @@ static struct bfd_elf_special_section const m32r_elf_special_sections[]=
#define elf_backend_gc_sweep_hook m32r_elf_gc_sweep_hook
#define elf_backend_check_relocs m32r_elf_check_relocs
+#define elf_backend_create_dynamic_sections m32r_elf_create_dynamic_sections
+#define bfd_elf32_bfd_link_hash_table_create m32r_elf_link_hash_table_create
+#define elf_backend_size_dynamic_sections m32r_elf_size_dynamic_sections
+#define elf_backend_finish_dynamic_sections m32r_elf_finish_dynamic_sections
+#define elf_backend_adjust_dynamic_symbol m32r_elf_adjust_dynamic_symbol
+#define elf_backend_finish_dynamic_symbol m32r_elf_finish_dynamic_symbol
+#define elf_backend_reloc_type_class m32r_elf_reloc_type_class
+#define elf_backend_copy_indirect_symbol m32r_elf_copy_indirect_symbol
+
#define elf_backend_can_gc_sections 1
-#if !USE_REL
+/*#if !USE_REL
#define elf_backend_rela_normal 1
+#endif*/
+#define elf_backend_can_refcount 1
+#define elf_backend_want_got_plt 1
+#define elf_backend_plt_readonly 1
+#define elf_backend_want_plt_sym 0
+#define elf_backend_got_header_size 12
+
+#define elf_backend_may_use_rel_p 1
+#ifdef USE_M32R_OLD_RELOC
+#define elf_backend_default_use_rela_p 0
+#define elf_backend_may_use_rela_p 0
+#else
+#define elf_backend_default_use_rela_p 1
+#define elf_backend_may_use_rela_p 1
+#define elf_backend_fake_sections m32r_elf_fake_sections
#endif
+
#if 0 /* not yet */
/* relax support */
#define bfd_elf32_bfd_relax_section m32r_elf_relax_section
@@ -2141,3 +4802,20 @@ static struct bfd_elf_special_section const m32r_elf_special_sections[]=
#define elf_backend_special_sections m32r_elf_special_sections
#include "elf32-target.h"
+
+#undef ELF_MAXPAGESIZE
+#define ELF_MAXPAGESIZE 0x1000
+
+#undef TARGET_BIG_SYM
+#define TARGET_BIG_SYM bfd_elf32_m32rlin_vec
+#undef TARGET_BIG_NAME
+#define TARGET_BIG_NAME "elf32-m32r-linux"
+#undef TARGET_LITTLE_SYM
+#define TARGET_LITTLE_SYM bfd_elf32_m32rlelin_vec
+#undef TARGET_LITTLE_NAME
+#define TARGET_LITTLE_NAME "elf32-m32rle-linux"
+#undef elf32_bed
+#define elf32_bed elf32_m32r_lin_bed
+
+#include "elf32-target.h"
+
diff --git a/bfd/elf32-m68k.c b/bfd/elf32-m68k.c
index 90609c5c08b..1c7fed92baa 100644
--- a/bfd/elf32-m68k.c
+++ b/bfd/elf32-m68k.c
@@ -817,26 +817,27 @@ elf_m68k_gc_sweep_hook (abfd, info, sec, relocs)
struct elf_link_hash_entry **sym_hashes;
bfd_signed_vma *local_got_refcounts;
const Elf_Internal_Rela *rel, *relend;
- unsigned long r_symndx;
- struct elf_link_hash_entry *h;
bfd *dynobj;
asection *sgot;
asection *srelgot;
- symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
- sym_hashes = elf_sym_hashes (abfd);
- local_got_refcounts = elf_local_got_refcounts (abfd);
-
dynobj = elf_hash_table (info)->dynobj;
if (dynobj == NULL)
return TRUE;
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (abfd);
+ local_got_refcounts = elf_local_got_refcounts (abfd);
+
sgot = bfd_get_section_by_name (dynobj, ".got");
srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
relend = relocs + sec->reloc_count;
for (rel = relocs; rel < relend; rel++)
{
+ unsigned long r_symndx;
+ struct elf_link_hash_entry *h;
+
switch (ELF32_R_TYPE (rel->r_info))
{
case R_68K_GOT8:
diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c
index 299c39546bc..a0480f09700 100644
--- a/bfd/elf32-mips.c
+++ b/bfd/elf32-mips.c
@@ -47,14 +47,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ECOFF_SIGNED_32
#include "ecoffswap.h"
-static bfd_reloc_status_type mips_elf_generic_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type mips_elf_hi16_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type mips_elf_lo16_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type mips_elf_got16_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
static bfd_reloc_status_type gprel32_with_gp
(bfd *, asymbol *, arelent *, asection *, bfd_boolean, void *, bfd_vma);
static bfd_reloc_status_type mips_elf_gprel32_reloc
@@ -120,7 +112,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_NONE", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -135,7 +127,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -150,7 +142,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_32", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -165,7 +157,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_REL32", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -183,7 +175,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
/* This needs complex overflow
detection, because the upper four
bits must match the PC + 4. */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_26", /* name */
TRUE, /* partial_inplace */
0x03ffffff, /* src_mask */
@@ -192,13 +184,13 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
/* High 16 bits of symbol value. */
HOWTO (R_MIPS_HI16, /* type */
- 0, /* rightshift */
+ 16, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_hi16_reloc, /* special_function */
+ _bfd_mips_elf_hi16_reloc, /* special_function */
"R_MIPS_HI16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -213,7 +205,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_lo16_reloc, /* special_function */
+ _bfd_mips_elf_lo16_reloc, /* special_function */
"R_MIPS_LO16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -258,7 +250,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_got16_reloc, /* special_function */
+ _bfd_mips_elf_got16_reloc, /* special_function */
"R_MIPS_GOT16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -273,7 +265,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_PC16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -288,7 +280,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -324,7 +316,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
6, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SHIFT5", /* name */
TRUE, /* partial_inplace */
0x000007c0, /* src_mask */
@@ -341,7 +333,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
6, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SHIFT6", /* name */
TRUE, /* partial_inplace */
0x000007c4, /* src_mask */
@@ -371,7 +363,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_DISP", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -386,7 +378,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_PAGE", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -401,7 +393,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_OFST", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -416,7 +408,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_HI16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -431,7 +423,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_LO16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -446,7 +438,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SUB", /* name */
TRUE, /* partial_inplace */
MINUS_ONE, /* src_mask */
@@ -466,7 +458,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_HIGHER", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -481,7 +473,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_HIGHEST", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -496,7 +488,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_HI16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -511,7 +503,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_LO16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -526,7 +518,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SCN_DISP", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -547,7 +539,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_JALR", /* name */
FALSE, /* partial_inplace */
0x00000000, /* src_mask */
@@ -611,13 +603,13 @@ static reloc_howto_type elf_mips16_gprel_howto =
/* High 16 bits of symbol value, pc-relative. */
static reloc_howto_type elf_mips_gnu_rel_hi16 =
HOWTO (R_MIPS_GNU_REL_HI16, /* type */
- 0, /* rightshift */
+ 16, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_hi16_reloc, /* special_function */
+ _bfd_mips_elf_hi16_reloc, /* special_function */
"R_MIPS_GNU_REL_HI16", /* name */
TRUE, /* partial_inplace */
0xffff, /* src_mask */
@@ -633,7 +625,7 @@ static reloc_howto_type elf_mips_gnu_rel_lo16 =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_lo16_reloc, /* special_function */
+ _bfd_mips_elf_lo16_reloc, /* special_function */
"R_MIPS_GNU_REL_LO16", /* name */
TRUE, /* partial_inplace */
0xffff, /* src_mask */
@@ -649,7 +641,7 @@ static reloc_howto_type elf_mips_gnu_rel16_s2 =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GNU_REL16_S2", /* name */
TRUE, /* partial_inplace */
0xffff, /* src_mask */
@@ -665,7 +657,7 @@ static reloc_howto_type elf_mips_gnu_pcrel64 =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_PC64", /* name */
TRUE, /* partial_inplace */
MINUS_ONE, /* src_mask */
@@ -681,7 +673,7 @@ static reloc_howto_type elf_mips_gnu_pcrel32 =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_PC32", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -720,260 +712,6 @@ static reloc_howto_type elf_mips_gnu_vtentry_howto =
0, /* dst_mask */
FALSE); /* pcrel_offset */
-/* We use this instead of bfd_elf_generic_reloc because the latter
- gets the handling of zero addends wrong. */
-static bfd_reloc_status_type
-mips_elf_generic_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
- asymbol *symbol, void *data ATTRIBUTE_UNUSED,
- asection *input_section, bfd *output_bfd,
- char **error_message ATTRIBUTE_UNUSED)
-{
- /* If we're relocating, and this is an external symbol, we don't want
- to change anything. */
- if (output_bfd != NULL
- && (symbol->flags & BSF_SECTION_SYM) == 0
- && (symbol->flags & BSF_LOCAL) != 0)
- {
- reloc_entry->address += input_section->output_offset;
- return bfd_reloc_ok;
- }
-
- /* Just go on, nothing to see here. */
- return bfd_reloc_continue;
-}
-
-/* Do a R_MIPS_HI16 relocation. This has to be done in combination
- with a R_MIPS_LO16 reloc, because there is a carry from the LO16 to
- the HI16. Here we just save the information we need; we do the
- actual relocation when we see the LO16.
-
- MIPS ELF requires that the LO16 immediately follow the HI16. As a
- GNU extension, for non-pc-relative relocations, we permit an
- arbitrary number of HI16 relocs to be associated with a single LO16
- reloc. This extension permits gcc to output the HI and LO relocs
- itself.
-
- This cannot be done for PC-relative relocations because both the HI16
- and LO16 parts of the relocations must be done relative to the LO16
- part, and there can be carry to or borrow from the HI16 part. */
-
-struct mips_hi16
-{
- struct mips_hi16 *next;
- bfd_byte *addr;
- bfd_vma addend;
-};
-
-/* FIXME: This should not be a static variable. */
-
-static struct mips_hi16 *mips_hi16_list;
-
-static bfd_reloc_status_type
-mips_elf_hi16_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
- asymbol *symbol, void *data, asection *input_section,
- bfd *output_bfd, char **error_message)
-{
- bfd_reloc_status_type ret;
- bfd_vma relocation;
- struct mips_hi16 *n;
-
- /* If we're relocating, and this is an external symbol, we don't want
- to change anything. */
- if (output_bfd != NULL
- && (symbol->flags & BSF_SECTION_SYM) == 0
- && (symbol->flags & BSF_LOCAL) != 0)
- {
- reloc_entry->address += input_section->output_offset;
- return bfd_reloc_ok;
- }
-
- ret = bfd_reloc_ok;
-
- if (strcmp (bfd_asymbol_name (symbol), "_gp_disp") == 0)
- {
- bfd_boolean relocatable;
- bfd_vma gp;
-
- if (ret == bfd_reloc_undefined)
- abort ();
-
- if (output_bfd != NULL)
- relocatable = TRUE;
- else
- {
- relocatable = FALSE;
- output_bfd = symbol->section->output_section->owner;
- }
-
- ret = mips_elf_final_gp (output_bfd, symbol, relocatable,
- error_message, &gp);
- if (ret != bfd_reloc_ok)
- return ret;
-
- relocation = gp - reloc_entry->address;
- }
- else
- {
- if (bfd_is_und_section (symbol->section) && output_bfd == NULL)
- ret = bfd_reloc_undefined;
-
- if (bfd_is_com_section (symbol->section))
- relocation = 0;
- else
- relocation = symbol->value;
- }
-
- relocation += symbol->section->output_section->vma;
- relocation += symbol->section->output_offset;
- relocation += reloc_entry->addend;
-
- if (reloc_entry->address > input_section->_cooked_size)
- return bfd_reloc_outofrange;
-
- /* Save the information, and let LO16 do the actual relocation. */
- n = bfd_malloc (sizeof *n);
- if (n == NULL)
- return bfd_reloc_outofrange;
- n->addr = (bfd_byte *) data + reloc_entry->address;
- n->addend = relocation;
- n->next = mips_hi16_list;
- mips_hi16_list = n;
-
- if (output_bfd != NULL)
- reloc_entry->address += input_section->output_offset;
-
- return ret;
-}
-
-/* Do a R_MIPS_LO16 relocation. This is a straightforward 16 bit
- inplace relocation; this function exists in order to do the
- R_MIPS_HI16 relocation described above. */
-
-static bfd_reloc_status_type
-mips_elf_lo16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
- void *data, asection *input_section, bfd *output_bfd,
- char **error_message)
-{
- arelent gp_disp_relent;
-
- if (mips_hi16_list != NULL)
- {
- struct mips_hi16 *l;
-
- l = mips_hi16_list;
- while (l != NULL)
- {
- unsigned long insn;
- unsigned long val;
- unsigned long vallo;
- struct mips_hi16 *next;
-
- if (strcmp (bfd_asymbol_name (symbol), "_gp_disp") == 0)
- {
- gp_disp_relent = *reloc_entry;
- reloc_entry = &gp_disp_relent;
- reloc_entry->addend = l->addend;
- }
- else
- {
- /* Do the HI16 relocation. Note that we actually don't need
- to know anything about the LO16 itself, except where to
- find the low 16 bits of the addend needed by the LO16. */
- insn = bfd_get_32 (abfd, l->addr);
- vallo = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
- /* The low order 16 bits are always treated as a signed
- value. */
- vallo = ((vallo & 0xffff) ^ 0x8000) - 0x8000;
- val = ((insn & 0xffff) << 16) + vallo;
- val += l->addend;
-
- /* If PC-relative, we need to subtract out the address of the LO
- half of the HI/LO. (The actual relocation is relative
- to that instruction.) */
- if (reloc_entry->howto->pc_relative)
- val -= reloc_entry->address;
-
- /* At this point, "val" has the value of the combined HI/LO
- pair. If the low order 16 bits (which will be used for
- the LO16 insn) are negative, then we will need an
- adjustment for the high order 16 bits. */
- val += 0x8000;
- val = (val >> 16) & 0xffff;
-
- insn &= ~ (bfd_vma) 0xffff;
- insn |= val;
- bfd_put_32 (abfd, insn, l->addr);
- }
-
- next = l->next;
- free (l);
- l = next;
- }
-
- mips_hi16_list = NULL;
- }
- else if (strcmp (bfd_asymbol_name (symbol), "_gp_disp") == 0)
- {
- bfd_reloc_status_type ret;
- bfd_vma gp, relocation;
-
- /* FIXME: Does this case ever occur? */
-
- ret = mips_elf_final_gp (output_bfd, symbol, TRUE, error_message, &gp);
- if (ret != bfd_reloc_ok)
- return ret;
-
- relocation = gp - reloc_entry->address;
- relocation += symbol->section->output_section->vma;
- relocation += symbol->section->output_offset;
- relocation += reloc_entry->addend;
-
- if (reloc_entry->address > input_section->_cooked_size)
- return bfd_reloc_outofrange;
-
- gp_disp_relent = *reloc_entry;
- reloc_entry = &gp_disp_relent;
- reloc_entry->addend = relocation - 4;
- }
-
- /* Now do the LO16 reloc in the usual way. */
- return mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
- input_section, output_bfd, error_message);
-}
-
-/* Do a R_MIPS_GOT16 reloc. This is a reloc against the global offset
- table used for PIC code. If the symbol is an external symbol, the
- instruction is modified to contain the offset of the appropriate
- entry in the global offset table. If the symbol is a section
- symbol, the next reloc is a R_MIPS_LO16 reloc. The two 16 bit
- addends are combined to form the real addend against the section
- symbol; the GOT16 is modified to contain the offset of an entry in
- the global offset table, and the LO16 is modified to offset it
- appropriately. Thus an offset larger than 16 bits requires a
- modified value in the global offset table.
-
- This implementation suffices for the assembler, but the linker does
- not yet know how to create global offset tables. */
-
-static bfd_reloc_status_type
-mips_elf_got16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
- void *data, asection *input_section, bfd *output_bfd,
- char **error_message)
-{
- /* If we're relocating, and this is an external symbol, we don't want
- to change anything. */
- if (output_bfd != NULL
- && (symbol->flags & BSF_SECTION_SYM) == 0
- && (symbol->flags & BSF_LOCAL) != 0)
- {
- reloc_entry->address += input_section->output_offset;
- return bfd_reloc_ok;
- }
-
- return mips_elf_hi16_reloc (abfd, reloc_entry, symbol, data,
- input_section, output_bfd, error_message);
-}
-
/* Set the GP value for OUTPUT_BFD. Returns FALSE if this is a
dangerous relocation. */
@@ -1078,16 +816,6 @@ _bfd_mips_elf32_gprel16_reloc (bfd *abfd, arelent *reloc_entry,
bfd_reloc_status_type ret;
bfd_vma gp;
- /* If we're relocating, and this is an external symbol, we don't want
- to change anything. */
- if (output_bfd != NULL
- && (symbol->flags & BSF_SECTION_SYM) == 0
- && (symbol->flags & BSF_LOCAL) != 0)
- {
- reloc_entry->address += input_section->output_offset;
- return bfd_reloc_ok;
- }
-
if (output_bfd != NULL)
relocatable = TRUE;
else
@@ -1118,17 +846,6 @@ mips_elf_gprel32_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
bfd_reloc_status_type ret;
bfd_vma gp;
- /* If we're relocating, and this is an external symbol, we don't want
- to change anything. */
- if (output_bfd != NULL
- && (symbol->flags & BSF_SECTION_SYM) == 0
- && (symbol->flags & BSF_LOCAL) != 0)
- {
- *error_message = (char *)
- _("32bits gp relative relocation occurs for an external symbol");
- return bfd_reloc_outofrange;
- }
-
if (output_bfd != NULL)
relocatable = TRUE;
else
@@ -1194,20 +911,16 @@ gprel32_with_gp (bfd *abfd, asymbol *symbol, arelent *reloc_entry,
sign extension. */
static bfd_reloc_status_type
-mips32_64bit_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
- void *data, asection *input_section, bfd *output_bfd,
- char **error_message)
+mips32_64bit_reloc (bfd *abfd, arelent *reloc_entry,
+ asymbol *symbol ATTRIBUTE_UNUSED,
+ void *data, asection *input_section,
+ bfd *output_bfd, char **error_message)
{
bfd_reloc_status_type r;
arelent reloc32;
unsigned long val;
bfd_size_type addr;
- r = mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
- input_section, output_bfd, error_message);
- if (r != bfd_reloc_continue)
- return r;
-
/* Do a normal 32 bit relocation on the lower 32 bits. */
reloc32 = *reloc_entry;
if (bfd_big_endian (abfd))
@@ -1800,10 +1513,6 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = {
#define ELF_ARCH bfd_arch_mips
#define ELF_MACHINE_CODE EM_MIPS
-/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses
- a value of 0x1000, and we are compatible. */
-#define ELF_MAXPAGESIZE 0x1000
-
#define elf_backend_collect TRUE
#define elf_backend_type_change_ok TRUE
#define elf_backend_can_gc_sections TRUE
@@ -1881,20 +1590,29 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = {
#define TARGET_BIG_SYM bfd_elf32_bigmips_vec
#define TARGET_BIG_NAME "elf32-bigmips"
+/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses
+ a value of 0x1000, and we are compatible. */
+#define ELF_MAXPAGESIZE 0x1000
+
#include "elf32-target.h"
/* Support for traditional mips targets. */
-#define INCLUDED_TARGET_FILE /* More a type of flag. */
-
#undef TARGET_LITTLE_SYM
#undef TARGET_LITTLE_NAME
#undef TARGET_BIG_SYM
#undef TARGET_BIG_NAME
+#undef ELF_MAXPAGESIZE
+
#define TARGET_LITTLE_SYM bfd_elf32_tradlittlemips_vec
#define TARGET_LITTLE_NAME "elf32-tradlittlemips"
#define TARGET_BIG_SYM bfd_elf32_tradbigmips_vec
#define TARGET_BIG_NAME "elf32-tradbigmips"
+/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
+ page sizes of up to that limit, so we need to respect it. */
+#define ELF_MAXPAGESIZE 0x10000
+#define elf32_bed elf32_tradbed
+
/* Include the target file again for this target. */
#include "elf32-target.h"
diff --git a/bfd/elf32-sparc.c b/bfd/elf32-sparc.c
index f77f22c7c35..c20e403588d 100644
--- a/bfd/elf32-sparc.c
+++ b/bfd/elf32-sparc.c
@@ -502,6 +502,35 @@ sparc_elf_lox10_reloc (abfd,
return bfd_reloc_ok;
}
+/* Support for core dump NOTE sections. */
+
+static bfd_boolean
+elf32_sparc_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
+{
+ switch (note->descsz)
+ {
+ default:
+ return FALSE;
+
+ case 260: /* Solaris prpsinfo_t. */
+ elf_tdata (abfd)->core_program
+ = _bfd_elfcore_strndup (abfd, note->descdata + 84, 16);
+ elf_tdata (abfd)->core_command
+ = _bfd_elfcore_strndup (abfd, note->descdata + 100, 80);
+ break;
+
+ case 336: /* Solaris psinfo_t. */
+ elf_tdata (abfd)->core_program
+ = _bfd_elfcore_strndup (abfd, note->descdata + 88, 16);
+ elf_tdata (abfd)->core_command
+ = _bfd_elfcore_strndup (abfd, note->descdata + 104, 80);
+ break;
+ }
+
+ return TRUE;
+}
+
+
/* Functions for the SPARC ELF linker. */
/* The name of the dynamic interpreter. This is put in the .interp
@@ -3451,6 +3480,7 @@ elf32_sparc_reloc_type_class (rela)
elf32_sparc_final_write_processing
#define elf_backend_gc_mark_hook elf32_sparc_gc_mark_hook
#define elf_backend_gc_sweep_hook elf32_sparc_gc_sweep_hook
+#define elf_backend_grok_psinfo elf32_sparc_grok_psinfo
#define elf_backend_reloc_type_class elf32_sparc_reloc_type_class
#define elf_backend_can_gc_sections 1
diff --git a/bfd/elf32-vax.c b/bfd/elf32-vax.c
index c37ca005f01..e085e3509fc 100644
--- a/bfd/elf32-vax.c
+++ b/bfd/elf32-vax.c
@@ -892,20 +892,21 @@ elf_vax_gc_sweep_hook (abfd, info, sec, relocs)
Elf_Internal_Shdr *symtab_hdr;
struct elf_link_hash_entry **sym_hashes;
const Elf_Internal_Rela *rel, *relend;
- unsigned long r_symndx;
- struct elf_link_hash_entry *h;
bfd *dynobj;
- symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
- sym_hashes = elf_sym_hashes (abfd);
-
dynobj = elf_hash_table (info)->dynobj;
if (dynobj == NULL)
return TRUE;
+ symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+ sym_hashes = elf_sym_hashes (abfd);
+
relend = relocs + sec->reloc_count;
for (rel = relocs; rel < relend; rel++)
{
+ unsigned long r_symndx;
+ struct elf_link_hash_entry *h;
+
switch (ELF32_R_TYPE (rel->r_info))
{
case R_VAX_GOT32:
diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c
index 998c5df5b39..fa3b494b998 100644
--- a/bfd/elf64-mips.c
+++ b/bfd/elf64-mips.c
@@ -104,8 +104,6 @@ static void mips_elf64_write_rel
(bfd *, asection *, Elf_Internal_Shdr *, int *, void *);
static void mips_elf64_write_rela
(bfd *, asection *, Elf_Internal_Shdr *, int *, void *);
-static bfd_reloc_status_type mips_elf64_hi16_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
static bfd_reloc_status_type mips_elf64_gprel16_reloc
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
static bfd_reloc_status_type mips_elf64_literal_reloc
@@ -114,8 +112,6 @@ static bfd_reloc_status_type mips_elf64_gprel32_reloc
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
static bfd_reloc_status_type mips_elf64_shift6_reloc
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type mips_elf64_got16_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
static bfd_reloc_status_type mips16_jump_reloc
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
static bfd_reloc_status_type mips16_gprel_reloc
@@ -155,7 +151,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_NONE", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -170,7 +166,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -185,7 +181,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_32", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -200,7 +196,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_REL32", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -218,7 +214,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
/* This needs complex overflow
detection, because the upper 36
bits must match the PC + 4. */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_26", /* name */
TRUE, /* partial_inplace */
0x03ffffff, /* src_mask */
@@ -230,13 +226,13 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
/* High 16 bits of symbol value. */
HOWTO (R_MIPS_HI16, /* type */
- 0, /* rightshift */
+ 16, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf64_hi16_reloc, /* special_function */
+ _bfd_mips_elf_hi16_reloc, /* special_function */
"R_MIPS_HI16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -251,7 +247,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_lo16_reloc, /* special_function */
"R_MIPS_LO16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -296,7 +292,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf64_got16_reloc, /* special_function */
+ _bfd_mips_elf_got16_reloc, /* special_function */
"R_MIPS_GOT16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -311,7 +307,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_PC16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -326,7 +322,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -360,7 +356,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
6, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SHIFT5", /* name */
TRUE, /* partial_inplace */
0x000007c0, /* src_mask */
@@ -390,7 +386,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_64", /* name */
TRUE, /* partial_inplace */
MINUS_ONE, /* src_mask */
@@ -405,7 +401,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_DISP", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -420,7 +416,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_PAGE", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -435,7 +431,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_OFST", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -450,7 +446,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_HI16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -465,7 +461,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_LO16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -480,7 +476,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SUB", /* name */
TRUE, /* partial_inplace */
MINUS_ONE, /* src_mask */
@@ -496,7 +492,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_INSERT_A", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -513,7 +509,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_INSERT_B", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -529,7 +525,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_DELETE", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -553,7 +549,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_HI16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -568,7 +564,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_LO16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -583,7 +579,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SCN_DISP", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -597,7 +593,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_REL16", /* name */
TRUE, /* partial_inplace */
0xffff, /* src_mask */
@@ -617,7 +613,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_RELGOT", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -633,7 +629,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_JALR", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -653,7 +649,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_NONE", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -668,7 +664,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -683,7 +679,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_32", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -698,7 +694,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_REL32", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -716,7 +712,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
/* This needs complex overflow
detection, because the upper 36
bits must match the PC + 4. */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_26", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -731,7 +727,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_HI16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -746,7 +742,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_LO16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -791,7 +787,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf64_got16_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -806,7 +802,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_PC16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -821,7 +817,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -855,7 +851,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
6, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SHIFT5", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -885,7 +881,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_64", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -900,7 +896,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_DISP", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -915,7 +911,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_PAGE", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -930,7 +926,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_OFST", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -945,7 +941,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_HI16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -960,7 +956,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_LO16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -975,7 +971,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SUB", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -991,7 +987,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_INSERT_A", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1008,7 +1004,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_INSERT_B", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1024,7 +1020,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_DELETE", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1039,7 +1035,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_HIGHER", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1054,7 +1050,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_HIGHEST", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1069,7 +1065,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_HI16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1084,7 +1080,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_LO16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1099,7 +1095,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SCN_DISP", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1113,7 +1109,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_REL16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1133,7 +1129,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_RELGOT", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1149,7 +1145,7 @@ static reloc_howto_type mips_elf64_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_JALR", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1233,7 +1229,7 @@ static reloc_howto_type elf_mips_gnu_rel16_s2 =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GNU_REL16_S2", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -1249,7 +1245,7 @@ static reloc_howto_type elf_mips_gnu_rela16_s2 =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- bfd_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GNU_REL16_S2", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1411,66 +1407,6 @@ mips_elf64_be_swap_reloca_out (bfd *abfd, const Elf_Internal_Rela *src,
(Elf64_Mips_External_Rela *) dst);
}
-/* Do a R_MIPS_HI16 relocation. */
-
-static bfd_reloc_status_type
-mips_elf64_hi16_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
- asymbol *symbol, void *data ATTRIBUTE_UNUSED,
- asection *input_section, bfd *output_bfd,
- char **error_message ATTRIBUTE_UNUSED)
-{
- /* If we're relocating, and this is an external symbol, we don't
- want to change anything. */
- if (output_bfd != NULL
- && (symbol->flags & BSF_SECTION_SYM) == 0
- && (symbol->flags & BSF_LOCAL) != 0)
- {
- reloc_entry->address += input_section->output_offset;
- return bfd_reloc_ok;
- }
-
- if (reloc_entry->howto->partial_inplace)
- {
- if (((reloc_entry->addend & 0xffff) + 0x8000) & ~0xffff)
- reloc_entry->addend += 0x8000;
- }
-
- return bfd_reloc_continue;
-}
-
-/* Do a R_MIPS_GOT16 reloc. This is a reloc against the global offset
- table used for PIC code. If the symbol is an external symbol, the
- instruction is modified to contain the offset of the appropriate
- entry in the global offset table. If the symbol is a section
- symbol, the next reloc is a R_MIPS_LO16 reloc. The two 16 bit
- addends are combined to form the real addend against the section
- symbol; the GOT16 is modified to contain the offset of an entry in
- the global offset table, and the LO16 is modified to offset it
- appropriately. Thus an offset larger than 16 bits requires a
- modified value in the global offset table.
-
- This implementation suffices for the assembler, but the linker does
- not yet know how to create global offset tables. */
-
-static bfd_reloc_status_type
-mips_elf64_got16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
- void *data, asection *input_section, bfd *output_bfd,
- char **error_message)
-{
- /* If we're relocating, and this is a local symbol, we can handle it
- just like an R_MIPS_HI16. */
- if (output_bfd != NULL
- && ((symbol->flags & BSF_SECTION_SYM) != 0
- || (symbol->flags & BSF_LOCAL) == 0))
- return mips_elf64_hi16_reloc (abfd, reloc_entry, symbol, data,
- input_section, output_bfd, error_message);
-
-
- /* Otherwise we try to handle it as R_MIPS_GOT_DISP. */
- return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
- input_section, output_bfd, error_message);
-}
-
/* Set the GP value for OUTPUT_BFD. Returns FALSE if this is a
dangerous relocation. */
@@ -1716,28 +1652,19 @@ mips_elf64_gprel32_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
the rest is at bits 6-10. The bitpos already got right by the howto. */
static bfd_reloc_status_type
-mips_elf64_shift6_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
- asymbol *symbol, void *data ATTRIBUTE_UNUSED,
- asection *input_section, bfd *output_bfd,
- char **error_message ATTRIBUTE_UNUSED)
+mips_elf64_shift6_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+ void *data, asection *input_section, bfd *output_bfd,
+ char **error_message)
{
- /* If we're relocating, and this is an external symbol, we don't
- want to change anything. */
- if (output_bfd != NULL
- && (symbol->flags & BSF_SECTION_SYM) == 0
- && (symbol->flags & BSF_LOCAL) != 0)
- {
- reloc_entry->address += input_section->output_offset;
- return bfd_reloc_ok;
- }
-
if (reloc_entry->howto->partial_inplace)
{
reloc_entry->addend = ((reloc_entry->addend & 0x00007c0)
| (reloc_entry->addend & 0x00000800) >> 9);
}
- return bfd_reloc_continue;
+ return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
+ input_section, output_bfd,
+ error_message);
}
/* Handle a mips16 jump. */
@@ -2088,7 +2015,7 @@ mips_elf64_slurp_one_reloc_table (bfd *abfd, asection *asect,
arelent *relent;
bfd_vma i;
int entsize;
- reloc_howto_type *howto_table;
+ bfd_boolean rela_p;
allocated = bfd_malloc (rel_hdr->sh_size);
if (allocated == NULL)
@@ -2106,9 +2033,9 @@ mips_elf64_slurp_one_reloc_table (bfd *abfd, asection *asect,
|| entsize == sizeof (Elf64_Mips_External_Rela));
if (entsize == sizeof (Elf64_Mips_External_Rel))
- howto_table = mips_elf64_howto_table_rel;
+ rela_p = FALSE;
else
- howto_table = mips_elf64_howto_table_rela;
+ rela_p = TRUE;
for (i = 0, relent = relents;
i < reloc_count;
@@ -2221,7 +2148,7 @@ mips_elf64_slurp_one_reloc_table (bfd *abfd, asection *asect,
relent->addend = rela.r_addend;
- relent->howto = &howto_table[(int) type];
+ relent->howto = mips_elf64_rtype_to_howto (type, rela_p);
++relent;
}
@@ -2749,11 +2676,6 @@ const struct elf_size_info mips_elf64_size_info =
#define ELF_ARCH bfd_arch_mips
#define ELF_MACHINE_CODE EM_MIPS
-/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses
- a value of 0x1000, and we are compatible.
- FIXME: How does this affect NewABI? */
-#define ELF_MAXPAGESIZE 0x1000
-
#define elf_backend_collect TRUE
#define elf_backend_type_change_ok TRUE
#define elf_backend_can_gc_sections TRUE
@@ -2864,9 +2786,12 @@ extern bfd_boolean bfd_elf64_archive_write_armap
#define TARGET_BIG_SYM bfd_elf64_bigmips_vec
#define TARGET_BIG_NAME "elf64-bigmips"
-#include "elf64-target.h"
+/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses
+ a value of 0x1000, and we are compatible.
+ FIXME: How does this affect NewABI? */
+#define ELF_MAXPAGESIZE 0x1000
-#define INCLUDED_TARGET_FILE /* More a type of flag. */
+#include "elf64-target.h"
/* The SYSV-style 'traditional' (n)64 NewABI. */
#undef TARGET_LITTLE_SYM
@@ -2874,10 +2799,17 @@ extern bfd_boolean bfd_elf64_archive_write_armap
#undef TARGET_BIG_SYM
#undef TARGET_BIG_NAME
+#undef ELF_MAXPAGESIZE
+
#define TARGET_LITTLE_SYM bfd_elf64_tradlittlemips_vec
#define TARGET_LITTLE_NAME "elf64-tradlittlemips"
#define TARGET_BIG_SYM bfd_elf64_tradbigmips_vec
#define TARGET_BIG_NAME "elf64-tradbigmips"
+/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
+ page sizes of up to that limit, so we need to respect it. */
+#define ELF_MAXPAGESIZE 0x10000
+#define elf64_bed elf64_tradbed
+
/* Include the target file again for this target. */
#include "elf64-target.h"
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 3ed9042e6ff..304a635856d 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -3590,6 +3590,15 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
if (info->relocatable)
return TRUE;
+ /* Don't do anything special with non-loaded, non-alloced sections.
+ In particular, any relocs in such sections should not affect GOT
+ and PLT reference counting (ie. we don't allow them to create GOT
+ or PLT entries), there's no possibility or desire to optimize TLS
+ relocs, and there's not much point in propagating relocs to shared
+ libs that the dynamic linker won't relocate. */
+ if ((sec->flags & SEC_ALLOC) == 0)
+ return TRUE;
+
htab = ppc_hash_table (info);
symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -3947,10 +3956,6 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
if (NO_OPD_RELOCS && opd_sym_map != NULL)
break;
- /* Don't propagate relocs that the dynamic linker won't relocate. */
- if ((sec->flags & SEC_ALLOC) == 0)
- break;
-
/* If we are creating a shared library, and this is a reloc
against a global symbol, or a non PC relative reloc
against a local symbol, then we need to copy the reloc
@@ -4166,6 +4171,9 @@ ppc64_elf_gc_sweep_hook (bfd *abfd, struct bfd_link_info *info,
struct got_entry **local_got_ents;
const Elf_Internal_Rela *rel, *relend;
+ if ((sec->flags & SEC_ALLOC) == 0)
+ return TRUE;
+
elf_section_data (sec)->local_dynrel = NULL;
htab = ppc_hash_table (info);
@@ -6001,7 +6009,7 @@ ppc64_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
}
/* .plt is in the bss section. We don't initialise it. */
- if ((s->flags & SEC_LOAD) == 0)
+ if (s == htab->plt)
continue;
/* Allocate memory for the section contents. We use bfd_zalloc
diff --git a/bfd/elflink.h b/bfd/elflink.h
index f558e1c51ac..c37d7398d01 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -5801,7 +5801,10 @@ elf_gc_sections (bfd *abfd, struct bfd_link_info *info)
|| info->emitrelocations
|| !is_elf_hash_table (info->hash)
|| elf_hash_table (info)->dynamic_sections_created)
- return TRUE;
+ {
+ (*_bfd_error_handler)(_("Warning: gc-sections option ignored"));
+ return TRUE;
+ }
/* Apply transitive closure to the vtable entry usage info. */
elf_link_hash_traverse (elf_hash_table (info),
diff --git a/bfd/elfn32-mips.c b/bfd/elfn32-mips.c
index 49cf8981919..973edd52daf 100644
--- a/bfd/elfn32-mips.c
+++ b/bfd/elfn32-mips.c
@@ -47,14 +47,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#define ECOFF_SIGNED_32
#include "ecoffswap.h"
-static bfd_reloc_status_type mips_elf_generic_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type mips_elf_hi16_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type mips_elf_lo16_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type mips_elf_got16_reloc
- (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
static bfd_boolean mips_elf_assign_gp
(bfd *, bfd_vma *);
static bfd_reloc_status_type mips_elf_final_gp
@@ -95,10 +87,6 @@ static irix_compat_t elf_n32_mips_irix_compat
extern const bfd_target bfd_elf32_nbigmips_vec;
extern const bfd_target bfd_elf32_nlittlemips_vec;
-static asection *prev_reloc_section = NULL;
-static bfd_vma prev_reloc_address = -1;
-static bfd_vma prev_reloc_addend = 0;
-
/* Nonzero if ABFD is using the N32 ABI. */
#define ABI_N32_P(abfd) \
((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI2) != 0)
@@ -126,7 +114,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_NONE", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -141,7 +129,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -156,7 +144,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_32", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -171,7 +159,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_REL32", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -189,7 +177,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
/* This needs complex overflow
detection, because the upper four
bits must match the PC + 4. */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_26", /* name */
TRUE, /* partial_inplace */
0x03ffffff, /* src_mask */
@@ -201,13 +189,13 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
/* High 16 bits of symbol value. */
HOWTO (R_MIPS_HI16, /* type */
- 0, /* rightshift */
+ 16, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_hi16_reloc, /* special_function */
+ _bfd_mips_elf_hi16_reloc, /* special_function */
"R_MIPS_HI16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -222,7 +210,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_lo16_reloc, /* special_function */
+ _bfd_mips_elf_lo16_reloc, /* special_function */
"R_MIPS_LO16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -267,7 +255,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_got16_reloc, /* special_function */
+ _bfd_mips_elf_got16_reloc, /* special_function */
"R_MIPS_GOT16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -282,7 +270,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_PC16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -297,7 +285,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -333,7 +321,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
6, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SHIFT5", /* name */
TRUE, /* partial_inplace */
0x000007c0, /* src_mask */
@@ -363,7 +351,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_64", /* name */
TRUE, /* partial_inplace */
MINUS_ONE, /* src_mask */
@@ -378,7 +366,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_DISP", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -393,7 +381,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_PAGE", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -408,7 +396,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_OFST", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -423,7 +411,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_HI16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -438,7 +426,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_LO16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -453,7 +441,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SUB", /* name */
TRUE, /* partial_inplace */
MINUS_ONE, /* src_mask */
@@ -469,7 +457,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_INSERT_A", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -486,7 +474,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_INSERT_B", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -502,7 +490,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_DELETE", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -526,7 +514,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_HI16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -541,7 +529,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_LO16", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -556,7 +544,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SCN_DISP", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -570,7 +558,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_REL16", /* name */
TRUE, /* partial_inplace */
0xffff, /* src_mask */
@@ -590,7 +578,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_RELGOT", /* name */
TRUE, /* partial_inplace */
0xffffffff, /* src_mask */
@@ -606,7 +594,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_JALR", /* name */
FALSE, /* partial_inplace */
0x00000000, /* src_mask */
@@ -626,7 +614,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_NONE", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -641,7 +629,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -656,7 +644,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_32", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -671,7 +659,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_REL32", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -689,7 +677,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
/* This needs complex overflow
detection, because the upper 36
bits must match the PC + 4. */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_26", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -704,7 +692,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_HI16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -719,7 +707,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_LO16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -764,7 +752,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_got16_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -779,7 +767,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_PC16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -794,7 +782,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -828,7 +816,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
6, /* bitpos */
complain_overflow_bitfield, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SHIFT5", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -858,7 +846,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_64", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -873,7 +861,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_DISP", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -888,7 +876,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_PAGE", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -903,7 +891,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_OFST", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -918,7 +906,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_HI16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -933,7 +921,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GOT_LO16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -948,7 +936,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SUB", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -964,7 +952,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_INSERT_A", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -981,7 +969,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_INSERT_B", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -997,7 +985,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_DELETE", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1012,7 +1000,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_HIGHER", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1027,7 +1015,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_HIGHEST", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1042,7 +1030,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_HI16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1057,7 +1045,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_CALL_LO16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1072,7 +1060,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_SCN_DISP", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1087,7 +1075,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_REL16", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1107,7 +1095,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_RELGOT", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1123,7 +1111,7 @@ static reloc_howto_type elf_mips_howto_table_rela[] =
FALSE, /* pc_relative */
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_JALR", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
@@ -1207,7 +1195,7 @@ static reloc_howto_type elf_mips_gnu_rel16_s2 =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GNU_REL16_S2", /* name */
TRUE, /* partial_inplace */
0x0000ffff, /* src_mask */
@@ -1223,224 +1211,13 @@ static reloc_howto_type elf_mips_gnu_rela16_s2 =
TRUE, /* pc_relative */
0, /* bitpos */
complain_overflow_signed, /* complain_on_overflow */
- mips_elf_generic_reloc, /* special_function */
+ _bfd_mips_elf_generic_reloc, /* special_function */
"R_MIPS_GNU_REL16_S2", /* name */
FALSE, /* partial_inplace */
0, /* src_mask */
0x0000ffff, /* dst_mask */
TRUE); /* pcrel_offset */
-/* This is derived from bfd_elf_generic_reloc. NewABI allows us to have
- several relocations against the same address. The addend is derived
- from the addends of preceding relocations. If we don't need to
- do something special, we simply keep track of the addend. */
-
-#define GET_RELOC_ADDEND(obfd, sym, entry, sec) \
-{ \
- /* If we're relocating, and this is an external symbol, we don't \
- want to change anything. */ \
- if ((obfd) != NULL \
- && ((sym)->flags & BSF_SECTION_SYM) == 0 \
- && (! (entry)->howto->partial_inplace \
- || (entry)->addend == 0)) \
- { \
- (entry)->address += (sec)->output_offset; \
- return bfd_reloc_ok; \
- } \
- \
- /* The addend of combined relocs is remembered and left for \
- subsequent relocs. */ \
- if (prev_reloc_address != (entry)->address \
- || prev_reloc_section != (sec)) \
- { \
- prev_reloc_section = (sec); \
- prev_reloc_address = (entry)->address; \
- prev_reloc_addend = (entry)->addend; \
- } \
- else \
- (entry)->addend = prev_reloc_addend; \
-}
-
-#define SET_RELOC_ADDEND(entry) \
-{ \
- prev_reloc_addend = (entry)->addend; \
-}
-
-static bfd_reloc_status_type
-mips_elf_generic_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
- asymbol *symbol, void *data ATTRIBUTE_UNUSED,
- asection *input_section, bfd *output_bfd,
- char **error_message ATTRIBUTE_UNUSED)
-{
- GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section)
-
- return bfd_reloc_continue;
-}
-
-/* Do a R_MIPS_HI16 relocation. This has to be done in combination
- with a R_MIPS_LO16 reloc, because there is a carry from the LO16 to
- the HI16. Here we just save the information we need; we do the
- actual relocation when we see the LO16.
-
- MIPS ELF requires that the LO16 immediately follow the HI16. As a
- GNU extension, for non-pc-relative relocations, we permit an
- arbitrary number of HI16 relocs to be associated with a single LO16
- reloc. This extension permits gcc to output the HI and LO relocs
- itself.
-
- This cannot be done for PC-relative relocations because both the HI16
- and LO16 parts of the relocations must be done relative to the LO16
- part, and there can be carry to or borrow from the HI16 part. */
-
-struct mips_hi16
-{
- struct mips_hi16 *next;
- bfd_byte *addr;
- bfd_vma addend;
-};
-
-/* FIXME: This should not be a static variable. */
-
-static struct mips_hi16 *mips_hi16_list;
-
-static bfd_reloc_status_type
-mips_elf_hi16_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
- asymbol *symbol, void *data, asection *input_section,
- bfd *output_bfd, char **error_message ATTRIBUTE_UNUSED)
-{
- bfd_reloc_status_type ret;
- bfd_vma relocation;
- struct mips_hi16 *n;
-
- GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section)
-
- ret = bfd_reloc_ok;
-
- if (bfd_is_und_section (symbol->section) && output_bfd == NULL)
- ret = bfd_reloc_undefined;
-
- if (bfd_is_com_section (symbol->section))
- relocation = 0;
- else
- relocation = symbol->value;
-
- relocation += symbol->section->output_section->vma;
- relocation += symbol->section->output_offset;
- relocation += reloc_entry->addend;
-
- if (reloc_entry->address > input_section->_cooked_size)
- return bfd_reloc_outofrange;
-
- /* Save the information, and let LO16 do the actual relocation. */
- n = bfd_malloc (sizeof *n);
- if (n == NULL)
- return bfd_reloc_outofrange;
- n->addr = (bfd_byte *) data + reloc_entry->address;
- n->addend = relocation;
- n->next = mips_hi16_list;
- mips_hi16_list = n;
-
- if (output_bfd != NULL)
- reloc_entry->address += input_section->output_offset;
-
- return ret;
-}
-
-/* Do a R_MIPS_LO16 relocation. This is a straightforward 16 bit
- inplace relocation; this function exists in order to do the
- R_MIPS_HI16 relocation described above. */
-
-static bfd_reloc_status_type
-mips_elf_lo16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
- void *data, asection *input_section, bfd *output_bfd,
- char **error_message)
-{
- if (mips_hi16_list != NULL)
- {
- struct mips_hi16 *l;
-
- l = mips_hi16_list;
- while (l != NULL)
- {
- unsigned long insn;
- unsigned long val;
- unsigned long vallo;
- struct mips_hi16 *next;
-
- /* Do the HI16 relocation. Note that we actually don't need
- to know anything about the LO16 itself, except where to
- find the low 16 bits of the addend needed by the LO16. */
- insn = bfd_get_32 (abfd, l->addr);
- vallo = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
-
- /* The low order 16 bits are always treated as a signed
- value. */
- vallo = ((vallo & 0xffff) ^ 0x8000) - 0x8000;
- val = ((insn & 0xffff) << 16) + vallo;
- val += l->addend;
-
- /* If PC-relative, we need to subtract out the address of the LO
- half of the HI/LO. (The actual relocation is relative
- to that instruction.) */
- if (reloc_entry->howto->pc_relative)
- val -= reloc_entry->address;
-
- /* At this point, "val" has the value of the combined HI/LO
- pair. If the low order 16 bits (which will be used for
- the LO16 insn) are negative, then we will need an
- adjustment for the high order 16 bits. */
- val += 0x8000;
- val = (val >> 16) & 0xffff;
-
- insn &= ~ (bfd_vma) 0xffff;
- insn |= val;
- bfd_put_32 (abfd, insn, l->addr);
-
- next = l->next;
- free (l);
- l = next;
- }
-
- mips_hi16_list = NULL;
- }
-
- /* Now do the LO16 reloc in the usual way. */
- return mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
- input_section, output_bfd, error_message);
-}
-
-/* Do a R_MIPS_GOT16 reloc. This is a reloc against the global offset
- table used for PIC code. If the symbol is an external symbol, the
- instruction is modified to contain the offset of the appropriate
- entry in the global offset table. If the symbol is a section
- symbol, the next reloc is a R_MIPS_LO16 reloc. The two 16 bit
- addends are combined to form the real addend against the section
- symbol; the GOT16 is modified to contain the offset of an entry in
- the global offset table, and the LO16 is modified to offset it
- appropriately. Thus an offset larger than 16 bits requires a
- modified value in the global offset table.
-
- This implementation suffices for the assembler, but the linker does
- not yet know how to create global offset tables. */
-
-static bfd_reloc_status_type
-mips_elf_got16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
- void *data, asection *input_section, bfd *output_bfd,
- char **error_message)
-{
- /* If we're relocating, and this is a local symbol, we can handle it
- just like an R_MIPS_HI16. */
- if (output_bfd != NULL
- && ((symbol->flags & BSF_SECTION_SYM) != 0
- || (symbol->flags & BSF_LOCAL) == 0))
- return mips_elf_hi16_reloc (abfd, reloc_entry, symbol, data,
- input_section, output_bfd, error_message);
-
- /* Otherwise we try to handle it as R_MIPS_GOT_DISP. */
- return mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
- input_section, output_bfd, error_message);
-}
-
/* Set the GP value for OUTPUT_BFD. Returns FALSE if this is a
dangerous relocation. */
@@ -1542,8 +1319,6 @@ mips_elf_gprel16_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
bfd_reloc_status_type ret;
bfd_vma gp;
- GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section)
-
if (output_bfd != NULL)
relocatable = TRUE;
else
@@ -1573,8 +1348,6 @@ mips_elf_literal_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
bfd_reloc_status_type ret;
bfd_vma gp;
- GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section)
-
/* FIXME: The entries in the .lit8 and .lit4 sections should be merged. */
if (output_bfd != NULL)
relocatable = TRUE;
@@ -1606,8 +1379,6 @@ mips_elf_gprel32_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
bfd_reloc_status_type ret;
bfd_vma gp;
- GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section)
-
/* R_MIPS_GPREL32 relocations are defined for local symbols only. */
if (output_bfd != NULL
&& (symbol->flags & BSF_SECTION_SYM) == 0
@@ -1684,36 +1455,33 @@ gprel32_with_gp (bfd *abfd, asymbol *symbol, arelent *reloc_entry,
the rest is at bits 6-10. The bitpos already got right by the howto. */
static bfd_reloc_status_type
-mips_elf_shift6_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
- asymbol *symbol, void *data ATTRIBUTE_UNUSED,
- asection *input_section, bfd *output_bfd,
- char **error_message ATTRIBUTE_UNUSED)
+mips_elf_shift6_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+ void *data, asection *input_section, bfd *output_bfd,
+ char **error_message)
{
- GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section)
-
if (reloc_entry->howto->partial_inplace)
{
reloc_entry->addend = ((reloc_entry->addend & 0x00007c0)
| (reloc_entry->addend & 0x00000800) >> 9);
}
- SET_RELOC_ADDEND (reloc_entry)
-
- return bfd_reloc_continue;
+ return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
+ input_section, output_bfd,
+ error_message);
}
/* Handle a mips16 jump. */
static bfd_reloc_status_type
-mips16_jump_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
- asymbol *symbol, void *data ATTRIBUTE_UNUSED,
- asection *input_section, bfd *output_bfd,
+mips16_jump_reloc (bfd *abfd ATTRIBUTE_UNUSED,
+ arelent *reloc_entry ATTRIBUTE_UNUSED,
+ asymbol *symbol ATTRIBUTE_UNUSED,
+ void *data ATTRIBUTE_UNUSED,
+ asection *input_section, bfd *output_bfd ATTRIBUTE_UNUSED,
char **error_message ATTRIBUTE_UNUSED)
{
static bfd_boolean warned = FALSE;
- GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section)
-
/* FIXME. */
if (! warned)
(*_bfd_error_handler)
@@ -1739,8 +1507,6 @@ mips16_gprel_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
bfd_signed_vma val;
bfd_vma relocation;
- GET_RELOC_ADDEND (output_bfd, symbol, reloc_entry, input_section)
-
if (output_bfd != NULL)
relocatable = TRUE;
else
@@ -1804,9 +1570,6 @@ mips16_gprel_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
return bfd_reloc_ok;
}
-
-#undef GET_RELOC_ADDEND
-#undef SET_RELOC_ADDEND
/* A mapping from BFD reloc types to MIPS ELF reloc types. */
@@ -2110,11 +1873,6 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = {
#define ELF_ARCH bfd_arch_mips
#define ELF_MACHINE_CODE EM_MIPS
-/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses
- a value of 0x1000, and we are compatible.
- FIXME: How does this affect NewABI? */
-#define ELF_MAXPAGESIZE 0x1000
-
#define elf_backend_collect TRUE
#define elf_backend_type_change_ok TRUE
#define elf_backend_can_gc_sections TRUE
@@ -2196,20 +1954,30 @@ static const struct ecoff_debug_swap mips_elf32_ecoff_debug_swap = {
#define TARGET_BIG_SYM bfd_elf32_nbigmips_vec
#define TARGET_BIG_NAME "elf32-nbigmips"
+/* The SVR4 MIPS ABI says that this should be 0x10000, but Irix 5 uses
+ a value of 0x1000, and we are compatible.
+ FIXME: How does this affect NewABI? */
+#define ELF_MAXPAGESIZE 0x1000
+
#include "elf32-target.h"
/* Support for traditional mips targets using n32 ABI. */
-#define INCLUDED_TARGET_FILE /* More a type of flag. */
-
#undef TARGET_LITTLE_SYM
#undef TARGET_LITTLE_NAME
#undef TARGET_BIG_SYM
#undef TARGET_BIG_NAME
+#undef ELF_MAXPAGESIZE
+
#define TARGET_LITTLE_SYM bfd_elf32_ntradlittlemips_vec
#define TARGET_LITTLE_NAME "elf32-ntradlittlemips"
#define TARGET_BIG_SYM bfd_elf32_ntradbigmips_vec
#define TARGET_BIG_NAME "elf32-ntradbigmips"
+/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
+ page sizes of up to that limit, so we need to respect it. */
+#define ELF_MAXPAGESIZE 0x10000
+#define elf32_bed elf32_tradbed
+
/* Include the target file again for this target. */
#include "elf32-target.h"
diff --git a/bfd/elfxx-ia64.c b/bfd/elfxx-ia64.c
index aba571a415e..c699922154d 100644
--- a/bfd/elfxx-ia64.c
+++ b/bfd/elfxx-ia64.c
@@ -876,6 +876,8 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
if (is_branch)
{
+ bfd_signed_vma offset;
+
reladdr = (sec->output_section->vma
+ sec->output_offset
+ roff) & (bfd_vma) -4;
@@ -911,6 +913,13 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
/* Resize the current section to make room for the new branch. */
trampoff = (sec->_cooked_size + 15) & (bfd_vma) -16;
+
+ /* If trampoline is out of range, there is nothing we
+ can do. */
+ offset = trampoff - (roff & (bfd_vma) -4);
+ if (offset < -0x1000000 || offset > 0x0FFFFF0)
+ continue;
+
amt = trampoff + size;
contents = (bfd_byte *) bfd_realloc (contents, amt);
if (contents == NULL)
@@ -957,14 +966,18 @@ elfNN_ia64_relax_section (abfd, sec, link_info, again)
}
else
{
+ /* If trampoline is out of range, there is nothing we
+ can do. */
+ offset = f->trampoff - (roff & (bfd_vma) -4);
+ if (offset < -0x1000000 || offset > 0x0FFFFF0)
+ continue;
+
/* Nop out the reloc, since we're finalizing things here. */
irel->r_info = ELFNN_R_INFO (0, R_IA64_NONE);
}
- /* Fix up the existing branch to hit the trampoline. Hope like
- hell this doesn't overflow too. */
- if (elfNN_ia64_install_value (abfd, contents + roff,
- f->trampoff - (roff & (bfd_vma) -4),
+ /* Fix up the existing branch to hit the trampoline. */
+ if (elfNN_ia64_install_value (abfd, contents + roff, offset,
r_type) != bfd_reloc_ok)
goto error_return;
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 1af0f980017..7bcdb1115b3 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -1082,8 +1082,8 @@ _bfd_mips_elf_gprel16_with_gp (bfd *abfd, asymbol *symbol,
bfd_boolean relocatable, void *data, bfd_vma gp)
{
bfd_vma relocation;
- unsigned long insn = 0;
bfd_signed_vma val;
+ bfd_reloc_status_type status;
if (bfd_is_com_section (symbol->section))
relocation = 0;
@@ -1099,13 +1099,7 @@ _bfd_mips_elf_gprel16_with_gp (bfd *abfd, asymbol *symbol,
/* Set val to the offset into the section or symbol. */
val = reloc_entry->addend;
- if (reloc_entry->howto->partial_inplace)
- {
- insn = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
- val += insn & 0xffff;
- }
-
- _bfd_mips_elf_sign_extend(val, 16);
+ _bfd_mips_elf_sign_extend (val, 16);
/* Adjust val for the final section location and GP value. If we
are producing relocatable output, we don't want to do this for
@@ -1116,16 +1110,215 @@ _bfd_mips_elf_gprel16_with_gp (bfd *abfd, asymbol *symbol,
if (reloc_entry->howto->partial_inplace)
{
- insn = (insn & ~0xffff) | (val & 0xffff);
- bfd_put_32 (abfd, insn, (bfd_byte *) data + reloc_entry->address);
+ status = _bfd_relocate_contents (reloc_entry->howto, abfd, val,
+ (bfd_byte *) data
+ + reloc_entry->address);
+ if (status != bfd_reloc_ok)
+ return status;
}
else
reloc_entry->addend = val;
if (relocatable)
reloc_entry->address += input_section->output_offset;
- else if (((val & ~0xffff) != ~0xffff) && ((val & ~0xffff) != 0))
- return bfd_reloc_overflow;
+
+ return bfd_reloc_ok;
+}
+
+/* Used to store a REL high-part relocation such as R_MIPS_HI16 or
+ R_MIPS_GOT16. REL is the relocation, INPUT_SECTION is the section
+ that contains the relocation field and DATA points to the start of
+ INPUT_SECTION. */
+
+struct mips_hi16
+{
+ struct mips_hi16 *next;
+ bfd_byte *data;
+ asection *input_section;
+ arelent rel;
+};
+
+/* FIXME: This should not be a static variable. */
+
+static struct mips_hi16 *mips_hi16_list;
+
+/* A howto special_function for REL *HI16 relocations. We can only
+ calculate the correct value once we've seen the partnering
+ *LO16 relocation, so just save the information for later.
+
+ The ABI requires that the *LO16 immediately follow the *HI16.
+ However, as a GNU extension, we permit an arbitrary number of
+ *HI16s to be associated with a single *LO16. This significantly
+ simplies the relocation handling in gcc. */
+
+bfd_reloc_status_type
+_bfd_mips_elf_hi16_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
+ asymbol *symbol ATTRIBUTE_UNUSED, void *data,
+ asection *input_section, bfd *output_bfd,
+ char **error_message ATTRIBUTE_UNUSED)
+{
+ struct mips_hi16 *n;
+
+ if (reloc_entry->address > input_section->_cooked_size)
+ return bfd_reloc_outofrange;
+
+ n = bfd_malloc (sizeof *n);
+ if (n == NULL)
+ return bfd_reloc_outofrange;
+
+ n->next = mips_hi16_list;
+ n->data = data;
+ n->input_section = input_section;
+ n->rel = *reloc_entry;
+ mips_hi16_list = n;
+
+ if (output_bfd != NULL)
+ reloc_entry->address += input_section->output_offset;
+
+ return bfd_reloc_ok;
+}
+
+/* A howto special_function for REL R_MIPS_GOT16 relocations. This is just
+ like any other 16-bit relocation when applied to global symbols, but is
+ treated in the same as R_MIPS_HI16 when applied to local symbols. */
+
+bfd_reloc_status_type
+_bfd_mips_elf_got16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+ void *data, asection *input_section,
+ bfd *output_bfd, char **error_message)
+{
+ if ((symbol->flags & (BSF_GLOBAL | BSF_WEAK)) != 0
+ || bfd_is_und_section (bfd_get_section (symbol))
+ || bfd_is_com_section (bfd_get_section (symbol)))
+ /* The relocation is against a global symbol. */
+ return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
+ input_section, output_bfd,
+ error_message);
+
+ return _bfd_mips_elf_hi16_reloc (abfd, reloc_entry, symbol, data,
+ input_section, output_bfd, error_message);
+}
+
+/* A howto special_function for REL *LO16 relocations. The *LO16 itself
+ is a straightforward 16 bit inplace relocation, but we must deal with
+ any partnering high-part relocations as well. */
+
+bfd_reloc_status_type
+_bfd_mips_elf_lo16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
+ void *data, asection *input_section,
+ bfd *output_bfd, char **error_message)
+{
+ bfd_vma vallo;
+
+ if (reloc_entry->address > input_section->_cooked_size)
+ return bfd_reloc_outofrange;
+
+ vallo = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
+ while (mips_hi16_list != NULL)
+ {
+ bfd_reloc_status_type ret;
+ struct mips_hi16 *hi;
+
+ hi = mips_hi16_list;
+
+ /* R_MIPS_GOT16 relocations are something of a special case. We
+ want to install the addend in the same way as for a R_MIPS_HI16
+ relocation (with a rightshift of 16). However, since GOT16
+ relocations can also be used with global symbols, their howto
+ has a rightshift of 0. */
+ if (hi->rel.howto->type == R_MIPS_GOT16)
+ hi->rel.howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, R_MIPS_HI16, FALSE);
+
+ /* VALLO is a signed 16-bit number. Bias it by 0x8000 so that any
+ carry or borrow will induce a change of +1 or -1 in the high part. */
+ hi->rel.addend += (vallo + 0x8000) & 0xffff;
+
+ /* R_MIPS_GNU_REL_HI16 relocations are relative to the address of the
+ lo16 relocation, not their own address. If we're calculating the
+ final value, and hence subtracting the "PC", subtract the offset
+ of the lo16 relocation from here. */
+ if (output_bfd == NULL && hi->rel.howto->type == R_MIPS_GNU_REL_HI16)
+ hi->rel.addend -= reloc_entry->address - hi->rel.address;
+
+ ret = _bfd_mips_elf_generic_reloc (abfd, &hi->rel, symbol, hi->data,
+ hi->input_section, output_bfd,
+ error_message);
+ if (ret != bfd_reloc_ok)
+ return ret;
+
+ mips_hi16_list = hi->next;
+ free (hi);
+ }
+
+ return _bfd_mips_elf_generic_reloc (abfd, reloc_entry, symbol, data,
+ input_section, output_bfd,
+ error_message);
+}
+
+/* A generic howto special_function. This calculates and installs the
+ relocation itself, thus avoiding the oft-discussed problems in
+ bfd_perform_relocation and bfd_install_relocation. */
+
+bfd_reloc_status_type
+_bfd_mips_elf_generic_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
+ asymbol *symbol, void *data ATTRIBUTE_UNUSED,
+ asection *input_section, bfd *output_bfd,
+ char **error_message ATTRIBUTE_UNUSED)
+{
+ bfd_signed_vma val;
+ bfd_reloc_status_type status;
+ bfd_boolean relocatable;
+
+ relocatable = (output_bfd != NULL);
+
+ if (reloc_entry->address > input_section->_cooked_size)
+ return bfd_reloc_outofrange;
+
+ /* Build up the field adjustment in VAL. */
+ val = 0;
+ if (!relocatable || (symbol->flags & BSF_SECTION_SYM) != 0)
+ {
+ /* Either we're calculating the final field value or we have a
+ relocation against a section symbol. Add in the section's
+ offset or address. */
+ val += symbol->section->output_section->vma;
+ val += symbol->section->output_offset;
+ }
+
+ if (!relocatable)
+ {
+ /* We're calculating the final field value. Add in the symbol's value
+ and, if pc-relative, subtract the address of the field itself. */
+ val += symbol->value;
+ if (reloc_entry->howto->pc_relative)
+ {
+ val -= input_section->output_section->vma;
+ val -= input_section->output_offset;
+ val -= reloc_entry->address;
+ }
+ }
+
+ /* VAL is now the final adjustment. If we're keeping this relocation
+ in the output file, and if the relocation uses a separate addend,
+ we just need to add VAL to that addend. Otherwise we need to add
+ VAL to the relocation field itself. */
+ if (relocatable && !reloc_entry->howto->partial_inplace)
+ reloc_entry->addend += val;
+ else
+ {
+ /* Add in the separate addend, if any. */
+ val += reloc_entry->addend;
+
+ /* Add VAL to the relocation field. */
+ status = _bfd_relocate_contents (reloc_entry->howto, abfd, val,
+ (bfd_byte *) data
+ + reloc_entry->address);
+ if (status != bfd_reloc_ok)
+ return status;
+ }
+
+ if (relocatable)
+ reloc_entry->address += input_section->output_offset;
return bfd_reloc_ok;
}
@@ -3203,7 +3396,7 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
break;
case R_MIPS_GNU_REL16_S2:
- value = symbol + _bfd_mips_elf_sign_extend (addend << 2, 18) - p;
+ value = symbol + _bfd_mips_elf_sign_extend (addend, 18) - p;
overflowed_p = mips_elf_overflow_p (value, 18);
value = (value >> 2) & howto->dst_mask;
break;
@@ -3226,9 +3419,9 @@ mips_elf_calculate_relocation (bfd *abfd, bfd *input_bfd,
R_MIPS_26 case here. */
case R_MIPS_26:
if (local_p)
- value = (((addend << 2) | ((p + 4) & 0xf0000000)) + symbol) >> 2;
+ value = ((addend | ((p + 4) & 0xf0000000)) + symbol) >> 2;
else
- value = (_bfd_mips_elf_sign_extend (addend << 2, 28) + symbol) >> 2;
+ value = (_bfd_mips_elf_sign_extend (addend, 28) + symbol) >> 2;
value &= howto->dst_mask;
break;
@@ -6067,7 +6260,6 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
addend = mips_elf_obtain_contents (howto, rel, input_bfd,
contents);
addend &= howto->src_mask;
- addend <<= howto->rightshift;
/* For some kinds of relocations, the ADDEND is a
combination of the addend stored in two different
@@ -6131,6 +6323,8 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
| ((addend & 0x7e00000) >> 16)
| (addend & 0x1f));
}
+ else
+ addend <<= howto->rightshift;
}
else
addend = rel->r_addend;
@@ -6170,33 +6364,25 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
/* Adjust the addend appropriately. */
addend += local_sections[r_symndx]->output_offset;
- if (howto->partial_inplace)
+ if (rela_relocation_p)
+ /* If this is a RELA relocation, just update the addend. */
+ rel->r_addend = addend;
+ else
{
- /* If the relocation is for a R_MIPS_HI16 or R_MIPS_GOT16,
- then we only want to write out the high-order 16 bits.
- The subsequent R_MIPS_LO16 will handle the low-order bits.
- */
- if (r_type == R_MIPS_HI16 || r_type == R_MIPS_GOT16
+ if (r_type == R_MIPS_HI16
+ || r_type == R_MIPS_GOT16
|| r_type == R_MIPS_GNU_REL_HI16)
addend = mips_elf_high (addend);
else if (r_type == R_MIPS_HIGHER)
addend = mips_elf_higher (addend);
else if (r_type == R_MIPS_HIGHEST)
addend = mips_elf_highest (addend);
- }
+ else
+ addend >>= howto->rightshift;
- if (rela_relocation_p)
- /* If this is a RELA relocation, just update the addend.
- We have to cast away constness for REL. */
- rel->r_addend = addend;
- else
- {
- /* Otherwise, we have to write the value back out. Note
- that we use the source mask, rather than the
- destination mask because the place to which we are
- writing will be source of the addend in the final
- link. */
- addend >>= howto->rightshift;
+ /* We use the source mask, rather than the destination
+ mask because the place to which we are writing will be
+ source of the addend in the final link. */
addend &= howto->src_mask;
if (r_type == R_MIPS_64 && ! NEWABI_P (output_bfd))
@@ -6260,8 +6446,6 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
else
use_saved_addend_p = FALSE;
- addend >>= howto->rightshift;
-
/* Figure out what value we are supposed to relocate. */
switch (mips_elf_calculate_relocation (output_bfd, input_bfd,
input_section, info, rel,
diff --git a/bfd/elfxx-mips.h b/bfd/elfxx-mips.h
index aef4e7b7b24..d3787e9ef96 100644
--- a/bfd/elfxx-mips.h
+++ b/bfd/elfxx-mips.h
@@ -103,6 +103,14 @@ extern bfd_reloc_status_type _bfd_mips_elf_gprel16_with_gp
(bfd *, asymbol *, arelent *, asection *, bfd_boolean, void *, bfd_vma);
extern bfd_reloc_status_type _bfd_mips_elf32_gprel16_reloc
(bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
+extern bfd_reloc_status_type _bfd_mips_elf_hi16_reloc
+ (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
+extern bfd_reloc_status_type _bfd_mips_elf_got16_reloc
+ (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
+extern bfd_reloc_status_type _bfd_mips_elf_lo16_reloc
+ (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
+extern bfd_reloc_status_type _bfd_mips_elf_generic_reloc
+ (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
extern unsigned long _bfd_elf_mips_mach
(flagword);
extern bfd_boolean _bfd_mips_relax_section
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index b40a249bb39..40e1b789f9a 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -864,6 +864,20 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_FRV_GPREL32",
"BFD_RELOC_FRV_GPRELHI",
"BFD_RELOC_FRV_GPRELLO",
+ "BFD_RELOC_FRV_GOT12",
+ "BFD_RELOC_FRV_GOTHI",
+ "BFD_RELOC_FRV_GOTLO",
+ "BFD_RELOC_FRV_FUNCDESC",
+ "BFD_RELOC_FRV_FUNCDESC_GOT12",
+ "BFD_RELOC_FRV_FUNCDESC_GOTHI",
+ "BFD_RELOC_FRV_FUNCDESC_GOTLO",
+ "BFD_RELOC_FRV_FUNCDESC_VALUE",
+ "BFD_RELOC_FRV_FUNCDESC_GOTOFF12",
+ "BFD_RELOC_FRV_FUNCDESC_GOTOFFHI",
+ "BFD_RELOC_FRV_FUNCDESC_GOTOFFLO",
+ "BFD_RELOC_FRV_GOTOFF12",
+ "BFD_RELOC_FRV_GOTOFFHI",
+ "BFD_RELOC_FRV_GOTOFFLO",
"BFD_RELOC_MN10300_GOTOFF24",
"BFD_RELOC_MN10300_GOT32",
@@ -1168,6 +1182,20 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_M32R_HI16_SLO",
"BFD_RELOC_M32R_LO16",
"BFD_RELOC_M32R_SDA16",
+ "BFD_RELOC_M32R_GOT24",
+ "BFD_RELOC_M32R_26_PLTREL",
+ "BFD_RELOC_M32R_COPY",
+ "BFD_RELOC_M32R_GLOB_DAT",
+ "BFD_RELOC_M32R_JMP_SLOT",
+ "BFD_RELOC_M32R_RELATIVE",
+ "BFD_RELOC_M32R_GOTOFF",
+ "BFD_RELOC_M32R_GOTPC24",
+ "BFD_RELOC_M32R_GOT16_HI_ULO",
+ "BFD_RELOC_M32R_GOT16_HI_SLO",
+ "BFD_RELOC_M32R_GOT16_LO",
+ "BFD_RELOC_M32R_GOTPC_HI_ULO",
+ "BFD_RELOC_M32R_GOTPC_HI_SLO",
+ "BFD_RELOC_M32R_GOTPC_LO",
"BFD_RELOC_V850_9_PCREL",
"BFD_RELOC_V850_22_PCREL",
"BFD_RELOC_V850_SDA_16_16_OFFSET",
@@ -1402,6 +1430,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_M68HC11_LO16",
"BFD_RELOC_M68HC11_PAGE",
"BFD_RELOC_M68HC11_24",
+ "BFD_RELOC_M68HC12_5B",
"BFD_RELOC_CRIS_BDISP8",
"BFD_RELOC_CRIS_UNSIGNED_5",
"BFD_RELOC_CRIS_SIGNED_6",
diff --git a/bfd/opncls.c b/bfd/opncls.c
index 96f1e14ccda..6abd40509ca 100644
--- a/bfd/opncls.c
+++ b/bfd/opncls.c
@@ -70,8 +70,7 @@ _bfd_new_bfd (void)
nbfd->direction = no_direction;
nbfd->iostream = NULL;
nbfd->where = 0;
- if (!bfd_hash_table_init_n (&nbfd->section_htab,
- bfd_section_hash_newfunc,
+ if (!bfd_hash_table_init_n (& nbfd->section_htab, bfd_section_hash_newfunc,
251))
{
free (nbfd);
@@ -923,7 +922,7 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory)
for (i = strlen (dir) - 1; i >= 0; i--)
if (IS_DIR_SEPARATOR (dir[i]))
break;
-
+
dir[i + 1] = '\0';
BFD_ASSERT (dir[i] == '/' || dir[0] == '\0')
@@ -996,23 +995,26 @@ SYNOPSIS
DESCRIPTION
Takes a BFD and searches it for a .gnu_debuglink section. If this
- section is found, examines the section for the name and checksum of
- a '.debug' file containing auxiliary debugging
- information. Searches filesystem for .debug file in some standard
+ section is found, it examines the section for the name and checksum
+ of a '.debug' file containing auxiliary debugging information. It
+ then searches the filesystem for this .debug file in some standard
locations, including the directory tree rooted at @var{dir}, and if
- found returns the full filename. If @var{dir} is NULL, will search
- default path configured into libbfd at build time.
+ found returns the full filename.
+
+ If @var{dir} is NULL, it will search a default path configured into
+ libbfd at build time. [XXX this feature is not currently
+ implemented].
RETURNS
<<NULL>> on any errors or failure to locate the .debug file,
otherwise a pointer to a heap-allocated string containing the
- filename. The caller is responsible for freeing this string.
+ filename. The caller is responsible for freeing this string.
*/
char *
bfd_follow_gnu_debuglink (bfd *abfd, const char *dir)
{
-#if 0 /* Disabled until DEBUGDIR can be defined by configure.in */
+#if 0 /* Disabled until DEBUGDIR can be defined by configure.in. */
if (dir == NULL)
dir = DEBUGDIR;
#endif
diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
index 2fe294fe1bf..559f2a2f67b 100644
--- a/bfd/peXXigen.c
+++ b/bfd/peXXigen.c
@@ -1,5 +1,5 @@
/* Support for the generic parts of PE/PEI; the common executable parts.
- Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Written by Cygnus Solutions.
@@ -985,13 +985,21 @@ _bfd_XXi_swap_scnhdr_out (abfd, in, out)
pe_required_section_flags * p;
int flags = scnhdr_int->s_flags;
+ /* We have defaulted to adding the IMAGE_SCN_MEM_WRITE flag, but now
+ we know exactly what this specific section wants so we remove it
+ and then allow the must_have field to add it back in if necessary.
+ However, we don't remove IMAGE_SCN_MEM_WRITE flag from .text if the
+ default WP_TEXT file flag has been cleared. WP_TEXT may be cleared
+ by ld --enable-auto-import (if auto-import is actually needed),
+ by ld --omagic, or by obcopy --writable-text. */
+
+ if (strcmp (scnhdr_int->s_name, ".text")
+ || (bfd_get_file_flags (abfd) & WP_TEXT))
+ flags &= ~IMAGE_SCN_MEM_WRITE;
+
for (p = known_sections; p->section_name; p++)
if (strcmp (scnhdr_int->s_name, p->section_name) == 0)
{
- /* We have defaulted to adding the IMAGE_SCN_MEM_WRITE flag, but now
- we know exactly what this specific section wants so we remove it
- and then allow the must_have field to add it back in if necessary. */
- flags &= ~IMAGE_SCN_MEM_WRITE;
flags |= p->must_have;
break;
}
diff --git a/bfd/peicode.h b/bfd/peicode.h
index 41fcbbcb652..41445e592c3 100644
--- a/bfd/peicode.h
+++ b/bfd/peicode.h
@@ -902,10 +902,40 @@ pe_ILF_build_a_bfd (bfd * abfd,
symbol = symbol_name;
if (import_name_type != IMPORT_NAME)
- /* Skip any prefix in symbol_name. */
- while (*symbol == '@' || * symbol == '?' || * symbol == '_')
- ++ symbol;
-
+ {
+ bfd_boolean skipped_leading_underscore = FALSE;
+ bfd_boolean skipped_leading_at = FALSE;
+ bfd_boolean skipped_leading_question_mark = FALSE;
+ bfd_boolean check_again;
+
+ /* Skip any prefix in symbol_name. */
+ -- symbol;
+ do
+ {
+ check_again = FALSE;
+ ++ symbol;
+
+ switch (*symbol)
+ {
+ case '@':
+ if (! skipped_leading_at)
+ check_again = skipped_leading_at = TRUE;
+ break;
+ case '?':
+ if (! skipped_leading_question_mark)
+ check_again = skipped_leading_question_mark = TRUE;
+ break;
+ case '_':
+ if (! skipped_leading_underscore)
+ check_again = skipped_leading_underscore = TRUE;
+ break;
+ default:
+ break;
+ }
+ }
+ while (check_again);
+ }
+
if (import_name_type == IMPORT_NAME_UNDECORATE)
{
/* Truncate at the first '@' */
diff --git a/bfd/reloc.c b/bfd/reloc.c
index ad4963f8c63..9bffaa36588 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -1,6 +1,6 @@
/* BFD support for handling relocation entries.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003
+ 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -2139,6 +2139,34 @@ ENUMX
BFD_RELOC_FRV_GPRELHI
ENUMX
BFD_RELOC_FRV_GPRELLO
+ENUMX
+ BFD_RELOC_FRV_GOT12
+ENUMX
+ BFD_RELOC_FRV_GOTHI
+ENUMX
+ BFD_RELOC_FRV_GOTLO
+ENUMX
+ BFD_RELOC_FRV_FUNCDESC
+ENUMX
+ BFD_RELOC_FRV_FUNCDESC_GOT12
+ENUMX
+ BFD_RELOC_FRV_FUNCDESC_GOTHI
+ENUMX
+ BFD_RELOC_FRV_FUNCDESC_GOTLO
+ENUMX
+ BFD_RELOC_FRV_FUNCDESC_VALUE
+ENUMX
+ BFD_RELOC_FRV_FUNCDESC_GOTOFF12
+ENUMX
+ BFD_RELOC_FRV_FUNCDESC_GOTOFFHI
+ENUMX
+ BFD_RELOC_FRV_FUNCDESC_GOTOFFLO
+ENUMX
+ BFD_RELOC_FRV_GOTOFF12
+ENUMX
+ BFD_RELOC_FRV_GOTOFFHI
+ENUMX
+ BFD_RELOC_FRV_GOTOFFLO
ENUMDOC
Fujitsu Frv Relocations.
COMMENT
@@ -2911,6 +2939,37 @@ ENUM
ENUMDOC
This is a 16-bit reloc containing the small data area offset for use in
add3, load, and store instructions.
+ENUM
+ BFD_RELOC_M32R_GOT24
+ENUMX
+ BFD_RELOC_M32R_26_PLTREL
+ENUMX
+ BFD_RELOC_M32R_COPY
+ENUMX
+ BFD_RELOC_M32R_GLOB_DAT
+ENUMX
+ BFD_RELOC_M32R_JMP_SLOT
+ENUMX
+ BFD_RELOC_M32R_RELATIVE
+ENUMX
+ BFD_RELOC_M32R_GOTOFF
+ENUMX
+ BFD_RELOC_M32R_GOTPC24
+ENUMX
+ BFD_RELOC_M32R_GOT16_HI_ULO
+ENUMX
+ BFD_RELOC_M32R_GOT16_HI_SLO
+ENUMX
+ BFD_RELOC_M32R_GOT16_LO
+ENUMX
+ BFD_RELOC_M32R_GOTPC_HI_ULO
+ENUMX
+ BFD_RELOC_M32R_GOTPC_HI_SLO
+ENUMX
+ BFD_RELOC_M32R_GOTPC_LO
+ENUMDOC
+ For PIC.
+
ENUM
BFD_RELOC_V850_9_PCREL
@@ -3705,6 +3764,11 @@ ENUMDOC
This is a 24-bit reloc that represents the address with a 16-bit
value and a 8-bit page number. The symbol address is transformed
to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
+ENUM
+ BFD_RELOC_M68HC12_5B
+ENUMDOC
+ Motorola 68HC12 reloc.
+ This is the 5 bits of a value.
ENUM
BFD_RELOC_CRIS_BDISP8
diff --git a/bfd/targets.c b/bfd/targets.c
index 488e8e4a6be..de4284eb80e 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -542,6 +542,9 @@ extern const bfd_target bfd_elf32_littlearm_oabi_vec;
extern const bfd_target bfd_elf32_littlearm_vec;
extern const bfd_target bfd_elf32_littlemips_vec;
extern const bfd_target bfd_elf32_m32r_vec;
+extern const bfd_target bfd_elf32_m32rle_vec;
+extern const bfd_target bfd_elf32_m32rlin_vec;
+extern const bfd_target bfd_elf32_m32rlelin_vec;
extern const bfd_target bfd_elf32_m68hc11_vec;
extern const bfd_target bfd_elf32_m68hc12_vec;
extern const bfd_target bfd_elf32_m68k_vec;
@@ -831,6 +834,9 @@ static const bfd_target * const _bfd_target_vector[] = {
&bfd_elf32_littlearm_vec,
&bfd_elf32_littlemips_vec,
&bfd_elf32_m32r_vec,
+ &bfd_elf32_m32rle_vec,
+ &bfd_elf32_m32rlin_vec,
+ &bfd_elf32_m32rlelin_vec,
&bfd_elf32_m68hc11_vec,
&bfd_elf32_m68hc12_vec,
&bfd_elf32_m68k_vec,
diff --git a/bfd/version.h b/bfd/version.h
index 33474d8ac34..714d236067a 100644
--- a/bfd/version.h
+++ b/bfd/version.h
@@ -1,3 +1,3 @@
-#define BFD_VERSION_DATE 20031215
+#define BFD_VERSION_DATE 20040126
#define BFD_VERSION @bfd_version@
#define BFD_VERSION_STRING @bfd_version_string@
diff --git a/config-ml.in b/config-ml.in
index 06752b7a67d..b2e4ea9cf97 100644
--- a/config-ml.in
+++ b/config-ml.in
@@ -553,6 +553,7 @@ multi-do:
LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
LDFLAGS="$(LDFLAGS) $${flags}" \
+ MULTIFLAGS="$${flags}" \
DESTDIR="$(DESTDIR)" \
INSTALL="$(INSTALL)" \
INSTALL_DATA="$(INSTALL_DATA)" \
@@ -765,7 +766,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
cd ${ml_dir}/${ml_libdir}
if [ -f ${ml_newsrcdir}/configure ]; then
- ml_recprog="${ml_newsrcdir}/configure --cache-file=../config.cache"
+ ml_recprog="${ml_newsrcdir}/configure"
fi
# find compiler flag corresponding to ${ml_dir}
diff --git a/config/ChangeLog b/config/ChangeLog
index 92eb9020c7e..85868b4246a 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,10 @@
+2004-01-14 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+
+ * acinclude.m4: Quote names of macros to be defined by AC_DEFUN
+ throughout.
+ * aclocal.m4: Regenerate.
+ * configure: Regenerate.
+
2003-10-14 Nathanael Nerode <neroden@gcc.gnu.org>
* gettext.m4: Properly quote arguments to AC_DEFUN.
diff --git a/config/acinclude.m4 b/config/acinclude.m4
index c60373a2fb5..c7c0ab5dc11 100755
--- a/config/acinclude.m4
+++ b/config/acinclude.m4
@@ -6,7 +6,7 @@ dnl and doesn't call AC_PROG_CXX_GNU, cause we test for that in AC_PROG_CC_WORK
dnl We are probably using a cross compiler, which will not be able to fully
dnl link an executable. This should really be fixed in autoconf itself.
dnl Find a working G++ cross compiler. This only works for the GNU C++ compiler.
-AC_DEFUN(CYG_AC_PROG_CXX_CROSS,
+AC_DEFUN([CYG_AC_PROG_CXX_CROSS],
[AC_BEFORE([$0], [AC_PROG_CXXCPP])
AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
@@ -35,7 +35,7 @@ fi
])
dnl See if the G++ compiler we found works.
-AC_DEFUN(CYG_AC_PROG_GXX_WORKS,
+AC_DEFUN([CYG_AC_PROG_GXX_WORKS],
[AC_MSG_CHECKING([whether the G++ compiler ($CXX $CXXFLAGS $LDFLAGS) actually works])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
@@ -103,7 +103,7 @@ AC_SUBST(CXX)
dnl ====================================================================
dnl Find a working GCC cross compiler. This only works for the GNU gcc compiler.
dnl This is based on the macros above for G++.
-AC_DEFUN(CYG_AC_PROG_CC_CROSS,
+AC_DEFUN([CYG_AC_PROG_CC_CROSS],
[AC_BEFORE([$0], [AC_PROG_CCPP])
AC_CHECK_PROGS(CC, cc, gcc)
@@ -132,7 +132,7 @@ fi
])
dnl See if the GCC compiler we found works.
-AC_DEFUN(CYG_AC_PROG_GCC_WORKS,
+AC_DEFUN([CYG_AC_PROG_GCC_WORKS],
[AC_MSG_CHECKING([whether the Gcc compiler ($CC $CFLAGS $LDFLAGS) actually works])
AC_LANG_SAVE
AC_LANG_C
@@ -199,7 +199,7 @@ AC_SUBST(CC)
dnl ====================================================================
dnl Find the BFD library in the build tree. This is used to access and
dnl manipulate object or executable files.
-AC_DEFUN(CYG_AC_PATH_BFD, [
+AC_DEFUN([CYG_AC_PATH_BFD], [
AC_MSG_CHECKING(for the bfd header in the build tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
dnl Look for the header file
@@ -241,7 +241,7 @@ AC_SUBST(BFDLIB)
dnl ====================================================================
dnl Find the libiberty library. This defines many commonly used C
dnl functions that exists in various states based on the underlying OS.
-AC_DEFUN(CYG_AC_PATH_LIBERTY, [
+AC_DEFUN([CYG_AC_PATH_LIBERTY], [
AC_MSG_CHECKING(for the liberty library in the build tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
AC_CACHE_VAL(ac_cv_c_liberty,[
@@ -262,7 +262,7 @@ AC_SUBST(LIBERTY)
dnl ====================================================================
dnl Find the opcodes library. This is used to do dissasemblies.
-AC_DEFUN(CYG_AC_PATH_OPCODES, [
+AC_DEFUN([CYG_AC_PATH_OPCODES], [
AC_MSG_CHECKING(for the opcodes library in the build tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
AC_CACHE_VAL(ac_cv_c_opc,[
@@ -284,7 +284,7 @@ AC_SUBST(OPCODESLIB)
dnl ====================================================================
dnl Look for the DejaGnu header file in the source tree. This file
dnl defines the functions used to testing support.
-AC_DEFUN(CYG_AC_PATH_DEJAGNU, [
+AC_DEFUN([CYG_AC_PATH_DEJAGNU], [
AC_MSG_CHECKING(for the testing support files in the source tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
AC_CACHE_VAL(ac_cv_c_dejagnu,[
@@ -335,7 +335,7 @@ AC_SUBST(DEJAGNUHDIR)
dnl ====================================================================
dnl Find the libintl library in the build tree. This is for
dnl internationalization support.
-AC_DEFUN(CYG_AC_PATH_INTL, [
+AC_DEFUN([CYG_AC_PATH_INTL], [
AC_MSG_CHECKING(for the intl header in the build tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
dnl Look for the header file
@@ -375,7 +375,7 @@ AC_SUBST(INTLLIB)
dnl ====================================================================
dnl Find the simulator library.
-AC_DEFUN(CYG_AC_PATH_SIM, [
+AC_DEFUN([CYG_AC_PATH_SIM], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.. ../../../../../../../../../.."
case "$target_cpu" in
powerpc) target_dir=ppc ;;
@@ -457,7 +457,7 @@ AC_SUBST(SIMLIB)
dnl ====================================================================
dnl Find the libiberty library.
-AC_DEFUN(CYG_AC_PATH_LIBIBERTY, [
+AC_DEFUN([CYG_AC_PATH_LIBIBERTY], [
AC_MSG_CHECKING(for the libiberty library in the build tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
AC_CACHE_VAL(ac_cv_c_libib,[
@@ -477,7 +477,7 @@ AC_SUBST(LIBIBERTY)
])
dnl ====================================================================
-AC_DEFUN(CYG_AC_PATH_DEVO, [
+AC_DEFUN([CYG_AC_PATH_DEVO], [
AC_MSG_CHECKING(for devo headers in the source tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
AC_CACHE_VAL(ac_cv_c_devoh,[
@@ -498,7 +498,7 @@ AC_SUBST(DEVOHDIR)
dnl ====================================================================
dnl find the IDE library and headers.
-AC_DEFUN(CYG_AC_PATH_IDE, [
+AC_DEFUN([CYG_AC_PATH_IDE], [
AC_MSG_CHECKING(for IDE headers in the source tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
IDEHDIR=
@@ -591,7 +591,7 @@ AC_SUBST(IDETCLLIB)
dnl ====================================================================
dnl Find all the ILU headers and libraries
-AC_DEFUN(CYG_AC_PATH_ILU, [
+AC_DEFUN([CYG_AC_PATH_ILU], [
AC_MSG_CHECKING(for ILU kernel headers in the source tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
AC_CACHE_VAL(ac_cv_c_iluh,[
@@ -752,7 +752,7 @@ dnl ====================================================================
dnl This defines the byte order for the host. We can't use
dnl AC_C_BIGENDIAN, cause we want to create a config file and
dnl substitue the real value, so the header files work right
-AC_DEFUN(CYG_AC_C_ENDIAN, [
+AC_DEFUN([CYG_AC_C_ENDIAN], [
AC_MSG_CHECKING(to see if this is a little endian host)
AC_CACHE_VAL(ac_cv_c_little_endian, [
ac_cv_c_little_endian=unknown
@@ -809,7 +809,7 @@ AC_SUBST(ENDIAN)
dnl ====================================================================
dnl Look for the path to libgcc, so we can use it to directly link
dnl in libgcc.a with LD.
-AC_DEFUN(CYG_AC_PATH_LIBGCC,
+AC_DEFUN([CYG_AC_PATH_LIBGCC],
[AC_MSG_CHECKING([Looking for the path to libgcc.a])
AC_LANG_SAVE
AC_LANG_C
@@ -844,12 +844,12 @@ dnl Warning: transition of version 9 to 10 will break this algorithm
dnl because 10 sorts before 9. We also look for just tcl. We have to
dnl be careful that we don't match stuff like tclX by accident.
dnl the alternative search directory is involked by --with-tclinclude
-AC_DEFUN(CYG_AC_PATH_TCL, [
+AC_DEFUN([CYG_AC_PATH_TCL], [
CYG_AC_PATH_TCLH
CYG_AC_PATH_TCLCONFIG
CYG_AC_LOAD_TCLCONFIG
])
-AC_DEFUN(CYG_AC_PATH_TCLH, [
+AC_DEFUN([CYG_AC_PATH_TCLH], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
no_tcl=true
AC_MSG_CHECKING(for Tcl headers in the source tree)
@@ -935,7 +935,7 @@ AC_SUBST(TCLHDIR)
dnl ====================================================================
dnl Ok, lets find the tcl configuration
-AC_DEFUN(CYG_AC_PATH_TCLCONFIG, [
+AC_DEFUN([CYG_AC_PATH_TCLCONFIG], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
dnl First, look for one uninstalled.
dnl the alternative search directory is invoked by --with-tclconfig
@@ -1024,7 +1024,7 @@ AC_SUBST(TCLCONFIG)
dnl Defined as a separate macro so we don't have to cache the values
dnl from PATH_TCLCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_TCLCONFIG, [
+AC_DEFUN([CYG_AC_LOAD_TCLCONFIG], [
. $TCLCONFIG
dnl AC_SUBST(TCL_VERSION)
@@ -1070,12 +1070,12 @@ dnl AC_SUBST(TCL_UNSHARED_LIB_SUFFIX)
])
dnl ====================================================================
-AC_DEFUN(CYG_AC_PATH_TK, [
+AC_DEFUN([CYG_AC_PATH_TK], [
CYG_AC_PATH_TKH
CYG_AC_PATH_TKCONFIG
CYG_AC_LOAD_TKCONFIG
])
-AC_DEFUN(CYG_AC_PATH_TKH, [
+AC_DEFUN([CYG_AC_PATH_TKH], [
#
# Ok, lets find the tk source trees so we can use the headers
# If the directory (presumably symlink) named "tk" exists, use that one
@@ -1168,7 +1168,7 @@ fi
AC_SUBST(TKHDIR)
])
-AC_DEFUN(CYG_AC_PATH_TKCONFIG, [
+AC_DEFUN([CYG_AC_PATH_TKCONFIG], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
dnl First, look for one uninstalled.
dnl the alternative search directory is invoked by --with-tkconfig
@@ -1257,7 +1257,7 @@ AC_SUBST(TKCONFIG)
dnl Defined as a separate macro so we don't have to cache the values
dnl from PATH_TKCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_TKCONFIG, [
+AC_DEFUN([CYG_AC_LOAD_TKCONFIG], [
if test -f "$TKCONFIG" ; then
. $TKCONFIG
fi
@@ -1287,13 +1287,13 @@ dnl AC_SUBST(TK_EXEC_PREFIX)
dnl ====================================================================
dnl Ok, lets find the itcl source trees so we can use the headers
dnl the alternative search directory is involked by --with-itclinclude
-AC_DEFUN(CYG_AC_PATH_ITCL, [
+AC_DEFUN([CYG_AC_PATH_ITCL], [
CYG_AC_PATH_ITCLH
CYG_AC_PATH_ITCLLIB
CYG_AC_PATH_ITCLSH
CYG_AC_PATH_ITCLMKIDX
])
-AC_DEFUN(CYG_AC_PATH_ITCLH, [
+AC_DEFUN([CYG_AC_PATH_ITCLH], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
no_itcl=true
AC_MSG_CHECKING(for Itcl headers in the source tree)
@@ -1367,7 +1367,7 @@ AC_SUBST(ITCLHDIR)
dnl Ok, lets find the itcl library
dnl First, look for one uninstalled.
dnl the alternative search directory is invoked by --with-itcllib
-AC_DEFUN(CYG_AC_PATH_ITCLLIB, [
+AC_DEFUN([CYG_AC_PATH_ITCLLIB], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
if test x"${no_itcl}" = x ; then
dnl we reset no_itcl incase something fails here
@@ -1454,7 +1454,7 @@ AC_SUBST(ITCLLIB)
dnl ====================================================================
dnl Ok, lets find the itcl source trees so we can use the itcl_sh script
dnl the alternative search directory is involked by --with-itclinclude
-AC_DEFUN(CYG_AC_PATH_ITCLSH, [
+AC_DEFUN([CYG_AC_PATH_ITCLSH], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
no_itcl=true
AC_MSG_CHECKING(for the itcl_sh script)
@@ -1516,7 +1516,7 @@ AC_SUBST(ITCLSH)
dnl ====================================================================
dnl Ok, lets find the itcl source trees so we can use the itcl_sh script
dnl the alternative search directory is involked by --with-itclinclude
-AC_DEFUN(CYG_AC_PATH_ITCLMKIDX, [
+AC_DEFUN([CYG_AC_PATH_ITCLMKIDX], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
no_itcl=true
AC_MSG_CHECKING(for itcl_mkindex.tcl script)
@@ -1582,11 +1582,11 @@ AC_SUBST(ITCLMKIDX)
dnl ====================================================================
dnl Ok, lets find the tix source trees so we can use the headers
dnl the alternative search directory is involked by --with-tixinclude
-AC_DEFUN(CYG_AC_PATH_TIX, [
+AC_DEFUN([CYG_AC_PATH_TIX], [
CYG_AC_PATH_TIXH
CYG_AC_PATH_TIXLIB
])
-AC_DEFUN(CYG_AC_PATH_TIXH, [
+AC_DEFUN([CYG_AC_PATH_TIXH], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
no_tix=true
AC_MSG_CHECKING(for Tix headers in the source tree)
@@ -1663,7 +1663,7 @@ fi
AC_SUBST(TIXHDIR)
])
-AC_DEFUN(CYG_AC_PATH_TIXCONFIG, [
+AC_DEFUN([CYG_AC_PATH_TIXCONFIG], [
#
# Ok, lets find the tix configuration
# First, look for one uninstalled.
@@ -1737,7 +1737,7 @@ fi
# Defined as a separate macro so we don't have to cache the values
# from PATH_TIXCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_TIXCONFIG, [
+AC_DEFUN([CYG_AC_LOAD_TIXCONFIG], [
if test -f "$TIXCONFIG" ; then
. $TIXCONFIG
fi
@@ -1746,7 +1746,7 @@ AC_DEFUN(CYG_AC_LOAD_TIXCONFIG, [
AC_SUBST(TIX_LIB_FULL_PATH)
])
-AC_DEFUN(CYG_AC_PATH_ITCLCONFIG, [
+AC_DEFUN([CYG_AC_PATH_ITCLCONFIG], [
#
# Ok, lets find the itcl configuration
# First, look for one uninstalled.
@@ -1820,7 +1820,7 @@ fi
# Defined as a separate macro so we don't have to cache the values
# from PATH_ITCLCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_ITCLCONFIG, [
+AC_DEFUN([CYG_AC_LOAD_ITCLCONFIG], [
if test -f "$ITCLCONFIG" ; then
. $ITCLCONFIG
fi
@@ -1833,7 +1833,7 @@ AC_DEFUN(CYG_AC_LOAD_ITCLCONFIG, [
])
-AC_DEFUN(CYG_AC_PATH_ITKCONFIG, [
+AC_DEFUN([CYG_AC_PATH_ITKCONFIG], [
#
# Ok, lets find the itk configuration
# First, look for one uninstalled.
@@ -1907,7 +1907,7 @@ fi
# Defined as a separate macro so we don't have to cache the values
# from PATH_ITKCONFIG (because this can also be cached).
-AC_DEFUN(CYG_AC_LOAD_ITKCONFIG, [
+AC_DEFUN([CYG_AC_LOAD_ITKCONFIG], [
if test -f "$ITKCONFIG" ; then
. $ITKCONFIG
fi
@@ -1921,11 +1921,11 @@ AC_DEFUN(CYG_AC_LOAD_ITKCONFIG, [
dnl ====================================================================
dnl Ok, lets find the libgui source trees so we can use the headers
dnl the alternative search directory is involked by --with-libguiinclude
-AC_DEFUN(CYG_AC_PATH_LIBGUI, [
+AC_DEFUN([CYG_AC_PATH_LIBGUI], [
CYG_AC_PATH_LIBGUIH
CYG_AC_PATH_LIBGUILIB
])
-AC_DEFUN(CYG_AC_PATH_LIBGUIH, [
+AC_DEFUN([CYG_AC_PATH_LIBGUIH], [
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../..../../../../../../../../../../.."
no_libgui=true
AC_MSG_CHECKING(for Libgui headers in the source tree)
@@ -1995,7 +1995,7 @@ AC_SUBST(LIBGUIHDIR)
dnl ====================================================================
dnl find the GUI library
-AC_DEFUN(CYG_AC_PATH_LIBGUILIB, [
+AC_DEFUN([CYG_AC_PATH_LIBGUILIB], [
AC_MSG_CHECKING(for GUI library in the build tree)
dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
dnl look for the library
diff --git a/configure b/configure
index bc4677d16c8..88d3753ed65 100755
--- a/configure
+++ b/configure
@@ -1130,6 +1130,9 @@ case "${target}" in
*) ;;
esac
;;
+ *-*-uclinux*)
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
+ ;;
*-*-vxworks*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj}"
;;
@@ -1262,7 +1265,7 @@ case "${target}" in
;;
ia64*-**-hpux*)
# No gdb or ld support yet.
- noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb ld"
+ noconfigdirs="$noconfigdirs ${libgcj} tix readline mmalloc libgui itcl gdb ld"
;;
i[3456789]86-*-coff | i[3456789]86-*-elf)
noconfigdirs="$noconfigdirs ${libgcj}"
@@ -2585,7 +2588,9 @@ case "${cache_file}" in
cache_file_option="--cache-file=../${cache_file}" ;;
esac
-host_configargs="${cache_file_option} --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}"
+# Host dirs don't like to share a cache file either, horribly enough.
+# This seems to be due to autoconf 2.5x stupidity.
+host_configargs="--cache-file=./config.cache --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}"
target_configargs=${baseargs}
@@ -2609,8 +2614,17 @@ if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib
target_configargs="--with-newlib ${target_configargs}"
fi
+# Different target subdirs use different values of certain variables
+# (notably CXX). Worse, multilibs use *lots* of different values.
+# Worse yet, autoconf 2.5x makes some of these 'precious', meaning that
+# it doesn't automatically accept command-line overrides of them.
+# This means it's not safe for target subdirs to share a cache file,
+# which is disgusting, but there you have it. Hopefully this can be
+# fixed in future. It's still worthwhile to use a cache file for each
+# directory. I think.
+
# Pass the appropriate --host, --build, and --cache-file arguments.
-target_configargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}"
+target_configargs="--cache-file=./config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}"
# provide a proper gxx_include_dir.
# Note, if you change the default, make sure to fix both here and in
@@ -2823,7 +2837,7 @@ test -n "$target_alias" && ncn_target_tool_prefix=$target_alias-
# Extract the first word of "${ncn_tool_prefix}ar", so it can be a program name with args.
set dummy ${ncn_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2827: checking for $ac_word" >&5
+echo "configure:2841: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2856,7 +2870,7 @@ if test -z "$ac_cv_prog_AR" ; then
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2860: checking for $ac_word" >&5
+echo "configure:2874: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2895,7 +2909,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}as", so it can be a program name with args.
set dummy ${ncn_tool_prefix}as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2899: checking for $ac_word" >&5
+echo "configure:2913: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2928,7 +2942,7 @@ if test -z "$ac_cv_prog_AS" ; then
# Extract the first word of "as", so it can be a program name with args.
set dummy as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2932: checking for $ac_word" >&5
+echo "configure:2946: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2967,7 +2981,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}dlltool", so it can be a program name with args.
set dummy ${ncn_tool_prefix}dlltool; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2971: checking for $ac_word" >&5
+echo "configure:2985: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3000,7 +3014,7 @@ if test -z "$ac_cv_prog_DLLTOOL" ; then
# Extract the first word of "dlltool", so it can be a program name with args.
set dummy dlltool; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3004: checking for $ac_word" >&5
+echo "configure:3018: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3039,7 +3053,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}ld", so it can be a program name with args.
set dummy ${ncn_tool_prefix}ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3043: checking for $ac_word" >&5
+echo "configure:3057: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3072,7 +3086,7 @@ if test -z "$ac_cv_prog_LD" ; then
# Extract the first word of "ld", so it can be a program name with args.
set dummy ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3076: checking for $ac_word" >&5
+echo "configure:3090: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3111,7 +3125,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}nm", so it can be a program name with args.
set dummy ${ncn_tool_prefix}nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3115: checking for $ac_word" >&5
+echo "configure:3129: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3144,7 +3158,7 @@ if test -z "$ac_cv_prog_NM" ; then
# Extract the first word of "nm", so it can be a program name with args.
set dummy nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3148: checking for $ac_word" >&5
+echo "configure:3162: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3183,7 +3197,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ncn_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3187: checking for $ac_word" >&5
+echo "configure:3201: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3216,7 +3230,7 @@ if test -z "$ac_cv_prog_RANLIB" ; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3220: checking for $ac_word" >&5
+echo "configure:3234: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3255,7 +3269,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}windres", so it can be a program name with args.
set dummy ${ncn_tool_prefix}windres; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3259: checking for $ac_word" >&5
+echo "configure:3273: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_WINDRES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3288,7 +3302,7 @@ if test -z "$ac_cv_prog_WINDRES" ; then
# Extract the first word of "windres", so it can be a program name with args.
set dummy windres; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3292: checking for $ac_word" >&5
+echo "configure:3306: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3327,7 +3341,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}objcopy", so it can be a program name with args.
set dummy ${ncn_tool_prefix}objcopy; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3331: checking for $ac_word" >&5
+echo "configure:3345: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3360,7 +3374,7 @@ if test -z "$ac_cv_prog_OBJCOPY" ; then
# Extract the first word of "objcopy", so it can be a program name with args.
set dummy objcopy; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3364: checking for $ac_word" >&5
+echo "configure:3378: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJCOPY'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3399,7 +3413,7 @@ fi
# Extract the first word of "${ncn_tool_prefix}objdump", so it can be a program name with args.
set dummy ${ncn_tool_prefix}objdump; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3403: checking for $ac_word" >&5
+echo "configure:3417: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_OBJDUMP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3432,7 +3446,7 @@ if test -z "$ac_cv_prog_OBJDUMP" ; then
# Extract the first word of "objdump", so it can be a program name with args.
set dummy objdump; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3436: checking for $ac_word" >&5
+echo "configure:3450: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_OBJDUMP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3481,7 +3495,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}ar", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3485: checking for $ac_word" >&5
+echo "configure:3499: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3514,7 +3528,7 @@ if test -z "$ac_cv_prog_AR_FOR_TARGET" ; then
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3518: checking for $ac_word" >&5
+echo "configure:3532: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AR_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3553,7 +3567,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}as", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3557: checking for $ac_word" >&5
+echo "configure:3571: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AS_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3586,7 +3600,7 @@ if test -z "$ac_cv_prog_AS_FOR_TARGET" ; then
# Extract the first word of "as", so it can be a program name with args.
set dummy as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3590: checking for $ac_word" >&5
+echo "configure:3604: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_AS_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3625,7 +3639,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}dlltool", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}dlltool; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3629: checking for $ac_word" >&5
+echo "configure:3643: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3658,7 +3672,7 @@ if test -z "$ac_cv_prog_DLLTOOL_FOR_TARGET" ; then
# Extract the first word of "dlltool", so it can be a program name with args.
set dummy dlltool; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3662: checking for $ac_word" >&5
+echo "configure:3676: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_DLLTOOL_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3697,7 +3711,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}ld", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3701: checking for $ac_word" >&5
+echo "configure:3715: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LD_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3730,7 +3744,7 @@ if test -z "$ac_cv_prog_LD_FOR_TARGET" ; then
# Extract the first word of "ld", so it can be a program name with args.
set dummy ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3734: checking for $ac_word" >&5
+echo "configure:3748: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_LD_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3769,7 +3783,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}nm", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3773: checking for $ac_word" >&5
+echo "configure:3787: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_NM_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3802,7 +3816,7 @@ if test -z "$ac_cv_prog_NM_FOR_TARGET" ; then
# Extract the first word of "nm", so it can be a program name with args.
set dummy nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3806: checking for $ac_word" >&5
+echo "configure:3820: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_NM_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3841,7 +3855,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3845: checking for $ac_word" >&5
+echo "configure:3859: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3874,7 +3888,7 @@ if test -z "$ac_cv_prog_RANLIB_FOR_TARGET" ; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3878: checking for $ac_word" >&5
+echo "configure:3892: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_RANLIB_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3913,7 +3927,7 @@ fi
# Extract the first word of "${ncn_target_tool_prefix}windres", so it can be a program name with args.
set dummy ${ncn_target_tool_prefix}windres; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3917: checking for $ac_word" >&5
+echo "configure:3931: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_WINDRES_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3946,7 +3960,7 @@ if test -z "$ac_cv_prog_WINDRES_FOR_TARGET" ; then
# Extract the first word of "windres", so it can be a program name with args.
set dummy windres; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3950: checking for $ac_word" >&5
+echo "configure:3964: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_ncn_cv_WINDRES_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4013,7 +4027,7 @@ RANLIB_FOR_TARGET=${RANLIB_FOR_TARGET}${extra_ranlibflags_for_target}
NM_FOR_TARGET=${NM_FOR_TARGET}${extra_nmflags_for_target}
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:4017: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:4031: checking whether to enable maintainer-specific portions of Makefiles" >&5
# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
if test "${enable_maintainer_mode+set}" = set; then
enableval="$enable_maintainer_mode"
diff --git a/configure.in b/configure.in
index 539a7f9f09b..b286f1aa7ef 100644
--- a/configure.in
+++ b/configure.in
@@ -369,6 +369,9 @@ case "${target}" in
*) ;;
esac
;;
+ *-*-uclinux*)
+ noconfigdirs="$noconfigdirs target-newlib target-libgloss target-rda ${libgcj}"
+ ;;
*-*-vxworks*)
noconfigdirs="$noconfigdirs target-newlib target-libgloss target-libiberty ${libgcj}"
;;
@@ -501,7 +504,7 @@ case "${target}" in
;;
ia64*-**-hpux*)
# No gdb or ld support yet.
- noconfigdirs="$noconfigdirs tix readline mmalloc libgui itcl gdb ld"
+ noconfigdirs="$noconfigdirs ${libgcj} tix readline mmalloc libgui itcl gdb ld"
;;
i[[3456789]]86-*-coff | i[[3456789]]86-*-elf)
noconfigdirs="$noconfigdirs ${libgcj}"
@@ -1823,7 +1826,9 @@ case "${cache_file}" in
cache_file_option="--cache-file=../${cache_file}" ;;
esac
-host_configargs="${cache_file_option} --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}"
+# Host dirs don't like to share a cache file either, horribly enough.
+# This seems to be due to autoconf 2.5x stupidity.
+host_configargs="--cache-file=./config.cache --build=${build_alias} --host=${host_alias} --target=${target_alias} ${extra_host_args} ${baseargs}"
target_configargs=${baseargs}
@@ -1847,8 +1852,17 @@ if test x${with_newlib} != xno && echo " ${target_configdirs} " | grep " newlib
target_configargs="--with-newlib ${target_configargs}"
fi
+# Different target subdirs use different values of certain variables
+# (notably CXX). Worse, multilibs use *lots* of different values.
+# Worse yet, autoconf 2.5x makes some of these 'precious', meaning that
+# it doesn't automatically accept command-line overrides of them.
+# This means it's not safe for target subdirs to share a cache file,
+# which is disgusting, but there you have it. Hopefully this can be
+# fixed in future. It's still worthwhile to use a cache file for each
+# directory. I think.
+
# Pass the appropriate --host, --build, and --cache-file arguments.
-target_configargs="--cache-file=../config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}"
+target_configargs="--cache-file=./config.cache --host=${target_alias} --build=${build_alias} ${target_configargs}"
# provide a proper gxx_include_dir.
# Note, if you change the default, make sure to fix both here and in
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 36bff521fb2..bed4563262c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,11987 +1,739 @@
-2003-12-15 David Carlton <carlton@kealia.com>
-
- * Merge with mainline; tag is carlton_dictionary-20031215-merge.
- * cp-support.c (class_name_from_physname): Add DMGL_PARAMS to call
- to cplus_demangle.
- (method_name_from_physname): Ditto.
-
-2003-12-14 Mark Kettenis <kettenis@gnu.org>
-
- * proc-api.c (procfs_note): Add format string to fprintf call.
-
- * i386-tdep.c (i386_analyze_frame_setup): Add missing encodings
- for `subl' and `xorl' instructions.
-
-2003-12-13 Jim Blandy <jimb@redhat.com>
-
- * dwarf2read.c (dwarf2_add_member_fn, read_structure_scope):
- Replace uses of DEPRECATED_STREQ and DEPRECATED_STREQN with calls
- to strcmp and strncmp.
-
- * osabi.c (gdbarch_init_osabi): Reformat error message with better
- line breaks.
-
-2003-12-13 Mark Kettenis <kettenis@gnu.org>
-
- * blockframe.c (inside_main_func): Reformat. Introduce new local
- variables to prevent long lines. Update comments to reflect
- reality.
-
-2003-12-12 Kevin Buettner <kevinb@redhat.com>
-
- From David Mosberger <davidm@hpl.hp.com>:
- * libunwind-frame.c (unw_find_dyn_list_p): Replace most arguments
- with a single unw_dyn_info_t pointer.
- (libunwind_find_dyn_list): Likewise.
- * libunwind-frame.h: Likewise.
- * ia64-tdep.c (ia64_find_unwind_table): Switch to using
- UNW_INFO_FORMAT_REMOTE_TABLE so we can avoid having to read in the
- entire unwind-table at once. Support for this table format has
- been added to libunwind v0.95.
- (ia64_find_proc_info_x): Adjust for remote-unwind-table changes.
- (ia64_get_dyn_info_list): Adjust for interface change for
- libunwind_find_dyn_list().
-
-2003-12-12 Jeff Johnston <jjohnstn@redhat.com>
-
- * breakpoint.c (breakpoint_enabled): New function to test whether
- breakpoint is active and enabled.
- (insert_bp_location, insert_breakpoints): Call new function to test
- for enabled breakpoint.
- (remove_breakpoint, breakpoint_here_p, breakpoint_thread_match)
- (bpstat_should_step, bpstat_have_active_hw_watchpoints)
- (disable_breakpoints_in_shlibs, hw_watchpoint_used_count)
- (disable_watchpoints_before_interactive_call_start)
- (breakpoint_re_set_one): Ditto.
- (bpstat_stop_status): Use new function and simplify test.
-
-2003-12-11 Mark Kettenis <kettenis@gnu.org>
-
- * observer.c (observer_test_first_observer)
- (observer_test_second_observer, observer_test_third_observer):
- Don't define as `static'.
- (observer_test_first_notification_function)
- (observer_test_second_notification_function)
- (observer_test_third_notification_function): Likewise.
-
-2003-12-10 Mark Kettenis <kettenis@gnu.org>
-
- * solib.h (SOLIB_UNLOADED_LIBRARY_PATHNAME): Define as "" instead
- of (0).
-
-2003-12-11 Dhananjay Deshpande <dhananjayd@kpitcummins.com>
-
- * MAINTAINERS (write after approval): Add myself.
-
-2003-12-11 Dhananjay Deshpande <dhananjayd@kpitcummins.com>
-
- * config/h8300/tm-h8300.h (h8300hmode): Remove.
- (h8300hmode): Likewise.
- (h8300smode): Likewise.
- (h8300sxmode): Likewise.
- (h8300_normal_mode): Likewise.
- (GDB_TARGET_IS_H8300): Likewise.
- (NUM_REALREGS): Use TARGET_ARCHITECTURE->mach instead of global.
- * h8300-tdep.c (is_h8300hmode): New function.
- (is_h8300smode): New function.
- (is_h8300sxmode): New function.
- (is_h8300_normal_mode): New function.
- (BINWORD): Use new functions.
- (h8300_examine_prologue): Likewise.
- (h8300_print_register): Likewise.
- (h8300_print_registers_info): Likewise.
- (h8300_register_type): Likewise.
- (h8300_gdbarch_init): Remove use of globals like h8300hmode.
- * remote-e7000.c (e7000_open): Remove use of GDB_TARGET_IS_H8300.
- (e7000_fetch_registers): Use TARGET_ARCHITECTURE->mach instead.
- (e7000_wait): Use TARGET_ARCHITECTURE->mach instead of global.
-
-2003-12-10 J. Brobecker <brobecker@gnat.com>
-
- * frame.c (select_frame): Get the current frame PC using
- get_frame_address_in_block() instead of get_frame_pc().
- * stack.c (get_frame_language): Likewise.
-
-2003-12-08 Kevin Buettner <kevinb@redhat.com>
-
- * remote.c (remote_open_1, remote_cisco_open): Avoid closing
- remote_desc more than once.
-
-2003-12-07 Andrew Cagney <cagney@redhat.com>
-
- * defs.h (DEPRECATED_STREQN, DEPRECATED_STREQ): Simplify by
- directly calling strcmp equivalents. Add disclaimer.
-
-2003-12-06 Andrew Cagney <cagney@redhat.com>
-
- * remote.c (remote_fetch_registers): For short packets, explicitly
- supply a zero value. Use regcache_raw_supply. Fix suggested by
- Jonathan Larmour.
-
-2003-12-05 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c (ia64_gdbarch_init): Set up the gdbarch long double
- format to be the i387 extended float format which is used for
- long doubles stored in memory.
-
-2003-12-05 Mark Kettenis <kettenis@gnu.org>
-
- From Ulrich Weigand <weigand@informatik.uni-erlangen.de>:
- * dwarf2-frame.c (dwarf2_frame_cache): Use the untranslated RA
- column instead of translating it.
-
-2003-12-04 Michael Chastain <mec.gnu@mindspring.com>
-
- Partial fix for PR c++/1465.
- Fix for PR c++/1377.
- * cp-support.h (cp_lookup_rtti_type): New function.
- * cp-support.c (cp_lookup_rtti_type): New function.
- * gnu-v2-abi.c: Update copyright years.
- (gnuv2_rtti_type): Call cp_lookup_rtti_type.
- * gnu-v3-abi.c: Update copyright years.
- (gnuv3_rtti_type): Call cp_lookup_rtti_type.
-
-2003-12-04 J. Brobecker <brobecker@gnat.com>
-
- * stabsread.c (read_type): Save a reference to types that are defined
- as cross references to other types.
-
-2003-12-02 Roland McGrath <roland@redhat.com>
-
- * thread-db.c (enable_thread_event): Change return type to
- td_err_e. Return TD_OK or error code.
- (enable_thread_event_reporting): Update callers.
-
-2003-12-03 Ian Lance Taylor <ian@wasabisystems.com>
-
- * NEWS: Mention new C++ demangler code.
-
-2003-12-03 Andrew Cagney <cagney@redhat.com>
-
- * ppc-linux-nat.c (store_register, fetch_register): Convert
- between ptrace and regcache's wordsize.
- (ppc_register_u_addr): Use the ptrace wordsize.
-
-2003-12-02 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (frv_gdbarch_init): Add case for fr550.
-
-2003-12-02 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2read.c (dwarf_info_offset, dwarf_abbrev_offset)
- (dwarf_line_offset, dwarf_pubnames_offset, dwarf_aranges_offset)
- (dwarf_loc_offset, dwarf_macinfo_offset, dwarf_str_offset)
- (dwarf_ranges_offset, dwarf_frame_offset, dwarf_eh_frame_offset):
- Delete.
- (dwarf2_read_section): Remove offset and size arguments. Use
- bfd_get_section_size_before_reloc and sectp->filepos.
- (dwarf2_has_info): Clear section variables instead of offsets.
- (dwarf2_locate_sections): Don't initialize the deleted variables.
- (dwarf2_build_psymtabs): Update calls to dwarf2_read_section.
- (dwarf2_build_psymtabs_easy): Likewise.
- * dwarf2-frame.c (dwarf_frame_offset, dwarf_frame_size)
- (dwarf_eh_frame_offset, dwarf_eh_frame_size): Remove extern
- declarations.
- (dwarf2_read_section): Update prototype.
- (dwarf2_build_frame_info): Update calls to dwarf2_read_section.
- Use bfd_get_section_size_before_reloc instead of global size
- variables.
-
-2003-12-01 Michael Chastain <mec.gnu@mindspring.com>
-
- * dwarfread.c: Update documentation on the state of dwarf-1.
-
-2003-12-01 Andrew Cagney <cagney@redhat.com>
-
- Obsolete old MIPS SVr3 and SVr4 systems.
- * NEWS: Mention obsoleted systems.
- * configure.tgt: Mark mips*-*-sysv4* as obsolete.
- * configure.host: Mark mips-dec-*, mips-little-*, mips-sony-*,
- mips-*-sysv4*, mips-*-sysv*, mips-*-riscos* and mips-*-mach3* as
- obsolete.
- * config/mips/decstation.mh: Mark as obsolete.
- * config/mips/littlemips.mh: Mark as obsolete.
- * config/mips/nm-mips.h: Mark as obsolete.
- * config/mips/xm-mips.h: Mark as obsolete.
- * config/mips/news-mips.mh: Mark as obsolete.
- * config/mips/nm-news-mips.h: Mark as obsolete.
- * config/mips/riscos.mh: Mark as obsolete.
- * config/mips/nm-riscos.h: Mark as obsolete.
- * config/mips/xm-riscos.h: Mark as obsolete.
- * config/mips/mipsv4.mt: Mark as obsolete.
- * config/mips/tm-mipsv4.h: Mark as obsolete.
- * config/mips/xm-mipsv4.h: Mark as obsolete.
-
- Obsolete old m68k systems.
- * configure.host: Mark m68*-sun-*, m68*-sun-sunos4*,
- m68*-sun-sunos3*, m68*-motorola-*, m68*-*-sysv4*, m68*-*-lynxos*,
- m68*-bull*-sysv*, m68*-att-*, m680[01]0-sun-sunos4*, and
- m680[01]0-sun-sunos3* as obsolete.
- * configure.tgt: Mark m68*-*-lynxos*, m68*-*-sunos3*,
- m68*-*-sunos4*, m68*-*-sysv4*, m68000-*-sunos3*, m68000-*-sunos4*,
- m68*-bull-sysv*, m68*-att-*, and m68*-motorola-*, as obsolete.
- * config/m68k/sun3os4.mh: Mark file obsolete.
- * config/m68k/xm-sun3os4.h: Mark file obsolete.
- * config/m68k/sun3os3.mh: Mark file obsolete.
- * config/m68k/nm-sun3.h: Mark file obsolete.
- * config/m68k/xm-sun3.h: Mark file obsolete.
- * config/m68k/sun2os4.mh: Mark file obsolete.
- * config/m68k/sun2os3.mh: Mark file obsolete.
- * config/m68k/nm-sun2.h: Mark file obsolete.
- * config/m68k/xm-sun2.h: Mark file obsolete.
- * config/m68k/m68kv4.mh: Mark file obsolete.
- * config/m68k/nm-sysv4.h: Mark file obsolete.
- * config/m68k/xm-m68kv4.h: Mark file obsolete.
- * config/m68k/m68klynx.mh: Mark file obsolete.
- * config/m68k/nm-m68klynx.h: Mark file obsolete.
- * config/m68k/dpx2.mh: Mark file obsolete.
- * config/m68k/xm-dpx2.h: Mark file obsolete.
- * config/m68k/nm-dpx2.h: Mark file obsolete.
- * config/m68k/delta68.mh: Mark file obsolete.
- * config/m68k/xm-delta68.h: Mark file obsolete.
- * config/m68k/nm-delta68.h: Mark file obsolete.
- * config/m68k/3b1.mh: Mark file obsolete.
- * config/m68k/xm-3b1.h: Mark file obsolete.
- * config/m68k/sun3os4.mt: Mark file obsolete.
- * config/m68k/tm-sun3os4.h: Mark file obsolete.
- * config/m68k/sun3os3.mt: Mark file obsolete.
- * config/m68k/tm-sun3.h: Mark file obsolete.
- * config/m68k/sun2os4.mt: Mark file obsolete.
- * config/m68k/tm-sun2os4.h: Mark file obsolete.
- * config/m68k/sun2os3.mt: Mark file obsolete.
- * config/m68k/tm-sun2.h: Mark file obsolete.
- * config/m68k/m68kv4.mt: Mark file obsolete.
- * config/m68k/tm-m68kv4.h: Mark file obsolete.
- * config/m68k/m68klynx.mt: Mark file obsolete.
- * config/m68k/tm-m68klynx.h: Mark file obsolete.
- * config/m68k/dpx2.mt: Mark file obsolete.
- * config/m68k/tm-dpx2.h: Mark file obsolete.
- * config/m68k/delta68.mt: Mark file obsolete.
- * config/m68k/tm-delta68.h: Mark file obsolete.
- * config/m68k/3b1.mt: Mark file obsolete.
- * config/m68k/tm-3b1.h: Mark file obsolete.
-
-2003-11-29 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c (MAX_CLASSES): Remove macro.
- (x86_64_reg_class): Remove enum.
- (merge_classes, classify_argument, examine_argument): Remove
- functions.
- (INT_REGS, SSE_REGS): Remove macros.
- (x86_64_push_arguments): Remove function.
- (amd64_push_arguments): New function.
- (x86_64_push_dummy_call): Call amd64_push_arguments instead of
- x86_64_push_arguments.
-
-2003-11-28 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c (x86_64_frame_cache): Don't bail out if %rbp is
- zero. Reorganize code a bit.
-
-2003-11-27 Mark Kettenis <kettenis@gnu.org>
-
- * dwarf2-frame.c: Fix another comment.
-
- * x86-64-tdep.c (RET_INT_REGS, RET_SSE_REGS): Remove defines.
- (x86_64_use_struct_convention, x86_64_extract_return_value,
- x86_64_store_return_value): Remove.
- (amd64_reg_class): New enum.
- (amd64_merge_classes, amd64_classify_aggregate, amd64_classify,
- amd64_return_value): New functions.
- (x86_64_init_abi): Don't set extract_return_value,
- store_return_value and use_struct_convention. Set return_value to
- amd64_return_value.
- * i387-tdep.h (i387_return_value): New prototype.
- * i387-tdep.c (i387_return_value): New function.
-
- * dwarf2-frame.c: Fix some comments and whitespace problems.
-
- * i386nbsd-tdep.c: Don't include "gdbtypes.h". Include
- "gdb_assert.h" and "gdb_string.h".
- (i386nbsd_r_reg_offset): Rename from regmap.
- (SIZEOF_STRUCT_REG): Remove.
- (i386nbsd_supply_reg, fetch_core_registers,
- fetch_elfcore_registers, i386nbsd_core_fns, i386nbsd_elfcore_fns):
- Remove.
- (i386nbsd_aout_supply_regset,
- i386nbsd_aout_regset_from_core_section): New functions.
- (i386nbsd_sc_reg_offset): Don't explicitly specify size of array.
- (i386nbsd_init_abi): Initialize TDEP->gregset_reg_offset,
- TDEP->gregset_num_regs amd sizeof_gregset. Use ARRAY_SIZE to
- initialize TDEP->sc_num_regs.
- (i386nbsdaout_init_abi): New function.
- (i386nbsdelf_init_abi): Remove initialization of
- TDEP->num_xmm_regs. Don't set num_regs here.
- (_initialize_i386nbsd_tdep): Don't call add_core_fns. Use
- i386nbsd_aout_init to register NetBSD a.out OS/ABI.
-
- * osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Use
- .note.netbsdcore.procinfo section to recognize NetBSD core files.
-
-2003-11-26 Michael Chastain <mec.gnu@mindspring.com>
-
- * cp-abi.c: Update copyright years.
-
-2003-11-25 Andrew Cagney <cagney@redhat.com>
-
- * thread-db.c (enable_thread_event): New function. Ensure that BP
- is a code address.
- (enable_thread_event_reporting): Use enable_thread_event.
-
-2003-11-25 Michael Snyder <msnyder@redhat.com>
-
- * mips-tdep.c (mips_o64_extract_return_value): Correct for
- NUM_REGS (see changes 2003-06-21).
- (mips_eabi_extract_return_value): Ditto.
-
-2003-11-25 Andrew Cagney <cagney@redhat.com>
-
- * infrun.c: Don't include "exec.h".
- (handle_inferior_event): Pass current_target, instead of exec_ops,
- to SOLIB_ADD. Add comments.
- * Makefile.in (infrun.o): Update dependencies.
-
-2003-11-24 Daniel Jacobowitz <drow@mvista.com>
-
- * NEWS: Mention improved location expression support.
-
-2003-11-23 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (infrun.o): Update dependencies.
- * infrun.c: Include "exec.h".
- (handle_inferior_event): Pass exec_ops to SOLIB_ADD.
-
-2003-11-23 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (frame_unwind_signed_register): Delete function.
- * frame.h (frame_unwind_register_signed): Delete declaration.
- * mips-tdep.c (mips_frame_saved_pc): Use frame_unwind_register_signed.
-
- * arch-utils.h (generic_cannot_extract_struct_value_address):
- Delete declaration.
-
- * defs.h (DEPRECATED_STREQN): Rename STREQN.
- (DEPRECATED_STREQ): Rename STREQ.
- * ada-exp.y, ada-lang.c, ada-lex.l, coffread.c: Update.
- * config/mips/tm-irix5.h, config/mips/tm-irix6.h: Update.
- * config/mips/tm-mipsv4.h, config/sparc/tm-sun4sol2.h: Update.
- * dbxread.c, dwarf2read.c, dwarfread.c, environ.c: Update.
- * eval.c, exec.c, f-lang.c, hppa-tdep.c, hpread.c: Update.
- * jv-exp.y, language.c, m2-exp.y, mcore-rom.c: Update.
- * mdebugread.c, mipsread.c, objc-exp.y, objfiles.c: Update.
- * p-exp.y, p-typeprint.c, p-valprint.c, rs6000-nat.c: Update.
- * source.c, sparc-tdep.c, stack.c, target.c: Update.
-
- * symfile.c (symbol_file_command): Replace STREQ with strcmp.
- * elfread.c (elf_symtab_read): Delete STREQ from comment.
-
-2003-11-22 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (deprecated_frame_xmalloc): Delete function.
- (deprecated_set_frame_extra_info_hack): Delete function.
- (deprecated_set_frame_saved_regs_hack): Delete function.
- * frame.h (deprecated_frame_xmalloc): Delete declaration.
- (deprecated_set_frame_extra_info_hack): Delete declaration.
- (deprecated_set_frame_saved_regs_hack): Delete declaration.
- * mcore-tdep.c (analyze_dummy_frame): Instead of
- deprecated_frame_xmalloc, deprecated_set_frame_saved_regs_hack,
- and deprecated_set_frame_extra_info_hack use
- deprecated_frame_xmalloc_with_cleanup.
- * mn10300-tdep.c (analyze_dummy_frame): Ditto.
- * mips-tdep.c (mips_init_extra_frame_info): Delete call to
- deprecated_set_frame_saved_regs_hack.
-
- * mips-tdep.c (mips_frame_chain): Delete call to
- deprecated_inside_entry_file.
-
- * frame.h (deprecated_set_frame_next_hack): Delete declaration.
- (deprecated_set_frame_prev_hack): Delete declaration.
- * frame.c (deprecated_set_frame_next_hack): Delete function.
- (deprecated_set_frame_prev_hack): Delete function.
- * mcore-tdep.c (analyze_dummy_frame): Delete calls to
- "deprecated_set_frame_next_hack" and
- "deprecated_set_frame_prev_hack".
- * mn10300-tdep.c (analyze_dummy_frame): Ditto.
-
- * mips-tdep.c (mips_register_convertible): Delete function.
- (mips_register_convert_to_virtual): Delete function.
- (mips_register_convert_to_raw): Delete function.
- (mips_gdbarch_init): Do not set "deprecated_register_convertible",
- "deprecated_register_convert_to_virtual", or
- "deprecated_register_convert_to_raw".
- (mips_pseudo_register_write, mips_pseudo_register_read): Handle
- 32/64 cooked to raw register conversions.
-
- * frame.c (deprecated_get_frame_context): Delete function.
- (deprecated_set_frame_context): Delete function.
- (struct frame_info): Delete member "context".
- * frame.h (deprecated_get_frame_context): Delete declaration.
- (deprecated_set_frame_context): Delete declaration.
-
- * procfs.c (procfs_wait): Delete FAULTED_USE_SIGINFO comment.
- * config/sparc/tm-sun4sol2.h (FAULTED_USE_SIGINFO): Delete macro.
- * config/i386/tm-i386sol2.h (FAULTED_USE_SIGINFO): Delete macro.
- * config/alpha/nm-osf2.h (FAULTED_USE_SIGINFO): Delete macro.
-
- * mips-tdep.c (SIGFRAME_REG_SIZE): Delete macro.
- (mips_find_saved_regs): Replace SIGFRAME_REG_SIZE with
- mips_regsize.
- (mips_dump_tdep): Do not print SIGFRAME_REG_SIZE.
- * config/mips/tm-irix6.h (SIGFRAME_REG_SIZE): Delete macro.
- * config/mips/tm-irix5.h: Update copyright.
- (SIGFRAME_REG_SIZE): Delete macro.
-
- * hppa-tdep.c (hppa_value_returned_from_stack): Delete function.
- * config/pa/tm-hppa.h (hppa_value_returned_from_stack): Delete
- declaration.
- (DEPRECATED_VALUE_RETURNED_FROM_STACK): Delete macro.
- * infcall.c (call_function_by_hand): Delete #ifdef
- DEPRECATED_VALUE_RETURNED_FROM_STACK code.
- * infcmd.c (print_return_value): Ditto.
-
- * mips-tdep.c (skip_prologue_using_sal): New function.
- (mips32_skip_prologue, mips16_skip_prologue): Use
- skip_prologue_using_sal to get an upper bound on the search.
-
- * config/powerpc/tm-linux.h (PROLOGUE_FIRSTLINE_OVERLAP): Delete
- #if 0'ed macro.
- * infrun.c (step_into_function): Delete #ifdef
- PROLOGUE_FIRSTLINE_OVERLAP code.
- * symtab.c (find_function_start_sal): Ditto.
-
- * remote-rdp.c: Update copyright.
- (rdp_init): #if 0 references to "target_byte_order".
-
- * mips-tdep.c (mips_o32_store_return_value): Delete function.
- (mips_o32_return_value): Replace mips_o32_xfer_return_value.
- (mips_o32_extract_return_value): Delete function.
- (mips_n32n64_return_value): Replace mips_n32n64_xfer_return_value.
- (mips_n32n64_extract_return_value): Delete function.
- (mips_n32n64_store_return_value): Delete function.
- (mips_gdbarch_init): For o32 and n32n64, set "return_value"
- instead of "store_return_value", "extract_return_value", and
- "use_struct_convention".
- (mips_n32n64_use_struct_convention): Delete function.
-
-2003-11-21 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (frv_frame_this_id): Eliminate call to
- inside_entry_func().
-
-2003-11-20 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_extract_return_value,
- i386_store_return_value): Add gdbarch argument. Use it instead of
- determining it from REGCACHE. Remove recursive call for
- structures with a single member.
- (i386_use_struct_convention): Remove.
- (i386_reg_struct_return_p): New function.
- (i386_return_value): New function.
- (i386_gdbarch_init): Set return_value, don't set
- extract_return_value, store_return_value and
- use_struct_convention.
- * x86-64-tdep.c (x86_64_init_abi): Set return_value to NULL.
-
-2003-11-20 Jim Blandy <jimb@redhat.com>
-
- * osabi.c (_initialize_gdb_osabi): Don't return before registering
- the 'set osabi' and 'show osabi' commands.
-
-2003-11-19 Mark Kettenis <kettenis@gnu.org>
-
- * frame.c (get_prev_frame): Use result from
- get_frame_address_in_block instead of get_frame_pc as argument to
- inside_main_func. Fixes PR backtrace/1435.
-
-2003-11-19 Andrew Cagney <cagney@redhat.com>
-
- * stack.c (return_command): Handle "void", "legacy" and "unknown
- location" return values separatly.
- * values.c (using_struct_return): Return 0 for a "void" return
- type. Mention "register_value_being_returned".
- (register_value_being_returned): Mention "using_struct_return".
-
-2003-11-19 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2read.c (offreg, basereg, isderef, frame_base_reg)
- (frame_base_offset): Delete.
- (read_func_scope): Delete call to decode_locdesc.
- (decode_locdesc): Update comments. Don't set the removed variables.
- Complain for DW_OP_reg* not at the end. Remove DW_OP_breg* and
- DW_OP_fbreg support.
-
-2003-11-18 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2read.c (optimized_out, islocal): Remove.
- (decode_locdesc): Update comments. Don't set optimized_out
- or islocal.
-
-2003-11-17 Jeff Johnston <jjohnstn@redhat.com>
- David Mosberger <davidm@hpl.hp.com>
-
- * ia64-tdep.c: Include elf.h.
- [HAVE_LIBUNWIND_IA64_H]: Include libunwind-frame.h and
- libunwind-ia64.h.
- (ia64_rse_slot_num, ia64_rse_skip_regs): New for libunwind support.
- (ia64_gdb2uw_regnum, ia64_uw2gdb_regnum): Ditto.
- (ia64_is_fpreg, ia64_access_reg): Ditto.
- (ia64_access_fpreg, ia64_access_mem): Ditto.
- (get_kernel_table): Ditto.
- (ia64_find_unwind_table): Ditto.
- (ia64_find_proc_info_x, ia64_put_unwind_info): Ditto.
- (ia64_get_dyn_info_list, ia64_libunwind_frame_this_id): Ditto.
- (ia64_libunwind_frame_prev_register): Ditto.
- (ia64_libunwind_frame_sniffer): Ditto.
- (ia64_gdbarch_init)[HAVE_LIBUNWIND_IA64_H]: Add libunwind frame
- sniffer. Register libunwind functions needed by generic
- libunwind frame code using libunwind_frame_set_descr().
-
-2003-11-16 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (re_enable_breakpoints_in_shlibs): Only re-enable a
- bp_shlib_disabled breakpoint if there is a shared library mapped
- at its expected address.
-
-2003-11-16 Andrew Cagney <cagney@redhat.com>
-
- * configure.tgt: Delete mips*tx39*-elf*.
- * config/mips/tm-tx39.h: Delete file.
- * config/mips/tx39.mt: Delete file.
- * config/mips/tx39.mt: Delete file.
-
- * mips-tdep.h (deprecated_mips_set_processor_regs_hack): Declare.
- * remote-mips.c (common_open): Instead of
- "mips_read_register_type" and "mips_set_processor_type_command"
- call "deprecated_mips_set_processor_regs_hack".
- * config/mips/tm-mips.h (mips_read_processor_type): Delete
- declaration.
- (mips_set_processor_type_command): Delete declaration.
- * mips-tdep.c (mips_gdbarch_init): Update comment.
- (mips_dump_tdep): Do not print MIPS_REGISTER_NAMES.
- (mips_set_processor_type): Delete function.
- (NUM_MIPS_PROCESSOR_REGS): Define.
- (mips_show_processor_type_command): Delete function.
- (mips_set_processor_type_command): Delete function.
- (tmp_mips_processor_type): Delete.
- (mips_processor_type): Delete.
- (mips_processor_type_table): Delete.
- (mips_r3051_reg_names): Delete.
- (mips_r3081_reg_names): Delete.
- (mips_lsi33k_reg_names): Delete.
- (mips_processor_reg_names): Delete.
- (mips_read_processor_type): Delete function.
- (deprecated_mips_set_processor_regs_hack): New function.
- (struct gdbarch_tdep): Add member "mips_processor_reg_names".
- (mips_register_name): Get the processor names from the tdep.
- (mips_tx39_reg_names): New array.
- (mips_generic_reg_names): Wire to a standard set of names.
- (mips_gdbarch_init): Set "mips_processor_reg_names".
- * config/mips/tm-irix5.h (MIPS_REGISTER_NAMES): Delete macro.
- * config/mips/tm-mips.h (MIPS_REGISTER_NAMES): Delete macro.
- * config/mips/tm-tx39.h (MIPS_REGISTER_NAMES): Delete macro.
-
-2003-11-16 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (struct gdbarch_tdep): Add field "regnum".
- (mips_fpa0_regnum, mips_regnum): New function.
- (mips_gdbarch_init): Fill in the "regnum" fields.
- * mips-tdep.h (struct mips_regnum): Define.
- (mips_regnum): Declare.
- * config/mips/tm-mips.h (BADVADDR_REGNUM): Delete macro.
- (LO_REGNUM, HI_REGNUM, BADVADDR_REGNUM): Ditto.
- (CAUSE_REGNUM, PC_REGNUM, FP0_REGNUM): Ditto.
- (FCRCS_REGNUM, FCRIR_REGNUM, FPA0_REGNUM): Ditto.
- * config/mips/tm-irix6.h (FP0_REGNUM): Delete macro.
- (PC_REGNUM, CAUSE_REGNUM, BADVADDR_REGNUM): Ditto.
- (HI_REGNUM, LO_REGNUM, FCRCS_REGNUM, FCRIR_REGNUM): Ditto.
- * config/mips/tm-irix5.h (FP0_REGNUM): Delete macro.
- (PC_REGNUM, CAUSE_REGNUM, BADVADDR_REGNUM): Ditto.
- (HI_REGNUM, LO_REGNUM, FCRCS_REGNUM, FCRIR_REGNUM): Ditto.
- * remote-mips.c: Include "mips-tdep.h". Update.
- * mipsnbsd-tdep.c: Update.
- * mipsv4-nat.c: Update.
- * mips-tdep.c: Update.
- * mips-nat.c: Update.
- * mips-linux-tdep.c: Update.
- * mips-linux-nat.c: Update.
- * irix5-nat.c: Update.
- * dve3900-rom.c: Include "mips-tdep.h". Update.
- (ignore_packet): Supress GCC warning.
- * config/mips/nm-riscos.h: Update.
-
-2003-11-16 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c: Replace DEPRECATED_REGISTER_RAW_SIZE with
- register_size.
- (mips_register_raw_size): Delete function.
- (mips_register_type): Handle "mips64_transfers_32bit_regs_p".
- (mips_gdbarch_init): Do not set "deprecated_register_raw_size".
- Check and set "mips64_transfers_32bit_regs_p".
- (struct gdbarch_tdep): Add "mips64_transfers_32bit_regs_p".
- (mips_register_convertible): Check the architecture's
- "mips64_transfers_32bit_regs_p".
- (set_mips64_transfers_32bit_regs): New function.
- (_initialize_mips_tdep): Use "add_setshow_cmd" when adding the
- "set remote-mips64-transfers-32bit-regs" command. Specify
- set_mips64_transfers_32bit_regs as the set function.
- * Makefile.in (dve3900-rom.o, remote-mips.o): Update dependencies.
-
-2003-11-16 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.h (i386_supply_gregset): Provide prototype.
- * i386-tdep.c (i386_supply_gregset): Make public.
-
-2003-11-16 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_register_byte): Delete function.
- (mips_gdbarch_init): Do not set "deprecated_register_byte".
- * config/mips/tm-mips.h (MIPS_REGISTER_BYTE): Delete macro.
- * config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Delete macro.
- * config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Delete macro.
-
-2003-11-16 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_extract_return_value): Don't use bfd_byte.
-
-2003-11-16 Andrew Cagney <cagney@redhat.com>
-
- * config/mips/linux64.mt: Delete file.
- * config/mips/tm-linux64.h: Delete file.
- * config/mips/tm-mips64.h: Delete file.
- * config/mips/embed64.mt: Delete file.
- * config/djgpp/fnchange.lst: Update.
- * configure.tgt: Delete explicit patterns for mipsisa64*-*-linux*,
- mips64*-*-linux*, mips64*-*-*, and mipsisa64*-*-*.
- * config/mips/tm-irix6.h: Update copyright. Include
- "mips/tm-mips.h" instead of "mips/tm-mips64.h".
- * mips-tdep.c (mips_dump_tdep): Do not print "OP_LDFPR" or
- "OP_LDGPR".
-
-2003-11-15 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_register_type): Simplify. Eliminate reference
- to MIPS_REGISTER_TYPE. Make integer registers signed. Make IRIX
- n32 registers 64 bit.
- (mips_register_raw_size, mips_register_byte): For pseudo
- registers, use the register's pseudo size and not the
- corresponding raw register's size.
- * config/mips/tm-mips64.h (MIPS_REGISTER_TYPE): Delete macro.
- * config/mips/tm-mips.h (MIPS_REGISTER_TYPE): Delete macro.
- * config/mips/tm-irix6.h: Don't #undef MIPS_REGISTER_TYPE.
- * config/mips/tm-irix5.h (MIPS_REGISTER_TYPE): Delete macro.
-
-2003-11-15 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (struct gdbarch_tdep): Delete member
- gdb_target_is_mips64.
- (GDB_TARGET_IS_MIPS64): Delete macro.
- (mips_gdbarch_init): Do not set tdep's gdb_target_is_mips64.
- (mips_dump_tdep): Do not print GDB_TARGET_IS_MIPS64.
- (mips_addr_bits_remove): Simplify.
-
- * mips-tdep.c: Replace DEPRECATED_REGISTER_VIRTUAL_SIZE with
- register_size.
-
- Replace MIPS_REGSIZE with mips_regsize.
- * mips-tdep.c (mips_regsize): New function.
- * mips-tdep.h (mips_regsize): Declare.
- * mipsnbsd-tdep.h (SIZEOF_STRUCT_FPREG): Update.
- (SIZEOF_STRUCT_REG): Update.
- * mipsnbsd-tdep.c (mipsnbsd_supply_reg): Update.
- (mipsnbsd_fill_reg): Update.
- (mipsnbsd_supply_fpreg): Update.
- (mipsnbsd_fill_fpreg): Update.
- (NBSD_MIPS_JB_ELEMENT_SIZE): Update.
- * mips-tdep.c (mips_register_raw_size): Update.
- (mips_register_type): Update.
- (SIGFRAME_BASE): Update.
- (SIGFRAME_PC_OFF): Update.
- (SIGFRAME_REGSAVE_OFF): Update.
- (SIGFRAME_FPREGSAVE_OFF): Update.
- (SIGFRAME_REG_SIZE): Update.
- (mips32_heuristic_proc_desc): Update.
- (print_gp_register_row): Update.
- (mips_dump_tdep): Do not print MIPS_REGSIZE.
- * irix5-nat.c (supply_gregset): Update.
- (fetch_core_registers): Update.
- * config/mips/tm-mips64.h (MIPS_REGSIZE): Delete macro.
- * config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Update.
- * config/mips/tm-mips.h (MIPS_REGSIZE): Delete macro.
- (MIPS_REGISTER_BYTE): Update.
- * config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Update.
-
-2003-11-15 Andrew Cagney <cagney@redhat.com>
-
- * config/sparc/tm-sparc.h (DEPRECATE_USE_REGISTER_NOT_ARG): Rename
- USE_REGISTER_NOT_ARG.
- * stabsread.c (define_symbol): Update.
-
-2003-11-15 Andrew Cagney <cagney@redhat.com>
-
- * bcache.h (deprecated_bcache): Declare.
- (bcache): Make returned buffer constant.
- * bcache.c (deprecated_bcache): New function.
- (bcache_data): New function.
- (bcache): Call bcache data.
- * symfile.c (add_psymbol_to_list): Use deprecated_bcache.
- (add_psymbol_with_dem_name_to_list): Ditto.
-
-2003-11-15 Mark Kettenis <kettenis@gnu.org>
-
- * glibc-tdep.h (struct gdbarch): Declare opaque.
- (glibc_skip_solib_resolver): Adjust prototype.
- * glibc-tdep.c (glibc_skip_solib_resolver): Adjust.
- * arm-linux-tdep.c (arm_linux_skip_solib_resolver): Remove.
- (arm_linux_init_abi): Set skip_solib_resolver.
- * i386-linux-tdep.c (i386_linux_skip_solib_resolver): Remove.
- (i386_linux_init_abi): Set skip_solib_resolver.
- * config/arm/tm-linux.h (SKIP_SOLIB_RESOLVER): Remove.
- (arm_linux_skip_solib_resolver): Remove prototype.
- * config/i386/tm-linux.h (SKIP_SOLIB_RESOLVER): Remove.
- (i386_linux_skip_solib_resolver): Remove prototype.
-
-2003-11-14 Mark Kettenis <kettenis@gnu.org>
-
- * gdbarch.sh (skip_solib_resolver): Change into a multi-arch
- function.
- * gdbarch.c, gdbarch.h: Regenerate.
- * infrun.c (handle_inferior_event): Call
- gdbarch_skip_solib_resolver instead of SKIP_SOLIB_RESOLVER.
- * arch-utils.c (generic_in_solib_call_trampoline): Adjust function
- definition.
- * arch-utils.h (generic_in_solib_call_trampoline): Adjust function
- prototype.
-
-2003-11-14 Jeff Johnston <jjohnstn@redhat.com>
-
- * libunwind-frame.c: New file.
- * libunwind-frame.h: New file.
- * acconfig.h (HAVE_LIBUNWIND): #undef reference added.
- * configure.in: Add --with-libunwind option support. Define
- HAVE_LIBUNWIND if libunwind support selected / defaulted.
- Also check for libunwind.h and libunwind-ia64.h headers.
- * configure: Regenerated.
- * Makefile.in: Add support for libunwind-frame.o.
- * config.in: Regenerated.
-
-2003-11-14 Jeff Johnston <jjohnstn@redhat.com>
-
- * config/ia64/nm-linux.h (NATIVE_XFER_UNWIND_TABLE): New macro to
- set up the ia64 linux native target method for getting the kernel
- unwind table.
- * ia64-linux-nat.c (ia64_linux_xfer_unwind_table): New function.
- * inftarg.c (child_xfer_partial): Enable section of code to
- handle TARGET_OBJECT_UNWIND_TABLE.
- * target.h (target_object): Add new TARGET_OBJECT_UNWIND_TABLE macro.
-
-2003-11-14 Ian Lance Taylor <ian@wasabisystems.com>
-
- * config/arm/nbsd.mt (TM_FILE): Define.
- * config/arm/tm-nbsd.h: New file.
-
-2003-11-14 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (ppc-sysv-tdep.o): Update dependencies.
- * ppc-sysv-tdep.c: Include "objfiles.h".
- (ppc64_sysv_abi_push_dummy_call): Provide the
- the FN's objfile when looking for the descriptor.
-
- * ppc-linux-tdep.c (ppc_linux_init_abi): Set PPC64's
- "name_of_malloc" to ".malloc".
-
-2003-11-13 Mark Kettenis <kettenis@gnu.org>
-
- * config/i386/x86-64linux.mt (TDEPFILES): Add glibc-tdep.o.
-
-2003-11-13 David Carlton <carlton@kealia.com>
-
- * cp-namespace.c (lookup_namespace_scope): Fix typo in comment.
-
-2003-11-13 Andrew Cagney <cagney@redhat.com>
-
- * arch-utils.h (selected_architecture_name): Declare.
- (selected_byte_order): Declare.
- * arch-utils.c (selected_byte_order): New function.
- (selected_architecture_name): New function.
- (target_architecture_auto): Make static.
- (set_architecture_string): Make static.
- (target_byte_order): Make static.
- (target_byte_order_auto): Make static.
- * gdbarch.sh (TARGET_BYTE_ORDER, TARGET_ARCHITECTURE): Delete
- non-multi-arch definition.
- (TARGET_ARCHITECTURE_AUTO, TARGET_BYTE_ORDER_AUTO): Delete.
- (target_byte_order, target_architecture): Delete declaration.
- (target_byte_order_auto, target_architecture_auto): Ditto.
- * gdbarch.h: Re-generate.
- * remote-sim.c (gdbsim_open): Use "selected_architecture_name" and
- "selected_byte_order".
-
-2003-11-13 Andrew Cagney <cagney@redhat.com>
-
- * ppc-linux-tdep.c (ppc_linux_return_value): Fix parameter order.
-
-2003-11-13 Jim Blandy <jimb@redhat.com>
-
- * cp-namespace.c: Doc fix.
-
-2003-11-12 Michael Snyder <msnyder@redhat.com>
-
- * sh64_tdep.c: Regularize some names.
- (sh_sh64_register_name): Rename to sh64_register_name.
- (sh_sh64_breakpoint_from_pc): Rename to sh64_breakpoint_from_pc.
- (sh_sh64_register_byte): Rename to sh64_register_byte.
- (sh_sh64_build_float_register_type):
- Rename to sh64_build_float_register_type.
- (sh_sh64_register_convert_to_virtual):
- Rename to sh64_register_convert_to_virtual.
- (sh_sh64_register_convert_to_raw):
- Rename to sh64_register_convert_to_raw.
-
- * sh64-tdep.c (translate_insn_rn, is_media_pseudo,
- sh64_media_reg_base_num, sh64_compact_reg_base_num,
- sh64_nofp_frame_init_saved_regs, sh64_push_arguments,
- sh64_extract_return_value, sh64_show_media_regs,
- sh64_show_compact_regs, sh_sh64_register_byte, sh64_register_type,
- sh_sh64_register_convert_to_virtual, sh_sh64_register_convert_to_raw,
- sh64_pseudo_register_read, sh64_pseudo_register_write,
- sh64_do_pseudo_register, sh_compact_print_registers_info):
- Delete unused variable 'tdep'.
-
- * sh64-tdep.c: Coding standard and spelling comment fixes.
- (sh64_extract_return_value): Replace deprecated_store_floating
- with store_typed_floating.
- (sh_sh64_register_convert_to_raw): Replace
- deprecated_store_floating with store_typed_floating.
- (sh_sh64_register_virtual_type): Convert to sh64_register_type.
- (sh64_frame_chain, sh64_get_saved_pr, sh64_get_saved_register,
- sh64_nofp_frame_init_saved_regs, sh64_push_arguments,
- sh64_extract_struct_value_address, sh64_pop_frame,
- sh64_extract_return_value, sh64_store_return_value,
- sh_sh64_register_convert_to_virtual, sh64_pseudo_register_read,
- sh_sh64_register_convert_to_raw, sh_pseudo_register_write):
- Replace DEPRECATED_REGISTER_RAW_SIZE with register_size.
- Replace DEPRECATED_REGISTER_VIRTUAL_TYPE with register_type.
- (sh64_gdbarch_init): Don't set deprecated_register_bytes,
- deprecated_register_virtual_type, deprecated_register_raw_size,
- deprecated_max_register_raw_size, or
- deprecated_max_register_virtual_size. Instead, just set
- gdbarch_register_type.
- (sh_sh64_register_raw_size): Delete.
- (sh_sh64_register_virtual_size): Delete.
-
-2003-11-12 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2read.c (struct dwarf2_cu): New type.
-
- (dwarf2_build_psymtabs_hard, psymtab_to_symtab_1): Create a
- dwarf2_cu structure to pass down.
-
- (scan_partial_symbols, add_partial_symbol, add_partial_namespace)
- (add_partial_enumeration, locate_pdi_sibling, process_die)
- (read_file_scope, read_func_scope)
- (read_lexical_block_scope, dwarf2_get_pc_bounds)
- (dwarf2_add_field, dwarf2_attach_fields_to_type)
- (dwarf2_add_member_fn, dwarf2_attach_fn_fields_to_type)
- (read_structure_scope, read_enumeration, read_array_type)
- (read_common_block, read_namespace, read_tag_pointer_type)
- (read_tag_ptr_to_member_type, read_tag_reference_type)
- (read_tag_const_type, read_tag_volatile_type, read_tag_string_type)
- (read_subroutine_type, read_typedef, read_base_type, read_comp_unit)
- (read_die_and_children, read_die_and_siblings, dwarf2_read_section)
- (dwarf2_read_abbrevs, dwarf2_lookup_abbrev, read_partial_die)
- (read_full_die. read_attribute_value, read_attribute)
- (read_address, dwarf_decode_line_header, dwarf_decode_lines)
- (var_decode_location, new_symbol, dwarf2_const_value, die_type)
- (die_containing_type, type_at_offset, tag_type_to_type)
- (read_type_die, dwarf_base_type, decode_locdesc, dwarf_decode_macros)
- (dwarf2_symbol_mark_computed): Accept and use a dwarf2_cu object.
-
-2003-11-12 Daniel Jacobowitz <drow@mvista.com>
-
- PR breakpoints/1450
- * breakpoint.c (insert_bp_location): Fix a logic error by returning
- 0 after a catchpoint fails.
-
-2003-11-11 Michael Chastain <mec.gnu@mindspring.com>
-
- * mips-tdep.c (msymbol_size): Delete.
-
-2003-11-07 Michael Chastain <mec@shout.net>
-
- * symtab.h (struct minimal_symbol): Add size.
- * dbxread.c: Use it.
- * elfread.c: (record_minimal_symbol_and_info): Do not use info.
- Rename to record_minimal_symbol.
- (elf_symtab_read): Set MSYMBOL_SIZE explicitly.
- * minsyms.c (prim_record_minimal_symbol_and_info): Initialize MSYMBOL_SIZE.
- (install_minimal_symbols): Ditto.
- * objfiles.c (terminate_minimal_symbol_table): Ditto.
- * arm-tdep.c: Delete unused MSYMBOL_SIZE.
- * m68hc11-tdep.c: Ditto.
- * mips-tdep.c: Ditto.
- * sh64-tdep.c: Ditto.
-
-2003-12-15 David Carlton <carlton@kealia.com>
-
- * dwarf2read.c (get_scope_pc_bounds): New.
- (psymtab_to_symtab_1): Use get_scope_pc_bounds.
+2004-01-26 David Carlton <carlton@kealia.com>
+
+ * Merge with mainline; tag is carlton_dictionary-20040126-merge.
+
+2004-01-25 Mark Kettenis <kettenis@gnu.org>
+
+ * infcmd.c (print_return_value): Plug memory leak; delete
+ ui_stream object. Rename argument `structure_return' to
+ `struct_return'.
+
+2004-01-25 Mark Kettenis <kettenis@gnu.org>
+
+ * infcmd.c (print_return_value): Wrap long lines.
+ (finish_command_continuation, finish_command): Remove unused
+ variable `funcaddr'. Fix some coding-standards problems.
+
+ * sparc-tdep.c (sparc_regset_from_core_section): Check whether
+ SECT_SIZE is large enough, not wheter it's exactly the right size.
+ (sparc32_gdbarch_init): Initialize TDEP->sizeof_gregset and
+ TDEP->fpregset to zero.
+
+ * sparcnbsd-tdep.c (sparc32nbsd_supply_gregset): Also supply the
+ floating-point registers for traditional NetBSD core files.
+ (sparc32nbsd_init_abi): Initialize TDEP->sizeof_gregset and
+ TDEP->sizeof_fpregset here.
+
+2004-01-25 Mark Kettenis <kettenis@gnu.org>
+
+ * sparc-tdep.h (sparc32nbsd_sigcontext_saved_regs): New prototype.
+ * sparcnbsd-tdep.c (sparc32nbsd_sigcontext_saved_regs): New
+ function with code split out from
+ sparc32nbsd_sigcontext_frame_cache.
+ (sparc32nbsd_sigcontext_frame_cache): Use
+ sparc32nbsd_sigcontext_saved_regs.
+ (_initialize_sparc32nbsd_tdep): Don't register OS ABI handler for
+ OpenBSD.
+ * sparcobsd-tdep.c: New file.
+ * Makefile.in (ALLDEPFILES): Add sparcobsd-tdep.c.
+ (sparcobsd-tdep.o): New dependency.
+ * configure.tgt (sparc-*-openbsd*): Set gdb_target to obsd.
+ * config/sparc/obsd.mt: New file.
+
+ * sparc-tdep.c (sparc32_gdbarch_init): Don't require
+ TDEP->fpregset to be initialized to enable core file register
+ sets.
+
+2004-01-24 Mark Kettenis <kettenis@gnu.org>
+
+ * sparc64-tdep.h (struct frame_info, struct trad_frame_saved_reg):
+ Add opaque declarations.
+ (sparc64nbsd_sigcontext_saved_regs): New prototype.
+ * sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_saved_regs): New
+ function with code split out from
+ sparc64nbsd_sigcontext_frame_cache.
+ (sparc64nbsd_sigcontext_frame_cache): Use
+ sparc64nbsd_sigcontext_saved_regs.
+ (_initialize_sparc64nbsd_tdep): Don't register OS ABI handler for
+ OpenBSD.
+ * sparc64obsd-tdep.c: New file.
+ * Makefile.in (ALLDEPFILES): Add sparc64obsd-tdep.c.
+ (sparc64obsd-tdep.o): New dependency.
+ * configure.tgt (sparc64-*-openbsd*): Set gdb_target to obsd64 and
+ gdb_osabi to GDB_OSABI_OPENBSD_ELF.
+ * config/sparc/obsd64.mt: New file.
+
+ * sparc-tdep.c (sparc_fetch_instruction): Return zero if we can't
+ read the instruction at PC.
+
+ * sparcnbsd-tdep.c (GDB_OSABI_NETBSD_CORE): Define, based on the
+ value of GDB_OSABI_DEFAULT.
+ (sparcnbsd_core_osabi_sniffer): Return GDB_OSABI_NETBSD_CORE
+ instead of GDB_OSABI_NETBSD_AOUT.
+
+2004-01-24 Nick Roberts <nick@nick.uklinux.net>
+
+ * mi/mi-cmd-stack.c, mi/mi-cmd-var.c, mi/mi-cmds.h: Update
+ copyright.
+
+2004-01-23 Andrew Cagney <cagney@redhat.com>
+
+ * printcmd.c (display_command): Replace tui_set_display call with
+ tui_set_layout_for_display_command.
+ * tui/tui.h (enum tui_win_type): Define.
+ (tui_set_layout): Delete declaration.
+ (tui_set_layout_for_display_command): Rename set_tui_layout.
+ * tui/tui-data.h (enum tui_layout_type): Define.
+ * tui/tui-layout.h: Update copyright. Include "tui-data.h" and
+ "tui.h".
+ (tui_add_win_to_layout): Rename tuiAddWinToLayout.
+ (tui_default_win_height): Rename tuiDefaultWinHeight.
+ (tui_default_win_viewport_height): Rename
+ tuiDefaultWinViewportHeight.
+ (tui_set_layout): RenametuiSetLayout.
+ * tui/tui-layout.c: Update references.
+ * tui/tui.c: Update references.
+ * tui/tui-disasm.c: Update references.
+
+2004-01-23 David Carlton <carlton@kealia.com>
+
+ Partial workaround for PR c++/1511:
+ * cp-namespace.c: Include frame.h.
+ (cp_lookup_transparent_type): New
+ (cp_lookup_transparent_type_loop): New.
+ * cp-support.h: Declare cp_lookup_transparent_type.
+ * symtab.c (basic_lookup_transparent_type): Renamed from
+ lookup_transparent_type.
+ (lookup_transparent_type): Replace old body by a call to
+ current_language->la_lookup_transparent_type.
+ * symtab.h: Update copyright. Declare
+ basic_lookup_transparent_type.
+ * language.h: Update copyright.
+ (struct language_defn): Add la_lookup_transparent_type.
+ * language.c: Update copyright.
+ (unknown_language_defn): Add basic_lookup_transparent_type.
+ (auto_language_defn): Add basic_lookup_transparent_type.
+ (local_language_defn): Add basic_lookup_transparent_type.
+ * ada-lang.c: Update copyright.
+ (ada_language_defn): Add basic_lookup_transparent_type.
+ * c-lang.c: Update copyright.
+ (c_language_defn): Add basic_lookup_transparent_type.
+ (cplus_language_defn): Add basic_lookup_transparent_type.
+ (asm_language_defn): Add basic_lookup_transparent_type.
+ (minimal_language_defn): Add basic_lookup_transparent_type.
+ * f-lang.c: Update copyright.
+ (f_language_defn): Add basic_lookup_transparent_type.
+ * jv-lang.c: Update copyright.
+ (java_language_defn): Add basic_lookup_transparent_type.
+ * m2-lang.c: Update copyright.
+ (m2_language_defn): Add basic_lookup_transparent_type.
+ * objc-lang.c: Update copyright.
+ (objc_language_defn): Add basic_lookup_transparent_type.
+ * p-lang.c: Update copyright.
+ (p_language_defn): Add basic_lookup_transparent_type.
+ * scm-lang.c: Update copyright.
+ (scm_language_defn): Add basic_lookup_transparent_type.
+ * Makefile.in (cp-namespace.o): Depend on frame.h.
+
+2004-01-23 David Carlton <carlton@kealia.com>
+
+ Patch for PR c++/1520:
+ * dwarf2read.c (read_func_scope): Set processing_current_prefix
+ properly if we have a specification die.
+ (determine_prefix_aux): Rename from determine_prefix.
+ (determine_prefix): Like the old determine_prefix, but never
+ returns NULL.
+
+2004-01-23 Theodore A. Roth <troth@openavr.org>
+
+ * avr-tdep.c: Update copyright.
+ (avr_iaddr_p): Delete unused function.
+ (avr_saddr_p): Delete unused function.
+
+2004-01-23 David Carlton <carlton@kealia.com>
+
+ * symfile.c (reread_symbols): Clear objfile->cp_namespace_symtab.
+ Fix for PR symtab/1534.
+
+2004-01-23 Mark Kettenis <kettenis@gnu.org>
+
+ * NEWS (New native configurations): Mention OpenBSD/sparc and
+ OpenBSD/sparc64.
+ * configure.tgt: Add sparc-*-openbsd* and sparc64-*-openbsd*.
+ * configure.host: Likewise.
+ * sparcnbsd-tdep.c (_initialize_sparnbsd_tdep): Register OS ABI
+ handler for OpenBSD.
+ * sparc64nbsd-tdep.c (_initialize_sparc64nbsd_tdep): Likewise.
+
+2004-01-22 Mark Kettenis <kettenis@gnu.org>
+
+ * sparcnbsd-tdep.c (sparcnbsd_core_osabi_sniffer): New function.
+ (_initialize_sparnbsd_tdep): Register sparcnbsd_core_osabi_sniffer.
+
+ * ser-pipe.c (pipe_open): Use proper null pointer in execl call.
+ * cli/cli-cmds.c (shell_escape): Likewise.
+
+ * osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Recognize
+ OpenBSD .note.openbsd.ident sections.
+
+2004-01-22 David Carlton <carlton@kealia.com>
+
+ * dwarf2read.c (psymtab_to_symtab_1): Calculate lowpc, highpc via
+ get_scope_pc_bounds.
(read_file_scope): Ditto.
+ (get_scope_pc_bounds): New function, produced by extracting code
+ from the above two functions, consolidating it, and adding support
+ for DW_TAG_namespace.
-2003-11-11 David Carlton <carlton@kealia.com>
-
- * valops.c: Tweak comments to match proposed patch.
- (value_aggregate_elt): Use internal_error instead of error.
- * dwarf2read.c: Tweak comments to match proposed patch.
- (new_symbol): Use SYMBOL_LINKAGE_NAME or SYMBOL_NATURAL_NAME
- instead of DEPRECATED_SYMBOL_NAME.
- * cp-namespace.c: Tweak comments to match proposed patch.
- (cp_set_block_scope): Remove #if 0.
- (cp_lookup_nested_type): Use internal_error instead of error.
-
-2003-11-11 David Carlton <carlton@kealia.com>
-
- * Merge with mainline; tag is carlton-dictionary-20031111-merge.
-
-2003-11-10 Michael Chastain <mec.gnu@mindspring.com>
-
- * MAINTAINERS: Change my e-mail address.
-
-2003-11-10 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (return_value): Replace "inval" and "outval" with
- "readbuf" and "writebuf".
- * ppcnbsd-tdep.c (ppcnbsd_return_value): Ditto.
- * d10v-tdep.c (d10v_return_value): Ditto.
- * ppc-tdep.h (ppc_sysv_abi_return_value): Ditto.
- (ppc_sysv_abi_broken_return_value): Ditto.
- (ppc64_sysv_abi_return_value): Ditto.
- * ppc-sysv-tdep.c (do_ppc_sysv_return_value): Ditto.
- (ppc_sysv_abi_return_value): Ditto.
- (ppc_sysv_abi_broken_return_value): Ditto.
- (ppc64_sysv_abi_return_value): Ditto.
- * values.c (register_value_being_returned): Update call.
- * stack.c (return_command): Update call.
- * gdbarch.h, gdbarch.c: Re-generate.
-
- * target.h (struct target_ops): Order xfer buffer parameters "read
- write" not "write read".
- * bfd-target.c (target_bfd_xfer_partial): Update.
- * remote.c (remote_xfer_partial): Update.
- * inftarg.c (child_xfer_partial): Update.
- * target.c (default_xfer_partial): Update.
- (target_read_partial, target_write_partial): Update.
- (debug_to_xfer_partial): Update.
-
- * arch-utils.h, arch-utils.c: Fix typo in comment.
-
- * arch-utils.c (deprecated_select_gdbarch_hack): Delete function.
- (gdbarch_from_bfd): Call gdbarch_find_by_info.
- (set_gdbarch_from_file): Call
- "deprecated_current_gdbarch_select_hack".
-
-2003-11-09 Andrew Cagney <cagney@redhat.com>
-
- * arch-utils.c (gdbarch_update_p): New function.
- * gdbarch.sh (gdbarch_update_p): Delete function.
- (find_arch_by_info, gdbarch_find_by_info): New functions.
- (deprecated_current_gdbarch_select_hack): New function.
- * gdbarch.c: Re-generate.
-
- * gdbarch.sh (clear_gdbarch_swap): Delete function.
- (swapout_gdbarch_swap): Delete function.
- (swapin_gdbarch_swap): Delete function.
- (init_gdbarch_swap): Delete function.
- (initialize_non_multiarch): Delete function.
- (current_gdbarch_swap_in_hack): New function.
- (current_gdbarch_swap_out_hack): New function.
- (current_gdbarch_swap_init_hack): New function.
- * gdbarch.c: Re-generate.
-
- * gdbarch.sh (verify_gdbarch, gdbarch_dump): Rename "gdbarch"
- parameter to "current_gdbarch". Add comment explaining why.
- (TARGET_FLOAT_FORMAT: Pass "current_gdbarch" to default_double_format.
- (TARGET_DOUBLE_FORMAT,TARGET_LONG_DOUBLE_FORMAT): Ditto.
- * gdbarch.c: Re-generate.
-
- * config/s390/s390.mh (XM_FILE, XM_CLIBS): Delete macros.
- * config/s390/nm-linux.h (KERNEL_U_ADDR): Define.
- * config/s390/xm-linux.h: Delete file.
- * config/m88k/xm-delta88v4.h: Delete stray.
-
- * Makefile.in (arch-utils.o): Update dependencies.
- * arch-utils.c: Include "osabi.h".
- (gdbarch_info_fill): New function.
- * arch-utils.h (gdbarch_info_fill): Declare.
- * gdbarch.sh (gdbarch_update_p): Call "gdbarch_info_fill".
- * gdbarch.c: Re-generate.
-
-2003-11-09 Mark Kettenis <kettenis@gnu.org>
- David S. Miller <davem@redhat.com>
-
- * glibc-tdep.c, glibc-tdep.h: New files.
- * config/arm/linux.mt (TDEPFILES): Add glibc-tdep.o
- * config/i386/linux.mt (TDEPFILES): Likewise.
- * i386-linux-tdep.c (glibc-tdep.h): Include.
- (find_minsym_and_objfile, skip_hurd_resolver): Delete.
- (i386_linux_skip_solib_resolver): Call glibc_skip_solib_resolver.
- * arm-linux-tdep.c (glibc-tdep.h): Include.
- (find_minsym_and_objfile, skip_hurd_resolver): Delete.
- (arm_linux_skip_solib_resolver): Call glibc_skip_solib_resolver.
- * Makefile.in (ALLDEPFILES): Add glibc-tdep.c
- (glibc_tdep_h): Define.
- (glibc-tdep.o): Add dependencies.
- (arm-linux-tdep.o): Update dependencies.
- (i386-linux-tdep.o): Likewise.
-
-2003-11-09 Andrew Cagney <cagney@redhat.com>
-
- * config/mips/irix6.mh (NAT_FILE): Set to "nm-irix5.h".
- * config/mips/nm-irix6.h: Delete file.
- * config/mips/nm-linux.h: Update copyright.
- (MIPS_GNULINUX_TARGET): Delete macro.
- * config/mips/irix6.mh (XM_FILE): Set to "xm-irix5.h".
- * config/mips/xm-irix6.h: Delete file.
- * config/mips/linux.mh (XM_FILE): Delete definition.
- * config/mips/xm-linux.h: Delete file.
-
-2003-11-09 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (d10v_return_value): New function.
- (d10v_use_struct_convention): Delete function.
- (d10v_store_return_value): Delete function.
- (d10v_extract_struct_value_address): Delete function.
- (d10v_gdbarch_init): Set "return_value" instead of
- "extract_return_value", "store_return_value",
- "extract_struct_value_address", and "use_struct_convention".
- (RET1_REGNUM): Delete const.
-
-2003-11-09 Mark Kettenis <kettenis@gnu.org>
-
- From David S. Miller <davem@redhat.com>:
- * gdbarch.sh (SKIP_SOLIB_RESOLVER): New method.
- * gdbarch.c, gdbarch.h: Regenerated.
- * arch-utils.c (generic_skip_solib_resolver): New function.
- * arch-utils.h (generic_skip_solib_resolver): New prototype.
- * infrun.c (SKIP_SOLIB_RESOLVER): Don't define.
-
-2003-11-07 Andrew Cagney <cagney@redhat.com>
-
- * top.c (print_gdb_version): Replace STREQ with strcmp.
- * valops.c (value_struct_elt_for_reference): Ditto.
- (value_struct_elt_for_reference): Ditto.
- * symtab.c (gdb_mangle_name): Ditto.
- (find_line_symtab): Ditto.
- * symmisc.c (maintenance_print_symbols): Ditto.
- * symfile.c (symbol_file_command): Ditto.
- * stabsread.c (define_symbol, read_type): Ditto.
- (cleanup_undefined_types, scan_file_globals): Ditto.
- * solib.c (solib_map_sections): Ditto.
- * solib-svr4.c (bfd_lookup_symbol): Ditto.
- * rs6000-tdep.c (skip_prologue): Ditto.
- * p-valprint.c (pascal_value_print): Ditto.
- (pascal_object_is_vtbl_ptr_type): Ditto.
- * objfiles.c (in_plt_section): Ditto.
- * minsyms.c (lookup_minimal_symbol): Ditto.
- (compact_minimal_symbols): Ditto.
- (find_solib_trampoline_target): Ditto.
- * mdebugread.c (parse_type): Ditto.
- * language.c (set_language_command): Ditto.
- (set_type_command, set_range_command): Ditto.
- * f-lang.c (add_common_block): Ditto.
- (add_common_block): Ditto.
- (find_first_common_named): Ditto.
- (patch_all_commons_by_name): Ditto.
- * elfread.c (elf_locate_sections): Ditto.
- (elf_locate_sections): Ditto.
- (elfstab_offset_sections): Ditto.
- * dwarf2read.c (dwarf2_locate_sections): Ditto.
- * dbxread.c (add_old_header_file): Ditto.
- (find_corresponding_bincl_psymtab): Ditto.
- (read_dbx_symtab, process_one_symbol): Ditto.
- * coffread.c (patch_opaque_types): Ditto.
- * cli/cli-decode.c (delete_cmd): Ditto.
- * cli/cli-cmds.c (pwd_command, list_command): Ditto.
- * c-typeprint.c (c_type_print_base): Ditto.
- * breakpoint.c (bpstat_stop_status): Ditto.
- (clear_command, breakpoint_re_set_one): Ditto.
-
-2003-11-07 Andrew Cagney <cagney@redhat.com>
-
- * bcache.h: Update copyright. Add comments on bcache VS hashtab.
- * bcache.c (struct bstring): Make "length" an unsigned short, add
- "half_hash".
- (struct bcache): Add "half_hash_error_count".
- (bcache): Compute and save the "half_hash". Compare the
- "half_hash" before comparing the length. Update
- half_hash_error_count.
-
-2003-11-07 Andrew Cagney <cagney@redhat.com>
-
- * inftarg.c (child_xfer_partial): New function
- (init_child_ops): Set "to_xfer_partial".
-
-2003-11-07 Andrew Cagney <cagney@redhat.com>
-
- * ppc-linux-tdep.c (ppc_linux_init_abi): When 32-bit GNU/Linux,
- set "return_value" instead of "use_struct_convention".
- (ppc_linux_use_struct_convention): Delete function.
- (ppc_linux_return_value): New function.
- * ppc-sysv-tdep.c (ppc_sysv_abi_return_value): New function.
- (ppc_sysv_abi_broken_return_value): New function.
- (do_ppc_sysv_return_value): Add "gdbarch" parameter.
- (ppc64_sysv_abi_push_dummy_call): Add "gdbarch" parameter, drop
- static.
- (ppc_sysv_abi_extract_return_value): Delete function.
- (ppc_sysv_abi_broken_extract_return_value): Delete function.
- (ppc_sysv_abi_store_return_value): Delete function.
- (ppc_sysv_abi_broken_store_return_value): Delete function.
- (ppc_sysv_abi_use_struct_convention): Delete function.
- (ppc64_sysv_abi_use_struct_convention): Delete function.
- (ppc64_sysv_abi_extract_return_value): Delete function.
- (ppc64_sysv_abi_store_return_value): Delete function.
- * ppcnbsd-tdep.c (ppcnbsd_return_value): New function.
- (ppcnbsd_init_abi): Set "return_value", instead of
- "use_struct_convention", "extract_return_value", and
- "store_return_value".
- (ppcnbsd_use_struct_convention): Delete function.
- * ppc-tdep.h (ppc64_sysv_abi_return_value): Declare.
- (ppc_sysv_abi_return_value): Declare.
- (ppc_sysv_abi_broken_return_value): Declare.
- (ppc_sysv_abi_use_struct_convention): Delete.
- (ppc_sysv_abi_store_return_value): Delete.
- (ppc_sysv_abi_extract_return_value): Delete.
- (ppc_sysv_abi_broken_store_return_value): Delete.
- (ppc_sysv_abi_broken_extract_return_value): Delete.
- (ppc64_sysv_abi_use_struct_convention): Delete.
- (ppc64_sysv_abi_extract_return_value): Delete.
- (ppc64_sysv_abi_store_return_value): Delete.
- * rs6000-tdep.c (rs6000_gdbarch_init): For 32-bit and 64-bit SYSV,
- set "return_value" instead of "extract_return_value",
- "store_return_value", and "use_struct_convention".
-
-2003-11-07 Mark Kettenis <kettenis@gnu.org>
-
- * dwarf2-frame.c (dwarf2_build_frame_info): Wrap comment.
-
- * fbsd-proc.c (read_mapping): Use sscanf and fgets instead of
- fscanf.
-
-2003-11-07 Mark Kettenis <kettenis@gnu.org>
-
- * fbsd-proc.c: Fix formatting.
-
-2003-11-06 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (first_pseudo_regnum, iacc0_regnum, frv_num_pseudo_regs):
- Define.
- (new_variant): Set name for iacc0_regnum.
- (frv_register_name): Accommodate pseudo-registers.
- (frv_register_type): Add case for iacc0_regnum.
- (frv_pseudo_register_read, frv_pseudo_register_write): New functions.
- (frv_gdbarch_init): Set number of pseudo registers. Establish
- pseudo-register read/write methods.
-
-2003-11-06 Andrew Cagney <cagney@redhat.com>
-
- * valops.c (destructor_name_p): Replace STREQN with strncmp.
- * top.c (command_line_input): Ditto.
- * objc-exp.y (yylex): Ditto.
- * minsyms.c (prim_record_minimal_symbol_and_info): Ditto.
- * jv-exp.y (yylex): Ditto.
- * f-exp.y (yylex): Ditto.
- * event-top.c (command_line_handler): Ditto.
- * environ.c (get_in_environ): Ditto.
- (set_in_environ): Ditto.
- * dwarfread.c (handle_producer): Ditto.
- * dbxread.c (process_one_symbol): Ditto.
- * c-typeprint.c (c_type_print_base): Ditto.
- * c-exp.y (yylex): Ditto.
-
-2003-11-06 Andrew Cagney <cagney@redhat.com>
- Jeff Johnston <jjohnstn@redhat.com>
-
- * target.c (add_target): Only set "to_xfer_partial" when NULL.
- (init_dummy_target): Set "to_xfer_partial".
-
-2003-11-06 Andrew Cagney <cagney@redhat.com>
-
- * stack.c (return_command): Warn when STRUCT_CONVENTION, and not
- REGISTER_CONVENTION.
-
-2003-11-06 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (insert_bp_location, allocate_bp_location): Make
- static.
-
-2003-11-06 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (remove_breakpoint): Take an bp_location
- instead of a breakpoint argument. Check the bp_location's type.
- Fix a reversed condition for hardware breakpoints.
-
- (insert_bp_location): Update call to remove_breakpoint.
- (remove_breakpoints): Likewise. Use ALL_BP_LOCATIONS.
- (remove_hw_watchpoints): Likewise.
- (reattach_breakpoints): Likewise.
- (detach_breakpoints): Likewise.
- (delete_breakpoint): Likewise.
-
-2003-11-06 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (mark_breakpoints_out): Use ALL_BP_LOCATIONS.
- (beakpoint_init_inferior): Likewise.
- (breakpoint_here_p): Likewise. Only check addresses for software
- or hardware breakpoints.
- (breakpoint_inserted_here_p): Likewise.
- (breakpoint_thread_match): Likewise. Correct comment.
- (bpstat_have_active_hw_watchpoints): Likewise.
- (check_duplicates): Likewise.
-
-2003-11-06 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoints.c (insert_bp_location): New function, broken out
- from insert_breakpoints. Work on an bp_location instead of a
- breakpoint.
- (insert_breakpoints): Use it.
-
-2003-11-06 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.h (struct bp_location): Add section.
- (struct breakpoint): Remove section.
- * breakpoint.c (insert_breakpoints, remove_breakpoint)
- (breakpoint_here_p, breakpoint_inserted_here_p)
- (breakpoint_thread_match, bpstat_stop_status, print_one_breakpoint)
- (describe_other_breakpoints, check_duplicates, set_raw_breakpoint)
- (clear_command, delete_breakpoint, breakpoint_re_set_one): Access
- section through loc.
-
-2003-11-06 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (read_memory_nobpt): Use ALL_BP_LOCATIONS
- instead of ALL_BREAKPOINTS. Check for software breakpoints only.
-
-2003-11-06 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (allocate_bp_location): Take bpt and bp_type
- arguments. Initialize owner and type for the new breakpoint
- location item.
- (set_raw_breakpoint): Update call to allocate_bp_location.
-
-2003-11-06 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.h (struct bp_location): Add a chain pointer.
- * breakpoint.c (ALL_BP_LOCATIONS, ALL_BP_LOCATIONS_SAFE): New
- macros.
- (bp_location_chain): New variable.
- (allocate_bp_location): New function.
- (set_raw_breakpoint): Use it.
- (delete_breakpoint): Remove ->loc from the bp_location_chain.
-
-2003-11-06 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.h (enum bp_loc_type, struct bp_location): New.
- (struct breakpoint): Remove address, shadow_contents, inserted,
- requested_address, and duplicate. Add a struct bp_location.
- * breakpoint.c (condition_command, read_memory_nobpt)
- (insert_breakpoints, remove_breakpoints, remove_hw_watchpoints)
- (reattach_breakpoints, update_breakpoints_after_exec)
- (detach_breakpoints, remove_breakpoint, mark_breakpoints_out)
- (breakpoint_init_inferior, breakpoint_here_p)
- (breakpoint_inserted_here_p, deprecated_frame_in_dummy)
- (breakpoint_thread_match, bpstat_stop_status)
- (bpstat_have_active_hw_watchpoints, print_one_breakpoint)
- (describe_other_breakpoints, check_duplicates)
- (make_breakpoint_permanent, create_thread_event_breakpoint)
- (disable_breakpoints_in_shlibs, re_enable_berakpoints_in_shlibs)
- (set_longjmp_resume_breakpoint, mention, create_breakpoints)
- (watch_command_1, print_one_exception_catchpoint)
- (clear_command, breakpoint_re_set_one): Adjust member accesses to
- use the breakpoint's ->loc.
- (set_raw_breakpoint): Likewise. Initialize ->loc.
- (delete_breakpoint): Likewise. Free ->loc.
-
-2003-11-05 Andrew Cagney <cagney@redhat.com>
-
- * config/sparc/tm-sparc.h (FRAME_STRUCT_ARGS_ADDRESS): Delete
- macro.
- * config/m68k/tm-sun3.h (SIG_PC_FP_OFFSET): Delete macro.
- * config/i386/tm-cygwin.h
- (LINKER_SYMBOLS_HAVE_WIN32_STDCALL_ARG_SIZES): Delete macro.
- * config/powerpc/tm-linux.h
- (AT_SUBROUTINE_CALL_INSTRUCTION_TARGET): Delete macro.
- (at_subroutine_call_instruction_target): Delete declaration.
- * config/sparc/tm-sp64linux.h (GDB_PTRACE_REGS64): Delete macro.
- * config/m68k/tm-sun3.h (SIG_SP_FP_OFFSET): Delete macro.
- * config/ns32k/tm-ns32k.h (NUM_GENERAL_REGS): Delete macro.
-
- * xcoffread.c (find_linenos): Replace "sec_ptr" and "bfd" with
- "struct bfd_section" and "struct bfd".
- * target.h (struct section_table): Ditto.
- * rs6000-nat.c (xcoff_relocate_core): Ditto.
- * solib-svr4.c (elf_locate_base): Ditto.
- * pa64solib.c (dld_cache_t): Ditto.
- * objfiles.h (struct obj_section): Ditto.
- * objfiles.c (add_to_objfile_sections): Ditto.
- * exec.c (bfdsec_to_vmap): Ditto.
- (add_to_section_table): Ditto.
- (build_section_table): Ditto.
- * corelow.c (get_core_register_section): Ditto.
- * coffread.c (find_linenos): Ditto.
- * elfread.c (elf_interpreter): Delete #if0'd function.
-
- * mips-tdep.c (mips_dump_tdep): Delete code prinint VX_NUM_REGS.
- * config/sparc/tm-vxsparc.h (VX_NUM_REGS): Delete macro.
- * config/mips/tm-vxmips.h (VX_NUM_REGS): Delete macro.
- * config/m68k/tm-vx68.h (VX_NUM_REGS): Delete macro.
-
- * arch-utils.h (generic_cannot_extract_struct_value_address):
- Delete declaration.
- * wince.c (_initialize_wince): Fix multi-line string.
- * ia64-tdep.c (floatformat_valid): Convert to ISO C.
-
-2003-11-05 Elena Zannoni <ezannoni@redhat.com>
-
- * top.c (execute_command): Fix broken logic for command execution
- while inferior is running in async mode.
-
-2003-11-06 Mark Kettenis <kettenis@gnu.org>
-
- * dwarf2-frame.c (execute_cfa_program): Mark register as
- REG_SAVED_REG for DW_CFA_register opcode.
-
-2003-11-05 Mark Kettenis <kettenis@gnu.org>
-
- * amd64fbsd-tdep.c (amd64fbsd_sc_reg_offset): Adjust offset of
- %rsp, %rip and %eflags to match ABI-change.
-
-2003-11-05 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c (struct gdbarch_tdep): Remove os_ident field.
- (ia64_gdbarch_init): Don't bother calculating the os.
- Instead use the gdbarch_info struct and look at the osabi field.
- Also use gdbarch_list_lookup_by_info() to look for a
- candidate gdbarch.
-
-2003-11-05 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (frv_register_byte): Delete.
- (frv_extract_return_value, frv_store_return_value)
- (frv_extract_struct_value_address): Don't call frv_register_byte().
- Convert to non-deprecated form.
- (frv_gdbarch_init): Don't call set_gdbarch_deprecated_register_byte().
- Convert calls to set_gdbarch_deprecated_extract_return_value(),
- set_gdbarch_deprecated_store_return_value(), and
- set_gdbarch_deprecated_extract_struct_value_address() into
- non-deprecated forms.
-
-2003-11-05 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_dump_tdep): Do not print
- PRINT_EXTRA_FRAME_INFO.
- * config/sparc/tm-sparc.h (DEPRECATED_PRINT_EXTRA_FRAME_INFO):
- Rename PRINT_EXTRA_FRAME_INFO.
- * mips-tdep.c (mips_print_extra_frame_info): Delete function.
- * config/mips/tm-mips.h (PRINT_EXTRA_FRAME_INFO): Delete macro.
- (mips_print_extra_frame_info): Delete declaration.
- * stack.c (frame_info): Use DEPRECATED_PRINT_EXTRA_FRAME_INFO.
-
-2003-11-05 Elena Zannoni <ezannoni@redhat.com>
-
- * coffread.c (coff_symtab_read): Remove passing of info parameter
- to prim_record_minimal_symbol_and_info.
-
-2003-11-05 Elena Zannoni <ezannoni@redhat.com>
-
- * coffread.c (process_coff_symbol): Delete CXUX_TARGET macro use.
- (decode_base_type): Delete ifdeffed out code.
-
-2003-11-04 Andrew Cagney <cagney@redhat.com>
-
- * symtab.c (find_active_alias): Delete function.
- (lookup_block_symbol): Delete alias code.
- * stabsread.c (resolve_live_range): Delete function.
- (add_live_range): Delete function.
- (resolve_symbol_reference): Delete function.
- (define_symbol): Delete live range and alias code.
- (scan_file_globals): Delete alias code.
- * symtab.h (SYMBOL_RANGES): Delete macro.
- (struct range_list): Delete structure.
- (struct symbol): Delete field "ranges".
- (SYMBOL_ALIASES): Delete macro.
- (struct alias_list): Delete structure.
- (struct symbol): Delete field "aliases".
-
-2003-11-04 Michael Snyder <msnyder@redhat.com>
-
- * MAINTAINERS: Remove myself as owner of breakpoints and
- of sparc/solaris.
-
-2003-11-03 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c (sh_sh4_nofpu_register_name): New function.
- (sh_sh4al_dsp_register_name): Ditto.
- (sh4_nofpu_show_regs): Ditto.
- (sh_gdbarch_init): Add cases for bfd_mach_sh4al_dsp, bfd_mach_sh4a,
- bfd_mach_sh4_nofpu and bfd_mach_sh4a_nofpu.
-
-2003-11-03 Andrew Cagney <cagney@redhat.com>
-
- * bcache.c: Include "gdb_assert.h".
- (struct bcache): Add fields "expand_count" and
- "expand_hash_count".
- (expand_hash_table): Update the expand counts.
- (print_bcache_statistics): Use XCALLOC, not alloca. Print stats
- on object sizes and hashes.
- * Makefile.in (bcache.o): Update dependencies.
-
-2003-11-03 Andrew Cagney <cagney@redhat.com>
-
- * exec.c (xfer_memory): Eliminate xfer_fn.
-
-2003-10-31 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (gdb_assert.h, sim-regno.h, gdb/sim-frv.h)
- (opcodes/frv-desc.h): Include.
- (iacc0h_regnum, iacc0l_regnum): Define.
- (last_spr_regnum, frv_num_regs): Update.
- (new_variant): Don't supply default names for holes in the SPRs.
- Supply names for iacc0h_regnum and iacc0l_regnum.
- (frv_register_type): Use symbolic constants first_fpr_regnum and
- last_fpr_regnum instead of hardcoded constants 64 and 127. Use
- builtin_type_int instead of builtin_type_int32.
- (frv_register_sim_regno): New function.
- (frv_gdbarch_init): Call set_gdbarch_register_sim_regno().
- * Makefile.in (gdb_sim_frv_h): Define.
- (frv-tdep.o): Update dependencies.
-
-2003-10-31 Andrew Cagney <cagney@redhat.com>
-
- * avr-tdep.c (avr_frame_this_id): Do not call
- deprecated_inside_entry_file.
- * m68hc11-tdep.c (m68hc11_frame_this_id): Ditto.
- * m32r-tdep.c (m32r_frame_this_id): Ditto.
- * d10v-tdep.c (d10v_frame_this_id): Ditto.
- * arm-tdep.c (arm_prologue_this_id): Ditto.
- * alpha-tdep.c (alpha_heuristic_frame_this_id): Ditto.
-
-2003-10-31 Jim Blandy <jimb@redhat.com>
-
- * elfread.c (elf_symtab_read): Allocate correct number of tail
- elements to sectinfo structure. (Fix from Woody LaRue.)
-
-2003-10-31 Andrew Cagney <cagney@redhat.com>
-
- * stack.c (return_command): Use get_frame_type, instead of
- CALL_DUMMY_HAS_COMPLETED.
- * inferior.h (CALL_DUMMY_HAS_COMPLETED): Delete definition.
- * config/pa/tm-hppa.h (CALL_DUMMY_HAS_COMPLETED): Delete macro.
-
-2003-10-31 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-linux-tdep.c (x86_64_linux_sc_reg_offset): Don't
- explicitly specify size of array.
- (x86_64_linux_init_abi): Use ARRAY_SIZE to initialize
- TDEP->sc_num_regs.
-
-2003-10-31 Andrew Cagney <cagney@redhat.com>
-
- * s390-tdep.c (s390_cannot_extract_struct_value_address): New
- function.
- (s390_gdbarch_init): Set extract_struct_value_address.
- * arch-utils.c (generic_cannot_extract_struct_value_address):
- Delete function.
- * arch-utils.h (generic_cannot_extract_struct_value_address):
- Delete definition.
-
-2003-10-31 Mark Kettenis <kettenis@gnu.org>
-
- * i386-linux-nat.c (fetch_core_registers): Remove.
- (linux_elf_core_fns): Remove.
- (_initialize_i386_linux_nat): Remove.
-
-2003-10-31 Andrew Cagney <cagney@redhat.com>
-
- * solib-svr4.c: Update copyright. Include "bfd-target.h" and
- "exec.h".
- (exec_entry_point): New function.
- (enable_break): Create a "tmp_bfd_target", use that and
- entry_point_address when computing the relocation offset.
- (svr4_relocate_main_executable): Ditto with exec_bfd and exec_ops.
- * Makefile.in (solib-svr4.o): Update dependencies.
-
-2003-10-31 Andrew Cagney <cagney@redhat.com>
-
- * defs.h (XZALLOC): Define.
- * target.h (struct target_ops): Add "to_data";
- * bfd-target.h, bfd-target.c: New files.
- * Makefile.in (SFILES): Add "bfd-target.c".
- (COMMON_OBS): Add "bfd-target.o".
- (bfd-target.o): Specify dependencies.
- (bfd_target_h): Define.
- * defs.h (XZALLOC): Define.
-
-2003-10-31 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (rs6000_gdbarch_init): For 64-bit ABI, set
- adjust_breakpoint_address.
- * Makefile.in (ppc-sysv-tdep.o): Add $(target_h).
- * ppc-tdep.h (ppc64_sysv_abi_adjust_breakpoint_address): Declare.
- * ppc-sysv-tdep.c: Include "target.h". Update copyright.
- (ppc64_sysv_abi_adjust_breakpoint_address): New function.
-
-2003-10-31 Andrew Cagney <cagney@redhat.com>
-
- * target.h (struct target_ops): Replace "to_read_partial" and
- "to_write_partial" with "to_xfer_partial". Update comments.
- * target.c (debug_to_write_partial): Delete function.
- (debug_to_xfer_partial): Replace debug_to_read_partial.
- (add_target, update_current_target, setup_target_debug): Set
- "to_xfer_partial" instead of "to_read_partial" and
- "to_write_partial".
- (default_xfer_partial): Replace "default_write_partial".
- (default_read_partial): Delete.
- (target_read_partial, target_write_partial): Call
- "to_xfer_partial".
- * remote.c (init_remote_ops): Set "to_xfer_partial".
- (init_remote_async_ops): Ditto.
- (remote_xfer_partial): Replace "remote_read_partial".
-
-2003-10-31 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_supply_fpregset): Support floating-point
- registers in `fxsave' format.
- (i386_regset_from_core_section): Deal with ".reg-xfp" sections.
-
-2003-10-30 Mark Kettenis <kettenis@gnu.org>
-
- * i386-linux-tdep.c (i386_linux_gregset_reg_offset): New variable.
- (i386_linux_init_abi): Initialize TDEP->gregset_reg_offset,
- TDEP->gregset_num_regs and tdep->sizeof_gregset.
-
- * i386-linux-tdep.c (i386_linux_sc_reg_offset): Don't explicitly
- specify size of array.
- (i386_linux_init_abi): Remove initialization of
- TDEP->num_xmm_regs. Use I386_LINUX_NUM_REGS for number of
- registers. Use ARRAY_SIZE to initialize TDEP->sc_num_regs.
-
- * config/i386/fbsd64.mt (TDEPFILES): Add corelow.o.
- * config/i386/fbsd64.mh (NATDEPFILES): Remove corelow.o and
- core-regset.o.
-
- * fbsd-proc.c (fbsd_make_corefile_notes): Put a "FreeBSD" label in
- the ELF header.
-
-2003-10-29 Mark Kettenis <kettenis@gnu.org>
-
- * config/i386/fbsd.mt (TDEPFILES): Add corelow.o.
- * config/i386/fbsd.mh (NATDEPFILES): Remove corelow.o and
- core-regset.o.
-
- * fbsd-proc.c (fbsd_make_corefile_notes): Remove unecessary casts.
-
- * corelow.c: Include "arch-utils.h", "regset.h" and
- "gdb_assert.h".
- (core_gdbarch): New variable.
- (sniff_core_bfd): Don't sniff if we have support for register sets
- in CORE_GDBARCH.
- (core_close): Reset CORE_GDBARCH.
- (core_open): Initialize CORE_GDBARCH.
- (get_core_register_section): Use register sets if they are
- supported by CORE_GDBARCH.
- (get_core_registers): Don't print error message if we have support
- for register sets in CORE_GDBARCH.
-
-2003-10-29 Andrew Cagney <cagney@redhat.com>
-
- * ppc-linux-tdep.c (_initialize_ppc_linux_tdep): Instead of the
- default PPC machine, register 32-bit and 64-bit PPC, and rs6k.
-
-2003-10-29 Mark Kettenis <kettenis@gnu.org>
-
- * objfiles.h (clear_objfile_data): New prototype.
- * objfiles.c (clear_objfile_data): New function.
- * symfile.c (reread_symbols): Clear per-objfile data.
-
-2003-10-28 Jeff Johnston <jjohnstn@redhat.com>
-
- * symfile.c (symbol_file_add_with_addrs_or_offsets): Switch to use
- printf_unfiltered instead of printf_filtered for output messages.
- (add_symbol_file_command): Ditto.
- (reread_symbols): Ditto.
- (overlay_auto_command): Ditto.
- (overlay_manual_command): Ditto.
- (overlay_off_command): Ditto.
-
-2003-10-27 Mark Kettenis <kettenis@gnu.org>
-
- * arch-utils.c (deprecated_select_gdbarch_hack): New function.
- (gdbarch_from_bfd): New function.
- (set_gdbarch_from_file): Re-implement using gdbarch_from_bfd and
- deprecated_select_gdbarch_hack.
- * arch-utils.h (gdbarch_from_bfd): New prototype.
-
-2003-10-27 Andrew Cagney <cagney@redhat.com>
-
- * osabi.c (gdbarch_init_osabi): Use info.bfd_arch_info instead of
- arch_info. Use warning instead of fprintf_filtered. Do not use
- deprecated bfd_printable_arch_mach.
-
-2003-10-26 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (frv_register_raw_size, frv_register_virtual_size):
- Delete.
- (frv_register_type): Rename from frv_register_virtual_type. Add
- ``struct gdbarch *'' parameter.
- (frv_gdbarch_init): Delete calls to the following functions:
- set_gdbarch_deprecated_size(),
- set_gdbarch_deprecated_register_bytes(),
- set_gdbarch_deprecated_register_raw_size(),
- set_gdbarch_deprecated_max_register_raw_size(),
- set_gdbarch_deprecated_register_virtual_size(),
- set_gdbarch_deprecated_max_register_virtual_size(),
- set_gdbarch_deprecated_register_virtual_size(),
- set_gdbarch_deprecated_register_virtual_type().
- Add call to function set_gdbarch_register_type().
-
-2003-10-26 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.h (FCS_REGNUM, FCOFF_REGNUM, FDS_REGNUM,
- FDOFF_REGNUM): Remove defines.
- * win32-nat.c (do_child_fetch_inferior_registers): Include
- "i387-tdep.h".
- (do_child_fetch_inferior_registers): Use I387_FISEG_REGNUM and
- I387_FOP_REGNUM instead of FCS_REGNUM and FOP_REGNUM. Define and
- undefine I387_ST0_REGNUM.
-
- * i386-tdep.h (FPU_REG_RAW_SIZE): Remove define.
- * x86-64-tdep.c (x86_64_store_return_value): Use
- I386_MAX_REGISTER_SIZE instead of FPU_REG_RAW_SIZE.
-
- Change register numbers to enumartion values.
- * i386-tdep.h (enum i386_regnum): New.
- (I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM,
- I386_EBP_REGNUM, I386_IP_REGNUM, I386_EFLAGS_REGNUM,
- I386_ST0_REGNUM): Remove defines.
- * i386-tdep.c (I386_EBX_REGNUM, I386_ECX_REGNUM, I386_ESI_REGNUM,
- I386_EDI_REGNUM): Remove defines.
-
-2003-10-24 Andrew Cagney <cagney@redhat.com>
-
- * target.c: Include "gdbcore.h".
- (get_target_memory, get_target_memory_unsigned): New functions.
- * target.h (get_target_memory, get_target_memory_unsigned): Declare.
- * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr):
- Use get_target_memory_unsigned.
- * Makefile.in (target.o): Update dependencies.
-
-2003-10-24 Andrew Cagney <cagney@redhat.com>
-
- * osabi.c (gdbarch_init_osabi): Fix typos, and "fortunatly"[sic].
- * PROBLEMS, arch-utils.c, cli-out.c, command.h: Ditto.
- * complaints.c, cris-tdep.c, disasm.c, dwarf2-frame.c: Ditto.
- * frame.c, frame.h, infcall.c, infcmd.c, infrun.c: Ditto.
- * kod.c, mips-tdep.c, regcache.c, regcache.h, remote.c: Ditto.
-
- * osabi.c (gdbarch_init_osabi): Add comment on 32-bit vs 64-bit.
- (can_run_code_for): Use the OO term "singleton".
-
-2003-10-23 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (stack.o): Add $(regcache_h).
- * stack.c: Include "regcache.h"
- (return_command): Rewrite. Use get_frame_id and
- get_selected_frame. Eliminate "deprecated_selected_frame". Warn
- about unhandled return-values.
- * value.h (set_return_value): Delete declaration.
- * values.c (set_return_value): Delete function.
-
-2003-10-23 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c: (ia64_frame_cache): Add new prev_cfm field.
- (pseudo_regs): Add comment regarding register stack registers.
- (ia64_alloc_frame_cache): Initialize new prev_cfm field to 0.
- (floatformat_valid): New static routine.
- (floatformat_ia64_ext): Add name field and set up is_valid routine
- to floatformat_valid().
- (examine_prologue): For the previous cfm, use
- frame_unwind_register()
- if the cfm is not stored in a register-stack register. Save the
- previous cfm value in the prev_cfm field. Add debug output.
- (ia64_frame_this_id): Use frame_id_build_special() to also register
- the bsp. Add debug output.
- (ia64_sigtramp_frame_this_id): Ditto.
- (ia64_frame_prev_register): Look at cache saved_regs for a few more
- registers and also add some checks for framelessness before accepting
- current register values for fields such as return address. For cfm,
- use the cached prev_cfm field if available. Add comment to explain
- PSR logic. Add debug output.
- (ia64_sigtramp_frame_init_saved_regs): Save the bsp and sp addresses
- as part of initialization.
- (ia64_sigtramp_frame_cache): Hard-code stack size as it can't be
- calculated. Cache the bsp and cfm values.
- (ia64_sigtramp_frame_prev_register): Add logic to this routine out
- instead of using ia64_frame_prev_register() which doesn't expect most
- registers to be saved. The saved values for bsp and sp
- can be taken from the cache. Add debug output.
- (ia64_push_dummy_call): Use frame_id_build_special() to also register
- the bsp.
-
-2003-10-23 Jim Blandy <jimb@redhat.com>
-
- * osabi.c (gdbarch_init_osabi): A handler is okay if it's for an
- architecture the current arch can run code for --- but not if it's
- a superset.
- (can_run_code_for): New function.
-
-2003-10-22 James E Wilson <wilson@specifixinc.com>
-
- * MAINTAINERS: Move myself from paper trail section back to write
- after approval section.
-
-2003-10-22 Andrew Cagney <cagney@redhat.com>
-
- * exec.h: New file.
- * win32-nat.c: Include "exec.h".
- * solib.c: Include "exec.h".
- * target.h (build_section_table): Delete declaration.
- * somsolib.c: Include "exec.h".
- (exec_ops): Delete extern declaration.
- * rs6000-nat.c: Update copyright. Include "exec.h".
- (exec_ops): Delete extern declaration.
- * pa64solib.c: Update copyright. Include "exec.h".
- (exec_ops): Delete extern declaration.
- * exec.c: Update copyright. Include "exec.h".
- * corelow.c: Update dependencies. Include "exec.h".
- * Makefile.in (exec_h): Define.
- (exec.o, somsolib.o): Update dependencies.
- (pa64solib.o, corelow.o): Update dependencies.
-
-2003-10-22 Andrew Cagney <cagney@redhat.com>
-
- * target.c: Include "gdb_assert.h" (target_read): Call
- "target_read_partial", not "target_write_partial".
- (default_read_partial, default_write_partial): New function.
- (target_read_partial, target_write_partial): Simplify, assume that
- there is always a read/write method.
- (update_current_target, add_target): Always set "to_read_partial"
- and "to_write_partial".
- (target_write, target_read): Fail on a zero byte transfer.
- * Makefile.in (target.o): Update dependencies.
- * target.h: Update copyright date.
- (target_object): Fix typo.
-
-2003-10-22 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (convert_from_func_ptr_addr): Convert to a pure
- multi-arch method, add "targ" parameter.
- (struct target_ops): Declare.
- * gdbarch.h, gdbarch.c: Re-generate.
- * Makefile.in (c-valprint.o): Update dependencies.
- * arch-utils.h: Update copyright.
- (convert_from_func_ptr_addr_identity): Declare.
- * arch-utils.c (convert_from_func_ptr_addr_identity): New function.
- * ia64-tdep.c (ia64_convert_from_func_ptr_addr): Update.
- * rs6000-tdep.c (rs6000_convert_from_func_ptr_addr): Upate.
- * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): Update.
- * infcall.c (find_function_addr, call_function_by_hand): Update.
- * c-valprint.c: Include "target.h".
- (print_function_pointer_address): Update.
-
-2003-10-22 Andrew Cagney <cagney@redhat.com>
-
- * target.c (target_close): New function.
- (debug_to_close): Use "target_close".
- (push_target): Use "target_close".
- (unpush_target): Use "target_close".
- (pop_target): Use "target_close".
- * target.h (struct target_ops): Add "to_xclose".
- (target_open): Delete macro. Move comment to "to_open".
- (target_close): Replace macro with function that takes a target.
- * top.c (quit_target): Pass "current_target" to "target_close".
-
-2003-10-21 Elena Zannoni <ezannoni@redhat.com>
-
- * minsyms.c (lookup_minimal_symbol_text): Remove unused parameter.
- Remove SOFUN_ADDRESS_MAYBE_MISSING ifdeffed code.
- * symtab.h (lookup_minimal_symbol_text): Update.
- * breakpoint.c (create_overlay_event_breakpoint,
- create_longjmp_breakpoint): Update callers.
- * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Update caller.
- * symtab.c (find_pc_sect_line): Ditto.
-
-2003-10-21 Andrew Cagney <cagney@redhat.com>
-
- * target.c (errno): Delete extern declaration.
-
-2003-10-20 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c: Change all occurrences of
- DEPRECATED_REGISTER_RAW_SIZE to use register_size() instead.
- (ia64_frame_prev_register): Minor whitespace change.
-
-2003-10-20 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: Add lines for:
- sim/testsuite/sim/frv/interrupts/Ipipe-fr400.cgs,
- sim/testsuite/sim/frv/interrupts/Ipipe-fr500.cgs,
- sim/testsuite/sim/frv/interrupts/badalign-fr550.cgs,
- sim/testsuite/sim/frv/interrupts/compound-fr550.cgs,
- sim/testsuite/sim/frv/interrupts/data_store_error-fr550.cgs,
- sim/testsuite/sim/frv/interrupts/fp_exception-fr550.cgs,
- sim/testsuite/sim/frv/interrupts/insn_access_error-fr550.cgs.
-
-2003-10-20 Andrew Cagney <cagney@redhat.com>
-
- * values.c (register_value_being_returned): Update comments. Use
- "gdbarch_return_value" when available.
- (using_struct_return): Ditto.
- (set_return_value): Ditto. Use "gdbarch_return_value" when
- available.. Print a warning, and not an error, when an unhandled
- return type is encountered.
- * infcmd.c: Include "gdb_assert.h".
- (print_return_value): When gdbarch_return_value_p, and using
- struct return, assume that the value is not available.
- * defs.h (return_value_convention): Define.
- * gdbarch.sh (gdbarch_return_value): New predicate method.
- * gdbarch.h, gdbarch.c: Re-generate
- * ppc-sysv-tdep.c (return_value_convention): Delete definition.
-
-2003-10-20 Andrew Cagney <cagney@redhat.com>
-
- * symtab.c: Replace "struct sec" with "struct bfd_section".
- * objfiles.c, linespec.c, blockframe.c, block.c: Ditto.
-
-2003-10-19 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: Add lines for:
- gdb/amd64nbsd-nat.c, gdb/amd64nbsd-tdep.c,
- gdb/i386fbsd-nat.c, gdb/i386fbsd-tdep.c,
- gdb/sparc64fbsd-nat.c, gdb/sparc64bsd-tdep.c.
-
-2003-10-19 Mark Kettenis <kettenis@gnu.org>
-
- * amd64fbsd-nat.c (fetch_inferior_registers,
- store_inferior_registers): Remove functions.
- * config/i386/fbsd64.mh (NATDEPFILES): Add amd64bsd-nat.o.
-
-2003-10-18 Mark Kettenis <kettenis@gnu.org>
-
- Add NetBSD/amd64 native configuration:
- * x86-64-tdep.h (amd64nbsd_r_reg_offset): Add extern declarations.
- * amd64nbsd-tdep.c: New file.
- * amd64nbsd-nat.c: New file.
- * amd64bsd-nat.c: New file.
- * config/i386/nbsd64.mh: New file.
- * config/i386/nbsd64.mt: New file.
- * configure.host: Add x86_64-*-netbsd*.
- * configure.tgt: Add x86_64-*-netbsd*.
- * Makefile.in (amd64bsd-nat.o, amd64nbsd-nat.o, amd64nbsd-tdep.o):
- New targets.
- * NEWS (New native configurations): Mention NetBSD/amd64.
-
-2003-10-17 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: Remove dead lines for:
- bfd/elf32-i386qnx.c, bfd/elf32-ppcqnx.c, bfd/elf32-shqnx.c,
- bfd/elf32-sh-lin.c, bfd/elf32-sh-nbsd.c, bfd/elf32-sh64-nbsd.c,
- bfd/elf64-alpha-fbsd.c, bfd/elf64-sh64-nbsd.c,
- gdb/alphanbsd-nat.c, gdb/config/i386/tm-i386mk.h,
- gdb/config/i386/tm-i386v42mp.h, gdb/config/i386/xm-i386mach.h,
- gdb/config/i386/xm-i386mk.h, gdb/config/i386/xm-i386v32.h,
- gdb/config/m68k/apollo68v.mh, gdb/config/m68k/nm-apollo68v.h,
- gdb/config/m68k/xm-apollo68v.h, gdb/config/m88k/tm-delta88v4.h,
- gdb/config/mips/tm-bigmips64.h, gdb/config/mips/tm-embed64.h,
- gdb/config/mips/tm-embedl.h, gdb/config/mips/tm-embedl64.h,
- gdb/config/mips/tm-vr4300el.h, gdb/config/mips/tm-vr4xxxel.h,
- gdb/config/mips/tm-vr5000el.h, gdb/config/sparc/tm-sparclet.h,
- gdb/config/sparc/tm-sparclite.h,
- gdb/gdbtk/generic/ChangeLog-2001,
- gdb/gdbtk/library/ChangeLog-2001, gdb/remote-adapt.c,
- gdb/remote-eb.c, gdb/remote-mm.c, gdb/remote-nrom.c,
- gdb/remote-udi.c, gdb/remote-vx29k.c, gdb/remote-vx960.c,
- gdb/sparclet-rom.c, gdb/sparclet-stub.c,
- gdb/testsuite/gdb.mi/mi0-var-block.exp,
- gdb/testsuite/gdb.mi/mi0-var-child.exp,
- gdb/testsuite/gdb.mi/mi0-var-cmd.exp,
- gdb/testsuite/gdb.mi/mi0-var-display.exp,
- itcl/iwidgets3.0.0/demos/extfileselectionbox,
- itcl/iwidgets3.0.0/demos/extfileselectiondialog,
- itcl/iwidgets3.0.0/demos/fileselectionbox,
- itcl/iwidgets3.0.0/demos/fileselectiondialog,
- itcl/iwidgets3.0.0/demos/html/buttonbox.n.html,
- itcl/iwidgets3.0.0/demos/html/canvasprintbox.n.html,
- itcl/iwidgets3.0.0/demos/html/canvasprintdialog.n.html,
- itcl/iwidgets3.0.0/demos/html/combobox.n.html,
- itcl/iwidgets3.0.0/demos/html/dialog.n.html,
- itcl/iwidgets3.0.0/demos/html/dialogshell.n.html,
- itcl/iwidgets3.0.0/demos/html/entryfield.n.html,
- itcl/iwidgets3.0.0/demos/html/feedback.n.html,
- itcl/iwidgets3.0.0/demos/html/fileselectionbox.n.html,
- itcl/iwidgets3.0.0/demos/html/fileselectiondialog.n.html,
- itcl/iwidgets3.0.0/demos/html/hyperhelp.n.html,
- itcl/iwidgets3.0.0/demos/html/iwidgets2.2.0UserCmds.html,
- itcl/iwidgets3.0.0/demos/html/labeledwidget.n.html,
- itcl/iwidgets3.0.0/demos/html/menubar.n.html,
- itcl/iwidgets3.0.0/demos/html/messagedialog.n.html,
- itcl/iwidgets3.0.0/demos/html/notebook.n.html,
- itcl/iwidgets3.0.0/demos/html/optionmenu.n.html,
- itcl/iwidgets3.0.0/demos/html/panedwindow.n.html,
- itcl/iwidgets3.0.0/demos/html/promptdialog.n.html,
- itcl/iwidgets3.0.0/demos/html/pushbutton.n.html,
- itcl/iwidgets3.0.0/demos/html/radiobox.n.html,
- itcl/iwidgets3.0.0/demos/html/scrolledcanvas.n.html,
- itcl/iwidgets3.0.0/demos/html/scrolledframe.n.html,
- itcl/iwidgets3.0.0/demos/html/scrolledhtml.n.html,
- itcl/iwidgets3.0.0/demos/html/scrolledlistbox.n.html,
- itcl/iwidgets3.0.0/demos/html/scrolledtext.n.html,
- itcl/iwidgets3.0.0/demos/html/selectionbox.n.html,
- itcl/iwidgets3.0.0/demos/html/selectiondialog.n.html,
- itcl/iwidgets3.0.0/demos/html/shell.n.html,
- itcl/iwidgets3.0.0/demos/html/spindate.n.html,
- itcl/iwidgets3.0.0/demos/html/spinint.n.html,
- itcl/iwidgets3.0.0/demos/html/spinner.n.html,
- itcl/iwidgets3.0.0/demos/html/spintime.n.html,
- itcl/iwidgets3.0.0/demos/html/tabnotebook.n.html,
- itcl/iwidgets3.0.0/demos/html/tabset.n.html,
- itcl/iwidgets3.0.0/demos/html/toolbar.n.html,
- itcl/iwidgets3.0.0/demos/scrolledcanvas,
- itcl/iwidgets3.0.0/demos/scrolledframe,
- itcl/iwidgets3.0.0/demos/scrolledhtml,
- itcl/iwidgets3.0.0/demos/scrolledlistbox,
- itcl/iwidgets3.0.0/demos/scrolledtext,
- itcl/iwidgets3.0.0/demos/selectionbox,
- itcl/iwidgets3.0.0/demos/selectiondialog,
- itcl/iwidgets3.0.0/doc/canvasprintbox.n,
- itcl/iwidgets3.0.0/doc/canvasprintdialog.n,
- itcl/iwidgets3.0.0/doc/extfileselectionbox.n,
- itcl/iwidgets3.0.0/doc/extfileselectiondialog.n,
- itcl/iwidgets3.0.0/doc/fileselectionbox.n,
- itcl/iwidgets3.0.0/doc/fileselectiondialog.n,
- itcl/iwidgets3.0.0/doc/scopedobject.n.backup,
- itcl/iwidgets3.0.0/doc/scrolledcanvas.n,
- itcl/iwidgets3.0.0/doc/scrolledframe.n,
- itcl/iwidgets3.0.0/doc/scrolledhtml.n,
- itcl/iwidgets3.0.0/doc/scrolledlistbox.n,
- itcl/iwidgets3.0.0/doc/scrolledtext.n,
- itcl/iwidgets3.0.0/doc/selectionbox.n,
- itcl/iwidgets3.0.0/doc/selectiondialog.n,
- itcl/iwidgets3.0.0/generic/canvasprintbox.itk,
- itcl/iwidgets3.0.0/generic/canvasprintdialog.itk,
- itcl/iwidgets3.0.0/generic/extfileselectionbox.itk,
- itcl/iwidgets3.0.0/generic/extfileselectiondialog.itk,
- itcl/iwidgets3.0.0/generic/fileselectionbox.itk,
- itcl/iwidgets3.0.0/generic/fileselectiondialog.itk,
- itcl/iwidgets3.0.0/generic/scrolledcanvas.itk,
- itcl/iwidgets3.0.0/generic/scrolledframe.itk,
- itcl/iwidgets3.0.0/generic/scrolledhtml.itk,
- itcl/iwidgets3.0.0/generic/scrolledlistbox.itk,
- itcl/iwidgets3.0.0/generic/scrolledtext.itk,
- itcl/iwidgets3.0.0/generic/scrolledwidget.itk,
- itcl/iwidgets3.0.0/generic/selectionbox.itk,
- itcl/iwidgets3.0.0/generic/selectiondialog.itk,
- itcl/iwidgets3.0.0/tests/canvasprintbox.test,
- itcl/iwidgets3.0.0/tests/canvasprintdialog.test,
- itcl/iwidgets3.0.0/tests/extfileselectionbox.test,
- itcl/iwidgets3.0.0/tests/extfileselectiondialog.test,
- itcl/iwidgets3.0.0/tests/fileselectionbox.test,
- itcl/iwidgets3.0.0/tests/fileselectiondialog.test,
- itcl/iwidgets3.0.0/tests/scrolledcanvas.test,
- itcl/iwidgets3.0.0/tests/scrolledframe.test,
- itcl/iwidgets3.0.0/tests/scrolledhtml.test,
- itcl/iwidgets3.0.0/tests/scrolledlistbox.test,
- itcl/iwidgets3.0.0/tests/scrolledtext.test,
- itcl/iwidgets3.0.0/tests/selectionbox.test,
- itcl/iwidgets3.0.0/tests/selectiondialog.test,
- itcl/iwidgets3.0.0/unix/iwidgets.tcl.in,
- itcl/iwidgets3.0.0/unix/pkgIndex.tcl.in,
- tix/docs/Release-4.1.0.html, tix/docs/Release-4.1.0.txt,
- tix/docs/Release-4.1a2.html, tix/docs/Release-4.1a2.txt,
- tix/docs/Release-4.1a3.html, tix/docs/Release-4.1a3.txt,
- tix/docs/Release-4.1b1.html, tix/docs/Release-4.1b1.txt,
- tix/docs/Release-4.1b2.html, tix/docs/Release-4.1b2.txt,
- tix/tixConfig.sh.in, tix/unix/tk4.2/pkgIndex.tcl.in,
- tix/unix/tk8.0/pkgIndex.tcl.in, tix/unix/tk8.0/pkgIndex.tcl.in,
- tix/unix/tk8.1/pkgIndex.tcl.in, tix/win/tkConsole41.c,
- tix/win/tkConsole42.c, tix/win/tkConsole80a1.c,
- tix/win/tkConsole80b1.c, tix/win/tkConsole81.c, tk/doc/tk4.0.ps,
- tk/mac/tkMacProjects.sit.hqx.
-
-2003-10-17 Andrew Cagney <cagney@redhat.com>
-
- * target.c (target_section_by_addr): New function.
- (do_xfer_memory): Use "target_section_by_addr".
- * target.h (target_section_by_addr): Declare.
-
- * target.h (struct target_ops): Add "to_read_partial" and
- "to_write_partial", delete "to_query".
- (target_read_partial, target_write_partial): Declare.
- (target_read, target_write): Declare.
- (target_query): Delete macro.
- * target.c (target_read_partial): New function.
- (target_write_partial, target_read, target_write): New function.
- (update_current_target): Delete inheritance of "to_query". Add
- comments about "to_read_partial" and "to_write_partial".
- (debug_to_partial_read, debug_to_partial_write): New functions.
- (debug_to_query): Delete function.
- (setup_target_debug): Set "to_read_partial" and "to_write_partial"
- instead of "to_query".
- * remote.c (remote_read_partial): Replace "remote_query".
- (init_remote_ops): Set "to_read_partial" instead of "to_query".
- (init_remote_async_ops): Ditto.
- * kod.c (gdb_kod_query): Make "bufsize" a LONGEST. Use
- "target_read_partial" instead of "target_query".
- * avr-tdep.c (avr_io_reg_read_command): Make "bufsize" a LONGEST.
- Use "target_read_partial" instead of "target_query".
-
-2003-10-17 Jeff Johnston <jjohnstn@redhat.com>
-
- * frame.h (struct frame_id): Add new field: special_addr.
- (frame_id_build_special): New prototype.
- * frame.c (frame_id_build_special): New function.
- (frame_id_build): Change to call frame_id_build_special().
- (frame_id_eq): Change to also test special_addr field.
- (frame_id_inner): Update comment.
-
-2003-10-17 Andrew Cagney <cagney@redhat.com>
-
- * target.c (update_current_target): Perform the target cleanup.
- Put the target stack beneath the squashed "current_target".
- (add_target): Delete disabled call to "cleanup_target".
- (cleanup_target): Delete function.
- (push_target, unpush_target): Do not call "cleanup_target".
-
-2003-10-17 Andrew Cagney <cagney@redhat.com>
-
- * target.c (target_stack): Change to a static target_ops.
- (update_current_target): Walk the "struct target_ops" stack.
- (pop_target, do_xfer_memory, target_info): Ditto.
- (find_target_beneath): Ditto.
- (push_target): Rewrite to use the "struct target_ops" stack.
- (unpush_target): Ditto.
- * target.h (struct target_stack_item): Delete definition.
- (target_stack): Delete declaration.
- (struct target_ops): Add field "beneath".
-
-2003-10-17 Shrinivas Atre <shrinivasa@KPITCummins.com>
-
- * gdb/config/h8300/tm-h8300.h (h8300_normal_mode): Add external
- declaration.
- * gdb/h8300-tdep.c (BINWORD): Update BINWORD for h8300_normal_mode
- (h8300_examine_prologue): Use h8300_normal_mode flag
- (h8300_gdbarch_init): Set architecture info for normal mode
-
-2003-10-16 Daniel Jacobowitz <drow@mvista.com>
-
- * remote.c (remote_protocol_vcont): New variable.
- (set_remote_protocol_vcont_packet_cmd): New function.
- (show_remote_protocol_vcont_packet_cmd): New function.
- (init_all_packet_configs): Handle remote_protocol_vcont.
- (remote_vcont_probe): New function.
- (remote_vcont_resume): New function.
- (remote_resume): Use it.
- (remote_async_resume): Call remote_resume.
- (_initialize_remote): Add verbose-resume packet commands.
-
-2003-10-16 Andrew Cagney <cagney@redhat.com>
-
- * infrun.c (handle_inferior_event): Add comment about
- "frame_id_inner" being too weak.
-
-2003-10-16 Elena Zannoni <ezannoni@redhat.com>
-
- * minsyms.c (lookup_minimal_symbol_solib_trampoline): Remove
- second parameter, which is always null. Remove
- SOFUN_ADDRESS_MAYBE_MISSING ifdeffed code.
- * symtab.h (lookup_minimal_symbol_solib_trampoline): Update
- accordingly.
- * somsolib.c (som_solib_create_inferior_hook,
- som_solib_desire_dynamic_linker_symbols): Update callers.
- * hppa-tdep.c (hppa_fix_call_dummy): Ditto.
-
-2003-10-16 Kei Sakamoto <sakamoto.kei@renesas.com>
-
- * remote-m32r-sdi.c : New file, interface to m32r on-chip
- debug interface, SDI (Scalable Debug Interface).
- * NEWS: Mention m32r SDI protocol was supported.
- * Makefile.in (remote-m32r-sdi.o): Add build rule.
- * config/m32r/m32r.mt (TDEPFILES) : Add remote-m32r-sdi.o.
-
-2003-10-15 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-linux-tdep.c: Include gdbcore.h.
- (IA64_LINUX_SIGCONTEXT_OFFSET): Magic constant removed.
- (ia64_linux_sigcontext_register_addr): Find the address of the
- sigcontext area stored in the sigframe instead of using
- a magic offset constant.
-
-2003-10-15 Andrew Cagney <cagney@redhat.com>
-
- * remote.c (remote_search): Delete function.
- * target.h (target_search): Delete disabled macro.
- (struct target_ops): Delete disabled field "to_search".
-
-2003-10-14 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (frv_frame_this_id): Call inside_entry_func()
- instead of deprecated_inside_entry_file().
-
-2003-10-14 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c: Fix copy/paste hangover in comment.
- (sh_push_dummy_call_fpu): Accomodate double passing in little endian
- mode.
- (sh3e_sh4_extract_return_value): Ditto.
-
-2003-10-13 Richard Henderson <rth@redhat.com>
-
- * f-typeprint.c (f_type_print_base): Handle TYPE_CODE_REF.
- * f-valprint.c (f_val_print): Likewise. Tweak TYPE_CODE_PTR to
- match c_val_print a bit closer.
-
-2003-10-13 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (max_instrs_per_bundle, frv_instr_size): New constants.
- (frv_gdbarch_adjust_breakpoint_address): New function.
- (frv_gdbarch_init): Initialize ``gdbarch_adjust_breakpoint_address''
- method.
-
-2003-10-13 Kevin Buettner <kevinb@redhat.com>
-
- * breakpoint.h (struct breakpoint): Add new member
- ``requested_address''.
- * breakpoint.c (breakpoint_adjustment_warning)
- (adjust_breakpoint_address): New static functions.
- (print_it_typical): Issue warning if breakpoint's address is different
- from its requested address.
- (set_raw_breakpoint, set_longjmp_resume_breakpoint, watch_command_1)
- (breakpoint_re_set_one): Set breakpoint's
- ``requested_address'' field. Set ``address'' field to the
- result of calling adjust_breakpoint_address() on the requested
- address.
-
-2003-10-13 Kevin Buettner <kevinb@redhat.com>
-
- * gdbarch.sh (ADJUST_BREAKPOINT_ADDRESS): New method.
- * gdbarch.h, gdbarch.c: Regenerate.
-
-2003-10-11 Mark Kettenis <kettenis@gnu.org>
-
- * i386bsd-tdep.c (i386bsd_init_abi): Use ARRAY_SIZE to initialize
- TDEP->sc_num_regs.
-
- * i386fbsd-tdep.c: New file.
- (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
- i386fbsd_sc_reg_offset, i386fbsdaout_init_abi, i386fbsd_init_abi,
- i386fbsd4_sc_reg_offset, i386fbsd4_init_abi): Move here from
- i386bsd-tdep.c.
- (_initialize_i386fbsd_tdep): New function.
- (i386fbsd_r_reg_offset, i386fbsd4_r_reg_offset): New varibles.
- (i386fbsdaout_init_abi): Initialize TDEP->gregset_reg_offset,
- TDEP->gregset_num_regs, TDEP->sizeof_gregset and
- TDEP->sizeof_fpregset. Use ARRAY_SIZE to initialize
- TDEP->sc_num_regs.
- (i386fbsd4_init_abi): Initialize TDEP->gregset_reg_offset,
- TDEP->gregset_num_regs and TDEP->sizeof_gregset. Use ARRAY_SIZE
- to initialize TDEP->sc_num_regs.
- * i386bsd-tdep.c (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
- i386fbsd_sc_reg_offset, i386fbsdaout_init_abi, i386fbsd_init_abi,
- i386fbsd4_sc_reg_offset, i386fbsd4_init_abi): Remove.
- (_initialize_i386bsd_tdep): Don't register FreeBSD a.out and
- FreeBSD ELF OS/ABI's here.
- * Makefile.in (ALLDEPFILES): Add i386fbsd-tdep.c.
- (i386fbsd-tdep.o): New target.
- * config/i386/fbsd.mt (TDEPFILES): Add i386fbsd-tdep.o.
- * config/i386/fbsd64.mt (TDEPFILES): Add i386fbsd-tdep.o.
-
- * amd64fbsd-tdep.c (amd64fbsd_r_reg_offset): New variable.
- (amd64fbsd_init_abi): Set TDEP->gregset_reg_offset,
- TDEP->gregset_num_regs and TDEP->sizeof_gregset. Use ARRAY_SIZE
- in initialization of TDEP->sc_num_regs.
-
- * x86-64-tdep.c (x86_64_regset_from_core_section): New function.
- (x86_64_init_abi): Initialize regset_from_core_section if
- appropriate.
-
- * i386-tdep.c (i386_regset_from_core_section): New function.
- (i386_gdbarch_init): Initialize regset_from_core_section if
- appropriate.
- * i386-tdep.h (i386_regset_from_core_section): New declaration.
-
- * i386-tdep.h (struct regset): Declare opaque.
-
- * gdbarch.sh (regset_from_core_section): New method.
- (struct regset): Declare opaque.
- * gdbarch.c, gdbarch.h: Regenerated.
-
-2003-10-11 Alan Modra <amodra@bigpond.net.au>
-
- * hppa-tdep.c (hppa_in_solib_call_trampoline): Don't refer directly to
- _cooked_size and vma; Use bfd_section_size and bfd_get_section_vma.
- Correct test for pc within section.
-
-2003-10-11 Mark Kettenis <kettenis@gnu.org>
-
- * gdbarch.sh: Remove trailing whitepsace from comments.
-
-2003-10-08 Roland McGrath <roland@redhat.com>
-
- * gcore.c (make_mem_sec): Function removed, folded into ...
- (gcore_create_callback): ... here. To omit a section, clear its
- SEC_LOAD bit rather than zeroing its size.
- Omit read-only sections only if they correspond to a known disk file.
- (gcore_copy_callback): Ignore sections without SEC_LOAD flag set.
-
-2003-10-10 Michael Snyder <msnyder@redhat.com>
-
- * d10v-tdep.c: Fix typo in comment.
-
-2003-10-10 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (e500_store_return_value): Delete function.
- (e500_extract_return_value): Delete function.
- (rs6000_gdbarch_init): When SYSV, set "extract_return_value" and
- "restore_return_value" to "ppc_sysv_abi_extract_return_value" and
- "ppc_sysv_abi_restore_return_value" where applicable.
- * ppc-tdep.h: (ppc_sysv_abi_store_return_value): Declare.
- (ppc_sysv_abi_extract_return_value): Declare.
- (ppc_sysv_abi_broken_store_return_value): Declare.
- (ppc_sysv_abi_broken_extract_return_value): Declare.
- (ppc_sysv_abi_broken_use_struct_convention:) Delete declaration.
- * ppc-sysv-tdep.c (return_value_convention): Move definition to
- start of file.
- (do_ppc_sysv_return_value): New function.
- (ppc_sysv_abi_extract_return_value): New function.
- (ppc_sysv_abi_store_return_value): New function.
- (ppc_sysv_abi_broken_extract_return_value): New function.
- (ppc_sysv_abi_broken_store_return_value): New function.
- (ppc_sysv_abi_use_struct_convention): Call
- do_ppc_sysv_return_value.
-
-2003-10-10 J. Brobecker <brobecker@gnat.com>
-
- * blockframe.c (inside_main_func): No longer use symbol_lookup()
- to lookup the main function symbol.
-
-2003-10-10 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c (sh_treat_as_flt_p): New function to recognize float
- types correctly.
- (sh_push_dummy_call_fpu): Fix argument passing rules.
- (sh3e_sh4_extract_return_value): Call sh_treat_as_flt_p to recognize
- float types.
- (sh3e_sh4_store_return_value): Ditto.
-
-2003-10-10 Elena Zannoni <ezannoni@redhat.com>
-
- * sh-tdep.c (sh_use_struct_convention): Clarify one case in
- comment.
-
-2003-10-10 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c (sh_use_struct_convention): Clean up to have a
- more readable code. Accomodate passing of bitfields.
-
-2003-10-10 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (ppc-sysv-tdep.o): Add $(gdb_assert_h).
- * rs6000-tdep.c (rs6000_gdbarch_init): When 64 bit SysV ABI, set
- push_dummy_call to ppc64_sysv_abi_push_dummy_call.
- * ppc-sysv-tdep.c: Include "gdb_assert.h".
- (ppc64_sysv_abi_push_dummy_call): New function.
- (ppc64_sysv_abi_broken_push_dummy_call): New function.
- * ppc-tdep.h (ppc64_sysv_abi_push_dummy_call): Declare.
- (ppc64_sysv_abi_broken_push_dummy_call): Declare.
-
-2003-10-10 Kei Sakamoto <sakamoto.kei@renesas.com>
-
- * NEWS: Replace "Hitachi" and "Mitsubishi" with "Renesas".
- * README: Ditto.
- * d10v-tdep.c: Ditto.
- * h8300-tdep.c: Ditto.
- * remote-e7000.c: Ditto.
- * remote-hms.c: Ditto.
- * ser-e7kpc.c: Ditto.
- * sh-stub.c: Ditto.
- * sh-tdep.c: Ditto.
- * sh-tdep.h: Ditto.
- * sh3-rom.c: Ditto.
- * sh64-tdep.c: Ditto.
- * top.c: Ditto.
- * wince.c: Ditto.
- * config/d10v/d10v.mt: Ditto.
- * config/sh/embed.mt: Ditto.
- * config/sh/linux.mt: Ditto.
- * config/sh/tm-linux.h: Ditto.
- * config/sh/tm-sh.h: Ditto.
- * config/sh/wince.mt: Ditto.
-
-2003-10-09 Andrew Cagney <cagney@redhat.com>
-
- * ppc-tdep.h (struct type): Declare opaque.
- * x86-64-tdep.h (struct regcache): Declare opaque.
- * sh-tdep.c (sh_do_fp_register): Delete "register" attribute, fix
- coding style.
-
-2003-10-09 Andrew Cagney <cagney@redhat.com>
-
- Changes from 2003-09-09 Jimi Xenidis <jimix@watson.ibm.com>:
- * config/rs6000/tm-rs6000.h (SOFTWARE_SINGLE_STEP): Delete macro.
- (SOFTWARE_SINGLE_STEP_P): Ditto.
- * config/powerpc/tm-ppc-eabi.h (SOFTWARE_SINGLE_STEP_P): Ditto.
- * config/powerpc/tm-linux.h (SOFTWARE_SINGLE_STEP): Ditto.
- (SOFTWARE_SINGLE_STEP_P): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): When AIX, set
- software_single_step to rs6000_software_single_step.
-
-2003-10-09 Andrew Cagney <cagney@redhat.com>
-
- * MAINTAINERS: Mark m32r-elf as buildable with -Werror.
-
-2003-10-09 Michael Snyder <msnyder@redhat.com>
-
- * frame.h: Fix typo in comment.
- * dummy-frame.c: Fix typo in comment.
- * d10v-tdep.c: Random whitespace/comment tweaks.
-
-2003-10-09 Elena Zannoni <ezannoni@redhat.com>
-
- * sh-tdep.c (sh_gdbarch_init): Delete setting of push_dummy_code.
- (sh_push_dummy_code): Delete function, it's only used for dummy calls
- on stack.
-
- Based on input by Stephen Clarke (stephen.clarke@superh.com):
- * sh-tdep.c (sh_use_struct_convention): Add comment explaining ABI
- in detail.
-
-2003-10-09 Daniel Jacobowitz <drow@mvista.com>
-
- * remote-mips.c (mips_initialize): Remove unneeded call to
- get_selected_frame. Suggested by Atsushi Nemoto <anemo@mba.ocn.ne.jp>.
-
-2003-10-09 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2expr.c (execute_stack_op): Don't treat the frame base as
- a memory pointer.
-
-2003-10-08 Jeff Johnston <jjohnstn@redhat.com>
-
- * lin-lwp.c (stop_and_resume_callback): Set the resumed flag
- for any lwp we resume.
- (running_callback): Add lwps that have pending status events
- against them to be considered running.
-
-2003-10-08 Kei Sakamoto <sakamoto.kei@renesas.com>
-
- * m32r-tdep.c : Include "dis-asm.h".
- * Makefile.in (m32r-tdep.o): Update dependencies.
-
-2003-10-06 J. Brobecker <brobecker@gnat.com>
-
- * completer.h (get_gdb_completer_word_break_characters): Delete.
- * completer.c: include language.h.
- (gdb_completer_word_break_characters): Delete.
- (get_gdb_completer_word_break_characters): Delete.
- (location_completer): Use the word break characters of the current
- language.
- (complete_line): Likewise.
- (line_completion_function): Likewise.
- (skip_quoted_chars): Likewise.
- * Makefile.in (completer.o): Add dependency on language.h.
- * top.c (init_main): Set the readline word break characters
- to GDB's default word break characters.
-
-2003-10-06 J. Brobecker <brobecker@gnat.com>
-
- * language.h (language_defn): new field, la_word_break_characters.
- * language.c (unknown_language_defn): Set new field to
- default_word_break_characters.
- (auto_language_defn): Likewise.
- (local_language_defn): Likewise.
- * ada-lang.c (ada_language_defn): Likewise.
- * c-lang.c (c_language_defn): Likewise.
- (cplus_language_defn): Likewise.
- (asm_language_defn): Likewise.
- (minimal_language_defn): Likewise.
- * f-lang.c (f_language_defn): Likewise.
- * jv-lang.c (java_language_defn): Likewise.
- * m2-lang.c (m2_language_defn): Likewise.
- * objc-lang.c (objc_language_defn): Likewise.
- * p-lang.c (pascal_language_defn): Likewise.
- * scm-lang.c (scm_language_defn): Likewise.
-
-2003-10-06 Andrew Cagney <cagney@redhat.com>
-
- * ppc-sysv-tdep.c: Re-indent.
-
-2003-10-06 J. Brobecker <brobecker@gnat.com>
-
- * language.h (default_word_break_characters): Add prototype.
- * language.c (default_word_break_characters): New function.
-
-2003-10-06 Andreas Schwab <schwab@suse.de>
-
- * i386-tdep.c (i386_analyze_frame_setup): Also handle xorl/subl
- with %eax.
-
-2003-10-06 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (ALLDEPFILES): Remove "z8k-tdep.c" and
- "h8500-tdep.c".
- (z8k-tdep.o): Delete custom build rule.
-
-2003-10-06 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in: Update all dependencies.
-
- * MAINTAINERS: Mention that h8500, mn10200, and z8k were deleted.
- No longer list PA as as obsolete candidate. List m32r as
- broken instead of obsolete.
-
- * config/nm-m3.h, config/h8500/h8500.mt: Delete obsolete files.
- * config/h8500/tm-h8500.h, config/i386/nm-ptx4.h: Ditto.
- * config/i386/nm-symmetry.h, config/i386/ptx.mh: Ditto.
- * config/i386/ptx.mt, config/i386/ptx4.mh: Ditto.
- * config/i386/ptx4.mt, config/i386/symmetry.mh: Ditto.
- * config/i386/symmetry.mt, config/i386/tm-ptx.h: Ditto.
- * config/i386/tm-ptx4.h, config/i386/tm-symmetry.h: Ditto.
- * config/i386/xm-ptx.h, config/i386/xm-ptx4.h: Ditto.
- * config/i386/xm-symmetry.h, config/mips/mipsm3.mh: Ditto.
- * config/mips/mipsm3.mt, config/mips/tm-mipsm3.h: Ditto.
- * config/mips/xm-mipsm3.h, config/mn10200/mn10200.mt: Ditto.
- * config/mn10200/tm-mn10200.h, config/pa/hppabsd.mh: Ditto.
- * config/pa/hppabsd.mt, config/pa/hppaosf.mh: Ditto.
- * config/pa/hppaosf.mt, config/pa/hppapro.mt: Ditto.
- * config/pa/nm-hppab.h, config/pa/nm-hppao.h: Ditto.
- * config/pa/tm-hppab.h, config/pa/tm-hppao.h: Ditto.
- * config/pa/tm-pro.h, config/pa/xm-hppab.h: Ditto.
- * config/pa/xm-pa.h, config/sparc/sparclet.mt: Ditto.
- * config/sparc/sparclite.mt, config/sparc/tm-sparclet.h: Ditto.
- * config/sparc/tm-sparclite.h, config/z8k/tm-z8k.h: Ditto.
- * config/z8k/z8k.mt: Ditto.
-
- * NEWS: Mention that z8k-zilog-none, z8ksim, mn10200-*-*,
- h8500hms, hppa*-*-bsd*, hppa*-*-osf*, hppa*-*-pro*,
- mips*-*-mach3*, i[3456]86-sequent-sysv4*, i[3456]86-sequent-sysv*,
- i[3456]86-sequent-bsd*, sparclet-*-*, sparclite-fujitsu-none, and
- sparclite were removed.
- * configure.host, configure.tgt: Remove corresponding tuples.
-
- * breakpoint.c, breakpoint.h: Remove obsolete code.
- * buildsym.c, dbxread.c, gdbtypes.c, mdebugread.c: Ditto.
- * monitor.c, sparc-tdep.c, stabsread.c: Ditto.
- * stabsread.h, xcoffread.c: Ditto.
-
- * z8k-tdep.c, symm-tdep.c, symm-nat.c: Delete obsolete file.
- * sparclet-stub.c, sparclet-rom.c: Delete obsolete file.
- * sparcl-tdep.c, sparcl-stub.c, h8500-tdep.c: Delete obsolete file.
- * m3-nat.c, mipsm3-nat.c, mn10200-tdep.c: Delete obsolete file.
-
-2003-10-06 David Lecomber <dsl@sources.redhat.com>
-
- * f-valprint.c: Reformatting
-
-2003-10-06 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c: Remove duplicate comment.
-
- * x86-64-tdep.c (x86_64_store_return_value): Don't use
- DEPRECATED_REGISTER_RAW_SIZE. Use symbolic names for register
- names for return values. This fixes a bug since we looked at %rbx
- instead of %rdx.
-
-2003-10-05 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c: Include "regset.h".
-
- * i386-tdep.h (struct gdbarch_tdep): Add members gregset,
- gregset_reg_offset, gregset_num_regs, sizeof_gregset, fpregset,
- sizeof_fpregset.
- * i386-tdep.c: Include "regset.h".
- (i386_supply_gregset): New function.
- (i386_supply_fpregset): New function.
- (i386_gdbarch_init): Initialze register set-related members of
- TDEP.
- * x86-64-tdep.c (x86_64_supply_fpregset): New function.
- (x86_64_init_abi): Initialize TDEP->sizeof_fpregset.
-
-2003-10-03 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (rs6000_gdbarch_init): When the 64 bit SysV ABI,
- set extract_return_value, store_return_value and
- use_struct_convention to ppc64_sysv_abi_extract_return_value,
- ppc64_sysv_abi_store_return_value and
- ppc64_sysv_abi_use_struct_convention.
- * ppc-tdep.h (ppc64_sysv_abi_extract_return_value): Declare.
- (ppc64_sysv_abi_store_return_value): Declare.
- (ppc64_sysv_abi_use_struct_convention): Declare.
- * ppc-sysv-tdep.c (enum return_value_convention): Define.
- (ppc64_sysv_abi_extract_return_value): New function.
- (ppc64_sysv_abi_store_return_value): New function.
- (ppc64_sysv_abi_use_struct_convention): New function.
- (ppc64_sysv_abi_return_value): New function.
-
-2003-10-03 Andrew Cagney <cagney@redhat.com>
-
- * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): Only
- convert a descriptor to a function when it's in the ".opd"
- section.
-
-2003-10-03 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c (sh_push_dummy_call_fpu): Initialize flt_argreg and
- reg_size to keep GCC silent.
-
-2003-10-03 Corinna Vinschen <vinschen@redhat.com>
-
- * dwarf2-frame.c (struct comp_unit): Add tbase member to store
- base for DW_EH_PE_textrel encodings.
- (read_encoded_value): Add a DW_EH_PE_textrel case.
- (dwarf2_build_frame_info): Set unit.tbase to beginning of text
- section.
-
-2003-10-03 Mark Kettenis <kettenis@gnu.org>
-
- * dwarf2-frame.c (dwarf2_build_frame_info): Fix comment.
-
-2003-10-02 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_REGISTER_RAW_SIZE): Rename
- REGISTER_RAW_SIZE.
- * gdbarch.h, gdbarch.c: Re-generate.
- * aix-thread.c, alpha-tdep.h, arm-tdep.c, core-sol2.c: Update.
- * cris-tdep.c, dve3900-rom.c, findvar.c, frame.c: Update.
- * hppa-tdep.c, hppab-nat.c, hppah-nat.c, hppam3-nat.c: Update.
- * hpux-thread.c, i386gnu-nat.c, ia64-aix-nat.c: Update.
- * ia64-linux-nat.c, ia64-tdep.c, infcmd.c, infptrace.c: Update.
- * infrun.c, irix5-nat.c, lynx-nat.c, mips-linux-tdep.c: Update.
- * mips-nat.c, mips-tdep.c, mipsv4-nat.c, mn10300-tdep.c: Update.
- * monitor.c, ns32k-tdep.c, ppc-linux-nat.c, regcache.c: Update.
- * remote-e7000.c, remote-mips.c, remote-sim.c: Update.
- * remote-vxmips.c, remote-vxsparc.c, remote.c: Update.
- * rom68k-rom.c, rs6000-nat.c, rs6000-tdep.c, s390-tdep.c: Update.
- * sh64-tdep.c, sparc-nat.c, sparc-tdep.c, stack.c: Update.
- * target.c, tracepoint.c, v850-tdep.c, v850ice.c, valops.c: Update.
- * vax-tdep.c, vax-tdep.h, x86-64-tdep.c, xstormy16-tdep.c: Update.
- * config/m68k/tm-delta68.h, config/m68k/tm-vx68.h: Update.
- * config/sparc/tm-sparc.h, config/sparc/tm-sparclynx.h: Update.
-
-2003-10-02 Jim Blandy <jimb@redhat.com>
-
- * dwarf2read.c (struct die_info): Doc fix.
-
-2003-10-02 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c: Running thru gdb_indent.sh.
-
-2003-10-02 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c (sh_justify_value_in_reg): New function.
- (sh_stack_allocsize): Ditto.
- (flt_argreg_array): New array used for floating point argument
- passing.
- (sh_init_flt_argreg): New function.
- (sh_next_flt_argreg): Ditto.
- (sh_push_dummy_call_fpu): Simplify. Rename "odd_sized_struct" to
- "pass_on_stack". Use new helper functions. Accomodate Renesas ABI.
- Fix argument passing strategy.
- (sh_push_dummy_call_nofpu): Ditto.
-
-2003-10-01 Andrew Cagney <cagney@redhat.com>
-
- * value.h (register_value_being_returned): Declare. Replace
- "value_being_returned".
- * infcall.c (call_function_by_hand): Use
- register_value_being_returned.
- * infcmd.c (print_return_value): Call
- "register_value_being_returned", handle struct return locally.
- * values.c (register_value_being_returned): New function. Replace
- "value_being_returned".
-
-2003-09-30 Elena Zannoni <ezannoni@redhat.com>
-
- * linux-proc.c (linux_do_registers): New function.
- (linux_make_note_section): Use linux_do_registers in case of
- single threaded inferior programs.
-
-2003-10-01 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): When STRUCT_RETURN, always
- use STRUCT_ADDR. When not using "struct return convention", pass
- "0" to "value_being_returned". Add FIXMEs.
- * infcmd.c (print_return_value): Pass an explicit 0/1 to
- value_being_returned. Add comments.
- * values.c (value_being_returned): Add fixme.
- * hppa-tdep.c (hppa_extract_struct_value_address): Add FIXME.
- (hppa_value_returned_from_stack): Add FIXME.
-
-2003-09-30 David Carlton <carlton@kealia.com>
-
- * dwarf2read.c (struct die_info): Add 'parent' field; replace
- 'has_children' and 'next' by 'child' and 'sibling'.
- (read_comp_unit): Rework algorithm, breaking body into
- read_die_and_children and read_die_and_siblings.
- (read_die_and_children, read_die_and_siblings): New.
- (read_full_die): Add 'has_children' argument; set it instead of
- the die's 'has_children' field. Minor formatting cleanup.
- (free_die_list): Use die->child and die->sibling instead of
- die->next.
- (dump_die_list): Ditto.
- (sibling_die): Use die->sibling.
- (psymtab_to_symtab_1): Use die's 'child' field in place of its
- 'has_children' and 'next' fields.
- (process_die, read_file_scope, read_func_scope)
- (read_lexical_block_scope, read_structure_scope)
- (read_enumeration, read_array_type, read_common_block)
- (read_namespace, read_subroutine_type, dump_die): Ditto.
-
-2003-09-30 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (rs6000_gdbarch_init): Set the PowerOpen red zone
- to 224, not 220.
-
-2003-09-30 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_REGISTER_VIRTUAL_SIZE): Rename
- REGISTER_VIRTUAL_SIZE.
- * gdbarch.h, gdbarch.c: Regenerate.
- * vax-tdep.h, sparc-tdep.c, regcache.h: Update.
- * regcache.c, mn10300-tdep.c, mips-tdep.c: Update.
- * infcmd.c, frame.c, findvar.c, cris-tdep.c: Update.
-
-2003-09-29 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_REGISTER_VIRTUAL_TYPE): Rename
- REGISTER_VIRTUAL_TYPE.
- * gdbarch.h, gdbarch.c: Regenerate.
- * arch-utils.c, hppa-tdep.c, regcache.c, regcache.h: Update.
- * sh64-tdep.c, sparc-tdep.c: Update.
-
- * remote-vxsparc.c (vx_read_register): Replace bzero with memset.
- * remote-vxmips.c (vx_read_register): Ditto.
- * remote-vx68.c (vx_read_register): Ditto.
- * gnu-nat.c (inf_validate_procs): Ditto.
-
-2003-09-29 J. Brobecker <brobecker@gnat.com>
-
- * infcall.c (call_function_by_hand): Fix build failure
- introduced in the previous change to this file.
-
-2003-09-29 Andrew Cagney <cagney@redhat.com>
-
- * NEWS: Mention Objective-C.
-
-2003-09-29 Jerome Guitton <guitton@act-europe.fr>
-
- * arm-tdep.c (arm_make_prologue_cache): Use trad_frame_addr_p to
- test if the register has been saved on the stack.
- (arm_scan_prologue_cache): When analysing the instruction
- "str lr, [sp, #-4]", save the address where lr has been stored.
-
-2003-09-28 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (frame_read_unsigned_register): Delete function.
- * frame.h (frame_read_unsigned_register): Delete declaration.
- * sparc-tdep.c (sparc_init_extra_frame_info): Use
- get_frame_register_unsigned.
- (sparc_frame_saved_pc, sparc_pop_frame): Ditto.
- * m68hc11-tdep.c (m68hc11_print_register): Ditto.
- * d10v-tdep.c (d10v_print_registers_info): Ditto.
-
- * frame.h (frame_read_register): Delete declaration.
- * frame.c (frame_read_register): Delete function.
- * arch-utils.c (legacy_register_to_value): Use get_frame_register.
- * sparc-tdep.c (sparc_fetch_pointer_argument): Ditto.
- * rs6000-tdep.c (rs6000_fetch_pointer_argument): Ditto.
- * mips-tdep.c (mips_register_to_value): Ditto.
- * hppa-tdep.c (hppa_fetch_pointer_argument): Ditto.
- * d10v-tdep.c (d10v_print_registers_info): Ditto.
-
- * frame.c (frame_read_signed_register): Delete function.
- (frame_read_unsigned_register): Update comments.
- * frame.h (frame_read_signed_register): Delete declaration.
- * h8300-tdep.c (h8300_print_register): Use
- get_frame_register_signed.
- * m68hc11-tdep.c (m68hc11_print_register): Ditto.
-
- * config/pa/tm-hppa.h (DEPRECATED_VALUE_RETURNED_FROM_STACK):
- Rename VALUE_RETURNED_FROM_STACK.
- * infcmd.c (print_return_value): Update.
- * infcall.c (call_function_by_hand): Update.
-
-2003-09-28 Mark Kettenis <kettenis@gnu.org>
-
- * i387-tdep.c (i387_supply_fsave, i387_supply_fxsave): Add
- regcache argument and reverse the order of the other two
- arguments. Remove local regcache variable. Determine
- architecture from REGCACHE. Update comments.
- * x86-64-tdep.c (x86_64_supply_fxsave): Add regcache argument and
- reverse the order of the other two arguments. Remove local
- regcache variable. Determine architecture from REGCACHE. Update
- comments.
- * i387-tdep.h (i387_supply_fsave, i387_supply_fxsave): Adjust
- prototypes. Update comments.
- * x86-64-tdep.c (x86_64_supply_fxsave): Adjust prototype. Adjust
- comment.
- * amd64fbsd-nat.c (supply_fpregset, fetch_inferior_registers):
- Update.
- * go32-nat.c (fetch_register, go32_fetch_registers): Update.
- * i386-interix-nat.c (supply_fpregset): Update.
- * i386-linux-nat.c (supply_fpregset, supply_fpxregset): Update.
- * i386-nto-tdep.c (i386nto_supply_fpregset): Update.
- * i386gnu-nat.c (fetch_fpregs, supply_fpregset): Update.
- * i386bsd-nat.c (supply_fpregset, fetch_inferior_registers): Update.
- * i386nbsd-tdep.c (fetch_core_registers, fetch_elfcore_registers):
- Update.
- * i386obsd-tdep.c (fetch_core_registers): Update.
- * i386v4-nat.c (supply_fpregset): Update.
- * x86-64-linux-nat.c (supply_fpregset): Update.
- * x86-64-linux-tdep.c (fetch_core_registers): Update.
-
-2003-09-27 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.h: Put opaque declarations in alphabetical
- order. Remove spurious whitespace.
- (struct gdbarch_tdep): add st0_regnum and mm0_regnum members.
- (i386_sse_regnum_p, i386_mxcsr_regnum_p): Remove prototypes.
- * i386-tdep.c (MM0_REGNUM): Remove define.
- (i386_mmx_regnum_p): Add gdbarch argument.
- (i386_sse_regnum_p, i386_mxcsr_regnum_p): Add gdbarch argument.
- Rewrite using new macro definitions for FPU/SSE registers.
- (i386_fp_regnum_p, i386_fpc_regnum_p): Rewrite using new macro
- definitions from i387-tdep.h.
- (i386_register_name): Update.
- (i386_stab_reg_to_regnum, i386_dwarf_reg_to_regnum): Update to use
- new macro definitions for FPU/SSE registers.
- (i386_extract_return_value): Determine whether floating-point
- registers are present by examining REGCACHE's architecture.
- (i386_store_return_value): Likewise. Use I386_MAX_REGISTER_SIZE
- instead of FPU_REG_RAW_SIZE. Use new macro definitions for
- FPU/SSE registers.
- (i386_register_type): Update.
- (i386_mmx_regnum_to_fp_regnum): Rewrite using new macro
- definitions for FPU registers. Use REGCACHE's architecture to
- determine the appropriate register numbers.
- (i386_pseudo_register_read, i386_pseudo_register_write,
- i386_register_reggroup_p): Update.
- (i386_gdbarch_init): Initialize TDEP->st0_regnum and
- TDEP->mm0_regnum.
- * i387-tdep.h (I387_FCTRL_REGNUM, I387_FSTAT_REGNUM,
- I387_FTAG_REGNUM, I387_FISEG_REGNUM, I387_FIOFF_REGNUM,
- I387_FOSEG_REGNUM, I387_FOOFF_REGNUM, I387_FOP_REGNUM,
- I387_XMM0_REGNUM, I387_MXCSR_REGNUM): New defines.
- (i387_supply_fsave, i387_fill_fsave, i387_supply_fxsave,
- i387_fill_fxsave): Change type of fsave/fxsave argument from `char
- *' to `void *'.
- * i387-tdep.c (i387_print_float_info, fsave_offset, FSAVE_ADDR,
- i387_supply_fsave, i387_fill_fsave, fxsave_offset, FXSAVE_ADDR,
- i387_supply_fxsave, i387_fill_fxsave): Update to use new macro
- definitions for FPU/SSE registers.
- (FXSAVE_MXCSR_ADDR): New define.
- * x86-64-tdep.c (x86_64_init_abi): Override TDEP->st0_regnum and
- TDEP->mm0_regnum.
- (I387_FISEG_REGNUM, I387_FOSEG_REGNUM): Remove defines.
- (I387_ST0_REGNUM): Define.
-
- * regcache.h (get_regcache_arch): New prototype.
- * regcache.c (get_regcache_arch): New function.
-
- * x86-64-tdep.c (x86_64_store_return_value): Remove spurious
- whitespace.
-
- * i386-tdep.c (i386_num_register_names, i386_num_mmx_regs):
- Initialize using ARRAY_SIZE.
-
-2003-09-27 Andrew Cagney <cagney@redhat.com>
-
- * arch-utils.c (deprecated_init_frame_pc_default): Rename
- "init_frame_pc_default".
- * arch-utils.h (deprecated_init_frame_pc_default): Update.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sh64-tdep.c (sh64_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * config/pa/tm-hppa.h (DEPRECATED_INIT_FRAME_PC): Update.
-
-2003-09-26 Mark Kettenis <kettenis@gnu.org>
-
- * regset.h: New file.
- * Makefile.in (regset_h): Add.
-
-2003-09-25 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (deprecated_frame_saved_regs): Rename
- get_frame_saved_regs.
- * cris-tdep.c, frame.c, h8300-tdep.c, hppa-tdep.c: Update.
- * mcore-tdep.c, mips-tdep.c, mn10300-tdep.c: Update.
- * ns32k-tdep.c, ppc-linux-tdep.c, rs6000-tdep.c: Update.
- * s390-tdep.c, sh64-tdep.c, stack.c: Update.
- * v850-tdep.c, vax-tdep.c, xstormy16-tdep.c: Update.
-
-2003-09-25 Andrew Cagney <cagney@redhat.com>
-
- * NEWS: Mention the new backtrace mechanism, DWARF 2 CFI, hosted
- file I/O, multi-arch, TLS and NPTL, DWARF 2 Location Expressions,
- and Java.
- * PROBLEMS: Mention that mips*-*-*, powerpc*-*-*, sparc*-*-* and
- arm*-*-* do not use the new frame code.
-
-2003-09-25 David Carlton <carlton@kealia.com>
-
- * c-exp.y: Remove 'register' declarations.
- * f-exp.y, jv-exp.y, m2-exp.y, objc-exp.y, p-exp.y: Ditto.
-
-2003-09-25 David Carlton <carlton@kealia.com>
-
- * c-exp.y: Include cp-support.h. Add qualified_type.
- (yylex): Delete nested type hack; add comments.
- * cp-namespace.c (cp_lookup_nested_type): New function.
- * cp-support.h: Declare cp_lookup_nested_type.
- * eval.c (evaluate_subexp_standard): Call value_aggregate_elt
- instead of value_struct_elt_for_reference.
- * valops.c: Include cp-support.h.
- (value_aggregate_elt): New function.
- (value_namespace_elt): Ditto.
- (value_struct_elt_for_reference): Make static.
- * value.h: Delete declaration of value_struct_elt_for_reference;
- add declaration for value_aggregate_elt.
- * Makefile.in (c-exp.tab.o): Depend on $(cp_support_h).
- (valops.o): Ditto.
-
-2003-09-25 Daniel Jacobowitz <drow@mvista.com>
-
- * stack.c: Include "reggroups.h".
- (frame_info): Only display registers in all_reggroup.
- * Makefile.in (stack.o): Update dependencies.
-
-2003-09-25 Jerome Guitton <guitton@act-europe.fr>
-
- * arm-tdep.c (arm_skip_prologue): Handle "sub ip, sp #n" and
- "add ip, sp #n" in the prologue.
- (arm_scan_prologue): Ditto.
-
-2003-09-25 Jerome Guitton <guitton@act-europe.fr>
-
- * MAINTAINERS (write after approval): Add myself.
-
-2003-09-25 Andreas Schwab <schwab@suse.de>
-
- * m68k-tdep.c: Include "dwarf2-frame.h".
- (m68k_gdbarch_init): Add the DWARF CFI frame unwinder.
- * Makefile.in (m68k-tdep.o): Update dependencies.
-
-2003-09-25 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c (struct frame_extra_info): Remove.
- (struct sh_frame_cache): New structure.
- (GET_SOURCE_REG): New macro extracting source register of an opcode.
- (GET_TARGET_REG): Ditto but target register.
- (GET_PUSHED_REG): Remove.
- (IS_MOV_ARG_TO_REG): New macro.
- (IS_MOV_ARG_TO_IND_R14): New macro.
- (IS_MOV_ARG_TO_IND_R14_WITH_DISP): New macro.
- (IS_MOVW_PCREL_TO_REG): New macro.
- (IS_MOVL_PCREL_TO_REG): New macro.
- (IS_SUB_REG_FROM_SP): New macro.
- (IS_ARG_MOV): Remove.
- (IS_MOV_TO_R14): Remove.
- (IS_RESTORE_FP): New macro.
- (IS_RTS): New macro.
- (IS_LDS): New macro.
- (IS_MOV_FP_SP): New macro.
- (IS_ADD_REG_TO_FP): New macro.
- (IS_ADD_IMM_FP): New macro.
- (sh_skip_prologue_hard_way): Remove.
- (sh_saved_pc_after_call): Remove.
- (sh_frame_chain): Remove.
- (sh_find_callers_reg): Remove.
- (sh_nofp_frame_init_saved_regs): Remove.
- (sh_fp_frame_init_saved_regs): Remove.
- (sh_init_extra_frame_info): Remove.
- (sh_analyze_prologue): New function.
- (sh_skip_prologue): Remove deprecated code. Rely on new function
- sh_analyze_prologue when after_prologue fails.
- (sh_frame_saved_pc): Remove.
- (sh_alloc_frame_cache): New function.
- (sh_frame_cache): Ditto.
- (sh_frame_prev_register): Ditto.
- (sh_frame_this_id): Ditto.
- (sh_frame_unwind): New structure defining the heuristic frame
- sniffer interface.
- (sh_frame_sniffer): New function.
- (sh_unwind_sp): Ditto.
- (sh_unwind_pc): Ditto.
- (sh_unwind_dummy_id): Ditto.
- (sh_frame_base_address): Ditto.
- (sh_frame_base): New structure defining new frame base code.
- (sh_in_function_epilogue_p): New function.
- (sh_gdbarch_init): Restructure and simplify to eliminate deprecated
- code and to call all new code instead. Initialize dwarf2 and
- heuristic frame sniffer.
-
-2003-09-24 Paul N. Hilfinger <hilfingr@nile.gnat.com>
-
- * parser-defs.h (struct exp_descriptor): New definition, containing
- language-specific info for printing, prefixifying, dumping, and
- evaluating expressions.
- (exp_descriptor_standard): Declare new variable.
- (print_subexp): Make global and declare here (from expprint.c).
- (dump_subexp): Ditto.
- (dump_subexp_body_standard): Declare.
- (operator_length_standard): Declare.
- (op_name_standard): Declare.
- (print_subexp): Declare.
- (print_subexp_standard): Declare.
-
- * language.h (struct language_defn): Add la_exp_desc field to hold
- pointer to table for language-specific operators.
- Remove evaluate_exp field, which is now in struct exp_descriptor.
-
- * parse.c (operator_length): Move most code to new
- operator_length_standard function. Use language-specific information.
- (operator_length_standard): New function taking most code from
- operator_length.
- (exp_descriptor_standard): New constant.
-
- * expression.h (enum exp_opcode): Add definitions of OP_EXTENDED0
- and OP_EXTENDED_LAST.
-
- * expprint.c (print_subexp): Use language-specific print_subexp.
- Make global; remove static declaration.
- Move most code to print_subexp_standard.
- (print_subexp_standard): New function, containing code formerly in
- print_subexp.
- (op_name): Add expression to argument signature.
- Use langauge-specific op_name.
- Move most code to op_name_standard.
- (op_name_standard): New function, containing code formerly in op_name.
- (dump_subexp): Use new version of op_name function.
- Use language-specific dump_subexp_body, and move most existing code to
- dump_subexp_body_standard.
- (dump_raw_expression): Use new op_name interface.
- (dump_subexp_body): Move most code to dump_subexp_body_standard.
- (dump_subexp_body_standard): New function, containing code formerly
- in dump_subexp_body.
-
- * language.c (unknown_language): Add default la_exp_desc field and
- remove evaluate_exp field.
- (auto_language): Ditto.
- (local_language): Ditto.
- * f-lang.c (f_language_defn): Ditto.
- * c-lang.c (c_language_defn): Ditto.
- (cplus_language_defn): Ditto.
- (asm_language_defn): Ditto.
- (minimal_language_defn): Ditto.
- * p-lang.c (pascal_language_defn): Ditto.
- * m2-lang.c (m2_language_defn): Ditto.
- * objc-lang.c (objc_language_defn): Ditto.
-
- * jv-lang.c (exp_descriptor_java): New variable, containing
- Java-specific expression evaluator.
- (java_language_defn): Add la_exp_desc field and remove evaluate_exp
- field.
- * scm-lang.c (exp_descriptor_scm): New variable, containing
- Scheme-specific expression evaluator.
- (scm_language_defn): Add la_exp_desc field and remove evaluate_exp
- field.
- * objc-lang.c (print_object_command): Take evaluate_exp from the
- la_exp_desc field.
-
- * Makefile.in (eval.o): Add dependency on parser-defs.h.
-
- * eval.c: Include parser-defs.h for the full declaration of
- la_exp_desc's type.
- (evaluate_subexp): Get evaluate_exp out of la_exp_desc field.
-
-2003-09-23 Paul N. Hilfinger <hilfingr@nile.gnat.com>
-
- * parser-defs.h (operator_length): Declare.
-
- * parse.c (length_of_subexp): Use operator_length to get operator
- lengths and arities for operators.
- Move most code to new operator_length function.
- (operator_length): New function absorbing most code from
- length_of_subexp.
- (prefixify_subexp): Remove large case and use operator_length instead.
- (parse_exp_1): Use renamings:
- dump_prefix_expression => dump_raw_expression and
- dump_postfix_expression => dump_prefix_expression.
-
- * expression.h (dump_prefix_expression): Rename to ...
- (dump_raw_expression): New name.
- (dump_postfix_expression): Rename to ...
- (dump_prefix_expression): New name.
-
- * expprint.c (dump_subexp): Make global. Add comment.
- Move most existing code to dump_subexp_body.
- (dump_subexp_body): New function.
- (dump_prefix_expression): Rename to dump_raw_expression.
- Remove attempt to print the expression via print_expression: it can't
- work before the expression is prefixified.
- (dump_raw_expression): Renamed from dump_prefix_expression.
- (dump_postfix_expression): Rename to dump_prefix_expression, since
- that's what it does.
- Remove 'note' parameter, since this routine must be used on
- prefixified expression.
- (dump_prefix_expression): Renamed from dump_postfix_expression.
-
-2003-09-22 Jim Blandy <jimb@redhat.com>
-
- * dwarf2read.c (read_array_type): When building the type for an
- array of unspecified length, make sure to choose the upper bound
- so that the array's total length comes out to be zero --- that's
- how we represent such arrays.
-
-2003-09-22 Michael Chastain <mec@shout.net>
-
- * MAINTAINERS: Rename gdb.c++ to gdb.cp.
-
-2003-09-22 Jeff Johnston <jjohnstn@redhat.com>
-
- * top.c (quit_force): Fix indirect call to quit_target so
- a struct qt_args pointer is passed.
-
-2003-09-22 Andrew Cagney <cagney@redhat.com>
-
- * arch-utils.h (init_frame_pc_noop): Delete declaration.
- * arch-utils.c (init_frame_pc_noop): Delete function.
- * mn10300-tdep.c (mn10300_gdbarch_init): Do not set
- "init_frame_pc".
- * mips-tdep.c (mips_gdbarch_init): Ditto.
- * i386-interix-tdep.c (i386_interix_init_abi): Ditto.
- * config/sparc/tm-sparc.h (init_frame_pc_noop): Delete
- declaration.
- (DEPRECATED_INIT_FRAME_PC): Delete macro.
- * config/rs6000/tm-rs6000.h (init_frame_pc_noop): Delete
- declaration.
- (DEPRECATED_INIT_FRAME_PC): Delete macro.
-
-2003-09-22 Anthony Green <green@redhat.com>
-
- * monitor.c (monitor_expect): Delete unused conflicting targ_ops
- declaration.
-
-2003-09-20 Andrew Cagney <cagney@redhat.com>
-
- * breakpoint.c: Eliminate ARGSUSED.
- * buildsym.c, cli/cli-cmds.c, cli/cli-script.c: Ditto.
- * coffread.c, corelow.c, dwarf2read.c, event-top.c: Ditto.
- * exec.c, gcore.c, hpux-thread.c, infcmd.c, inflow.c: Ditto.
- * infrun.c, inftarg.c, maint.c, ocd.c, printcmd.c: Ditto.
- * procfs.c, regcache.c, remote-rdi.c, remote-sds.c: Ditto.
- * remote.c, sol-thread.c, source.c, stabsread.c: Ditto.
- * stack.c, symfile.c, target.c, top.c, typeprint.c: Ditto.
- * utils.c, v850ice.c, valprint.c, values.c, win32-nat.c: Ditto.
- * wince.c, remote-vx.c: Ditto.
-
- * cli/cli-script.c: Remove "register" attributes.
- * config/pa/tm-hppa.h: Ditto.
- * cli/cli-decode.c: Ditto.
- * cli/cli-cmds.c: Ditto.
-
-2003-09-19 Andrew Cagney <cagney@redhat.com>
-
- * sparcnbsd-nat.c (getregs_supplies): Rename NPC_REGNUM to
- DEPRECATED_NPC_REGNUM.
- * sparc64nbsd-nat.c (getregs_supplies): Ditto.
-
-2003-09-19 Christopher Faylor <cgf@redhat.com>
-
- * win32-nat.c (mappings): Remove HAVE_SSE conditional.
-
-2003-09-19 Jim Blandy <jimb@redhat.com>
-
- * macrotab.c (macro_include): Use the correct comparison to find
- the appropriate place for this inclusion in the list.
-
-2003-09-19 Andrew Cagney <cagney@redhat.com>
-
- * config/pa/nm-hppah.h (NEED_TEXT_START_END): Delete.
- (DEPRECATED_HPUX_TEXT_END): Define.
- (deprecated_hpux_text_end): Declare.
- (struct target_ops): Declare opaque.
- * hppah-nat.c (text_end): Make static.
- (deprecated_hpux_text_end): New function.
- * exec.c (text_end): Delete global variable.
- (NEED_TEXT_START_END): Do not define.
- (exec_file_attach): Replace code computing "text_end" code with
- call to DEPRECATED_HPUX_TEXT_END.
-
-2003-09-19 Andrew Cagney <cagney@redhat.com>
-
- * utils.c (align_up, align_down): New functions.
- * defs.h (align_up, align_down): Declare.
- * ppc-sysv-tdep.c (align_up, align_down): Delete functions.
- * s390-tdep.c: Replace "round_up" and "round_down" with "align_up"
- and "align_down".
- (round_up, round_down): Delete functions.
- * mips-tdep.c: Replace ROUND_UP and ROUND_DOWN with "align_up" and
- "align_down".
- (ROUND_DOWN, ROUND_UP): Delete macros.
- (mips_dump_tdep): Do not print "ROUND_UP" or "ROUND_DOWN".
- * h8300-tdep.c: Replace "round_up" and "round_down" with
- "align_up" and "align_down".
- (round_up, round_down): Delete macros.
- * frv-tdep.c: Replace ROUND_UP and ROUND_DOWN with "align_up" and
- "align_down".
- (ROUND_UP, ROUND_DOWN): Delete macros.
-
-2003-09-18 J. Brobecker <brobecker@gnat.com>
-
- * hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Remove a
- hard-coded constant. Use the proper machine name instead.
-
-2003-09-17 Andrew Cagney <cagney@redhat.com>
-
- * sparc-tdep.c (legacy_register_name): Delete function.
- * mips-tdep.c (mips_dump_tdep): Do not print REGISTER_NAME.
- (mips_gdbarch_init): Refer to MIPS_REGISTER_NAME in comments.
- * infcmd.c (gdb_register_name): Delete variable.
- * gdbarch.sh (SDB_REG_TO_REGNUM): Delete reference to
- REGISTER_NAME and "tm.h".
- * gdbarch.h, gdbarch.c: Regenerate.
- * dpx2-nat.c (regmap): Refer to REGISTER_NAME and not
- REGISTER_NAMES in comments.
- * remote-st.c (get_reg_name), i386b-nat.c (tregmap): Ditto.
- * m68klinux-nat.c (regmap): Ditto.
-
-2003-09-17 Jim Blandy <jimb@redhat.com>
-
- * Makefile.in (dis_asm_h): Note that this #includes "bfd.h".
-
-2003-09-17 Andrew Cagney <cagney@redhat.com>
-
- * ppcnbsd-tdep.c (ppcnbsd_use_struct_convention): New function.
- (ppcnbsd_init_abi): Set "use_struct_convention" to
- "ppcnbsd_use_struct_convention".
-
-2003-09-17 Mark Kettenis <kettenis@gnu.org>
-
- * gdbarch.sh (DEPRECATED_REG_STRUCT_HAS_ADDR): Add comment.
- * gdbarch.h, gdbarch.c: Regenerate.
- (stabs_argument_has_addr): New architecture method.
- * arch-utils.h (default_stabs_argument_has_addr): New prototype.
- * arch-utils.c: Include "buildsym.h".
- (default_stabs_argument_has_addr): New function.
- * stabsread.c (define_symbol): Use stabs_argument_has_addr
- instead of DEPRECATED_REG_STRUCT_HAS_ADDR.
-
-2003-09-30 David Carlton <carlton@kealia.com>
-
- * Makefile.in (c-exp.tab.o): Depend on cp_support_h.
- * c-exp.y: Include c-exp.y. Update comments, replace
- lookup_nested_type by cp_lookup_nested_type.
- (yylex): Update comments, remove #if 0 block.
- * cp-namespace.c (cp_lookup_nested_type): Move here from symtab.c;
- rename from lookup_nested_type.
- * cp-support.h: Add cp_lookup_nested_type declaration.
- * dwarf2read.c (read_die_and_children): Update comment.
- (read_die_and_siblings): Update comment, move declaration of
- 'die'.
- (read_full_die): Update comment, tweak formatting.
- * symtab.c (lookup_nested_type): Move to cp-namespace.c, rename to
- cp_lookup_nested_type.
- * symtab.h: Delete declaration of lookup_nested_type.
-
-2003-09-19 David Carlton <carlton@kealia.com>
-
- * expression.h (enum exp_opcode): Revert to mainline's OP_FUNCALL,
- OP_SCOPE.
- * ada-exp.y, m2-exp.y, objc-exp.y, p-exp.y: Ditto.
- * jv-exp.y (push_qualified_expression_name): Ditto.
- * ada-lang.c (ada_resolve_subexp, replace_operator_with_call)
- (ada_evaluate_subexp): Ditto.
- * eval.c (evaluate_subexp_standard): Ditto.
- * expprint.c (print_subexp, dump_subexp): Ditto.
- * parse.c (length_of_subexp, prefixify_subexp): Ditto.
- * c-exp.y: Ditto, and add comment.
- * cp-support.c (make_symbol_overload_list): Delete 'block'
- argument; change calls to make_symbol_overload_list_using
- appropriately.
- (make_symbol_overload_list_using): Delete 'block' argument;
- replace it by get_selected_block (0).
- * cp-support.h: Delete 'block' argument from
- make_symbol_overload_list.
- * valops.c (find_overload_match): Delete 'block' argument, and
- update calls using it.
- (find_oload_champ_namespace, find_oload_champ_namespace_loop)
- (value_aggregate_elt, value_struct_elt_for_reference)
- (value_namespace_elt): Ditto.
- (value_maybe_namespace_elt): Delete 'block' argument, and use
- get_selected_block (0) instead.
- * value.h: Delete 'block' argument from value_struct_elt,
- value_find_oload.
-
-2003-09-17 David Carlton <carlton@kealia.com>
-
- * Merge with mainline; tag is carlton_dictionary-20030917-merge.
-
-2003-09-17 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_NPC_REGNUM): Deprecate NPC_REGNUM.
- * gdbarch.h, gdbarch.c: Regenerate.
- * core-sol2.c, hppa-tdep.c, lynx-nat.c, procfs.c: Update.
- * regcache.c, remote-vxsparc.c, sparc-linux-nat.c: Update.
- * sparc-nat.c, sparc-tdep.c, sparc64-tdep.c: Update.
- * sparcnbsd-tdep.c: Update.
-
-2003-09-17 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_REGISTER_BYTE): Rename REGISTER_BYTE.
- * gdbarch.h, gdbarch.c: Regenerate.
- * arm-linux-tdep.c, core-sol2.c, cris-tdep.c: Update.
- * d10v-tdep.c, frame.c: Update.
- * hppa-tdep.c, hppab-nat.c, hppah-nat.c, hppam3-nat.c: Update.
- * hpux-thread.c, i386gnu-nat.c, ia64-aix-nat.c: Update.
- * ia64-linux-nat.c, irix5-nat.c, lynx-nat.c, m68knbsd-nat.c: Update.
- * mcore-tdep.c, mips-linux-tdep.c, mips-tdep.c: Update.
- * mipsv4-nat.c, mn10300-tdep.c, ns32k-tdep.c: Update.
- * ns32knbsd-nat.c, ppc-bdm.c, regcache.c, remote-sds.c: Update.
- * remote-vx68.c, remote-vxmips.c, remote-vxsparc.c: Update.
- * remote.c, rs6000-tdep.c, s390-tdep.c, sh64-tdep.c: Update.
- * sparc-nat.c, sparc-tdep.c, sun3-nat.c, v850-tdep.c: Update.
- * v850ice.c, vax-tdep.c, xstormy16-tdep.c: Update.
- * config/m68k/tm-cisco.h, config/m68k/tm-delta68.h: Update.
- * config/pa/nm-hppah.h: Update.
-
-2003-09-16 Andrew Cagney <cagney@redhat.com>
-
- * ppc-linux-tdep.c (ppc_linux_init_abi): Set the 32 bit
- "use_struct_convention" to "ppc_linux_use_struct_convention".
- (ppc_linux_use_struct_convention): New function.
- * rs6000-tdep.c (rs6000_use_struct_convention): New function.
- (rs6000_gdbarch_init): For AIX, set "use_struct_convention" to
- "rs6000_use_struct_convention".
- * ppc-tdep.h (ppc_sysv_abi_broken_use_struct_convention): Delete
- declaration.
- * ppc-sysv-tdep.c (ppc_sysv_abi_broken_use_struct_convention):
- Delete function.
-
-2003-09-16 Andrew Cagney <cagney@redhat.com>
-
- * buildsym.c: Remove more occurances of "register".
- * coffread.c, dbxread.c, dcache.c, dwarf2read.c: Ditto.
- * environ.c, eval.c, f-valprint.c, findvar.c: Ditto.
- * gdbtypes.c, gnu-v2-abi.c, h8300-tdep.c, hppa-tdep.c: Ditto.
- * infcmd.c, mdebugread.c, minsyms.c, mips-tdep.c: Ditto.
- * printcmd.c, remote-vx.c, sh-stub.c, sh-tdep.c: Ditto.
- * sh64-tdep.c, source.c, stabsread.c, stack.c: Ditto.
- * standalone.c, symfile.c, symmisc.c, symtab.c: Ditto.
- * utils.c, valops.c, values.c, xcoffread.c: Ditto.
-
-2003-09-16 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.h (struct gdbarch_tdep): Remove. Change all register
- numbers to enumeration values.
- * sh-tdep.c: Accomodate above change.
- (SH_NUM_REGS): Rename from SH_DEFAULT_NUM_REGS.
- (NUM_PSEUDO_REGS_SH_MEDIA): Remove (sh5 only).
- (NUM_PSEUDO_REGS_SH_COMPACT): Remove (sh5 only).
- (IS_ADD_IMM_SP): Rename from IS_ADD_SP.
- (IS_FPUSH): Rename from IS_FMOV.
- (sh_extract_struct_value_address): Remove useless comment.
- (sh_dsp_register_sim_regno): Use register values from sh-tdep.h
- instead of own local values.
- (sh_dump_tdep): Remove.
- (_initialize_sh_tdep): Accomodate removing sh_dump_tdep.
- * sh3-rom.c (sh3_supply_register): Accomodate sh-tdep.h changes.
-
-2003-09-15 Andrew Cagney <cagney@redhat.com>
-
- * doublest.c (convert_floatformat_to_doublest): No longer need to
- cast "exp_bias" to an int. Reverts 2002-12-04 change.
-
-2003-09-15 Daniel Jacobowitz <drow@mvista.com>
-
- * values.c (unpack_double): Call floatformat_is_valid.
-
-2003-09-15 Mark Kettenis <kettenis@gnu.org>
-
- * amd64fbsd-nat.c (_initialize_amd64fbsd_nat): Change type of
- ps_strings into a long.
-
- * amd64fbsd-nat.c (_initialize_amd64fbsd_nat): Rename from
- _initialize_am64fbsd_nat.
-
-2003-09-15 Kevin Buettner <kevinb@redhat.com>
-
- * dwarf2read.c (dwarf2_get_pc_bounds): Complain if offset
- associated with DW_AT_ranges attribute is out of bounds.
-
-2003-09-15 David Lecomber <dsl@sources.redhat.com>
-
- * f-valprint.c: Apply array element printing limits to multi-dimensional arrays
-
-2003-09-14 Michael Chastain <mec@shout.net>
-
- * config/m68k/nm-apollo68v.h: Delete.
- * config/m68k/xm-apollo68v.h: Delete.
-
-2003-09-14 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (rs6000_push_dummy_call): Fix typos.
- * dcache.c: Update copyrights and descriptions.
- * scm-exp.c, ia64-aix-nat.c, hppam3-nat.c: environ.c: Ditto.
-
-2003-09-14 Andrew Cagney <cagney@redhat.com>
-
- * config/djgpp/fnchange.lst: Rename "amd64fbsd-tdep.c" and
- "amd64fbsd-nat.c" to "a64fb-tdep.c" and "a64fb-nat.c".
-
-2003-09-14 Andrew Cagney <cagney@redhat.com>
-
- * alpha-nat.c: Remove some occurances of "register".
- * alpha-tdep.c, arm-tdep.c, blockframe.c, breakpoint.c: Ditto.
- * buildsym.c, c-typeprint.c, c-valprint.c, coffread.c: Ditto.
- * corefile.c, cp-support.c, cp-valprint.c, cris-tdep.c: Ditto.
- * dbxread.c, dcache.c, dwarf2read.c, elfread.c: Ditto.
- * environ.c, eval.c, event-top.c, f-typeprint.c: Ditto.
- * f-valprint.c, findvar.c, frame.c, gdbtypes.c: Ditto.
- * h8300-tdep.c, hppa-tdep.c, hppab-nat.c, hppah-nat.c: Ditto.
- * hppam3-nat.c, hpread.c, ia64-aix-nat.c, ia64-linux-nat.c: Ditto.
- * infcall.c, infcmd.c, inflow.c, infptrace.c, infrun.c: Ditto.
- * infttrace.c, irix5-nat.c, jv-typeprint.c: Ditto.
- * jv-valprint.c, m68k-tdep.c, m68klinux-nat.c, main.c: Ditto.
- * mdebugread.c, minsyms.c, mips-linux-tdep.c: Ditto.
- * mips-nat.c, mips-tdep.c, mipsread.c, mipsv4-nat.c: Ditto.
- * ns32k-tdep.c, objfiles.c, p-typeprint.c: Ditto.
- * p-valprint.c, ppc-linux-nat.c, printcmd.c: Ditto.
- * remote-mips.c, remote-vx.c, rs6000-nat.c: Ditto.
- * rs6000-tdep.c, scm-exp.c, sh-tdep.c, sh64-tdep.c: Ditto.
- * solib.c, somread.c, source.c, sparc-tdep.c: Ditto.
- * stabsread.c, stack.c, standalone.c, symfile.c: Ditto.
- * symmisc.c, symtab.c, top.c, tracepoint.c: Ditto.
- * typeprint.c, utils.c, valarith.c, valops.c: Ditto.
- * values.c, vax-tdep.c, xcoffread.c: Ditto.
-
-2003-09-13 Andrew Cagney <cagney@redhat.com>
-
- * config/pa/tm-hppa64.h (struct frame_info): Declare opaque.
- * ppc-tdep.h (struct regcache): Declare opaque.
- * objfiles.h (struct objfile_data): Declare opaque.
- * cp-support.h (struct objfile): Declare opaque.
- * linux-nat.h (target_waitstatus): Declare opaque.
-
-2003-09-14 Mark Kettenis <kettenis@gnu.org>
-
- * gdbarch.sh (DEPRECATED_REG_STRUCT_HAS_ADDR): Add comment.
- (stabs_argument_has_addr): New architecture method.
- * arch-utils.h (default_stabs_argument_has_addr): New prototype.
- * arch-utils.c: Include "buildsym.h".
- (default_stabs_argument_has_addr): New function.
- * stabsread.c (define_symbol): Use stabs_argument_has_addr
- instead of DEPRECATED_REG_STRUCT_HAS_ADDR.
-
- * cris-tdep.c (cris_gdbarch_init): Set
- deprecated_reg_struct_has_addr instead of reg_struct_has_addr.
- * hppa-tdep.c (hppa_gdbarch_init): Likewise.
- * mcore-tdep.c (mcore_gdbarch_init): Likewise.
- * mips-tdep.c (mips_gdbarch_init): Likewise.
- * mn10300-tdep.c (mn10300_gdbarch_init): Likewise.
- * sparc-tdep.c (sparc_gdbarch_init): Likewise.
-
-2003-09-13 Andrew Cagney <cagney@redhat.com>
-
- * values.c (using_struct_return): Delete "function" and "funcaddr"
- parameters.
- * value.h (using_struct_return): Update declaration.
- * infcmd.c (finish_command_continuation): Update.
- (finish_command): Update.
- * infcall.c (call_function_by_hand): Update.
- * eval.c (evaluate_subexp_standard): Update.
-
-2003-09-13 Christopher Faylor <cgf@redhat.com>
-
- * win32-nat.c: Just rely on CONTEXT_EXTENDED_REGISTER being defined for
- SSE registers since gdb will not operate correctly without this.
- Restore include file ordering munged in previous change.
- * config/i386/tm-cygwin.h: Remove HAVE_SSE_REGS define.
-
-2003-09-13 Mark Kettenis <kettenis@gnu.org>
-
- * gdbarch.sh (DEPRECATED_REG_STRUCT_HAS_ADDR): Renamed from
- REG_STRUCT_HAS_ADDR.
- * gdbarch.c, gdbarch.h: Updated.
- * infcall.c (call_function_by_hand): Update.
- * stabsread.c (define_symbol): Updated.
-
- * Makefile.in (xm-i386-sv32.h, tm-i386gas.h): Remove.
-
-2003-09-12 Christopher Faylor <cgf@redhat.com>
-
- * win32-nat.c: Reorganize so that defines used by target headers are
- actually defined by the system headers.
- * config/i386/tm-cygwin.h: Check for CONTEXT_EXTENDED_REGISTERS rather
- than HAVE_CONTEXT_EXTENDED_REGISTERS, since the latter actually exists.
-
-2003-09-12 Jim Blandy <jimb@redhat.com>
-
- * dbxread.c (read_dbx_symtab): Don't report an internal error if
- the file has no .data, .bss, or .rodata sections. Instead wait
- until we see a variable alleged to live in one of those sections.
-
- * dbxread.c (read_dbx_symtab): If we have no .data section and no
- .bss section, presume that any variables we find live in the
- .rodata section.
-
- * dbxread.c (read_dbx_symtab): Add FIXME about finding section
- offsets for global and static variables.
-
- * dbxread.c (read_dbx_symtab): The N_DATA and N_DATA | N_EXT
- symbol types are, by definition, in the .data section, so it is
- correct to use SECT_OFF_DATA (objfile) here, not data_sect_index.
- If there is no .data section, there should be no N_DATA or N_DATA
- | N_EXT symbols.
-
-2003-09-12 Mark Kettenis <kettenis@gnu.org>
-
- * amd64fbsd-tdep.c: Fix sigtramp recognition.
- (amd64fbsd_sigcontext_addr): Rewrite.
- (amd64fbsd_sigtramp_start, amd64fbsd_sigtramp_end): Initialize
- with correct values.
- (amd64fbsd_sc_reg_offset): Initialize with correct values.
- (amd64fbsd_init_abi): Fix typo.
-
-2003-09-12 Andrew Cagney <cagney@redhat.com>
-
- * ppc-sysv-tdep.c (align_up, align_down): Replace "round2" macro.
- (ppc_sysv_abi_push_dummy_call): Rewrite, use a two pass loop.
-
-2003-09-12 Andrew Cagney <cagney@redhat.com>
-
- * objfiles.h (struct entry_info): Deprecate "entry_file_lowpc" and
- "entry_file_highpc". Update comments.
- * defs.h (deprecated_inside_entry_file): Rename
- "inside_entry_file".
- * blockframe.c (deprecated_inside_entry_file): Rename
- "inside_entry_file".
- * frame.c (get_prev_frame): Update. Use if 0 instead of #if 0.
- * vax-tdep.c (vax_frame_chain): Update.
- * sh64-tdep.c (sh64_frame_chain): Update.
- * sh-tdep.c (sh_frame_chain): Update.
- * rs6000-tdep.c (rs6000_frame_chain): Update.
- * ns32k-tdep.c (ns32k_frame_chain): Update.
- * mips-tdep.c (mips_frame_chain): Update.
- * m68hc11-tdep.c (m68hc11_frame_this_id): Update.
- * m32r-tdep.c (m32r_frame_this_id): Update.
- * i386-interix-tdep.c (i386_interix_frame_chain_valid): Update.
- * frv-tdep.c (frv_frame_this_id): Update.
- * d10v-tdep.c (d10v_frame_this_id): Update.
- * cris-tdep.c (cris_frame_chain): Update.
- * blockframe.c (legacy_frame_chain_valid): Update.
- * avr-tdep.c (avr_frame_this_id): Update.
- * arm-tdep.c (arm_prologue_this_id): Update.
- * alpha-tdep.c (alpha_heuristic_frame_this_id): Update.
- * objfiles.c (objfile_relocate): Update.
- * mipsread.c (mipscoff_symfile_read): Update.
- (mipscoff_symfile_read): Update.
- * mdebugread.c (parse_partial_symbols): Update.
- * dwarfread.c (read_file_scope): Update.
- * dwarf2read.c (read_file_scope): Update.
- * dbxread.c (read_dbx_symtab): Update.
- (read_dbx_symtab): Update.
- * coffread.c (complete_symtab): Update.
-
-2003-09-12 Jeff Johnston <jjohnstn@redhat.com>
-
- * top.c (quit_target): New static helper function.
- (quit_force): Moved code to quit_target(). Call quit_target()
- via catch_errors() to catch errors during quit.
-
-2003-09-11 David Carlton <carlton@kealia.com>
-
- * buildsym.c (finish_block): Use allocate_block to allocate the
- block.
- * mdebugread.c (new_block): Add FIXME.
-
-2003-09-11 David Carlton <carlton@kealia.com>
-
- * gdbtypes.h: Add TYPE_CODE_NAMESPACE.
- * gdbtypes.c (init_type): Handle TYPE_CODE_NAMESPACE.
- (recursive_dump_type): Ditto.
- * printcmd.c (print_formatted): Ditto.
- * typeprint.c (print_type_scalar): Ditto.
- * c-typeprint.c (c_type_print_varspec_prefix): Ditto.
- (c_type_print_varspec_suffix, c_type_print_base): Ditto.
- * cp-support.h: Declare cp_check_possible_namespace_symbols,
- maint_cplus_cmd_list.
- * cp-support.c: Make maint_cplus_cmd_list extern.
- * cp-namespace.c: Include objfiles.h, gdbtypes.h, dictionary.h,
- command.h.
- (lookup_symbol_file): Look in possible namespace blocks when
- appropriate.
- (initialize_namespace_symtab): New.
- (get_possible_namespace_block, free_namespace_block)
- (check_possible_namespace_symbols)
- (check_possible_namespace_symbols_loop)
- (check_one_possible_namespace_symbol)
- (lookup_possible_namespace_symbol, maintenance_cplus_namespace)
- (_initialize_cp_namespace): Ditto.
- * block.h: Declare allocate_block.
- * block.c (allocate_block): New.
- * jv-lang.c (get_java_class_symtab): Allocate blocks via
- allocate_block.
- * symfile.h: Update declaration of add_psymbol_to_list.
- * symfile.c (add_psymbol_to_list): Return the partial symbol in
- question.
- * dwarf2read.c (dwarf2_build_psymtabs_hard): Add argument to
- scan_partial_symbols_call.
- (scan_partial_symbols): Add NAMESPACE argument; update calls to
- helper functions.
- (add_partial_symbol): If necessary, scan mangled names for names
- of namespaces.
- (add_partial_namespace): Add NAMESPACE argument; generate partial
- symbols associated to namespaces.
- (add_partial_enumeration): Add NAMESPACE argument.
- (new_symbol): Allow namespace syms.
- (read_namespace): Generate namespace syms.
- * objfiles.h: Add opaque declaration of struct symtab.
- (struct objfile): Add cp_namespace_symtab member.
- * objfiles.c (allocate_objfile): Set
- objfile->cp_namespace_symtab.
- * Makefile.in (cp-namespace.o): Depend on objfiles_h, gdbtypes_h,
- dictionary_h, command_h.
-
-2003-09-11 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (rs6000_push_dummy_call): Use
- regcache_raw_write_signed to set SP_REGNUM, move the operation to
- near the function's end.
- (rs6000_gdbarch_init): Do not set "deprecated_dummy_write_sp".
- * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Use
- regcache_raw_write_signed to set SP_REGNUM.
-
-2003-09-11 Elena Zannoni <ezannoni@redhat.com>
-
- * symfile.c (symbol_file_add_with_addrs_or_offsets): Make sure
- orig_addrs is set up properly.
-
-2003-09-11 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_STACK_ALIGN): Rename STACK_ALIGN.
- * gdbarch.h, gdbarch.c: Re-generate.
- * infcall.c (call_function_by_hand): Update.
- * hppa-tdep.c (hppa_push_arguments): Update.
- * ada-lang.c (place_on_stack): Update.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Delete comment refering to
- stack_align.
-
-2003-09-11 Daniel Jacobowitz <drow@mvista.com>
+2004-01-22 Mark Kettenis <kettenis@gnu.org>
- * dwarf2loc.c (dwarf2_loc_desc_needs_frame): Variables in a
- register do need a frame.
+ * osabi.c (MAX_NOTESZ): New define.
+ (check_note): New function.
+ (generic_elf_osabi_sniff_abi_tag_sections): Reorganize code using
+ check_note.
-2003-09-11 Andrew Cagney <cagney@redhat.com>
-
- Since the IRIX 4 configuration was forcing K&R mode it hasn't been
- buildable since GDB 5.0.
- * NEWS: Mention that IRIX 3 and IRIX 4 support were removed.
- * configure.host: Delete "mips-sgi-irix3*" and "mips-sgi-irix4*".
- * configure.tgt: Delete "mips*-sgi-*" a.k.a. irix3.
- * irix4-nat.c: Delete file.
- * config/mips/irix4.mh: Delete file.
- * config/mips/irix3.mh: Delete file.
- * config/mips/irix3.mt: Delete file.
- * config/mips/tm-irix3.h: Delete file.
- * config/mips/nm-irix3.h: Delete file.
- * config/mips/xm-irix3.h: Delete file.
- * config/mips/nm-irix4.h: Delete file.
- * config/mips/xm-irix4.h: Delete file.
- * config/mips/tm-irix5.h: Inline contents of "tm-irix3.h".
-
-2003-09-10 J. Brobecker <brobecker@gnat.com>
-
- * hppa-tdep.c: Include "dis-asm.h". Fixes a build failure.
- * Makefile.in (hppa-tdep.o): Update dependencies.
-
-2003-09-10 James E Wilson <wilson@specifixinc.com>
-
- * MAINTAINERS: Change my e-mail address. Move to paper trail
- section.
-
-2003-09-10 Kevin Buettner <kevinb@redhat.com>
-
- * MAINTAINERS (frv): New ISA entry.
-
-2003-09-10 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (dis-asm.h): Include.
- * Makefile.in (frv-tdep.o): Update dependencies.
-
-2003-09-09 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c (ia64_sigtramp_frame_init_saved_regs):
- Fix typo for high range of floating registers.
-
-2003-09-09 David Carlton <carlton@kealia.com>
-
- * dwarf2read.c (dwarf2_build_psymtabs_hard): Move lowpc and
- highpc initialization here out of scan_partial_symbols.
- (scan_partial_symbols): Restructure into a recursive version,
- calling add_partial_namespace and add_partial_enumeration when
- appropriate.
- (add_partial_namespace): New.
- (add_partial_enumeration, locate_pdi_sibling): Ditto.
-
-2003-09-09 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (ppc_push_return_address): Delete function.
- (rs6000_push_dummy_call): Set LR to BP_ADDR.
- (rs6000_gdbarch_init): Do not set deprecated_push_return_address.
- * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Ditto.
-
- * rs6000-tdep.c (rs6000_fix_call_dummy): Delete function.
- (rs6000_push_dummy_call): Set the "TOC" register.
-
- * rs6000-tdep.c (rs6000_gdbarch_init): Do not set the deprecated
- methods "max_register_raw_size", "max_register_virtual_size" or
- "register_virtual_size".
-
-2003-09-09 Ian Lance Taylor <ian@wasabisystems.com>
-
- * MAINTAINERS: Update my e-mail address.
-
-2003-09-09 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (rs6000_store_struct_return): Delete function.
- (rs6000_push_dummy_call): Store the struct return address.
- * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Ditto.
-
-2003-09-09 Andrew Cagney <cagney@redhat.com>
-
- * ppc-tdep.h (ppc_sysv_abi_push_dummy_call): Replace
- "ppc_sysv_abi_push_arguments".
- * ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Replace
- "ppc_sysv_abi_push_arguments".
- * rs6000-tdep.c (rs6000_gdbarch_init): Set "push_dummy_call"
- instead of "push_arguments".
- (rs6000_push_dummy_call): Replace "rs6000_push_arguments".
-
-2003-09-09 Andrew Cagney <cagney@redhat.com>
-
- * sh64-tdep.c (sh64_push_return_address): Use ENTRY_POINT_ADDRESS
- instead of CALL_DUMMY_ADDRESS.
-
-2003-09-09 Paul N. Hilfinger <hilfingr@gnat.com>
-
- * p-lang.c: Eliminate "register".
- * c-lang.c: Ditto.
- * expprint.c: Ditto.
- * f-lang.c: Ditto.
- * jv-lang.c: Ditto.
- * language.c: Ditto.
- * m2-lang.c: Ditto.
- * parse.c: Ditto.
- * scm-lang.c: Ditto.
- * objc-lang.c: Ditto.
-
-2003-09-09 Nick Clifton <nickc@redhat.com>
-
- * v850-tdep.c (v850_processor_type_table): Add bfd_mach_v850e1.
-
-2003-09-04 Andrew Cagney <cagney@redhat.com>
-
- * avr-tdep.c: Include "dis-asm.h".
- * cris-tdep.c: Include "dis-asm.h".
- (cris_delayed_get_disassembler): Use "struct disassemble_info"
- instead of corresponding typedef.
- * h8300-tdep.c: Include "dis-asm.h".
- * ia64-tdep.c: Include "dis-asm.h".
- * i386-tdep.c: Include "dis-asm.h".
- (i386_print_insn): Use "struct disassemble_info" instead of
- corresponding typedef.
- * m68k-tdep.c: Include "dis-asm.h".
- * mcore-tdep.c: Include "dis-asm.h".
- * mips-tdep.c: Include "dis-asm.h".
- (gdb_print_insn_mips): Make static, use "struct disassemble_info"
- instead of corresponding typedef.
- * ns32k-tdep.c: Include "dis-asm.h".
- * s390-tdep.c: Include "dis-asm.h".
- * sparc-tdep.c: Include "dis-asm.h".
- * vax-tdep.c: Include "dis-asm.h".
- * v850-tdep.c: Include "dis-asm.h".
- * mn10300-tdep.c: Include "dis-asm.h".
- * rs6000-tdep.c: Include "dis-asm.h".
- * xstormy16-tdep.c: Include "dis-asm.h".
- (_initialize_xstormy16_tdep): Delete "extern" declaration of
- print_insn_xstormy16.
- * Makefile.in (v850-tdep.o): Update dependencies.
- (vax-tdep.o, sparc-tdep.o, s390-tdep.o): Ditto.
- (ns32k-tdep.o, mips-tdep.o, mcore-tdep.o): Ditto.
- (m68k-tdep.o, ia64-tdep.o, i386-tdep.o): Ditto.
- (h8300-tdep.o, cris-tdep.o, avr-tdep.o): Ditto.
- (mn10300-tdep.o, xstormy16-tdep.o, disasm.o): Ditto.
- (gdbarch_h): Remove $(dis_asm_h).
- * disasm.c: Include "dis-asm.h".
- (dis_asm_read_memory): Use "struct disassemble_info" instead of
- corresponding typedef.
- (dis_asm_memory_error, dump_insns, do_assembly_only): Ditto.
- (gdb_disassemble_info, gdb_disassembly, gdb_print_insn): Ditto.
- * gdbarch.sh: Do not include "dis-asm.h".
- (struct disassemble_info): Declare opaque.
- (TARGET_PRINT_INSN): Update declaration.
- * gdbarch.h, gdbarch.c: Re-generate.
-
-2003-09-08 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_CALL_DUMMY_ADDRESS): Rename
- CALL_DUMMY_ADDRESS, change to a predicate.
- * gdbarch.h, gdbarch.c: Re-generate.
- * blockframe.c (deprecated_pc_in_call_dummy_at_entry_point):
- Use either DEPRECATED_CALL_DUMMY_ADDRESS or entry_point_address.
- * infcall.c (call_function_by_hand): Ditto.
- * sparc-tdep.c (sparc_push_return_address): Ditto.
- (sparc_gdbarch_init): Set deprecated_call_dummy_address.
- * xstormy16-tdep.c (xstormy16_push_return_address): Replace
- CALL_DUMMY_ADDRESS with entry_point_address.
- * v850-tdep.c (v850_push_return_address): Ditto.
- * s390-tdep.c (s390_push_return_address): Ditto.
- * rs6000-tdep.c (ppc_push_return_address): Ditto.
- * mn10300-tdep.c (mn10300_push_return_address): Ditto.
- * mcore-tdep.c (mcore_push_return_address): Ditto.
- * cris-tdep.c (cris_push_return_address): Ditto.
- * arm-tdep.c (arm_push_return_address): Ditto.
-
-2003-09-08 Andrew Cagney <cagney@redhat.com>
-
- * dwarf2-frame.c (enum dwarf2_reg_rule): New, replace anonymous
- enum. Add REG_UNSPECIFIED, rename REG_UNSAVED to REG_UNDEFINED
- and REG_UNMODIFIED to REG_SAME_VALUE.
- (execute_cfa_program): Update.
- (dwarf2_frame_cache): Update. Initialize table to
- REG_UNSPECIFIED, complain if CFI fails to specify a register's
- location.
- (dwarf2_frame_prev_register): Update. Handle REG_UNSPECIFIED.
-
-2003-09-08 Andrew Cagney <cagney@redhat.com>
-
- * gnu-nat.c: Remove "inline" function attribute.
- * alpha-tdep.c, ppc-linux-tdep.c, macroexp.c: Ditto.
-
-2003-09-08 Kevin Buettner <kevinb@redhat.com>
-
- * config/frv/frv.mt (SIM_OBS, SIM): Enable simulator for FR-V
- target.
-
-2003-09-08 Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (frame-unwind.h, frame-base.h): Include.
- (frame_extra_info): Rename this struct to frv_unwind_cache.
- Delete fields ``fp_to_callers_sp_offset'' and ``lr_saved_on_stack''.
- Add fields ``prev_sp'' and ``base''.
- (frv_frame_chain, frv_frame_saved_pc, frv_frame_init_saved_regs)
- (frv_saved_pc_after_call, frv_init_extra_frame_info)
- (frv_push_return_address, frv_pop_frame, frv_pop_frame_regular):
- Delete.
- (frv_analyze_prologue): Add ``struct frv_unwind_cache *'' argument.
- Revise all callers. Fill in the unwind cache argument and make
- other adjustments to account for new frame mechanisms.
- (frv_frame_unwind_cache, frv_frame_align, frv_unwind_pc)
- (frv_frame_this_id, frv_frame_prev_register, frv_frame_sniffer)
- (frv_frame_base_address, frv_unwind_dummy_id): New functions.
- (frv_frame_unwind, frv_frame_base): New structs.
- (frv_push_arguments): Change name to frv_push_dummy_call(). Add
- additional arguments expected by this method and adjust function
- body accordingly.
- (frv_gdbarch_init): Remove calls to the following functions:
- set_gdbarch_deprecated_init_frame_pc(),
- set_gdbarch_deprecated_saved_pc_after_call(),
- set_gdbarch_deprecated_frame_chain(),
- set_gdbarch_deprecated_frame_saved_pc(),
- set_gdbarch_deprecated_frame_init_saved_regs(),
- set_gdbarch_deprecated_push_arguments(),
- set_gdbarch_deprecated_push_return_address(),
- set_gdbarch_deprecated_pop_frame(),
- set_gdbarch_deprecated_call_dummy_words(),
- set_gdbarch_deprecated_sizeof_call_dummy_words(),
- set_gdbarch_deprecated_init_extra_frame_info(),
- set_gdbarch_deprecated_dummy_write_sp(), and
- set_gdbarch_deprecated_pc_in_call_dummy().
- Add calls to the following functions:
- set_gdbarch_unwind_pc(), set_gdbarch_unwind_sp(),
- set_gdbarch_frame_align(), frame_unwind_append_sniffer(), and
- frame_base_set_default().
- * Makefile.in (frv-tdep.o): Update dependencies.
-
-2003-09-09 Mark Kettenis <kettenis@gnu.org>
-
- * dwarf2-frame.c (read_encoded_value): Add support for
- DW_EH_PE_aligned encoding.
-
-2003-09-08 Daniel Jacobowitz <drow@mvista.com>
-
- * infrun.c (normal_stop): Don't print a message if the inferior
- has exited.
-
-2003-09-08 Jim Blandy <jimb@redhat.com>
-
- * Makefile.in (dbxread.o): Note new dependency on $(gdb_assert_h).
- * dbxread.c: #include "gdb_assert.h".
- (read_dbx_symtab): If the objfile has no .data section, use the
- section index for the .bss section instead.
-
-2003-09-08 Daniel Jacobowitz <drow@mvista.com>
-
- * frame.c (deprecated_safe_get_selected_frame): New function.
- * frame.h (deprecated_safe_get_selected_frame): Add prototype.
- * findvar.c (read_var_value): Call it.
-
-2003-09-08 Corinna Vinschen <vinschen@redhat.com>
-
- * Makefile.in (ALLDEPFILES): Add sh64-tdep.c.
- (sh64-tdep.o): Add dependencies.
- * configure.tgt: Add FIXME to sh-*-linux*.
- * sh-tdep.c: Move sh64 support to sh64-tdep.c.
- (sh_gdbarch_init): Always set correct sh_show_regs function
- pointer. Call sh64_gdbarch_init() if machine type is sh5.
- * sh-tdep.h: Move sh64 support to sh64-tdep.c.
- * sh64-tdep.c: New file, containing all sh64 related code from
- sh-tdep.c.
- * config/sh/embed.mt (TDEPFILES): Add sh64-tdep.o.
- * config/sh/linux.mt (TDEPFILES): Ditto.
- * config/sh/nbsd.mt (TDEPFILES): Ditto.
- * config/sh/tm-sh.h: Drop REGISTER_TYPE definition.
- * config/sh/wince.mt (TDEPFILES): Ditto.
-
-2003-09-07 Daniel Jacobowitz <drow@mvista.com>
-
- * lin-lwp.c (detach_callback): Don't call stop_wait_callback.
- (stop_wait_callback): Handle !lp->signalled also.
- (lin_lwp_has_pending, flush_callback): New functions.
- (lin_lwp_wait): Call flush_callback.
- * linux-proc.c (linux_proc_add_line_to_sigset): New function.
- (linux_proc_pending_signals): New function.
- * linux-nat.h (linux_proc_pending_signals): Add prototype.
-
-2003-09-07 Daniel Jacobowitz <drow@mvista.com>
-
- From Nick Kelsey <nickk@ubicom.com>:
- * infrun.c (handle_inferior_event): Check IN_SOLIB_RETURN_TRAMPOLINE
- when the stop PC is at the beginning of a function also.
-
-2003-09-06 Daniel Jacobowitz <drow@mvista.com>
-
- * arm-linux-tdep.c (arm_linux_arm_be_breakpoint): New.
- (arm_linux_init_abi): Use arm_linux_arm_be_breakpoint.
-
-2003-09-06 Mark Kettenis <kettenis@gnu.org>
-
- * sol-thread.c: Include "gdb_string.h".
-
-2003-09-03 Mark Kettenis <m.kettenis@osp.nl>
-
- * gcore.c: Reorder include files in alphabetical order. Include
- "gdb_assert.h". Various coding style fixes.
- (derive_stack_segment, derive_heap_segment): Replace check for
- non-null BOTTOM and TOP with gdb_assert.
- (derive_heap_segment): Replace check for successful creation of
- ZERO with gdb_assert.
- (make_mem_sec): Use bfd_section_lma to set OSEC->lma.
-
-2003-09-04 Andrew Cagney <cagney@redhat.com>
-
- * thread-db.c (verbose_dlsym): New function.
- (thread_db_load): Use verbose_dlsym
- (thread_db_new_objfile): Print that libthread_db was loaded, and
- that thread debugging was enabled.
-
-2003-09-04 Andrew Cagney <cagney@redhat.com>
-
- * configure.tgt: Add "mips64*-*-*" target. Delete
- mips64*el-*-ecoff*, mips64*el-*-elf*, mips*el-*-ecoff*,
- mips*el-*-elf*, mips*-*-lnews*, mips*-*-sysv*, mips*-*-riscos*,
- mips*-*-ecoff*, mips*-*-elf*, mips*-little-*, mips*-big-*,
- mips*-dec-*, mips64*-big-*, mips64*vr*-*-elf*, mips64*-*-ecoff*,
- mips*-sony-*, and mips64*-*-elf* targets.
- * config/mips/embedl.mt: Delete file.
- * config/mips/embedl64.mt: Delete file.
- * config/mips/mips.mt: Delete file.
- * config/mips/mips64.mt: Delete file.
- * config/mips/tm-embed.h: Delete file.
- * config/mips/embed.mt (TM_FILE): Set to "tm-mips.h".
- * config/mips/embed64.mt: Delete out-of-date comment.
-
-2003-09-04 Andrew Cagney <cagney@redhat.com>
-
- * hppa-tdep.c (hppa_gdbarch_init): Set
- "have_nonsteppable_watchpoint".
- * config/pa/nm-hppah.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete.
- * mips-tdep.c (mips_dump_tdep): Do not print
- HAVE_NONSTEPPABLE_WATCHPOINT.
- (mips_gdbarch_init): Set "have_nonsteppable_watchpoint".
- * config/mips/tm-embed.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete.
- * config/mips/nm-irix5.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete.
- * config/mips/nm-irix4.h (HAVE_NONSTEPPABLE_WATCHPOINT): Delete.
-
-2003-09-04 Corinna Vinschen <vinschen@redhat.com>
-
- * breakpoint.c (watchpoint_check): Remove accidentally checked in
- unused code. Add comment.
-
-2003-09-04 Corinna Vinschen <vinschen@redhat.com>
-
- * breakpoint.c (watchpoint_check): Check for pc being in an
- epilogue if watchpoint frame couldn't be found.
-
-2003-09-04 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in: Re-generate all dependencies.
-
-2003-09-03 Andrew Cagney <cagney@redhat.com>
-
- * arch-utils.h (legacy_print_insn): Delete declaration.
- * arch-utils.c (legacy_print_insn): Delete function.
- * disasm.c (deprecated_tm_print_insn_info): Delete.
- (_initialize_disasm): Delete function, contained code initializing
- deprecated_tm_print_insn_info.
- * gdbarch.sh (deprecated_tm_print_insn): Delete.
- (deprecated_tm_print_insn_info): Delete.
- (TARGET_PRINT_INSN): Do not provide a default.
- * gdbarch.h, gdbarch.c: Re-generate.
-
-2003-09-03 Andrew Cagney <cagney@redhat.com>
-
- * disasm.c (fprintf_disasm): New function.
- (gdb_disassemble_info): Call "init_disassemble_info", instead of
- INIT_DISASSEMBLE_INFO_NO_ARCH. Do not initialize "insn_sets",
- reverts 2003-08-14 change.
- (_initialize_disasm): Call "init_disassemble_info", instead of
- INIT_DISASSEMBLE_INFO_NO_ARCH.
-
-2003-09-03 Michael Snyder <msnyder@redhat.com>
-
- * config/djgpp/fnchange.lst: Fix up sim/frv/profile-fr*.[ch].
-
-2003-09-03 Andrew Cagney <cagney@redhat.com>
-
- * config/rs6000/tm-rs6000.h (IBM6000_TARGET): Delete definition.
- * config/rs6000/nm-rs6000.h (DEPRECATED_IBM6000_TARGET): Define.
- * symfile.c (syms_from_objfile): Update.
- (reread_symbols): `Update
- * exec.c (exec_file_attach): Update.
- (exec_file_attach): Update.
- * config/powerpc/tm-nbsd.h: Delete #undef IBM6000_TARGET, revert
- 2003-08-29 change.
- * config/powerpc/tm-linux.h: Delete #undef IBM6000_TARGET.
-
-2003-09-03 Daniel Jacobowitz <drow@mvista.com>
-
- * arm-tdep.c: Include frame-unwind.h, frame-base.h, and
- trad-frame.h.
- (arm_get_cache): Delete macro.
- (struct arm_prologue_cache): Update comments. Make saved_regs into
- a trad_frame_saved_reg pointer. Remove unwound_pc; rename unwound_sp
- to prev_sp.
- (thumb_scan_prologue): Update for cache changes. Don't call
- DEPRECATED_PC_IN_CALL_DUMMY.
- (arm_scan_prologue): Update for cache changes. Take NEXT_FRAME
- argument and use it in desperation search for our prologue. Do not
- search past the specified PC.
- (arm_make_prologue_cache): Simplify.
-
- (arm_prologue_this_id, arm_prologue_prev_register)
- (arm_prologue_unwind, arm_prologue_unwind_sniffer)
- (arm_normal_frame_base, arm_normal_base, arm_make_sigtramp_cache)
- (arm_sigtramp_this_id, arm_sigtramp_prev_register)
- (arm_sigtramp_unwind, arm_sigtramp_unwind_sniffer)
- (arm_unwind_dummy_id, arm_unwind_pc, arm_unwind_sp): New.
-
- (arm_frame_chain_valid, arm_find_callers_reg)
- (arm_frame_saved_pc, arm_read_fp, arm_frame_init_saved_regs)
- (arm_pop_frame): Delete obsolete methods.
- (arm_minimal_frame_chain, arm_minimal_frame_info): Delete.
-
- (arm_gdbarch_init): Update for new frame methods. Register prologue
- and sigtramp unwinders. Set the default frame base method.
-
- * Makefile.in (arm-tdep.o): Update dependencies.
- * varobj.c (find_frame_addr_in_frame_chain): Call
- get_frame_base_address.
- * std-regs.c (value_of_builtin_frame_fp_reg): Likewise.
-
-2003-09-03 Daniel Jacobowitz <drow@mvista.com>
-
- * arm-tdep.c (arm_minimal_frame_chain): Renamed from
- arm_frame_chain. Take NEXT_FRAME and CACHE arguments.
- Use the cache instead of DEPRECATED_FRAME_SAVED_PC.
- (arm_minimal_frame_info): Renamed from arm_init_extra_frame_info.
- Take NEXT_FRAME and CACHE arguments. Call
- FRAMELESS_FUNCTION_INVOCATION instead of checking FROMLEAF argument.
- Set unwound_pc in CACHE instead of modifying the frame argument.
- Don't bother checking the frame type when looking for sigtramp
- frames.
- (arm_make_prologue_cache, arm_frame_chain)
- (arm_init_extra_frame_info): New functions.
-
-2003-09-03 Daniel Jacobowitz <drow@mvista.com>
-
- * arm-tdep.c (arm_get_cache): Define.
- (struct arm_prologue_cache): Renamed from frame_extra_info. Add
- unwound_sp, unwound_pc, and saved_regs.
- (thumb_scan_prologue): Take a cache instead of the frame.
- (arm_scan_prologue): Likewise.
- (arm_frame_chain): Create a temporary cache for arm_scan_prologue
- instead of a temporary frame.
- (arm_init_extra_frame_info): Allocate and use a cache.
- (arm_frame_saved_pc, arm_pop_frame): Use the cache.
-
-2003-09-03 Andrew Cagney <cagney@redhat.com>
-
- * config/arm/wince.mt (TM_CLIBS): Replace WIN32LIBS.
- * config/mips/wince.mt (TM_CLIBS): Ditto.
- * config/sh/wince.mt (TM_CLIBS): Ditto.
- * config/pa/hppa64.mt (TM_CLIBS): Delete.
- * config/sparc/sp64.mt (CC): Delete.
-
-2003-09-03 Andrew Cagney <cagney@redhat.com>
-
- * defs.h: Do not include "arch-utils.h".
- (GDB_MULTI_ARCH): If not defined, set to GDB_MULTI_ARCH_PARTIAL or
- GDB_MULTI_ARCH_PURE.
- * configure.in (GDB_MULTI_ARCH): Do not define.
- * configure, config.in: Regenerate.
- * configure.tgt: Do not set variable "gdb_multi_arch".
- * config/s390/s390x.mt (GDB_MULTI_ARCH): Delete.
- * config/s390/s390.mt (GDB_MULTI_ARCH): Delete.
- * config/i386/x86-64linux.mt (GDB_MULTI_ARCH): Delete.
- * config/v850/v850.mt (TM_FILE): Delete disabled definition.
- * config/m68hc11/m68hc11.mt (TM_FILE): Delete definition.
- * config/vax/tm-vax.h (GDB_MULTI_ARCH): Delete definition.
- * config/sparc/tm-sparc.h (GDB_MULTI_ARCH): Delete definition.
- * config/sparc/tm-sun4sol2.h (GDB_MULTI_ARCH): Delete definition.
- * config/sparc/tm-nbsd.h (GDB_MULTI_ARCH): Delete definition.
- * config/sparc/tm-linux.h (GDB_MULTI_ARCH): Delete definition.
- * config/sparc/tm-sp64.h (GDB_MULTI_ARCH): Delete definition.
- * config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Delete definition.
- * config/ns32k/tm-ns32k.h (GDB_MULTI_ARCH): Delete definition.
- * config/m68k/tm-m68k.h (GDB_MULTI_ARCH): Delete definition.
- * config/i386/tm-i386.h (GDB_MULTI_ARCH): Delete definition.
- * config/h8300/tm-h8300.h (GDB_MULTI_ARCH): Delete definition.
- * config/frv/tm-frv.h (GDB_MULTI_ARCH): Delete definition.
- * config/alpha/tm-alpha.h (GDB_MULTI_ARCH): Delete definition.
-
-2003-08-30 Michael Chastain <mec@shout.net>
-
- * Makefile.in: Remove tm-hp300bsd.h, tm-hp300hpux.h.
- * config/m68k/nm-hp300hpux.h: Delete.
- * config/m68k/tm-hp300hpux.h: Delete.
- * config/m68k/xm-hp300hpux.h: Delete.
- * config/m68k/xm-hp300bsd.h: Delete.
- * config/djgpp/fnchange.lst: Remove nm-hp300hpux.h,
- tm-hp300hpux.h, xm-hp300hpux.h.
- * somsolib.c: Remove comment about hp300 shared libraries.
-
-2003-08-31 Mark Kettenis <kettenis@gnu.org>
-
- * i386-linux-nat.c (ps_get_thread_area): Don't define as extern.
- Only define PTRACE_GET_THREAD_AREA is not already defined.
- Various style fixes in code and comments and some additional
- spelling fixes in comments. Move after functions dealing with
- debug registers.
- * x86-64-linux-nat.c (ps_get_thread_area): Don't define as extern.
- Fix coding-style.
-
- * alphafbsd-tdep.c (alphafbsd_sigcontext_addr): Use
- frame_unwind_register_unsigned instead of
- frame_unwind_unsigned_register.
-
-2003-08-30 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Search for gethostbyname in libnsl.
- * configure: Regenerated.
-
-2003-08-29 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Remove redundant AC_MSG_RESULT in check for
- uintptr_t in stdint.h.
- * configure: Regenerated.
-
- * amd64-nat.h (struct regcache): Add opaque declaration.
-
- * i386-linux-tdep.h (I386_LINUX_NUM_REGS): New define.
- * x86-64-linux-nat.c: Include "i386-linux-tdep.h" and "amd64.h".
- Change "register array" to "register cache" in comments.
- (x86_64_linux_gregset64_reg_offset): New variable.
- (GETREGS_SUPPLIES): Remove macro.
- (supply_gregset): Call amd64_supply_native_gregset instead of
- x86_64_linux_supply_gregset.
- (fill_gregset): Rename `regno' to `regnum'. Call
- amd64_collect_native_gregset instead of x86_64_linux_fill_gregset.
- (store_regs): Rename `regno' to `regnum'.
- (store_fpregs): Rename `regno' to `regnum'.
- (fetch_inferior_registers): Rename `regno' to `regnum'. Use
- amd64_native_gregset_supplies_p instead of GREGSET_SUPPLIES.
- Reorganize function a bit.
- (store_inferior_registers): Rename `regno' to `regnum'. Use
- amd64_native_gregset_supplies_p instead of GREGSET_SUPPLIES.
- Reorganize function a bit.
- (_initialize_x86_64_linux_nat): New function.
- * config/i386/x86-64linux.mh.
-
-2003-08-29 Andrew Cagney <cagney@redhat.com>
-
- * config/mips/tm-embed.h (STOPPED_BY_WATCHPOINT): Delete macro.
- (TARGET_CAN_USE_HARDWARE_WATCHPOINT): Delete macro.
- (target_remove_watchpoint): Delete macro.
- (target_insert_watchpoint): Delete macro.
- (remote_mips_can_use_hardware_watchpoint): Delete declaration.
- (remote_mips_stopped_by_watchpoint): Delete declaration.
- (remote_mips_remove_watchpoint): Delete declaration.
- (remote_mips_set_watchpoint): Delete declaration.
- (TARGET_HAS_HARDWARE_WATCHPOINTS): Delete macro.
- * remote-mips.c (_initialize_remote_mips): Set
- "to_insert_watchpoint", "to_stopped_by_watchpoint",
- "to_can_use_hardware_watchpoint", and "to_remove_watchpoint".
- (mips_insert_watchpoint): Rename remote_mips_set_watchpoint.
- (mips_remove_watchpoint): Rename remote_mips_remove_watchpoint.
- (mips_stopped_by_watchpoint): Rename
- remote_mips_stopped_by_watchpoint.
- (mips_can_hardware_watchpoint): Rename
- remote_mips_can_use_hardware_watchpoint, update function
- signature.
-
-2003-08-29 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-linux-tdep.c (user_to_gdb_regmap): Remove USER_CS and
- USER_DS. We haven't given them a register number yet.
-
- * amd64-nat.h: New file.
- * amd64-nat.c: New file.
- * amd64fbsd-nat.c: Include "amd64-nat.h".
- (REG_ADDR, GETREGS_SUPPLIES): Remove macros.
- (amd64fbsd32_r_reg_offset): New variable.
- (supply_gregset): Simply call amd64_supply_native_gregset.
- (fill_gregset): Rename `regno' to `regnum'. Simply call
- amd64_collect_native_gregset.
- (fill_fpregset): Rename `regno' to `regnum'.
- (fetch_inferior_registers): Rename `regno' to `regnum'. Replace
- usage of GETREGS_SUPPLIES with amd64_native_gregset_supplies_p.
- Use `struct reg' and `struct fpreg' instead of `gregset_t' and
- `fpregset_t'. Call amd64_supply_native_gregset instead of
- supply_gregset. Call x86_64_supply_fxsave instead of
- supply_fpregset.
- (store_inferior_registers): Rename `regno' to `regnum'. Replace
- usage of GETREGS_SUPPLIES with amd64_native_gregset_supplies_p.
- Use `struct reg' and `struct fpreg' instead of `gregset_t' and
- `fpregset_t'. Call amd64_collect_native_gregset instead of
- fill_gregset. Call x86_64_collect_fxsave instead of
- fill_fpregset.
- (_initialize_am64fbsd_nat): Initialize
- amd64_native_gregset32_reg_offset and
- amd64_native_gregset64_reg_offset.
- * config/i386/fbsd64.mh (NATDEPFILES): Add amd64-nat.o.
-
- * regcache.c (regcache_raw_supply): Don't assert that BUF isn't a
- null pointer. Fix typo in comment.
-
- * regcache.c (supply_register): Reimplement to call
- regcache_raw_supply.
- (regcache_collect): Reimplement by calling regcache_raw_collect.
-
-2003-08-28 Mark Kettenis <kettenis@gnu.org>
-
- * regcache.c (register_buffer): Consitify first argument.
- (regcache_raw_supply, regcache_raw_collect): New
- functions.
-
-2003-08-28 Daniel Jacobowitz <drow@mvista.com>
-
- * config/powerpc/tm-nbsd.h: Undefine IBM6000_TARGET. Suggested
- by Nathan J. Williams.
-
-2003-08-28 Daniel Jacobowitz <drow@mvista.com>
-
- * lin-lwp.c (wait_lwp): New function, copied from
- stop_wait_callback. Clean up.
- (stop_wait_callback): Use wait_lwp.
-
-2003-08-28 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (gdb_print_insn_mips): Set the disassembler's
- flavour and disassembler options.
- (_initialize_mips_tdep): Do not set deprecated_tm_print_insn.
- (mips_gdbarch_init): Set "print_insn". Delete initialization of
- deprecated_tm_print_insn_info.
-
-2003-08-27 Andrew Cagney <cagney@redhat.com>
-
- * s390-tdep.c (s390_readinstruction): Delete "info" parameter.
- Use target_read_memory.
- (s390_get_frame_info): Update. Do not reference
- deprecated_tm_print_insn_info.
- (s390_check_function_end, s390_is_sigreturn): Ditto.
-
-2003-08-27 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (cris-tdep.o): Update dependencies.
- * cris-tdep.c: Include "gdb_assert.h".
- (cris_gdbarch_init): Set print_insn.
- (_initialize_cris_tdep): Do not set deprecated_tm_print_insn.
- (cris_delayed_get_disassembler): Simplify, directly call the
- disassembler returned by cris_get_disassembler.
- * hppa-tdep.c (hppa_gdbarch_init): Set print_insn.
- (_initialize_hppa_tdep): Do not set deprecated_tm_print_insn.
- * ns32k-tdep.c (ns32k_gdbarch_init): Set print_insn.
- (_initialize_ns32k_tdep): Do not set deprecated_tm_print_insn.
- * mn10300-tdep.c (mn10300_gdbarch_init): Set print_insn.
- (_initialize_mn10300_tdep): Do not set deprecated_tm_print_insn.
- * mcore-tdep.c (mcore_gdbarch_init): Set print_insn.
- (_initialize_mcore_tdep): Do not set deprecated_tm_print_insn.
- * frv-tdep.c (frv_gdbarch_init): Set print_insn.
- (_initialize_frv_tdep): Do not set deprecated_tm_print_insn.
- * sparc-tdep.c (sparc_gdbarch_init): Set print_insn.
- (gdb_print_insn_sparc): Delete function.
- (_initialize_sparc_tdep): Do not set deprecated_tm_print_insn or
- deprecated_tm_print_insn_info.
- * v850-tdep.c (v850_gdbarch_init): Set print_insn.
- (_initialize_v850_tdep): Do not set deprecated_tm_print_insn.
- (v850_gdbarch_init): Do not set deprecated_tm_print_insn_info.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Set print_insn.
- (_initialize_xstormy16_tdep): Do not set deprecated_tm_print_insn.
- * s390-tdep.c (gdb_print_insn_s390): Delete function.
- (_initialize_s390_tdep): Do not set deprecated_tm_print_insn.
- (s390_gdbarch_init): Set print_insn.
-
-2003-08-27 Andrew Cagney <cagney@redhat.com>
-
- * ppc-linux-tdep.c (ppc64_call_dummy_address): Delete function.
- (ppc_linux_init_abi): For PPC64, do not set call_dummy_address.
- * infcall.c (call_function_by_hand): Convert the entry point
- address into a code address.
-
-2003-08-27 Andrew Cagney <cagney@redhat.com>
-
- * dsrec.c: Include "gdb_string.h".
- * Makefile.in (dsrec.o): Update dependencies.
-
-2003-08-27 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: Add gdb/testsuite/gdb.mi/mi2-var-*.
-
-2003-08-27 Andrew Cagney <cagney@redhat.com>
-
- * alpha-osf1-tdep.c (alpha_call_dummy_address): Delete function.
- (alpha_osf1_init_abi): Do not set call_dummy_address.
-
-2003-08-27 David Carlton <carlton@kealia.com>
-
- From Randolph Chung <tausq@debian.org>:
- * linux-proc.c (linux_info_proc_cmd): rework the code so that it
- compiles with -Wformat-nonliteral -Werror.
-
-2003-08-26 Jim Blandy <jimb@redhat.com>
-
- * solib-svr4.c (bfd_lookup_symbol): New SECT_FLAGS argument.
- (enable_break): Pass SEC_CODE as the SECT_FLAGS argument to
- bfd_lookup_symbol, since we only want symbols in code sections.
- (look_for_base): Pass zero as the SECT_FLAGS argument to
- bfd_lookup_symbol, since we're not concerned about which section
- the symbol is in.
-
-2003-08-26 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c (examine_prologue): Only stop at predicated insns if
- we are frameless or the return address register is already known.
-
-2003-08-26 Andrew Cagney <cagney@redhat.com>
-
- * i386-linux-nat.c (ps_get_thread_area): Make "desc" four "int"s
- in size. Add comments.
-
-2003-08-26 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c (ia64_convert_from_func_addr): New function.
- (ia64_gdbarch_init): Call set_gdbarch_convert_from_func_addr().
-
-2003-08-26 Jason Merrill <jason@redhat.com>
-
- * dwarf2read.c (dwarf_attr_name): Move DW_AT_MIPS_linkage_name
- case out of #ifdef MIPS block.
-
-2003-08-25 Daniel Jacobowitz <drow@mvista.com>
-
- PR java/1322
- * dwarf2-frame.c (dwarf2_frame_find_fde): Check whether any FDEs are
- available before calling SECT_OFF_TEXT.
- * PROBLEMS: Remove description of java/1322.
-
-2003-08-25 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c (pseudo_regs): New enum that lists gr32-gr127, p0-p63,
- bof, and nat0-nat127 as pseudo-registers.
- (ia64_frame_cache): New struct used to cache frame info.
- (ia64_register_reggroup_p): New routine used to override default
- register grouping so registers without names are still saved and
- restored.
- (ia64_dwarf_reg_to_regnum): New routine to map gr32-gr127 to their
- pseudo values.
- (ia64_pseudo_register_read): New routine to read pseudo-registers.
- (ia64_pseudo_register_write): New routine to write pseudo-registers.
- (ia64_alloc_frame_cache): New routine to create a new
- ia64_frame_cache.
- (examine_prologue): Change prototype to add next_frame pointer.
- Assume frameless until otherwise proven. Verify that the cfm for
- current frame matches the cfm that should occur for the prologues
- alloc insn and if equal, mark as not frameless. At end of routine,
- if not frameless, calculate registers for the previous frame and store
- in the cache, if a cache is provided.
- (ia64_skip_prologue): Use new prototype when calling examine_prologue
- and pass 0 for next_frame.
- (ia64_store_return_value): Change to use convert_typed_floating()
- instead of calling ia64_convert_to_raw().
- (ia64_extract_return_value): Change to use convert_typed_floating()
- instead of calling ia64_convert_to_virtual().
- (ia64_frame_cache): New routine to support new frame model.
- (ia64_frame_this_id, ia64_frame_prev_register): Ditto.
- (ia64_frame_sniffer): Ditto.
- (ia64_sigtramp_frame_init_saved_regs): Ditto.
- (ia64_sigtramp_frame_cache, ia64_sigtramp_frame_this_id): Ditto.
- (ia64_sigtramp_frame_prev_register): Ditto.
- (ia64_sigtramp_frame_sniffer): Ditto.
- (ia64_frame_base_address): Ditto.
- (ia64_extract_struct_value_address): Change to issue error message.
- (ia64_frame_align): New routine to align sp.
- (ia64_push_dummy_call): New routine based on ia64_push_arguments().
- (ia64_push_arguments): Removed. Logic moved to
- ia64_push_dummy_call().
- (ia64_push_return_address): Ditto.
- (ia64_unwind_dummy_id): New function.
- (ia64_unwind_pc): Ditto.
- (ia64_convert_register_p): Ditto.
- (ia64_register_to_value): Ditto.
- (ia64_value_to_register): Ditto.
- (ia64_pop_frame, ia64_pop_frame_regular): Removed.
- (ia64_register_byte, ia64_register_raw_size): Ditto.
- (ia64_register_virtual_size, ia64_register_virtual_byte): Ditto.
- (ia64_saved_pc_after_call): Ditto.
- (ia64_frame_chain, ia64_frame_saved_pc): Ditto.
- (ia64_frame_init_saved_regs, ia64_get_saved_register): Ditto.
- (ia64_register_convertible, ia64_register_convert_to_virtual): Ditto.
- (ia64_register_convert_to_raw): Ditto.
- (ia64_store_struct_return, ia64_call_dummy_words): Ditto.
- (ia64_init_extra_frame_info): Ditto.
- (ia64_frame_args_address, ia64_frame_locals_address): Ditto.
- (ia64_gdbarch_init): Remove registering of deprecated functions that
- are no longer used. Add registration of new gdbarch functions.
- Remove registering deprecated_write_sp. Replace
- set_gdbarch_register_virtual_type() with set_gdbarch_register_type().
- Delete set_gdbarch_deprecated_register_convertible(),
- set_gdbarch_deprecated_register_convert_to_virtual(), and
- set_gdbarch_deprecated_register_convert_to_raw() calls. Remove
- set_gdbarch_deprecated_register_size(),
- set_gdbarch_deprecated_register_bytes(),
- set_gdbarch_pcregnum(),
- set_gdbarch_deprecated_register_byte(),
- set_gdbarch_deprecated_register_raw_size(),
- set_gdbarch_deprecated_max_register_raw_size(),
- set_gdbarch_deprecated_register_virtual_size(),
- and set_gdbarch_deprecated_max_register_virtual_size() calls.
- Replace set_gdbarch_deprecated_extract_return_value() with
- set_gdbarch_extract_return_value(). Remove calls to:
- set_gdbarch_deprecated_saved_pc_after_call();
- set_gdbarch_deprecated_frame_chain(),
- set_gdbarch_deprecated_frame_saved_pc(),
- set_gdbarch_deprecated_frame_init_saved_regs(),
- set_gdbarch_deprecated_get_saved_register(),
- set_gdbarch_deprecated_call_dummy_words(),
- set_gdbarch_deprecated_sizeof_call_dummy_words(),
- set_gdbarch_deprecated_init_extra_frame_info(),
- set_gdbarch_deprecated_frame_args_address(),
- set_gdbarch_deprecated_frame_locals_address(),
- and set_gdbarch_deprecated_dummy_write_sp().
- Add set_gdbarch_convert_register_p(),
- set_gdbarch_register_to_value(),
- set_gdbarch_value_to_register(),
- set_gdbarch_push_dummy_call(),
- set_gdbarch_frame_align(),
- set_gdbarch_unwind_dummy_id(),
- set_gdbarch_unwind_pc(),
- frame_unwind_append_sniffer(),
- frame_unwind_append_sniffer(),
- and frame_base_set_default().
-
-2003-08-25 Chris Demetriou <cgd@broadcom.com>
-
- * configure.tgt: Document need for special "mipsisa64" handling.
- (mipsisa64*-*-linux64): Handle as target linux64.
- (mipsisa64*-*-*): Handle as target embed64.
-
-2003-08-18 Michael Chastain <mec@shout.net>
-
- * PROBLEMS: Document pr gdb/1322, the Java anonymous
- objfile bug.
-
-2003-08-24 Mark Kettenis <kettenis@gnu.org>
-
- * i387-tdep.h: Update copyright date.
- (I387_SIZEOF_FSAVE, I387_SIZEOF_FXSAVE): New defines.
-
- * linux-proc.c (linux_proc_xfer_memory): Remove comment about
- CFLAGS games to reflect reality.
-
-2003-08-24 Andrew Cagney <cagney@redhat.com>
-
- * arm-tdep.c (_initialize_arm_tdep): Simplify by assuming
- GDB_MULTI_ARCH is always non-zero.
- * osabi.c (_initialize_gdb_osabi): Ditto.
- (gdbarch_init_osabi): Ditto.
- * sparc-tdep.c: Ditto for #if code.
-
-2003-08-23 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c (x86_64_supply_fxsave): Add `regnum' argument.
- Update comments.
- * x86-64-tdep.h (x86_64_supply_fxsave): Adjust prototype. Update
- comments.
- * x86-64-linux-tdep.c (fetch_core_registers): Adjust call to
- x86_64_supply_fxsave.
- * x86-64-linux-nat.c (supply_fpregset): Adjust call to
- x86_64_supply_fxsave.
- * amd64fbsd-nat.c (supply_fpregset): Adjust call to
- x86_64_supply_fxsave.
-
-2003-08-23 Andreas Jaeger <aj@suse.de>
-
- * x86-64-tdep.c (x86_64_supply_fxsave): Adjust call to
- i387_supply_fxsave.
-
-2003-08-23 Mark Kettenis <kettenis@gnu.org>
-
- * go32-nat.c (fetch_register): Call i387_supply_fsave instead of
- i387_supply_register.
- (go32_fetch_registers): Adjust call to i387_supply_fsave.
- * i386nbsd-tdep.c (fetch_core_registers): Adjust call to
- i387_supply_fsave.
- (fetch_elfcore_registers): Adjust call to i387_supply_fsave and
- i387_supply_fxsave.
- * i386obsd-tdep.c (fetch_core_registers): Adjust call to
- i387_supply_fsave.
- * i386bsd-nat.c (supply_fpregset): Adjust call to
- i387_supply_fsave.
- (fetch_inferior_registers): Remove extraneous whitespace. Adjust
- call to i387_supply_fxsave. Call i387_supply_fsave instead of
- supply_fpregset.
- (store_inferior_registers): Remove extraneous whitespace. Call
- i387_fill_fsave instead of fill_fpregset.
- * i386gnu-nat.c (fetch_fpregs): Adjust call to i387_supply_fsave.
- (supply_fpregset): Likewise.
- * i386v4-nat.c (supply_fpregset): Adjust call to
- i387_supply_fsave.
- * i386-interix-nat.c (supply_fpregset): Adjust call to
- i387_supply_fsave.
- * i386-linux-nat.c (supply_fpregset): Adjust call to
- i387_supply_fsave.
- (supply_fpxregset): Adjust call to i387_adjust_fxsave.
- * i386-nto-tdep.c (i386nto_supply_fpregset): Adjust calls to
- i387supply_fsave and i387_supply_fxsave.
- * i387-tdep.c (i387_supply_fsave): Add `regnum' argument.
- Incorporate code from `i387_supply_register.
- (i387_supply_register): Remove.
- (i387_supply_fxsave): Add `regnum' argument.
- Update comments.
- * i387-tdep.h (i387_supply_fsave, i387_supply_fsxave): Adjust
- prototype.
- (i387_supply_register): remove prototype.
- Update comments.
-
-2003-08-22 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: Remove gdb/testsuite/gdb.c++/*.
- Add lines for files in gdb/testsuite/gdb.cp/* that are
- still not 8.3 unique.
-
-2003-08-22 Daniel Jacobowitz <drow@mvista.com>
-
- * gnu-v3-abi.c (gnuv3_baseclass_offset): Check whether
- TYPE_VPTR_FIELDNO is valid.
-
-2003-08-19 Mark Kettenis <kettenis@gnu.org>
-
- * utils.c (set_width_command): Remove prototypes.
- (set_screen_size): New prototype.
- (init_page_info): Simplify by fetching the screen size from
- Readline. Call set_screen_size.
- (set_screen_size): New function.
- (set_width): Add missing whitespace in comment.
- (set_width_command): Call set_screen_size.
- (set_height_command): New function.
- (initialize_utils): Fix formatting. Make "set height" command
- call set_height_command. Remove redundant code that turns off
- pagination if output isn't a terminal. Remove redundant call to
- set_width_command.
-
-2003-08-22 Mark Kettenis <kettenis@gnu.org>
-
- * sparc64-tdep.h (sparc64_regnum): Fix comment.
- (sparc64_supply_rwindow, sparc64_fill_rwindow): Remove prototypes.
- (sparc_supply_rwindow, sparc_fill_rwindow): New prototypes.
- * sparc64-tdep.c (sparc64_pseudo_register_read): Add missing
- `case' keyword.
- (sparc64_register_info): Give the reister with number
- SPARC64_STATE_REGNUM a name.
- (sparc64_pseudo_register_write): Add support for %cwp, %pstate,
- %asi and %ccr.
- (sparc64_push_dummy_call): Take BIAS into account when checking
- stcak alignment.
- (sparc_software_single_step): Remove assertions that check whether
- NPC and NNPC were zero.
- (sparc_supply_rwindow): Make public. Merge functionality with
- sparc64_supply_rwindow.
- (sparc_fill_rwindow): Make public. Merge functionality with
- sparc64_fill_rwindow.
- (sparc64_supply_rwindow, sparc64_fill_rwindow): Remove.
- * sparc64fbsd-nat.c (_initialize_sparc64fbsd_nat): Set
- SPARCBSD_FPREG_SUPPLIES_P to sparc64fbsd_fpreg_supplies_p.
- * sparc64fbsd-tdep.c (sparc64fbsd_supply_reg): Call
- sparc_supply_rwindow instead of sparc64_supply_rwindow.
-
- * reggroups.c: Add whitespace after declarations of local
- variables in functions.
-
-2003-08-21 Michael Chastain <mec@shout.net>
-
- * gdbtypes.h: Change array bound type from an int to enum.
-
-2003-08-21 Andrew Cagney <cagney@redhat.com>
-
- * config/sparc/tm-sp64.h: Delete #if !GDB_MULTI_ARCH and #if 0 code.
- * config/sparc/tm-sparc.h: Ditto.
- * config/arm/tm-arm.h (GDB_MULTI_ARCH): Define GDB_MULTI_ARCH
- unconditionally.
- * config/pa/tm-hppa.h (GDB_MULTI_ARCH): Ditto.
-
-2003-07-13 Mark Kettenis <kettenis@gnu.org>
-
- * objfiles.h (struct objfile): Add memebers `data' and `num_data'.
- (register_objfile_data, set_objfile_data, objfile_data): New
- prototypes.
- * objfiles.c (objfile_alloc_data, objfile_free_data): New
- prototypes.
- (allocate_objfile): Call objfile_alloc_data.
- (free_objfile): Call objfile_free_data.
- (struct objfile_data): New.
- (struct objfile_data_registration): New.
- (struct objfile_data_registry): New.
- (objfile_data_registry): New variable.
- (register_objfile_data): New function.
- (objfile_alloc_data, objfile_free_data): New functions.
- (set_objfile_data, objfile_data): New functions.
- * dwarf2-frame.c (dwarf2_frame_data): New variable.
- (dwarf2_frame_find_fde, add_fde): Use new per-objfile data mechanism.
- (_initialize_dwarf2_frame): New function and prototype.
-
-2003-08-21 Andrew Cagney <cagney@redhat.com>
-
- * sh3-rom.c (sh3_open, sh3e_open): Use gdbarch_update_p to select
- a specific architecture.
- * arch-utils.h (set_architecture_from_arch_mach): Delete
- declaration.
- (target_architecture_hook): Delete declaration.
- * arch-utils.c: Delete non GDB_MULTI_ARCH includes.
- (default_float_format): Assume GDB_MULTI_ARCH.
- (default_double_format): Assume GDB_MULTI_ARCH.
- (set_endian_from_file): Delete function.
- (arch_ok): Delete function.
- (set_arch): Delete function.
- (set_architecture_from_arch_mach): Delete function.
- (set_architecture_from_file): Delete function.
- (set_architecture): Assume GDB_MULTI_ARCH.
- (set_gdbarch_from_file): Assume GDB_MULTI_ARCH.
-
-2003-08-21 Mark Kettenis <kettenis@gnu.org>
-
- Rewrite FreeBSD/sparc64 native configuration.
- * sparcbsd-nat.c, sparcbsd-nat.h: New files.
- * sparc64fbsd-nat.c: New file.
- * sparc64fbsd-tdep.c: New file.
- * sparc64-tdep.c sparc64-tdep.h: New files.
- * Makefile.in (sparcbsd-nat.o, sparc64fbsd-nat.o, sparc64-tdep.o,
- sparc64fbsd-tdep.o): New dependencies.
- (SFILES): Add sparcbsd-nat.c, sparc64fbsd-nat.c, sparc64-tdep.c
- and sparc64fbsd-tdep.c.
- (sparc64_tdep_h, sparcbsd_nat_h): New variables.
- * config/sparc/fbsd.mh: Remove copyright notice.
- (NATDEPFILES): Remove sparc-nat.o, add sparc64fbsd-nat.o and
- sparcbsd-nat.o.
- * config/sparc/fbsd.mt: Remove copyright notice.
- (TDEPFILES): Remove sparc-tdep.o, solib.o solib-svr4.o,
- solib-legacy.o. Add sparc64-tdep.o and sparc64fbsd-tdep.o.
- * config/sparc/nm-fbsd.h: Don't include "elf/common.h".
- (SVR4_SHARED_LIBS, PTRACE_GETREGS, PTRACE_SETREGS,
- PTRACE_GETFPREGS, PTRACE_SETFPREGS, GDB_GREGSET_T, GDB_FPREGSET_T,
- regs, r_g1, r_ps, r_pc, r_npc, r_y, FPU_FSR_TYPE, fp_status, fpu,
- fpu_regs, fp_fr, fpu_fsr, Fpu_fsr): Remove defines.
- * config/sparc/tm-fbsd.h: Don't include "solib.h" and
- "sparc/tm-sp64.h".
- (SVR4_SHARED_LIBS, START_INFERIOR_TRAPS_EXPECTED): Remove defines.
- (GDB_MULTI_ARCH): Define to GDB_MULTI_ARCH_TM.
-
-2003-08-21 Michael Chastain <mec@shout.net>
-
- * symtab.h: Add doco on the space critical structures and
- some measurements of space usage.
-
-2003-08-21 Michael Snyder <msnyder@redhat.com>
-
- * tracepoint.c (trace_dump_command): Trace break address
- is subject to DECR_PC_AFTER_BREAK.
- (set_traceframe_context): Make "trace_line" an int.
- Fixes suggested by Mark Newman <mark.newman@lmco.com>
-
-2003-08-20 Michael Snyder <msnyder@redhat.com>
-
- * sh-tdep.h (struct gdbarch_tdep): New member FLOAT_ARGLAST_REG.
- * sh-tdep.c (sh_gdbarch_init): For sh2e, sh3e, and sh4, set
- FLOAT_ARG0_REGNUM and FLOAT_ARGLAST_REGNUM, to be used for
- argument passing.
- (sh_push_dummy_call_fpu, sh_push_dummy_call_nofpu): New
- functions, replace sh_push_dummy_call.
- (sh_gdbarch_init): Set push_dummy_call to one of new methods.
-
-2003-08-20 Michael Chastain <mec@shout.net>
-
- * gdbtypes.h (struct main_type): Rearrange to save space.
-
-2003-08-20 Michael Snyder <msnyder@redhat.com>
-
- * trad-frame.c: Comment typo fix.
-
-2003-08-20 Michael Snyder <msnyder@redhat.com>
- Kevin Buettner <kevinb@redhat.com>
-
- * frv-tdep.c (gdb_string.h, frame.h, trad-frame.h): Include.
- (frv_frame_init_saved_regs): Add declaration.
- (frame_extra_info): Add new field ``saved_regs''.
- (frv_frame_chain, frv_frame_saved_pc, frv_analyze_prologue)
- (frv_skip_prologue, frv_init_extra_frame_info, frv_pop_frame_regular):
- Update frame related code.
- (frv_extract_struct_value_address): Adjust formatting.
- * Makefile.in (frv-tdep.o): Update dependencies.
- * config/frv/tm-frv.h (target_insert_watchpoint)
- (target_remove_watchpoint, target_insert_hw_breakpoint)
- (target_remove_hw_breakpoint): Delete these macros.
- (remote_insert_watchpoint, remote_remove_watchpoint)
- (remote_insert_hw_watchpoint, remote_remove_hw_watchpoint): Remove
- these declarations.
-
-2003-08-20 Michael Chastain <mec@shout.net>
-
- * defs.h (ENUM_BITFIELD): New macro.
- * symtab.h (ENUM_BITFIELD): Use it.
- (BYTE_BITFIELD): Remove old macro, which was already disabled.
-
-2003-08-19 Shrinivas Atre <shrinivasa@kpitcummins.com>
+2004-01-21 Roland McGrath <roland@redhat.com>
* MAINTAINERS (write after approval): Add myself.
-2003-08-18 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (FRAME_RED_ZONE_SIZE): New architecture method.
- * gdbarch.h, gdbarch.c: Re-generate.
- * infcall.c (call_function_by_hand): Adjust the SP by
- frame_red_zone_size before allocating any stack space.
- * rs6000-tdep.c (rs6000_gdbarch_init): Set "frame_red_zone_size".
- * x86-64-tdep.c (x86_64_frame_align): New function.
- (x86_64_init_abi): Set "frame_red_zone_size" and "frame_align".
-
- * x86-64-tdep.c (x86_64_push_arguments): Revert 2003-08-07 change.
- Remove code adjusting SP so that it skips over the Red Zone.
-
-2003-08-18 Mark Kettenis <kettenis@gnu.org>
-
- * NEWS (New native configurations): Mention FreeBSD/amd64.
-
-2003-08-18 Andrew Cagney <cagney@redhat.com>
-
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Do not set
- "dwarf2_build_frame_info". Append "m68k_frame_sniffer" instead of
- "m68k_frame_p".
- (m68hc11_frame_sniffer): Replace "m68hc11_frame_p".
-
-2003-08-18 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c (x86_64_dwarf_regmap): Remove trailing whitespace.
-
-2003-08-18 Michal Ludvig <mludvig@suse.cz>
-
- * config/i386/nm-x86-64linux.h (LINUX_CHILD_POST_STARTUP_INFERIOR):
- Define.
- * i386-linux-nat.c: Include "linux-nat.h".
- (child_post_startup_inferior): New function.
-
-2003-08-18 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_analyze_register_saves): Handle register saves
- at the start of a frameless function. This probably fixes PR
- backtrace/1338.
-
-2003-08-17 Michael Chastain <mec@shout.net>
-
- * symfile.c (find_sym_fns): Remove special case for apollo target.
-
-2003-08-17 Daniel Jacobowitz <drow@mvista.com>
-
- * linux-nat.c (PTRACE_O_TRACEVFORKDONE, PTRACE_O_TRACEEXIT): Define.
- (PTRACE_EVENT_VFORKDONE, PTRACE_EVENT_EXIT): Define.
- (linux_parent_pid, linux_supports_tracevforkdone_flag): New variable.
- (linux_test_for_tracefork): Set linux_supports_tracevforkdone_flag.
- (linux_supports_tracevforkdone): New function.
- (linux_enable_event_reporting): Enable TRACEVFORK, TRACEEXEC, and
- TRACEVFORKDONE.
- (child_follow_fork): Handle vfork.
- (linux_handle_extended_wait): Likewise. Also handle exec.
- (child_insert_vfork_catchpoint, child_insert_exec_catchpoint): Enable.
- * NEWS: Mention fork tracing.
-
-2003-08-17 Daniel Jacobowitz <drow@mvista.com>
-
- * lin-lwp.c (child_wait): Call linux_record_stopped_pid.
-
-2003-08-17 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in (i386-linux-nat.o): Update dependencies.
- * config/i386/nm-linux.h (LINUX_CHILD_POST_STARTUP_INFERIOR): Define.
- * config/nm-linux.h (CHILD_POST_STARTUP_INFERIOR, CHILD_POST_ATTACH)
- (CHILD_FOLLOW_FORK, KILL_INFERIOR): Define.
- * i386-linux-nat.c: Include "linux-nat.h".
- (child_post_startup_inferior): New function.
- * i386-nat.c (child_post_startup_inferior): Wrap in #ifdef.
- * infptrace.c (kill_inferior): Wrap in #ifdef.
- * lin-lwp.c (lin_lwp_attach_lwp): Call child_post_attach after
- attaching to each LWP.
- (child_wait, lin_lwp_wait): Call linux_handle_extended_wait.
- (init_lin_lwp_ops): Fill in some more operations.
- * linux-nat.h (linux_enable_event_reporting)
- (linux_handle_extended_wait, linux_child_post_startup_inferior): New
- prototypes.
- * linux-nat.c (linux_enable_event_reporting): New function.
- (child_post_attach, linux_child_post_startup_inferior)
- (child_post_startup_inferior, child_follow_fork)
- (linux_handle_extended_wait, kill_inferior): New functions.
-
-2003-08-16 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Delete all #if not GDB_MULTI_ARCH code.
- * gdbarch.h, gdbarch.c: Re-generate.
-
-2003-08-16 Mark Kettenis <kettenis@gnu.org>
-
- * config/alpha/nm-fbsd.h (SVR4_SHARED_LIBS): Remove define.
-
-2003-08-16 Andrew Cagney <cagney@redhat.com>
-
- * NEWS: Mention that "set prompt-escape-char" was deleted.
- * top.c (get_prompt_1): Delete function.
- (gdb_prompt_escape):
- (init_main): Do not clear "gdb_prompt_escape". Delete "set
- prompt-escape-char" command.
- (MAX_PROMPT_SIZE): Delete macro.
- (get_prompt): Simplify, do not call get_prompt_1.
-
-2003-08-16 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (printcmd.o, valprint.o): Do not try to build with
- -Werror. -Wformat-nonliteral problems.
-
-2003-08-15 J. Brobecker <brobecker@gnat.com>
-
- Further multiarching work mostly for hppa64-*-hpux11:
- * hppa-tdep.h: New file.
- * hppa-tdep.c: #include hppa-tdep.c.
- (hppa32_num_regs): Renamed from hppa_num_regs.
- (hppa64_num_regs): New constant.
- (hppa64_call_dummy_breakpoint_offset): New constant.
- (hppa32_call_dummy_length): New constant.
- (hppa64_call_dummy_length): New constant.
- (hppa32_stack_align): Make name 32bit explicit.
- (hppa32_register_virtual_type): Likewise.
- (hppa32_extract_return_value): Likewise.
- (hppa32_use_struct_convention): Likewise.
- (hppa32_store_return_value): Likewise.
- (hppa64_register_virtual_type): New function.
- (hppa64_extract_return_value): New function.
- (hppa64_use_struct_convention): New function.
- (hppa64_store_return_value): New function.
- (hppa_frame_locals_address): Remove declaration, function does
- not exist anymore.
- (hppa_register_byte): Add support for PA64 ABI.
- (hppa_gdbarch_init): Add support for PA64 ABI.
- * hppa-hpux-tdep.c (hppa32_hpux_frame_saved_pc_in_sigtramp):
- Make name 32bit explicit.
- (hppa32_hpux_frame_base_before_sigtramp): Likewise.
- (hppa32_hpux_frame_find_saved_regs_in_sigtramp): Likewise.
- (hppa64_hpux_frame_saved_pc_in_sigtramp): New function.
- (hppa64_hpux_frame_base_before_sigtramp): New function.
- (hppa64_hpux_frame_find_saved_regs_in_sigtramp): New function.
- * config/pa/tm-hppa64.h: Remove macros that are no longer
- necessary now that the gdbarch vector is properly setup.
- Transform some macros into function calls. Some minor cleanup.
- * config/pa/tm-hppah.h: Update function calls in macros
- following the function renaming in hppa-hpux-tdep.c.
- * Makefile.in (hppa_tdep_h): New variable.
- (hppa-tdep.o): Add dependency over hppa_tdep_h.
-
-2003-08-14 Michael Snyder <msnyder@redhat.com>
-
- * disasm.c (gdb_disassemble_info): Set info->insn_sets to zero.
-
-2003-08-13 J. Brobecker <brobecker@gnat.com>
-
- * hppa-hpux-tdep.c (_initialize_hppa_hpux_tdep): Use the correct
- bfd arch_info when registering the GDB_OSABI_HPUX_ELF initialization
- routine.
-
-2003-08-13 Michael Snyder <msnyder@redhat.com>
-
- * frv-tdep.c (frv_push_arguments): Use deprecated ftype.
- (frv_saved_pc_after_call): Use deprecated ftype.
- (stupid_useless_init_extra_frame_info): Remove orphan prototype.
- (frv_remote_translate_xfer_address): Remove.
- (frv_gdbarch_init): Use generic_remote_translate_xfer_address.
-
-2003-08-13 J. Brobecker <brobecker@gnat.com>
-
- * hppa-tdep.c (hppa_gdbarch_init): Perform the ABI-specific gdbarch
- initialization after the common gdbarch initialization, not before.
-
-2003-08-13 J. Brobecker <brobecker@gnat.com>
-
- * config/pa/tm-hppa64.h (HPUX_1100): Remove, not used.
- (ADDR_BITS_REMOVE): Remove, redundant.
-
-2003-08-13 J. Brobecker <brobecker@gnat.com>
-
- * hppa-tdep.c (hppa_gdbarch_init): Set the addr_bits_remove
- gdbarch method to clear the 2 low bits of text addresses.
-
-2003-08-12 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (dsrec.o): Update dependencies.
- * dsrec.c: Include "gdb_assert.h".
- (make_srec): Use snprintf instead of sprintf, use a literal format
- string.
-
-2003-08-12 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (deprecated_frame_xmalloc): Use XMALLOC, instead of
- FRAME_OBSTACK_ZALLOC.
-
-2003-08-12 Kevin Buettner <kevinb@redhat.com>
-
- * i386-tdep.c (i386_gdbarch_init): Enable default support for
- SSE registers.
-
-2003-08-10 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.h (amd64fbsd_sigtramp_start, amd64fbsd_sigtramp_end,
- amd64fbsd_sc_reg_offset): Add extern declarations.
- * amd64fbsd-nat.c (_initialize_am64fbsd_nat): Remove extern
- declarations.
-
-2003-08-11 Ben Elliston <bje@wasabisystems.com>
-
- * MAINTAINERS (write after approval): Update my mail address.
-
-2003-08-10 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (monitor.o): Do not build monitor.c with -Werror.
-
-2003-08-10 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.h (i386fbsd_sigtramp_start, i386fbsd_sigtramp_end,
- i386obsd_sigtramp_start, i386obsd_sigtramp_end,
- i386fbsd4_sc_reg_offset, i386fbsd_sc_reg_offset,
- i386nbsd_sc_reg_offset, i386obsd_sc_reg_offset,
- i386bsd_sc_reg_offset): Add extern declarations.
- * i386obsd-nat.c: Include "i386-tdep.h"
- (_initialize_i386obsd_nat): Remove extern declarations.
- * i386fbsd-nat.c (_initialize_i386fbsd_nat): Remove extern
- declarations.
- * i386bsd-nat.c (_initialize_i386bsd_nat): Remove extern
- declarations.
-
- * i386-tdep.c (i386_register_to_value): Use get_frame_register
- instead of frame_read_register.
- (i386_fetch_pointer_argument): Use get_frame_register_unsigned
- instead of frame_read_register. Use I386_ESP_REGNUM instead of
- SP_REGNUM.
- (i386_frame_prev_register): Use frame_unwind_register_unsigned
- instead of frame_unwind_unsigned_register. Use
- I386_EFLAGS_REGISTER instead of PS_REGNUM.
- (i386_get_longjmp_target): Use regcache_read_unsigned_register
- instead of read_register. Use builtin_type_void_data_ptr instead
- of builtin_type_void_func_ptr when extracting the address of the
- jmp_buf.
- (i386_extract_return_value, i386_store_return_value,
- i386_pseudo_register_read, i386_pseudo_register_write): Use
- register_size instead REGISTER_RAW_SIZE.
-
-2003-08-10 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): Use xstrprintf instead of
- sprintf. Make "name" constant.
-
-2003-08-10 Mark Kettenis <kettenis@gnu.org>
-
- * i387-tdep.c (i387_register_to_value): Use get_frame_register
- instead of frame_read_register.
- (i387_print_float_info): Use get_frame_register and
- get_frame_register_unsigned instead of frame_register_read.
-
- * i386fbsd-nat.c: Include "i386-tdep.h".
- (child_resume): Make `eflags' an ULONGEST. Use
- regcache_cooked_read_unsigned and regcache_cooked_write_unsigned
- instead of register_read and register_write.
-
- * i386bsd-nat.c (fetch_inferior_registers,
- store_inferior_registers): Don't use && at the end of a line.
- (_initialize_i386bsd_nat): Fix typo.
-
- * frame.c (_initialize_frame): Add missing backslash.
-
- From Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de):
- * sol-thread.c (sol_thread_store_registers): Use regcache_collect
- and supply_register instead of manipulating the register buffer
+2004-01-21 Eli Zaretskii <eliz@gnu.org>
+
+ * utils.c (init_page_info): Move declarations of `rows' and
+ `cols' before the __GO32__-specific code. Move the closing brace
+ outside the #ifdef __GO32__..#endif block.
+ [__GO32__]: Use `rows' and `cols' to avoid compiler warnings.
+
+2004-01-21 Paul Brook <paul@codesourcery.com>
+
+ * infrun.c (handle_inferior_event): Check stop_stack_dummy if handling
+ BPSTAT_WHAT_CHECK_SHLIBS.
+
+2004-01-21 Paul Brook <paul@codesourcery.com>
+
+ * MAINTAINERS: Add myself to write-after-approval.
+
+2004-01-20 Andrew Cagney <cagney@redhat.com>
+
+ * ax-gdb.c (print_axs_value): Delete unused function.
+ * jv-lang.c (java_lookup_type): Delete unused function.
+ * cli/cli-dump.c (dump_filetype): Delete unused function.
+ * remote-mips.c (remote_mips_insert_hw_breakpoint)
+ (remote_mips_remove_hw_breakpoint): Delete unused functions.
+ (mips_getstring): Delete unused function.
+ (pmon_insert_breakpoint): Delete #if0ed function.
+ (PMON_MAX_BP): Delete #if0ed MACRO.
+ (mips_pmon_bp_info): Delete #if0ed variable.
+ (pmon_remove_breakpoint): Delete #if0ed function.
+ * monitor.c (monitor_write_even_block): Delete unused function.
+ (monitor_write_memory_block): Delete #if0ed code.
+ * dink32-rom.c (dink32_load): Delete unused function.
+ (_initialize_dink32_rom): Delete #if0ed code.
+ * d10v-tdep.c (d10v_daddr_p): Delete unused function.
+
+ * tui/tui-command.c: Update references.
+ * tui/tui-io.c: Update references.
+ * tui/tui-command.h: Update copyright.
+ (tui_dispatch_ctrl_char): Rename tuiDispatchCtrlChar.
+
+ * source.c (ambiguous_line_spec): Delete never-defined function.
+ * remote-rdi.c (arm_rdi_mourn, arm_rdi_send): Ditto.
+ * gdbtypes.c (add_name, add_mangled_type): Ditto.
+ * cli/cli-cmds.c (validate_comname): Ditto.
+
+ * tui/tui-disasm.h: Update copyright. Include "tui.h" and
+ "tui-data.h".
+ (tui_set_disassem_content): Rename tuiSetDisassemContent.
+ (tui_show_disassem): Rename tuiShowDisassem.
+ (tui_show_disassem_and_update_source): Rename
+ tuiVerticalDisassemScroll.
+ (tui_vertical_disassem_scroll): Rename tuiVerticalDisassemScroll.
+ (tui_get_begin_asm_address): Rename tuiGetBeginAsmAddress.
+ * tui/tui.h: Update copyright.
+ (enum tui_status): Define.
+ * tui/tui-data.h (enum tui_scroll_direction): Define.
+ * tui/tui-disasm.c: Update copyright. Update references.
+ * tui/tui-winsource.c: Update copyright. Update references.
+ * tui/tui-win.c: Update references.
+ * tui/tui-layout.c: Update references.
+
+2004-01-20 Andrew Cagney <cagney@redhat.com>
+
+ * mi/mi-cmd-stack.c (list_args_or_locals): Move declaration of
+ sym2 to start of block.
+
+2004-01-19 Michael Chastain <mec.gnu@mindspring.com>
+
+ * MAINTAINERS: Delete mmalloc.
+ * Makefile.in: Delete MMALLOC, MMALLOC_CFLAGS, -lmmalloc, mmalloc_h.
+ * NEWS: Mention removal of --with-malloc.
+ * acconfig.h: Delete USE_MMALLOC, MMCHECK_FORCE.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * configure.in: Delete MMALLOC_CFLAGS, MMALLOC, --with-mmalloc,
+ USE_MMALLOC, MMCHECK_FORCE.
+ * gdbinit.in: Remove mmalloc.
+ * utils.c: Delete USE_MMALLOC, NO_MMCHECK, MMCHECK_FORCE, malloc_botch.
+ * config/alpha/alpha-linux.mh: Delete MMALLOC, MMALLOC_CFLAGS.
+ * config/i386/go32.mh: Likewise.
+ * config/i386/interix.mh: Likewise.
+ * config/powerpc/xm-linux.h: Delete MMAP_BASE_ADDRESS, MMAP_INCREMENT.
+
+2004-01-19 Jeff Johnston <jjohnstn@redhat.com>
+
+ * linespec.c (decode_variable, symtab_from_filename): Call
+ error_silent with error message instead of throwing an exception
directly.
-
- From Peter Schauer (Peter.Schauer@regent.e-technik.tu-muenchen.de):
- * config/i386/nm-i386sol2.h
- (TARGET_REGION_SIZE_OK_FOR_HW_WATCHPOINT): Define to one.
-
- Based on a patch from Michael Elizabeth Chastain (mec@shout.net):
- * i386-tdep.c (i386_analyze_frame_setup): Recognize more
- instructions that GCC likes to mingle into the prologue. Fixes
- gdb/1253 and gdb/1255.
-
-2003-08-09 Andrew Cagney <cagney@redhat.com>
-
- Fix GDB PR cli/926.
- * cli/cli-decode.c (add_setshow_uinteger_cmd): New function.
- * command.h (add_setshow_uinteger_cmd): Declare.
- * frame.c (set_backtrace_cmd): New function.
- (show_backtrace_cmd): New function.
- * frame.c (_initialize_frame): Replace "set/show
- backtrace-below-main" with "set/show backtrace past-main". Add
- command "set/show backtrace limit".
- (backtrace_past_main): Rename "backtrace_below_main".
- (backtrace_limit): New variable.
- (get_prev_frame): Update. Check the backtrace_limit.
-
-2003-08-09 Andrew Cagney <cagney@redhat.com>
-
- * defs.h (xstrprintf): Declare.
- * utils.c (xstrprintf): New function.
- * breakpoint.c (insert_breakpoints): Replace sprintf and
- non-literal format strings, with xstrprintf and cleanups.
- (delete_breakpoint,breakpoint_re_set): Ditto.
- (commands_command, insert_breakpoints): Ditto.
- (bpstat_stop_status, break_at_finish_at_depth_command_1): Ditto.
- (break_at_finish_command_1): Ditto.
-
-2003-08-09 Andrew Cagney <cagney@redhat.com>
-
- * MAINTAINERS (language support): List Adam Fedor as Objective C
- maintainer.
-
-2003-08-08 J. Brobecker <brobecker@gnat.com>
-
- * NEWS (Multi-arched targets): Document that all hppa-hpux targets
- are now multiarched.
-
-2003-08-08 J. Brobecker <brobecker@gnat.com>
-
- * config/pa/tm-hppa64.h: Remove lots of macros that are no
- longer necessary now that hppa64 is partially multiarch'ed.
-
-2003-08-08 Andrew Cagney <cagney@redhat.com>
-
- * interps.c (interp_set): Check for a NULL "old_interp".
-
-2003-08-08 H.J. Lu <hongjiu.lu@intel.com>
-
- * Makefile.in (FLAGS_TO_PASS): Add DESTDIR.
- (install-only): Support DESTDIR.
- (uninstall): Likewise.
- (install-gdbtk): Likewise.
-
-2003-08-08 Elena Zannoni <ezannoni@redhat.com>
-
- * symtab.c (lookup_symbol_aux): Make sure that is_a_field_of_this
- contains something meaningful at all times.
-
-Fri Aug 8 00:28:46 UTC 2003 Brendan Conoboy <blc@redhat.com>
-
- * configure.host: Set gdb_host_cpu=arm when host_cpu=xscale.
-
-Fri Aug 8 00:28:38 UTC 2003 Brendan Conoboy <blc@redhat.com>
-
- * MAINTAINERS (write after approval): Added self.
-
-2003-08-07 Andrew Cagney <cagney@redhat.com>
-
- * inferior.h (AT_SYMBOL): Define.
- * blockframe.c (inside_entry_file): Check for AT_SYMBOL.
- * infcall.c (call_function_by_hand): Add code to handle AT_SYMBOL.
- * mips-tdep.c (mips_call_dummy_address): Delete function.
- (mips_gdbarch_init): Set call_dummy_location to AT_SYMBOL, do not
- set call_dummy_address.
-
-2003-08-07 Andrew Cagney <cagney@redhat.com>
-
- * language.c (op_error): Delete function.
- (binop_type_check): Delete function.
- * language.h (type_op_error, range_op_error): Delete macros.
- (op_error): Delete declaration.
-
-2003-08-07 Andrew Cagney <cagney@redhat.com>
-
- * interps.h (INTERP_MI2, INTERP_MI3): Define.
-
-2003-08-07 Michal Ludvig <mludvig@suse.cz>
-
- * x86-64-tdep.c (x86_64_dwarf_regmap): Correct register numbers.
- (x86_64_push_arguments): Skip the red zone.
-
-2003-08-05 Andrew Cagney <cagney@redhat.com>
-
- * reggroups.c (reggroup_next): Check for the final entry.
-
-2003-08-22 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: Remove gdb/testsuite/gdb.c++/*.
- Add lines for files in gdb/testsuite/gdb.cp/* that are
- still not 8.3 unique.
-
-2003-08-05 David Carlton <carlton@kealia.com>
-
- * configure.in (build_warnings): Delete -Wformat-nonliteral.
- * configure (build_warnings): Ditto.
-
- * Merge with mainline; tag is carlton_dictionary-20030805-merge.
-
-2003-08-04 Andrew Cagney <cagney@redhat.com>
-
- * monitor.h (monitor_dump_reg_block): Remove ATTR_FORMAT.
- * cli/cli-script.c (define_command): Call query directly, instead
- of passing it a buffer.
- * ocd.c (ocd_error): Pass error a constant format string.
- * remote-mips.c (mips_error): Use fputs_filtered.
-
- * solib-svr4.c (_initialize_svr4_solib): Update
- register_gdbarch_data call.
- * mips-linux-tdep.c (_initialize_mips_linux_tdep): Ditto.
-
- * gdbarch.sh (gdbarch_data_free_ftype): Delete declaration.
- (register_gdbarch_data): Delete "free" parameter. Update
- comments.
- * gdbarch.h, gdbarch.c: Re-generate.
- * reggroups.c (_initialize_reggroup): Update.
- * gnu-v3-abi.c (init_gnuv3_ops): Update.
- * frame-base.c (_initialize_frame_base): Update.
- * frame-unwind.c (_initialize_frame_unwind): Update.
- * user-regs.c (_initialize_user_regs): Update.
- * remote.c (_initialize_remote): Update.
- * regcache.c (_initialize_regcache): Update.
-
- * regcache.c (xfree_regcache_descr): Delete function.
- (_initialize_regcache): Update call to register_gdbarch_data.
- (init_regcache_descr, init_legacy_regcache_descr): Use
- GDBARCH_OBSTACK_XALLOC and GDBARCH_OBSTACK_CALLOC.
-
- * remote.c (free_remote_state): Delete function.
- (_initialize_remote): Update register_gdbarch_data.
- (init_remote_state): Use GDBARCH_OBSTACK_XALLOC and
- GDBARCH_OBSTACK_CALLOC instead of xmalloc / xcalloc.
-
-2003-08-04 Andrew Cagney <cagney@redhat.com>
-
- * reggroups.c (struct reggroup_el): Define.
- (struct reggroups): Delete field "nr_group". Replace array
- "group" with a "first" to "last" linked list.
- (reggroups_init): Update. Allocate using gdbarch's obstack.
- (reggroups_free): Delete function.
- (add_group): Update. Add "el" parameter.
- (reggroup_add): Pass gdbarch obstack allocated space to add_group.
- (default_groups): Update.
- (reggroup_next): Replace reggroups.
- (reggroups_dump): Update.
- (_initialize_reggroup): Pass XMALLOC allocated space to add_group.
- * regcache.c (regcache_dump): Use reggroup_next instead of reggroups.
- * infcmd.c (registers_info): Use reggroup_next instead of reggroups.
-
-2003-08-04 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in (tui-interp.o): Update dependencies.
-
-2003-08-04 David Carlton <carlton@kealia.com>
-
- * charset.c (cached_iconv_convert): Add __FILE__ and __LINE__ args
- to internal_error call.
- * source.c (forward_search_command): Add "%s" format argument.
- (reverse_search_command): Ditto.
- * top.c (quit_confirm): Ditto.
- * cli/cli-setshow.c (do_setshow_command): Ditto.
- * cp-valprint.c (cp_print_class_method): Replace
- {f,}printf_{un,}filtered by {f,}puts_{un,}filtered.
- (cp_print_class_member): Ditto.
- * event-top.c (command_line_handler): Ditto.
- * linux-proc.c (linux_info_proc_cmd): Ditto.
- * p-typeprint.c (pascal_type_print_base): Ditto.
- * p-valprint.c (pascal_object_print_class_method): Ditto.
- (pascal_object_print_class_member): Ditto.
- * printcmd.c (print_scalar_formatted,printf_command): Ditto.
- * remote.c (remote_cisco_section_offsets): Ditto.
- * top.c (command_line_input): Ditto.
- * utils.c (vwarning,error_stream,quit): Ditto.
- * valprint.c (print_floating,print_binary_chars)
- (print_octal_chars,print_decimal_chars,print_hex_chars): Ditto.
-
-2003-08-04 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (frame_func_unwind): Use frame_unwind_address_in_block.
-
-2003-08-02 Andrew Cagney <cagney@redhat.com>
-
- * config/djgpp/fnchange.lst: Fix up testsuite/gdb.c++/annota3.cc,
- gdb/testsuite/gdb.c++/annota3.exp, amd64fbsd-tdep.c and
- amd64fbsd-nat.c.
-
-2003-08-02 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in: Update all dependencies and definitions.
-
-2003-08-02 Adam Fedor <fedor@gnu.org>
-
- * linespec.c (is_objc_method_format): New function
- (decode_line_1, locate_first_half): Use it.
- Fixes PR objc/1298
-
-2003-08-01 Andrew Cagney <cagney@redhat.com>
-
- * NEWS: Mention that m32r is multi-arch.
- From 2003-07-28 Kei Sakamoto <sakamoto.kei@renesas.com>:
- * configure.tgt: Recognize m32r-*-*.
- * config/m32r/tm-m32r.h: Delete file.
- * config/m32r/m32r.mt: New file.
- * m32r-rom.c (m32r_upload_command): Use hostent only when
- gethostname succeeds, in order to avoid a compilation
- warning.
- * m32r-tdep.c (m32r_store_return_value): Add a cast to remove a
- compiler warning.
-
-2003-08-01 Michael Snyder <msnyder@redhat.com>
-
- * sh-tdep.c (sh_frame_align): New gdbarch method.
- (sh_gdbarch_init): Set up frame_align method.
-
-2003-07-31 Michael Snyder <msnyder@redhat.com>
-
- * value.h, values.c, infcall.c, infcmd.c: Revert 07-30 change,
- which is already covered by the new frames infrastructure.
-
-2003-07-31 Andrew Cagney <cagney@redhat.com>
-
- * user-regs.c (struct user_reg): Add "next" link.
- (struct user_regs): Replace "user" with "first" and "last" links.
- (append_user_reg): Add pre-allocated "reg" parameter.
- (builtin_user_regs): Provide initial value for "last".
- (user_reg_add_builtin): XMALLOC memory for append_user_reg.
- (user_regs_init): Allocate memory from the gdbarch obstack.
- (user_reg_add): GDBARCH_OBSTACK_ZALLOC memory for append_user_reg.
- (user_reg_map_name_to_regnum): Rewrite to search the user_reg
- linked list.
- (usernum_to_user_reg): New function.
- (user_reg_map_regnum_to_name): Use usernum_to_user_reg.
- (value_of_user_reg): Use usernum_to_user_reg.
- (user_regs_free): Delete function.
- (_initialize_user_regs): Update register_gdbarch_data call.
-
-2003-07-31 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2read.c (new_symbol): Use var_decode_location for parameters.
-
-2003-07-30 Michael Snyder <msnyder@redhat.com>
-
- * value.h (value_being_returned): Add a struct_addr argument.
- * infcall.c (call_function_by_hand): Pass struct_addr to
- value_being_returned.
- * infcmd.c (print_return_value): Pass zero as struct_addr.
- * values.c (value_being_returned): If struct_addr is passed,
- use it instead of trying to recover it from the inferior.
-
-2003-07-30 Kevin Buettner <kevinb@redhat.com>
-
- * mn10300-tdep.c (analyze_dummy_frame): Pass ``pc'' so that
- the prologue analyzer won't need to attempt to extract the pc
- value from the woefully incomplete dummy frame.
- (mn10300_analyze_prologue): Avoid calls to get_frame_pc() when
- possible. Disable code which modifies the frame.
-
-2003-07-28 Andrew Cagney <cagney@redhat.com>
-
- * annotate.c (annotate_breakpoints_headers): Restrict annotation
- to level 2.
- (annotate_breakpoints_table, annotate_record): Ditto.
- (annotate_breakpoints_table_end, annotate_field_begin): Ditto.
- (annotate_field_name_end, annotate_field_value): Ditto.
- (annotate_field_end, annotate_frame_source_begin): Ditto.
- (annotate_frame_source_file, annotate_frame_source_file_end): Ditto.
- (annotate_frame_source_line, annotate_frame_source_end): Ditto.
- (annotate_frame_begin, annotate_frame_function_name): Ditto.
- (annotate_frame_address_end, annotate_frame_address): Ditto.
- (annotate_frame_args, annotate_frame_end): Ditto.
- (annotate_frame_where, annotate_arg_begin): Ditto.
- (annotate_arg_name_end, annotate_arg_value): Ditto.
- (annotate_arg_end, annotate_signal_handler_caller): Ditto.
- (annotate_function_call, annotate_signal_name): Ditto.
- (annotate_signal_string, annotate_signal_name_end): Ditto.
- (annotate_signal_string_end, annotate_value_history_begin): Ditto.
- (annotate_value_begin, annotate_value_history_value): Ditto.
- (annotate_value_history_end, annotate_value_end): Ditto.
- (annotate_display_begin, annotate_display_number_end): Ditto.
- (annotate_display_format, annotate_display_expression): Ditto.
- (annotate_display_expression_end, annotate_display_value): Ditto.
- (annotate_display_end, annotate_array_section_begin): Ditto.
- (annotate_elt_rep, annotate_elt_rep_end): Ditto.
- (annotate_elt, annotate_array_section_end): Ditto.
-
-2003-07-28 Andrew Cagney <cagney@redhat.com>
-
- * regcache.c (struct regcache_descr): Update comments on
- nr_raw_registers.
- (init_legacy_regcache_descr): Don't set nr_raw_registers or
- sizeof_raw_register_valid_p.
- (init_regcache_descr): Set nr_raw_registers and
- sizeof_raw_register_valid_p before calling
- init_legacy_regcache_descr.
-
-2003-07-28 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (print_gp_register_row): Print the GPR's register
- MOD NUM_REGS.
-
-2003-07-28 Daniel Jacobowitz <drow@mvista.com>
-
- * thread.c (info_threads_command): Use get_selected_frame ().
- Check that there is at least one non-sentinel frame.
-
-2003-07-27 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-tdep.c (struct frame_extra_info): Remove.
- (m68hc11_pop_frame): Remove.
- (m68hc11_frame_saved_pc): Remove.
- (m68hc11_frame_chain): Remove.
- (m68hc11_frame_init_saved_regs): Remove.
- (m68hc11_init_extra_frame_info): Remove.
- (m68hc11_store_struct_return): Remove.
- (m68hc11_saved_pc_after_call): Remove.
-
-2003-07-27 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-tdep.c (struct m68hc11_unwind_cache): New struct to hold
- frame unwind information.
- (m68hc11_scan_prologue): New function from m68hc11_guess_from_prologue
- and adapted for frame unwinding.
- (m68hc11_skip_prologue): Update to scan prologue in temporary object.
- (m68hc11_unwind_pc): New function.
- (m68hc11_frame_unwind_cache): New function to analyze frames.
- (m68hc11_frame_this_id): New function to create new frame struct.
- (m68hc11_frame_prev_register): New function to unwind a register from
- the frame.
- (m68hc11_frame_unwind): Default 68hc11/68hc12 unwinder.
- (m68hc11_frame_p): New function for the above.
- (m68hc11_frame_base_address): New function to return fp of frame.
- (m68hc11_frame_args_address): Update for frame.
- (m68hc11_frame_base): Default 68hc11/68hc12 frame.
- (m68hc11_unwind_sp): New function.
- (m68hc11_unwind_dummy_id): New function.
- (m68hc11_gdbarch_init): Install the above frames; remove deprecated
- calls.
-
-2003-07-27 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-tdep.c (m68hc11_analyze_instruction): Don't advance the pc.
- (m68hc11_guess_from_prologue): Advance the pc and frame size only
- when we are beyond the current pc.
-
-2003-07-27 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-tdep.c (m68hc11_push_dummy_call): New function adapted
- from m68hc11_push_arguments.
- (m68hc11_push_arguments): Remove.
- (m68hc11_push_return_address): Remove.
- (m68hc11_gdbarch_init): Install the above; remove above deprecated
- handlers; remove deprecated_extra_stack_alignment_needed.
-
-2003-07-27 Andrew Cagney <cagney@redhat.com>
-
- * config/pa/tm-hppa.h (init_frame_pc_default): Declare.
- * infcall.c (legacy_push_dummy_code) [GDB_TARGET_IS_HPPA]: Update
- REAL_PC and not the pointer.
- * hppa-hpux-tdep.c: Include frame.h
-
-2003-07-27 Andrew Cagney <cagney@redhat.com>
-
- * config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Set to
- GDB_MULTI_ACH_PARTIAL.
-
-2003-07-27 Andrew Cagney <cagney@redhat.com>
-
- Patch from 2003-07-22 Kei Sakamoto <sakamoto.kei@renesas.com>:
- * m32r-tdep.c (m32r_memory_insert_breakpoint): Fix code style -
- operator at start and not end of line.
- (decode_prologue): Ditto.
- (m32r_frame_unwind_cache, m32r_unwind_sp, m32r_unwind_pc): Use
- frame_unwind_register_unsigned instead of
- frame_unwind_unsigned_register.
- (m32r_read_pc): Use regcache_cooked_read_unsigned instead of
- read_register.
- (m32r_push_dummy_call): Use register_size instead of
- REGISTER_RAW_SIZE.
- (m32r_frame_sniffer): Replace m32r_frame_p.
- (m32r_gdbarch_init): Call frame_unwind_append_sniffer.
- * m32r-rom.c (report_transfer_performance): Delete extern
- declaration.
- (m32r_load, m32r_upload_command): Use print_transfer_performance
- instead of report_transfer_performance.
- (_initialize_m32r_rom): Use add_setshow_cmd instead of add_set_cmd
- / add_show_from_set.
-
-2003-07-26 Andrew Cagney <cagney@redhat.com>
-
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Set non-deprecated
- store_return_value and extract_struct_value_address.
-
-2003-07-26 Daniel Jacobowitz <drow@mvista.com>
-
- PR c++/1267
- * minsyms.c (lookup_minimal_symbol_by_pc_section): If SECTION is
- NULL, default to the section containing PC.
-
-2003-07-24 Stephane Carrez <stcarrez@nerim.fr>
-
- * NEWS: Mention "regs" deprecated for m68hc11 too.
-
- * m68hc11-tdep.c (_initialize_m68hc11_tdep): Deprecate "regs" command.
- (m68hc11_print_register): New function to print out one register.
- (m68hc11_print_registers_info): New function to print registers.
- (show_regs): Deprecate and use the above.
- (m68hc11_gdbarch_init): Install the print_registers_info.
-
-2003-07-24 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-linux-nat.c (ia64_linux_stopped_by_watchpoint): Verify
- that we have a SIGTRAP before returning non-zero.
-
-2003-07-23 Michal Ludvig <mludvig@suse.cz>
- Elena Zannoni <ezannoni@redhat.com>
-
- * linespec.c (decode_line_2): Avoid crash if
- find_function_start_sal() returns empty record.
-
-2003-07-23 Andreas Schwab <schwab@suse.de>
-
- * ia64-tdep.c (ia64_print_insn): New function.
- (ia64_gdbarch_init): Set print_insn to it.
- (_initialize_ia64_tdep): Don't set deprecated_tm_print_insn and
- deprecated_tm_print_insn_info.
-
-2003-07-22 Michael Snyder <msnyder@redhat.com>
-
- * h8300-tdep.c (h8300_extract_return_value): Teach it how to
- handle 8-bit returns (long long).
- (h8300h_extract_return_value): Ditto.
- (h8300_gdbarch_init): Long long is 8 bytes, char is unsigned.
-
-2003-07-22 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.c Include "gdb_obstack.h".
- (struct gdbarch): Add an "obstack".
- (alloc_gdbarch_data): Allocate the gdbarch data using
- GDBARCH_OBSTACK_CALLOC.
- (free_gdbarch_data): Delete function.
- (gdbarch_obstack_zalloc): New function.
- (gdbarch_free): Free the obstack, do not call free_gdbarch_data.
- Assert that the architecture is not initialized.
- (gdbarch_alloc): Allocate an obstack, allocate the architecture
- vector from the obstack.
- (alloc_gdbarch_data, init_gdbarch_swap): Allocate memory using the
- architecture obstack.
- (GDBARCH_OBSTACK_CALLOC, GDBARCH_OBSTACK_ZALLOC): Define.
- (set_gdbarch_data): Assert that the data is not initialized.
- (struct gdbarch_data): Delete member "free".
- (register_gdbarch_data): Do not initialize "free".
- * gdbarch.h, gdbarch.c: Re-generate.
-
-2003-07-22 Andrew Cagney <cagney@redhat.com>
-
- * configure.in (build_warnings): Add -Wformat-nonliteral.
- * configure: Re-generate.
-
-2003-07-22 Elena Zannoni <ezannoni@redhat.com>
-
- * dwarf2loc.c (locexpr_describe_location): Fix typos.
-
-2003-07-22 Elena Zannoni <ezannoni@redhat.com>
-
- * findvar.c (read_var_value): Remove case for thread local storage
- variables. It is now entirely handled by the dwarf2 location
- expression code.
- * printcmd.c (address_info): Ditto.
- * symtab.h (address_class): Remove LOC_THREAD_LOCAL_STATIC
- enumeration value.
- (struct symbol): Remove objfile field, which was used by
- LOC_THREAD_LOCAL_STATIC only.
- * dwarf2read.c (decode_locdesc): Remove is_thread_local variable.
- * dwarf2loc.h (struct dwarf2_loclist_baton): Add comment about
- usage of objfile pointer.
- * dwarf2loc.c (locexpr_describe_location): Add case to handle
- thread local variables.
- Add include of objfiles.h.
- * dwarf2expr.c (execute_stack_op): Add comments about thread local
- storage variables.
- * Makefile.in (dwarf2loc.o): Update dependencies.
-
-2003-07-22 Andrew Cagney <cagney@redhat.com>
-
- * config/pa/tm-hppa64.h (FRAME_SAVED_PC_IN_SIGTRAMP): Use
- get_frame_base.
- (FRAME_BASE_BEFORE_SIGTRAMP): Ditto.
- (FRAME_FIND_SAVED_REGS_IN_SIGTRAMP): Ditto.
- (struct value): Add opaque declaration.
- (DEPRECATED_FRAME_ARGS_ADDRESS): Delete.
-
-2003-07-21 Andrew Cagney <cagney@redhat.com>
-
- From 2003-07-04 Kei Sakamoto <sakamoto.kei@renesas.com>:
- * m32r-tdep.c, m32r-stub.c, m32r-tdep.c: Rewrite.
-
-2003-07-20 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-tdep.c (m68hc11_pseudo_register_read): Use
- regcache_cooked_read_unsigned instead of read_register.
- (m68hc11_saved_pc_after_call): Likewise.
- (m68hc11_pseudo_register_write): Use regcache_cooked_write_unsigned
- instead of write_register.
- (m68hc11_register_type): New function.
- (m68hc11_register_virtual_type): Remove.
- (m68hc11_store_return_value): Convert to use the regcache.
- (m68hc11_extract_struct_value_address): Likewise.
- (m68hc11_gdbarch_init): Remove deprecated ops for register to use
- m68hc11_register_type; undeprecate store_return_value and
- extract_struct_value_address.
-
-2003-07-20 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-tdep.c (m68hc11_extract_return_value): Use regcache_raw_read
- and translate to use regcache.
- (m68hc11_gdbarch_init): Undeprecate extract_return_value.
-
-2003-07-18 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DWARF2_BUILD_FRAME_INFO): Delete method.
+ * defs.h (error_silent, error_output_message): Add prototypes.
+ (catch_exceptions_with_msg): Ditto.
+ * utils.c (error_silent, error_output_message): New functions.
+ * top.c (catch_exceptions_with_msg): New function.
+
+2004-01-20 Nick Roberts <nick@nick.uklinux.net>
+
+ * mi/mi-cmds.h (enum print_values): Add definition.
+
+ * mi/mi-cmd-stack.c (mi_cmd_stack_list_locals): Print the name,
+ type and value for simple data types and just the name and type
+ for complex ones, if required.
+
+ * mi/mi-cmd-var.c (mi_cmd_var_list_children): Print the values of the
+ children, if required.
+
+2004-01-19 Kevin Buettner <kevinb@redhat.com>
+
+ * frv-tdep.c (frv_push_arguments, frv_saved_pc_after_call): Delete
+ unused declarations.
+
+2004-01-19 Andrew Cagney <cagney@redhat.com>
+
+ * top.h (mapped_symbol_files): Delete declaration.
+ * main.c (captured_main): Delete option "m" and "mapped".
+ * objfiles.c (mapped_symbol_files): Delete variable.
+ * symfile.c (symbol_file_command): Delete mmap code.
+ (symbol_file_add_with_addrs_or_offsets): Ditto.
+ (add_symbol_file_command, reread_separate_symbols): Ditto.
+ * objfiles.h (OBJF_MAPPED): Delete.
+ * objfiles.c (allocate_objfile) [USE_MMALLOC]: Delete.
+ (free_objfile) [USE_MMALLOC]: Ditto.
+ (open_existing_mapped_file): Delete function.
+ (open_mapped_file): Delete function.
+ (map_to_file): Delete function.
+
+2004-01-19 Kevin Buettner <kevinb@redhat.com>
+
+ * infrun.c (step_into_function): Account for possible breakpoint
+ adjustment when computing ``stop_func_start''.
+
+2004-01-19 Kevin Buettner <kevinb@redhat.com>
+
+ * target.c (default_region_size_ok_for_hw_watchpoint): Compare
+ the region size against the size of a pointer, not the size of
+ a register as given by DEPRECATED_REGISTER_SIZE.
+
+2004-01-19 Andrew Cagney <cagney@redhat.com>
+
+ * tui/tui-regs.h: Include "tui-data.h".
+ (tuiFirstRegElementNoInLine): Delete declaration.
+ (tui_display_registers_from): Rename tuiDisplayRegistersFrom.
+ (tui_last_regs_line_no): Rename tuiLastRegsLineNo.
+ (tui_line_from_reg_element_no): Rename tuiLineFromRegElementNo.
+ (tui_calculate_regs_column_count): Rename
+ tuiCalculateRegsColumnCount.
+ (tui_check_register_values): Rename tuiCheckRegisterValues.
+ (tui_show_registers): Rename tuiShowRegisters.
+ (tui_display_registers_from_line): Rename
+ tuiDisplayRegistersFromLine.
+ (tui_first_reg_element_inline): Rename tuiFirstRegElementInLine.
+ (tui_toggle_float_regs): Rename tuiToggleFloatRegs.
+ (tui_first_reg_element_no_inline): Rename
+ tuiFirstRegElementNoInLine.
+ * tui/tui-data.h: Update copyright.
+ (enum tui_register_display_type): Rename _TuiRegisterDisplayType.
+ * tui/tui-windata.c: Update copyright, update references.
+ * tui/tui-regs.c: Update copyright, update references.
+ * tui/tui-win.c: Update copyright, update references.
+ * tui/tui-layout.c: Update copyright, update references.
+
+2004-01-18 Andrew Cagney <cagney@redhat.com>
+
+ * tui/tui-io.c: Update copyright.
+ (key_is_end_sequence, key_is_backspace): New functions.
+ (key_is_command_char, key_is_start_sequence): New function.
+ (tui_getc): Update references.
+ * tui/tui-io.h: Update copyright.
+ (m_tuiStartNewLine): Delete macro.
+ (m_isBackspace, m_isDeleteChar): Delete macros.
+ (m_isDeleteLine, m_isDeleteToEol): Delete macros.
+ (m_isNextPage, m_isPrevPage): Delete macros.
+ (m_isLeftArrow, m_isRightArrow): Delete macros.
+ (m_isXdbStyleCommandChar): Delete macro.
+ (key_is_start_sequence): Declare, replace m_isStartSequence.
+ (key_is_end_sequence): Declare, replace m_isEndSequence.
+ (key_is_backspace): Declare ,replace m_isBackspace.
+ (key_is_command_char): Declare, replace m_isCommandChar.
+ * tui/tui-command.c: Update copyright.
+ (tuiDispatchCtrlChar): Update references.
+
+ * config/djgpp/fnchange.lst: Delete tui/tuiSourceWin.c and
+ tuiSourceWin.h.
+
+ * tui/tui-command.c: Rename tui/tuiCommand.c.
+ * tui/tui-command.h: Rename tui/tuiCommand.h.
+ * tui/tui-data.c: Rename tui/tuiData.c.
+ * tui/tui-data.h: Rename tui/tuiData.h.
+ * tui/tui-disasm.c: Rename tui/tuiDisassem.c.
+ * tui/tui-disasm.h: Rename tui/tuiDisassem.h.
+ * tui/tui-io.c: Rename tui/tuiIO.c.
+ * tui/tui-io.h: Rename tui/tuiIO.h.
+ * tui/tui-layout.c: Rename tui/tuiLayout.c.
+ * tui/tui-layout.h: Rename tui/tuiLayout.h.
+ * tui/tui-regs.c: Rename tui/tuiRegs.c.
+ * tui/tui-regs.h: Rename tui/tuiRegs.h.
+ * tui/tui-source.c: Rename tui/tuiSource.c.
+ * tui/tui-source.h: Rename tui/tuiSource.h.
+ * tui/tui-stack.c: Rename tui/tuiStack.c.
+ * tui/tui-stack.h: Rename tui/tuiStack.h.
+ * tui/tui-win.c: Rename tui/tuiWin.c.
+ * tui/tui-win.h: Rename tui/tuiWin.h.
+ * tui/tui-windata.c: Rename tui/tuiDataWin.c.
+ * tui/tui-windata.h: Rename tui/tuiDataWin.h.
+ * tui/tui-wingeneral.c: Rename tui/tuiGeneralWin.c.
+ * tui/tui-wingeneral.h: Rename tui/tuiGeneralWin.h.
+ * tui/tui-winsource.c: Rename tui/tuiSourceWin.c.
+ * tui/tui-winsource.h: Rename tui/tuiSourceWin.h.
+ * tui/tui-file.c: Update includes.
+ * tui/tui-hooks.c: Update includes.
+ * tui/tui-interp.c: Update includes.
+ * tui/tui.c: Update includes.
+ * Makefile.in: Update all tui/ dependencies.
+ (SUBDIR_TUI_OBS, SUBDIR_TUI_SRCS): Update file names.
+
+ * Makefile.in: Update copyright. Update dependencies.
+
+ * tui/tuiSourceWin.c (tui_update_breakpoint_info): Fix compile
+ problem.
+
+2004-01-18 Andrew Cagney <cagney@redhat.com>
+
+ * mn10300-tdep.c (_initialize_mn10300_tdep): Call gdbarch_register
+ instead of register_gdbarch_init.
+
+ * remote-sds.c (tohex): Delete unused function. Update copyright.
+ * xstormy16-tdep.c (xstormy16_register_virtual_size): Ditto.
+ * v850-tdep.c (v850_register_virtual_size): Ditto.
+ * target.c (normal_target_post_startup_inferior): Ditto.
+ * source.c (ambiguous_line_spec): Ditto.
+ * remote.c (adapt_remote_get_threadinfo): Ditto.
+ * mi/mi-out.c (out_field_fmt): Ditto.
+ * mi/mi-interp.c (mi_interp_read_one_line_hook): Ditto.
+ (output_control_change_notification): Ditto.
+ * m68k-tdep.c (m68k_register_byte): Ditto.
+ (m68k_remote_breakpoint_from_pc): Ditto.
+ * ui-out.c (init_ui_out_state): Delete unused declaration.
+ * stabsread.c (search_value): Ditto.
+ * mi/mi-cmd-env.c (env_cli_command): Ditto.
+ * maint.c (print_section_table): Ditto.
+ * infrun.c (set_follow_fork_mode_command): Ditto.
+
+2004-01-18 Mark Kettenis <kettenis@gnu.org>
+
+ * dwarf2-frame.c (execute_cfa_program): Move DWA_CFA_nop before
+ DW_CFA_def_cfa_exporession. Add support for
+ DW_CFA_offset_extendend_sf, DW_CFA_def_cfa_sf and
+ DW_CFA_def_cfa_offset_sf. This should fix PR backtrace/1391.
+
+2004-01-18 Andrew Cagney <cagney@redhat.com>
+
+ * ocd.c: Update copyright.
+ (bdm_read_register_command): Delete unused function.
+ (_initialize_remote_ocd): Delete commented out reference.
+ (get_quoted_char, reset_packet): Delete #if0ed function.
+ (output_packet, put_quoted_char): Delete #if0ed function.
+ (stu_put_packet, stu_get_packet): Delete #if0ed function.
+ (ocd_start_remote): Delete #if0ed code, remove #if1 wrapper.
+ (BDM_BREAKPOINT): Delete #if0ed macro.
+ (remote_timeout): Delete #if0ed variable.
+
+2004-01-18 Mark Kettenis <kettenis@gnu.org>
+
+ * Makefile.in (ALLDEPFILES): Remove core-sol2.c.
+ (core-sol2.o): Remove dependency.
+ * core-sol2.c: Remove file.
+
+2004-01-17 Andrew Cagney <cagney@redhat.com>
+
+ * mdebugread.c (compare_blocks): Make addr_diff a LONGEST.
+ * block.h: Make GLOBAL_BLOCK, STATIC_BLOCK, FIRST_LOCAL_BLOOCK
+ enums.
+
+2004-01-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * remote.c: Update copyright years.
+
+2004-01-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * remote.c (remote_vcont_resume): Use xstrprintf instead of sprintf.
+
+2004-01-17 Andrew Cagney <cagney@redhat.com>
+
+ * mdebugread.c: Update copyright.
+ (parse_symbol): Replace DEPRECATED_STREQ with strcmp.
+ (parse_type, parse_procedure): Ditto.
+ (parse_partial_symbols, psymtab_to_symtab_1): Ditto.
+
+ * cris-tdep.c (cris_store_struct_return): Put back accidently
+ deleted function.
+
+ * gdbarch.sh: Update copyright year.
* gdbarch.h, gdbarch.c: Re-generate.
- * i386-tdep.c (i386_gdbarch_init): Do not set
- DWARF2_BUILD_FRAME_INFO.
- * elfread.c (elf_symfile_read): Call dwarf2_build_frame_info
- unconditionally.
- * alpha-tdep.c (alpha_dwarf2_init_abi): Do not set
- DWARF2_BUILD_FRAME_INFO.
-
-2003-07-18 Andrew Cagney <cagney@redhat.com>
-
- From 2003-07-04 Kei Sakamoto <sakamoto.kei@renesas.com>:
- * disasm.c (gdb_disassemble_info): Initilize di.arch.
-
-2003-07-18 Andrew Cagney <cagney@redhat.com>
-
- * dwarf2-frame.c (dwarf2_frame_sniffer): Use
- frame_unwind_address_in_block, instead of frame_pc_unwind.
- (dwarf2_frame_cache): Ditto.
-
-2003-07-18 Andrew Cagney <cagney@redhat.com>
-
- * user-regs.h (struct gdbarch): Declare opaque.
- * ui-out.h (struct ui_file): Declare opaque.
- * dwarf2-frame.h (struct frame_info): Declare opaque.
-
-2003-07-18 Kris Warkentin <kewarken@qnx.com>
-
- * nto-procfs.c: Clean ARI hits. Change #include <..> to
- #include "...".
- (procfs_meminfo): Change strerror to safe_strerror.
- (procfs_can_run): Remove K&R badness.
-
-2003-07-17 Michael Snyder <msnyder@redhat.com>
-
- * remote-sim.c: Comment typo fix.
-
-2003-07-17 Andrew Cagney <cagney@redhat.com>
-
- * defs.h (GDB_MULTI_ARCH): Delete conditional define. Handled by
- configure.
- * sparc-tdep.c (sparc_intreg_size): Make non-static.
- * config/sparc/tm-sparc.h (GDB_MULTI_ARCH): Define to
- GDB_MULTI_ARCH_PARTIAL.
-
-2003-07-17 Elena Zannoni <ezannoni@redhat.com>
-
- * Makefile.in (x86-64-linux-nat.o): Update dependencies.
- * x86-64-linux-nat.c (ps_get_thread_area): New function. Add
- include of asm/prctl.h, asm/ptrace.h, and gdb_proc_service.h.
-
-2003-07-16 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_skip_prologue): Return PC unchanged if no prologue
- found.
- (avr_frame_unwind_cache): Don't unwind FP for main.
- Update a comment.
- Save the computed prev_sp.
- (avr_saved_regs_unwinder): Remove function.
- (avr_frame_prev_register): Use PC unwind logic from
- avr_saved_regs_unwinder(), otherwise use trad_frame_prev_register().
-
-2003-07-16 Andrew Cagney <cagney@redhat.com>
-
- * frame-base.h (frame_base_p_ftype): Delete definition.
- (frame_base_append_predicate): Delete declaration.
- * frame-unwind.h (frame_unwind_p_ftype): Delete definition.
- (frame_unwind_append_predicate): Delete declaration.
- * frame-unwind.c (struct frame_unwind_table): Delete field "p".
- (append_predicate): Delete parameter "p".
- (frame_unwind_append_predicate): Delete function.
- (frame_unwind_append_sniffer): Update call to append_predicate.
- (frame_unwind_free): Delete function.
- (_initialize_frame_unwind): Pass NULL as "free" to
- register_gdbarch_data.
- (frame_unwind_init): Append the dummy_frame_sniffer.
- (frame_unwind_find_by_frame): Simplify.
- * frame-base.c (struct frame_base_table): Delete field "p".
- (append_predicate): Delete parameter "p".
- (frame_base_append_predicate): Delete function.
- (frame_base_append_sniffer): Update call to append_predicate.
- (frame_base_free): Delete function.
- (frame_base_find_by_frame): Simplify.
- (_initialize_frame_base): Pass NULL as "free" to
- register_gdbarch_data.
- * x86-64-tdep.c (x86_64_frame_sniffer): Replace "x86_64_frame_p".
- (x86_64_sigtramp_frame_sniffer): Replace
- "x86_64_sigtramp_frame_p".
- (x86_64_init_abi): Set the frame unwind sniffers.
- * m68k-tdep.c (m68k_frame_sniffer): Replace "m68k_frame_p".
- (m68k_sigtramp_frame_sniffer): Replace "m68k_sigtramp_frame_p"
- (m68k_gdbarch_init): Set the frame unwind sniffers.
- * i386-tdep.c (i386_sigtramp_frame_sniffer): Replace
- "i386_sigtramp_frame_p".
- (i386_frame_sniffer): Replace "i386_frame_p".
- (i386_gdbarch_init): Set the frame unwind sniffers.
- * avr-tdep.c (avr_frame_sniffer): Replace "avr_frame_sniffer".
- (avr_gdbarch_init): Set the frame unwind sniffers.
- * alpha-tdep.c (alpha_sigtramp_frame_sniffer): Replace
- "alpha_sigtramp_frame_p"
- (alpha_heuristic_frame_sniffer): Replace
- "alpha_heuristic_frame_p".
- (alpha_gdbarch_init): Set the frame unwind sniffers.
- (alpha_dwarf2_init_abi): Ditto.
- * alpha-mdebug-tdep.c (alpha_mdebug_frame_sniffer): Replace
- "alpha_debug_frame_p".
- (alpha_mdebug_frame_base_sniffer): Replace
- "alpha_mdebug_frame_base_p".
- (alpha_mdebug_init_abi): Set the frame unwind sniffers.
- * d10v-tdep.c (d10v_frame_sniffer): Replace "d10v_frame_p".
- (d10v_gdbarch_init): Set the frame unwind sniffer.
- * dwarf2-frame.c (dwarf2_frame_sniffer): Replace "dwarf2_frame_p".
- (dwarf2_frame_base_sniffer): Replace "dwarf2_frame_base_p".
- * dwarf2-frame.h (dwarf2_frame_sniffer): Replace "dwarf2_frame_p".
- (dwarf2_frame_base_sniffer): Replace "dwarf2_frame_base_p".
- * dummy-frame.c (dummy_frame_sniffer): Replace "dummy_frame_p".
- * dummy-frame.h (dummy_frame_sniffer): Replace "dummy_frame_p".
-
-2003-07-16 Michael Snyder <msnyder@redhat.com>
-
- * sh-tdep.c (sh_gdbarch_init): Fetch_registers for the sh3-dsp
- should go thru sh_dsp_register_sim_regno, else the dsp regs
- will not get the right values.
-
-2003-07-16 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c (sh_sh4_register_convert_to_virtual): Substitute call to
- deprecated_store_floating by call to store_typed_floating.
- (sh_sh4_register_convert_to_raw): Substitute call to
- deprecated_extract_floating by call to extract_typed_floating.
-
-2003-07-16 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c (sh_gdbarch_init): Set double to 4 byte on sh2e and sh3e.
-
-2003-07-16 Corinna Vinschen <vinschen@redhat.com>
-
- * sh-tdep.c: Substitute calls to REGISTER_RAW_SIZE by calls to
- register_size and calls to REGISTER_VIRTUAL_TYPE by calls to
- gdbarch_register_type in 32 bit code throughout. Avoid current_gdbarch
- as possible.
- (do_pseudo_register): Remove.
- (sh_push_dummy_code): New function.
- (sh64_store_struct_return): Rename from sh_store_struct_return.
- Only called for sh64 now.
- (sh_extract_struct_value_address): Regcache'ify.
- (sh_push_dummy_call): Rename from sh_push_arguments. Regcache'ify
- and accomodate new tasks.
- (sh64_push_return_address): Rename from sh_push_return_address.
- Only called for sh64 now.
- (sh_default_extract_return_value): Rename from sh_extract_return_value.
- Regcache'ify.
- (sh3e_sh4_extract_return_value): Regcache'ify.
- (sh_default_store_return_value): Ditto.
- (sh3e_sh4_store_return_value): Ditto.
- (sh_default_register_byte): Remove.
- (sh_sh4_register_byte): Remove.
- (sh_default_register_raw_size): Remove.
- (sh_sh4_register_raw_size): Remove.
- (sh_register_virtual_size): Remove.
- (sh_sh3e_register_virtual_type): Remove.
- (sh_sh3e_register_type): New function.
- (sh_sh4_register_virtual_type): Remove.
- (sh_sh4_register_type): New function.
- (sh_default_register_virtual_type): Remove.
- (sh_default_register_type): New function.
- (do_fv_register_info): Add parameters to accomodate call from
- sh_print_registers_info.
- (do_dr_register_info): Ditto.
- (sh_print_pseudo_register): Rename from sh_do_pseudo_register.
- Add parameters to accomodate call from sh_print_registers_info.
- (sh_do_fp_register): Ditto.
- (sh64_do_pseudo_register): Call do_dr_register_info,
- do_fv_register_info and sh_do_fp_register with default parameters.
- (sh_do_register): Add parameters to accomodate call from
- sh_print_registers_info.
- (sh_print_register): Ditto.
- (sh_print_registers_info): Rename from sh_do_registers_info.
- Add parameters to be used as gdbarch_print_registers_info
- implementation. Accomodate removed do_pseudo_register function
- pointer.
- (sh_compact_do_registers_info): Accomodate removed do_pseudo_register
- function pointer. Call sh_print_register with default parameters.
- (sh64_do_registers_info): Call sh_print_registers_info instead of
- sh_do_registers_info.
- (sh_gdbarch_init): Rearrange to cleanup and to allow easier
- detection of deprecated vs. non-deprecated functionality.
- Rename sh_call_dummy_words to sh64_call_dummy_words. Remove
- function pointer assignments by direct function calls.
-
-2003-07-15 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_frame_id): Use frame_unwind_find_by_frame.
- (frame_register_unwind, create_new_frame): Ditto.
- (legacy_get_prev_frame, get_frame_type): Ditto.
- (get_frame_base_address): Use frame_base_find_by_frame.
- (get_frame_locals_address): Use frame_base_find_by_frame.
- (get_frame_args_address): Use frame_base_find_by_frame.
- * frame-base.h (frame_base_sniffer_ftype): Declare.
- (frame_base_append_sniffer): Declare.
- (frame_base_find_by_frame): Replace frame_base_find_by_pc.
- * frame-base.c (append_predicate): Add a "sniffer" parameter.
- (frame_base_append_sniffer): New function.
- (frame_base_append_predicate): Add a NULL sniffer.
- (frame_base_find_by_frame): Replace "frame_base_find_by_pc".
- (struct frame_base_table): Add "sniffer".
- (frame_base_free): Free the "sniffer" table.
- * frame-unwind.h (frame_unwind_sniffer_ftype): Define.
- (frame_unwind_append_sniffer): Declare.
- (frame_unwind_find_by_frame): Replace frame_unwind_find_by_pc.
- * frame-unwind.c (frame_unwind_free): Free the "sniffer" table.
- (struct frame_unwind_table): Add "sniffer", delete "middle".
- (append_predicate): Add "sniffer" parameter, append the sniffer.
- (frame_unwind_init): Update append_predicate call.
- (frame_unwind_append_sniffer): New function.
- (frame_unwind_append_predicate): Update append_predicate call.
- (frame_unwind_find_by_frame): Replace frame_unwind_find_by_pc.
-
-2003-07-15 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_prev_frame): Move disabled inside_entry_func to
- before code inhibiting repeated unwind attempts. Add to
- commentary on that test's problems.
- * blockframe.c (inside_main_func): Look for "main" in the minimal
- symbol table.
- * d10v-tdep.c (d10v_frame_this_id): Delete check that frames are
- identical.
-
-2003-07-15 Andrew Cagney <cagney@redhat.com>
-
- * complaints.c (struct explanation): Define.
- (struct complaints): Change type of "explanation" to "struct
- explanation".
- (symfile_explanations): Convert to a "struct explanation" table.
- (vcomplaint): Update.
-
-2003-07-15 Michal Ludvig <mludvig@suse.cz>
-
- * x86-64-linux-nat.c (regmap): Removed.
- (supply_gregset, fill_gregset): Call
- x86_64_linux_(fill,supply)_gregset functions.
- * x86-64-linux-tdep.c (USER_*): New defines.
- (user_to_gdb_regmap, x86_64_core_fns): New structure.
- (x86_64_linux_supply_gregset, x86_64_linux_fill_gregset):
- New functions.
- (fetch_core_registers): Ditto.
- (_initialize_x86_64_linux_tdep): Call add_core_fns().
- * x86-64-linux-tdep.h: New file.
- * config/i386/x86-64linux.mh (NATDEPFILES): Remove corelow.o
- and core-regset.o.
- * config/i386/x86-64linux.mt (TDEPFILES): Add corelow.o.
-
-2003-07-13 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c (x86_64_store_return_value): Use
- regcache_cooked_write_part instead of regcache_cooked_write.
-
- * configure.host: Add x86_64-*-freebsd*.
- * configure.tgt: Add x86_64-*-freebsd*.
- * Makefile.in (amd64fbsd-nat.o, amd64fbsd-tdep.o): New targets.
- * amd64fbsd-nat.c: New file.
- * amd64fbsd-tdep.c: New file.
- * config/i386/nm-fbsd64.h: New file.
- * config/i386/fbsd64.mh: New file.
- * config/i386/fbsd64.mt: New file.
-
-2003-07-11 Mark Kettenis <kettenis@gnu.org>
-
- * alpha-tdep.h (struct gdbarch_tdep): Add members `sc_pc_offset',
- `sc_regs_offset' and `sc_fpregs_offset'.
- * alpha-tdep.c (SIGFRAME_PC_OFF, SIGFRAME_REGSAVE_OFF,
- SIGFRAME_FPREGSAVE_OFF): Remove defines.
- (alpha_sigtramp_register_address): Rewrite to use new members of
- `struct gdbarch_tdep'.
- (alpha_gdbarch_init): Initialize new members of struct
- gdbarch_tdep'.
- * alphafbsd-tdep.c (alphafbsd_use_struct_convention): Use
- ALPHA_REGISTER_SIZE instead of DEPRECATED_REGISTER_SIZE.
- (alphafbsd_sigtramp_start, alphafbsd_sigtramp_end): Nre variables.
- (alphafbsd_pc_in_sigtramp): Implement.
- (alphafbsd_sigtramp_offset): New function.
- (alphafbsd_sigcontext_addr): New function.
- (alphafbsd_init_abi): Initialize signal trampoline related members
- of `struct gdbarch_tdep'.
- (_initialize_alphafbsd_tdep): Add prototype.
-
-2003-07-11 Theodore A. Roth <troth@openavr.org>
-
- * Makefile.in (install-only): Quote sed expression when generating
- transformed_name.
-
-2003-07-11 Richard Henderson <rth@redhat.com>
-
- * Makefile.in (dwarf2-frame.o): Add complaints_h.
- * dwarf2-frame.c: Include complaints.h.
- (decode_frame_entry_1): Rename from decode_frame_entry; tidy
- variable initialization; return NULL on error.
- (decode_frame_entry): New.
-
-2003-07-11 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (frame_address_in_block): Delete declaration.
- * blockframe.c (frame_address_in_block): Delete function.
- (get_frame_block): Use get_frame_address_in_block.
- (block_innermost_frame): Ditto.
- * stack.c (print_frame, backtrace_command_1): Ditto.
-
- * frame.h (get_frame_address_in_block): Declare.
- (frame_unwind_address_in_block): Declare.
- * frame.c (frame_unwind_address_in_block): New function.
- (get_frame_address_in_block): New function.
-
-2003-07-10 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Simplify predicate methods. Remove need to provide
- pre-default. Note: re-generate has no effect.
-
-2003-07-10 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: When a variable, but not a function, compare against
- 0. Fix problem in previous patch.
- * gdbarch.c: Re-generate.
-
-2003-07-10 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Use gdb_assert instead of internal_error. Compare
- functions against NULL, not 0.
- * gdbarch.c: Re-generate.
-
-2003-07-10 Fred Fish <fnf@ninemoons.com>
-
- * coff-solib.h (SOLIB_LOADED_LIBRARY_PATHNAME): Default to a
- null string instead of a null pointer.
- * solib.h (SOLIB_LOADED_LIBRARY_PATHNAME): Ditto.
-
-2003-07-09 Michael Snyder <msnyder@redhat.com>
-
- * sh-tdep.c (sh_dsp_register_sim_regno): Off-by-one error.
-2003-07-09 Mark Kettenis <kettenis@gnu.org>
+2004-01-17 Daniel Jacobowitz <drow@mvista.com>
- * x86-64-tdep.h (X86_64_RAX_REGNUM, X86_64_RDX_REGNUM,
- X86_64_RDI_REGNUM, X86_64_RBP_REGNUM, X86_64_RSP_REGNUM,
- X86_64_RIP_REGNUM, X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM,
- X86_64_XMM0_REGNUM, X86_64_XMM1_REGNUM): Moved here ...
- * x86-64-tdep.c: ... from here.
+ Suggested by George Anzinger.
+ * dwarf2expr.c (execute_stack_op): Fetch the second item from the
+ correct stack offset. Include unknown opcode numbers in the error
+ message.
-2003-07-09 Andreas Schwab <schwab@suse.de>
+2004-01-17 Andrew Cagney <cagney@redhat.com>
- * m68k-tdep.h (enum struct_return): Define.
- (struct gdbarch_tdep): Add struct_return.
- * m68k-tdep.c (m68k_push_dummy_call): Non-scalars bigger than 4
- bytes are padded to the right, not to the left. Pass struct value
- address in register %a1, not on stack.
- (m68k_use_struct_convention): New function.
- (m68k_gdbarch_init): Set use_struct_convention. Initialize
- struct_return in tdep to pcc_struct_return.
- * m68klinux-tdep.c (m68k_linux_init_abi): Set struct_return to
- reg_struct_return.
-
-2003-07-09 Joel Brobecker <brobecker@gnat.com>
-
- * somread.c (som_symfile_offsets): Fix compilation error.
-
-2003-07-09 Andrew Cagney <cagney@redhat.com>
-
- * regcache.c (register_size): Only check REGISTER_RAW_SIZE once.
- Add comments about the checks.
-
-2003-07-08 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in: Make dependency section headers consistent.
- (config_h): Move to $BUILD headers section.
- (exc_request_U_h, exc_request_S_h, msg_reply_S_h): Ditto.
- (msg_U_h, notify_S_h, process_reply_S_h): Ditto.
- (ada-exp.tab.c): Move to YACC/LEX section.
- (ada-lex.c, c-exp.tab.c, f-exp.tab.c): Ditto.
- (jv-exp.tab.c, m2-exp.tab.c, objc-exp.tab.c, p-exp.tab.c): Ditto.
-
-2003-07-08 Kris Warkentin <kewarken@qnx.com>
-
- * nto-procfs.c: Cleaned up a bunch of ARI hits.
- Include "gdb_dirent.h" instead of <dirent.h>, replace all instances
- of strerror with safe_strerror, use ISO C function definitions,
- and replace instances of sprintf with snprintf.
-
-2003-07-07 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_prev_frame): Enable check for identical frames.
- Update comments. Update error messages.
-
-2003-07-07 Joel Brobecker <brobecker@gnat.com>
-
- * hpread.c (hpread_psymtab_to_symtab_1): Fix compilation failure.
-
-2003-07-07 Joel Brobecker <brobecker@gnat.com>
-
- * xcoffread.c (xcoff_psymtab_to_symtab_1): Remove call to
- sort_symtab_syms, no longer necessary.
-
-2003-07-07 Joel Brobecker <brobecker@gnat.com>
-
- * config/mips/tm-irix6.h (MIPS_REGISTER_TYPE): Add comment.
-
-2003-07-07 Joel Brobecker <brobecker@gnat.com>
-
- * mips-tdep.c (mips_register_raw_size): Fix compilation failure.
- (mips_register_byte): Likewise.
-
-2003-07-07 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in (sparc_tdep_h): New.
- (sparc-linux-nat.o, sparc-nat.o, sparc-tdep.o, sparc64nbsd-nat.o)
- (sparcnbsd-nat.o, sparcnbsd-tdep.o): Depend on $(sparc_tdep_h).
- * sparc-linux-nat.c: Include "sparc-tdep.h".
- * sparc-nat.c: Likewise.
- * sparc-tdep.c: Likewise.
- * sparc64nbsd-nat.c: Likewise.
- * sparcnbsd-nat.c: Likewise.
- * sparcnbsd-tdep.c: Likewise.
- * sparc-tdep.h: New file.
- * config/sparc/tm-sparc.h: Remove prototypes for sparc_y_regnum
- and sparc_npc_regnum.
-
-2003-07-07 Daniel Jacobowitz <drow@mvista.com>
-
- * mips-linux-nat.c (mips_linux_cannot_fetch_register)
- (mips_linux_cannot_store_register): List supported instead of
- unsupported registers.
-
-2003-07-07 Daniel Jacobowitz <drow@mvista.com>
-
- * disasm.c (dump_insns): Separate instructions from addresses.
-
-2003-07-07 Andreas Schwab <schwab@suse.de>
-
- * Makefile.in (m68k-tdep.o, m68klinux-tdep.o): Update
- dependencies.
- * m68k-tdep.c (NUM_FREGS): Delete.
- (SIG_PC_FP_OFFSET): Delete.
- (TARGET_M68K): Delete.
- (P_MOVEAL_SP_FP, P_ADDAW_SP, P_ADDAL_SP, P_SUBQW_SP,
- P_SUBQL_SP, P_LEA_SP_SP, P_LEA_PC_A5, P_FMOVEMX_SP,
- P_MOVEL_SP, P_MOVEML_SP): Define.
- (P_MOVL_SP_FP, P_MOVL, P_JSR, P_BSR, P_LEAL, P_MOVML, P_FMOVM,
- P_TRAP): Delete.
- (m68k_register_raw_size): Delete.
- (m68k_register_virtual_size): Delete.
- (m68k_register_type): Renamed from m68k_register_virtual_type and
- add gdbarch argument.
- (m68k_store_struct_return): Delete.
- (m68k_deprecated_extract_return_value): Delete.
- (m68k_deprecated_extract_struct_value_address): Delete.
- (m68k_frame_chain): Delete.
- (m68k_frame_saved_pc): Delete.
- (m68k_fix_call_dummy): Delete.
- (m68k_push_dummy_frame): Delete.
- (m68k_pop_frame): Delete.
- (m68k_extract_return_value): New function.
- (m68k_store_return_value): Rewrite using regcache.
- (m68k_extract_struct_value_address): Rewrite using regcache.
- (m68k_push_dummy_call): New function.
- (struct m68k_frame_cache): Define.
- (m68k_alloc_frame_cache): New function.
- (m68k_analyze_frame_setup): New function.
- (m68k_analyze_register_saves): New function.
- (m68k_analyze_prologue): New function.
- (m68k_skip_prologue): Rewrite using above functions.
- (m68k_unwind_pc): New function.
- (m68k_frame_cache): New function.
- (m68k_frame_this_id): New function.
- (m68k_frame_prev_register): New function.
- (m68k_frame_unwind): New variable.
- (m68k_frame_p): New function.
- (m68k_sigtramp_frame_cache): New function.
- (m68k_sigtramp_frame_this_id): New function.
- (m68k_sigtramp_frame_prev_register): New function.
- (m68k_sigtramp_frame_unwind): New variable.
- (m68k_sigtramp_frame_p): New function.
- (m68k_frame_base_address): New function.
- (m68k_frame_base): New function.
- (m68k_unwind_dummy_id): New function.
- (fill_gregset): Use regcache_collect.
- (fill_fpregset): Likewise.
- (m68k_saved_pc_after_call): Only define if SYSCALL_TRAP is
- defined.
- (m68k_gdbarch_init): Don't define call_dummy_words. Don't set
- deprecated_init_frame_pc, deprecated_store_struct_return,
- deprecated_extract_return_value, deprecated_store_return_value,
- deprecated_frame_chain, deprecated_frame_saved_pc,
- deprecated_frame_init_saved_regs, deprecated_register_raw_size,
- deprecated_register_virtual_size,
- deprecated_max_register_raw_size,
- deprecated_max_register_virtual_size,
- deprecated_register_virtual_type, deprecated_register_size,
- deprecated_register_byte, deprecated_register_bytes,
- deprecated_fp_regnum, deprecated_use_generic_dummy_frames,
- call_dummy_location, deprecated_call_dummy_breakpoint_offset,
- deprecated_pc_in_call_dummy, deprecated_call_dummy_length,
- deprecated_call_dummy_start_offset, deprecated_call_dummy_words,
- deprecated_sizeof_call_dummy_words, deprecated_fix_call_dummy,
- deprecated_push_dummy_frame, deprecated_pop_frame,
- deprecated_dummy_write_sp. Set deprecated_saved_pc_after_call
- only if SYSCALL_TRAP is defined. Set extract_return_value,
- store_return_value, extract_struct_value_address, register_type,
- push_dummy_call, unwind_dummy_id, unwind_pc. Add two frame unwind
- predicates.
- * m68k-tdep.h (M68K_D1_REGNUM, M68K_NUM_REGS,
- M68K_MAX_REGISTER_SIZE): Define.
- (struct m68k_sigtramp_info): Define.
- (struct gdbarch_tdep): Add get_sigtramp_info.
- * m68klinux-nat.c (fetch_register): Use register_size instead of
- REGISTER_RAW_SIZE. Don't put assignment in if.
- (store_register): Likewise.
- (fetch_inferior_registers): Likewise.
- (store_inferior_registers): Likewise.
- * m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc): Delete.
- (m68k_linux_frame_saved_pc): Delete.
- (m68k_linux_sigcontext_reg_offset,
- m68k_linux_ucontext_reg_offset): Define.
- (m68k_linux_get_sigtramp_info): New function.
- (m68k_linux_extract_return_value): Rewrite using regcache.
- (m68k_linux_store_return_value): Likewise.
- (m68k_linux_extract_struct_value_address): Likewise.
- (m68k_linux_init_abi): Set get_sigtramp_info in tdep structure.
- Don't set deprecated_frame_saved_pc,
- deprecated_extract_return_value, deprecated_store_return_value,
- deprecated_extract_struct_value_address. Set
- extract_return_value, store_return_value,
+ * x86-64-tdep.c (x86_64_init_abi): No need to clear
+ extract_struct_value_address, i386 does not set it.
+ * sparc64-tdep.c (sparc64_init_abi): Do not set
+ extract_struct_value_address, never called.
+ (sparc64_extract_struct_value_address): Delete function.
+ * m68hc11-tdep.c: Update copyright.
+ (m68hc11_gdbarch_init): Delete redundant assignment of
extract_struct_value_address.
-
-2003-07-07 Andrew Cagney <cagney@redhat.com>
-
- * expprint.c: Include "user-regs.h" instead of "frame.h".
- (print_subexp): Use user_reg_map_regnum_to_name, instead of
- frame_map_regnum_to_name.
- * frame.c: Include "user-regs.h" instead of "builtin-regs.h".
- (frame_map_name_to_regnum): Simplify, call
- user_reg_map_name_to_regnum.
- (frame_map_regnum_to_name): Simplify, call
- user_reg_map_regnum_to_name.
- (frame_register_unwind): Update.
- * std-regs.c: Include "user-regs.h" instead of "builtin-regs.h".
- (_initialize_frame_reg): Call user_reg_add_builtin.
- * findvar.c: Include "user-regs.h" instead of "builtin-regs.h".
- (value_of_register): Use value_of_user_reg.
- * eval.c (evaluate_subexp_standard): Update.
- * parse.c (write_dollar_variable): Update.
- * d10v-tdep.c (d10v_print_registers_info): Update.
- * infcmd.c (registers_info): Update.
- * Makefile.in (SFILES): Delete "builtin-regs.c", add "user-regs.c".
- (builtin_regs_h): Delete macro.
- (user_regs_h): Define.
- (COMMON_OBS): Delete "builtin-regs.o", add "user-regs.o".
- (builtin-regs.o): Delete target.
- (user-regs.o): Specify dependencies.
- (expprint.o): Update dependencies.
- (findvar.o): Update dependencies.
- (frame.o): Update dependencies.
- (std-regs.o): Update dependencies.
-
-2003-07-06 Christopher Faylor <cgf@redhat.com>
-
- * win32-nat.c (solib_symbols_add): Use one variable for all section
- address stuff. Pass variable rather than address of variable to
- safe_symbol_file_add.
-
-2003-07-06 Andreas Schwab <schwab@suse.de>
-
- * m68klinux-nat.c (fill_fpregset): Fix use of loop index.
-
-2003-07-04 Joel Brobecker <brobecker@gnat.com>
-
- * rs6000-nat.c (vmap_symtab): Fix compilation error.
-
-2003-07-04 Kris Warkentin <kewarken@qnx.com>
-
- * config/i386/nto.mh: Set XM_FILE to xm-i386.h
-
-2003-07-04 Kris Warkentin <kewarken@qnx.com>
-
- * nto-procfs.c: New file. Native procfs support for QNX Neutrino.
- * config/i386/nto.mh: New file.
- * config/i386/nm-nto.h: New file.
- * configure.host: Add i[3456]86-*-nto*.
-
-2003-07-03 Joel Brobecker <brobecker@gnat.com>
-
- * remote-vx.c (vx_add_symbols): Fix compilation error.
-
-2003-07-03 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (REGISTER_NAME): Do not supply a default.
- * gdbarch.h, gdbarch.c: Re-generate.
- * config/sparc/tm-sparc.h (REGISTER_NAME): Define.
- (legacy_register_name): Declare.
- * config/sparc/tm-sp64.h (legacy_register_name): Declare.
- (REGISTER_NAME): Define.
- * sparc-tdep.c (legacy_register_name): New function.
- * config/pa/tm-hppa64.h (REGISTER_NAMES): Delete macro.
- (REGISTER_NAME): Define.
- (hppa64_register_name): Declare.
- * config/pa/tm-hppa.h (REGISTER_NAMES): Delete macro.
- * hppa-tdep.c (hppa_gdbarch_init): Set hppa_register_name.
- (hppa64_register_name): New function.
- (hppa_register_name): New function.
- * arch-utils.c (legacy_register_name): Delete.
- * arch-utils.h (legacy_register_name): Delete.
-
-2003-07-03 Daniel Jacobowitz <drow@mvista.com>
-
- * cli/cli-interp.c (cli_interpreter_resume): Update the
- cli_uiout's stream to gdb_stdout.
-
-2003-07-03 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (REGISTER_RAW_SIZE, REGISTER_VIRTUAL_SIZE): Add
- predicate.
- * gdbarch.h, gdbarch.c: Re-generate.
- * regcache.c (init_regcache_descr): Use legacy code when either
- REGISTER_BYTE or REGISTER_RAW_SIZE is set.
-
-2003-07-02 Daniel Jacobowitz <drow@mvista.com>
-
- * NEWS: Move "set logging" entry into GDB 6.0 section.
-
-2003-07-02 Jim Blandy <jimb@redhat.com>
-
- * s390-tdep.c (struct frame_extra_info): new member:
- 'stack_bought_valid'.
- (s390_get_frame_info): Set fextra_info->stack_bought_valid if we
- initialize fextra_info->stack_bought.
- (s390_frameless_function_invocation): Don't trust the value of
- fextra_info_ptr->stack_bought unless
- fextra_info->stack_bought_valid is set.
-
- New S390 prologue analyzer.
- * s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
- (pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
- pv_constant_last, pv_add, pv_add_constant, pv_subtract,
- pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
- compute_x_addr, s390_on_stack, s390_store,
- s390_get_signal_frame_info): New functions.
- (S390_NUM_SPILL_SLOTS): New macro.
- (s390_get_frame_info): Rewritten.
- (is_arg_reg): Deleted.
-
- Break out the decoding of S/390 instructions into separate
- functions, to make it more legible, and easier to check
- against the spec.
- * s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
- is_rx, is_rxe): New functions.
- (op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
- op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
- op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
- op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
- enums for opcode values. (Is this an improvement?)
-
-2003-07-02 Andrew Cagney <cagney@redhat.com>
-
- * i386-tdep.c: Revert change committed as part of trad-frame code
- below.
-
-2003-07-02 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (insert_catchpoint): Make static.
-
-2003-07-02 Andreas Schwab <schwab@suse.de>
-
- * ia64-tdep.c (ia64_push_dummy_call): Define as combination of
- former ia64_push_arguments and ia64_push_return_address, and use
- regcache functions instead of read/write_register.
- (ia64_gdbarch_init): Set push_dummy_call instead of
- deprecated_push_arguments and deprecated_push_return_address.
-
-2003-07-01 Andreas Jaeger <aj@suse.de>
-
- * x86-64-tdep.c (x86_64_push_arguments): Align stack to 16-byte
- before the call.
- Set %rax only to number of SSE registers used.
-
-2003-07-01 Andrew Cagney <cagney@redhat.com>
-
- * trad-frame.h: Update comments, a -1 .addr is reserved.
- (trad_frame_value_p, trad_frame_addr_p): Declare.
- (trad_frame_reg_p): Declare.
- (trad_frame_set_value): Rename trad_frame_register_value.
- (trad_frame_set_unknown): Declare.
- * trad-frame.c (trad_frame_realreg_p): New function.
- (trad_frame_addr_p, trad_frame_value_p): New function.
- (trad_frame_set_unknown): New function.
- (trad_frame_alloc_saved_regs): Initialize .addr to -1, not zero.
- (trad_frame_prev_register): Use trad_frame_realreg_p,
- trad_frame_addr_p and trad_frame_value_p.
- (trad_frame_set_value): Rename trad_frame_register_value.
- * d10v-tdep.c (d10v_frame_unwind_cache): Use trad_frame_addr_p
- and trad_frame_set_value.
-
-2003-06-30 Jim Blandy <jimb@redhat.com>
-
- Patch from IBM (authors unspecified, probably Ulrich Weigand and
- Gerhard Tonn) for argument passing on the S/390 and S/390x:
- * s390-tdep.c (S390_STACK_FRAME_OVERHEAD): This is always space
- for 16 registers, and then 32 more bytes.
- (S390_STACK_PARAMETER_ALIGNMENT, S390_NUM_FP_PARAMETER_REGISTERS):
- New macros.
- (is_double_arg): The s390x doesn't handle DOUBLE_ARGS specially.
- Move up in the file, since it's now used by is_simple_arg.
- (is_simple_arg): Don't assume registers are four bytes long.
- Exclude all double arguments. Extended floats are not simple
- args.
- (is_power_of_two): New function.
- (pass_by_copy_ref): Call is_power_of_two, and check that the
- length fits in a register, rather than listing all the acceptable
- sizes. Extended floats are not passed by reference.
- (s390_push_arguments): Don't assume registers are four bytes long.
- Reserve an argument register to point to the buffer for structures
- returned by value. Use S390_NUM_FP_PARAMETER_REGISTERS and
- S390_STACK_FRAME_OVERHEAD.
-
-2003-06-30 Andreas Schwab <schwab@suse.de>
-
- * utils.c (internal_vproblem): Use xvasprintf, not xasprintf, to
- format error message.
-
-2003-06-30 Joel Brobecker <brobecker@gnat.com>
-
- * sparc-tdep.c (stop_after_trap): Remove declaration, not used.
-
-2003-06-30 David Carlton <carlton@kealia.com>
-
- Band-aid for PR c++/1245.
- * Makefile.in (cp-support.o): Depend on complaints_h.
- * cp-support.c: Include complaints.h. Add declaration for
- find_last_component.
- (cp_find_first_component): Separate code into
- cp_find_first_component_aux.
- (cp_find_first_component_aux): Call demangled_name_complaint.
- (demangled_name_complaint): New.
-
-2003-06-30 Andrew Cagney <cagney@redhat.com>
-
- * remote.c (remote_write_bytes): Explicitly compute and then use
- the payload size. Update comments to reflect. Fixes problem of
- GDB not sending small packets as found by Fred Fish.
-
-2003-06-30 Andrew Cagney <cagney@redhat.com>
-
- * remote.c (remote_async_wait): Fix -Wformat problem.
-
-2003-06-29 Andrew Cagney <cagney@redhat.com>
-
- * remote.c (remote_wait): Call error, and not warning, when the
- packet is corrupt.
- (remote_async_wait): Ditto.
-
-2003-06-29 Daniel Jacobowitz <drow@mvista.com>
-
- * sparc-tdep.c (sparc_y_regnum): Make external again.
-
-2003-06-29 Daniel Jacobowitz <drow@mvista.com>
-
- * cli/cli-logging.c (pop_output_files): Add void to function
- definition.
-
-2003-06-29 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (frame_register_unwind): Use unsigned char when dumping
- the buffer contents.
-
-2003-06-28 Daniel Jacobowitz <drow@mvista.com>
-
- * cli/cli-logging.c: New file.
- * cli-out.c (struct ui_out_data): Add original_stream.
- (cli_redirect): New function.
- (cli_ui_out_impl): Add cli_redirect.
- (cli_out_new): Initialize original_stream.
- * ui-out.c (default_ui_out_impl): Add NULL for redirect member.
- (uo_redirect, ui_out_redirect): New.
- * ui-out.h (struct ui_out_impl): Add redirect member.
- (redirect_ftype): New.
- (ui_out_redirect): Add prototype.
- * Makefile.in: Add rules for cli-logging.c.
- * NEWS: Mention "set logging".
-
-2003-06-27 Elena Zannoni <ezannoni@redhat.com>
-
- * config/powerpc/ppc64-linux.mh (NATDEPFILES): Add linux-nat.o.
-
-2003-06-27 Andrew Cagney <cagney@redhat.com>
-
- * m68hc11-tdep.c (m68hc11_call_dummy_address): Delete function.
- (m68hc11_gdbarch_init): Do not set call_dummy_address.
- * avr-tdep.c (avr_call_dummy_address): Delete function.
- (avr_gdbarch_init): Do not set call_dummy_address.
-
-2003-06-27 David Carlton <carlton@kealia.com>
-
- * dwarf2read.c (add_partial_symbol): Add 'objfile' argument to
- call to cp_check_possible_namespace_symbols.
- (add_partial_namespace): Add partial symbol instead of calling
- cp_check_namespace_symbol.
- (read_namespace): Add symbol associated to namespace.
- (new_symbol): Handle DW_TAG_namespace.
- * cp-support.h: Delete declaration of cp_check_namespace_symbol;
- add 'objfile' argument to declaration of
- cp_check_possible_namespace_symbols.
- * cp-namespace.c: Delete variables namespace_block,
- possible_namespace_block, namespace_objfile.
- Delete functions get_namespace_block, get_namespace_objfile,
- cp_check_namespace_symbol, check_namespace_symbol_block,
- lookup_namespace_symbol.
- (lookup_symbol_file): Delete call to lookup_namespace_symbol;
- tweak call to lookup_possible_namespace_symbol.
- (initialize_namespace_symtab): Rename from
- initialize_namespace_blocks; add 'objfile' argument, don't do
- anything special with global block.
- (get_possible_namespace_block): Add 'objfile' argument.
- (check_possible_namespace_symbols_loop)
- (cp_check_possible_namespace_symbols): Ditto.
- (free_namespace_block): Rename from free_namespace_blocks; don't
- do anything special with global block.
- (check_one_possible_namespace_symbol): Add 'objfile' argument, and
- inline call to check_namespace_symbol_block.
- (lookup_possible_namespace_symbol): Add 'symtab' argument, loop
- over all objfiles.
- (maintenance_cplus_namespace): Only have possible symbols; add
- loop over objfiles.
- (_initialize_cp_namespace): Tweak doc string.
- * objfiles.h: Add opaque declaration of struct symtab.
- (struct objfile): Add cp_namespace_symtab member.
- * objfiles.c (allocate_objfile): Set
- objfile->cp_namespace_symtab.
-
-2003-06-27 David Carlton <carlton@kealia.com>
-
- * Merge with mainline; tag is carlton_dictionary-20030627-merge.
-
-2003-06-27 Elena Zannoni <ezannoni@redhat.com>
-
- * symfile.c (syms_from_objfile): Move variables to inner block.
- Move the checks for the non-mainline case a bit earlier to avoid
- doing some useless computations.
-
-2003-06-27 Elena Zannoni <ezannoni@redhat.com>
-
- * dwarfread.c (decode_modified_type): Gag new compiler warning.
-
-2003-06-26 Elena Zannoni <ezannoni@redhat.com>
-
- * dwarf2read.c (dwarf2_locate_sections): Ignore empty .eh_frame
- sections.
-
-2003-06-26 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: Add gdb/testsuite/gdb.c++/pr-1210.cc,
- gdb/testsuite/gdb.c++/pr-1210.exp.
-
-2003-06-26 Andrew Cagney <cagney@redhat.com>
-
- * config/djgpp/fnchange.lst: Fix 8.3 problem with sim/ppc's
- altivec_expression.h and altivec_registers.h.
-
-2003-06-26 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (gdb_print_insn_mips): Only explicitly set
- info->mach when MIPS16. Patch suggested by Fred Fish.
-
-2003-06-26 Andrew Cagney <cagney@redhat.com>
-
- * utils.c (internal_vproblem): Print the problem to a reason
- buffer and then pass to query. Make the msg variable more local.
-
-2003-06-26 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (FRAME_ARGS_ADDRESS): Add predicate. Deprecate.
- (FRAME_LOCALS_ADDRESS): Add predicate. Deprecate.
+ * i386-tdep.c: Update copyright.
+ (i386_gdbarch_init): Do not set extract_struct_value_address,
+ never called.
+ (i386_extract_struct_value_address): Delete function.
+ * sparc-tdep.c (sparc32_gdbarch_init): Do not set
+ extract_struct_value_address, never called.
+ (sparc32_extract_struct_value_address): #if 0 function. Add
+ comments explaining its future.
+
+2004-01-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * arm-tdep.c (arm_write_pc): New function.
+ (arm_gdbarch_init): Call set_gdbarch_write_pc.
+
+2004-01-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * breakpoint.c (must_shift_inst_regs): Delete.
+ (bpstat_stop_status): Delete references to DECR_PC_AFTER_HW_BREAK
+ and SHIFT_INST_REGS.
+ * infcmd.c (step_1, step_1_continuation): Delete references to
+ SHIFT_INST_REGS.
+ * infrun.c (keep_going): Likewise.
+ * target.h (DECR_PC_AFTER_HW_BREAK): Don't define.
+ * config/i386/nm-i386.h (DECR_PC_AFTER_HW_BREAK): Likewise.
+
+2004-01-17 Andrew Cagney <cagney@redhat.com>
+
+ * gdbarch.sh (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Delete.
* gdbarch.h, gdbarch.c: Re-generate.
- * frame-base.c (default_frame_args_address): Update. Use
- default_frame_base_address when DEPRECATED_FRAME_ARGS_ADDRESS is
- not available.
- (default_frame_locals_address): Ditto for
- DEPRECATED_FRAME_LOCALS_ADDRESS.
- * vax-tdep.c (vax_sigtramp_saved_pc): Update.
- (vax_frame_num_args): Update.
- (vax_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * symtab.h (address_class): Update comments.
- * ns32k-tdep.c (ns32k_sigtramp_saved_pc): Update.
- * config/sparc/tm-sparc.h (DEPRECATED_FRAME_ARGS_ADDRESS): Update.
- (DEPRECATED_FRAME_LOCALS_ADDRESS): Update.
- * config/pa/tm-hppa64.h (DEPRECATED_FRAME_ARGS_ADDRESS): Update.
- (DEPRECATED_FRAME_LOCALS_ADDRESS): Update.
- (DEPRECATED_FRAME_LOCALS_ADDRESS): Update.
- * config/m68k/tm-delta68.h (DEPRECATED_FRAME_ARGS_ADDRESS): Update.
- * alpha-mdebug-tdep.c: Update.
- * ada-lang.c (add_symbols_from_enclosing_procs): Update.
-
-2003-06-26 Andreas Jaeger <aj@suse.de>
-
- * x86-64-tdep.c (x86_64_push_arguments): Always set %rax to number
- of SSE registers so that varargs functions work. Rework handling
- of passing arguments on the stack.
- (x86_64_store_return_value): Return double and float values in SSE
- register.
-
-2003-06-24 Michael Chastain <mec@shout.net>
-
- * PROBLEMS: Document pr gdb/1091 and pr gdb/1193,
- the "constructor breakpoints ignored" bug.
-
-2003-06-25 David Carlton <carlton@kealia.com>
-
- * MAINTAINERS: Update e-mail address.
-
-2003-06-24 Jim Blandy <jimb@redhat.com>
-
- * ppc-linux-tdep.c: More "Linux" -> "GNU/Linux".
-
- * ppc-linux-tdep.c (ppc64_linux_convert_from_func_ptr_addr): New
- function.
- (ppc_linux_init_abi): Register it as the
- CONVERT_FROM_FUNC_PTR_ADDR method under the PPC64 Linux ABI.
-
- * ppc-linux-tdep.c (ppc64_call_dummy_address): New function.
- (ppc_linux_init_abi): Set it as the gdbarch's call_dummy_address
- method.
-
- * ppc-linux-tdep.c (ppc64_desc_entry_point): New function.
- (ppc64_standard_linkage_target): Use it.
-
-2003-06-23 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (rs6000_register_virtual_type): Add explict cases
- for 0 "int0" and 4 "int32" sized registers.
- * gdbtypes.c (builtin_type_int0): Define.
- (build_gdbtypes): Initialize builtin_type_int0.
- * gdbtypes.h (builtin_type_int0): Declare.
-
-2003-06-23 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Clear gdb_arch_char_signed
- as characters are unsigned.
-
-2003-06-22 Daniel Jacobowitz <drow@mvista.com>
-
- PR gdb/1179
- * dwarfread.c (struct_type): Skip static fields without crashing.
-
-2003-06-22 Andrew Cagney <cagney@redhat.com>
-
- GDB 6.0 branch created.
- * README: Update.
- * PROBLEMS: Update. Empty.
- * NEWS: Update.
-
-2003-06-22 Daniel Jacobowitz <drow@mvista.com>
-
- * symfile.c (add_symbol_file_command): Use parse_and_eval_address.
- Suggested by Nick Hibma <n_hibma@webweaving.org>.
-
-2003-06-22 Andrew Cagney <cagney@redhat.com>
-
- * osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Handle
- GNU_ABI_TAG_FREEBSD and GNU_ABI_TAG_NETBSD. Suggested by Momchil
- Velikov.
-
-2003-06-22 Daniel Jacobowitz <drow@mvista.com>
-
- * cli/cli-cmds.c (shell_escape): Silence warnings from old
- compilers.
-
-2003-06-21 Daniel Jacobowitz <drow@mvista.com>
-
- * c-valprint.c (c_value_print): Add VALUE_OFFSET to the address
- argument of val_print.
- * cp-valprint.c (cp_print_value): Don't add the offset parameter
- to the address argument of baseclass_offset or target_read_memory.
- Do add it to the argument of cp_print_value_fields.
-
-2003-06-21 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c: Include "reggroups.h" and "sim-regno.h".
- (mips_register_name): Return names for NUM_REGS..2*NUM_REGS
- instead of 0..NUM_REGS.
- (mips_register_reggroup_p): New function.
- (mips_pseudo_register_write): New function.
- (mips_pseudo_register_read): New function.
- (mips_register_raw_size): For NUM_REGS..2*NUM_REGS return the size
- based on the register's type.
- (read_next_frame_reg): Simplify. Assert that REGNO is a pseudo /
- cooked.
- (mips_get_saved_register): Simplify. Assert that REGNO is a
- pseudo / cooked.
- (mips_register_byte): New function. Use MIPS_REGISTER_BYTE.
- (mips_register_type): Replace mips_register_virtual_type. Map
- NUM_REGS..2*NUM_REGS onto 0..NUM_REGS. Use MIPS_REGISTER_TYPE
- when available.
- (read_next_frame_reg): Simplify, but handle SP_REGNUM. Assert
- that the register is cooked / virtual.
- (mips_frame_saved_pc): Fetch the cooked PC, and not the raw PC.
- Only get the extra info when needed.
- (set_reg_offset): Save the offset in NUM_REGS..2*NUM_REGS as well.
- (mips32_heuristic_proc_desc): Fetch the cooked register.
- (heuristic_proc_desc, mips_pop_frame, get_frame_pointer): Ditto.
- (mips_init_extra_frame_info, get_frame_pointer): Ditto.
- (mips_print_register): Use gdbarch_register_type, instead of
- REGISTER_VIRTUAL_TYPE.
- (print_gp_register_row): Use gdbarch_register_type, instead of
- REGISTER_VIRTUAL_TYPE. Allow for a pseudo / cooked REGNUM.
- (mips_print_registers_info): Assert REGNO is pseodo / cooked.
- Print the pseudo / cooked registers.
- (mips_print_registers_info): Assert REGNO is pseodo / cooked.
- Print the pseudo / cooked registers.
- (mips_xfer_register): Use regcache_cooked_read_part. Assert that
- REG_NUM is pseudo / cooked.
- (mips_o32_xfer_return_value): Xfer the pseudo / cooked register.
- (mips_n32n64_xfer_return_value): Ditto.
- (mips_stab_reg_to_regnum): Map onto NUM_REGS..2*NUM_REGS.
- (mips_dwarf_dwarf2_ecoff_reg_to_regnum): Ditto.
- (mips_register_sim_regno): New function.
- (mips_gdbarch_init): Set deprecated_register_byte,
- register_group_p, pseudo_register_write, pseudo_register_read,
- register_sim_regno, and num_pseudo_regs. Set register_type,
- instead of register_virtual_type.
- * Makefile.in (mips-tdep.o): Update dependencies.
- * config/mips/tm-mips64.h (MIPS_REGISTER_TYPE): Rename
- REGISTER_VIRTUAL_TYPE.
- * config/mips/tm-mips.h (MIPS_REGISTER_TYPE): Ditto.
- * config/mips/tm-irix5.h (MIPS_REGISTER_TYPE): Ditto.
- * config/mips/tm-mips.h (MIPS_REGISTER_BYTE): Rename REGISTER_BYTE.
- * config/mips/tm-irix6.h (MIPS_REGISTER_BYTE): Ditto.
- * config/mips/tm-irix5.h (MIPS_REGISTER_BYTE): Ditto.
-
-2003-06-21 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in (cli-cmds.o): Depend on $(gdb_vfork_h)
- * cli/cli-cmds.c: Include "gdb_vfork.h".
- (shell_escape): Use vfork.
-
-2003-06-21 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_find_saved_regs): Rewrite mdebug code handling
- 32 bit floating-point register saves.
-
- * frame.h (deprecated_unwind_get_saved_register): Delete.
- * frame.c (deprecated_unwind_get_saved_register): Delete function.
- * mips-tdep.c (mips_get_saved_register): Use frame_register_unwind
- and deprecated_get_next_frame_hack instead of
- deprecated_unwind_get_saved_register.
-
- * mips-tdep.c (mips_dump_tdep): Do not print
- REGISTER_CONVERT_FROM_TYPE or REGISTER_CONVERT_TO_TYPE.
-
- * frame.c (get_frame_register): New function.
- (frame_unwind_register_signed): New function.
- (get_frame_register_signed): New function.
- (frame_unwind_register_unsigned): New function.
- (get_frame_register_unsigned): New function.
- * frame.h: Add comments on naming schema.
- (get_frame_register, frame_unwind_register_signed): Declare.
- (get_frame_register_signed, get_frame_register_signed): Declare.
- (frame_unwind_register_unsigned): Declare.
- (get_frame_register_unsigned): Declare.
-
-2003-06-20 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_gdbarch_init): Don't call set_gdbarch_bfd_vma_bit.
-
-2003-06-20 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_read_pc): Use regcache instead of read_register.
- (avr_read_sp): Ditto.
-
-2003-06-20 Daniel Jacobowitz <drow@mvista.com>
-
- * config/arm/linux.mt: Remove code protected by GDBSERVER define.
- * config/arm/nm-linux.h: Likewise.
- * config/arm/tm-linux.h: Likewise.
- * config/ia64/nm-linux.h: Likewise.
- * config/ia64/tm-ia64.h: Likewise.
- * config/s390/tm-linux.h: Likewise.
- * config/s390/tm-s390.h: Likewise.
- * s390-nat.c: Likewise.
- * s390-tdep.c: Likewise.
-
- * config/i386/linux.mt: Don't set GDBSERVER_DEPFILES.
- * config/ia64/linux.mt: Likewise.
- * config/m68k/linux.mh: Likewise.
- * config/mips/linux.mt: Likewise.
- * config/powerpc/linux.mh: Likewise.
- * config/sh/linux.mt: Likewise.
-
-2003-06-19 Kris Warkentin <kewarken@qnx.com>
-
- * solib.c (solib_open): Change tests for whether to search
- LD_LIBRARY_PATH and PATH to better deal with remotes. Update
+ * infcmd.c (print_return_value): Delete reference to
+ DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS.
+
+ * cris-tdep.c (cris_gdbarch_init): Do not set
+ deprecated_extract_struct_value_address.
+
+ * xstormy16-tdep.c: Update copyright.
+ (xstormy16_extract_struct_value_address): Update to current
+ extract struct value address interface.
+ (xstormy16_gdbarch_init): Set extract_struct_value_address.
+ * sh64-tdep.c (sh64_extract_struct_value_address): Update to
+ current extract struct value address interface.
+ (sh64_gdbarch_init): Set extract_struct_value_address.
+
+ * cris-tdep.c: Update copyright.
+ (cris_extract_struct_value_address): Delete function.
+ (struct_return_address): Delete variable.
+ (cris_store_struct_return): Do not set struct_return_address.
+
+ * mcore-tdep.c: Update copyright.
+ (mcore_extract_struct_value_address): Delete function. Update
comments.
+ (mcore_gdbarch_init): Update.
+ * mn10300-tdep.c: Update copyright.
+ (mn10300_extract_struct_value_address): Delete function.
+ (mn10300_gdbarch_init): Update.
+ * v850-tdep.c: Update copyright.
+ (v850_extract_struct_value_address): Delete.
+ (v850_gdbarch_init): Update.
+ * ns32k-tdep.c: Update copyright.
+ (ns32k_extract_struct_value_address): Delete.
+ (ns32k_gdbarch_init): Update.
+ * hppa-tdep.c (hppa_extract_struct_value_address): Delete.
+ (hppa_gdbarch_init): Update.
+ * vax-tdep.c: Update copyright.
+ (vax_extract_struct_value_address): Delete.
+ (vax_gdbarch_init): Update.
-2003-06-19 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_frame_address): Delete function.
- (avr_gdbarch_init): Don't call set_gdbarch_frame_args_address,
- set_gdbarch_frame_args_address.
-
-2003-06-19 Andrew Cagney <cagney@redhat.com>
-
- * config/mips/tm-mips.h (REGISTER_CONVERT_TO_TYPE): Delete.
- (REGISTER_CONVERT_FROM_TYPE): Delete.
- (mips_register_convert_to_type): Delete declaration.
- (mips_register_convert_from_type): Delete declaration.
- * linux-nat.h (struct target_ops): Declare opaque. s/Linux/Linux
- kernel/.
-
-2003-06-19 Michael Snyder <msnyder@redhat.com>
-
- * linux-nat.h: New file.
- * linux-nat.c: Include linux-nat.h.
- * lin-lwp.c: Include linux-nat.h.
- Move struct lwp_info def to linux-nat.h.
- * linux-proc.c: Include linux-nat.h.
- (linux_make_note_section): Iterate over lwps instead of threads.
- (linux_do_thread_registers): Use lwp instead of merged pid.
- * config/nm-linux.h: Move miscelaneous def'ns to linux-nat.h.
- * Makefile.in (lin-lwp.o, linux-proc.o, linux-nat.o):
- Add dependency on linux_nat_h.
-
-2003-06-19 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_extract_return_value): Delete debugging fprintf.
-
-2003-06-19 Daniel Jacobowitz <drow@mvista.com>
-
- * varobj.c (get_type, get_target_type): Use check_typedef.
-
-2003-06-19 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (insert_catchpoint): Call internal_error.
-
-2003-06-19 Theodore A. Roth <troth@openavr.org>
+ * gdbarch.sh (DEPRECATED_NPC_REGNUM): Delete.
+ * gdbarch.h, gdbarch.c: Re-generate.
+ * procfs.c (procfs_fetch_registers): Delete reference to
+ DEPRECATED_NPC_REGNUM.
+ (procfs_store_registers): Ditto.
+ * regcache.c (generic_target_write_pc): Simplify.
+ * lynx-nat.c: Delete #ifdef SPARC code. Not used.
- * avr-tdep.c (avr_push_dummy_code): Delete function.
- (avr_gdbarch_init): Don't call set_gdbarch_push_dummy_code.
+ * core-sol2.c (fetch_core_registers): Replace
+ DEPRECATED_NPC_REGNUM with equivalent tdep value.
-2003-06-19 Daniel Jacobowitz <drow@mvista.com>
+ * hppa-tdep.c: Update copyright year.
+ (hppa_target_write_pc): Use PCOQ_TAIL_REGNUM instead of
+ NPC_REGNUM.
+ (hppa_gdbarch_init): Do not set deprecated_npc_regnum.
- * arch-utils.c (default_prepare_to_proceed): Remove.
- (generic_prepare_to_proceed): Remove.
- * arch-utils.h (default_prepare_to_proceed): Remove prototype.
- (generic_prepare_to_proceed): Remove prototype.
- * gdbarch.sh (PREPARE_TO_PROCEED): Remove.
- * gdbarch.c: Regenerate.
- * gdbarch.h: Regenerate.
- * hppa-tdep.c (hppa_prepare_to_proceed): Remove dangling prototype.
- * hppah-nat.c (hppa_switched_threads): Remove.
- * infrun.c (prepare_to_proceed): New static function, copied from
- generic_prepare_to_proceed. Remove select_it argument.
- (proceed): Call prepare_to_proceed.
- * infttrace.c (old_gdb_pid, reported_pid, reported_bpt): Remove
- variables.
- (ptrace_wait): Don't set the removed variables.
- (hppa_switched_threads): Remove.
- * lin-lwp.c (lin_lwp_prepare_to_proceed): Remove.
- * config/nm-linux.h (PREPARE_TO_PROCEED): Don't define.
- (lin_lwp_prepare_to_proceed): Remove prototype.
- * config/i386/nm-x86-64linux.h (PREPARE_TO_PROCEED): Don't undefine.
- * config/pa/nm-hppah.h (PREPARE_TO_PROCEED): Don't define.
-
-2003-06-18 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c: Include frame.h, frame-unwind.h, frame-base.h, and
- trad-frame.h.
- (AVR_MAX_PROLOGUE_SIZE): Increase from 56 to 64.
- (AVR_ARG1_REGNUM, AVR_ARGN_REGNUM): Define.
- (AVR_RET1_REGNUM, AVR_RETN_REGNUM): Define.
- (AVR_PROLOGUE_*): Enumerate prologue types.
- (struct frame_extra_info): Remove.
- (struct avr_unwind_cache): Define.
- (avr_write_sp): Delete function.
- (avr_read_fp): Ditto.
- (avr_init_extra_frame_info): Ditto.
- (avr_pop_frame): Ditto.
- (avr_frame_saved_pc): Ditto.
- (avr_saved_pc_after_call): Ditto.
- (avr_push_return_address): Ditto.
- (avr_frame_chain): Ditto.
- (avr_store_struct_return): Ditto.
- (avr_push_arguments): Ditto.
- (avr_scan_prologue): Update comments. Changed to set up the info for
- cache unwinding. Now returns end of prologue PC.
- (avr_skip_prologue): Better handling of functions lacking a prologue
- by using avr_scan_prologue.
- (avr_scan_arg_moves): New function.
- (avr_saved_regs_unwinder): Ditto.
- (avr_frame_unwind_cache): Ditto.
- (avr_unwind_pc): Ditto.
- (avr_frame_this_id): Ditto.
- (avr_frame_prev_register): Ditto.
- (avr_frame_p): Ditto.
- (avr_frame_base_address ): Ditto.
- (avr_unwind_dummy_id): Ditto.
- (avr_push_dummy_code): Ditto.
- (push_stack_item): Ditto.
- (pop_stack_item): Ditto.
- (avr_push_dummy_call): Ditto.
- (struct stack_item): Define.
- (avr_frame_unwind): Declare structure.
- (avr_frame_base): Ditto.
- (avr_gdbarch_init): Remove calls to
- set_gdbarch_deprecated_init_frame_pc,
- set_gdbarch_deprecated_target_read_fp,
- set_gdbarch_deprecated_dummy_write_sp,
- set_gdbarch_deprecated_fp_regnum,
- set_gdbarch_deprecated_push_arguments,
- set_gdbarch_deprecated_push_return_address,
- set_gdbarch_deprecated_pop_frame,
- set_gdbarch_deprecated_store_struct_return,
- set_gdbarch_deprecated_frame_init_saved_regs,
- set_gdbarch_deprecated_init_extra_frame_info,
- set_gdbarch_deprecated_frame_chain,
- set_gdbarch_deprecated_frame_saved_pc,
- set_gdbarch_deprecated_saved_pc_after_call.
- Add calls to set_gdbarch_push_dummy_call,
- set_gdbarch_push_dummy_code,
- frame_unwind_append_predicate,
- frame_base_set_default,
- set_gdbarch_unwind_dummy_id,
- set_gdbarch_unwind_pc.
- Wrap a long line.
-
-2003-06-18 Corinna Vinschen <vinschen@redhat.com>
-
- * h8300-tdep.c (h8300s_register_name): Enable MACH and MACL
- registers for H8/300S.
- (h8300_print_registers_info): Ditto.
- (h8300_gdbarch_init): Accommodate register count for H8/300S.
-
-2003-06-18 Daniel Jacobowitz <drow@mvista.com>
-
- * config/nm-linux.h (linux_record_stopped_pid): New prototype.
- * lin-lwp.c (child_wait): Call linux_record_stopped_pid.
- (lin_lwp_wait): Likewise. Update comments.
- * linux-nat.c (struct simple_pid_list, add_to_pid_list)
- (pull_pid_from_list, linux_record_stopped_pid): New.
-
-2003-06-17 Stephane Carrez <stcarrez@nerim.fr>
-
- * ada-lang.c (scan_discrim_bound): Name first argument.
- (ada_add_block_symbols): Remove BLOCK_SYM to use local variable
- declared by ALL_BLOCK_SYMBOLS.
-
-2003-06-17 Stephane Carrez <stcarrez@nerim.fr>
-
- * ada-tasks.c (find_function_in_inferior): Don't declare it.
- ("regcache.h"): Include it.
- * ada-lex.l (block_lookup): Replace VAR_NAMESPACE with VAR_DOMAIN.
-
-2003-06-17 Daniel Jacobowitz <drow@mvista.com>
-
- * NEWS: Mention gdbserver detach change and "disconnect" command.
- * infcmd.c (disconnect_command): New function.
- (_initialize_infcmd): Add ``disconnect'' command.
- * remote.c (remote_async_detach): Delete.
- (remote_detach): Merge remote_async_detach.
- (remote_disconnect): New.
- (init_remote_ops): Set to_disconnect.
- (init_remote_cisco_ops): Likewise.
- (init_remote_async_ops): Likewise. Use remote_detach.
- * target.c (cleanup_target): Default to_disconnect.
- (update_current_target): Inherit to_disconnect.
- (target_disconnect, debug_to_disconnect): New functions.
- (setup_target_debug): Set to_disconnect.
- * target.h (struct target_ops): Add to_disconnect.
- (target_disconnect): Add prototype.
-
-2003-06-17 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (insert_catchpoint): New function.
- (insert_breakpoints): Use catch_exceptions to call
- insert_catchpoint. Disable catchpoints if they fail to insert.
-
-2003-06-17 Daniel Jacobowitz <drow@mvista.com>
-
- * symfile.c (reread_symbols): Clear sym_private.
-
-2003-06-17 Andrew Cagney <cagney@redhat.com>
-
- * trad-frame.h (struct frame_info): Add opaque declaration.
- * remote-fileio.h (struct cmd_list_element): Add opaque
- declaration.
- * h8300-tdep.c (h8300s_register_name): Avoid C++ // style
- comments.
+ * mips-tdep.c (mips_write_pc): New function.
+ (mips_gdbarch_init): Set "write_pc" to "mips_write_pc".
+ (mips_read_pc): Use mips_regnum instead of PC_REGNUM.
+ (mips_find_saved_regs, mips_software_single_step: Ditto.
+ (mips_frame_saved_pc, mips_frame_saved_pc): Ditto.
+ mips_init_extra_frame_info, mips_pop_frame): Ditto.
-2003-06-17 Daniel Jacobowitz <drow@mvista.com>
-
- * remote.c (remote_prepare_to_store): Replace call to
- deprecated_read_register_bytes with multiple regcache_raw_read
- calls.
-
-2003-06-17 Kris Warkentin <kewarken@qnx.com>
-
- * nto-tdep.c (nto_map_arch_to_cputype): Recognize "powerpc".
- (nto_find_and_open_solib): Likewise.
- (nto_init_solib_absolute_prefix): Likewise.
- (_initialize_nto_tdep): Fix indentation.
-
-2003-06-17 Kris Warkentin <kewarken@qnx.com>
-
- * i386-nto-tdep.c (i386nto_sigcontext_addr): Make sp a CORE_ADDR.
-
-2003-06-17 Kris Warkentin <kewarken@qnx.com>
-
- * i386-nto-tdep.c (i386nto_sigcontext_addr): Declare sp before using.
-
-2003-06-17 Jim Blandy <jimb@redhat.com>
-
- * ppc-linux-tdep.c: "Linux" -> "GNU/Linux"
-
-2003-06-16 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_extract_return_value): New function.
- (avr_gdbarch_init): Set extract_return_value method.
-
-2003-06-16 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (deprecated_get_next_frame_hack): Declare.
- * frame.c (legacy_saved_regs_prev_register): Only require
- DEPRECATED_FRAME_INIT_SAVED_REGS when it is needed. Assert that
- there are always saved regs.
- (deprecated_generic_get_saved_register): Do not require
- DEPRECATED_FRAME_INIT_SAVED_REGS.
- (legacy_get_prev_frame): Do not require DEPRECATED_FRAME_CHAIN,
- use frame ID unwind instead.
- (deprecated_get_next_frame_hack): New function.
-
-2003-06-16 Corinna Vinschen <vinschen@redhat.com>
-
- * h8300-tdep.c (h8300_push_arguments): Remove. Substitute by...
- (h8300_push_dummy_call): ...this function. Some minor optimization.
- (h8300_push_return_address): Remove.
- (h8300_gdbarch_init): Remove calls to
- set_gdbarch_deprecated_dummy_write_sp,
- set_gdbarch_deprecated_push_arguments and
- set_gdbarch_deprecated_push_return_address.
- Add call to set_gdbarch_push_dummy_call.
-
-2003-06-16 Corinna Vinschen <vinschen@redhat.com>
-
- * h8300-tdep.c (E_PSEUDO_CCR_REGNUM): New define.
- (E_PSEUDO_EXR_REGNUM): Ditto.
- (h8300_is_argument_spill): Check for instructions moving argument
- registers into safe registers.
- (h8300_skip_prologue): Check for stm instruction to push registers
- used for register variables onto stack.
- (gdb_print_insn_h8300): Remove.
- (h8300_examine_prologue): Add a comment.
- (h8300_register_name): Take pseudo registers into account.
- (h8300s_register_name): Ditto.
- (h8300sx_register_name): Ditto.
- (h8300_print_register): Ditto.
- (h8300_print_registers_info): Define "nice" printing order.
- (h8300_saved_pc_after_call): Take pseudo registers into account.
- (h8300_register_type): Ditto. Return type used for remote connection
- when requesting real CCR or EXR register, return actual type when
- requesting pseudo CCR or EXR.
- (h8300_pseudo_register_read): New function.
- (h8300_pseudo_register_write): Ditto.
- (h8300_dbg_reg_to_regnum): Ditto.
- (h8300s_dbg_reg_to_regnum): Ditto.
- (h8300_gdbarch_init): Call set_gdbarch_num_pseudo_regs,
- set_gdbarch_ecoff_reg_to_regnum, set_gdbarch_dwarf_reg_to_regnum,
- set_gdbarch_dwarf2_reg_to_regnum, set_gdbarch_stab_reg_to_regnum and
- set_gdbarch_print_insn architecture dependent.
- Call set_gdbarch_pseudo_register_read and
- set_gdbarch_pseudo_register_write.
- (_initialize_h8300_tdep): Remove assignment to deprecated_tm_print_insn.
-
-2003-06-16 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (SAVE_DUMMY_FRAME_TOS): Deprecate.
- * gdbarch.h, gdbarch.c: Re-generate.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * infcall.c (call_function_by_hand): Update.
- * ia64-tdep.c (ia64_push_arguments): Update comment.
- * frame.c (legacy_get_prev_frame): Do not assume
- SAVE_DUMMY_FRAME_TOS_P.
- * dummy-frame.c (find_dummy_frame): Update comment.
-
-2003-06-16 Andrew Cagney <cagney@redhat.com>
-
- * regcache.c (do_cooked_read): Do not use register_valid_p.
-
-2003-06-15 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_register_type): Remove a blank line.
- (avr_scan_prologue): Correct some comments.
-
-2003-06-15 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_scan_prologue): Update comment describing the various
- prologue types.
- Properly scan prologues generated by gcc with the -mcall-prologues
- option.
- Add code to scan -mcall-prologues for mega devices.
-
-2003-06-15 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_register_byte): Delete function.
- (avr_register_raw_size): Delete function.
- (avr_register_virtual_size): Delete function.
- (avr_register_virtual_type): Delete function.
- (avr_register_type): New function.
- (avr_address_to_pointer): Remove unused code.
- (avr_read_fp): Need to read FP as two separate bytes due to change to
- avr_register_type() usage.
- (avr_gdbarch_init): Don't set deprecated_register_size.
- Don't set deprecated_register_bytes.
- Don't set deprecated_register_byte.
- Don't set deprecated_register_raw_size.
- Don't set deprecated_max_register_raw_size.
- Don't set deprecated_register_virtual_size.
- Don't set deprecated_max_register_virtual_size.
- Don't set deprecated_register_virtual_type.
- Set register_type method.
-
-2003-06-15 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in (linux-nat.o): Add rule.
- * linux-nat.c: New file.
- * config/nm-linux.h (CHILD_INSERT_FORK_CATCHPOINT): Define.
- (CHILD_INSERT_VFORK_CATCHPOINT): Define.
- (CHILD_INSERT_EXEC_CATCHPOINT): Define.
- * config/alpha/alpha-linux.mh (NATDEPFILES): Add linux-nat.o.
- * config/arm/linux.mh (NATDEPFILES): Likewise.
- * config/i386/linux.mh (NATDEPFILES): Likewise.
- * config/i386/x86-64linux.mh (NATDEPFILES): Likewise.
- * config/ia64/linux.mh (NATDEPFILES): Likewise.
- * config/m68k/linux.mh (NATDEPFILES): Likewise.
- * config/mips/linux.mh (NATDEPFILES): Likewise.
- * config/powerpc/linux.mh (NATDEPFILES): Likewise.
- * config/s390/s390.mh (NATDEPFILES): Likewise.
- * config/sparc/linux.mh (NATDEPFILES): Likewise.
-
-2003-06-15 Mark Kettenis <kettenis@gnu.org>
-
- * i387-tdep.c: Reorder includes, fix some whitespace issues and
- replace out-of-date comment.
-
-2003-06-15 Andrew Cagney <cagney@redhat.com>
-
- * rdi-share/host.h (Fail): Change to a varargs function.
- * remote-rdi.c (Fail): Update.
-
-2003-06-15 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_next_regnum): Fix bounds checking.
- (i386_convert_register_p, i386_register_to_value,
- i386_register_from_value): Handle types longer than 8 bytes.
-
-2003-06-15 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_register_to_value, i386_value_to_register):
- Move floating-point code to new function in i387-tdep.c.
- * i387-tdep.c (i387_register_to_value, i387_value_to_register):
- New functions containing code moved here from i386-tdep.c.
- * i387-tdep.h: Add opaque declaration for `struct type'.
- (i387_register_to_value, i387_value_to_register): New prototypes.
- * x86-64-tdep.c (x86_64_convert_register_p): New function.
- (x86_64_init_abi): Set convert_register_p, register_to_value and
- value_to_register here.
-
-2003-06-14 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_register_to_value): Make static.
- (mips_value_to_register): Make static.
- * i386-tdep.c (i386_fetch_pointer_argument): Make static.
- * ia64-tdep.c (ia64_register_raw_size): Make static.
- (ia64_register_virtual_size): Make static.
- (ia64_register_byte): Make static.
- * i387-tdep.c: Include "i387-tdep.h".
- (print_387_control_word): Delete function.
- (print_387_status_word): Delete function.
- (print_387_status_bits): Delete function.
- (print_387_control_bits): Delete function.
- * Makefile.in (i387-tdep.o): Update dependencies.
- * rdi-share/host.h (Fail): Declare.
- * remote-rdi.c (Fail): Update to match declaration.
-
-2003-06-14 Andrew Cagney <cagney@redhat.com>
-
- * config/mips/embedl64.mt (TDEPFILES): Delete "remote-array.o".
- * config/mips/embedl.mt (TDEPFILES): Delete "remote-array.o".
- * config/mips/embed64.mt (TDEPFILES): Delete "remote-array.o".
- * config/djgpp/fnchange.lst: Delete "remote-array.c".
- * README: Delete reference to remote-array.
- * Makefile.in (ALLDEPFILES): Remove "remote-array.c".
- (remote-array.o): Delete target.
- * config/mips/embed.mt (TDEPFILES): Delete "remote-array.o".
- * remote-array.c: Delete file.
-
-2003-06-14 Andrew Cagney <cagney@redhat.com>
- Mark Kettenis <kettenis@gnu.org>
-
- * gdbarch.sh (CONVERT_REGISTER_P): Add "type" parameter.
- (REGISTER_TO_VALUE, VALUE_TO_REGISTER): Replace raw buffer
- parameter with "frame".
- * gdbarch.h, gdbarch.c: Re-generate.
- * frame.h (put_frame_register): Declare.
- * frame.c (put_frame_register): New function.
- * arch-utils.c (legacy_convert_register_p): Add "type" parameter.
- (legacy_register_to_value): Rewrite, use "frame" to get the
- register value.
- (legacy_value_to_register): Rewrite, use "frame" to find the
- register's location before storing.
- * arch-utils.h (legacy_convert_register_p): Update.
- (legacy_register_to_value, legacy_value_to_register): Update.
- * findvar.c (value_from_register): Rewrite, eliminate use of
- REGISTER_CONVERT_TO_TYPE, pass "type" to CONVERT_REGISTER_P, pass
- "frame" to REGISTER_TO_VALUE.
- * valops.c (value_assign): Move the CONVERT_REGISTER code to the
- lval_reg_frame_relative + lval_register branch of the switch. Do
- not use REGISTER_CONVERT_FROM_TYPE. Use put_frame_register.
- * i386-tdep.c (I386_EBX_REGNUM, I386_ECX_REGNUM, I386_ESI_REGNUM,
- I386_EDI_REGNUM): New defines.
- (i386_next_regnum, i386_convert_register_p,
- i386_register_to_value, i386_value_to_register): New functions.
- (i386_register_convertible, i386_register_convert_to_virtual,
- i386_convert_to_raw): Remove functions.
- (i386_gdbarch_init): Set convert_register_p, register_to_value and
- value_to_register instead of register_convertible,
- register_convert_to_virtual and register_convert_to_raw.
- * mips-tdep.c (mips_convert_register_p): New function.
- (mips_value_to_register): Replace mips_register_convert_from_type.
- (mips_register_to_value): Replace mips_register_convert_to_type.
- (mips_gdbarch_init): Set conver_register_p, value_to_register and
- register_to_value.
- * alpha-tdep.c (alpha_convert_register_p): Update.
- (alpha_value_to_register): Update, store the register.
- (alpha_register_to_value): Update, fetch the register.
-
-2003-06-14 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_remote_translate_xfer_address): Delete function.
- (avr_gdbarch_init): Remove avr_call_dummy_words variable.
- Don't set deprecated_call_dummy_words.
- Remove commented out set_gdbarch_believe_pcc_promotion() call.
- Don't set remote_translate_xfer_address.
- (avr_io_reg_read_command): Remove commented out debug printf.
- Wrap a long line.
-
-2003-06-14 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_scan_prologue): Fix to avoid a buffer over run which
- causes gdb to seg fault.
-
-2003-06-14 Daniel Jacobowitz <drow@mvista.com>
-
- * sparc-nat.c (fetch_inferior_registers): Correct
- a reference to "registers".
-
-2003-06-14 Jeroen Dekkers <jeroen@dekkers.cx>
-
- * Makefile.in (exc_request_U_h): Define
- (exc_request_S_h): Likewise.
- (msg_reply_S_h): Likewise.
- (msg_U_h): Likewise.
- (notify_S_h): Likewise.
- (process_reply_S_h): Likewise.
- (gnu-nat.o): Depend on gdb_obstack_h
- * gnu-nat.c: Include "gdb_obstack.h".
-
-2003-06-13 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Document what PUSH_DUMMY_CALL replaces.
- * gdbarch.h, gdbarch.c: Re-generate.
+2004-01-17 Andrew Cagney <cagney@redhat.com>
-2003-06-13 Andrew Cagney <cagney@redhat.com>
+ * mips-tdep.c: Re-indent. Group functions by ABI.
- * gdbarch.sh: Document what UNWIND_DUMMY_ID replaces. Clarify
- when deprecated REGISTER macros can be deleted.
- * gdbarch.h, gdbarch.c: Re-generate.
+2004-01-17 Andrew Cagney <cagney@redhat.com>
-2003-06-13 Jim Blandy <jimb@redhat.com>
-
- * solib-svr4.c (solib_break_names): Recognize the 64-bit PowerPC
- Linux entry point symbols for _dl_debug_state, too.
-
-2003-06-13 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): When UNWIND_DUMMY_ID is
- available, do not use the FP register, and always save the TOS.
- * dummy-frame.c (dummy_frame_this_id): Do not assert
- SAVE_DUMMY_FRAME_TOS.
- * i386-tdep.c (i386_save_dummy_frame_tos): Delete function.
- (i386_gdbarch_init): Do not set save_dummy_frame_tos.
- (i386_push_dummy_call): Add 8 to the returned SP.
- * frame.c (legacy_frame_p): Do not require SAVE_DUMMY_FRAME_TOS.
- * d10v-tdep.c (d10v_unwind_dummy_id): Use d10v_unwind_sp.
- (d10v_gdbarch_init): Do not set save_dummy_frame_tos.
- * x86-64-tdep.c (x86_64_save_dummy_frame_tos): Delete function.
- (x86_64_push_dummy_call): Return "sp + 16".
- (x86_64_init_abi): Do not set save_dummy_frame_tos.
- * alpha-tdep.c (alpha_gdbarch_init): Do not set
- save_dummy_frame_tos.
-
-2003-06-13 Jim Blandy <jimb@redhat.com>
-
- * frv-tdep.c (frv_use_struct_convention): Delete static
- declaration for function deleted in my change of 2003-06-12.
-
-2003-06-13 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_address_to_pointer): Shift code addrs right 1 bit.
- (avr_pointer_to_address): Shift code addrs left 1 bit.
- (avr_convert_from_func_ptr_addr): Delete function since operation is
- better handled by avr_address_to_pointer and avr_pointer_to_address.
- (avr_gdbarch_init): Don't set convert_from_func_ptr_add method.
-
-2003-06-13 Mark Kettenis <kettenis@gnu.org>
-
- From Kelley Cook <kelleycook@wideopenwest.com>:
- * configure.host: Accept i[34567]86 variants.
- * configure.tgt: Likewise.
- * nlm/configure.in: Likewise.
- * nlm/configure: Regenerated.
-
-2003-06-13 Richard Earnshaw <rearnsha@arm.com>
-
- * arm-tdep.c (solib-svr4.h): Dont' include it.
- (arm_linux_svr4_fetch_link_map_offsets): Move to ...
- * arm-linux-tdep.c: ... here. Make static.
- (arm_linux_init_abi): Register it.
- (solib-svr4.h): Include it.
- * Makefile.in: Update dependencies.
- * config/arm/tm-linux.h (SVR4_FETCH_LINK_MAP_OFFSETS): Delete.
- (arm_linux_svr4_fetch_link_map_offsets): Delete declaration.
-
-2003-06-13 Corinna Vinschen <vinschen@redhat.com>
-
- * h8300-tdep.c: Add definitions E_RET0_REGNUM and E_RET1_REGNUM to
- indicate registers used for return values.
- (struct frame_extra_info): Drop args_pointer and locals_pointer.
- (h8300_examine_prologue): Remove initializing dropped frame_extra_info
- members.
- (h8300_init_extra_frame_info): Ditto.
- (h8300_frame_locals_address): Removed.
- (h8300_frame_args_address): Removed.
- (h8300_extract_return_value): Use new regcache structure. Only care
- for 16 bit CPUs.
- (h8300h_extract_return_value): Same function for 32 bit CPUs.
- (h8300_store_return_value): Use new regcache structure. Only care
- for 16 bit CPUs.
- (h8300h_store_return_value): Same function for 32 bit CPUs.
- (h8300_store_struct_return): Removed.
- (h8300_extract_struct_value_address): Use new regcache structure.
- (h8300h_extract_struct_value_address): Removed.
- (h8300_push_dummy_code): New function.
- (h8300_gdbarch_init): Slightly rearranged to stress deprecated calls.
- Remove call_dummy_words. Call set_gdbarch_extract_return_value and
- set_gdbarch_store_return_value architecture dependent.
- Call set_gdbarch_push_dummy_code and
- set_gdbarch_extract_struct_value_address.
- Remove calls to set_gdbarch_frame_args_address,
- set_gdbarch_frame_locals_address,
- set_gdbarch_deprecated_store_struct_return,
- set_gdbarch_deprecated_extract_return_value,
- set_gdbarch_deprecated_extract_struct_value_address,
- set_gdbarch_deprecated_call_dummy_words and
- set_gdbarch_deprecated_sizeof_call_dummy_words.
-
-2003-06-13 Corinna Vinschen <vinschen@redhat.com>
-
- * h8300-tdep.c (h8300_register_byte): Remove.
- (h8300h_register_byte): Remove.
- (h8300_register_virtual_type): Remove. Substitute by...
- (h8300_register_type): New function.
- (h8300_extract_struct_value_address): Drop usage of h8300_register_byte.
- (h8300h_extract_struct_value_address): Ditto.
- (h8300_gdbarch_init): Drop calls to
- set_gdbarch_deprecated_register_byte and
- set_gdbarch_deprecated_register_virtual_type.
- Add call to set_gdbarch_register_type.
-
-2003-06-13 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Update comments on registers.
- (deprecated_register_byte): Rename register_byte.
- (deprecated_register_raw_size): Rename register_raw_size.
- (deprecated_register_virtual_size): Rename register_virtual_size.
- (deprecated_register_virtual_type): Rename register_virtual_type.
- * gdbarch.h, gdbarch.c: Re-generate.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ns32k-tdep.c: Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
-
-2003-06-13 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_gdbarch_init): Replace remaining instances of
- mips_o32_use_struct_convention with always_use_struct_convention.
-
-2003-06-12 David Carlton <carlton@kealia.com>
-
- * cp-namespace.c (cp_set_block_scope): Comment out
- processing_has_namespace_info branch.
-
-2003-06-12 Jim Blandy <jimb@redhat.com>
-
- Recognize and skip 64-bit PowerPC Linux linkage functions.
- * ppc-linux-tdep.c (insn_d, insn_ds, insn_xfx, read_insn, struct
- insn_pattern, insns_match_pattern, d_field, ds_field): New
- functions, macros, and types for working with PPC instructions.
- (ppc64_standard_linkage, PPC64_STANDARD_LINKAGE_LEN,
- ppc64_in_solib_call_trampoline, ppc64_standard_linkage_target,
- ppc64_skip_trampoline_code): New functions, variables, and macros
- for recognizing and skipping linkage functions.
- (ppc_linux_init_abi): Use ppc64_in_solib_call_trampoline and
- ppc64_skip_trampoline_code for the 64-bit PowerPC Linux ABI.
-
- * ppc-linux-nat.c (ppc_register_u_addr): Correctly compute u-area
- register offsets for both the 32- and 64-bit interfaces.
-
- Actually finish the job started by my change of 2003-05-29.
- * config/powerpc/tm-linux.h (SKIP_TRAMPOLINE_CODE): Remove the
- other #definition of this.
- (ppc_linux_skip_trampoline_code): Remove declaration.
- * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Make this
- static.
- (ppc_linux_init_abi): Register it as the skip_trampoline_code
- method for GDBARCH.
-
- * config/powerpc/nm-ppc64-linux.h (PTRACE_XFER_TYPE): This is
- 'long' on ppc64-*-linux*.
-
- * ppc-linux-nat.c (ppc_register_u_addr, fill_gregset): If PT_MQ
- isn't #defined, assume the register doesn't exist: act as if
- tdep->ppc_mq_regnum were -1.
-
- * configure.host, configure.tgt: Add entries for
- powerpc64-*-linux, selecting powerpc/ppc64-linux.mh and
- powerpc/linux.mt.
- * config/powerpc/ppc64-linux.mh, config/powerpc/nm-ppc64-linux.mh:
- New files.
-
- * arch-utils.c (always_use_struct_convention): New function.
- * arch-utils.h (always_use_struct_convention): New prototype.
- * alpha-tdep.c (alpha_use_struct_convention): Delete.
- (alpha_gdbarch_init): Register always_use_struct_convention,
- instead of alpha_use_struct_convention.
- * cris-tdep.c (cris_use_struct_convention): Delete.
- (cris_gdbarch_init): Register always_use_struct_convention,
- instead of cris_use_struct_convention.
- * frv-tdep.c (frv_use_struct_convention): Delete.
- (frv_gdbarch_init): Register always_use_struct_convention,
- instead of frv_use_struct_convention.
- * h8300-tdep.c (h8300_use_struct_convention): Delete.
- (h8300_gdbarch_init): Register always_use_struct_convention,
- instead of h8300_use_struct_convention.
- * mips-tdep.c (mips_o32_use_struct_convention): Delete.
- (mips_o32_gdbarch_init): Register always_use_struct_convention,
- instead of mips_o32_use_struct_convention.
-
-2003-06-12 Andrew Cagney <cagney@redhat.com>
-
- * wince.c: Include "mips-tdep.h".
- * mips-tdep.h (mips_next_pc): Declare.
- * mcore-tdep.c: Make more local functions static.
- * Makefile.in (wince.o): Update dependencies.
-
-2003-06-12 David Carlton <carlton@kealia.com>
-
- * symtab.c (lookup_symbol_aux_minsyms): Replace
- DEPRECATED_SYMBOL_NAME by SYMBOL_LINKAGE_NAME.
- (find_pc_sect_line, search_symbols, rbreak_command): Ditto.
- (COMPLETION_LIST_ADD_SYMBOL): Rewrite in terms of
- SYMBOL_NATURAL_NAME.
-
-2003-06-12 Andreas Schwab <schwab@suse.de>
-
- * Makefile.in (tuiDisassem.o): Update dependencies.
-
-2003-06-12 David Carlton <carlton@bactrian.org>
-
- * symtab.h: Delete declaration of make_symbol_overload_list.
- Add declaration of lookup_partial_symbol.
- * symtab.c (remove_params): Move to cp-support.c.
- (overload_list_add_symbol, make_symbol_overload_list)
- (sym_return_val_size, sym_return_val_index): Ditto.
- (lookup_partial_symbol): Make extern.
- * cp-support.h: Add declaration of make_symbol_overload_list.
- * cp-support.c: Include dictionary.h, objfiles.h, frame.h,
- symtab.h, and block.h.
- (remove_params): Move here from symtab.c.
- (overload_list_add_symbol, make_symbol_overload_list)
- (sym_return_val_size, sym_return_val_index): Ditto.
- * valops.c: Include cp-support.h.
- * Makefile.in (cp-support.o): Depend on dictionary_h, objfiles_h,
- frame_h, and block_h.
- (valops.o): Depend on cp_support_h.
-
-2003-06-12 Corinna Vinschen <vinschen@redhat.com>
-
- * h8300-tdep.c: Add H8SX registers. Drop E_NUM_REGS entirely,
- substitute by NUM_REGS throughout.
- (h8300_register_name): Only care for H8/300 and H8/300H registers.
- (h8300s_register_name): New function for H8S registers.
- (h8300sx_register_name): Ditto for H8SX registers.
- (h8300_print_register): Revise register printing, avoid depending
- on 32 bit long.
- (h8300_register_byte): Only care for H8/300 registers.
- (h8300h_register_byte): New function for any other architecture.
- (h8300_register_raw_size): Remove.
- (h8300_register_virtual_type): Revise to return actually useful
- type.
- (h8300_extract_struct_value_address): Only care for H8/300 registers.
- (h8300h_extract_struct_value_address): New function for any other
- architecture.
- (h8300_gdbarch_init): Add h8300sxn. Call set_gdbarch_num_regs,
- set_gdbarch_register_name, set_gdbarch_register_byte,
- set_gdbarch_ptr_bit and set_gdbarch_addr_bit architecture dependent.
- Remove calls to set_gdbarch_deprecated_register_size,
- set_gdbarch_deprecated_register_bytes, set_gdbarch_register_raw_size,
- set_gdbarch_deprecated_max_register_raw_size,
- set_gdbarch_register_virtual_size and
- set_gdbarch_deprecated_max_register_virtual_size entirely.
- Call set_gdbarch_long_long_bit, set_gdbarch_double_bit and
- set_gdbarch_long_double_bit.
-
-2003-06-11 Jeff Johnston <jjohnstn@redhat.com>
-
- * doublest.c (convert_doublest_to_floatformat): When dealing
- with the implied integer bit, only alter mant_bits if we are
- processing a full 32 bits of mantissa.
-
-2003-06-11 David Carlton <carlton@bactrian.org>
-
- * dictionary.h: New.
- * dictionary.c: New.
- * block.h: Add opaque declaration for struct dictionary.
- (struct block): Add 'dict' member; delete 'hashtable', 'nsyms',
- 'sym' members.
- (BLOCK_DICT): New macro.
- Delete macros BLOCK_HASHTABLE, BLOCK_NSYMS, BLOCK_SYM,
- BLOCK_BUCKETS, BLOCK_BUCKET, BLOCK_HASHTABLE_SIZE,
- BLOCK_SHOULD_SORT.
- (ALL_BLOCK_SYMBOLS): Update definition.
- * Makefile.in (SFILES): Add dictionary.c.
- (dictionary_h): New.
- (COMMON_OBS): Add dictionary.o.
- (dictionary.o): New.
- (ada-lang.o): Depend on dictionary_h.
- (buildsym.o, coffread.o, jv-lang.o, mdebugread.o, objfiles.o)
- (stack.o, symmisc.o, symtab.o, tracepoint.o, valops.o)
- (mi-cmd-stack.o): Ditto.
- (gdbtk-cmds.o): Update dependencies.
- (gdbtk-stack.o): Ditto.
- * ada-lang.c: Include dictionary.h.
- (symtab_for_sym): Update uses of ALL_BLOCK_SYMBOLS.
- (fill_in_ada_prototype, debug_print_block): Ditto.
- (ada_add_block_symbols): Update uses of ALL_BLOCK_SYMBOLS; replace
- explicit iteration by use of ALL_BLOCK_SYMBOLS. Delete variable
- 'is_sorted'.
- * mdebugread.c: Include dictionary.h.
- (struct parse_stack): Delete 'maxsyms' member.
- (parse_symbol): Update calls to new_block. Delete calls to
- shrink_block. Use dictionary methods.
- (psymtab_to_symtab_1): Delete calls to sort_symtab_syms.
- Update calls to new_symtab. Don't maintain maxsyms data.
- (mylookup_symbol): Update use of ALL_BLOCK_SYMBOLS.
- (add_symbol): Just call dict_add_symbol.
- (new_symtab): Delete 'maxsyms' argument.
- (new_symtab): Update calls to new_block.
- (new_block): Delete 'maxsyms' argument; add 'function' argument.
- (shrink_block): Delete function.
- (fixup_sigtramp): Update call to new_block. Add symbol via
- dict_add_symbol.
- * jv-lang.c: Include dictionary.h.
- (get_java_class_symtab): Set the BLOCK_DICT of the blocks
- appropriately. Set class_symtab->free_func. Make sure the
- blockvector is big enough to hold two blocks.
- (add_class_symtab_symbol): Use dictionary methods.
- (free_class_block): New function.
- (type_from_class): Replace explicit iteration by
- ALL_BLOCK_SYMBOLS.
- * symtab.h (struct symtab): Replace 'free_ptr' method by
- 'free_func'.
- * dwarf2read.c (psymtab_to_symtab_1): Delete call to
- sort_symtab_syms.
- * dwarfread.c (psymtab_to_symtab_1): Delete call to
- sort_symtab_syms.
- * coffread.c (coff_symfile_read): Delete call to sort_symtab_syms.
- Include dictionary.h.
- (patch_opaque_types): Update use of ALL_BLOCK_SYMBOLS.
- * dbxread.c (dbx_psymtab_to_symtab_1): Delete call to
- sort_symtab_syms.
- * objfiles.c: Include dictionary.h.
- (objfile_relocate): Update use of ALL_BLOCK_SYMBOLS.
- * buildsym.c: Include dictionary.h.
- (finish_block): Use dictionary methods.
- (end_symtab): Set free_func to NULL, not free_ptr.
- * tracepoint.c: Include dictionary.h.
- (add_local_symbols): Update use of ALL_BLOCK_SYMBOLS.
- (scope_info): Ditto.
- * stack.c: Include dictionary.h.
- (print_block_frame_locals): Update use of ALL_BLOCK_SYMBOLS.
- (print_block_frame_labels, print_frame_arg_vars)
- (print_frame_args): Ditto.
- * symmisc.c (free_symtab_block): Use dictionary methods.
- (dump_symtab): Ditto.
- (free_symtab): Replace use of 'free_ptr' by 'free_func'.
- Include dictionary.h.
- * symfile.h: Delete declarations of sort_block_syms,
- sort_symtab_syms.
- * symfile.c (sort_block_syms): Delete.
- (sort_symtab_syms): Delete.
- * symtab.c: Include dictionary.h.
- (lookup_block_symbol): Use dictionary iterators.
- (find_pc_sect_symtab): Update use of ALL_BLOCK_SYMBOLS.
- (search_symbols, make_symbol_completion_list): Ditto.
- (make_symbol_overload_list): Ditto.
- * valops.c (value_of_local): Use dict_empty.
- Include dictionary.h.
-
-2003-06-11 J. Brobecker <brobecker@gnat.com>
-
- * win32-nat.c (solib_symbols_add): Fix a small compilation error.
-
-2003-06-11 David Carlton <carlton@bactrian.org>
-
- * block.h (BLOCK_SHOULD_SORT): Delete.
- * symtab.c (lookup_block_symbol): Don't worry about sorted linear
- blocks.
- * ada-lang.c (ada_add_block_symbols): Ditto.
- * symfile.c (sort_block_syms): Delete.
- (sort_symtab_syms): Ditto.
- * symfile.h: Delete sort_symtabs_syms and sort_block_syms
- declarations.
- * coffread.c (coff_symfile_read): Don't call sort_symtab_syms.
- * dbxread.c (dbx_psymtab_to_symtab_1): Ditto.
- * dwarf2read.c (psymtab_to_symtab_1): Ditto.
- * dwarfread.c (psymtab_to_symtab_1): Ditto.
- * hpread.c (hpread_psymtab_to_symtab_1): Ditto.
- * mdebugread.c (psymtab_to_symtab_1): Ditto.
- * xcoffread.c (xcoff_psymtab_to_symtab_1): Ditto.
-
-2003-06-11 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c (ia64_gdbarch_init): Set number of long double
- bits to 128.
-
-2003-06-11 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_REGISTER_CONVERTIBLE): Deprecate
- REGISTER_CONVERTIBLE.
- (DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL): Same.
- (DEPRECATED_REGISTER_CONVERT_TO_RAW): Same, make "from" constant.
- * gdbarch.h, gdbarch.c: Re-generate.
- * arch-utils.h (deprecated_register_convertible_not): Rename
- generic_register_convertible_not.
- * arch-utils.c (deprecated_register_convertible_not): Rename
- generic_register_convertible.
- (legacy_convert_register_p, legacy_register_to_value): Update.
- * sh-tdep.c (sh64_push_arguments): Update.
- * m68klinux-tdep.c (m68k_linux_extract_return_value): Update.
- * config/m68k/tm-delta68.h (DEPRECATED_EXTRACT_RETURN_VALUE): Update.
- * m68klinux-tdep.c (m68k_linux_store_return_value): Update.
- * config/m68k/tm-delta68.h (DEPRECATED_STORE_RETURN_VALUE): Update.
- * arch-utils.c (legacy_value_to_register): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- (rs6000_register_convert_to_raw): Make parameter "from" const.
- * mips-tdep.c (mips_gdbarch_init): Update.
- (mips_register_convert_to_raw): Make parameter"virt_buf" const.
- * infcmd.c (default_print_registers_info): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- (ia64_register_convert_to_raw): Make parameter "from" const.
- * i386-tdep.c (i386_gdbarch_init): Update.
- (i386_register_convert_to_raw): Update.
-
-2003-06-11 Andrew Cagney <cagney@redhat.com>
-
- * remote-fileio.c: Include "remote-fileio.h".
- * Makefile.in (remote-fileio.o): Update dependencies.
- (remote_fileio_h): Fix typo.
-
-2003-06-11 Andrew Cagney <cagney@redhat.com>
-
- * xstormy16-tdep.c (xstormy16_push_return_address): Make static.
- (xstormy16_save_dummy_frame_tos): Make static.
- (_initialize_xstormy16_tdep): Add declaration.
- * vax-tdep.c (_initialize_vax_tdep): Add declaration.
- * v850-tdep.c: Make local functions static.
- (_initialize_v850_tdep): Add declaration.
- * sparc-tdep.c: Make local functions static.
- (_initialize_sparc_tdep): Add declaration.
- * sh-tdep.c: Make local functions static.
- (_initialize_sh_tdep): Add declaration.
- * sh3-rom.c (_initialize_sh3_rom): Add declaration.
- * s390-tdep.c: Make local functions static.
- (_initialize_s390_tdep): Add declaration.
- * dbxread.c (find_stab_function_addr): Make static.
- * ppc-bdm.c (_initialize_bdm_ppc): Add declaration.
- * ocd.c (_initialize_remote_ocd): Add declaration.
- * dink32-rom.c (_initialize_dink32_rom): Add declaration.
- * ppcbug-rom.c (_initialize_ppcbug_rom): Add declaration.
- * ns32k-tdep.c (_initialize_ns32k_tdep): Add declaration.
- * ns32knbsd-tdep.c (_initialize_ns32knbsd_tdep): Add declaration.
- * mips-tdep.c (_initialize_mips_tdep): Add declaration.
- * remote-array.c (_initialize_array): Add declaration.
- (_initialize_remote_monitors): Add declaration.
- * remote-mips.c: Make local functions static.
- (_initialize_remote_mips): Add declaration.
- * mcore-tdep.c: Make all local functions static.
- (_initialize_mcore_tdep): Add declaration.
- * dbug-rom.c (_initialize_dbug_rom): Add declaration.
- * abug-rom.c (_initialize_abug_rom): Add declaration.
- * rom68k-rom.c (_initialize_rom68k): Add declaration.
- * cpu32bug-rom.c (_initialize_cpu32bug_rom): Add declaration.
- * m68k-tdep.c (_initialize_m68k_tdep): Add declaration.
- * remote-est.c (_initialize_est): Add declaration.
- * m68hc11-tdep.c (_initialize_m68hc11_tdep): Add declaration.
- (m68hc11_call_dummy_address): Make static.
- * ia64-tdep.c: Make local functions static.
- (_initialize_ia64_tdep): Add declaration.
- * solib-legacy.c (_initialize_svr4_lm): Add declaration.
- * monitor.c (monitor_wait_filter): Make static.
- (_initialize_remote_monitors): Add declaration.
- * remote-hms.c (_initialize_remote_hms): Add declaration.
- * remote-e7000.c (fetch_regs_from_dump): Make static.
- (expect_n): Make static.
- (_initialize_remote_e7000): Add declaration.
- * ser-e7kpc.c: Always include "defs.h".
- (_initialize_ser_e7000pc): Add declaration.
- * h8300-tdep.c (_initialize_h8300_tdep): Add declaration.
- * cris-tdep.c: Make all but one function static.
- (_initialize_cris_tdep): Add declaration.
- * solib-svr4.c (_initialize_svr4_solib): Add declaration.
- * solib.c (update_solib_list): Make static.
- (_initialize_solib): Add declaration.
- * avr-tdep.c (avr_breakpoint_from_pc): Make static.
- (_initialize_avr_tdep): Add declaration.
- * remote-rdi.c (voiddummy): Make static.
- (_initialize_remote_rdi): Add declaration.
- * arm-tdep.c (_initialize_arm_tdep): Add declaration.
- * remote-rdp.c (send_rdp): Make static.
- (_initialize_remote_rdp): Add declaration.
- * alpha-tdep.c (_initialize_alpha_tdep): Add declaration.
-
-2003-06-11 Corinna Vinschen <vinschen@redhat.com>
-
- * remote-fileio.c: Make ari happy.
-
-2003-06-10 J. Brobecker <brobecker@gnat.com>
-
- * rs6000-nat.c (child_xfer_memory): Compute the right address when
- fetching the trailing bytes of the buffer we are about to write.
-
-2003-06-10 Andrew Cagney <cagney@redhat.com>
-
- * remote-fileio.h (REMOTE_FILEIO_H): Replace FILEIO_H.
- * Makefile.in (remote-fileio.o): Update dependencies.
- * remote-fileio.c: Include "gdb_wait.h" and "gdb_stat.h". Do not
- include <setjmp.h>, or <sys/types.h> conditional on USG.
- (remote_fio_jmp_buf): Delete global variable.
-
-2003-06-10 Corinna Vinschen <vinschen@redhat.com>
- Martin M. Hunt <hunt@redhat.com>
-
- * Makefile.in (REMOTE_OBS): Add remote-fileio.o
- (SFILES): Add remote-fileio.c.
- Add dependencies for building remote-fileio.o. Add remote-fileio.h to
- dependencies for building remote.o.
- * remote-fileio.c: New file implementing the remote File-I/O protocol.
- * remote-fileio.h: New header file defining remote File-I/O interface.
- * remote.c (remote_write_bytes, remote_read_bytes): Remove
- static storage class.
- (remote_wait, remote_async_wait): Call remote_fileio_request() on
- 'F' packet.
- (_initialize_remote): Call initialize_remote_fileio().
- * remote.h: Declare remote_write_bytes() and remote_read_bytes().
- * defs.h: Declare gdb_stdin, gdb_stdtargerr and gdb_stdtargin.
- * main.c: New ui_file gdb_stdin, gdb_stdtargerr and gdb_stdtargin.
- (captured_main): Initialize new ui_files.
- * ui-file.c: Add read and fgets input functions.
- (ui_file_new): set ui_file_fputs and ui_file_read to null functions.
- (null_file_read): New function.
- (ui_file_read): New function.
- (set_ui_file_read): New function.
- (stdio_file_read): New function.
- * ui-file.h: New type ui_file_read_ftype.
- (set_ui_file_read): Declare.
- (ui_file_read): Declare.
-
-2003-06-09 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (deprecated_unwind_get_saved_register): Rename
- generic_unwind_get_saved_register, update comments.
- * mips-tdep.c (mips_get_saved_register): Update.
- * frame.c (deprecated_unwind_get_saved_register): Update.
-
-2003-06-09 Andrew Cagney <cagney@redhat.com>
-
- * vax-tdep.c (vax_frame_locals_address): Delete function.
- (vax_gdbarch_init): Do not set frame_locals_address.
- * m68hc11-tdep.c (m68hc11_frame_locals_address): Delete function.
- (m68hc11_gdbarch_init): Do not set frame_locals_address.
- * s390-tdep.c (s390_frame_args_address): Delete function.
- (s390_gdbarch_init): Do not set frame_args_address or
- frame_locals_address.
- * ns32k-tdep.c (ns32k_frame_locals_address): Delete.
- (ns32k_gdbarch_init): Do not set frame_locals_address.
- * hppa-tdep.c (hppa_frame_args_address): Delete function.
- (hppa_frame_locals_address): Delete function.
- (hppa_gdbarch_init): Do not set frame_args_address, or
- frame_locals_address.
- * arm-tdep.c (arm_frame_args_address): Delete.
- (arm_frame_locals_address): Delete.
- (arm_gdbarch_init): Do not set frame_args_address, or
- frame_locals_address.
-
-2003-06-09 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (FRAME_NUM_ARGS): Change to function with predicate.
- * gdbarch.h, gdbarch.c: Re-generate.
- * arch-utils.h (frame_num_args_unknown): Delete both declarations.
- * arch-utils.c (frame_num_args_unknown): Delete function.
- * stack.c (print_args_stub): Use FRAME_NUM_ARGS_P.
- (frame_info): Use FRAME_NUM_ARGS_P.
- * arm-tdep.c (arm_frame_num_args): Delete function.
- (arm_gdbarch_init): Do not set frame_num_args.
- * config/pa/tm-hppa64.h (FRAME_NUM_ARGS): Delete.
- * hppa-tdep.c (hppa_frame_num_args): Delete function.
- (hppa_gdbarch_init): Do not set frame_num_args.
- * config/sparc/tm-sparc.h (FRAME_NUM_ARGS): Delete.
+ * gdbarch.sh (DECR_PC_AFTER_BREAK): Make zero the default.
+ * gdbarch.c: Re-generate.
* xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set
- frame_num_args to default frame_num_args_unknown.
+ DECR_PC_AFTER_BREAK to zero.
+ * vax-tdep.c (vax_gdbarch_init): Ditto.
* v850-tdep.c (v850_gdbarch_init): Ditto.
- * sparc-tdep.c (sparc_gdbarch_init): Ditto.
+ * sparc-tdep.c (sparc32_gdbarch_init): Ditto.
+ * sh64-tdep.c (sh64_gdbarch_init): Ditto.
* sh-tdep.c (sh_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
+ * ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
* mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
* mips-tdep.c (mips_gdbarch_init): Ditto.
* mcore-tdep.c (mcore_gdbarch_init): Ditto.
- * m68k-tdep.c (m68k_gdbarch_init): Ditto.
* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
+ * m32r-tdep.c (m32r_gdbarch_init): Ditto.
* ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * i386-tdep.c (i386_gdbarch_init): Ditto.
+ * i386-interix-tdep.c (i386_interix_init_abi): Ditto.
+ * hppa-tdep.c (hppa_gdbarch_init): Ditto.
* h8300-tdep.c (h8300_gdbarch_init): Ditto.
* frv-tdep.c (frv_gdbarch_init): Ditto.
- * d10v-tdep.c (d10v_gdbarch_init): Ditto.
* cris-tdep.c (cris_gdbarch_init): Ditto.
* avr-tdep.c (avr_gdbarch_init): Ditto.
- * alpha-tdep.c (alpha_gdbarch_init): Ditto.
-
-2003-06-09 Andrew Cagney <cagney@redhat.com>
-
- * printcmd.c (print_frame_nameless_args): Moved to "stack.c".
- (print_frame_args): Moved to "stack.c".
- * stack.c: Include "gdb_assert.h".
- (print_frame_nameless_args): Moved from "printcmd.c", made static.
- (print_frame_args): Moved from "printcmd.c".
- * frame.h (print_frame_args): Delete declaration.
- * Makefile.in (stack.o): Update dependencies.
-
-2003-06-08 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_prev_frame): Remove reference to
- frame_args_address_correct in comments.
- * frame-base.c (default_frame_args_address): Delete code
- conditional on FRAME_ARGS_ADDRESS_CORRECT.
- * vax-tdep.c (vax_frame_args_address_correct): Delete.
- (vax_frame_args_address): Merge in vax_frame_args_address_correct.
- * config/vax/tm-vax.h (FRAME_ARGS_ADDRESS_CORRECT): Delete
- (vax_frame_args_address_correct): Delete declaration.
-
-2003-06-08 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (UNWIND_SP): Add.
- * gdbarch.h, gdbarch.c: Re-generate.
- * frame.c (frame_sp_unwind): New function.
- (get_frame_sp): New function.
- * frame.h (get_frame_sp, frame_sp_unwind): Declare.
- * regcache.c (read_sp): Rewrite, try each of TARGET_READ_SP,
- gdbarch_unwind_sp and SP_REGNUM when looking for the SP register
- value.
- * d10v-tdep.c (d10v_unwind_sp): Replace d10v_read_sp.
- (d10v_gdbarch_init): Set unwind_sp instead of read_sp.
-
-2003-06-08 Andrew Cagney <cagney@redhat.com>
-
- Deprecate BIG_REMOTE_BREAKPOINT, LITTLE_REMOTE_BREAKPOINT and
- REMOTE_BREAKPOINT.
- * remote.c: Update.
- * config/sh/tm-sh.h (DEPRECATED_BIG_REMOTE_BREAKPOINT): Update.
- (DEPRECATED_LITTLE_REMOTE_BREAKPOINT): Update.
- * config/m68k/tm-sun3.h: Update.
- * config/m68k/tm-m68klynx.h: Update.
- * config/h8300/tm-h8300.h (DEPRECATED_REMOTE_BREAKPOINT): Update.
-
- * trad-frame.h (struct trad_frame_saved_reg): Rename "struct
- trad_frame". Update comments.
- * d10v-tdep.c (struct d10v_unwind_cache): Update.
- * trad-frame.c (trad_frame_alloc_saved_regs): Update.
- (trad_frame_register_value, trad_frame_prev_register): Update.
-
-2003-06-08 Andrew Cagney <cagney@redhat.com>
-
- * acinclude.m4 (gcc_AC_CHECK_DECL, (gcc_AC_CHECK_DECL): Stolen
- from GCC's acinclude.m4.
- * configure.in: Check for getopt's delcaration.
- * aclocal.m4, config.in, configure: Re-generate.
- * main.c (error_init): Delete declaration.
- * defs.h (error_init): Declare.
- * rs6000-tdep.c (rs6000_fetch_pointer_argument): Make static.
- (rs6000_convert_from_func_ptr_addr): Make static.
- (_initialize_rs6000_tdep): Add declaration.
- * cli/cli-cmds.c (dont_repeat): Delete declaration.
- (show_commands, set_verbose, show_history): Delete declaration.
- * top.h (set_verbose): Add declaration.
- (show_history, set_history, show_commands): Add declaration.
- (do_restore_instream_cleanup): Add declaration.
- * objc-lang.c (specialcmp): Make static.
- (print_object_command): Make static.
- (find_objc_msgsend): Make static.
- (find_objc_msgcall_submethod_helper): Make static.
- (find_objc_msgcall_submethod): Make static.
- (_initialize_objc_language): Add declaration.
- (find_implementation_from_class): Make static.
- (find_implementation): Make static.
- * objc-exp.y (yylex): Delete lookup_struct_typedef declaration.
- * objc-lang.h (lookup_struct_typedef): Add declaration.
- * cli/cli-interp.c (_initialize_cli_interp): Add declaration.
- * cli/cli-script.c (clear_hook_in_cleanup): Make static.
- (do_restore_user_call_depth): Make static.
- (do_restore_instream_cleanup): Delete declaration.
- (dont_repeat): Delete declaration.
- * cli/cli-decode.c (add_abbrev_cmd): Delete function.
- * cli/cli-dump.c (_initialize_cli_dump): Add declaration.
- * reggroups.c (_initialize_reggroup): Add declaration.
- * cp-support.c (_initialize_cp_support): Add declaration.
- * cp-abi.c (_initialize_cp_abi): Add declaration.
- * hpacc-abi.c (_initialize_hpacc_abi): Add declaration.
- * gnu-v3-abi.c (gnuv3_baseclass_offset): Make static.
- (_initialize_gnu_v3_abi): Add declaration.
- * gnu-v2-abi.c (gnuv2_value_rtti_type): Make static.
- (_initialize_gnu_v2_abi): Add declaration.
- * frame-base.c (_initialize_frame_base): Add declaration.
- * doublest.c (floatformat_from_length): Make static.
- * frame-unwind.c (_initialize_frame_unwind): Add declaration.
- * frame.c (create_sentinel_frame): Make static.
- (_initialize_frame): Add declaration.
- * top.c (do_catch_errors): Make static.
- (gdb_rl_operate_and_get_next_completion): Make static.
- * typeprint.c: Include "typeprint.h".
- * sentinel-frame.c (sentinel_frame_prev_register): Make static.
- (sentinel_frame_this_id): Make static.
- * p-valprint.c (_initialize_pascal_valprint): Add declaration.
- * ui-out.c (make_cleanup_ui_out_begin_end): Delete function.
- * dwarf2-frame.c (dwarf2_frame_cache): Make static.
- * p-exp.y (push_current_type, pop_current_type): ISO C declaration.
- * dwarf2expr.h (dwarf_expr_context): ISO C declaration.
- * maint.c (maintenance_print_architecture): Make static.
- * signals/signals.c (_initialize_signals): Add declaration.
- * std-regs.c (_initialize_frame_reg): Add declaration.
- * jv-exp.y (push_variable): ISO C definition.
- (push_qualified_expression_name): Ditto.
- * memattr.c (_initialize_mem): Add declaration.
- * remote.c (remote_check_watch_resources): Make static.
- (remote_stopped_by_watchpoint): Make static.
- (remote_stopped_data_address): Make static.
- * d10v-tdep.c (nr_dmap_regs): Make static.
- (a0_regnum): Make static.
- (d10v_frame_unwind_cache): Make static.
- (d10v_frame_p): Make static.
- * osabi.c (show_osabi): Make static.
- (_initialize_gdb_osabi): Add extern declaration.
- * gdbtypes.c (make_qualified_type): Make static.
- (safe_parse_type): Make static.
- * macrocmd.c (_initialize_macrocmd): Add extern declaration.
- * macrotab.c (macro_bcache_free): Make static.
- * interps.c (interp_set_quiet): Make static.
- (interpreter_exec_cmd): Make static.
- * stack.h (select_frame_command): New file.
- * stack.c: Include "stack.h".
- (select_frame_command_wrapper): Delete function.
- (select_frame_command): Make global.
- * infcall.c: Include "infcall.h".
- * linespec.c: Include "linespec.h".
- * symfile.c (sections_overlap): Make static.
- * cp-support.h (cp_initialize_namespace): ISO C declaration.
- * charset.c (_initialize_charset): Add missing prototype.
- * regcache.c (init_legacy_regcache_descr): Make static.
- (do_regcache_xfree): Make static.
- (regcache_xfer_part): Make static.
- (_initialize_regcache): Add missing prototype.
- * breakpoint.c (parse_breakpoint_sals): Make static.
- (breakpoint_sals_to_pc): Make static.
- * interps.h (clear_interpreter_hooks): ISO C declaration.
- * Makefile.in (stack_h): Define.
- (stack.o, typeprint.o, mi-main.o): Update dependencies.
- (mi-cmd-stack.o, infcall.o, linespec.o): Update dependencies.
-
-2003-06-08 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (d10v-tdep.o): Update dependencies.
- (SFILES): Add trad-frame.c.
- (trad_frame_h): Define.
- (COMMON_OBS): Add trad-frame.o.
- (trad-frame.o): Specify dependencies.
- * d10v-tdep.c: Include "trad-frame.h".
- (saved_regs_unwinder): Delete function.
- (d10v_frame_prev_register): Use trad_frame_prev_register.
- (struct d10v_unwind_cache): Change type of "saved_regs" to "struct
- trad_frame", delete "regs" and "prev_sp".
- (prologue_find_regs): Use trad-frame.
- * trad-frame.h, trad-frame.c: New files.
-
-2003-06-08 Mark Kettenis <kettenis@gnu.org>
-
- * dwarf2cfi.c, dwarf2cfi.h: Remove.
-
-2003-06-07 Adam Fedor <fedor@gnu.org>
-
- * gdb/objc-lang.c (FETCH_ARGUMENT): Remove macro.
- (OBJC_FETCH_POINTER_ARGUMENT): Shorthand macro for
- using FETCH_POINTER_ARGUMENT with Objective-C method arguments.
- (find_implementation, resolve_msgsend, resolve_msgsend_stret,
- resolve_msgsend_super, resolve_msgsend_super_stret):
- Use it.
-
-2003-06-07 Andrew Cagney <cagney@redhat.com>
-
- * symfile.h: Re-indent, clean up comments.
-
-2003-06-07 Andrew Cagney <cagney@redhat.com>
-
- * inferior.h (deprecated_write_sp): Replace
- generic_target_write_sp.
- * regcache.c (deprecated_write_sp): Replace
- generic_target_write_sp.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * config/pa/tm-hppa.h (DEPRECATED_DUMMY_WRITE_SP): Update.
-
-2003-06-07 Andrew Cagney <cagney@redhat.com>
-
- * dwarf2-frame.c (dwarf2_frame_cache): Add comments on PC_REGNUM.
- Assert that PC_REGNUM is valid.
- (dwarf2_frame_prev_register): Add comments on SP_REGNUM.
-
-2003-06-07 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (TARGET_READ_SP): Add predicate, delete default.
- * gdbarch.h, gdbarch.c: Regenerate.
- * mn10300-tdep.c: Include "gdb_assert.h".
- (mn10300_read_fp): New function.
- (mn10300_gdbarch_init): Set deprecated_target_read_fp to
- mn10300_read_fp. Do not set read_sp to generic_target_read_sp.
- * ia64-tdep.c: Include "gdb_assert.h".
- (ia64_read_fp): New function.
- (ia64_gdbarch_init): Set deprecated_target_read_fp to
- ia64_read_sp. Do not set read_sp to generic_target_read_sp.
- * regcache.c (generic_target_read_sp): Delete function.
- (read_sp): Try TARGET_READ_SP and SP_REGNUM for the SP register.
- * inferior.h (generic_target_read_sp): Delete declaration.
- * frv-tdep.c (frv_gdbarch_init): Do not set read_sp to
- generic_target_read_sp.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * sparc-tdep.c (sparc_gdbarch_init): Ditto
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
- * Makefile.in (mn10300-tdep.o, ia64-tdep.o): Update dependencies.
-
-2003-06-07 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Comment each field of startup_gdbarch.
- * gdbarch.h, gdbarch.c: Re-generate.
-
-2003-06-07 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (TARGET_READ_PC): Add predicate, remove default.
- * gdbarch.h, gdbarch.c: Re-generate.
- * regcache.c: Update comments on read_pc et.al.
- (generic_target_read_pc): Delete function.
- (read_pc_pid): Try TARGET_READ_PC and PC_REGNUM for a PC register.
- * inferior.h (generic_target_read_pc): Delete declaration.
- * frv-tdep.c (frv_gdbarch_init): Do not set read_pc to
- generic_target_read_pc.
- * sparc-tdep.c (sparc_gdbarch_init): Ditto.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
-
-2003-06-07 Andrew Cagney <cagney@redhat.com>
-
- * elfread.c (elf_symtab_read): Replace "special_local_sym_p" and
- "index" with "special_local_sect". Use strcmp instead of STREQ.
- Append period to coments.
-
-2003-06-06 Mark Mitchell <mark@codesourcery.com>
-
- * elfread.c (elf_symtab_read): Avoid use of SECT_OFF_MAX.
- (elfstab_offset_sections): Likewise.
- * gdb-stabs.h (stab_section_info): Likewise.
- * i386-interix-tdep.c (pei_adjust_objfile_offsets): Likewise.
- * objfiles.c (objfile_relocate): Likewise.
- * pa64solib.c (pa64_solib_add_solib_objfile): Likewise.
- * remote.c (get_offsets): Likewise.
- (remote_cisco_objfile_relocate): Likewise.
- * somread.c (som_symfile_offsets): Likewise.
- * symfile.c (alloc_section_addr_info): New function.
- (build_section_addr_info_from_section_tab): Use it.
- (free_section_addr_info): Adjust.
- (default_symfile_offsets): Avoid use of SECT_OFF_MAX.
- (syms_from_objfile): Allocate local_addr dynamically.
- (symbol_file_add_with_addrs_or_offsets): Allocate orig_addrs
- dynamically.
- (add_symbol_file_command): Allocate sect_opts dynamically.
- (reread_symbols): Avoid use of SECT_OFF_MAX.
- * symfile.h (section_addr_info): Do not use MAX_SECTIONS.
- (alloc_section_addr_info): Declare it.
- * symtab.h (SIZEOF_SECTION_OFFSETS): Remove.
- * win32-nat.c (solib_symbols_add): Allocate section_addrs
- dynamically.
- * xcoffread.c (xcoff_symfile_offsets): Avoid use of SECT_OFF_MAX.
-
-2003-06-06 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (struct d10v_unwind_cache): Delete "return_pc".
- (d10v_frame_unwind_cache): Do not set "return_pc".
-
-2003-06-06 Michael Snyder <msnyder@redhat.com>
-
- * h8300-tdep.c: Make tidy (long lines).
-
-2003-06-06 Michal Ludvig <mludvig@suse.cz>
-
- * x86-64-tdep.c (x86_64_fill_fxsave): Pass correct regnums
- to regcache_collect().
-
-2003-06-05 J. Brobecker <brobecker@gnat.com>
-
- * hppa-hpux-tdep.c (hppa_hpux_init_abi): New function, setting
- pc_in_sigtramp multiarch method.
- (hppa_hpux_som_init_abi): Use it.
- (hppa_hpux_elf_init_abi): Likewise.
- * config/pa/tm-hppah.h (PC_IN_SIGTRAMP): Remove, now that this
- macro has been multiarched.
- * config/pa/tm-hppa64.h (PC_IN_SIGTRAMP): Temporarily set this
- macro here, as hppa64 isn't multiarched yet.
-
-2003-06-05 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (value_h): Add $(frame_h).
- * value.h: Include "frame.h".
- (struct value): Replace "frame_addr" with "frame_id".
- (VALUE_FRAME_ID): Replace VALUE_FRAME.
- * values.c (allocate_value): Use VALUE_FRAME_ID.
- (value_copy): Use VALUE_FRAME_ID.
- * findvar.c (value_from_register): Use VALUE_FRAME_ID.
- * valops.c (value_assign): Update. Use frame_find_by_id.
-
-2003-06-05 Michal Ludvig <mludvig@suse.cz>
-
- * x86-64-tdep.c (x86_64_push_arguments): Don't clear offset
- in each pass.
-
-2003-06-05 Jeff Johnston <jjohnstn@redhat.com>
-
- * thread-db.c (check_event): For create/death event breakpoints,
- loop through all messages to ensure that we read the message
- corresponding to the breakpoint we are at.
-
-2003-06-04 Michael Snyder <msnyder@redhat.com>
-
- * h8300-tdep.c (h8300_gdbarch_init): Add h8300hn, h8300sn.
-
-2003-06-04 Mark Kettenis <kettenis@gnu.org>
-
- * dwarf2-frame.c (struct comp_unit): Add member `dbase'.
- (read_encoded_value): Handle DW_EH_PE_datarel encoding.
- (dwarf2_build_frame_info): Set base for DW_EH_PE_datarel encodings
- when handling .eh_frame sections.
-
-2003-06-04 J. Brobecker <brobecker@gnat.com>
-
- * config/pa/nm-hppah.h (PREPARE_TO_PROCEED): Use the generic
- prepare_to_proceed procedure instead of the hppa-specific one.
- * hppa-tdep.c (hppa_prepare_to_proceed): Remove, no longer used.
-
-2003-06-04 Jeff Johnston <jjohnstn@redhat.com>
-
- * acconfig.h: Add HAVE_TKILL_SYSCALL definition check.
- * config.in: Regenerated.
- * configure.in: Add test for syscall function and check for
- __NR_tkill macro in <syscall.h> to set HAVE_TKILL_SYSCALL.
- * configure: Regenerated.
- * lin-lwp.c [HAVE_TKILL_SYSCALL]: Include <unistd.h> and
- <sys/syscall.h>.
- (kill_lwp): New function that uses tkill syscall or
- uses kill, depending on whether threading model is nptl or not.
- All callers of kill() changed to use kill_lwp().
- (lin_lwp_wait): Make special check when WIFEXITED occurs to
- see if all threads have already exited in the nptl model.
- (stop_and_resume_callback): New callback function used by the
- lin_lwp_wait thread exit handling code.
- (stop_wait_callback): Check for threads already having exited and
- delete such threads fromt the lwp list when discovered.
- (stop_callback): Don't assert retcode of kill call.
-
- Roland McGrath <roland@redhat.com>
- * i386-linux-nat.c (ps_get_thread_area): New function needed by
- nptl libthread_db.
-
-2003-06-03 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_next_pc): Use alpha_read_insn.
- (alpha_sigtramp_frame_this_id): Use get_frame_memory.
- (alpha_sigtramp_frame_prev_register): Likewise.
- (alpha_heuristic_frame_prev_register): Likewise.
- * alpha-mdebug-tdep.c (alpha_mdebug_frame_prev_register): Likewise.
-
- * alpha-mdebug-tdep.c (alpha_mdebug_after_prologue): Use
- alpha-specific register id names.
- (alpha_mdebug_frame_unwind_cache): Likewise.
- (alpha_mdebug_frame_prev_register): Likewise.
-
-2003-06-03 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_dwarf2_init_abi): New.
- * alpha-tdep.h (alpha_dwarf2_init_abi): Declare it.
- * alpha-linux-tdep.c (alpha_linux_init_abi): Use it.
- * alphafbsd-tdep.c (alphafbsd_init_abi): Register dwarf2 and mdebug
- unwind routines.
- * alphanbsd-tdep.c (alphanbsd_init_abi): Likewise.
- * config/alpha/fbsd.mt (TDEPFILES): Add alpha-mdebug-tdep.o.
- * config/alpha/nbsd.mt (TDEPFILES): Likewise.
-
- * alpha-linux-tdep.c: Remove unnecessary includes.
- * Makefile.in (alpha-linux-tdep.o): Update.
-
-2003-06-03 Richard Henderson <rth@redhat.com>
-
- * alphabsd-tdep.c (alphabsd_supply_fpreg): Fix typo last change.
- (alphabsd_fill_fpreg): Likewise.
-
-2003-06-03 J. Brobecker <brobecker@gnat.com>
-
- * alphanbsd-tdep.c (alphanbsd_sigcontext_addr): Replace
- references to struct frame_info fields by calls to the equivalent
- accessors. Necessary now that frame_info is opaque.
-
-2003-06-03 J. Brobecker <brobecker@gnat.com>
-
- * alphanbsd-tdep.c (alphanbsd_skip_sigtramp_frame): Delete.
- (alphanbsd_init_abi): Do not set skip_sigtramp_frame in tdep
- structure, field no longer exists.
-
-2003-06-03 J. Brobecker <brobecker@gnat.com>
-
- * config/alpha/alpha-osf1.mt (TDEPFILES): Add alpha-mdebug-tdep.o.
- * alpha-osf1-tdep.c (alpha_osf1_init_abi): Enable the mdebug module.
-
-2003-06-03 J. Brobecker <brobecker@gnat.com>
-
- * alpha-osf1-tdep.c (alpha_osf1_sigcontext_addr): Replace
- references to struct frame_info fields by calls to the equivalent
- accessors. Necessary now that frame_info is opaque.
-
-2003-06-03 J. Brobecker <brobecker@gnat.com>
-
- * alpha-osf1-tdep.c (alpha_osf1_skip_sigtramp_frame): Delete.
- (alpha_osf1_init_abi): Do not set skip_sigtramp_frame in tdep
- structure, field no longer exists.
-
-2003-06-03 Theodore A. Roth <troth@openavr.org>
-
- * remote.c (init_remote_state): Compute sizeof_g_packet by
- accumulation of the size of all registers instead of blindly using
- DEPRECATED_REGISTER_BYTES.
-
-2003-06-03 Michael Snyder <msnyder@redhat.com>
-
- * config/h8300/tm-h8300.h (h8300sxmode): Declare.
- * h8300-tdep.c (h8300_gdbarch_init): Set machine mode
- for h8300sx.
-
-2003-06-03 J. Brobecker <brobecker@gnat.com>
-
- * alpha-osf1-tdep.c (objfiles.h): #include, needed for symfile_objfile.
- * Makefile.in (alpha-osf1-tdep.o): Update dependencies.
-
-2003-06-03 Andrew Cagney <cagney@redhat.com>
-
- * sparc-tdep.c (sparc_convert_to_virtual): Delete function.
- (sparc_convert_to_raw): Delete function.
- (sparc_gdbarch_init): Do not set register_convert_to_raw or
- register_convert_to_virtual.
-
-2003-06-03 Jeff Johnston <jjohnstn@redhat.com>
-
- * thread-db.c (thread_db_mourn_inferior): Unpush thread target
- layer if not dealing with a statically-linked threaded program.
-
-2003-06-03 Kris Warkentin <kewarken@qnx.com>
-
- * solib.c (solib_open): Update comment to reflect actual search order.
-
-2003-06-03 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_frame_memory_signed): New function.
- (get_frame_memory, get_frame_memory_unsigned): New function.
- (get_frame_arch): New function.
- * frame.h (get_frame_signed_memory, get_frame_arch): Declare.
- (get_frame_memory, get_frame_unsigned_memory): Declare.
- * d10v-tdep.c (d10v_frame_unwind_cache): Use
- get_frame_memory_unsigned and get_frame_arch.
- (d10v_frame_unwind_cache, saved_regs_unwinder): Ditto.
-
-2003-06-03 Raoul Gough <RaoulGough@yahoo.co.uk>
-
- * MAINTAINERS (write after approval): Add myself.
-
-2003-06-03 Jim Blandy <jimb@redhat.com>
-
- * s390-nat.c (supply_gregset, fill_gregset): On the s390x, the
- elements of gregset_t are 64 bits each, but access registers
- are still 32 bits, so they're packed two per gregset_t
- element. Unpack/pack them properly.
-
-2003-06-02 David Carlton <carlton@bactrian.org>
-
- * linespec.c (find_methods): Break out code into
- add_matching_methods and add_constructors.
- (add_matching_methods): New.
- (add_constructors): Ditto.
-
-2003-06-02 Andrew Cagney <cagney@redhat.com>
-
- * sparc-tdep.c (sparc_print_registers): Delete call to
- REGISTER_CONVERTIBLE.
- (sparc_gdbarch_init): Do not set register_convertible.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
-
-2003-06-02 Elena Zannoni <ezannoni@redhat.com>
-
- * target.h (TARGET_SYMFILE_POSTREAD): Delete unused macro.
- * symfile.c (reread_symbols): Delete call to TARGET_SYMFILE_POSTREAD.
- (syms_from_objfile): Ditto.
-
-2003-06-03 Andreas Schwab <schwab@suse.de>
-
- * m68k-tdep.c (m68k_gdbarch_init): Use set_gdbarch_print_insn ...
- (_initialize_m68k_tdep): ... instead of deprecated_tm_print_insn.
-
-2003-06-02 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_register_reggroup_p): Zero is only
- a member of all_reggroup.
-
-2003-06-02 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_register_type): Change from _virtual_type.
- (alpha_convert_flt_dbl, alpha_convert_dbl_flt): Remove.
- (alpha_lds, alpha_sts): New.
- (alpha_convert_register_p): Change from _register_convertible.
- (alpha_register_to_value): Change from _convert_to_virtual;
- restructure and fail for type sizes other than 4 or 8.
- (alpha_value_to_register): Similarly.
- (alpha_extract_return_value): Use alpha_sts.
- (alpha_store_return_value): Use alpha_lds.
- (alpha_gdbarch_init): Update hooks.
-
-2003-06-02 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_register_virtual_type): Use alpha-specific
- regnum identifiers.
- (alpha_sigtramp_register_address): Likewise.
-
-2003-06-02 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_supply_int_regs, alpha_fill_int_regs): New.
- (alpha_supply_fp_regs, alpha_fill_fp_regs): New.
- * alpha-tdep.h: Declare them.
-
- * alpha-nat.c (fetch_osf_core_registers): Constify core_reg_mapping.
- Remove zerobuf. Don't error on UNIQUE.
- (fetch_elf_core_registers): Use alpha_supply_{int,fp}_regs.
- (ALPHA_REGSET_UNIQUE): Provide default.
- (supply_gregset): Use alpha_supply_int_regs.
- (fill_gregset): Use alpha_fill_int_regs.
- (supply_fpregset): Use alpha_supply_fp_regs.
- (fill_fpregset): Use alpha_fill_fp_regs.
- * alphabsd-tdep.c (NUM_GREGS, NUM_FPREGS): Remove.
- (alphabsd_supply_reg): Use alpha_supply_int_regs.
- (alphabsd_fill_reg): Use alpha_fill_int_regs.
- (alphabsd_supply_fpreg): Use alpha_supply_fp_regs.
- (alphabsd_fill_fpreg): Use alpha_fill_fp_regs.
- * config/alpha/nm-linux.h (ALPHA_REGSET_UNIQUE): New.
-
-2003-06-02 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_store_return_value): Avoid switch fallthru.
-
- * alpha-tdep.c (alpha_extract_return_value): Use internal_error.
- (alpha_store_return_value): Likewise.
-
-2003-06-02 David Carlton <carlton@math.stanford.edu>
-
- * block.c (contained_in): Add 'const' to arguments.
- (block_function): Ditto.
- * block.h: Update declarations for block_function and
- contained_in.
-
-2003-06-02 David Carlton <carlton@math.stanford.edu>
-
- * objc-lang.c (find_imps): Delete unneeded variable 'sym_symtab'.
- * c-valprint.c (c_val_print): Delete unneeded variable 's'.
- * p-valprint.c (pascal_val_print): Ditto.
- * ada-lang.c (standard_lookup): Delete unneded variable 'symtab'.
-
-2003-06-02 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_push_dummy_call): Use
- builtin_type_ieee_double_little instead of builtin_type_double.
-
- * alpha-tdep.c (alpha_push_dummy_call): Handle ABI mandated
- sign-extension of 32-bit values.
- (alpha_store_return_value): Similarly.
-
- * alpha-tdep.c (alpha_push_dummy_call): Handle COMPLEX types.
- (alpha_extract_return_value): Likewise.
- (alpha_store_return_value): Likewise.
-
- * alpha-tdep.c (alpha_extract_return_value): Handle IEEE Quad floats.
- (alpha_store_return_value): Error on IEEE Quad floats.
-
- * alpha-tdep.c (alpha_extract_return_value): Convert to regcache.
- (alpha_extract_struct_value_address): Likewise.
- (alpha_store_return_value): Likewise.
- (alpha_store_struct_return): Remove.
- (alpha_gdbarch_init): Update hook registration to match.
-
- * alpha-tdep.c (alpha_register_convert_to_virtual): Tidy use of
- deprecated interfaces; use ALPHA_REGISTER_SIZE instead of gdbarch
- macros where appropriate.
- (alpha_register_convert_to_raw): Similarly. Use unpack_long.
- (alpha_convert_flt_dbl, alpha_convert_dbl_flt): New.
-
- * alpha-tdep.c (alpha_register_virtual_type): Use void_data_ptr
- for SP, GP; void_func_ptr for PC; non-language-specific types
- for all others.
- * alpha-tdep.h (ALPHA_GP_REGNUM): New.
-
-2003-06-02 Richard Henderson <rth@redhat.com>
-
- * top.h (lim_at_start): Declare.
- * main.c (captured_main): Set it.
- * top.c (lim_at_start): Define.
- (command_loop): Use it instead of &environ.
- * event-top.c (command_handler): Likewise.
-
-2003-06-01 Jason Thorpe <thorpej@wasabisystems.com>
-
- * mipsnbsd-tdep.c: Update copyright years.
- (fetch_core_registers): Correct arguments to mipsnbsd_supply_fpreg.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * Makefile.in (ALLDEPFILES): Add alpha-mdebug-tdep.c.
- (alpha-linux-tdep.o): Update dependencies.
- (alpha-nat.o, alpha-tdep.o, alpha-mdebug-tdep.o): Likewise.
- * alpha-mdebug-tdep.c: Remove unneeded includes.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_register_reggroup_p): New.
- (alpha_gdbarch_init): Register it.
-
-2003-06-02 Andrew Cagney <cagney@redhat.com>
-
- * dwarfread.c: Eliminate "register"
- (decode_die_type): Eliminate assignment within "if".
- (struct_type, decode_array_element_type): Ditto.
- (dwarf_read_array_type, read_tag_pointer_type): Ditto.
- (read_subroutine_type, enum_type, add_enum_psymbol): Ditto.
- (decode_modified_type, completedieinfo): Ditto.
- * block.c: Eliminate "register".
- (blockvector_for_pc_sect): Eliminate assignment within "if".
- * cp-support.h (struct symbol): Opaque declaration.
- * breakpoint.c (handle_gnu_v3_exceptions): Use xfree, not free.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_gdbarch_init): Use set_gdbarch_print_insn ...
- (_initialize_alpha_tdep): ... not deprecated_tm_print_insn.
-
-2003-06-01 Adam Fedor <fedor@gnu.org>
-
- * gdbarch.sh (function_list): Add FETCH_POINTER_ARGUMENT.
- * gdbarch.[ch]: Regenerate.
- * hppa-tdep.c (hppa_fetch_pointer_argument): New function.
- (hppa_gdbarch_init): Set it in the gdbarch vector.
- * i386-tdep.c (i386_fetch_pointer_argument): New
- (i386_gdbarch_init): Set it into gdbarch.
- * rs6000-tdep.c (rs6000_fetch_pointer_argument): New.
- (rs6000_gdbarch_init): Set it in gdbarch.
- * sparc-tdep.c (sparc_fetch_pointer_argument): New
- (sparc_gdbarch_init): Set it in gdbarch.
-
-2003-06-01 Andrew Cagney <cagney@redhat.com>
-
- * defs.h (extract_address): Delete declaration.
- * findvar.c (extract_address): Delete function.
- * xstormy16-tdep.c (xstormy16_extract_return_value): Replace
- extract_address with the inline equivalent,
- extract_unsigned_integer.
- (xstormy16_extract_struct_value_address): Ditto.
- (xstormy16_pointer_to_address): Ditto.
- * vax-tdep.c (vax_extract_struct_value_address): Ditto.
- * v850-tdep.c (v850_push_arguments): Ditto.
- (v850_extract_return_value): Ditto.
- (v850_extract_struct_value_address): Ditto.
- * sparcnbsd-tdep.c (sparcnbsd_get_longjmp_target_32): Ditto.
- (sparcnbsd_get_longjmp_target_64): Ditto.
- * sparc-tdep.c (sparc_frame_saved_pc): Ditto.
- (get_longjmp_target): Ditto.
- * sh-tdep.c (sh_extract_struct_value_address): Ditto.
- (sh64_extract_struct_value_address): Ditto.
- (sh_push_arguments): Ditto.
- (sh64_push_arguments): Ditto.
- * remote-vxsparc.c (vx_read_register): Ditto.
- * ppc-linux-tdep.c (ppc_linux_skip_trampoline_code): Ditto.
- * ns32k-tdep.c (ns32k_extract_struct_value_address): Ditto.
- * mn10300-tdep.c (mn10300_extract_struct_value_address): Ditto.
- * mipsv4-nat.c (get_longjmp_target): Ditto.
- * mipsnbsd-tdep.c (mipsnbsd_get_longjmp_target): Ditto.
- * mips-nat.c (get_longjmp_target): Ditto.
- * mips-linux-tdep.c (mips_linux_get_longjmp_target): Ditto.
- * mcore-tdep.c (mcore_extract_struct_value_address): Ditto.
- * m68k-tdep.c (m68k_get_longjmp_target): Ditto.
- * m68hc11-tdep.c (m68hc11_extract_struct_value_address): Ditto.
- * irix5-nat.c (get_longjmp_target): Ditto.
- * irix4-nat.c (get_longjmp_target): Ditto.
- * ia64-tdep.c (generic_elf_find_global_pointer): Ditto.
- (ia64_push_arguments): Ditto.
- * hpux-thread.c (hpux_thread_store_registers): Ditto.
- * h8300-tdep.c (h8300_push_arguments): Ditto.
- (h8300_store_return_value): Ditto.
- (h8300_extract_struct_value_address): Ditto.
- * frv-tdep.c (frv_extract_struct_value_address): Ditto.
- (frv_push_arguments): Ditto.
- * avr-tdep.c (avr_pointer_to_address): Ditto.
- (avr_push_arguments): Ditto.
- * arm-tdep.c (arm_push_dummy_call): Ditto.
- (arm_get_longjmp_target): Ditto.
- * arm-linux-tdep.c (arm_linux_push_arguments): Ditto.
- * alpha-tdep.c (alpha_extract_struct_value_address): Ditto.
- (alpha_get_longjmp_target): Ditto.
-
- * solib-irix.c (extract_mips_address): Inline extract_address,
- replacing it with extract_signed_integer.
- * solib-svr4.c (SOLIB_EXTRACT_ADDRESS): Ditto.
- (LM_NAME, IGNORE_FIRST_LINK_MAP_ENTRY): Ditto.
- (first_link_map_member, open_symbol_file_object): Ditto.
- (svr4_fetch_objfile_link_map, svr4_fetch_objfile_link_map): Ditto.
- * solib-sunos.c (SOLIB_EXTRACT_ADDRESS): Ditto.
- (LM_NEXT, LM_NAME): Ditto.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.h (ALPHA_FP_REGNUM): Remove.
- * alpha-tdep.c (alpha_register_name): Remove vfp entry.
- (alpha_cannot_fetch_register): Remove ALPHA_FP_REGNUM.
- (alpha_cannot_store_register): Likewise.
- * alphabsd-nat.c (fetch_inferior_registers): Don't set FP_REGNUM.
- * alpha-nat.c (supply_gregset): Likewise.
- * alphanbsd-tdep.c (fetch_core_registers): Likewise.
-
-2003-06-01 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): Update comment on
- DEPRECATED_DUMMY_WRITE_SP.
-
- * mips-tdep.c (mips_gdbarch_init): Do not set
- deprecated_dummy_write_sp.
- (mips_eabi_push_dummy_call): Set the SP register.
- (mips_o64_push_dummy_call): Set the SP register.
- (mips_o32_push_dummy_call): Set the SP register.
- (mips_n32n64_push_dummy_call): Set the SP register.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * alpha-nat.c (fetch_osf_core_registers): Use ALPHA_REGISTER_SIZE
- instead of ALPHA_MAX_REGISTER_RAW_SIZE.
- (supply_gregset): Likewise.
- * alpha-tdep.c (alpha_store_return_value): Likewise.
- (alpha_get_longjmp_target): Likewise.
- (alpha_register_name): Constify array.
- (alpha_gdbarch_init): Remove deprecated_fp_regnum,
- deprecated_register_size, deprecated_register_bytes,
- deprecated_max_register_raw_size, deprecated_max_register_virtual_size.
- * alpha-tdep.h (ALPHA_MAX_REGISTER_RAW_SIZE): Remove.
- (ALPHA_MAX_REGISTER_VIRTUAL_SIZE): Remove.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_push_dummy_call): Store sp. Tidy copies
- from arg_reg_buffer to regcache to avoid double conversion.
-
-2003-06-01 Mark Kettenis <kettenis@gnu.org>
-
- * i386-linux-nat.c (child_resume): Use I386_ESP_REGNUM instead of
- SP_REGNUM.
- * i386-linux-tdep.c (i386_linux_sigcontext_addr): Likewise.
- * i386bsd-tdep.c (i386bsd_sigcontext_addr): Likewise.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * dwarf2-frame.c (struct dwarf2_cie): Add saw_z_augmentation.
- (decode_frame_entry): Set it. Skip FDE augmentation.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * dwarf2-frame.c (dwarf2_frame_cache): Handle retaddr_column
- not overlapping PC_REGNUM.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_push_dummy_call): Transmography from
- alpha_push_arguments. Don't dump argument register data to
- the target stack. Fix float and 128-bit long double semantics.
- Store $t12 and $ra as specified by the ABI. Use regcache everywhere.
- (alpha_fix_call_dummy): Remove.
- (alpha_call_dummy_words): Remove.
- (alpha_gdbarch_init): Kill deprecated call hooks; add push_dummy_call.
-
-2003-06-01 Richard Henderson <rth@redhat.com>
-
- * alpha-linux-tdep.c (alpha_linux_init_abi): Install dwarf2 unwinder.
-
-2003-06-01 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (is_mips16_addr): New function.
- (make_mips16_addr, unmake_mips16_addr): New functions.
- (pc_is_mips16, mips_fetch_instruction): Use.
- (gdb_print_insn_mips, mips_breakpoint_from_pc): Use.
- (gdb_print_insn_mips): Eliminate TM_PRINT_INSN_MACH.
- (mips_dump_tdep): Delete print of TM_PRINT_INSN_MACH,
- UNMAKE_MIPS16_ADDR, MAKE_MIPS16_ADDR, IS_MIPS16_ADDR and
- TARGET_MIPS.
- * config/mips/tm-mips.h: Update copyright.
- (TARGET_MIPS, TM_PRINT_INSN_MACH): Delete.
- (DEPRECATED_REGISTER_SIZE, DEPRECATED_REGISTER_BYTES): Delete.
- (IS_MIPS16_ADDR, MAKE_MIPS16_ADDR, UNMAKE_MIPS16_ADDR): Delete.
- * config/mips/tm-irix6.h (DEPRECATED_REGISTER_BYTES): Delete.
- (TM_PRINT_INSN_MACH): Delete.
- * config/mips/tm-irix5.h (DEPRECATED_REGISTER_BYTES): Delete.
-
- * configure.tgt: Replace mips64*vr4xxx*el-*-elf*,
- mips64*vr4xxx*-*-elf*, mips64*vr4300*el-*-elf*,
- mips64*vr4300*-*-elf*, mips64*vr4100*el-*-elf*,
- mips64*vr4100*-*-elf*, mips64*vr5000*el-*-elf*, and
- mips64*vr5000*-*-elf* with mips64 mips64*vr*-*-elf*. Delete
- mips*tx39*el*-elf*. Map mips*-sony-* and mips64*-big-* onto
- mips64. Map mips*-dec-*, mips*-big-*, mips*-little-*,
- mips*-*-riscos* and mips*-*-sysv* onto mips.
- * config/mips/mips64.mt: New file.
- * config/mips/mips.mt: New file.
- * config/mips/littlemips.mt: Delete file.
- * config/mips/decstation.mt: Delete file.
- * config/mips/vr4300el.mt: Delete file.
- * config/mips/vr5000el.mt: Delete file.
- * config/mips/vr5000.mt: Delete file.
- * config/mips/vr4100.mt: Delete file.
- * config/mips/vr4xxxel.mt: Delete file.
- * config/mips/vr4300.mt: Delete file.
- * config/mips/vr4xxx.mt: Delete file.
- * config/mips/bigmips.mt: Delete file.
- * config/mips/bigmips64.mt: Delete file.
- * config/mips/tx39l.mt (TM_FILE): Set to "tm-tx39.h".
- * config/mips/embedl64.mt (TM_FILE): Set to "tm-mips64.h".
- * config/mips/embed64.mt (TM_FILE): Set to "tm-mips64.h"
- * config/mips/embedl.mt (TM_FILE): Set to "tm-mips.h".
- * config/mips/tm-tx39.h: Include "tm-mips.h" instead of
- "tm-bigmips.h".
- * config/mips/tm-irix3.h: Ditto.
- * config/mips/tm-mipsv4.h: Ditto.
- * config/mips/tm-embed.h: Ditto.
- * config/mips/tm-irix6.h: Include "tm-mips64.h" instead of
- "tm-bigmips64.h".
- * config/mips/tm-vr5000el.h: Delete file.
- * config/mips/tm-tx39l.h: Delete file.
- * config/mips/tm-vr4300el.h: Delete file.
- * config/mips/tm-vr4xxxel.h: Delete file.
- * config/mips/tm-vr4300.h: Delete file.
- * config/mips/tm-vr4100.h: Delete file.
- * config/mips/tm-vr4xxx.h: Delete file.
- * config/mips/tm-vr5000.h: Delete file.
- * config/mips/tm-embedl64.h: Delete file.
- * config/mips/tm-embedl.h: Delete file.
- * config/mips/tm-embed64.h: Delete file.
- * config/mips/tm-bigmips64.h: Delete file.
- * config/mips/tm-bigmips.h: Delete file.
-
-2003-06-01 Mark Kettenis <kettenis@gnu.org>
-
- Fix gdb/1216.
- * shnbsd-nat.c: Include "sh-tdep.h".
-
- From Richard Henderson <rth@redhat.com>:
- * dwarf2-frame.c (dwarf2_frame_state_alloc_regs): Fix ptr arithmetic.
-
-2003-05-31 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (set_reg_offset): Add saved_regs parameter. Add
- forward declaration.
- (mips16_heuristic_proc_desc): Pass temp_saved_regs.
- (mips16_heuristic_proc_desc): Pass temp_saved_regs.
- (mips_find_saved_regs): Use set_reg_offset.
- (mips_frame_init_saved_regs): Delete function.
- (mips_pop_frame): Call mips_find_saved_regs instead of
- DEPRECATED_FRAME_INIT_SAVED_REGS.
-
-2003-05-31 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_gdbarch_init): Do not set
- deprecated_max_register_raw_size, register_virtual_size, and
- deprecated_max_register_virtual_size.
-
-2003-05-31 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c: Include "dwarf2-frame.h".
- (i386_gdbarch_init): Hook in the DWARF CFI frame unwinder.
- * Makefile.in (i386-tdep.o): Update dependencies.
-
- * dwarf2-frame.c, dwarf2-frame.h: New files.
- * Makefile.in (SFILES): Add dwarf2-frame.c.
- (dwarf2_frame_h): Define.
- (COMMON_OBS): Add dwarf2-frame.o.
- (dwarf2-frame.o): Add dependencies.
-
-2003-05-31 Andreas Jaeger <aj@suse.de>
-
- * x86-64-linux-nat.c: Fix comment.
-
-2003-05-31 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c (x86_64_push_dummy_call): Adjust for changed
- function signature.
-
- * i386-tdep.c (i386_sigtramp_frame_p): Only handle frames if we
- have a sigcontext_addr handler.
- * x86-64-tdep.c (x86_64_sigtramp_frame_p): Assert that we have a
- sigcontext_addr handler.
-
-2003-05-31 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (print_gp_register_row): Replace do_gp_register_row.
- (print_fp_register_row): Replace do_fp_register_row.
- (mips_print_fp_register): Add "file" and "frame" parameters.
- (mips_print_register): Add "file" and "frame" parameters.
- (mips_print_registers_info): Replace mips_do_registers_info.
- (mips_gdbarch_init): Set print_registers_info instead of
- deprecated_do_registers_info.
- (mips_read_fp_register_single): Add "frame" parameter.
- (mips_read_fp_register_double): Add "frame" parameter.
-
-2003-05-31 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_register_name): Check for MMX registers first.
- Fixes a bug where GDB would print the wrong register names for
- targets without SSE.
-
- * x86-64-tdep.c (X86_64_NUM_SAVED_REGS): Set to X86_64_NUM_GREGS.
- (x86_64_sigtramp_frame_cache): Use `sc_reg_offset' to find saved
- registers.
-
- * x86-64-linux-tdep.c (x86_64_linux_sc_reg_offset): New variable.
- (x86_64_linux_init_abi): Initialize TDEP->sc_reg_offset and
- TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
- TDEP->sc_sp_offset.
-
- From Michal Ludvig <mludvig@suse.cz>:
- * i386-tdep.h (struct gdbarch_tdep): Add members `sc_reg_offset'
- and `sc_num_regs'.
- (I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM,
- I386_EBP_REGNUM, I386_EIP_REGNUM, I386_EFLAGS_REGNUM,
- I386_ST0_REGNUM): Move here from...
- * i386-tdep.c: ... here.
- (I386_NUM_SAVED_REGS): Define to I386_NUM_REGS.
- (i386_sigtramp_frame_cache): Use `sc_reg_offset' to find saved
- registers if possible.
- (i386_gdbarch_init): Initialize TDEP->sc_reg_offset.
- * i386bsd-tdep.c (i386bsd_sc_pc_offset, i386bsd_sc_sp_offset):
- Remove variables.
- (i386bsd_sc_reg_offset): New variable.
- (i386bsd_init_abi): Initialize TDEP->sc_reg_offset and
- TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
- TDEP->sc_sp_offset.
- (i386fbsd_sc_reg_offset): New variable.
- (i386fbsdaout_init_abi): Initialize TDEP->sc_reg_offset and
- TDEP->sc_num_regs.
- (i386fbsd4_sc_pc_offset, i386fbsd4_sc_sp_offset): Remove
- variables.
- (i386fbsd4_sc_reg_offset): New variable.
- (i3864bsd4_init_abi): Initialize TDEP->sc_reg_offset and
- TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
- TDEP->sc_sp_offset.
- * i386-linux-tdep.c (i386_linux_sc_reg_offset): New variable.
- (i386_linux_init_abi): Set TDEP->sc_reg_offset and TDEP->sc_num_regs.
- * i386nbsd-tdep.c (i386nbsd_sc_pc_offset, i386nbsd_sc_sp_offset):
- Remove variables.
- (i386nbsd_sc_reg_offset): New variable.
- (i386nbsd_init_abi): Initialize TDEP->sc_reg_offset and
- TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
- TDEP->sc_sp_offset.
- * i386obsd-tdep.c (i386obsd_sc_pc_offset, i386obsd_sc_sp_offset):
- Remove variables.
- (i386obsd_sc_reg_offset): New variable.
- (i386obsd_init_abi): Initialize TDEP->sc_reg_offset and
- TDEP->sc_num_regs instead of TDEP->sc_pc_offset and
- TDEP->sc_sp_offset.
- * i386bsd-nat.c (_initialize_i386bsd_nat): Adjust for changes in
- i386bsd-tdep.c, i386nbsd-tdep.c and i386obsd-tdep.c. Add check
- for frame pointer offset in `struct sigcontext'.
-
-2003-05-31 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_gdbarch_init): Do not set the deprecated
- architecture methods call_dummy_words, sizeof_call_dummy_words,
- push_return_address, store_struct_return, and fix_call_dummy. Set
- push_dummy_call instead of deprecated_push_arguments.
- (mips_store_struct_return): Delete function.
- (mips_fix_call_dummy): Delete function.
- (mips_push_return_address): Delete function.
- (mips_eabi_push_dummy_call): Replace mips_eabi_push_arguments, set
- RA_REGNUM and T9_REGNUM.
- (mips_n32n64_push_dummy_call): Ditto for
- mips_n32n64_push_arguments.
- (mips_o32_push_dummy_call): Ditto for mips_o32_push_arguments.
- (mips_o64_push_dummy_call): Ditto for mips_o64_push_arguments.
-
-2003-05-31 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (PUSH_DUMMY_CALL): Add "func_addr" parameter. Rename
- "dummy_addr" to "bp_addr".
- * infcall.c (call_function_by_hand): Pass "funaddr" to
- gdbarch_push_dummy_call.
- * gdbarch.h, gdbarch.c: Re-generate.
- * i386-tdep.c (i386_push_dummy_call): Update.
- * arm-tdep.c (arm_push_dummy_call): Update.
- * d10v-tdep.c (d10v_push_dummy_call): Update.
-
-2003-05-31 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
- variable declarations.
- (x86_64_register_number, x86_64_register_name): Remove prototypes.
- (x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
- x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
- x86_64_init_frame_pc, x86_64_init_frame_pc,
- x86_64_function_has_prologue): Remove prototypes.
- (X86_64_NUM_GREGS): New define.
- (x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
- * x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
- "dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
- (RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
- XMM1_REGNUM): Remove defines.
- (X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
- X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
- X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
- X86_64_XMM1_REGNUM): New defines.
- (struct x86_64_register_info): Renamed from `struct
- register_info'. Remove `size' member.
- (x86_64_register_info_table): Remove variable.
- (x86_64_register_info): New variable.
- (X86_64_NUM_REGS): New define.
- (X86_64_NUM_GREGS): Remove define.
- (x86_64_num_regs, x86_64_num_gregs): Remove variables.
- (x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
- Remove variables.
- (x86_54_dwarf2_reg_to_regnum): Remove function.
- (x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
- (x86_64_dwarf_reg_to_regnum): New function.
- (x86_64_register_name): Rewrite.
- (x86_64_register_raw_size): Remove function.
- (x86_64_register_byte_table): Remove variable.
- (x86_64_register_byte): Remove function.
- (x86_64_register_virtual_type): Remove function.
- (x86_64_register_type): New function.
- (x86_64_register_convertible, x86_64_register_convert_to_virtual,
- x86_64_register_convert_to_raw): Remove functions.
- (x86_64_push_return_address, x86_64_pop_frame): Remove functon.
- (x86_64_use_struct_convention): Make static. Adjust for renamed
- defines.
- (x86_64_frame_init_saved_regs): Remove function.
- (x86_64_push_arguments): Make static. Change to accept a regcache
- as argument.
- (x86_64_store_return_value, x86_64_extract_return_value): Make
- static. Rewrite based on i386 counterparts.
- (x86_64_push_dummy_call): New function.
- (X86_64_NUM_SAVED_REGS): New define.
- (x86_64_register_number): Remove function.
- (x86_64_store_struct_return): Remove function.
- (x86_64_frameless_function_invocation,
- x86_64_function_has_prologue): Remove functions.
- (PROLOG_BUFSIZE): Remove define.
- (struct x86_64_frame_cache): New structure.
- (x86_64_alloc_frame_cache, x86_64_analyze_prologue,
- x86_64_frame_cache, x86_64_frame_this_id,
- x86_64_frame_prev_register, x86_64_frame_p,
- x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
- x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
- functions.
- (x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
- variables.
- (x86_64_skip_prologue): Rewrite in terms of
- x86_64_analyze_prologue.
- (x86_64_frame_base_address): New function.
- (x86_64_frame_base): New variable.
- (x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
- (x86_64_init_abi): Set register_type and push_dummy_call. Don't
- set deprecated_fp_regnum, deprecated_register_size,
- deprecated_register_bytes, register_raw_size, register_byte,
- register_virtual_type, register_convertiable,
- register_convert_to_virtual, convert_to_raw,
- deprecated_get_saved_register, deprecated_target_read_fp,
- deprecated_push_arguments, deprecated_push_return_address,
- deprecated_pop_frame, deprecated_store_struct_return,
- deprecated_frame_init_saved_regs, deprecated_frame_chain,
- frameless_function_invocation, deprecated_frame_saved_pc,
- deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
- dwarf2_build_frame_info, deprecated_init_extra_frame_info,
- deprecated_init_frame_pc and virtual_frame_pointer. Call
- frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
- and x86_64_frame_p. Call frame_base_set_default to register
- x86_64_frame_base.
- (I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
- (x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
- (_initialize_x86_64_tdep): Remove function.
- * x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
- (LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
- LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
- define.
- (X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
- (x86_64_linux_sigcontext_addr): Rewrite.
- (x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
- x86_64_linux_frame_saved_pc): Remove functions.
- (x86_64_linux_pc_in_sigtramp): Renamed from
- x86_64_linux_in_sigtramp. Try harder to recognize a signal
- trampoline.
- (x86_64_linux_frame_chain, x86_64_init_frame_pc):
- Remove_functions.
- (x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
- TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
- * x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
- (x86_64_regmap): Rename to regmap.
- (GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
- x86_64_num_gregs.
- (supply_gregset, fill_gregset): Likewise. Use regmap instead of
- x86_64_regmap.
- (x86_64_fxsave_offset): Remove function.
- (supply_fpregset): Simply call x86_64_supply_fxsave.
- (fill_fpregset): Simply call x86_64_fill_fxsave.
- (fetch_inferior_registers, store_inferior_registers): Avoid
- asignment in if-statement.
- (LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
- SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
- LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
- (fetch_core_registers): Remove function.
- (linux_elf_core_fns): Remove.
- (offsetoff): Don't define.
- (_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
- * config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
- * config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
- add core-regset.o.
- * config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
- protection against multiple includes instead of NM_X86_64_h. Add
- various comments. Include "config/nm-linux.h". Don't include
- <signal.h>.
- (REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
- GET_THREAD_SIGNALS): Remove defines.
- (x86_64_register_u_addr, kernel_u_size,
- lin_thread_get_thread_signals): Remove prototypes.
- (PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
- [HAVE_LINK_H]: Don't include "solib.h".
- [HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
- * config/i386/tm-x86-64linux.h: Fix comments.
- * Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
- x86-64-tdep.o): Update dependencies.
-
-2003-05-30 Andrew Cagney <cagney@redhat.com>
-
- * config/sparc/tm-sparc.h (sparc_extract_struct_value_address):
- Change parameter type to a "struct regcache *".
-
- * gdbarch.sh: Regardless of the multi-arch level, always define
- the macro when not already defined.
- * gdbarch.h, gdbarch.c: Re-generate.
-
-2003-05-30 Richard Henderson <rth@redhat.com>
-
- * alpha-mdebug-tdep.c (alpha_mdebug_frame_p): Reject prologues.
- (alpha_mdebug_frame_unwind_cache): Don't call the heuristic unwinder.
- (alpha_mdebug_frame_this_id): Likewise.
- (alpha_mdebug_frame_prev_register): Likewise.
- (alpha_mdebug_frame_base_address): Likewise.
- (alpha_mdebug_frame_locals_address): Likewise.
- (alpha_mdebug_frame_args_address): Likewise.
- (struct alpha_mdebug_unwind_cache): Remove in_prologue_cache.
- * alpha-tdep.c (alpha_heuristic_proc_start): Use get_pc_function_start.
- (alpha_heuristic_frame_unwind_cache): Make static; add missing
- loop increment.
- (alpha_heuristic_frame_this_id): Make static.
- (alpha_heuristic_frame_prev_register): Likewise.
- (alpha_heuristic_frame_base_address): Likewise.
- * alpha-tdep.h: Update.
-
-2003-05-30 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.h (i386bsd_sigcontext_addr): Remove prototype.
- (I386_SIZEOF_GREGS, I386_SIZEOF_FREGS, I386_SIZEOF_XREGS): Remove
- defenitions.
- (IS_FP_REGNUM, IS_SSE_REGNUM): Remove definitions.
- * i386-tdep.c: Mark functions that are 64-bit safe as such.
- (I386_EAX_REGNUM, I386_EDX_REGNUM, I386_ESP_REGNUM,
- I386_EBP_REGNUM, I386_EIP_REGNUM, I386_EFLAGS_REGNUM,
- I386_ST0_REGNUM): New defines.
- (CODESTREAM_BUFSIZ, codestream_tell, codestream_peek,
- codestream_get): Remove define.
- (codestream_next_addr, condestream_addr, condestream_buf,
- codestream_off, codestream_cnt): Remove variables.
- (codestream_fill, codestream_seek, codestream_read): Remove
- functions.
- (i386_follow_jump): Rewrite to avoid usage of removed codestream
- functionality.
- (i386_get_frame_setup, i386_frameless_signal_p, i386_frame_chain,
- i386_sigtramp_saved_pc, i386_sigtramp_saved_sp,
- i386_frame_saved_pc, i386_saved_pc_after_call,
- i386_frame_num_args, i386_frame_init_saved_regs,
- i386_push_return_address, i386_do_pop_frame, i386_pop_frame,
- i386_push_arguments): Remove functions.
- (i386_skip_prologue): Rewrite to avoid usage of removed codestream
- functionality. Use i386_analyze_prologue instead of
- i386_get_frame_setup.
- (I386_NUM_SAVED_REGS): New define.
- (struct i386_frame_cache): New structure.
- (i386_alloc_frame_cache, i386_analyze_struct_return,
- i386_skip_probe, i386_analyze_frame_setup,
- i386_analyze_register_saves, i386_analyze_prologue,
- i386_unwind_pc, i386_frame_cache, i386_frame_this_id,
- i386_frame_prev_register, i386_sigtramp_frame_cache,
- i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register,
- i386_frame_p, i386_sigtramp_frame_p, i386_frame_base_address,
- i386_unwind_dummy_id, i386_save_dummy_tos, i386_push_dummy_call):
- New functions.
- (i386_frame_unwind, i386_sigtramp_frame_unwind, i386_frame_base):
- New variables.
- (LOW_RETURN_REGNUM, HIGH_RETURN_REGNUM): Define in terms of
- I386_EAX_REGNUM and I386_EDX_REGNUM.
- (i386_extract_return_value, i386_store_return_value): Use
- I386_ST0_REGNUM where appropriate.
- (i386_extract_struct_value_address): Rewrite to use extract_address.
- (i386_svr4_pc_in_sigtramp): Add comment.
- (i386_svr4_sigcontext_addr): Rewrite.
- (i386_svr4_init_abi): Adjust TDEP->sc_pc_offset and
- TDEP->sc_sp_offset.
- (i386_gdbarch_init): Don't set deprecated_init_frame_pc. Set
- sp_regnum, fp_regnum, pc_regnum, ps_regnum and fp0_regnum in terms
- of new defines. Set push_dummy_call, don't set
- deprecated_push_arguments, deprecated_push_return_address,
- deprecated_pop_frame. Don't set parm_boundary. Don't set
- deprecated_frame_chain, deprecated_frame_saved_pc,
- deprecated_saved_pc_after_call. Set unwind_dummy_id,
- save_dummy_frame_tos, unwind_pc. Call
- frame_unwind_append_predicate and frame_base_set_default. Don't
- set deprecated_dummy_write_pc. Don't set deprecated_fp_regnum.
- Don't set frameless_function_invocation. Don't set
- deprecated_register_bytes, deprecated_register_size,
- deprecated_call_dummy_words and deprecated_sizeof_call_dummy.
- * i386-linux-tdep.c: Fix formatting in some comments.
- (LINUX_SIGTRAMP_INSN0, LINUX_SIGTRAMP_OFFSET0,
- LINUX_SIGTRAMP_INSN1, LINUX_SIGTRAMP_OFFSET1,
- LINUX_SIGTRAMP_INSN2, LINUX_SIGTRAMP_OFFSET2,
- LINUX_RT_SIGTRAMP_INSN0, LINUX_RT_SIGTRAMP_OFFSET0,
- LINUX_RT_SIGTRAMP_INSN1, LINUX_RT_SIGTRAMP_OFFSET1): Drop
- redundant parentheses.
- (I386_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): New define.
- (i386_linux_sigcontext_addr): Use it. Rewrite.
- (find_minsym_and_objfile): Change name of second argument.
- (skip_gnu_resolver): Renamed from skip_hurd_resolver. All callers
- changed. Use frame_pc_unwind instead of
- DEPRECATED_SAVED_PC_AFTER_CALL.
- (i386_linux_init_abi): Don't set deprecated_register_bytes.
- * i386bsd-tdep.c (i386bsd_sigcontext_addr): Rewrite.
- * i386-nto-tdep.c (i386nto_sigcontext_addr): Adapt for new frame
- unwinder.
- * i386-cygwin-tdep.c: Don't include "gdbcore.h", "frame.h" and
- "dummy-frame.h".
- (i386_cygwin_frame_chain_valid, i386_cygwin_frame_chain): Removed.
- (_initialize_i386_cygwin_tdep): New prototype.
- (i386_cygwin_init_abi): Don't set deprecated_frame_chain and
- deprecated_frame_chain_valid.
- * i386-sol2-tdep.c (i386_sol2_init_abi): Don't set
- TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
- Rely on the SVR4 defaults.
- * config/i386/i386sol2.mt (TDEPFILES): Remove i386bsd-tdep.o.
- * Makefile.in (i386-tdep.o, i386-cygwin-tdep.o): Update dependencies.
-
-2003-05-30 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): Always call
- DEPRECATED_FIX_CALL_DUMMY, even for AT_ENTRY_POINT case.
-
-2003-05-30 Richard Henderson <rth@redhat.com>
-
- * alpha-tdep.c (alpha_heuristic_frame_unwind_cache): Fix loop
- increment.
-
-2003-05-29 Jim Blandy <jimb@redhat.com>
-
- Use gdbarch methods for solib stuff on PowerPC Linux.
- * config/powerpc/tm-linux.h (IN_SOLIB_CALL_TRAMPOLINE,
- SKIP_TRAMPOLINE_CODE): #undef these, so the gdbarch methods will
- show through.
- * ppc-linux-tdep.c (ppc_linux_init_abi): Register
- IN_SOLIB_CALL_TRAMPOLINE and SKIP_TRAMPOLINE_CODE methods here,
- giving the same effect as the #definitions above.
-
-2003-05-29 Adam Fedor <fedor@gnu.org>
-
- * objc-lang.c (CONVERT_FUNCPTR): Remove macro
- (find_implementation_from_class): Replace it with the standard
- case i.e. do nothing.
-
-2003-05-29 Richard Henderson <rth@redhat.com>
-
- * alpha-linux-tdep.c (alpha_linux_sigtramp_offset_1): New.
- (alpha_linux_sigtramp_offset): Use it. Make static.
- (alpha_linux_sigcontext_addr): Handle __NR_rt_sigreturn;
- update for new frame model.
- * alpha-mdebug-tdep.c: New file.
- * alpha-osf1-tdep.c (alpha_call_dummy_address): Move from alpha-tdep.c.
- (alpha_osf1_init_abi): Install it.
- * alpha-tdep.c (PROC_*): Move to alpha-mdebug-tdep.c.
- (linked_proc_desc_table): Remove.
- (alpha_frame_past_sigtramp_frame): Remove.
- (alpha_dynamic_sigtramp_offset): Remove.
- (ALPHA_PROC_SIGTRAMP_MAGIC): Remove.
- (alpha_proc_desc_is_dyn_sigtramp): Remove.
- (alpha_set_proc_desc_is_dyn_sigtramp): Remove.
- (push_sigtramp_desc): Remove.
- (alpha_cannot_fetch_register): Use ALPHA_FP_REGNUM.
- (alpha_cannot_store_register): Likewise.
- (alpha_sigcontext_addr): Remove.
- (alpha_find_saved_regs): Remove.
- (alpha_frame_init_saved_regs): Remove.
- (alpha_init_frame_pc_first): Remove.
- (read_next_frame_reg): Remove.
- (alpha_frame_saved_pc): Remove.
- (alpha_saved_pc_after_call): Remove.
- (temp_proc_desc, temp_saved_regs): Remove.
- (alpha_about_to_return): Remove.
- (cached_proc_desc): Remove.
- (alpha_frame_chain): Remove.
- (alpha_print_extra_frame_info): Remove.
- (alpha_init_extra_frame_info): Remove.
- (alpha_frame_locals_address): Remove.
- (alpha_frame_args_address): Remove.
- (alpha_push_arguments): Use ALPHA_REGISTER_BYTES not sizeof CORE_ADDR.
- (alpha_push_dummy_frame): Remove.
- (alpha_pop_frame): Remove.
- (alpha_after_prologue): Rename from after_prologue; remove mdebug bits.
- (alpha_read_insn): New.
- (alpha_skip_prologue): Merge alpha_skip_prologue_internal; adjust
- for different insn encodings.
- (alpha_in_lenient_prologue): Remove.
- (struct alpha_sigtramp_unwind_cache): New.
- (alpha_sigtramp_frame_unwind_cache): New.
- (alpha_sigtramp_register_address): New.
- (alpha_sigtramp_frame_this_id): New.
- (alpha_sigtramp_frame_prev_register): New.
- (alpha_sigtramp_frame_unwind): New.
- (alpha_sigtramp_frame_p): New.
- (struct alpha_heuristic_unwind_cache): New.
- (alpha_heuristic_proc_start): Rename from heuristic_proc_start;
- don't count nop insns that occur between functions.
- (alpha_heuristic_frame_unwind_cache): New; incorporate much of
- heuristic_proc_desc, but without the mdebug wrapping.
- (alpha_heuristic_frame_this_id): New.
- (alpha_heuristic_frame_prev_register): New.
- (alpha_heuristic_frame_unwind): New.
- (alpha_heuristic_frame_p): New.
- (alpha_heuristic_frame_base_address): New.
- (alpha_heuristic_frame_base): New.
- (alpha_unwind_dummy_id): New.
- (alpha_unwind_pc): New.
- (alpha_gdbarch_init): Don't set skip_sigtramp_frame. Kill use of
- frame related deprecated initializations; install replacements.
- (alpha_dump_tdep): Remove.
- * alpha-tdep.h (struct gdbarch_tdep): Remove skip_sigtramp_frame.
- (alpha_read_insn, alpha_after_prologue,
- alpha_heuristic_frame_unwind_cache, alpha_heuristic_frame_this_id,
- alpha_heuristic_frame_prev_register,
- alpha_heuristic_frame_base_address, alpha_mdebug_init_abi): Declare.
- * config/alpha/alpha-linux.mt (TDEPFILES): Add alpha-mdebug-tdep.o.
- * config/alpha/tm-alpha.h (PRINT_EXTRA_FRAME_INFO): Remove.
- * config/alpha/tm-alphalinux.h (SIGTRAMP_START, SIGTRAMP_END): Remove.
-
-2003-05-29 Andrew Cagney <cagney@redhat.com>
-
- * gdb_assert.h (gdb_assert_fail): Provide different definitions
- dependant on the availability of ASSERT_FUNCTION.
- (ASSERT_FUNCTION): Do not define when there is no function name.
-
-2003-05-29 Kevin Buettner <kevinb@redhat.com>
-
- From Jimi X <jimix@watson.ibm.com>:
- * rs6000-tdep.c (skip_prologue): Improve support for 64-bit code.
-
-2003-05-28 Jim Blandy <jimb@redhat.com>
-
- * ppc-linux-nat.c (store_altivec_registers): Don't cast fourth
- argument to ptrace to int; the system headers should give it the
- right type, and pointers don't fit in ints on powerpc64-*-*.
-
-2003-05-28 H.J. Lu <hongjiu.lu@intel.com>
-
- * dwarf2read.c (process_die): Handle DW_TAG_try_block and
- DW_TAG_catch_block.
-
-2003-05-26 Elena Zannoni <ezannoni@redhat.com>
-
- * stabsread.c (dbx_lookup_type): Make static.
- (read_type): Ditto.
- (add_undefined_type): Ditto.
- * stabsread.h (dbx_lookup_type, read_type, add_undefined_type): Do
- not export.
-
-2003-05-26 Elena Zannoni <ezannoni@redhat.com>
-
- * hpread.c (hpread_has_name): Make static.
- (hpread_psymtab_to_symtab): Ditto.
- (file_exists): Ditto.
- (hpread_call_pxdb): Ditto.
- (hpread_pxdb_needed): Ditto.
- (hpread_quick_traverse): Ditto.
- (hpread_get_header): Ditto.
- (hpread_get_lntt): Ditto.
- (hpread_get_slt): Ditto.
- (class_of): Ditto.
-
-2003-05-25 Andreas Schwab <schwab@suse.de>
-
- * m68k-tdep.c (m68k_gdbarch_init): Set parm_boundary instead of
- stack_align and deprecated_extra_stack_alignment_needed.
- (m68k_stack_align): Delete.
-
- * m68k-tdep.c (m68k_register_raw_size): Remove cast.
- (m68k_register_virtual_size): Likewise.
- (altos_skip_prologue): Remove obsolete function.
- (isi_frame_num_args): Likewise.
- (news_frame_num_args): Likewise.
- (m68k_fix_call_dummy): Make static.
- (m68k_push_dummy_frame): Likewise.
- (m68k_pop_frame): Likewise.
- (m68k_skip_prologue): Likewise.
- (m68k_frame_init_saved_regs): Likewise.
- (m68k_saved_pc_after_call): Likewise.
- (m68k_get_longjmp_target): Make multi-arch.
- (m68k_gdbarch_init): Allocate and initialize gdbarch_tdep
- structure. Register m68k_get_longjmp_target if enabled.
- * m68k-tdep.h (struct gdbarch_tdep): Define.
- * config/m68k/tm-m68k.h: Don't include "regcache.h".
-
- * Makefile.in (config.status): Also depend on configure.tgt
- and configure.host.
- (m68klinux-tdep.o): Update dependencies.
- * configure.tgt (m68*-*-linux*): Set gdb_multi_arch to 1.
- * m68klinux-tdep.c (M68K_LINUX_JB_ELEMENT_SIZE): Define.
- (M68K_LINUX_JB_PC): Define.
- (m68k_linux_pc_in_sigtramp): Renamed from m68k_linux_in_sigtramp
- and take additional parameter.
- (m68k_linux_sigtramp_saved_pc): Update.
- (m68k_linux_init_abi): Set jb_pc and jb_elt_size. Register
- m68k_linux_pc_in_sigtramp, in_plt_section,
- find_solib_trampoline_target.
- * config/m68k/tm-linux.h: Don't include any tm headers.
- (START_INFERIOR_TRAPS_EXPECTED): Remove definition.
- (JB_ELEMENT_SIZE): Likewise.
- (JB_PC): Likewise.
- (GET_LONGJMP_TARGET): Likewise.
- (IN_SIGTRAMP): Likewise.
- (SVR4_SHARED_LIBS): Define this and include "solib.h".
-
-2003-05-25 Mark Kettenis <kettenis@gnu.org>
-
- * sparc-tdep.c (sparc32_do_push_arguments): New function.
- (sparc32_push_arguments): Re-implement by calling
- sparc32_do_push_arguments.
-
-2003-05-25 Mark Kettenis <kettenis@gnu.org>
-
- * sparc-tdep.c (SPARC_F0_REGNUM, SPARC_F1_REGNUM, SPARC_O0_REGNUM,
- SPARC_O1_REGNUM): New defines.
- (sparc32_extract_return_value): Rewrite to operate on a regcache.
- (sparc32_store_return_value): New function.
- (sparc_extract_struct_value_address): Rewrite to operate on a
- regcache.
- (sparc_gdbarch_init): Don't set
- deprecated_extract_struct_value_address. Set
- extract_struct_value_address instead. Don't set
- deprecated_extract_return_value and deprecated_store_return_value
- for 32-bit targets. Set extract_return_value and
- store_return_value instead.
- * config/sparc/tm-sparc.h (DEPRECATED_STORE_RETURN_VALUE,
- DEPRECATED_EXTRACT_RETURN_VALUE,
- DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Don't define these.
- (STORE_RETURN_VALUE, EXTRACT_RETURN_VALUE,
- EXTRACT_STRUCT_VALUE_ADDRESS): Define these instead.
- (sparc_store_return_value): Remove prototype.
- (sparc32_store_return_value): New prototype.
- (sparc32_extract_return_value, sparc_extract_struct_value_address):
- Adjust prototypes.
-
-2003-05-24 Mark Kettenis <kettenis@gnu.org>
-
- * sparcnbsd-tdep.c: Include "gdb_string.h".
-
-2003-05-23 Andrew Cagney <cagney@redhat.com>
-
- * p-valprint.c (pascal_val_print): Replace extract_address with
- the inline equivalent extract_unsigned_integer.
- * jv-valprint.c (java_value_print): Ditto.
- * ada-valprint.c (ada_val_print_1): Ditto.
- * ada-lang.h (EXTRACT_ADDRESS): Ditto.
-
-2003-05-23 Theodore A. Roth <troth@openavr.org>
-
- * blockframe.c (frameless_look_for_prologue): Remove unused
- after_prologue variable.
-
-2003-05-23 Mark Kettenis <kettenis@gnu.org>
-
- * blockframe.c (get_pc_function_start): Rewrite to avoid
- asignments in if-statements.
-
-2003-05-23 Raoul Gough <RaoulGough@yahoo.co.uk>
-
- Committed by Elena Zannoni <ezannoni@redhat.com>.
- * coffread.c(coff_symtab_read): Do relocate static symbols from PE
- files, don't relocate absolute symbols (and do use mst_abs).
-
-2003-05-23 Andrew Cagney <cagney@redhat.com>
-
- * objc-lang.c: Include "gdb_assert.h".
- (objc_op_print_tab): Use OP_NULL and PREC_NULL instead of 0.
- (CHECK, CHECK_FATAL, __CHECK_FUNCTION): Delete macros.
- (gdb_check, gdb_check_fatal): Delete functions.
- (read_objc_methlist_method): Replace CHECK and CHECK_FATAL with
- gdb_assert.
- (parse_selector, parse_method, find_methods, find_imps): Ditto.
- * Makefile.in (objc-lang.o): Update dependencies.
-
-2003-06-16 David Carlton <carlton@kealia.com>
-
- * symfile.h: Change formatting.
- * block.c (allocate_block): Rephrase comment.
- * block.h (BLOCK_GCC_COMPILED): Move definition.
- * cp-namespace.c: Include command.h instead of gdbcmd.h. Update
- comments, reorder functions.
- (lookup_symbol_file): Set symtab when looking for namespace
- symbols. Update call to lookup_possible_namespace_symbol.
- (initialize_namespace_blocks): Change comment.
- (get_namespace_objfile): Change objfile name.
- (cp_check_namespace_symbol): Extract body into
- check_namespace_symbol_block.
- (check_namespace_symbol_block): New.
- (lookup_namespace_symbol): Make static, rename from
- cp_lookup_symbol.
- (check_possible_namespace_symbols_loop): Update comment.
- (check_one_possible_namespace_symbol): Call
- check_namespace_symbol_block.
- (lookup_possible_namespace_symbol): Make static; rename from
- cp_lookup_possible_namespace_symbol.
- * cp-support.h: Update declarations.
- * Makefile.in (c-typeprint.o): Don't depend on gdb_assert_h.
- (cp-namespace.o): Depend on command_h, not gdbcmd_h.
- * c-typeprint.c: Don't include gdb_assert.h.
- (c_type_print_base): Delete assertion. Use TYPE_TAG_NAME.
- * dwarf2read.c: Delete double include of cp-support.h.
- (add_partial_symbol): Look at psym for static variables.
- (add_partial_namespace): Update call to
- cp_check_namespace_symbol.
- (locate_pdi_sibling): Update comment.
-
-2003-06-12 David Carlton <carlton@kealia.com>
-
- * dwarf2read.c (die_specification): New.
- (determine_prefix): Fix memory management.
- (read_structure_scope): Set prefix correctly if getting type via
- specification.
-
-2003-05-28 David Carlton <carlton@bactrian.org>
-
- * dwarf2read.c (add_partial_structure): When looking for a
- subprogram child, go sibling by sibling.
-
-2003-05-28 David Carlton <carlton@bactrian.org>
-
- * dwarf2read.c (determine_prefix): Handle anonymous
- classes/structures.
-
-2003-05-23 David Carlton <carlton@bactrian.org>
-
- * Makefile.in (cp-namespace.o): Depend on frame_h.
- * cp-support.h: Declare lookup_transparent_type_namespace,
- lookup_transparent_type_namespace_loop.
- * cp-namespace.c: Include frame.h.
- (lookup_transparent_type_namespace): New.
- (lookup_transparent_type_namespace_loop): New.
- * symtab.h: Declare lookup_transparent_type_aux.
- * symtab.c (lookup_transparent_type): Add FIXME, fork off code
- into lookup_transparent_type_aux, do backup strategy of trying to
- look in namespaces.
- (lookup_transparent_type_aux): New.
-
-2003-05-23 David Carlton <carlton@bactrian.org>
-
- * Merge with mainline; tag is carlton_dictionary-20030523-merge.
-
-2003-05-22 Ian Lance Taylor <ian@airs.com>
-
- * disasm.c (gdb_disassemble_info): Initialize disassemble_info
- with fprintf_filtered, not fprintf_unfiltered.
-
-2003-05-22 Andrew Cagney <cagney@redhat.com>
-
- * stack.c (frame_info): Inline extract_address, replacing it with
- extract_unsigned_integer.
- * findvar.c (unsigned_pointer_to_address): Ditto.
- * dwarf2loc.c (dwarf_expr_read_reg): Ditto.
- * dwarf2expr.c (dwarf2_read_address): Ditto.
- * frame.c (frame_pc_unwind): Update comment.
- * dummy-frame.c (deprecated_read_register_dummy): Update comment.
-
-2003-05-22 Jeff Johnston <jjohnstn@redhat.com>
-
- * infptrace.c (detach): Call print_sys_errmsg rather than
- perror_with_name to issue warning message when errno is non-zero
- after calling ptrace detach.
-
-2003-05-21 J. Brobecker <brobecker@gnat.com>
-
- * config/pa/tm-hppa.h: Delete some unused macros. Move some
- macro definitions from here...
- * hppa-tdep.c: ...to there.
-
-2003-05-20 Kevin Buettner <kevinb@redhat.com>
-
- * mips-nat.c (REGISTER_PTRACE_ADDR): Convert macro to function
- register_ptrace_addr(). Fix all callers.
-
-2003-05-21 Andreas Schwab <schwab@suse.de>
-
- * Makefile.in (m68k-tdep.o, m68klinux-tdep.o): Update
- dependencies.
- * m68k-tdep.c (m68k_gdbarch_init): Call gdbarch_init_osabi at the
- end.
- * m68klinux-tdep.c (m68k_linux_init_abi): New function.
- (_initialize_m68k_linux_tdep): New function.
- (m68k_linux_frame_saved_pc): Make static.
- (m68k_linux_extract_return_value): Likewise.
- (m68k_linux_store_return_value): Likewise.
- (m68k_linux_extract_struct_value_address): Likewise.
- * config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE):
- Remove.
- (DEPRECATED_STORE_RETURN_VALUE): Remove.
- (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Remove.
- (DEPRECATED_FRAME_SAVED_PC): Remove.
-
-2003-05-20 Kris Warkentin <kewarken@qnx.com>
-
- * nto-tdep.c (fetch_core_registers): Match gdb's idea of
- regset numbering rather than our own.
-
-2003-05-19 David Carlton <carlton@bactrian.org>
-
- * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/rtti*.
-
-2003-05-19 David Carlton <carlton@bactrian.org>
-
- Partial fix for PR c++/827.
- * cp-support.h: Include symtab.h.
- Declare cp_lookup_symbol_nonlocal, cp_lookup_symbol_namespace.
- * cp-namespace.c: Update contributors.
- (cp_lookup_symbol_nonlocal): New.
- (lookup_namespace_scope, cp_lookup_symbol_namespace)
- (lookup_symbol_file): Ditto.
- * c-lang.c (cplus_language_defn): Use cp_lookup_symbol_nonlocal.
- * block.h: Declare block_scope, block_using, block_global_block.
- * block.c (block_scope): New.
- (block_using, block_global_block): Ditto.
- * Makefile.in (cp_support_h): Depend on symtab_h.
- * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/namespace1.cc.
-
-2003-05-19 David Carlton <carlton@bactrian.org>
-
- * language.h (struct language_defn): Add 'la_value_of_this'
- and 'la_lookup_symbol_nonlocal' members.
- * symtab.h: Declare basic_lookup_symbol_nonlocal,
- lookup_symbol_static, lookup_symbol_global,
- lookup_symbol_aux_block.
- * symtab.c (lookup_symbol_aux): Call language hooks to determine
- if we should search fields of this and how to do static/global
- lookup.
- (lookup_symbol_aux_block): Make extern.
- (basic_lookup_symbol_nonlocal): New.
- (lookup_symbol_static, lookup_symbol_global): Ditto.
- * ada-lang.c (ada_language_defn): Set 'la_value_of_this' and
- 'la_lookup_symbol_nonlocal' members.
- * c-lang.c (c_language_defn, cplus_language_defn)
- (asm_language_defn, minimal_language_defn): Ditto.
- * jv-lang.c (java_language_defn): Ditto.
- * language.c (unknown_language_defn, auto_language_defn)
- (local_language_defn): Ditto.
- * m2-lang.c (m2_language_defn): Ditto.
- * objc-lang.c (objc_language_defn): Ditto.
- * scm-lang.c (scm_language_defn): Ditto.
- * f-lang.c (f_language_defn): Ditto, and include value.h as well.
- * p-lang.c (pascal_language_defn): Ditto for both.
- * Makefile.in (f-lang.o): Depend on value_h.
- (p-lang.o): Ditto.
-
-2003-05-19 David Carlton <carlton@bactrian.org>
-
- * block.h: Declare block_static_block.
- * block.c (block_static_block): New.
- * symtab.c (lookup_symbol_aux): Remove 'static_block' argument to
- lookup_symbol_aux_local, calling block_static_block instead.
- (lookup_symbol_aux_local): Delete 'static_block' argument.
-
-2003-05-19 David Carlton <carlton@bactrian.org>
-
- * symtab.c (lookup_symbol_aux): Delete #if 0 hunk.
-
-2003-05-19 Michal Ludvig <mludvig@suse.cz>
-
- * x86-64-tdep.c (x86_64_dwarf2gdb_regno_map): Fix
- register numbers mapping.
-
-2003-05-18 Adam Fedor <fedor@gnu.org>
-
- * symtab.c (completion_list_objc_symbol): New function.
- (make_symbol_completion_list): Use it to add ObjC symbols
- when looking though the list.
- (language_search_unquoted_string): New function.
- (make_file_symbol_completion_list): Use it.
-
-2003-05-18 Andreas Schwab <schwab@suse.de>
-
- * Makefile (m68klinux-nat.o, m68klinux-tdep.o): Update
- dependencies.
- * config/m68k/tm-linux.h (DEPRECATED_EXTRACT_RETURN_VALUE): Define
- as m68k_linux_extract_return_value.
- (DEPRECATED_STORE_RETURN_VALUE): Define as
- m68k_linux_store_return_value.
- (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS): Define as
- m68k_linux_extract_struct_value_address.
- * m68klinux-tdep.c (m68k_linux_sigtramp_saved_pc): Use
- get_next_frame, get_frame_base, get_frame_pc.
- (m68k_linux_frame_saved_pc): Use get_frame_base.
- (m68k_linux_extract_return_value): New function.
- (m68k_linux_store_return_value): New function.
- (m68k_linux_extract_struct_value_address): New function.
- * config/m68k/tm-m68k.h: Declare m68k_get_longjmp_target.
-
- * c-exp.y (typebase): Remove duplicate occurence of
- `SIGNED_KEYWORD LONG LONG'. Use builtin_type_long_long instead
- of lookup_signed_typename.
-
-2003-05-18 Mark Kettenis <kettenis@gnu.org>
-
- * dwarf2loc.c (find_location_expression): Change type of second
- argument to `size_t *'.
- (loclist_read_variable, loclist_tracepoint_var_ref): Use size_t
- for size variable.
-
-2003-05-18 David Carlton <carlton@bactrian.org>
-
- * symtab.c (lookup_symbol_aux): Rename 'mangled_name' argument to
- 'linkage_name'. Add comment.
- (lookup_symbol_aux_local): Rename 'mangled_name' argument to
- 'linkage_name'.
- (lookup_symbol_aux_block, lookup_symbol_aux_symtabs)
- (lookup_symbol_aux_psymtabs, lookup_symbol_aux_minsyms)
- (lookup_block_symbol): Ditto.
-
-2003-05-16 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_REGISTER_BYTES): Rename REGISTER_BYTES.
- * gdbarch.h, gdbarch.c: Re-generate.
- * arm-linux-tdep.c (arm_linux_extract_return_value): Delete reference.
- * TODO (REGISTER_BYTES): Delete reference.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init_32082): Update.
- (ns32k_gdbarch_init_32382): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * i386-linux-tdep.c (i386_linux_init_abi): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * sparc-tdep.c (sparc_pop_frame): Update.
- * rs6000-tdep.c (rs6000_pop_frame): Update.
- * remote.c (init_remote_state): Update.
- (remote_prepare_to_store): Update.
- * remote-vx.c (vx_prepare_to_store): Update.
- * remote-sds.c (sds_fetch_registers): Update.
- (sds_prepare_to_store): Update.
- * remote-array.c: Update.
- * regcache.c (init_legacy_regcache_descr): Update.
- (init_regcache_descr): Update.
- * mips-tdep.c (mips_eabi_extract_return_value): Update.
- (mips_o64_extract_return_value): Update.
- * irix5-nat.c (fetch_core_registers): Update.
- * irix4-nat.c (fetch_core_registers): Update.
- * i386-tdep.h: Update.
- * hppa-tdep.c (pa_do_registers_info): Update.
- (pa_do_strcat_registers_info): Update.
- * cris-tdep.c (cris_register_bytes_ok): Update.
- * config/nm-gnu.h (CHILD_PREPARE_TO_STORE): Update.
- * config/sparc/tm-sparc.h (DEPRECATED_REGISTER_BYTES): Update.
- * config/sparc/nm-sun4sol2.h (CHILD_PREPARE_TO_STORE): Update.
- * config/sparc/nm-sun4os4.h (CHILD_PREPARE_TO_STORE): Update.
- * config/sparc/nm-nbsd.h (CHILD_PREPARE_TO_STORE): Update.
- * config/sparc/tm-sp64.h (DEPRECATED_REGISTER_BYTES): Update.
- * config/s390/tm-s390.h (DEPRECATED_REGISTER_BYTES): Update.
- * config/pa/tm-hppa64.h (DEPRECATED_REGISTER_BYTES): Update.
- * config/mips/tm-mips.h (DEPRECATED_REGISTER_BYTES): Update.
- * config/mips/tm-irix6.h (DEPRECATED_REGISTER_BYTES): Update.
- * config/mips/tm-irix5.h (DEPRECATED_REGISTER_BYTES): Update.
- * config/m68k/tm-sun3.h (DEPRECATED_REGISTER_BYTES): Update.
- (REGISTER_BYTES_OK): Update.
- * config/m68k/nm-sun3.h (CHILD_PREPARE_TO_STORE): Update.
- * config/ia64/tm-ia64.h (DEPRECATED_REGISTER_BYTES): Update.
-
-2003-05-16 Ian Lance Taylor <ian@airs.com>
-
- * vax-tdep.c (INVALID_FLOAT, MAXLEN, NOPCODES): Don't define.
- (vax_print_insn, print_insn_arg): Remove static functions.
- (vax_gdbarch_init): Call set_gdbarch_print_insn with
- print_insn_vax from opcodes library.
- (_initialize_vax_tdep): Don't set deprecated_tm_print_insn.
-
-2003-05-15 Andrew Cagney <cagney@redhat.com>
-
- * arch-utils.h (legacy_breakpoint_from_pc): Delete declaration.
- * target.h (memory_breakpoint_from_pc): Delete declaration.
- * mem-break.c (memory_breakpoint_from_pc): Delete function.
- * arch-utils.c (legacy_breakpoint_from_pc): Delete function.
- * monitor.c (monitor_insert_breakpoint): Use
- gdbarch_breakpoint_from_pc instead of memory_breakpoint_from_pc.
- * gdbarch.sh (BREAKPOINT_FROM_PC): Do not provide a default.
- * gdbarch.h, gdbarch.c: Re-generate.
- * sparc-tdep.c (sparc_breakpoint_from_pc): New function.
- (sparc_gdbarch_init): Set breakpoint_from_pc to
- sparc_breakpoint_from_pc.
- * config/sparc/tm-sparc.h (BREAKPOINT): Delete macro.
- (BREAKPOINT_FROM_PC): Define.
- (sparc_breakpoint_from_pc): Declare.
- * hppa-tdep.c (hppa_breakpoint_from_pc): New function.
- * config/pa/tm-hppa.h (hppa_breakpoint_from_pc): Declare.
- (BREAKPOINT_FROM_PC): Define.
- (BREAKPOINT): Delete macro.
- * target.h: Update comment.
- * s390-tdep.c (s390_gdbarch_init): Update comments.
- * remote.c: Update comments.
- * remote-mips.c: Update comments.
- * proc-api.c (write_with_trace): Do not check for a breakpoint.
- * mem-break.c: Update comment.
- * ia64-tdep.c (IA64_BREAKPOINT): Rename BREAKPOINT.
- (ia64_memory_insert_breakpoint): Update.
- * config/sparc/tm-sparc.h: Update comment.
- * config/pa/tm-hppa64.h: Update comment.
- * rs6000-tdep.c (BIG_BREAKPOINT, LITTLE_BREAKPOINT): Delete macro.
- (rs6000_breakpoint_from_pc): Update.
- * mips-tdep.c (BIG_BREAKPOINT, LITTLE_BREAKPOINT): Delete macro.
- (PMON_BIG_BREAKPOINT, PMON_LITTLE_BREAKPOINT): Delete macro.
- (IDT_LITTLE_BREAKPOINT, IDT_LITTLE_BREAKPOINT): Delete macro.
- (MIPS16_LITTLE_BREAKPOINT, MIPS16_BIG_BREAKPOINT): Delete macro.
- (mips_breakpoint_from_pc): Update.
- (mips_dump_tdep): Update.
-
- * symtab.h (DEPRECATED_SYMBOL_MATCHES_NAME): Delete macro.
- * minsyms.c (lookup_minimal_symbol): Inline
- DEPRECATED_SYMBOL_MATCHES_NAME. Replace STREQ with strcmp.
-
- * c-lang.c (c_printstr): Delete "extern inspect_it" declaration.
- * p-valprint.c (pascal_object_print_value_fields): Ditto.
- * p-lang.c (pascal_printstr): Ditto.
- * objc-lang.c (objc_printstr): Ditto.
- * m2-lang.c (m2_printstr): Ditto.
- * jv-valprint.c (java_print_value_fields): Ditto.
- * f-lang.c (f_printstr): Ditto.
- * cp-valprint.c (cp_print_value_fields): Ditto. Include "valprint.h".
- * ada-valprint.c (inspect_it, repeat_count_threshold): Ditto, and
- for repeat_count_threshold.
- * Makefile.in (cp-valprint.o): Update dependencies.
-
-2003-05-15 Jeff Johnston <jjohnstn@redhat.com>
-
- * ia64-tdep.c: Increase max_skip_non_prologue_insns to 40.
- (examine_prologue): Support looking through leaf functions, knowing
- they start with mov r2,r12. Support skipping over indirect stores
- of the input registers. Upon hitting a non-nop branch instruction
- or predicated instruction, bail out by setting lim_pc to the current
- pc value in the loop. At the end, if the lim_pc value is still
- beyond our calculated value and we have trust_limit set,
- use the lim_pc value.
-
-2003-05-15 Andrew Cagney <cagney@redhat.com>
-
- * dummy-frame.h (deprecated_find_dummy_frame_regcache): Rename
- generic_find_dummy_frame.
- * dummy-frame.c (deprecated_find_dummy_frame_regcache): Update.
- (deprecated_generic_find_dummy_frame): Update.
- (deprecated_read_register_dummy): Update.
- * frame.c (deprecated_generic_get_saved_register): Update.
-
-2003-05-15 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_breakpoint_from_pc): New function.
- (avr_gdbarch_init): Set breakpoint_from_pc method.
-
-2003-05-15 Andrew Cagney <cagney@redhat.com>
-
- * regcache.c (build_regcache): Set deprecated_register_valid
- directly.
- (deprecated_grub_regcache_for_register_valid): Delete function.
- * regcache.h (deprecated_grub_regcache_for_register_valid): Delete
- declaration.
-
-2003-05-15 David Carlton <carlton@bactrian.org>
-
- Committed by Elena Zannoni <ezannoni@redhat.com>
- * symtab.c (lookup_symbol_aux): Delete calls to
- lookup_symbol_aux_minsyms.
- (lookup_symbol_aux_minsyms): Comment out function and
- prototype. Delete lookup by mangled name.
-
-2003-05-14 Kevin Buettner <kevinb@redhat.com>
-
- * dwarf2expr.c (new_dwarf_expr_context): Set ``stack_len'' to
- correctly indicate an empty stack and ``stack_allocated'' to the
- indicate the number of elements initially allocated.
- (dwarf_expr_grow_stack): Simplify method for computing new
- stack size. Don't loop infinitely if ``stack_len'' is zero.
- (execute_stack_op): Move ``ctx->in_reg'' initialization
- out of loop. Allow DW_OP_reg0 ... DW_OP_reg31 and DW_OP_regx to
- be used in conjuction with DW_OP_piece. Revise error message
- accordingly.
-
-2003-05-14 Theodore A. Roth <troth@openavr.org>
-
- * MAINTAINERS: Update my email address.
- * avr-tdep.c: Ditto.
-
-2003-05-14 Elena Zannoni <ezannoni@redhat.com>
-
- * symtab.h (enum domain_enum): Rename from namespace_enum.
- (UNDEF_DOMAIN, VAR_DOMAIN, STRUCT_DOMAIN, LABEL_DOMAIN,
- VARIABLES_DOMAIN, FUNCTIONS_DOMAIN, TYPES_DOMAIN, METHODS_DOMAIN):
- Rename from UNDEF_NAMESPACE, VAR_NAMESPACE, STRUCT_NAMESPACE,
- LABEL_NAMESPACE, VARIABLES_NAMESPACE, FUNCTIONS_NAMESPACE,
- TYPES_NAMESPACE, METHODS_NAMESPACE.
- (SYMBOL_NAMESPACE): Rename to SYMBOL_DOMAIN.
- (struct symbol, struct partial_symbol): Rename field
- 'namespace_enum namespace' to 'domain_enum domain'.
- (PSYMBOL_NAMESPACE): Rename to PSYMBOL_DOMAIN.
- Delete old define kludge for namespace.
-
- * ada-exp.y, ada-lang.c, ada-lang.h, alpha-tdep.c, arm-tdep.c,
- blockframe.c, c-exp.y, c-valprint.c, coffread.c, dbxread.c,
- dwarf2read.c, dwarfread.c, f-exp.y, gdbtypes.c, gdbtypes.h,
- gnu-v3-abi.c, hppa-tdep.c, hpread.c, jv-exp.y, jv-lang.c,
- language.c, linespec.c, m2-exp.y, m3-nat.c, mdebugread.c,
- mips-tdep.c, nlmread.c, objc-exp.y, objc-lang.c, objfiles.c,
- p-exp.y, p-valprint.c, parse.c, printcmd.c, scm-lang.c, source.c,
- stabsread.c, stack.c, symfile.c, symfile.h, symmisc.c, symtab.c,
- valops.c, values.c, xcoffread.c, xstormy16-tdep.c: Replace all
- occurrences of the above.
-
-2003-05-14 Ian Lance Taylor <ian@airs.com>
-
- * Makefile.in (install-only): Use $(SHELL) when running
- mkinstalldirs.
-
-2003-05-13 Ian Lance Taylor <ian@airs.com>
-
- * MAINTAINERS (write after approval): Add myself.
-
- * ser-pipe.c (_initialize_ser_pipe): Correct call to memset--swap
- second and third arguments.
- * ser-tcp.c (_initialize_ser_tcp): Likewise.
- * ser-unix.c (_initialize_ser_hardwire): Likewise.
-
-2003-05-13 Andrew Cagney <cagney@redhat.com>
-
- * defs.h (store_address): Delete declaration.
- findvar.c (store_address): Delete function.
- * arm-tdep.c (arm_push_dummy_call): Replace store_address with
- store_unsigned_integer.
- * xstormy16-tdep.c (xstormy16_address_to_pointer): Ditto.
- * v850-tdep.c (v850_push_arguments): Ditto.
- * sparc-tdep.c (sparc_get_saved_register): Ditto.
- * sh-tdep.c (sh64_get_saved_register): Ditto.
- * rs6000-tdep.c (rs6000_push_arguments): Ditto.
- * ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): Ditto.
- * mips-tdep.c (mips_eabi_push_arguments): Ditto.
- (mips_get_saved_register): Ditto.
- * ia64-tdep.c (ia64_get_saved_register): Ditto.
- (find_func_descr, ia64_push_arguments): Ditto.
- * i386-tdep.c (i386_push_arguments): Ditto.
- * hpux-thread.c (hpux_thread_fetch_registers): Ditto.
- * frv-tdep.c (frv_push_arguments): Ditto.
- * frame.c (legacy_saved_regs_prev_register): Ditto.
- (deprecated_generic_get_saved_register): Ditto.
- * findvar.c (unsigned_address_to_pointer): Ditto.
- * dwarf2read.c (dwarf2_const_value): Ditto.
- * arm-linux-tdep.c (arm_linux_push_arguments): Ditto.
- * alpha-tdep.c (alpha_push_arguments): Ditto.
-
-2003-05-12 J. Brobecker <brobecker@gnat.com>
-
- * NEWS: Mention that the hppa-hpux port has been partially
- multiarched (32bit ABIT only, so far).
-
-2003-05-11 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (mi-symbol-cmds.o): Rename mi-cmd-symbol.
- * config/djgpp/fnchange.lst: Rename include/xtensa-isa-internal.h,
- include/xtensa-isa.h, sim/testsuite/sim/arm/misaligned1.ms,
- sim/testsuite/sim/arm/misaligned2.ms, and
- sim/testsuite/sim/arm/misaligned3.ms.
- * disasm.h (struct ui_file): Add opaque struct declaration.
- * config/pa/tm-hppa64.h (struct type, struct frame_info): Ditto.
- * frame.h (struct ui_file): Ditto.
-
-2003-05-11 Mark Kettenis <kettenis@gnu.org>
-
- * value.h: Pretty print.
-
-2003-05-10 Mark Kettenis <kettenis@gnu.org>
-
- * config/i386/tm-linux.h (I386_GNULINUX_TARGET): Remove define.
-
-2003-05-08 Andrew Cagney <cagney@redhat.com>
-
- * regcache.h (max_register_size): Delete declaration.
- * regcache.c (max_register_size): Delete function.
- (struct regcache_descr): Delete field "max_register_size".
- (init_regcache_descr, init_legacy_regcache_descr): Assert that all
- registers fit in MAX_REGISTER_SIZE.
- (regcache_save): Replace max_register_size with MAX_REGISTER_SIZE.
- (regcache_restore, regcache_xfer_part, regcache_dump): Ditto.
- * thread-db.c: Replace max_register_size with MAX_REGISTER_SIZE.
- * sh-tdep.c, rom68k-rom.c, remote-sim.c, remote-mips.c: Ditto.
- * remote-e7000.c, monitor.c, mipsv4-nat.c, mips-nat.c: Ditto.
- * m68klinux-nat.c, lynx-nat.c, irix4-nat.c: Ditto.
- * hpux-thread.c, hppah-nat.c, hppab-nat.c, hppa-tdep.c: Ditto.
- * dve3900-rom.c, hppa-tdep.c: Ditto.
-
-2003-05-08 David Carlton <carlton@math.stanford.edu>
-
- * valops.c (push_word): Fix typo.
-
-2003-05-08 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Delete references to MAX_REGISTER_RAW_SIZE.
- * gdbarch.h: Re-generate.
- * defs.h (MAX_REGISTER_RAW_SIZE): Delete macro.
- (legacy_max_register_raw_size): Delete declaration.
- * regcache.c (legacy_max_register_raw_size): Delete function.
- * valops.c: Replace MAX_REGISTER_RAW_SIZE with MAX_REGISTER_SIZE.
- * target.c, stack.c, sparc-tdep.c, sh-tdep.c: Ditto.
- * rs6000-tdep.c, rs6000-nat.c, remote.c, remote-sim.c: Ditto.
- * remote-rdp.c, remote-array.c, regcache.c: Ditto.
- * ppc-linux-nat.c, monitor.c, mn10300-tdep.c: Ditto.
- * mips-tdep.c, mips-linux-tdep.c, m68klinux-nat.c: Ditto.
- * infptrace.c, ia64-tdep.c, i386-tdep.c, frame.c: Ditto.
- * findvar.c, dwarf2cfi.c: Ditto.
-
-2003-05-08 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (read_signed_register): New function, moved to here
- from "regcache.c".
- (read_signed_register_pid): Ditto.
- * regcache.c (read_signed_register_pid): Delete function, moved to
- "mips-tdep.c".
- (read_signed_register): Ditto.
- * regcache.h (read_signed_register): Delete declaration.
- (read_signed_register_pid): Delete declaration.
-
-2003-05-08 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Add comments on MAX_REGISTER_SIZE.
- * gdbarch.h: Re-generate.
- * defs.h (MAX_REGISTER_VIRTUAL_SIZE): Delete macro.
- (legacy_max_register_virtual_size): Delete declaration.
- * infcmd.c (default_print_registers_info): Use MAX_REGISTER_SIZE.
- * d10v-tdep.c (d10v_print_registers_info): Ditto.
- * tracepoint.c (memrange_sortmerge): Ditto.
- * sparc-tdep.c (sparc_print_registers): Ditto.
- * regcache.c (legacy_max_register_virtual_size): Delete function.
-
-2002-05-08 J. Brobecker <brobecker@gnat.com>
-
- * fork-child.c (escape_bang_in_quoted_argument): New function.
- (fork_inferior): Escape '!' characters in quoted arguments
- only when needed.
-
-2003-05-08 J. Brobecker <brobecker@gnat.com>
-
- * dwarf2read.c (set_cu_language): Set the language to "minimal" if
- the language of the CU is not currently supported by GDB.
-
-2003-05-08 J. Brobecker <brobecker@gnat.com>
-
- * defs.h (language): Add language_minimal enum value.
- * c-lang.c (minimal_language_defn): New language definition.
- (_initialize_c_language): Add the new minimal language to the list
- of languages known to GDB.
-
-2003-05-08 Kevin Buettner <kevinb@redhat.com>
-
- * frame.c (get_frame_type): Don't attempt to lazily initialize
- frame's unwinder for legacy frames.
-
-2003-05-07 Andrew Cagney <cagney@redhat.com>
-
- * ia64-tdep.c (ia64_remote_translate_xfer_address): Add "gdbarch"
- and "regcache" parameters.
- * avr-tdep.c (avr_remote_translate_xfer_address): Ditto.
-
-2003-05-07 Jeff Johnston <jjohnstn@redhat.com>
-
- * dwarf2read.c (dwarf_decode_lines): Only use output of
- check_cu_functions() when calling record_line(). Do not update
- the current address.
-
-2003-05-07 Andrew Cagney <cagney@redhat.com>
-
- * fork-child.c (startup_inferior): Delete #ifdef STARTUP_INFERIOR
- code.
-
-2003-05-07 Jim Blandy <jimb@redhat.com>
-
- Rename commands 'maint list symtabs' and 'maint list psymtabs' to
- 'maint info symtabs' and 'maint info psymtabs'.
- * symmisc.c (maintenance_info_symtabs, maintenance_info_psymtabs):
- Renamed from maintenance_list_symtabs and maintenance_list_psymtabs.
- * symtab.h (maintenance_info_symtabs, maintenance_info_psymtabs):
- Declarations updated.
- * maint.c (maintenance_list_command): Delete.
- (_initialize_maint_cmds): Update calls to add_cmd.
- * gdbcmd.h (maintenancelistlist): Delete declaration.
- * cli/cli-cmds.c (maintenancelistlist): Delete.
- (init_cmd_lists): Don't initialize it.
- * cli/cli-cmds.h (maintenancelistlist): Delete declaration.
-
-2003-05-07 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (remote_d10v_translate_xfer_address): Add
- "regcache".
- (d10v_print_registers_info): Update.
- (d10v_dmap_register, d10v_imap_register): Delete functions.
- (struct gdbarch_tdep): Add "regcache" parameter to "dmap_register"
- and "imap_register".
- (d10v_ts2_dmap_register, d10v_ts2_imap_register): Add "regcache".
- (d10v_ts3_dmap_register, d10v_ts3_imap_register): Add "regcache".
- * arch-utils.c (generic_remote_translate_xfer_address): Add
- "regcache" and "gdbarch" parameters.
- * gdbarch.sh (REMOTE_TRANSLATE_XFER_ADDRESS): Add "regcache"
- parameter. Change class to multi-arch.
- * gdbarch.h, gdbarch.c: Re-generate.
- * remote.c (remote_xfer_memory): Use
- gdbarch_remote_translate_xfer_address.
-
-2003-05-07 Jeff Johnston <jjohnstn@redhat.com>
-
- * infrun.c (prev_pc): Move declaration ahead of proceed().
- (proceed): Refresh prev_pc value before resuming.
- (stop_stepping): Remove code to refresh prev_pc.
-
-2003-05-06 Kris Warkentin <kewarken@qnx.com>
-
- * nto-tdep.c: Removed stray comment.
-
-2003-05-06 Kris Warkentin <kewarken@qnx.com>
-
- * i386-nto-tdep.c: Fix old K&R function definitions.
- * nto-tdep.c: Likewise and change stat.h include to gdb_stat.h.
- Also change add_show_from_set() call to add_setshow_cmd().
- * nto-tdep.h: Remove PARAMS and grep ^func ARI hits.
-
-2003-05-05 Andrew Cagney <cagney@redhat.com>
-
- * dummy-frame.c: Include "command.h" and "gdbcmd.h".
- (fprint_dummy_frames): New function.
- (maintenance_print_dummy_frames): New function.
- (_initialize_dummy_frame): Add command "maint print dummy-frames".
- * frame.c (fprint_frame_id): Make global.
- * frame.h (fprint_frame_id): Declare.
- * Makefile.in (dummy-frame.o): Update dependencies.
-
-2003-05-05 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_REGISTER_SIZE): Rename REGISTER_SIZE.
- (DEPRECATED_SIZEOF_CALL_DUMMY_WORDS): Rename
- SIZEOF_CALL_DUMMY_WORDS.
- (DEPRECATED_CALL_DUMMY_WORDS): Rename CALL_DUMMY_WORDS.
- (DEPRECATED_FIX_CALL_DUMMY): Rename FIX_CALL_DUMMY.
- (DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET): Rename
- CALL_DUMMY_BREAKPOINT_OFFSET.
- (DEPRECATED_CALL_DUMMY_START_OFFSET): Rename
- CALL_DUMMY_START_OFFSET.
- (DEPRECATED_CALL_DUMMY_LENGTH): Rename CALL_DUMMY_LENGTH.
- * gdbarch.h, gdbarch.c: Re-generate.
- * alpha-tdep.c, alphafbsd-tdep.c, arm-linux-tdep.c: Update.
- * arm-tdep.c, avr-tdep.c, breakpoint.c, cris-tdep.c: Update.
- * dummy-frame.c, dummy-frame.h, frv-tdep.c, gdbarch.c: Update.
- * gdbarch.h, gdbarch.sh, h8300-tdep.c, hppa-tdep.c: Update.
- * i386-tdep.c, ia64-tdep.c, infcall.c, inferior.h: Update.
- * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c: Update.
- * mips-tdep.c, mn10300-tdep.c, ns32k-tdep.c: Update.
- * rs6000-tdep.c, s390-tdep.c, sh-tdep.c, sol-thread.c: Update.
- * sparc-tdep.c, target.c, v850-tdep.c, valops.c: Update.
- * vax-tdep.c, x86-64-tdep.c, xstormy16-tdep.c: Update.
- * config/ia64/tm-ia64.h, config/m68k/tm-vx68.h: Update.
- * config/mips/tm-mips.h, config/pa/nm-hppah.h: Update.
- * config/pa/tm-hppa.h, config/pa/tm-hppa64.h: Update.
- * config/s390/tm-s390.h, config/sparc/tm-sp64.h: Update.
- * config/sparc/tm-sparc.h: Update.
-
-2003-05-05 Kris Warkentin <kewarken@qnx.com>
-
- * configure.tgt: Add i[3456]86-*-nto*.
- * i386-nto-tdep.c: New file. i386 specific support for QNX Neutrino.
- * nto-tdep.c: New file. Neutrino target support routines.
- * nto-tdep.h: New file. Neutrino target header.
- * config/tm-qnxnto.h: New file.
- * config/i386/i386nto.mt: New file.
- * config/i386/tm-i386nto.h: New file.
-
-2003-05-04 Andrew Cagney <cagney@redhat.com>
-
- * gdbthread.h (save_infrun_state): Drop prev_func_name parameter.
- (load_infrun_state): Ditto.
- (struct thread_info): Drop "prev_func_name" field.
- * thread.c (load_infrun_state): Update.
- (save_infrun_state): Update.
- * infrun.c (prev_func_name): Delete variable.
- (init_wait_for_inferior): Do not clear prev_func_name.
- (stop_stepping, keep_going, context_switch): Do not swap
- prev_func_name.
- (handle_inferior_event, check_sigtramp2): Use pc_in_sigtramp
- instead of PC_IN_SIGTRAMP.
-
-2003-05-04 Andrew Cagney <cagney@redhat.com>
-
- * sentinel-frame.c (sentinel_frame_prev_register): Replace
- REGISTER_BYTE with register_offset_hack.
- * regcache.c (init_regcache_descr): When REGISTER_BYTE_P, check
- that REGISTER_BYTE is consistent with the regcache.
- * gdbarch.sh (REGISTER_BYTE): Add a predicate.
- * gdbarch.h, gdbarch.c: Regenerate.
-
-2003-05-04 Mark Kettenis <kettenis@gnu.org>
-
- * i387-tdep.c (fxsave_offset): Add entries for %xmm8-%xmm15.
- (FXSAVE_ADDR, i387_supply_fxsave): Add support for %xmm8-%xmm15.
-
- * i386-linux-nat.c (supply_gregset): Remove unnecessary casts.
-
-2003-05-03 J. Brobecker <brobecker@gnat.com>
-
- From Thierry Schneider <tpschneider1@yahoo.com>
- * Makfile.in (SUBDIR_MI_OBS): Add dependency on mi-cmd-symbol.o.
- (SUBDIR_MI_SRCS): Add mi-cmd-symbol.c.
- (mi-cmd-symbol.o): Add rule.
-
-2003-05-03 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (PUSH_DUMMY_CODE): New architecture method, add
- comments noteing that it replaces the old FIX_CALL_DUMMY code.
- * gdbarch.h, gdbarch.c: Re-generate.
- * d10v-tdep.c (d10v_push_dummy_code): New function.
- (d10v_gdbarch_init): Set push_dummy_code.
- * infcall.c (legacy_push_dummy_code): New function.
- (generic_push_dummy_code): New function.
- (push_dummy_code): New function.
- (call_function_by_hand): Call push_dummy_code. Pass bp_addr,
- instead of dummy_addr, to push_dummy_call. Move call to
- generic_save_call_dummy_addr to outside of CALL_DUMMY_LOCATION
- switch.
- * sparc-tdep.c (sparc_gdbarch_init): Mention push_dummy_code.
-
-2003-05-03 Andrew Cagney <cagney@redhat.com>
-
- * disasm.h (print_insn): Declare.
- * disasm.c (init_gdb_disassemble_info): New function.
- (gdb_disassembly): Call init_gdb_disassemble_info.
- (gdb_print_insn): New function.
- * v850-tdep.c (v850_scan_prologue): Call gdb_print_insn, instead
- of TARGET_PRINT_INSN. Send debug info to "gdb_stdlog".
- * mcore-tdep.c: Include "disasm.h"
- (mcore_dump_insn): Call gdb_print_insn, instead of TARGET_PRINT_INSN.
- * d10v-tdep.c: Include "disasm.h".
- (display_trace): Call gdb_print_insn, instead of print_insn.
- (print_insn): Delete function.
- * printcmd.c: Include "disasm.h".
- (print_insn): Delete function.
- (print_formatted): Call gdb_print_insn, instead of print_insn.
- * Makefile.in (printcmd.o): Update dependencies.
- (mcore-tdep.o, d10v-tdep.o): Ditto.
-
-2003-05-02 Andrew Cagney <cagney@redhat.com>
-
- * std-regs.c (value_of_builtin_frame_pc_reg): Delete #ifdef
- PC_REGNUM, re-indent.
- * stack.c (frame_info): Use "pc" for the name of get_frame_pc when
- PC_REGNUM isn't set.
-
- * gdbarch.sh (REGISTER_SIZE, REGISTER_BYTES): Make optional.
- * gdbarch.h, gdbarch.c: Re-generate.
- * d10v-tdep.c (d10v_gdbarch_init): Do not set register_size,
- register_virtual_size, pc_regnum, or register_bytes.
- (D10V_PC_REGNUM): Rename _PC_REGNUM.
- (d10v_register_type): Use D10V_PC_REGNUM.
- (d10v_print_registers_info, d10v_read_pc): Ditto.
- (d10v_write_pc, d10v_eva_prepare_to_trace): Ditto.
- (d10v_unwind_pc, d10v_frame_prev_register): Ditto.
-
-2003-05-02 David Carlton <carlton@bactrian.org>
-
- * objfiles.c (allocate_objfile): For anonymous objfiles, allocate
- the name with mstrsave.
-
-2003-05-02 Elena Zannoni <ezannoni@redhat.com>
-
- * charset.c (GDB_DEFAULT_TARGET_CHARSET,
- GDB_DEFAULT_HOST_CHARSET): Move to earlier in the file.
- (host_charset_name, target_charset_name): New vars for use by
- set/show commands.
- (host_charset_enum, target_charset_enum): New enums for set/show
- commands.
- (set_charset_sfunc, set_host_charset_sfunc,
- set_target_charset_sfunc): New functions.
- (set_host_charset, set_target_charset): Make static.
- (list_charsets, set_host_charset_command,
- set_target_charset_command): Delete functions.
- (show_charset_command): Rewrite as....
- (show_charset): Hook this up with the set/show command mechanism.
- (_initialize_charset): Change names of charsets to match the
- set/show enums. Use host_charset_name and target_charset_name.
- Use set/show mechanism for charset, host-charset, target-charset
- commands. Do not make 'show host-charset' and 'show
- target-charset' be aliases of 'show charset'.
-
- * charset.h (set_host_charset, set_target_charset): Don't export,
- they are not used outside the file.
-
-2003-05-01 Andrew Cagney <cagney@redhat.com>
-
- * disasm.c (gdb_disassemble_from_exec): Delete global variable.
- (gdb_disassembly): Make "di" non static, always initialize and
- cleanup. Always use dis_asm_read_memory.
- (gdb_dis_asm_read_memory): Delete function.
-
-2003-05-01 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (d10v_frame_align): Replace d10v_stack_align.
- (d10v_gdbarch_init): Set frame_align instead of stack_align.
-
-2003-05-16 David Carlton <carlton@bactrian.org>
-
- * dwarf2read.c (read_comp_unit): Separate code out into
- read_die_and_children and read_die_and_siblings.
- (read_die_and_children): New.
- (read_die_and_siblings): New.
- (read_full_die): Add HAS_CHILDREN argument.
- struct die_info: Delete HAS_CHILDREN, NEXT members; add CHILD,
- SIBLING, PARENT members.
- (psymtab_to_symtab_1): Use new members of struct die_info.
- (process_die, read_file_scope, read_func_scope)
- (read_lexical_block_scope, read_structure_scope, read_enumeration)
- (read_array_type, read_common_block, read_namespace)
- (read_subroutine_type, read_die_and_children, free_die_list)
- (dump_die, dump_die_list): Ditto.
- (read_namespace): Separate code out into namespace_name.
- (namespace_name): New.
- (typename_concat): New.
+ * arm-tdep.c (arm_gdbarch_init): Ditto.
+ * i386-nto-tdep.c (i386nto_init_abi): Add comment.
+
+2004-01-17 J. Brobecker <brobecker@gnat.com>
+
+ * dwarf2read.c (dwarf2_non_const_array_bound_ignored_complaint):
+ Delete, no longer used.
+ (read_subrange_type): New function, mostly extracted from
+ read_array_type().
+ (read_array_type): Replace extracted code by call to
+ read_subrange_type().
+ (dwarf2_get_attr_constant_value): New function.
+ (scan_partial_symbols): Add handling for DW_TAG_subrange_type.
+ (add_partial_symbol): Likewise.
+ (process_die): Likewise.
+ (new_symbol): Likewise.
+ (read_type_die): Likewise.
+
+2004-01-16 Andrew Cagney <cagney@redhat.com>
+
+ * symfile.c: Update copyright year.
+ (compare_symbols): Delete unused function.
+ * stabsread.c: Update copyright year.
+ (lrs_general_complaint): Delete unused function.
+ (ref_search_value): Ditto.
+ (get_substring): Delete declaration.
+ * sh64-tdep.c: Update copyright year.
+ (sh64_get_gdb_regnum): Delete unused function.
+ * dwarf2read.c (dwarf2_unsupported_at_frame_base_complaint):
+ Delete unused function.
+
+2004-01-17 Mark Kettenis <kettenis@gnu.org>
+
+ * defs.h (gdb_osabi): Add GDB_OSABI_OPENBSD_ELF.
+ * osabi.c (gdb_osabi_names): Add "OpenBSD ELF".
+
+2004-01-16 Andrew Cagney <cagney@redhat.com>
+
+ Changes from Peter Schauer.
+ * rs6000-tdep.c: Update copyright year.
+ (rs6000_push_dummy_call): Update the stack pointer before
+ accessing the corresponding stack region.
+ * rs6000-nat.c: Update copyright year.
+ (set_host_arch): Set "info.abfd" to "exec_bfd".
+
+2004-01-15 Mark Kettenis <kettenis@gnu.org>
+
+ * blockframe.c: Update copyright year.
+ (inside_entry_func): Don't treat a zero PC specially.
+
+2004-01-14 Elena Zannoni <ezannoni@redhat.com>
+
+ * gcore.c (gcore_copy_callback): Use paddr_d to print size
+ variable.
+ (gcore_create_callback): Ditto. Skip any memory segment that has
+ no permissions set.
+
+2004-01-14 David Carlton <carlton@kealia.com>
+
+ Change symbols for C++ nested types to contain the fully qualified
+ name, if possible. (At least in the DWARF-2 case.) Partial fix
+ for PR's c++/57, c++/488, c++/539, c++/573, c++/609, c++/832,
+ c++/895.
+ * c-exp.y (qualified_type): Handle types nested within classes.
+ * cp-namespace.c: Update comments.
+ (cp_set_block_scope): Delete #if 0.
+ (cp_lookup_nested_type): Handle types nested within classes.
+ * dwarf2read.c: (scan_partial_symbols): Call add_partial_structure
+ when appropriate.
+ (add_partial_symbol): Add the name of the enclosing namespace to
+ types.
+ (pdi_needs_namespace): New.
+ (add_partial_namespace): Tweak comment.
+ (add_partial_structure): New.
+ (psymtab_to_symtab_1): Initialize processing_current_prefix
+ here...
+ (process_die): instead of here.
+ (read_structure_scope): Try to figure out the name of the class or
+ namespace that the structure might be defined within.
+ (read_enumeration): Generate fully-qualified names, if possible.
+ (read_namespace): Don't set name to NULL.
+ (die_specification): New.
+ (new_symbol): Generate fully-qualified names for types.
+ (read_type_die): Determine appropriate prefix.
(determine_prefix): New.
- (read_type_die): Set prefix appropriately.
+ (typename_concat): New.
(class_name): New.
-
-2003-05-09 David Carlton <carlton@bactrian.org>
-
- * linespec.c (examine_compound_token): Handled classes nested
- within classes, not just classes nested within namespaces.
-
-2003-05-07 David Carlton <carlton@bactrian.org>
-
- * valops.c (value_aggregate_elt): Add 'noside' argument.
- (value_struct_elt_for_reference): Add 'block', 'noside'
- arguments. Call value_maybe_namespace_elt.
- (value_namespace_elt): Add 'noside' argument. Break out code into
+ * valops.c (value_aggregate_elt): Pass NOSIDE to
+ value_struct_elt_for_reference.
+ (value_struct_elt_for_reference): Make static, add NOSIDE
+ parameter, call value_maybe_namespace_elt as a last resort.
+ (value_namespace_elt): Break out code into
value_maybe_namespace_elt.
- (value_maybe_namespace_elt): New. Handle types.
- * value.h: Update declaration for value_aggregate_elt.
- * eval.c (evaluate_subexp_standard): Pass 'noside' to
- value_aggregate_elt.
- * c-exp.y: Added 'qualified_type'.
- (yylex): Comment out nested type stuff.
-
-2003-05-02 David Carlton <carlton@bactrian.org>
-
- * minsyms.c: Delete declarations for lookup_minimal_symbol_linkage
- and lookup_minimal_symbol_natural.
- * linespec.c (decode_variable): Call
- lookup_minimal_symbol_linkage_or_natural instead of
- lookup_minimal_symbol.
- (decode_dollar): Ditto.
-
-2003-05-02 David Carlton <carlton@bactrian.org>
-
- * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/rtti files.
-
-2003-04-30 David Carlton <carlton@bactrian.org>
-
- * cp-namespace.c (get_namespace_objfile): Copy the namespace
- objfile's name.
-
- * block.h (ALL_BLOCK_SYMBOLS): Move here from dictionary.h.
- * dictionary.c: Sync up with mainline version I just posted.
- Specifically, update some commments, and:
- (dict_create_hashed): Fiddle with nsyms updating.
- (dict_create_linear): Ditto.
- (dict_lookup): Delete.
- (iterator_next_hashed): Delete FIXME comment.
- (iter_name_first_hashed): Replace 'sym' by 'sym != NULL'.
- (iter_name_next_hashed): Replate 'next' by 'next != NULL'.
- * dictionary.h: Sync up with mainline version I just posted: add
- inclusion guards, delete declaration of dict_lookup, delete
- ALL_BLOCK_SYMBOLs.
-
- * Merge with mainline; tag is carlton_dictionary-20030430-merge.
-
-2003-04-30 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (deprecated_tm_print_insn_info): Rename
- "tm_print_insn_info".
- (TARGET_PRINT_INSN_INFO): Delete macro.
- (dis_asm_read_memory): Delete function declaration.
- (dis_asm_memory_error, dis_asm_print_address): Ditto.
- (tm_print_insn_info): Delete variable definition.
- (_initialize_gdbarch): Do not initialize "tm_print_insn_info".
- * gdbarch.h, gdbarch.c: Re-generate.
- * d10v-tdep.c (display_trace): Replace "tm_print_insn_info" with
- "deprecated_tm_print_insn_info".
- * mcore-tdep.c (mcore_dump_insn): Ditto.
- * mips-tdep.c (mips_gdbarch_init): Ditto.
- * sparc-tdep.c (_initialize_sparc_tdep): Ditto.
- * v850-tdep.c (v850_scan_prologue, v850_gdbarch_init): Ditto.
- * ia64-tdep.c (_initialize_ia64_tdep): Ditto.
- * printcmd.c (print_insn): Use "deprecated_tm_print_insn_info"
- instead of TARGET_PRINT_INSN_INFO, add comment.
- * s390-tdep.c (s390_get_frame_info): Instead of
- "dis_asm_read_memory", use "deprecated_tm_print_insn_info".
- (s390_check_function_end, s390_is_sigreturn): Ditto.
- * corefile.c (dis_asm_read_memory): Move to "disasm.c".
- (dis_asm_memory_error, dis_asm_print_address): Ditto.
- * disasm.c: Include "gdbcore.h".
- (_initialize_disasm): New function, initialize
- "deprecated_tm_print_insn_info".
- (deprecated_tm_print_insn_info): New variable.
- (dis_asm_read_memory): Moved from "corefile.c", made static.
- (dis_asm_print_address, dis_asm_memory_error): Ditto.
- * Makefile.in (disasm.o): Update dependencies.
-
-2003-04-30 Andrew Cagney <cagney@redhat.com>
-
- * sparc-tdep.c (SPARC_HAS_FPU): When multi-arch, define as 1.
-
-2003-04-29 Adam Fedor <fedor@gnu.org>
-
- * eval.c (evaluate_subexp_standard): Handle ObjC ops.
- * infcall.c (find_function_addr): Make non-static.
- * infcall.h (find_function_addr): Declare.
- * Makefile.in (eval.o): Update dependencies.
-
-2003-04-28 Adam Fedor <fedor@gnu.org>
-
- * symtab.c (symbol_find_demangled_name): Check for and demangle
- ObjC symbols.
- (symbol_init_demangled_name): Init for language_objc as well.
-
-2003-04-28 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_TARGET_READ_FP): Replace TARGET_READ_FP.
- (DEPRECATED_FP_REGNUM): Replace FP_REGNUM.
- * gdbarch.h, gdbarch.c: Re-generate.
- * infcall.c (call_function_by_hand): Use DEPRECATED_FP_REGNUM,
- DEPRECATED_TARGET_READ_FP, or "sp" to create the dummy frame ID.
- * inferior.h (deprecated_read_fp): Rename read_fp.
- (generic_target_read_fp): Delete declaration.
- * regcache.c (generic_target_read_fp): Delete function.
- (deprecated_read_fp): Replace read_fp, use
- DEPRECATED_TARGET_READ_FP or DEPRECATED_FP_REGNUM.
- * d10v-tdep.c (d10v_read_fp): Delete function.
- (d10v_gdbarch_init): Do not set deprecated_read_fp.
-
- * sparc-tdep.c (sparc_gdbarch_init): Do not set
- deprecated_target_read_fp to generic_target_read_fp.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
-
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Set
- deprecated_fp_regnum.
- * x86-64-tdep.c (x86_64_init_abi): Ditto.
- * vax-tdep.c (vax_gdbarch_init): Ditto.
- * v850-tdep.c (v850_gdbarch_init): Ditto.
- * sparc-tdep.c (sparc_gdbarch_init): Ditto.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
- * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
- * mcore-tdep.c (mcore_gdbarch_init): Ditto.
- * m68k-tdep.c (m68k_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * i386-tdep.c (i386_gdbarch_init): Ditto.
- * hppa-tdep.c (hppa_gdbarch_init): Ditto.
- * h8300-tdep.c (h8300_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
- * avr-tdep.c (avr_gdbarch_init): Ditto.
- * arm-tdep.c (arm_gdbarch_init): Ditto.
- * alpha-tdep.c (alpha_gdbarch_init): Ditto.
-
- * x86-64-tdep.c (x86_64_init_abi): Set deprecated_target_read_fp.
- * v850-tdep.c (v850_gdbarch_init): Ditto.
- * sparc-tdep.c (sparc_gdbarch_init): Ditto.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
- * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
- * mips-tdep.c (mips_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * hppa-tdep.c (hppa_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
- * avr-tdep.c (avr_gdbarch_init): Ditto.
- * arm-tdep.c (arm_gdbarch_init): Ditto.
-
- * vax-tdep.c (vax_frame_init_saved_regs): Replace FP_REGNUM with
- DEPRECATED_FP_REGNUM.
- (vax_push_dummy_frame, vax_pop_frame): Ditto.
- * std-regs.c (value_of_builtin_frame_fp_reg): Ditto.
- * sparc-tdep.c (sparc_init_extra_frame_info): Ditto.
- (sparc_push_dummy_frame, sparc64_read_fp): Ditto.
- (sparc32_register_virtual_type): Ditto.
- * sh-tdep.c (sh64_frame_chain): Ditto.
- (sh64_get_saved_register, sh64_pop_frame): Ditto.
- (sh_nofp_frame_init_saved_regs): Ditto.
- (sh64_nofp_frame_init_saved_regs): Ditto.
- (sh_fp_frame_init_saved_regs): Ditto.
- * remote-mips.c (mips_wait, mips_fetch_registers): Ditto.
- * remote-e7000.c (fetch_regs_from_dump): Ditto.
- * procfs.c (procfs_fetch_registers): Ditto.
- (procfs_store_registers): Ditto.
- * ns32knbsd-nat.c (fetch_inferior_registers): Ditto.
- (store_inferior_registers, fetch_core_registers): Ditto.
- (fetch_kcore_registers, clear_regs): Ditto.
- * ns32k-tdep.c (ns32k_frame_init_saved_regs): Ditto.
- (ns32k_push_dummy_frame, ns32k_pop_frame): Ditto.
- * nlm/i386.h (DEPRECATED_FP_REGNUM): Ditto.
- * nlm/i386.c (do_status): Ditto.
- * mipsv4-nat.c (supply_gregset): Ditto.
- * mips-tdep.c: Ditto for comments.
- * mips-nat.c (fetch_inferior_registers): Ditto.
- (store_inferior_registers, fetch_core_registers): Ditto.
- * m68k-tdep.c (m68k_push_dummy_frame): Ditto.
- (m68k_pop_frame, m68k_frame_init_saved_regs): Ditto.
- * i386-tdep.c (i386_frame_init_saved_regs): Ditto.
- (i386_do_pop_frame, i386_register_type): Ditto.
- * hppa-tdep.c (hppa_frame_chain): Ditto.
- (hppa_push_dummy_frame, find_dummy_frame_regs): Ditto.
- (hppa_pop_frame, hppa_read_fp): Ditto.
- (skip_prologue_hard_way, hppa_frame_find_saved_regs): Ditto.
- * cris-tdep.c (cris_examine, cris_pop_frame): Ditto.
- * config/vax/nm-vax.h (REGISTER_U_ADDR): Ditto.
- * config/sparc/tm-sparc.h (DEPRECATED_FP_REGNUM): Ditto.
- * config/sparc/tm-sp64.h (DEPRECATED_FP_REGNUM): Ditto.
- * config/s390/tm-s390.h (DEPRECATED_FP_REGNUM): Ditto.
- * config/pa/tm-hppa64.h (DEPRECATED_FP_REGNUM): Ditto.
- * config/ia64/tm-ia64.h (DEPRECATED_FP_REGNUM): Ditto.
- * blockframe.c: Ditto for comments.
- * arch-utils.h: Ditto for comments.
- * arch-utils.c (legacy_virtual_frame_pointer): Ditto.
- * alphanbsd-tdep.c (fetch_core_registers): Ditto.
- * alphabsd-nat.c (fetch_inferior_registers): Ditto.
- * alpha-tdep.h: Ditto for comments.
- * alpha-tdep.c (alpha_cannot_fetch_register): Ditto.
- (alpha_cannot_store_register): Ditto.
- (alpha_push_dummy_frame): Ditto.
- * alpha-nat.c (supply_gregset): Ditto.
-
- * config/sparc/tm-sp64.h (DEPRECATED_TARGET_READ_FP): Update.
- * config/pa/tm-hppa64.h (DEPRECATED_TARGET_READ_FP): Update.
- * config/sparc/tm-sparc.h: Update comment.
-
- * hppa-tdep.c (hppa_init_extra_frame_info): Use
- deprecated_read_fp instead of TARGET_READ_FP.
- (hppa_init_extra_frame_info, hppa_frame_chain): Ditto.
- (hppa_push_dummy_frame, hppa_read_fp): Ditto.
- * sparc-tdep.c (sparc_init_extra_frame_info): Use
- deprecated_read_fp instead of read_fp.
- * s390-tdep.c (s390_push_arguments): Ditto.
- * ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * frame.h: Ditto in comments.
- * frame.c (legacy_get_prev_frame): Ditto.
- * dummy-frame.c (dummy_frame_this_id): Ditto.
- * arm-tdep.c (arm_init_extra_frame_info): Ditto.
-
-2003-04-28 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (deprecated_tm_print_insn): Rename tm_print_insn.
- * gdbarch.h, gdbarch.c: Re-generate.
- * xstormy16-tdep.c (_initialize_xstormy16_tdep): Update.
- * vax-tdep.c (_initialize_vax_tdep): Update.
- * v850-tdep.c (_initialize_v850_tdep): Update.
- * sparc-tdep.c (_initialize_sparc_tdep): Update.
- * s390-tdep.c (_initialize_s390_tdep): Update.
- * ns32k-tdep.c (_initialize_ns32k_tdep): Update.
- * mn10300-tdep.c (_initialize_mn10300_tdep): Update.
- * mips-tdep.c (_initialize_mips_tdep): Update.
- * mcore-tdep.c (_initialize_mcore_tdep): Update.
- * m68k-tdep.c (_initialize_m68k_tdep): Update.
- * ia64-tdep.c (_initialize_ia64_tdep): Update.
- * hppa-tdep.c (_initialize_hppa_tdep): Update.
- * h8300-tdep.c (_initialize_h8300_tdep): Update.
- * frv-tdep.c (_initialize_frv_tdep): Update.
- * cris-tdep.c (cris_delayed_get_disassembler): Update.
- (_initialize_cris_tdep): Update.
- * arch-utils.c (legacy_print_insn): Update.
- * alpha-tdep.c (_initialize_alpha_tdep): Update.
-
-2003-04-26 Adam Fedor <fedor@gnu.org>
-
- * linespec.c (decode_objc): New function to decode ObjC calls
- (decode_line_1): Check for ObjC calls (using decode_objc)
- * Makefile (linespec.o): Update dependencies.
-
-2003-04-26 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.h (struct breakpoint_ops): New.
- (struct breakpoint): Add ops member.
-
- * breakpoint.c (print_bp_stop_message, print_one_breakpoint)
- (mention): Use new breakpoint ops member.
- (set_raw_breakpoint): Initialize ops field to NULL.
- (print_exception_catchpoint, print_one_exception_catchpoint)
- (print_mention_exception_catchpoint, handle_gnu_v3_exceptions): New.
- (gnu_v3_exception_catchpoint_ops): New.
- (catch_exception_command_1): Call handle_gnu_v3_exceptions.
-
-2003-04-25 Adam Fedor <fedor@gnu.org>
-
- * Makefile.in (COMMON_OBS): Add objc-lang.o
-
-2003-04-25 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (print_insn): Delete function.
- (display_trace): Use TARGET_PRINT_INSN.
- (_initialize_d10v_tdep): Do not set tm_print_insn.
- (d10v_gdbarch_init): Set print_insn.
-
-2003-04-25 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (d10v_extract_return_value): Delete call to printf.
- (_initialize_d10v_tdep): Use add_setshow_boolean_cmd.
- (d10v_frame_unwind_cache): Use FRAME_OBSTACK_CALLOC.
- (NR_DMAP_REGS, A0_REGNUM): Delete, replaced by ...
- (nr_dmap_regs, a0_regnum): ... new functions.
- (d10v_print_registers_info): Use a0_regnum, use register_size.
- (d10v_register_byte): Delete function.
- (d10v_register_raw_size): Delete function.
- (d10v_register_type): Use a0_regnum.
- (d10v_print_registers_info): Use a0_regnum.
- (D10V_SP_REGNUM): Rename _SP_REGNUM, replace it and SP_REGNUM.
- (d10v_gdbarch_init): Do not set register_byte or
- register_raw_size, use D10V_SP_REGNUM to set sp_regnum.
- (d10v_pointer_to_address): Use extract_unsigned_integer instead of
- extract_address.
- (trace_command): Use XCALLOC.
- (print_insn): Delete reference to tm_print_insn.
- (saved_regs_unwinder): Use store_unsigned_integer instead of
- store_address.
- * frame.h (FRAME_OBSTACK_CALLOC): Define
-
-2003-04-25 David Carlton <carlton@bactrian.org>
-
- * config/djgpp/fnchange.lst: Add testsuite/gdb.c++/maint.exp.
-
-2003-04-24 Adam Fedor <fedor@gnu.org>
-
- * objc-lang.c: Include "valprint.h"
- * Makefile.in (objc-lang.o): Update dependencies.
-
-2003-04-24 Adam Fedor <fedor@gnu.org>
-
- * objc-lang.c (FETCH_ARGUMENT, CONVERT_FUNCPTR): Remove
- architecture dependant compilation and mark as unimplemented
- (until they get put in the gdbarch vector).
+ (value_maybe_namespace_elt): New.
-2003-04-23 David Carlton <carlton@bactrian.org>
+2004-01-12 Andrew Cagney <cagney@redhat.com>
- * cp-support.c (cp_find_first_component): Accept 'operator' in
- more locations.
+ * mips-tdep.c (mips_convert_register_p): Handle both raw and
+ cooked floating-point registers.
+ (mips_gdbarch_init): Set convert_register_p, register_to_value,
+ and value_to_register.
-2003-04-23 Andrew Cagney <cagney@redhat.com>
+2004-01-13 Andrew Cagney <cagney@redhat.com>
- * infcall.c (call_function_by_hand): Eliminate redundant
- indentation. Move "saved_async" and "old_cleanups" to where they
- are needed.
-
-2003-04-23 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): Eliminate the variables "rc"
- and "buffer". Move the "name" code to where it is needed.
-
-2003-04-23 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): Move variables "start_sp",
- "dummy", "sizeof_dummy1" and "dummy1" and corresponding dummy call
- code to ON_STACK switch branch.
-
-2003-04-23 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): Make declaration of "i",
- "sal", "bpt" and "old_sp" more local to their use. Delete #if
- lint.
-
-2003-04-23 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): Delete variable
- "n_method_args". Localize "param_type"'s declaration to the loop
- that it is used. Reinstate code assigning to said variable -
- deleted on 2002-06-14. Rationalize calls to value_args_coerce.
- Rationalize code using "param_type".
-
-2003-04-22 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c (call_function_by_hand): Use new variable "bp_addr" to
- compute the breakpoint address. Only call FIX_CALL_DUMMY when
- ON_STACK. Eliminate the variable "addr". Do not pass "real_pc"
- to DEPRECATED_PUSH_RETURN_ADDRESS.
-
-2003-04-22 Kevin Buettner <kevinb@redhat.com>
-
- * dwarf2loc.c (dwarf2_evaluate_loc_desc): Invoke DWARF2_REG_TO_REGNUM
- on the DWARF2 register number prior to fetching a register.
-
-2003-04-22 J. Brobecker <brobecker@gnat.com>
-
- * config/pa/tm-hppa.h (SOFT_FLOAT): Delete this macro.
- Update all the tests using SOFT_FLOAT considering the fact that
- this macro was always set to 0.
- * config/pa/tm-hppa64.h: Update all the tests using SOFT_FLOAT
- considering the fact that this macro was always set to 0.
- * hppa-tdep.h (hppa_store_return_value): Likewise.
- (hppa_extract_return_value): Likewise.
-
-2003-04-22 J. Brobecker <brobecker@gnat.com>
-
- * config/pa/tm-hppa.h: Remove obsolete code, was used by
- the hppa-pro target only.
-
-2003-04-21 J. Brobecker <brobecker@gnat.com>
-
- Ongoing multi-arch conversion effort for HP/UX:
- * config/pa/tm-hppa.h: Move all macro that are no longer
- defined now that GDB_MULTI_ARCH is now set to 1 from here...
- * config/pa/tm-hppa64.h: ... to here (hppa64 is not multiarch'ed yet).
-
-2003-04-21 J. Brobecker <brobecker@gnat.com>
-
- * config/pa/tm-hppa.h: Obsolete a section that was only used
- for hppa-pro.
-
-2003-04-21 J. Brobecker <brobecker@gnat.com>
-
- Ongoing multi-arch conversion for HP/UX.
- * config/pa/tm-hppa.h (GDB_MULTI_ARCH): Set to 1. Do not define
- if already defined (allows hppa64 to stay non-multiarched for now).
- * config/pa/tm-hppa64.h (GDB_MULTI_ARCH): Define.
-
-2003-04-21 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (frame_id_eq): Fail when the code_addr's do not match.
-
-2003-04-21 Andrew Cagney <cagney@redhat.com>
-
- * i386-tdep.c (i386_gdbarch_init): Replace "mmx_num_regs" with
- "i386_num_mmx_regs".
-
-2003-04-21 Andrew Cagney <cagney@redhat.com>
-
- * infcall.c: New file.
- * infcall.h: New file.
- * valarith.c: Include "infcall.h".
- * scm-lang.c, objc-lang.cm, hppa-tdep.c, gcore.c: Ditto.
- * eval.c, ada-valprint.c, ada-lang.c: Ditto.
- * Makefile.in (valarith.o, scm-lang.o): Update dependencies.
- (objc-lang.o, hppa-tdep.o, gcore.o): Update dependencies.
- (eval.o, ada-valprint.o, ada-lang.o): Update dependencies.
- (SFILES): Add "infcall.c"
- (COMMON_OBS): Add "infcall.o".
- (infcall.o): Specify dependencies.
- * value.h (call_function_by_hand): Delete declaration.
- * inferior.h (run_stack_dummy): Delete declaration.
- * infcmd.c (breakpoint_auto_delete_contents): Move to "infcall.c".
- (run_stack_dummy): Move to "infcall.c", merged into
- call_function_by_hand.
- * valops.c (call_function_by_hand): Moved to "infcall.c".
- (find_function_addr, value_arg_coerce): Ditto.
- (unwindonsignal_p, coerce_float_to_double): Ditto.
- (_initialize_valops): Move "set/show coerce-float-to-double", and
- "set/show unwindonsignal" commands to "infcall.c".
- * v850-tdep.c, target.h: Update comments.
- * sparc-tdep.c (sparc_fix_call_dummy): Update comments.
- * sh-tdep.c (sh_init_extra_frame_info): Update comments.
- (sh64_init_extra_frame_info): Update comments.
- * mn10300-tdep.c: Update comments.
- * mcore-tdep.c (mcore_init_extra_frame_info): Update comments.
- * config/sparc/tm-sparc.h: Update comments.
- * breakpoint.h: Update comments.
- * avr-tdep.c (avr_init_extra_frame_info): Update comments.
- * arm-tdep.c: Update comment.
-
-2003-04-19 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_num_register_names): New variable.
- (i386_num_mmx_regs): Renamed from mmx_num_regs.
- (MM0_REGNUM): Remove redundant parentheses in define.
- (i386_mmx_regnum_p): Use i386_mmx_regnum instead of mmx_num_regs.
- (i386_fp_regnum_p, i386_fpc_regnum_p, i386_sse_regnum_p,
- i386_mxcsr_regnum_p): Remove redundant parentheses.
- (i386_register_name): Use i386_num_register_names.
-
- * i386-tdep.c (i386_extract_return_value,
- i386_store_return_value): Correct check for availability of
- floating-point registers.
-
- * i386-tdep.c (i386_frame_num_args): Remove function.
- (i386_gdbarch_init): Set frame_num_args to frame_num_args_unknown.
-
- * i386-tdep.c (i386_mmx_regnum_to_fp_regnum): Renamed from
- mmx_regnum_to_fp_regnum. Adjust all callers.
-
- * i386-tdep.c (i386_get_longjmp_target): Use
- TYPE_LENGTH(builtin_type_void_func_ptr) instead of TARGET_PTR_BIT
- and TARGET_CHAR_BIT. Use extract_typed_address instead of
- extract_address.
-
-2003-04-19 Mark Kettenis <kettenis@gnu.org>
-
- * core-regset.c: Update comments to reflect reality. Re-order
- includes.
- (fetch_core_registers): Use switch instead of if. Remove
- redundant prototype.
-
-2003-04-18 Jim Blandy <jimb@redhat.com>
-
- * s390-tdep.c (s390_frame_align): New function.
- (s390_gdbarch_init): Register it with the gdbarch object.
-
-2003-04-17 Richard Henderson <rth@redhat.com>
-
- * remote.c (minitelnet): Don't redeclare escape_count, echo_check.
-
-2003-04-17 Michael Snyder <msnyder@redhat.com>
- Karen Bennet <bennet@redhat.com>
-
- Committed by Elena Zannoni <ezannoni@redhat.com>
- * gdb_gcore.sh: New script to create a core dump of a process.
-
-2003-04-17 Elena Zannoni <ezannoni@redhat.com>
-
- * values.c (value_being_returned): Don't fetch the return
- value if the return type is void.
-
-2003-04-17 Jeff Johnston <jjohnstn@redhat.com>
-
- * thread-db.c: Reindented.
-
-2003-04-17 Jeff Johnston <jjohnstn@redhat.com>
-
- * gdb_indent.sh: Recognize td_thrhandle_t, td_event_msg_t,
- td_thr_events_t, td_notify_t, td_thr_iter_f, and td_thrinfo_t
- as types.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2003-04-16 Kevin Buettner <kevinb@redhat.com>
-
- * rs6000-tdep.c (rs6000_gdbarch_init): For the SysV ABI, set
- the size of ``long double'' to 16, instead of 8.
-
-2003-04-30 David Carlton <carlton@bactrian.org>
-
- * Makefile.in (cp-namespace.o): Update dependencies.
- (cp-support.o): Ditto.
- * cp-support.h: Declare maint_cplus_cmd_list.
- * cp-namespace.c: Move variables namespace_block,
- possible_namespace_block, namespace_objfile here from
- cp-support.c.
- Move functions initialize_namespace_blocks, get_namespace_block,
- get_possible_namespace_block, free_namespace_blocks,
- check_one_possible_namespace_symbol,
- check_possible_namespace_symbols_loop, maintenance_print_namespace
- here from cp-support.c.
- Include objfiles.h, gdbtypes.h, dictionary.h, gdbcmd.h.
- * cp-namespace.c (_initialize_cp_namespace): New.
- (maintenance_cplus_namespace): Rename from
- maintenance_print_namespace.
- * cp-support.c (cp_find_first_component): Fix typo in comment.
- (_initialize_cp_support): Don't add 'maint print
- namespace'.
- Make maint_cplus_cmd_list extern.
- Prune includes.
-
-2003-04-18 David Carlton <carlton@bactrian.org>
-
- * mdebugread.c (parse_symbol): Move up declaration of 'iter'.
- * dwarf2read.c (add_partial_namespace): Move up declaration of
- 'full_name'.
- * cp-support.c (cp_find_first_component): Accept 'operator' in
- more locations.
-
-2003-04-16 David Carlton <carlton@bactrian.org>
-
- * Merge with mainline; tag is carlton_dictionary-20030416-merge.
-
-2003-04-16 Mark Kettenis <kettenis@gnu.org>
-
- * i386-linux-nat.c: Add some whitespace to make things more
- readable.
- (fetch_register, store_register, fetch_inferior_registers,
- store_inferior_registers): Get rid of assignment in if-statement.
- (store_register): Fix typo in error message.
-
-2003-04-16 Andrew Cagney <cagney@redhat.com>
-
- * utils.c (xmmalloc): Always allocate something, matches
- libiberty/xmalloc's semantics.
- (xmrealloc, xmcalloc): Ditto.
-
-2003-04-16 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_prev_frame): Do not initialize "unwind" or "type",
- update comments.
- (get_frame_type): Initialize unwind and type when needed.
- (get_frame_id, frame_register_unwind): Ditto.
-
-2003-04-16 Andrew Cagney <cagney@redhat.com>
-
- * NEWS: Mention that sparclet-*-* and sparclite-*-* have been made
- obsolete.
- * sparc-tdep.c: Obsolete SPARCLET and SPARCLITE code.
- * sparcl-stub.c: Obsolete file.
- * config/sparc/tm-sparclet.h: Obsolete file.
- * sparclet-stub.c: Obsolete file.
- * sparclet-rom.c: Obsolete file.
- * sparcl-tdep.c: Obsolete file.
- * config/sparc/tm-sparclite.h: Obsolete file.
- * config/sparc/sparclite.mt: Obsolete file.
- * config/sparc/sparclet.mt: Obsolete file.
- * configure.tgt: Make sparclet-*-*, sparclite-*-*, and
- sparc86x-*-* obsolete.
-
-2003-04-15 David Carlton <carlton@math.stanford.edu>
-
- * Makefile.in (SFILES): Add cp-namespace.c.
- (COMMON_OBS): Add cp-namespace.o.
- (block.o): Depend on gdb_obstack_h and cp_support_h.
- (buildsym.o): Depend on cp_support_h.
- (cp-namespace.o): New.
- (cp-support.o): Depend on gdb_string_h, demangle_h, gdb_assert_h,
- gdb_obstack_h, symtab_h, symfile_h, and gdbcmd_h.
- (dwarf2read.o): Depend on cp_support_h.
- * jv-lang.c (get_java_class_symtab): Set BLOCK_NAMESPACE.
- * dwarf2read.c (process_die): Set processing_has_namespace_info,
- processing_current_namespace.
- (read_namespace): Update processing_current_namespace; check for
- anonymous namespaces.
- (dwarf2_name): New function.
- (dwarf2_extension): Ditto.
- * cp-support.h: Update copyright, contributors.
- Add inclusion guards.
- Add opaque declaration for structs obstack, block, symbol.
- (struct using_direct): New struct.
- Add declarations for cp_find_first_component,
- cp_entire_prefix_len, processing_has_namespace_info,
- processing_current_namespace, cp_is_anonymous,
- cp_add_using_directive, cp_initialize_namespace,
- cp_finalize_namespace, cp_set_block_scope,
- cp_scan_for_anonymous_namespaces.
- * cp-namespace.c: New file.
- * cp-support.c: Update copyright.
- Include ctype.h, gdb_assert.h, gdbcmd.h.
- New variable maint_cplus_cmd_list.
- (cp_find_first_component): New function.
- (cp_entire_prefix_len, maint_cplus_command)
- (first_component_command, _initialize_cp_support): Ditto.
- * buildsym.c: Include cp-support.h.
- New variable using_list.
- (add_symbol_to_list): Check for anonymous namespaces.
- (finish_block): Set block's scope.
- (start_symtab): Initialize C++ namespace support.
- (end_symtab): Finalize C++ namespace support.
- * block.h: Add opaque declarations for structs
- block_namespace_info, using_direct, and obstack.
- Add declarations for block_set_scope and block_set_using.
- (struct block): Add 'language_specific' member.
- (BLOCK_NAMESPACE): New macro.
- * block.c: Include gdb_obstack.h and cp-support.h.
- (struct block_namespace_info): New struct.
- (block_set_scope): New function.
- (block_set_using, block_initialize_namespace): Ditto.
-
-2003-04-14 Kevin Buettner <kevinb@redhat.com>
-
- * solib-svr4.c (svr4_have_link_map_offsets): New function.
- (locate_base): Return early if there aren't any link map offsets.
- (svr4_solib_create_inferior_hook): Warn if shared library support
- is unavailable.
-
-2003-04-14 David Carlton <carlton@math.stanford.edu>
-
- * symtab.c (symbol_set_names): Add prefix when storing Java names
- in hash table. Fix for PR java/1039.
-
-2003-04-14 David Carlton <carlton@math.stanford.edu>
-
- * symtab.c (symbol_set_names): Rename 'name' arg to
- 'linkage_name', and 'tmpname' variable to 'linkage_name_copy'.
- * symtab.h: Change 'name' argument in declaration of
- symbol_set_names to 'linkage_name'.
- (SYMBOL_SET_NAMES): Change 'name' argument to 'linkage_name'.
-
-2003-04-14 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_read_sp): Do not apply ADDR_BITS_REMOVE,
- return the fully sign-extended register value.
- (get_frame_pointer): Ditto.
- (mips_pop_frame): Initialize "proc_desc" after checking for a
- dummy frame.
-
-2003-04-14 Andrew Cagney <cagney@redhat.com>
-
- * mips-tdep.c (mips_push_dummy_frame): Delete function.
- (MASK, PUSH_FP_REGNUM, GEN_REG_SAVE_MASK): Delete macros.
- (FLOAT_REG_SAVE_MASK, FLOAT_SINGLE_REG_SAVE_MASK): Delete macro.
- (mips_push_register): Delete function.
- (mips_dump_tdep): Delete references to GEN_REG_SAVE_MASK and
- PUSH_FP_REGNUM.
-
-2003-04-14 Jim Blandy <jimb@redhat.com>
-
- * symmisc.c: #include "gdb_regex.h".
- (maintenance_list_symtabs, maintenance_list_psymtabs): New
- functions.
- * maint.c (maintenance_list_command): New function.
- (_initialize_maint_cmds): Register the above as commands.
- * symtab.h (maintenance_list_symtabs,
- maintenance_list_psymtabs): New declarations.
- * cli/cli-cmds.c (maintenancelistlist): New variable.
- (init_cmd_lists): Initialize it.
- * cli/cli-cmds.h (maintenancelistlist): New declaration.
- * gdbcmd.h (maintenancelistlist): New declaration.
- * Makefile.in (symmisc.o): Update dependencies.
-
-2003-04-14 Elena Zannoni <ezannoni@redhat.com>
-
- * s390-nat.c: Include asm/types.h for addr_t.
-
-2003-04-14 Corinna Vinschen <vinschen@redhat.com>
-
- * cp-valprint.c (cp_print_class_method): Call unpack_pointer() with
- actually incoming type.
-
-2003-04-13 Andrew Cagney <cagney@redhat.com>
-
- * ppc-linux-tdep.c: Use get_frame_base, get_frame_pc,
- get_next_frame and get_frame_saved_regs.
-
-2003-04-13 Andrew Cagney <cagney@redhat.com>
-
- * reggroups.c (default_register_reggroup_p): Use NUM_REGS instead
- of gdbarch_num_regs.
-
-2003-04-13 Andrew Cagney <cagney@redhat.com>
-
- * frame.h: Mention what replaced what in "struct frame_info".
- * hppa-hpux-tdep.c: Use get_frame_base, get_frame_pc and
- deprecated_update_frame_base_hack and
- deprecated_update_frame_pc_hack.
- * hppa-tdep.c: Ditto.
-
-2003-04-13 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2expr.h (struct dwarf_expr_context): Remove extra arguments
- to read_reg and update its comment. Remove regnum member.
- * dwarf2expr.c (execute_stack_op): Remove memaddr and expr_lval.
- Don't call read_reg when setting in_reg. Call read_reg to get
- the frame base if it's in a register. Return the register number
- on the stack instead of in the context. Remove extra arguments
- to read_reg.
- * dwarf2loc.c (dwarf_expr_read_reg): Remove extra arguments.
- (dwarf2_evaluate_loc_desc): Call value_from_register. Expect
- the register number on the expression stack.
- (needs_frame_read_reg): Remove extra arguments.
-
-2003-04-13 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2expr.c (dwarf2_read_address): Renamed from read_address;
- made non-static.
- (execute_stack_op): All callers updated.
- * dwarf2expr.h: Add prototype for dwarf2_read_address.
- * dwarf2loc.c (find_location_expression): New function.
- (dwarf_expr_frame_base): Call it.
- (dwarf2_evaluate_loc_desc): Handle 0-length location expressions.
- (dwarf2_tracepoint_var_ref): New function, broken out from
- locexpr_tracepoint_var_ref.
- (locexpr_tracepoint_var_ref): Call dwarf2_tracepoint_var_ref.
- Make static.
- (loclist_read_variable, loclist_read_needs_frame): New functions.
- (loclist_describe_location, loclist_tracepoint_var_ref): New
- functions.
- (dwarf2_loclist_funcs): New struct location_funcs.
- * dwarf2loc.h (struct dwarf2_loclist_baton): New type.
- (struct dwarf2_locexpr_baton): Add comments.
- (dwarf2_loclist_funcs): New extern.
- * dwarf2read.c (struct comp_unit_head): Remove DIE member, add
- base_address and base_known.
- (dwarf_loc_buffer): New variable.
- (struct dwarf2_pinfo): Add dwarf_loc_buffer and dwarf_loc_size.
- (DWARF_LOC_BUFFER, DWARF_LOC_SIZE): New macros.
- (dwarf2_has_info): Initialize dwarf_loc_offset.
- (dwarf2_build_psymtabs): Read in .debug_loc.
- (dwarf2_build_psymtabs_hard): Use DWARF_LOC_BUFFER and
- DWARF_LOC_SIZE.
- (psymtab_to_symtab_1): Likewise. Move base address calculation
- here, from...
- (dwarf2_get_pc_bounds): ... here. Use the base address from
- cu_header.
- (dwarf2_symbol_mark_computed): Handle location lists.
-
-2003-04-13 Daniel Jacobowitz <drow@mvista.com>
-
- * minsyms.c (install_minimal_symbols): Only switch to gnu-v3 mode
- if the linkage name demangled successfully.
-
-2003-04-13 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c (att_flavour, intel_flavour, valid_flavours,
- disassmbly_flavour): Removed.
-
- * x86-64-tdep.c (gdb_print_insn_x86_64): Removed.
-
-2003-04-13 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c (x86_64_breakpoint_from_pc): Removed.
-
-2003-04-12 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (struct frame_info): Move definition from here ...
- * frame.c (struct frame_info): ... to here.
-
-2003-04-12 Andrew Cagney <cagney@redhat.com>
-
- * gdbthread.h (save_infrun_state): Delete parameter
- "prev_func_start".
- (struct thread_info): Delete field "prev_func_start".
- (load_infrun_state): Ditto.
- * thread.c (load_infrun_state, save_infrun_state): Update.
- * infrun.c (prev_func_start): Delete variable.
- (context_switch, init_wait_for_inferior): Update.
- (stop_stepping, keep_going): Update.
-
-2003-04-12 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Add missing opaque declarations.
- * gdbarch.h: Regnerate.
- * symtab.h: Add missing opaque declarations.
- * value.h, target.h, symfile.h, stabsread.h: Ditto.
- * x86-64-tdep.h, xmodem.h, monitor.h, typeprint.h: Ditto.
- * srec.h, solib-svr4.h, source.h, inferior.h: Ditto.
- * ser-unix.h, serial.h, remote-utils.h, gdbcore.h: Ditto.
- * ppc-tdep.h, ocd.h, mips-tdep.h, gdbtypes.h: Ditto.
- * buildsym.h, builtin-regs.h, linespec.h, language.h: Ditto.
- * i387-tdep.h, gdbthread.h, event-top.h, gdb.h: Ditto.
- * dwarf2cfi.h, doublest.h, disasm.h, cp-abi.h: Ditto.
- * cli-out.h, c-lang.h, ax-gdb.h, arch-utils.h: Ditto.
- * ada-lang.h, config/nm-lynx.h, config/nm-linux.h: Ditto.
- * config/sparc/tm-sp64.h, config/rs6000/tm-rs6000.h: Ditto.
- * config/pa/tm-hppah.h, config/m68k/tm-delta68.h: Ditto.
- * cli/cli-setshow.h, cli/cli-script.h: Ditto.
-
-2003-04-11 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_frame_id): Return this frame's "id".
- (legacy_get_prev_frame): Set prev's frame ID code_addr to the
- function start.
- (legacy_saved_regs_this_id): Replace function body with
- internal-error.
- (deprecated_frame_xmalloc): Mark the frame ID as valid, use
- FRAME_OBSTACK_ZALLOC.
- (create_new_frame): Mark the frame ID as valid.
-
-2003-04-11 Alexandre Oliva <aoliva@redhat.com>
-
- * Makefile.in (libbfd_h): Added missing setting.
- * mips-tdep.c (mips_gdbarch_init): Set disassembler_options
- according to the selected ABI.
-
-2003-04-11 Jeff Johnston <jjohnstn@redhat.com>
-
- * gdb_indent.sh: Recognize pid_t and sigset_t as types.
-
-2003-04-11 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_SAVED_PC_AFTER_CALL): Deprecate
- SAVED_PC_AFTER_CALL.
- * gdbarch.h, gdbarch.c: Regenerate.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- (ia64_saved_pc_after_call): Update declaration.
- * i386ly-tdep.c (i386lynx_init_abi): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
- * ns32knbsd-nat.c (frame_num_args): Update.
- * ns32k-tdep.c (umax_frame_num_args): Update.
- * mips-tdep.c (mips_init_frame_pc_first): Update.
- * infrun.c (step_over_function): Update.
- * i386-linux-tdep.c (skip_hurd_resolver): Update.
- * i386-interix-tdep.c (i386_interix_back_one_frame): Update.
- * config/sparc/tm-sparc.h (DEPRECATED_SAVED_PC_AFTER_CALL): Update.
- (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
- * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
- * config/pa/tm-hppa.h (DEPRECATED_SAVED_PC_AFTER_CALL): Update.
- * arm-linux-tdep.c (skip_hurd_resolver): Update.
- * arch-utils.c (init_frame_pc_default): Update.
- * alpha-tdep.c (alpha_init_frame_pc_first): Update.
- * x86-64-tdep.h (x86_64_linux_saved_pc_after_call): Update
- declaration.
-
-2003-04-11 Andrew Cagney <cagney@redhat.com>
-
- * i387-tdep.c: Update copyright.
- (i387_to_double): Delete function.
- (double_to_i387): Delete function.
-
-2003-04-10 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (d10v_frame_this_id): Set the code addr to the
- frame's function's address. Simplify.
- (d10v_frame_unwind_cache): Check that the frame's function is
- non-zero.
-
-2003-04-10 Jim Blandy <jimb@redhat.com>
-
- * s390-tdep.c (s390_gdbarch_init): Put back accidentally deleted
- call to set_gdbarch_deprecated_push_arguments.
-
-2003-04-10 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (fprint_frame_id): New function.
- (fprint_frame_type, fprint_frame): New function.
- (frame_pc_unwind, frame_func_unwind): Add/update trace code.
- (create_sentinel_frame, get_frame_id): Ditto.
- (frame_id_p, frame_id_eq): Ditto.
- (frame_id_inner, create_new_frame): Ditto.
- (legacy_get_prev_frame, get_prev_frame): Ditto.
- (deprecated_update_frame_pc_hack): Ditto.
- (frame_register_unwind): Ditto.
- (deprecated_update_frame_base_hack): Ditto.
-
-2003-04-10 Corinna Vinschen <vinschen@redhat.com>
-
- * i386-cygwin-tdep.c (i386_cygwin_frame_chain): New function.
- (i386_cygwin_init_abi): Set i386_cygwin_frame_chain as new
- frame_chain function.
- * Makefile.in: Add dependencies due to above change.
-
-2003-04-10 Corinna Vinschen <vinschen@redhat.com>
-
- * blockframe.c (legacy_frame_chain_valid): Move call to
- DEPRECATED_FRAME_CHAIN_VALID before calls to inside_entry_func and
- inside_entry_file.
-
-2003-04-09 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (struct frame_id): Replace "pc" and "base" with
- "stack_addr" and "code_addr". Update comments.
- (frame_id_build): Update parameter names and comment.
- (struct frame_info): Replace "id_p" and "id" with "this_id".
- * dummy-frame.c (dummy_frame_this_id): Update.
- * breakpoint.c (print_one_breakpoint): Update.
- * frame.c (get_frame_id): Update.
- (get_frame_base, frame_id_build): Update.
- (create_sentinel_frame, legacy_get_prev_frame): Update.
- (deprecated_update_frame_base_hack): Update.
- (frame_id_p, frame_id_eq): Rework, return 0 when an invalid ID.
- (frame_id_inner): Ditto.
-
-2003-04-09 Andrew Cagney <cagney@redhat.com>
-
- * defs.h (gdb_print_host_address): Make "addr" parameter a
- pointer constant.
- * utils.c (gdb_print_host_address): Update.
-
-2003-04-09 Kevin Buettner <kevinb@redhat.com>
-
- * rs6000-tdep.c (frame_get_saved_regs): Don't assume that the
- register number for R0 is 0.
-
-2003-04-09 J. Brobecker <brobecker@gnat.com>
-
- * frame.h (struct gdbarch): Add opaque structure definition
- to avoid a compilation warning on LynxOS 4.0.
-
-2003-04-09 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (struct frame_info): Delete field "pc". Replace
- "pc_unwind_cache" and "pc_unwind_cache_p" with "prev_pc"
- structure.
- * frame.c (frame_pc_unwind): Update.
- (create_sentinel_frame): Do not set "pc".
- (get_prev_frame): Do not set "pc". Use frame_pc_unwind.
- (get_frame_pc): Call frame_pc_unwind.
- (deprecated_update_frame_pc_hack): Update.
- (create_new_frame): Use "pc" not "->pc".
-
-2003-04-09 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_frame_id): Eliminate code updating "frame".
- (legacy_get_prev_frame): Ditto.
- (get_frame_base): Return id.base directly.
- (deprecated_update_frame_base_hack): Update "id.base".
- * frame.h (struct frame_info): Delete field "frame".
-
-2003-04-09 Andrew Cagney <cagney@redhat.com>
-
- * NEWS: Mention that the "Sequent family" is obsolete.
- * configure.tgt: Obsolete i[3456]86-sequent-bsd*,
- i[3456]86-sequent-sysv4*, and i[3456]86-sequent-sysv*.
- * configure.host: Obsolete i[3456]86-sequent-bsd*,
- i[3456]86-sequent-sysv4*, and i[3456]86-sequent-sysv*.
- * config/i386/tm-ptx4.h: Obsolete file.
- * config/i386/tm-ptx.h: Obsolete file.
- * symm-tdep.c: Obsolete file.
- * config/i386/symmetry.mt: Obsolete file.
- * config/i386/tm-symmetry.h: Obsolete file.
- * symm-nat.c: Obsolete file.
- * config/i386/nm-symmetry.h: Obsolete file.
- * config/i386/xm-symmetry.h: Obsolete file.
- * config/i386/symmetry.mh: Obsolete file.
- * config/i386/nm-ptx4.h: Obsolete file.
- * config/i386/ptx4.mh: Obsolete file.
- * config/i386/ptx.mt: Obsolete file.
- * config/i386/ptx.mh: Obsolete file.
- * config/i386/xm-ptx4.h: Obsolete file.
- * config/i386/xm-ptx.h: Obsolete file.
-
-2003-04-09 Andrew Cagney <cagney@redhat.com>
-
- Obsolete mips*-*-mach3*.
- * NEWS: Mention that mips*-*-mach3* is obsolete.
- * m3-nat.c: Obsolete file.
- * config/nm-m3.h: Obsolete file.
- * config/mips/tm-mipsm3.h: Obsolete file.
- * config/mips/mipsm3.mt: Obsolete file.
- * config/mips/mipsm3.mh: Obsolete file.
- * config/mips/xm-mipsm3.h: Obsolete file.
- * mipsm3-nat.c: Obsolete file.
- * configure.host: Obsolete mips-dec-mach3*.
- * configure.tgt: Obsolete mips*-*-mach3*.
-
-2003-04-09 Andrew Cagney <cagney@redhat.com>
-
- * doublest.h: Update copyright.
- (deprecated_store_floating, deprecated_extract_floating): Rename
- store_floating and extract_floating. Update comments.
- * doublest.c: Update copyright.
- (extract_floating_by_length): Replace extract_floating.
- (store_floating_by_length): Replace store_floating.
- (deprecated_extract_floating): New function.
- (deprecated_store_floating): New function.
- (extract_typed_floating): Call extract_floating_by_length.
- (store_typed_floating): Call store_floating_by_length.
- * x86-64-tdep.c (x86_64_store_return_value): Update.
- * sh-tdep.c (sh3e_sh4_extract_return_value): Update.
- (sh64_extract_return_value): Update.
- (sh_sh4_register_convert_to_virtual): Update.
- (sh_sh64_register_convert_to_virtual): Update.
- (sh_sh4_register_convert_to_raw): Update.
- (sh_sh64_register_convert_to_raw): Update.
- * rs6000-tdep.c (rs6000_register_convert_to_virtual): Update.
- (rs6000_register_convert_to_raw): Update.
- * ia64-tdep.c (ia64_register_convert_to_virtual): Update.
- (ia64_register_convert_to_raw): Update.
- * config/i386/tm-symmetry.h (REGISTER_CONVERT_TO_RAW): Update.
- (REGISTER_CONVERT_TO_VIRTUAL): Update.
- * arm-linux-tdep.c (arm_linux_push_arguments): Update.
- * alpha-tdep.c (alpha_register_convert_to_virtual): Update.
- (alpha_register_convert_to_raw): Update.
-
-2003-04-08 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (SAVED_PC_AFTER_CALL): Add a predicate.
- * gdbarch.h, gdbarch.c: Re-generate.
- * d10v-tdep.c (d10v_saved_pc_after_call): Delete function.
- (d10v_gdbarch_init): Do not set saved_pc_after_call.
- * infrun.c (step_over_function): Call SAVED_PC_AFTER_CALL_P
- conditionally, use frame_pc_unwind as an alternative. Add
- comments.
- * arch-utils.c (init_frame_pc_default): Only call
- SAVED_PC_AFTER_CALL when available.
-
-2003-04-08 Elena Zannoni <ezannoni@redhat.com>
-
- * infrun.c (stop_soon): Rename from stop_soon_quietly.
- (struct inferior_status): Rename stop_soon_quietly field to stop_soon.
- (clear_proceed_status): Rename stop_soon_quietly to stop_soon.
- (start_remote): Ditto.
- (handle_inferior_event): Ditto.
- (save_inferior_status): Ditto.
- (restore_inferior_status): Ditto.
- * infcmd.c (attach_command): Ditto.
- * fork-child.c (startup_inferior): Ditto.
- * inferior.h (stop_soon): Rename from stop_soon_quietly.
- * alpha-tdep.c (heuristic_proc_start): Ditto.
- * mips-tdep.c (heuristic_proc_start): Ditto.
- * solib-svr4.c (svr4_solib_create_inferior_hook): Ditto.
- * solib-sunos.c (sunos_solib_create_inferior_hook): Ditto.
- * solib-osf.c (osf_solib_create_inferior_hook): Ditto.
- * solib-irix.c (irix_solib_create_inferior_hook): Ditto.
- * remote-vx.c (vx_create_inferior): Ditto.
-
-2003-04-08 Elena Zannoni <ezannoni@redhat.com>
-
- * infrun.c (stop_soon_quietly): Make it an enum, to better
- override the default behavior of handle_inferior_event.
- (clear_proceed_status): Update uses of stop_soon_quietly to
- reflect that it is now an enum.
- (start_remote): Ditto.
- (handle_inferior_event): Change logic a bit if stop_soon_quietly
- is set to handle the new GNU/Linux kernel behavior for
- attach/sigstop. Update uses of stop_soon_quietly.
- * inferior.h (enum stop_kind): New enum.
- * infcmd.c (attach_command): Use STOP_QUIETLY_NO_SIGSTOP.
- Reset normal handle_inferior_event behavior, afterwards.
- * fork-child.c (startup_inferior): Update.
- * alpha-tdep.c (heuristic_proc_start): Update.
- * solib-svr4.c (svr4_solib_create_inferior_hook): Update.
- * solib-sunos.c (sunos_solib_create_inferior_hook): Update.
- * solib-osf.c (osf_solib_create_inferior_hook): Update.
- * solib-irix.c (irix_solib_create_inferior_hook): Update.
- * remote-vx.c (vx_create_inferior): Update.
- * mips-tdep.c (heuristic_proc_start): Update.
-
-2003-04-07 Elena Zannoni <ezannoni@redhat.com>
-
- * disasm.c (dump_insns): Move variables inside loop, or they will
- be freed more than once, causing wild memory corruptions.
- (gdb_disassembly): Look for the substring "-thread",
- instead of "-threads" in the target name, to make sure to find
- the 'multi-thread' target. Also, make sure we do the right thing
- with the "core" target.
-
-2003-04-07 Kevin Buettner <kevinb@redhat.com>
-
- * mips-tdep.c (mips_print_fp_register): New function, created from
- do_fp_register_row(). Registers are now (also) printed as hex.
- Only one register is printed per row.
- (mips_print_register, do_fp_register_row): Print floating point
- registers with mips_print_fp_register().
-
-2003-04-06 Andrew Cagney <cagney@redhat.com>
-
- * valprint.h (inspect_it): Add extern declaration.
- * objc-lang.c (value_nsstring): Avoid assignment inside of "if".
- (selectors_info, classes_info): Ditto.
- (find_objc_msgcall): Fix indentation.
- (objc_printstr): Delete extern declarations.
-
- * arm-tdep.c (arm_frameless_function_invocation): Fix typo.
-
-2003-04-06 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (legacy_frame_chain_valid): Rename frame_chain_valid.
- Update comment.
- * frame.c (legacy_saved_regs_this_id): Update.
- (legacy_get_prev_frame): Update.
- * xstormy16-tdep.c: Update comment.
- * sparc-tdep.c (sparc_frame_chain): Update comment.
- * blockframe.c (legacy_frame_chain_valid): Update.
-
-2003-04-06 Andrew Cagney <cagney@redhat.com>
-
- * valprint.c (val_print_type_code_int): Delete #ifdef
- PRINT_TYPELESS_INTEGER code.
-
- * gdbarch.sh (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
- (CALL_DUMMY_LOCATION, DEPRECATED_PC_IN_CALL_DUMMY): Allow partial
- multi-arch definition.
- * gdbarch.h: Re-generate.
-
-2003-04-05 Andrew Cagney <cagney@redhat.com>
-
- Eliminate FRAME_FIND_SAVED_REGS.
- * config/pa/tm-hppah.h (hppa_hpux_frame_find_saved_regs_in_sigtramp):
- Change FSR parameter to a pointer.
- * config/pa/tm-hppa64.h (FRAME_FIND_SAVED_REGS_IN_SIGTRAMP):
- Assume FSR parameter is a pointer.
- * hppa-hpux-tdep.c (hppa_hpux_frame_find_saved_regs_in_sigtramp):
- Make fsr a pointer.
- * hppa-tdep.c (hppa_frame_find_saved_regs): New function.
- (hppa_frame_saved_pc): Call hppa_frame_init_saved_regs. Make
- saved_regs a pointer.
- (hppa_frame_saved_pc): Ditto.
- (find_dummy_frame_regs): Make frame_saved_regs a pointer
- (hppa_pop_frame): Call hppa_frame_init_saved_regs. Make fsr a
- pointer.
- (restore_pc_queue): Make fsr a pointer.
- (hppa_frame_find_saved_regs): Make frame_saved_regs a pointer.
- (hppa_frame_chain): Make saved_regs a pointer, call
- hppa_frame_init_saved_regs.
- * sparc-tdep.c: Include "gdb_assert.h".
- (sparc_frame_find_saved_regs): Replace internal_error with
- gdb_assert.
- * remote-vxsparc.c (vx_read_register): Delete reference to
- FRAME_FIND_SAVED_REGS.
- * gdbarch.sh: Delete check for FRAME_FIND_SAVED_REGS.
- * gdbarch.h: Regenerate.
- * frame.h (DEPRECATED_FRAME_INIT_SAVED_REGS): Delete macro.
- (deprecated_get_frame_saved_regs): Delete declaration.
- (struct frame_saved_regs): Delete definition.
- * frame.c (deprecated_get_frame_saved_regs): Delete function.
- * config/pa/tm-hppa.h (hppa_frame_init_saved_regs): Declare.
- (hppa_frame_find_saved_regs): Delete declaration.
- (FRAME_FIND_SAVED_REGS): Delete macro.
- (DEPRECATED_FRAME_INIT_SAVED_REGS): Define.
- * config/i386/tm-ptx.h (FRAME_FIND_SAVED_REGS): Delete
- FRAME_FIND_SAVED_REGS in comment.
-
-2003-04-05 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (frame_func_unwind, get_frame_func): New functions.
- * frame.h (get_frame_func, frame_func_unwind): Declare.
- (struct frame_info): Add field "prev_func" for caching the
- previous frame's function address.
- * arm-tdep.c (arm_frameless_function_invocation): Combine
- get_pc_function_start and get_frame_pc into get_frame_func.
- * sh-tdep.c (sh_nofp_frame_init_saved_regs): Ditto.
- (sh64_nofp_frame_init_saved_regs): Ditto.
- * s390-tdep.c (s390_function_start): Ditto.
- * rs6000-tdep.c (rs6000_pop_frame): Ditto.
- (rs6000_frameless_function_invocation): Ditto.
- (rs6000_frame_saved_pc): Ditto.
- * m68k-tdep.c (m68k_frame_init_saved_regs): Ditto.
- * ia64-tdep.c (ia64_frame_init_saved_regs): Ditto.
- * i386-tdep.c (i386_frameless_signal_p): Ditto.
- (i386_frame_init_saved_regs): Ditto.
- * hppa-tdep.c (hppa_frame_find_saved_regs): Ditto.
- * d10v-tdep.c (d10v_frame_unwind_cache): Combine
- get_pc_function_start and frame_pc_unwind into frame_func_unwind.
- * cris-tdep.c (cris_frame_init_saved_regs): Ditto.
- * blockframe.c (frameless_look_for_prologue): Ditto.
-
-2003-04-05 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (legacy_get_prev_frame): Link prev to next at the
- function start. Update comments.
-
-2003-04-05 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_frame_id): Update comment.
- (legacy_get_prev_frame): Update comment.
- * gdbarch.sh: Delete check for EXTRA_FRAME_INFO.
- * gdbarch.h: Regenerate.
- * config/sparc/tm-sparc.h (EXTRA_FRAME_INFO): Delete.
- * frame.h: Delete #ifdef EXTRA_FRAME_INFO code.
-
-2003-04-05 Andrew Cagney <cagney@redhat.com>
-
- * stack.c (print_frame_info): Use get_frame_pc.
-
-2003-04-04 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_prev_frame): Do not call frame_type_from_pc. Set
- the frame's type from the unwinder.
- (get_frame_type): Map UNKNOWN_FRAME onto NORMAL_FRAME.
- (create_new_frame, legacy_get_prev_frame): When the unwinder's
- type isn't UNKNOWN_FRAME, initalize "type" from the unwinder.
- (get_frame_base_address): Use get_frame_type.
- (get_frame_locals_address, get_frame_args_address): Ditto.
- (legacy_saved_regs_unwinder): Set the type to UNKNOWN_TYPE.
- * frame.h (enum frame_type): Add UNKNOWN_FRAME.
- (struct frame_info): Add comment explaining why the frame contains
- a "type" field.
- * dummy-frame.c (dummy_frame_unwind): Set the type to DUMMY_FRAME.
- * d10v-tdep.c (d10v_frame_unwind): Set the type to NORMAL_FRAME.
- * sentinel-frame.c (sentinel_frame_unwinder): Set the type to
- NORMAL_FRAME.
- * frame-unwind.h: Include "frame.h".
- (struct frame_unwind): Add "type" field.
- * Makefile.in (frame_unwind_h): Add $(frame_h).
-
-2003-04-04 Andrew Cagney <cagney@redhat.com>
-
- * x86-64-tdep.c (x86_64_unwind_dummy_id): Use frame_id_build.
- * dummy-frame.c (dummy_frame_this_id): Use frame_id_build.
- * d10v-tdep.c (d10v_frame_this_id): Use get_frame_pc and
- get_frame_base.
- (d10v_unwind_dummy_id): Use frame_id_build.
- * frame.c (find_frame_sal): Use get_frame_pc.
- (create_new_frame): Use deprecated_update_frame_pc_hack and
- deprecated_update_frame_base_hack.
- (create_sentinel_frame): Add comment about ->pc going away.
- (get_prev_frame): Add comment about ->pc going away.
- (legacy_get_prev_frame): Use get_frame_base, get_frame_pc,
- frame_id_build, deprecated_update_frame_pc_hack and
- deprecated_update_frame_base_hack.
- (select_frame): Use get_frame_pc.
- (legacy_saved_regs_this_id): Use frame_id_build.
-
-2003-04-04 Elena Zannoni <ezannoni@redhat.com>
-
- * x86-64-tdep.c (x86_64_push_arguments): Handle correctly the
- signed integer case.
- (classify_argument): Handle enumerations and references.
-
-2003-04-04 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (create_sentinel_frame): Initialize the sentinel frame's
- ID to NULL.
-
-2003-04-01 Adam Fedor <fedor@gnu.org>
-
- * gdb/objc-lang.c (selectors_info): Replace calls to
- SYMBOL_DEMANGLED_NAME and DEPRECATED_SYMBOL_NAME with
- SYMBOL_NATURAL_NAME.
- (classes_info, find_methods): Likewise.
-
-2003-04-03 Kevin Buettner <kevinb@redhat.com>
-
- * rs6000-tdep.c (rs6000_gdbarch_init): For xcoff executables, set
- ``mach'' to the value determined by bfd_default_set_arch_mach().
-
-2003-04-02 Bob Rossi <bob_rossi@cox.net>
-
- * Makefile.in (SUBDIR_MI_OBS): Add "mi-cmd-file.o".
- (SUBDIR_MI_SRCS): Add "mi-cmd-file.c".
- (mi-cmd-file.o): Update dependencies.
-
-2003-04-01 Kevin Buettner <kevinb@redhat.com>
-
- * mips-tdep.c (mips_dwarf_dwarf2_ecoff_reg_to_regnum)
- (mips_stab_reg_to_regnum): Add mappings for HI_REGNUM and LO_REGNUM.
-
-2003-04-01 Adam Fedor <fedor@gnu.org>
-
- * Makefile.in (c_lang.o, jv_lang.o, language.o): Add $(demangle_h).
- * language.h (struct language_defn): Add la_demangle.
- (language_demangle): Declare.
- * language.c (language_demangle): New function.
- (unk_lang_demangle): Likewise.
- (unknown_language_defn, auto_language_defn, local_language_defn):
- Add ukn_lang_demangle.
- * ada-lang.c (ada_language_defn): Add NULL for la_demangle element.
- * f-lang.c, m2-lang.c, p-lang.c, scm-lang.c: Likewise.
- * c-lang.c (c_language_defn, asm_language_defn): Likewise.
- (cplus_language_defn): Add cplus_demangle for la_demangle element.
- * jv-lang.c (java_demangle): New function
- (java_language_defn): Use it for la_demangle element.
- * objc-lang.c (objc_demangle): Add options argument
- (objc_language_defn): Use objc_demangle for la_demangle element.
- * maint.c (maintenance_demangle): Replace switch with
- call to language_demangle.
- * utils.c (fprintf_symbol_filtered): Likewise.
-
-2003-04-01 Andrew Cagney <cagney@redhat.com>
-
- * printcmd.c (print_frame_nameless_args): Delete #ifdef
- NAMELESS_ARG_VALUE, PRINT_NAMELESS_INTEGER and
- PRINT_TYPELESS_INTEGER.
- * config/sparc/tm-sp64.h (DEPRECATED_PUSH_RETURN_ADDRESS): Rename
- PUSH_RETURN_ADDRESS.
-
-2003-04-01 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (d10v-tdep.o): Update dependencies.
- * d10v-tdep.c: Include "frame-base.h".
- (d10v_frame_unwind): Make constant.
- (d10v_frame_base_address): New function.
- (d10v_frame_base): New variable.
- (d10v_gdbarch_init): Set frame_base default.
- (struct d10v_unwind_cache): Add the field "prev_sp". Update
- comment for base.
- (d10v_frame_unwind_cache): Set and use "prev_sp".
- (d10v_frame_this_id): Use the previous frame's inner most stack
- address and this frame's func address for the frame ID. Use
- frame_id_build. Don't analyze beyond the current instruction.
-
-2003-04-01 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (get_frame_locals_address, get_frame_args_address):
- Refer to the base address, instead of the address of the first
- local or parameter.
-
-2003-04-01 Andrew Cagney <cagney@redhat.com>
-
- Add frame debug info addresses:
- * frame-base.c: New file.
- * frame-base.h: New file.
- * frame.h (struct frame_base): Add opaque declaration.
- (get_frame_base): Update comment.
- (get_frame_base_address): Declare.
- (get_frame_locals_address): Declare.
- (get_frame_args_address): Declare.
- (struct frame_info): Add "base" and "base_cache". Update
- comments on the unwinder.
- * frame.c: Include "frame-base.h".
- (get_frame_locals_address): New function.
- (get_frame_base_address): New function.
- (get_frame_args_address): New function.
- * findvar.c (read_var_value): Use get_frame_locals_address and
- get_frame_args_address.
- * stack.c (frame_info): Use get_frame_locals_address and
- get_frame_args_address.
- (FRAME_ARGS_ADDRESS_CORRECT): Delete conditionally defined macro,
- moved to "frame-base.c".
- * printcmd.c (print_frame_nameless_args): Ditto.
- * symtab.h (address_class): Update comments.
- * dwarf2loc.c (dwarf_expr_frame_base): Add note about
- get_frame_base_address.
- * dwarf2expr.c (execute_stack_op): Ditto.
- * Makefile.in (frame_base_h): Define.
- (frame.o): Update dependencies.
- (frame-base.o): Add dependencies.
- (SFILES): Add frame-base.c.
- (COMMON_OBS): Add frame-base.o.
-
-2003-04-01 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (CALL_DUMMY_START_OFFSET): Default to zero.
- CALL_DUMMY_LENGTH): Ditto.
+ * gdbarch.sh (FUNCTION_START_OFFSET): Make zero the default.
* gdbarch.c: Re-generate.
- * inferior.h (CALL_DUMMY_START_OFFSET): Delete macro.
- (CALL_DUMMY_LENGTH): Delete macro.
- * alpha-tdep.c (alpha_gdbarch_init): Do not set above when zero.
- * arm-tdep.c (arm_gdbarch_init): Ditto.
- * avr-tdep.c (avr_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
- * d10v-tdep.c (d10v_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
- * h8300-tdep.c (h8300_gdbarch_init): Ditto.
- * hppa-tdep.c (hppa_gdbarch_init): Ditto.
- * i386-tdep.c (i386_gdbarch_init): Ditto.
- * ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * mcore-tdep.c (mcore_gdbarch_init): Ditto.
- * mips-tdep.c (mips_gdbarch_init): Ditto.
- * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * sparc-tdep.c (sparc_gdbarch_init): Ditto.
- * v850-tdep.c (v850_gdbarch_init): Ditto.
- * vax-tdep.c (vax_gdbarch_init): Ditto.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
-
-2003-04-01 Corinna Vinschen <vinschen@redhat.com>
-
- * frame.c (get_prev_frame): Disable call to inside_entry_file().
-
-2003-04-01 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (CALL_DUMMY_BREAKPOINT_OFFSET): Default to zero.
- (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete.
- * gdbarch.h, gdbarch.c: Re-generate.
- * config/sparc/tm-sp64.h (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete.
- (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete.
- * config/pa/tm-hppa64.h (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete.
- * inferior.h (CALL_DUMMY_BREAKPOINT_OFFSET_P): Delete.
- (CALL_DUMMY_BREAKPOINT_OFFSET): Delete.
- * infcmd.c (run_stack_dummy): Simplify assuming
- CALL_DUMMY_BREAKPOINT_OFFSET_P.
- * infrun.c (handle_inferior_event): Ditto.
- * alpha-tdep.c (alpha_gdbarch_init): Do not set
- call_dummy_breakpoint_offset or call_dummy_breakpoint_offset_p.
- * arm-tdep.c (arm_gdbarch_init): Ditto.
- * avr-tdep.c (avr_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
- * d10v-tdep.c (d10v_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
- * h8300-tdep.c (h8300_gdbarch_init): Ditto.
- * i386-tdep.c (i386_gdbarch_init): Ditto.
- * ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * m68k-tdep.c (m68k_gdbarch_init): Ditto.
- * mcore-tdep.c (mcore_gdbarch_init): Ditto.
- * mips-tdep.c (mips_gdbarch_init): Ditto.
- * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
- * ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * sparc-tdep.c (sparc_gdbarch_init): Ditto.
- * v850-tdep.c (v850_gdbarch_init): Ditto.
- * vax-tdep.c (vax_gdbarch_init): Ditto.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
-
-2003-04-01 Daniel Jacobowitz <drow@mvista.com>
-
- * symfile.c (symfile_relocate_debug_section): Update call to
- bfd_simple_get_relocated_section_contents.
-
-2003-03-31 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (FIX_CALL_DUMMY): Change to function with predicate.
- * gdbarch.h, gdbarch.c: Regenerate.
- * inferior.h (FIX_CALL_DUMMY): Delete macro.
- * valops.c (hand_function_call): Only call FIX_CALL_DUMMY when
- available.
- * frame.h (generic_fix_call_dummy): Delete declaration.
- * dummy-frame.h: Update comment.
- * dummy-frame.c (generic_fix_call_dummy): Delete function.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set
- fix_call_dummy.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
- * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
- * mcore-tdep.c (mcore_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * i386-tdep.c (i386_gdbarch_init): Ditto.
- * h8300-tdep.c (h8300_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
- * d10v-tdep.c (d10v_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
- * avr-tdep.c (avr_gdbarch_init): Ditto.
- * arm-tdep.c (arm_gdbarch_init): Ditto.
-
-2003-03-31 J. Brobecker <brobecker@gnat.com>
-
- * config/pa/tm-hppa64.h (FRAME_ARGS_ADDRESS): Delete macro, not useful.
- (INIT_FRAME_AP): Likewise.
- (EXTRA_FRAME_INFO): Likewise.
-
-2003-03-31 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Include "symfile.h".
- (CALL_DUMMY_ADDRESS): Default to entry_point_address.
- * gdbarch.h, gdbarch.c: Re-generate.
- * inferior.h (CALL_DUMMY_ADDRESS): Delete macro.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set
- call_dummy_address, the default is at entry_point_address.
- * v850-tdep.c (v850_gdbarch_init): Ditto.
- * sparc-tdep.c (sparc_gdbarch_init): Ditto.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
- * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
- * mcore-tdep.c (mcore_gdbarch_init): Ditto.
- * ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * i386-tdep.c (i386_gdbarch_init): Ditto.
- * h8300-tdep.c (h8300_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
- * d10v-tdep.c (d10v_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
- * arm-tdep.c (arm_gdbarch_init): Ditto.
-
-2003-03-31 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (CALL_DUMMY_P): Delete.
- * gdbarch.h, gdbarch.c: Re-generate.
- * inferior.h (CALL_DUMMY_P): Delete macro.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * d10v-tdep.c (d10v_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * breakpoint.c (deprecated_frame_in_dummy): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * dummy-frame.c (dummy_frame_this_id): Update comments.
- * rs6000-tdep.c (rs6000_extract_struct_value_address): Ditto.
- * frame.c (legacy_get_prev_frame): Ditto.
- * valops.c (call_function_by_hand): Delete function.
- (hand_function_call): Rename to call_function_by_hand
-
-2003-03-30 Andrew Cagney <cagney@redhat.com>
-
- 2002-11-10 Klee Dienes <kdienes@apple.com>
- * value.h (struct value): Update comment.
-
-2003-03-30 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c: Replace _FP_REGNUM and FP_REGNUM with
- D10V_FP_REGNUM.
- (d10v_gdbarch_init): Do not set fp_regnum.
-
- * frame.c (get_frame_base): Force ID initialization.
- (get_prev_frame): Move computation of the frame ID from here ...
- (get_frame_id): ... to here.
- (legacy_get_prev_frame): Mark the frame ID as valid.
- * frame.h (struct frame_info): Add field "id_p".
-
-2003-03-30 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_store_struct_return): Removed.
- (i386_gdbarch_init): Don't set deprecated_store_struct_return.
-
-2003-03-30 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_DUMMY_WRITE_SP): Replace TARGET_WRITE_SP.
- * gdbarch.h, gdbarch.c: Regenerate.
- * v850-tdep.c (v850_gdbarch_init): Set deprecated_dummy_write_sp.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Ditto.
- * mcore-tdep.c (mcore_gdbarch_init): Ditto.
- * m68k-tdep.c (m68k_gdbarch_init): Ditto.
- * i386-tdep.c (i386_gdbarch_init): Ditto.
- * h8300-tdep.c (h8300_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
- * vax-tdep.c (vax_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
- * ns32k-tdep.c (ns32k_gdbarch_init): Ditto.
- * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
- * alpha-tdep.c (alpha_gdbarch_init): Ditto.
- * sparc-tdep.c (sparc_push_dummy_frame, sparc_pop_frame): Update.
- * config/sparc/tm-sp64.h (DEPRECATED_DUMMY_WRITE_SP): Update.
- * config/pa/tm-hppa.h (DEPRECATED_DUMMY_WRITE_SP): Define.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * valops.c (hand_function_call): Replace TARGET_WRITE_SP with
- DEPRECATED_DUMMY_WRITE_SP. Call when the method is available,
- instead of when push_dummy_call is not available.
-
-2003-03-30 Andrew Cagney <cagney@redhat.com>
-
- * infttrace.c: Include "gdbthread.h".
- (parent_attach_all): Fix function signature.
- (call_ptrace): Update call.
- * Makefile.in (infttrace.o): Update dependencies.
-
-2003-03-30 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_PUSH_RETURN_ADDRESS): Replace
- PUSH_RETURN_ADDRESS.
- * gdbarch.h, gdbarch.c: Regenerate.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * valops.c (hand_function_call): Update.
-
-2003-03-29 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (d10v_gdbarch_init): Do not set call_dummy_words or
- sizeof_call_dummy_words.
- * gdbarch.sh (CALL_DUMMY_WORDS, SIZEOF_CALL_DUMMY_WORDS): Always
- define.
- * gdbarch.h: Regenerate.
-
-2003-03-29 Andrew Cagney <cagney@redhat.com>
-
- * infttrace.h: New file.
- * hpread.c: Include "gdb_assert.h" and "somsolib.h".
- (hpread_get_textlow): Detect an uninitialized dn_bufp.
- (hpread_read_doc_function_type): Detect an initialized type1.
- (hpread_quick_traverse): Initialize mod_name_string.
- * somsolib.h: Add #ifdef SOMSOLIB_H wrapper.
- (som_solib_get_solib_by_pc): Declare.
- (so_lib_thread_start_addr): Declare.
- (no_shared_libraries): Declare.
- * somread.c (init_import_symbols): Make static. Add forward
- declaration.
- * config/pa/nm-hppah.h: Include "infttrace.h" for
- parent_attach_all.
- (hppa_insert_hw_watchpoint): Declare.
- (hppa_can_use_hw_watchpoint, hppa_remove_hw_watchpoint): Declare.
- * hppah-nat.c: Include "gdb_string.h".
- (parent_attach_all): Delete extern declaration, moved to
- "infttrace.h".
- (hppa_can_use_hw_watchpoint): Change type of "type" parameter to
- int.
- (hppa_remove_hw_watchpoint, hppa_insert_hw_watchpoint): Ditto.
- * Makefile.in (infttrace_h): Define.
- (hpread.o): Update dependencies.
- (hppah-nat.o, hppa-hpux-tdep.o, hppa-tdep.o): Ditto.
- * hppa-hpux-tdep.c: Include "gdb_string.h".
- * hppa-tdep.c (hppa_frame_saved_pc): Initialize "old_pc".
- * infrun.c (handle_inferior_event): Always initialize
- stepped_after_stopped_by_watchpoint. Add default and remove
- fallthrough in switch statement.
- * infttrace.c (hppa_can_use_hw_watchpoint): Change type of "type"
- parameter to int.
- (hppa_remove_hw_watchpoint): Ditto.
-
-2003-03-29 Andrew Cagney <cagney@redhat.com>
-
- * ns32k-tdep.c (ns32k_gdbarch_init): Set the call dummy breakpoint
- offset.
-
-2003-03-29 Richard Earnshaw <rearnsha@arm.com>
-
- * arm-tdep.c (arm_push_arguments): Delete.
- (struct stack_item): New type.
- (push_stack_item, pop_stack_item, arm_push_dummy_call): New functions.
- (arm_store_struct_return): Delte.
- (arm_gdbarch_init): Register arm_push_dummy_call. Don't register
- arm_push_arguments or arm_store_struct_return.
-
-2003-03-28 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (d10v-tdep.o): Update dependencies.
- * remote.h (target_resume_hook, target_wait_loop_hook): Declare.
- * d10v-tdep.c: Include "remote.h".
- (target_resume_hook): Delete extern declaration.
- (target_wait_loop_hook): Ditto.
- (tdisassemble_command): Eliminate assignment in "if" conditional.
- (d10v_ts2_register_sim_regno): Eliminate call to
- legacy_register_sim_regno.
- (d10v_ts3_register_sim_regno): Ditto.
-
-2003-03-28 Jeff Johnston <jjohnstn@redhat.com>
-
- * thread.c: Reindented.
- * lin-lwp.c: Ditto.
- * linux-proc.c: Ditto.
-
-2003-03-28 Bob Rossi <bob_rossi@cox.net>
-
- * MAINTAINERS (write after approval): Add myself.
-
-2003-03-27 Theodore A. Roth <troth@openavr.org>
-
- * objc-exp.y: Add missing semi-colons.
-
-2003-03-27 Andrew Cagney <cagney@redhat.com>
-
- * regcache.c (write_sp): Delete function and references.
- * inferior.h (write_sp): Delete declaration.
- * valops.c (hand_function_call): Replace write_sp with
- TARGET_WRITE_SP.
- * sparc-tdep.c (sparc_push_dummy_frame): Ditto.
- (sparc_pop_frame): Ditto.
-
-2003-03-27 Andrew Cagney <cagney@redhat.com>
-
- * NEWS: Mention removal of support for hppa*-*-bsd* and
- hppa*-*-osf* natives, and hppa*-*-pro* target.
- * config/pa/xm-hppah.h: Do not include "pa/xm-pa.h".
- * config/pa/xm-pa.h: Obsolete file.
- * config/pa/xm-hppab.h: Obsolete file.
- * config/pa/nm-hppab.h: Obsolete file.
- * config/pa/tm-hppab.h: Obsolete file.
- * config/pa/tm-hppao.h: Obsolete file.
- * config/pa/nm-hppao.h: Obsolete file.
- * config/pa/tm-pro.h: Obsolete file.
- * config/pa/hppaosf.mt: Obsolete file.
- * config/pa/hppaosf.mh: Obsolete file.
- * config/pa/hppapro.mt: Obsolete file.
- * config/pa/hppabsd.mt: Obsolete file.
- * config/pa/hppabsd.mh: Obsolete file.
- * configure.host: Disable hppa*-*-bsd* and hppa*-*-osf*.
- * configure.tgt: Disable hppa*-*-bsd*, hppa*-*-pro* and
- hppa*-*-osf*.
-
-2003-03-27 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (d10v_gdbarch_init): Set push_dummy_call instead of
- push_arguments. Don't set push_return_address or write_sp.
- (d10v_push_dummy_call): Replace d10v_push_arguments.
- (d10v_push_return_address, d10v_write_sp): Delete function,
- handled by push_dummy_call.
-
-2003-03-26 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_PUSH_ARGUMENTS): Rename PUSH_ARGUMENTS.
- (push_dummy_call): New pure multi-arch replacement with gdbarch,
- regcache and dummy_addr parameters.
- * gdbarch.h, gdbarch.c: Re-generate.
- * valops.c (hand_function_call): Use gdbarch_push_dummy_call when
- available; assume it will handle stack alignment and return
- address issues. Fall back to DEPRECATED_PUSH_ARGUMENTS and
- legacy_push_arguments.
- (legacy_push_arguments): Rename default_push_arguments.
- * value.h (legacy_push_arguments): Rename default_push_arguments.
- * i386-tdep.c (i386_push_arguments): Call legacy_push_arguments.
- * config/sparc/tm-sparc.h (DEPRECATED_PUSH_ARGUMENTS): Update.
- * config/sparc/tm-sp64.h (DEPRECATED_PUSH_ARGUMENTS): Update.
- * config/pa/tm-hppa.h (DEPRECATED_PUSH_ARGUMENTS): Update.
- * config/i386/tm-symmetry.h: Update.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * d10v-tdep.c (d10v_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * arm-linux-tdep.c (arm_linux_init_abi): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
-
-2003-03-26 Daniel Jacobowitz <drow@mvista.com>
-
- * signals/signals.c (do_target_signal_to_host): Correct realtime
- signal range test.
-
-2003-03-26 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (handle_gnu_4_16_catch_command, get_catch_sals)
- (struct sal_chain, map_catch_names): Remove.
- (catch_exception_command_1): Don't call
- handle_gnu_4_16_catch_command.
-
-2003-03-26 Daniel Jacobowitz <drow@mvista.com>
-
- From Mark Dettinger <dettinge@de.ibm.com>:
- * dwarf2cfi.c (read_2u): Increment pointer by two.
-
-2003-03-26 Daniel Jacobowitz <drow@mvista.com>
-
- * signals/signals.c: Fix typos in last change.
-
-2003-03-26 Daniel Jacobowitz <drow@mvista.com>
-
- * signals/signals.c (REALTIME_LO, REALTIME_HI): Define if
- not already defined. Use __SIGRTMIN if available.
- (target_signal_from_host): Remove SIGRTMIN block.
- (do_target_signal_to_host): Remove SIGRTMIN block; check that
- the signal is within the realtime range.
-
-2003-03-25 Adam Fedor <fedor@gnu.org>
-
- * Makefile.in (infrun.o): Add $(language_h)
- * infrun.c (handle_inferior_event): Use skip_language_trampoline
- for language specific trampolines.
- * language.h (struct language_defn): Add skip_trampoline.
- (skip_language_trampoline): Declare.
- * language.c (unk_lang_trampoline, skip_language_trampoline):
- New functions.
- (unknown_language_defn, auto_language_defn, local_language_defn):
- Add ukn_lang_trampoline.
- * ada-lang.c (ada_language_defn): Add NULL for language
- specific skip_trampoline.
- * c-lang.c, f-lang.c, jv-lang.c, m2-lang.c, p-lang.c,
- scm-lang.c: Likewise.
- * objc-lang.c (objc_skip_trampoline): New function.
- (objc_language_defn): Add objc_skip_trampoline.
-
-2003-03-25 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_prev_frame): Delay validating a frame's ID -
- non-NULL, didn't go backwards - until an attempt to unwind it to
- the previous frame.
-
-2003-03-25 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED): Replace
- EXTRA_STACK_ALIGNMENT_NEEDED. Default to 0 not 1.
- * gdbarch.h, gdbarch.c: Re-generate.
- * config/sparc/tm-sparc.h
- (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED): Define.
- * sparc-tdep.c (sparc_gdbarch_init): Set
- deprecated_extra_stack_alignment_needed.
- * config/pa/tm-hppa.h (EXTRA_STACK_ALIGNMENT_NEEDED): Delete.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Do not clear
- extra_stack_alignment_needed.
- * v850-tdep.c (v850_gdbarch_init): Ditto.
- * hppa-tdep.c (hppa_gdbarch_init): Ditto.
- * h8300-tdep.c (h8300_gdbarch_init): Ditto.
- * d10v-tdep.c (d10v_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
- * m68k-tdep.c (m68k_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
-
-2003-03-25 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_STORE_STRUCT_RETURN): Replace
- STORE_STRUCT_RETURN.
- * gdbarch.h, gdbarch.c: Regenerate.
- * d10v-tdep.c (d10v_store_struct_return): Delete function.
- (d10v_push_arguments): Set the struct return register.
- (d10v_gdbarch_init): Update.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
-
-2003-03-25 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (CALL_DUMMY_STACK_ADJUST_P): Delete.
- (DEPRECATED_CALL_DUMMY_STACK_ADJUST): Replace
- CALL_DUMMY_STACK_ADJUST with a predicate variable.
- * gdbarch.h, gdbarch.c: Regenerate.
* xstormy16-tdep.c (xstormy16_gdbarch_init): Do not set
- call_dummy_stack_adjust_p.
- * vax-tdep.c (vax_gdbarch_init): Ditto.
+ FUNCTION_START_OFFSET.
* v850-tdep.c (v850_gdbarch_init): Ditto.
+ * sparc-tdep.c (sparc32_gdbarch_init): Ditto.
+ * sh64-tdep.c (sh64_gdbarch_init): Ditto.
* sh-tdep.c (sh_gdbarch_init): Ditto.
* s390-tdep.c (s390_gdbarch_init): Ditto.
* rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
@@ -11991,3994 +743,696 @@ Fri Aug 8 00:28:38 UTC 2003 Brendan Conoboy <blc@redhat.com>
* mcore-tdep.c (mcore_gdbarch_init): Ditto.
* m68k-tdep.c (m68k_gdbarch_init): Ditto.
* m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
+ * m32r-tdep.c (m32r_gdbarch_init): Ditto.
* ia64-tdep.c (ia64_gdbarch_init): Ditto.
* i386-tdep.c (i386_gdbarch_init): Ditto.
- * h8300-tdep.c (h8300_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
- * d10v-tdep.c (d10v_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
- * avr-tdep.c (avr_gdbarch_init): Ditto.
- * arm-tdep.c (arm_gdbarch_init): Ditto.
- * alpha-tdep.c (alpha_gdbarch_init): Ditto.
- * config/sparc/tm-sp64.h (CALL_DUMMY_STACK_ADJUST): Update.
- * config/sparc/tm-sparc.h (CALL_DUMMY_STACK_ADJUST): Update.
- * config/sparc/tm-sp64.h (CALL_DUMMY_STACK_ADJUST): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update. Do not set
- call_dummy_stack_adjust_p.
- * inferior.h (CALL_DUMMY_STACK_ADJUST_P): Delete macro.
- (CALL_DUMMY_STACK_ADJUST): Delete macro.
- * sparc-tdep.c (sparc32_push_arguments): Update.
- * valops.c (hand_function_call): Update.
-
-2003-03-25 Corinna Vinschen <vinschen@redhat.com>
-
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Add call to
- set_gdbarch_char_signed.
-
-2003-03-25 Richard Earnshaw <rearnsha@arm.com>
-
- PR cli/548
- * arm-tdep.c (_initialize_arm_tdep): Command is "set arm disassembler".
-
-2003-03-25 Richard Earnshaw <rearnsha@arm.com>
-
- * arm-tdep.c (arm_gdbarch_init): Register the disassembler function.
- (_initialize_arm_tdep): Don't set tm_print_insn.
-
-2003-03-24 Adam Fedor <fedor@gnu.org>
-
- * Makefile.in (YYOBJ): Add objc-exp.tab.o
- * objc-lang.h: Add multiple inclusion protection.
- (start_msglist, add_msglist, end_msglist): Additional declarations.
-
-2003-03-24 Richard Earnshaw <rearnsha@arm.com>
-
- * armnbsd-tdep.c (arm_netbsd_aout_init_abi): ARM_FLOAT_SOFT enum
- value was renamed to ARM_FLOAT_SOFT_FPA.
-
-2003-03-23 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_FRAME_CHAIN): Replace FRAME_CHAIN.
- (DEPRECATED_FRAME_CHAIN_VALID): Replace FRAME_CHAIN_VALID.
- * gdbarch.h, gdbarch.c: Regenerate.
- * valops.c (hand_function_call): Update.
- * objfiles.h (DEPRECATED_FRAME_CHAIN_VALID): Update.
- * frame.c (legacy_saved_regs_this_id): Update.
- (legacy_get_prev_frame, get_prev_frame, legacy_frame_p): Update.
- * dummy-frame.h: Update.
- * config/sparc/tm-sparc.h (DEPRECATED_FRAME_CHAIN): Update.
- * config/pa/tm-hppa.h (DEPRECATED_FRAME_CHAIN_VALID): Update.
- * config/m68k/tm-vx68.h (DEPRECATED_FRAME_CHAIN): Update.
- * config/m68k/tm-os68k.h (DEPRECATED_FRAME_CHAIN): Update.
- * config/m68k/tm-sun3.h: Update.
- * blockframe.c (inside_main_func, frame_chain_valid): Update.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_frame_chain, sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_frame_saved_pc): Update.
- (rs6000_gdbarch_init, rs6000_frame_saved_pc): Update.
- (frame_get_saved_regs): Update.
- * ppc-linux-tdep.c (ppc_linux_init_abi): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_frame_num_args, i386_gdbarch_init): Update.
- * i386-interix-tdep.c (i386_interix_init_abi): Update.
- (i386_interix_back_one_frame): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- (hppa_init_extra_frame_info): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
-
-2003-03-22 Richard Earnshaw <rearnsha@arm.com>
-
- * arm-tdep.h (arm_float_model): Add AUTO and LAST values.
- (arm_get_fp_model): Declare.
- * arm-tdep.c (fp_model_strings): New string array.
- (arm_fp_model, current_fp_model): New variables.
- (arm_get_fp_model): New function.
- (arm_set_fp): New function.
- (set_fp_model_sfunc): New function.
- (show_fp_model): New function.
- (_initialize_arm_tdep): Add new command to set/show the FPU.
- (arm_extract_return_value): Use arm_get_fp_model.
- (arm_store_return_value): Likewise.
- (arm_gdbarch_init): Default fpa model is softfpa. Call arm_set_fp
- to initialize the floating-point data types.
- * arm-linux-tdep.c (arm_linux_init_abi): The default floating point
- model is FPA.
-
-2003-03-22 Richard Earnshaw <rearnsha@arm.com>
-
- * arm-tdep.c (show_arm_command): Don't print out help. Instead, show
- the current setting of each value.
- (_initialize_arm_tdep): Delete variable new_cmd and add new vars
- new_set and new_show. Use add_setshow_cmd_full and
- add_setshow_boolean_cmd as appropriate. Deprecate "set/show apcs32"
- commands and add new version as subcommands of "set/show arm".
-
-2003-03-22 Richard Earnshaw <rearnsha@arm.com>
-
- * arm-tdep.c (setarmcmdlist, showarmcmdlist): New command lists.
- (set_arm_command, show_arm_command): New functions.
- (_initialize_arm_tdep): Add them.
- (num_disassembly_options): Renamed from num_flavor_options.
- (valid_disassembly_styles): Renamed from valid_flavors.
- (disassembly_style): Renamed from disassembly_flavor.
- (set_disassembly_style_sfunc): Renamed from
- set_disassembly_flavor_sfunc.
- (set_disassembly_style): Renamed from set_disassembly_flavor.
- (arm_othernames): Updated.
- (_initialize_arm_tdep): Deprecate "set/show disassembly-flavor"
- command. Add "set/show arm disassembly" commands. Deprecate
- "othernames" command.
-
-2003-03-22 Richard Earnshaw <rearnsha@arm.com>
-
- * Makefile.in (elf_reloc_macros_h, elf_arm_h): Define.
- (arm-tdep.o): Depend on elf_arm_h.
-
-2003-03-22 Richard Earnshaw <rearnsha@arm.com>
-
- * Makefile.in (coff_internal_h): Define.
- (arm-tdep.o): Update dependencies.
-
-2003-03-22 Richard Earnshaw <rearnsha@arm.com>
-
- * arm-tdep.c (prologue_cache): Delete.
- (check_prologue_cache, save_prologue_cache): Delete.
- (arm_scan_prologue): Don't check or update the prologue_cache.
- (arm_gdb_arch_init): Don't initialize it.
- (_initialize_arm_tdep): Likewise.
-
-2003-03-21 Stephane Carrez <stcarrez@nerim.fr>
-
- * MAINTAINERS (tui): Maintainer of tui code.
-
-2003-03-21 Corinna Vinschen <vinschen@redhat.com>
-
- * Makefile.in (ALLDEPFILES): Add i386-cygwin-tdep.c.
- (i386-cygwin-tdep.o): Add dependencies.
- * defs.h (enum gdb_osabi): Add GDB_OSABI_CYGWIN.
- * i386-cygwin-tdep.c: New file.
- * osabi.c (gdb_osabi_name): Add string for GDB_OSABI_CYGWIN.
- * config/i386/cygwin.mt (TDEPFILES): Add i386-cygwin-tdep.o.
-
-2003-03-20 Andrew Cagney <cagney@redhat.com>
-
- * infrun.c (DYNAMIC_TRAMPOLINE_NEXTPC): Delete macro.
- (handle_inferior_event): Remove code calling
- DYNAMIC_TRAMPOLINE_NEXTPC.
-
- * Makefile.in (init.c): Don't add $(srcdir) prefix when a file
- already has a full path.
-
- * main.c (gdb_main): Return 1.
- (captured_main): Call error to report an invalid interpreter.
-
- * Makefile.in (alpha-osf1-tdep.o): Update dependencies.
- * alpha-osf1-tdep.c: Include "gdb_string.h".
-
-2003-03-19 J. Brobecker <brobecker@gnat.com>
-
- Continuing work to convert the hppa targets to multiarch partial.
-
- * hppa-tdep.c (hppa_gdbarch_init): Set the push_dummy_frame gdbarch
- method, now that hppa_push_dummy_frame has a conformant prototype.
- * config/pa/tm-hppa.h (DEPRECATED_PUSH_DUMMY_FRAME): Wrap macro
- inside "#if !GDB_MULTI_ARCH ... #endif" conditional, in preparation
- for the switch to multiarch partial.
-
-2003-03-19 Kevin Buettner <kevinb@redhat.com>
-
- * mdebugread.c (parse_symbol): For stEnd, we're done counting
- when iss is issNull.
-
-2003-03-18 Kevin Buettner <kevinb@redhat.com>
-
- * mips-tdep.c (mips_register_name): Fix fencepost error involving
- NUM_REGS bounds check.
-
-2003-03-18 Kevin Buettner <kevinb@redhat.com>
-
- * Makefile.in (mips-tdep.o): Add dependency on $(gdb_assert_h).
- * mips-tdep.c (gdb_assert.h): Include.
- (mips_generic_reg_names, mips_processor_reg_names): Make static.
- (mips_register_name): Handle integer registers explicitly. Add
- bounds checking.
- (mips_r3041_reg_names, mips_r3051_reg_names, mips_r3081_reg_names)
- (mips_lsi33k_reg_names): Don't list integer registers; they're
- handled by mips_register_name() now.
- * config/mips/tm-irix3.h (MIPS_REGISTER_NAMES): Likewise.
- * config/mips/tm-irix6.h (MIPS_REGISTER_NAMES): Likewise.
- * config/mips/tm-mips.h (MIPS_REGISTER_NAMES): Likewise.
- * config/mips/tm-tx39.h (MIPS_REGISTER_NAMES): Likewise.
- * config/mips/tm-tx39l.h (MIPS_REGISTER_NAMES): Likewise.
-
-2003-03-18 Andrew Cagney <cagney@redhat.com>
-
- * printcmd.c (print_scalar_formatted): Change VALADDR parameter to
- a void pointer.
- * gdbtypes.h (print_scalar_formatted): Update declaration.
- * expression.h (enum exp_opcode): Remove non-ISO C trailing comma.
-
-2003-03-18 J. Brobecker <brobecker@gnat.com>
-
- * infrun.c (observer.h): Add #include.
- (normal_stop): Add call to observer_notify_normal_stop.
- * Makefile.in (infrun.o): Add dependency on observer.h.
-
-2003-03-18 J. Brobecker <brobecker@gnat.com>
-
- Continuing work to convert the hppa targets to multiarch partial.
- * hppa-tdep.c (hppa_push_dummy_frame): Remove unused function
- parameter. Reformat comment.
- * config/pa/tm-hppa.h (hppa_push_dummy_frame): Update profile.
- (DEPRECATED_PUSH_DUMMY_FRAME): Update call to hppa_push_dummy_frame()
- to match new profile.
-
-2003-03-18 J. Brobecker <brobecker@gnat.com>
-
- * hppa-tdep.c (hppa_push_dummy_frame): Remove hack which does not
- appear to be working in any case.
-
-2003-03-18 J. Brobecker <brobecker@gnat.com>
-
- * observer.c (observer_test_first_observer): New static variable.
- (observer_test_second_observer): Likewise.
- (observer_test_third_observer): Likewise.
- (observer_test_first_notification_function): New static function.
- (observer_test_second_notification_function): Likewise.
- (observer_test_third_notification_function): Likewise.
-
-2003-03-17 J. Brobecker <brobecker@gnat.com>
-
- * hppa-tdep.c (gdb_assert.h): Add missing #include.
- * somsolib.c (gdb_assert.h): Likewise.
- * Makefile.in (hppa-tdep.o): Add dependency on gdb_assert.h.
- (somsolib.o): Likewise.
-
-2003-03-17 Andrew Cagney <cagney@redhat.com>
-
- * disasm.c (gdb_disassembly): Set di.mach using the architecture's
- BFD. Simplify setting of di.endian.
-
-2003-03-17 Andrew Cagney <cagney@redhat.com>
-
- * rs6000-tdep.c (ppc_floating_point_unit_p): New function.
- * ppc-tdep.h (ppc_floating_point_unit_p): Declare.
-
- From Elena Zannoni <ezannoni@redhat.com>
- * ppc-sysv-tdep.c (ppc_sysv_abi_push_arguments): Handle e500
- vector and floating-point parameters.
- (ppc_sysv_abi_use_struct_convention): Handle e500 struct return
- convention.
- (ppc_sysv_abi_broken_use_struct_convention): Ditto.
-
-2003-03-17 Fernando Nasser <fnasser@redhat.com>
-
- * MAINTAINERS: Remove my name from several maintainership roles.
-
-2003-03-17 Andrew Cagney <cagney@redhat.com>
-
- Fix frame off-by-one bug.
- * frame-unwind.h (frame_this_id_ftype): Replace
- frame_unwind_id_ftype.
- (frame_prev_register_ftype): Replace frame_unwind_reg_ftype.
- (struct frame_unwind): Replace "id" with "this_id". Replace "reg"
- with "prev_register".
- * frame-unwind.c (frame_unwind_find_by_pc): Return
- legacy_saved_regs_unwind instead of trad_frame_unwind. Update
- comment.
- * dummy-frame.c (cached_find_dummy_frame): Delete function.
- (dummy_frame_this_id): Replace dummy_frame_id_unwind.
- (dummy_frame_prev_register): Replace dummy_frame_register_unwind.
- (dummy_frame_unwind): Update.
- * sentinel-frame.c (sentinel_frame_prev_register): Replace
- sentinel_frame_register_unwind.
- (sentinel_frame_this_id): Replace sentinel_frame_id_unwind.
- (sentinel_frame_unwinder): Update.
- * frame.h (legacy_saved_regs_unwind): Replace trad_frame_unwind.
- (struct frame_info): Rename "unwind_cache" to "prologue_cache".
- * frame.c (create_sentinel_frame): Update. Initialize
- "prologue_cache" instead of "unwind_cache".
- (frame_register_unwind): Call this frame's prev_register with the
- next frame and this frame's prologue cache.
- (get_prev_frame): Simplify. Always call prev frame's this_id with
- this frame and prev frame's prologue cache. Document that this
- call is shifted one to the left when compared to the
- frame_register_unwind call.
- (legacy_saved_regs_prev_register): Replace
- frame_saved_regs_register_unwind.
- (legacy_saved_regs_this_id): Replace frame_saved_regs_id_unwind.
- (legacy_saved_regs_unwinder): Replace trad_frame_unwinder.
- (legacy_saved_regs_unwind): Replace trad_frame_unwind.
- * d10v-tdep.c (d10v_frame_this_id): Replace d10v_frame_id_unwind.
- (d10v_frame_unwind): Update.
- (d10v_frame_prev_register): Replace d10v_frame_register_unwind.
- (d10v_frame_unwind_cache): Replace this "fi" with "next_frame".
- (saved_regs_unwinder): Replace this "frame" with "next_frame", and
- "saved_regs" with "this_saved_regs".
-
-2003-03-16 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (frame_pop): Don't call target_store_registers. Fix
- problem reported by Mark Kettenis.
-
-2003-03-16 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_register_type): Renamed from
- i386_register_virtual_type. Adjust function signature.
- (i386_gdbarch_init): Set register_type instead of
- deprecated_max_register_raw_size,
- deprecated_max_register_virtual_size and register_virtual_type.
-
-2003-03-14 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_prev_frame): When a legacy frame, always call
- legacy_get_prev_frame. Simplify unwind code using assumption that
- the unwinder is new.
- (legacy_get_prev_frame): Handle legacy sentinel frame unwind here.
- (legacy_frame_p): When no gdbarch_unwind_dummy_id, or
- SAVED_DUMMY_FRAME_TOS, assume a legacy frame.
-
-2003-03-14 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_saved_register): Delete function.
- * frame.h (get_saved_register): Delete declaration.
- * xstormy16-tdep.c: Update comment.
- * regcache.h: Update comments.
- * sparc-tdep.c (sparc_init_extra_frame_info): Instead of
- get_saved_register and extract_address, use
- frame_read_unsigned_register.
- (sparc_frame_saved_pc): Ditto.
- (sparc_get_saved_register): Instead of get_saved_register, use
- frame_register.
- (sparc_pop_frame): Ditto.
- * findvar.c: Update comments.
- (value_of_register): Call frame_register instead of
- get_saved_register.
- (value_from_register): Ditto.
- * config/sparc/tm-sparc.h: Update comment.
- * breakpoint.c: Update comment.
-
-2003-03-14 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_GET_SAVED_REGISTER): Replace
- GET_SAVED_REGISTER.
- * gdbarch.h, gdbarch.c: Re-generate.
- * frame.h: Update comments.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * frame.c (frame_register): Update.
- (get_saved_register): Update.
- * config/sparc/tm-sparc.h (DEPRECATED_GET_SAVED_REGISTER): Update.
-
-2003-03-13 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_POP_FRAME): Replace POP_FRAME.
- * gdbarch.h, gdbarch.c: Regenerate.
- * valops.c (hand_function_call): Update comment.
- * stack.c (return_command): Update comment.
- * config/sparc/tm-sparc.h (DEPRECATED_POP_FRAME): Update.
- * config/pa/tm-hppa.h (DEPRECATED_POP_FRAME): Update.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
-
-2003-03-13 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (legacy_frame_p): New function.
- (get_prev_frame): Use legacy_frame_p.
- * frame.h (legacy_frame_p): Declare.
-
-2003-03-13 D. Venkatasubramanian <dvenkat@noida.hcltech.com>
-
- * MAINTAINERS (write after approval): Alphabetically
- listing corrected.
-
-2003-03-13 D. Venkatasubramanian <dvenkat@noida.hcltech.com>
-
- * MAINTAINERS (write after approval): Add myself.
-
-2003-03-12 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_prev_frame): Rename the frame parameter to
- "this_frame".
- (get_next_frame, legacy_get_prev_frame): Ditto.
-
-2003-03-12 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (get_current_frame): Check target_has_registers before
- checking target_has_stack.
- * eval.c (evaluate_subexp_standard): Use get_selected_frame,
- instead of deprecated_selected_frame.
- * findvar.c (value_of_register): Pass "frame", not
- deprecated_selected_frame, to value_of_builtin_reg.
-
-2003-03-12 Andrew Cagney <cagney@redhat.com>
-
- * regcache.c (regcache_cooked_write_signed): New function.
- (regcache_cooked_write_unsigned): New function.
- (regcache_cooked_read_unsigned): Fix regnum in range assertion.
- (regcache_cooked_read_signed): Fix regnum in range assertion.
- * regcache.h (regcache_cooked_write_signed): Declare.
- (regcache_cooked_write_unsigned): Declare.
-
-2003-03-12 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_FRAME_SAVED_PC): Replace FRAME_SAVED_PC.
- * gdbarch.h, gdbarch.c: Re-generate.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.h: Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ppc-linux-tdep.c (ppc_linux_init_abi): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * i386-interix-tdep.c (i386_interix_init_abi): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
- * sh-tdep.c (sh_init_extra_frame_info): Update.
- (sh64_init_extra_frame_info): Update.
- * ns32knbsd-nat.c (frame_num_args): Update.
- * m68hc11-tdep.c (m68hc11_init_extra_frame_info): Update.
- * xstormy16-tdep.c (xstormy16_pop_frame): Update.
- (xstormy16_frame_chain_valid): Update.
- * vax-tdep.c (vax_saved_pc_after_call): Update.
- * v850-tdep.c (v850_frame_chain): Update.
- (v850_pop_frame): Update.
- (v850_init_extra_frame_info): Update.
- * sparc-tdep.c (setup_arbitrary_frame): Update.
- * ns32k-tdep.c (umax_frame_num_args): Update.
- * s390-tdep.c (s390_pop_frame_regular): Update.
- * mn10300-tdep.c (mn10300_frame_chain): Update.
- (mn10300_pop_frame_regular): Update.
- (mn10300_init_extra_frame_info): Update.
- * mips-tdep.c (mips_init_frame_pc_first): Update.
- (mips_frame_chain): Update.
- (mips_pop_frame): Update.
- * mcore-tdep.c (mcore_frame_chain): Update.
- (mcore_pop_frame): Update.
- (mcore_init_extra_frame_info): Update.
- * arch-utils.c (init_frame_pc_default): Update.
- * m68k-tdep.c (isi_frame_num_args): Update.
- (delta68_frame_num_args): Update.
- (news_frame_num_args): Update.
- * ia64-tdep.c (ia64_pop_frame_regular): Update.
- * alpha-tdep.c (alpha_init_frame_pc_first): Update.
- (alpha_frame_chain): Update.
- (alpha_pop_frame): Update.
- * hppa-tdep.c (hppa_saved_pc_after_call): Update.
- (hppa_init_extra_frame_info): Update.
- (hppa_frame_chain): Update.
- (hppa_frame_chain_valid): Update.
- * cris-tdep.c (cris_init_extra_frame_info): Update.
- * avr-tdep.c (avr_init_extra_frame_info): Update.
- * arm-tdep.c (arm_frame_chain_valid): Update.
- (arm_init_extra_frame_info): Update.
- (arm_pop_frame): Update.
- * frame.c (frame_pc_unwind): Update.
- * config/sparc/tm-sparc.h (DEPRECATED_FRAME_SAVED_PC): Update.
- (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
- * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
- * config/pa/tm-hppa.h (DEPRECATED_FRAME_SAVED_PC): Update.
- * config/m68k/tm-delta68.h (DEPRECATED_FRAME_SAVED_PC): Update.
- * config/m68k/tm-linux.h (DEPRECATED_FRAME_SAVED_PC): Update.
-
-2003-03-12 Andrew Cagney <cagney@redhat.com>
-
- Eliminate the need for POP_FRAME.
- * frame.c (do_frame_unwind_register): New function.
- (frame_pop): When no POP_FRAME, pop the frame using register
- unwind and a scratch regcache.
- (frame_saved_regs_pop): Delete function.
- (trad_frame_unwinder): Update.
- * d10v-tdep.c (d10v_frame_pop): Delete function.
- (d10v_frame_unwind): Update.
- * sentinel-frame.c (sentinel_frame_pop): Delete function.
- (sentinel_frame_unwinder): Update.
- * dummy-frame.c (dummy_frame_pop): Delete function.
- (dummy_frame_unwind): Update.
- * frame-unwind.h (frame_unwind_pop_ftype): Delete definition.
- (struct frame_unwind): Update.
-
-2003-03-11 Kevin Buettner <kevinb@redhat.com>
-
- * mips-tdep.c (mips_ecoff_reg_to_regnum): Rename to
- mips_dwarf_dwarf2_ecoff_reg_to_regnum().
- (mips_dwarf_dwarf2_ecoff_reg_to_regnum, mips_stab_reg_to_regnum):
- Do range checks on register number obtained from debugging info.
- (mips_gdbarch_init): Call set_gdbarch_dwarf_reg_to_regnum() and
- set_gdbarch_dwarf2_reg_to_regnum(). Adjust call of
- set_gdbarch_ecoff_reg_to_regnum() to account for new name of
- mapping function.
- (do_fp_register_row): Fix typo which caused double type to be
- used when attempting to unpack a float.
-
-2003-03-11 J. Brobecker <brobecker@gnat.com>
-
- * breakpoint.c (bpstat_stop_status): Fix a small memory leak.
-
-2003-03-11 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (deprecated_update_frame_pc_hack): Don't assume a next
- frame. Problem found by Corinna Vinschen.
-
-2003-03-11 Pierre Muller <muller@ics.u-strasbg.fr>
-
- * doublest.c (floatformat_from_length): Accept also
- the real size of 'long double' type.
-
-2003-03-10 Daniel Jacobowitz <drow@mvista.com>
-
- From Klee Dienes <kdienes@apple.com>:
- * breakpoint.c (bpstat_copy): Copy the command lines as well
- as the old value, to match what is freed in bpstat_clear.
-
-2003-03-10 David Carlton <carlton@math.stanford.edu>
-
- * minsyms.c (add_minsym_to_hash_table): Replace
- DEPRECATED_SYMBOL_NAME by SYMBOL_LINKAGE_NAME.
- (compare_minimal_symbols, compact_minimal_symbols)
- (install_minimal_symbols, find_solib_trampoline_target): Ditto.
- (lookup_minimal_symbol_text): Use strcmp on linkage names instead
- of DEPRECATED_SYMBOL_MATCHES_NAME.
- (lookup_minimal_symbol_solib_trampoline): Ditto.
-
-2003-03-10 Andrew Cagney <cagney@redhat.com>
-
- * regcache.h (regcache_cooked_read_ftype): Define.
- (regcache_save, regcache_restore): Add a cooked_read parameter.
- * regcache.c (regcache_save, regcache_restore): Update.
- (do_cooked_read): New function.
- (regcache_cpy): Pass do_cooked_read to regcache_save and
- regcache_restore.
-
-2003-03-10 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_FRAME_SAVED_PC): Replace FRAME_SAVED_PC.
- * gdbarch.h, gdbarch.c: Re-generate.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.h: Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ppc-linux-tdep.c (ppc_linux_init_abi): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * i386-interix-tdep.c (i386_interix_init_abi): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
- * sh-tdep.c (sh_init_extra_frame_info): Update.
- (sh64_init_extra_frame_info): Update.
- * ns32knbsd-nat.c (frame_num_args): Update.
- * m68hc11-tdep.c (m68hc11_init_extra_frame_info): Update.
- * xstormy16-tdep.c (xstormy16_pop_frame): Update.
- (xstormy16_frame_chain_valid): Update.
- * vax-tdep.c (vax_saved_pc_after_call): Update.
- * v850-tdep.c (v850_frame_chain): Update.
- (v850_pop_frame): Update.
- (v850_init_extra_frame_info): Update.
- * sparc-tdep.c (setup_arbitrary_frame): Update.
- * ns32k-tdep.c (umax_frame_num_args): Update.
- * s390-tdep.c (s390_pop_frame_regular): Update.
- * mn10300-tdep.c (mn10300_frame_chain): Update.
- (mn10300_pop_frame_regular): Update.
- (mn10300_init_extra_frame_info): Update.
- * mips-tdep.c (mips_init_frame_pc_first): Update.
- (mips_frame_chain): Update.
- (mips_pop_frame): Update.
- * mcore-tdep.c (mcore_frame_chain): Update.
- (mcore_pop_frame): Update.
- (mcore_init_extra_frame_info): Update.
- * arch-utils.c (init_frame_pc_default): Update.
- * m68k-tdep.c (isi_frame_num_args): Update.
- (delta68_frame_num_args): Update.
- (news_frame_num_args): Update.
- * ia64-tdep.c (ia64_pop_frame_regular): Update.
- * alpha-tdep.c (alpha_init_frame_pc_first): Update.
- (alpha_frame_chain): Update.
- (alpha_pop_frame): Update.
- * hppa-tdep.c (hppa_saved_pc_after_call): Update.
- (hppa_init_extra_frame_info): Update.
- (hppa_frame_chain): Update.
- (hppa_frame_chain_valid): Update.
- * cris-tdep.c (cris_init_extra_frame_info): Update.
- * avr-tdep.c (avr_init_extra_frame_info): Update.
- * arm-tdep.c (arm_frame_chain_valid): Update.
- (arm_init_extra_frame_info): Update.
- (arm_pop_frame): Update.
- * frame.c (frame_pc_unwind): Update.
- * config/sparc/tm-sparc.h (DEPRECATED_FRAME_SAVED_PC): Update.
- (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
- * config/rs6000/tm-rs6000.h (DEPRECATED_INIT_FRAME_PC_FIRST): Update.
- * config/pa/tm-hppa.h (DEPRECATED_FRAME_SAVED_PC): Update.
- * config/m68k/tm-delta68.h (DEPRECATED_FRAME_SAVED_PC): Update.
- * config/m68k/tm-linux.h (DEPRECATED_FRAME_SAVED_PC): Update.
-
-2003-03-10 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (gdbarch_unwind_pc): New method.
- * gdbarch.h, gdbarch.c: Regenerate.
- * frame.c (frame_pc_unwind): Rewrite. Prefer gdbarch_unwind_pc,
- but use read_pc and FRAME_SAVED_PC as fall backs.
- (frame_saved_regs_pc_unwind): Delete function.
- (trad_frame_unwinder): Update.
- * frame-unwind.h (frame_unwind_pc_ftype): Delete declaration.
- (struct frame_unwind): Update.
- * dummy-frame.c (dummy_frame_pc_unwind): Delete function.
- (dummy_frame_unwind): Update.
- * sentinel-frame.c (sentinel_frame_pc_unwind): Delete function.
- (sentinel_frame_unwinder): Update.
- * d10v-tdep.c (d10v_frame_pc_unwind): Delete function.
- (d10v_frame_unwind): Update.
- (d10v_unwind_pc): New function.
- (d10v_gdbarch_init): Set unwind_pc.
-
-2003-03-10 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.h: Re-generate.
-
- * d10v-tdep.c (d10v_frame_register_unwind): Correctly unwind the
- PC.
- (d10v_frame_pop): Unwind the PC, and not the LR, when restoring
- the PC register.
-
-2003-03-08 Mark Kettenis <kettenis@gnu.org>
-
- * gdbarch.sh (save_dummy_frame_tos): Add comment.
-
-2003-03-08 Andrew Cagney <cagney@redhat.com>
-
- * cli-out.c: Update copyright.
- (cli_out_data): Define typedef. Use instead of ui_out_data.
-
-2003-03-08 Andrew Cagney <cagney@redhat.com>
-
- * valarith.c (value_subscripted_rvalue): Copy the array's REGNO to
- the result.
-
-2003-03-07 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh: Don't generate two macro definitions when an
- undefined macro taking no arguments.
- * gdbarch.h: Regenerate.
-
-2002-03-07 Michal Ludvig <mludvig@suse.cz>
-
- * x86-64-tdep.c (x86_64_save_dummy_frame_tos)
- (x86_64_unwind_dummy_id): New functions.
- (x86_64_init_abi): Register these two new functions.
-
-2003-03-07 Michal Ludvig <mludvig@suse.cz>
-
- * x86-64-tdep.c (x86_64_function_has_prologue): New function.
- (x86_64_skip_prologue): Move prologue detection to
- separate function.
- * x86-64-tdep.h (x86_64_function_has_prologue): New prototype.
-
-2003-03-05 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (d10v_unwind_dummy_id): New function.
- (d10v_gdbarch_init): Set unwind_dummy_id and save_dummy_frame_tos.
- * frame.c (get_prev_frame): Restructure the frame ID unwind code
- to use unwind_dummy_id when a dummy frame.
- * gdbarch.sh (unwind_dummy_id): New multi-arch method with
- predicate.
- * gdbarch.h, gdbarch.c: Regneerate.
-
-2003-03-05 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (struct d10v_unwind_cache): Add field "base".
- (d10v_frame_unwind_cache): Rewrite code computing the base and SP.
- Do not use d10v_read_sp or d10v_read_fp when obtaining register
- values.
-
-2003-03-10 David Carlton <carlton@math.stanford.edu>
-
- * buildsym.c (scan_for_anonymous_namespaces): Allow
- "{anonymous}".
- * cp-support.c (cp_is_anonymous): Scan for "{anonymous}".
-
-2003-03-07 David Carlton <carlton@math.stanford.edu>
-
- * symtab.c (lookup_partial_symbol): Replace uses of
- SYMBOL_MATCHES_NATURAL_NAME by equivalent uses of
- SYMBOL_NATURAL_NAME, strcmp_iw.
- * symtab.h (SYMBOL_MATCHES_NATURAL_NAME): Delete.
- * minsyms.c (lookup_minimal_symbol_linkage): Make static.
- (lookup_minimal_symbol_natural): Ditto.
- (lookup_minimal_symbol): Only search on linkage names; rename
- first argument to 'linkage_name'.
- (lookup_minimal_symbol_linkage): Delete.
- (lookup_minimal_symbol_natural): Delete.
- (add_minsym_to_demangled_hash_table): Go back to using
- SYMBOL_DEMANGLED_NAME instead of SYMBOL_NATURAL_NAME.
- (lookup_minimal_symbol_aux): Don't use
- SYMBOL_MATCHES_NATURAL_NAME: do a strcmp_iw on
- SYMBOL_DEMANGLED_NAME instead. Add comment.
- (build_minimal_symbol_hash_tables): Go back to only adding to
- demangled has table if SYMBOL_DEMANGLED_NAME is non-NULL.
- * symtab.h: Delete declarations for lookup_minimal_symbol_linkage
- and lookup_minimal_symbol_natural.
- * valops.c (find_function_in_inferior): Use lookup_symbol_linkage
- instead of lookup_symbol. Change comment.
- * remote.c (remote_check_symbols): Use
- lookup_minimal_symbol_linkage_or_natural instead of
- lookup_minimal_symbol, but add FIXME comment as well.
- * objc-lang.c: Ditto.
- * c-exp.y: Use lookup_minimal_symbol_linkage_or_natural instead of
- lookup_minimal_symbol.
- * p-exp.y: Ditto.
- * objc-exp.y: Ditto.
- * m2-exp.y: Ditto.
- * jv-exp.y (push_expression_name): Ditto.
- * f-exp.y: Ditto.
- * printcmd.c (address_info): Ditto.
- * symtab.h: Declare lookup_minimal_symbol_linkage_or_natural.
- * minsyms.c (lookup_minimal_symbol_linkage_or_natural): New.
- * ax-gdb.c (gen_var_ref): Use SYMBOL_LINKAGE_NAME instead of
- DEPRECATED_SYMBOL_NAME.
- * tracepoint.c (scope_info): Ditto.
- * symtab.c (find_pc_sect_line): Ditto.
- * stabsread.c (define_symbol): Ditto.
- * sol-thread.c (info_cb): Ditto.
- * printcmd.c (address_info): Ditto.
- * hppa-tdep.c (hppa_fix_call_dummy): Ditto.
- (hppa_in_solib_call_trampoline): Ditto.
- * findvar.c (read_var_value): Ditto.
-
-2003-03-06 David Carlton <carlton@math.stanford.edu>
-
- * minsyms.c (add_minsym_to_hash_table): Use SYMBOL_LINKAGE_NAME.
- (add_minsym_to_demangled_hash_table): Use SYMBOL_NATURAL_NAME.
- (build_minimal_symbol_hash_tables): Add all minsyms to demangled
- hash table.
- (install_minimal_symbols): Use SYMBOL_LINKAGE_NAME.
- (find_solib_trampoline_target): Ditto.
- (compare_minimal_symbols): Ditto.
- (compact_minimal_symbols): Ditto.
- * symtab.h (DEPRECATED_SYMBOL_MATCHES_NAME): Delete.
- * minsyms.c (lookup_minimal_symbol_text): Replace use of
- DEPRECATED_SYMBOL_MATCHES_NAME by strcmp on linkage name.
- (lookup_minimal_symbol_solib_trampoline): Ditto.
- * symtab.h: Declare lookup_minimal_symbol_linkage,
- lookup_minimal_symbol_natural.
- * minsyms.c (lookup_minimal_symbol_aux): New function.
- (lookup_minimal_symbol_linkage): Ditto.
- (lookup_minimal_symbol_natural): Ditto.
- (lookup_minimal_symbol): Move body into
- lookup_minimal_symbol_aux.
-
-2003-03-05 Andrew Cagney <cagney@redhat.com>
-
- * d10v-tdep.c (struct frame_extra_info): Delete unused structure.
- (struct d10v_unwind_cache): Delete field "frameless". Replace
- "next_addr" with "sp_offset". Add "r11_offset".
- (d10v_frame_unwind_cache): Update.
- (prologue_find_regs): Update. When "mv r11, sp", save the
- "sp_offset" in "r11_offset". Recognize "st rn, @r11", note that
- RN was saved in r11_offset.
-
-2003-03-05 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (deprecated_update_frame_pc_hack): Also update the the
- cached PC value in the next frame.
-
-2003-03-05 Andrew Cagney <cagney@redhat.com>
-
- * frame.h (struct frame_info): Replace "id_unwind_cache_p" and
- "id_unwind_cache" with "id".
- (frame_id_unwind): Delete declaration.
- * frame.c (frame_id_unwind): Delete function.
- (get_prev_frame): Call the frame id unwind method directly. Store
- the returned next frame's ID value in NEXT_FRAME. Note that there
- is a problem with the wrong unwind ID being called with the wrong
- unwind cache.
-
-2003-03-05 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in (FLAGS_TO_PASS): Add LDFLAGS.
-
-2003-03-05 James Ingham <jingham@apple.com>
- Daniel Jacobowitz <drow@mvista.com>
-
- * cp-abi.c: Include "command.h", "gdbcmd.h", and "ui-out.h".
- (auto_cp_abi): New variable.
- (current_cp_abi, num_cp_abis): Make static.
- (CP_ABI_MAX): Define.
- (cp_abis): Turn into an array.
- (value_virtual_fn_field): Fix formatting.
- (switch_to_cp_abi, register_cp_abi): Update. register_cp_abi now
- takes a pointer.
- (set_cp_abi_as_auto_default, set_cp_abi_cmd, show_cp_abi_cmd)
- (list_cp_abis, _initialize_cp_abi): New functions.
- * cp-abi.h: Add prototype for set_cp_abi_as_auto_default. Remove
- declarations for cp_abis, num_cp_abis, current_cp_abi, and
- switch_to_cp_abi. Update prototype for register_cp_abi.
- * Makefile.in (cp-abi.o): Update dependencies.
- * minsyms.c (install_minimal_symbols): Call set_cp_abi_as_auto_default
- instead of switch_to_cp_abi.
- * gnu-v2-abi.c (_initialize_gnu_v2_abi): Likewise. Update call to
- register_cp_abi.
- * gnu-v3-abi.c (_initialize_gnu_v3_abi): Update call to
- register_cp_abi.
- * hpacc-abi.c (_initialize_hpacc_abi): Likewise.
-
-2003-03-05 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2expr.c (new_dwarf_expr_context): Add (void) to definition.
- * dwarf2loc.c: Include "regcache.h".
- (dwarf_expr_read_reg): Rename regnum argument to dwarf_regnum. Use
- register_size.
- * Makefile.in (dwarf2loc.o): Update dependencies.
-
-2003-03-04 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_io_reg_read_command): Fix to handle case when the
- number of io registers reported by remote target is not a multiple of
- step.
-
-2003-03-04 David Carlton <carlton@math.stanford.edu>
-
- * symtab.c (lookup_partial_symbol): Add linkage_name argument.
- (lookup_symbol_aux_psymtabs): Update call to
- lookup_partial_symbol.
- (lookup_transparent_type, find_main_psymtab)
- (make_symbol_overload_list): Ditto.
-
-2003-03-04 Kazu Hirata <kazu@cs.umass.edu>
-
- * MAINTAINERS (Write after approval): Update my email address.
-
-2003-03-03 Andrew Cagney <cagney@redhat.com>
-
- Make MAX_REGISTER_RAW_SIZE and MAX_REGISTER_VIRTUAL_SIZE optional.
- * gdbarch.sh (DEPRECATED_MAX_REGISTER_RAW_SIZE): Variable with
- predicate. Replace MAX_REGISTER_RAW_SIZE.
- (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Ditto for
- MAX_REGISTER_VIRTUAL_SIZE.
- * regcache.c (legacy_max_register_raw_size): New function.
- (legacy_max_register_virtual_size): New function.
- * defs.h (MAX_REGISTER_VIRTUAL_SIZE): Define.
- (MAX_REGISTER_RAW_SIZE): Define.
- (legacy_max_register_raw_size): Declare.
- (legacy_max_register_virtual_size): Declare.
- * config/sparc/tm-sparc.h (DEPRECATED_MAX_REGISTER_RAW_SIZE)
- (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Update.
- * config/sparc/tm-sp64.h (DEPRECATED_MAX_REGISTER_RAW_SIZE)
- (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Ditto.
- * config/pa/tm-hppa.h (DEPRECATED_MAX_REGISTER_RAW_SIZE)
- (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE): Ditto.
- * config/pa/tm-hppa64.h (DEPRECATED_MAX_REGISTER_RAW_SIZE): Ditto.
- * config/ia64/tm-ia64.h (DEPRECATED_MAX_REGISTER_RAW_SIZE): Ditto.
- * config/i386/tm-ptx.h (DEPRECATED_MAX_REGISTER_RAW_SIZE): Ditto.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * h8300-tdep.c (h8300_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * cris-tdep.c (cris_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
- * d10v-tdep.c (d10v_gdbarch_init): Do not set
- max_register_raw_size or max_register_virtual_size.
-
-2003-03-03 David Carlton <carlton@math.stanford.edu>
-
- * symtab.h (DEPRECATED_SYMBOL_MATCHES_NAME): Rename from
- SYMBOL_MATCHES_NAME, add comment.
- (SYMBOL_MATCHES_NATURAL_NAME): New.
- * minsyms.c (lookup_minimal_symbol_solib_trampoline): Replace
- SYMBOL_MATCHES_NAME with DEPRECATED_SYMBOL_MATCHES_NAME.
- (lookup_minimal_symbol, lookup_minimal_symbol_text): Ditto.
- * symtab.c (lookup_partial_symbol): Use
- SYMBOL_MATCHES_NATURAL_NAME, not SYMBOL_MATCHES_NAME. Delete
- unhelpful comment.
- (lookup_block_symbol): Use SYMBOL_MATCHES_NATURAL_NAME, not
- SYMBOL_MATCHES_NAME.
- Fix for PR c++/33.
-
-2003-03-03 David Carlton <carlton@math.stanford.edu>
-
- * symtab.h (SYMBOL_MATCHES_REGEXP): Delete.
- * symtab.c (search_symbols): Replace uses of SYMBOL_MATCHES_REGEXP
- by regexp matching against SYMBOL_NATURAL_NAME.
-
-2003-03-03 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c (find_method): Extract code into collect_methods.
- (collect_methods): New.
-
-2003-03-02 Mark Kettenis <kettenis@gnu.org>
-
- * i386bsd-tdep.c (i386bsd_sigcontext_addr): Use get_next_frame and
- get_frame_base.
-
- * i386-tdep.c (i386_pe_skip_trampoline_code): Replace usage of
- DEPRECATED_SYMBOL_NAME with SYMBOL_LINKAGE_NAME.
-
-2003-03-02 Stephane Carrez <stcarrez@nerim.fr>
-
- * arch-utils.c (generic_register_byte): Fix to use the loop index
- and not regnum when summing the size of all registers up to regnum.
-
-2003-03-01 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_FRAME_INIT_SAVED_REGS): Rename
- FRAME_INIT_SAVED_REGS.
- * gdbarch.h, gdbarch.c: Regenerate.
- * stack.c (frame_info): Update.
- * sh-tdep.c (sh_find_callers_reg, sh64_get_saved_pr): Update.
- (sh_init_extra_frame_info, sh64_init_extra_frame_info): Update.
- (sh64_get_saved_register, sh_pop_frame, sh64_pop_frame): Update.
- * ns32k-tdep.c (ns32k_pop_frame): Update.
- * mips-tdep.c (mips_pop_frame): Update.
- * m68hc11-tdep.c (m68hc11_pop_frame): Update.
- * ia64-tdep.c (ia64_frame_chain): Update.
- (ia64_frame_saved_pc, ia64_get_saved_register): Update.
- (ia64_frameless_function_invocation): Update.
- (ia64_init_extra_frame_info): Update.
- (ia64_pop_frame_regular): Update.
- * frame.h (struct frame_info): Update comment.
- (DEPRECATED_FRAME_INIT_SAVED_REGS): Rename macro.
- * frame.c (frame_saved_regs_register_unwind): Update.
- (frame_saved_regs_register_unwind): Update.
- (deprecated_generic_get_saved_register): Update.
- * cris-tdep.c: Update comment.
- * config/sparc/tm-sparc.h (DEPRECATED_FRAME_INIT_SAVED_REGS):
- Rename macro.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Update.
- * x86-64-tdep.c (x86_64_init_abi): Update.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * v850-tdep.c (v850_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * sh-tdep.c (sh_gdbarch_init): Update.
- * s390-tdep.c (s390_gdbarch_init): Update.
- * rs6000-tdep.c (rs6000_gdbarch_init): Update.
- * ppc-linux-tdep.c (ppc_linux_init_abi): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * mn10300-tdep.c (mn10300_gdbarch_init): Update.
- * mips-tdep.c (mips_gdbarch_init): Update.
- * mcore-tdep.c (mcore_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Update.
- * ia64-tdep.c (ia64_gdbarch_init): Update.
- * i386-tdep.c (i386_gdbarch_init): Update.
- * frv-tdep.c (frv_gdbarch_init): Update.
- * avr-tdep.c (avr_gdbarch_init): Update.
- * arm-tdep.c (arm_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
-
-2003-03-01 Andrew Cagney <cagney@redhat.com>
-
- * main.c (captured_main): Add OPT_WINDOWS and OPT_NOWINDOWS to
- option enum and switch. When no windows, set the interpreter to
- INTERP_CONSOLE.
-
-2003-03-01 Andrew Cagney <cagney@redhat.com>
-
- * main.c (captured_main): Replace magic option characters with an
- enum.
-
-2003-03-01 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_INIT_EXTRA_FRAME_INFO): Rename
- INIT_EXTRA_FRAME_INFO.
- * gdbarch.h, gdbarch.c: Regenerate.
- * arm-tdep.c: Update comments.
- * sh-tdep.c, mcore-tdep.c, m68hc11-tdep.c: Ditto.
- * i386-interix-tdep.c, hppa-tdep.c, h8300-tdep.c: Ditto.
- * frame.h, avr-tdep.c: Ditto.
- * frame.c (get_prev_frame): DEPRECATED_INIT_EXTRA_FRAME_INFO.
- (create_new_frame, legacy_get_prev_frame): Ditto.
- * config/sparc/tm-sparc.h (DEPRECATED_INIT_EXTRA_FRAME_INFO): Rename.
- * config/pa/tm-hppa.h (DEPRECATED_INIT_EXTRA_FRAME_INFO): Rename.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Initialize
- deprecated_init_extra_frame_info instead of init_extra_frame_info.
- * x86-64-tdep.c (x86_64_init_abi): Ditto.
- * v850-tdep.c (v850_gdbarch_init): Ditto.
- * sparc-tdep.c (sparc_gdbarch_init): Ditto.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
- * ppc-linux-tdep.c (ppc_linux_init_abi): Ditto.
- * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
- * mips-tdep.c (mips_gdbarch_init): Ditto.
- * mcore-tdep.c (mcore_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * i386-interix-tdep.c (i386_interix_init_abi): Ditto.
* hppa-tdep.c (hppa_gdbarch_init): Ditto.
* h8300-tdep.c (h8300_gdbarch_init): Ditto.
* frv-tdep.c (frv_gdbarch_init): Ditto.
+ * d10v-tdep.c (d10v_gdbarch_init): Ditto.
* cris-tdep.c (cris_gdbarch_init): Ditto.
* avr-tdep.c (avr_gdbarch_init): Ditto.
* arm-tdep.c (arm_gdbarch_init): Ditto.
* alpha-tdep.c (alpha_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
-
-2003-03-01 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (register_type): New function with predicate.
- (REGISTER_VIRTUAL_TYPE): Change to function with predicate.
- * gdbarch.h, gdbarch.c: Re-generate.
- * arch-utils.c (generic_register_byte): Use generic_register_size.
- (generic_register_size): When available, use
- gdbarch_register_type.
- * regcache.c (init_regcache_descr): When available, initialize the
- register type array using gdbarch_register_type. If the
- architecture supplies gdbarch_register_type, do not use the legacy
- regcache layout.
- * d10v-tdep.c (d10v_register_type): Replace
- d10v_register_virtual_type.
- (d10v_gdbarch_init): Set register_type instead of
- register_virtual_type.
-
-2003-03-01 Andrew Cagney <cagney@redhat.com>
-
- * Makefile.in (ax-gdb.o): Update dependencies.
- * ax-gdb.c: Include "regcache.h".
- (gen_expr): Use register_type instead of REGISTER_VIRTUAL_TYPE.
- * findvar.c (value_of_register): Ditto.
- * infcmd.c (default_print_registers_info): Ditto.
-2003-03-01 Mark Kettenis <kettenis@gnu.org>
+2004-01-13 Daniel Jacobowitz <drow@mvista.com>
- * i386-linux-tdep.c (find_minsym_and_objfile): Replace usage of
- DEPRECATED_SYMBOL_NAME with SYMBOL_LINKAGE_NAME.
+ * infrun.c (follow_fork_mode_ask): Remove.
+ (follow_fork_mode_kind_names): Remove follow_fork_mode_ask.
+ (follow_fork): Simplify and remove internal error for
+ follow_fork_mode_ask.
+ (_initialize_infrun): Update "set follow-fork-mode" help text.
-2003-03-01 Mark Kettenis <kettenis@gnu.org>
+2004-01-13 Andrew Cagney <cagney@redhat.com>
- * i386-linux-tdep.c (find_minsym_and_objfile): Use strcmp instead
- of STREQ.
-
-2003-02-28 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in (dwarf2loc.o): Update dependencies.
- * ax-gdb.c (gen_var_ref): Handle LOC_COMPUTED and LOC_COMPUTED_ARG.
- * dwarf2expr.c (read_uleb128, read_sleb128): Make non-static.
- * dwarf2expr.h (read_uleb128, read_sleb128): Add prototypes.
- * dwarf2loc.c: Include "ax.h" and "ax-gdb.h".
- (locexpr_tracepoint_var_ref): New function.
- (dwarf2_locexpr_funcs): Add locexpr_tracepoint_var_ref.
-
-2003-02-28 Andrew Cagney <cagney@redhat.com>
-
- * regcache.c (register_size): New function.
- * regcache.h (register_size): Declare
- * d10v-tdep.c: Use register_size instead of REGISTER_RAW_SIZE, use
- max_register_size instead of MAX_REGISTER_RAW_SIZE.
-
-2003-02-28 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c (decode_compound): Extract code into find_method.
- (find_method): New.
-
-2003-02-28 J. Brobecker <brobecker@gnat.com>
-
- * Makefile.in: Add rules to build and link in observer.o.
-
-2003-02-27 J. Brobecker <brobecker@gnat.com>
-
- * observer.c: Minor comments edits.
-
-2003-02-27 J. Brobecker <brobecker@gnat.com>
-
- * observer.h, observer.c: New file.
-
-2003-02-27 Andrew Cagney <cagney@redhat.com>
-
- * arm-tdep.c (gdb_print_insn_arm): Rename _bfd to just bfd.
-
-2003-02-27 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-tdep.c (M6811_OP_LDX_EXT, M6811_OP_STS_EXT): New defines.
- (M6812_OP_STS_EXT): Likewise.
- (m6811_prologue): Use the above to recognize prologue.
- (m6812_prologue): Likewise.
-
-2003-02-27 David Carlton <carlton@math.stanford.edu>
-
- * symfile.c (compare_symbols): Use SYMBOL_NATURAL_NAME, not
- SYMBOL_PRINT_NAME.
- (compare_psymbols): Ditto.
- * symtab.c (lookup_partial_symbol, lookup_block_symbol): Ditto.
-
-2003-02-27 Michael Snyder <msnyder@redhat.com>
-
- * f-lang.c (build_fortran_types): New function.
- (_initialize_f_language): Gdbarch-register built-in fortran types.
- * doublest.c (extract_floating): Fix warning text.
-
-2003-02-27 Andrew Cagney <cagney@redhat.com>
-
- * gdbarch.sh (DEPRECATED_PUSH_DUMMY_FRAME): Procedure with
- predicate. Replaces PUSH_DUMMY_FRAME.
- * gdbarch.h, gdbarch.c: Regnerate.
- * valops.c (hand_function_call): Update. Call
- generic_push_dummy_frame directly.
- * vax-tdep.c (vax_gdbarch_init): Update.
- * sparc-tdep.c (sparc_gdbarch_init): Update.
- * ns32k-tdep.c (ns32k_gdbarch_init): Update.
- * m68k-tdep.c (m68k_gdbarch_init): Update.
- * hppa-tdep.c (hppa_gdbarch_init): Update.
- * alpha-tdep.c (alpha_gdbarch_init): Update.
- * config/sparc/tm-sparc.h (DEPRECATED_PUSH_DUMMY_FRAME): Update.
- * config/pa/tm-hppa.h (DEPRECATED_PUSH_DUMMY_FRAME): Update.
- * inferior.h (PUSH_DUMMY_FRAME): Delete definition.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Don't set
- push_dummy_frame to generic_push_dummy_frame.
- * v850-tdep.c (v850_gdbarch_init): Ditto.
- * sh-tdep.c (sh_gdbarch_init): Ditto.
- * s390-tdep.c (s390_gdbarch_init): Ditto.
- * rs6000-tdep.c (rs6000_gdbarch_init): Ditto.
- * mn10300-tdep.c (mn10300_gdbarch_init): Ditto.
- * mips-tdep.c (mips_gdbarch_init): Ditto.
- * mcore-tdep.c (mcore_gdbarch_init): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Ditto.
- * ia64-tdep.c (ia64_gdbarch_init): Ditto.
- * i386-tdep.c (i386_gdbarch_init): Ditto.
- * h8300-tdep.c (h8300_gdbarch_init): Ditto.
- * frv-tdep.c (frv_gdbarch_init): Ditto.
- * d10v-tdep.c (d10v_gdbarch_init): Ditto.
- * cris-tdep.c (cris_gdbarch_init): Ditto.
- * avr-tdep.c (avr_gdbarch_init): Ditto.
- * arm-tdep.c (arm_gdbarch_init): Ditto.
-
-2003-02-26 Kevin Buettner <kevinb@redhat.com>
-
- * mips-tdep.c (show_mips_abi): New function.
- (_initialize_mips_tdep): Use show_mips_abi() to implement the
- command ``show mips abi''.
-
-2003-02-26 Jeff Johnston <jjohnstn@redhat.com>
+ * configure.in: Update copyright year.
+ (build_warnings): Add -Wunused-label.
+ * configure: Re-generate.
- From Elena Zannoni <ezannoni@redhat.com>
- * dbxread.c (process_one_symbol): Only record line 0 if one or
- more sline entries have been seen for the function.
+2004-01-12 Andrew Cagney <cagney@redhat.com>
-2003-02-26 Michael Chastain <mec@shout.net>
+ * exec.h (exec_ops): Make "extern".
- * configure: Regenerate with autoconf 000227.
+ * mips-tdep.c (mips_pseudo_register_read): Don't return a value,
+ the function is void.
+ (mips_pseudo_register_write): Ditto.
-2003-02-26 Michael Chastain <mec@shout.net>
+2004-01-12 Andrew Cagney <cagney@redhat.com>
- Close PR build/660.
- * PROBLEMS (i[3456]86-*-linux*): Note explicit error message
- for old libc5/glibc.
- * gdb_thread_db.h: Die if not HAVE_UINTPTR_T.
+ * stack.c (frame_info): Delete DEPRECATED_PRINT_EXTRA_FRAME_INFO
+ call. Never defined.
+ * sparc-tdep.h (struct frame_info): Add opaque declaration.
+ * sparc64-tdep.h (struct gdbarch): Add opaque declaration.
+ (struct sparc_gregset, struct regcache): Ditto.
+ * sparc-nat.c: Update copyright. Specify "GNU/Linux".
-2003-02-26 Kris Warkentin <kewarken@qnx.com>
+2004-01-12 Andrew Cagney <cagney@redhat.com>
- * defs.h (gdb_osabi): Add GDB_OSABI_QNXNTO.
- * osabi.c (gdb_osabi_names): Add "QNX Neutrino".
+ * mi/ChangeLog: Delete file. Renamed to ...
+ * mi/ChangeLog-1999-2003: New file.
+ * tui/ChangeLog: Delete file. Renamed to ...
+ * tui/ChangeLog-1998-2003: New file.
-2003-02-26 Michael Chastain <mec@shout.net>
+2004-01-11 Mark Kettenis <kettenis@gnu.org>
- * configure.in: New variable HAVE_UINTPTR_T.
- * configure, config.in: Regenerated.
+ * sparc64nbsd-tdep.c: Include "regset.h".
+ (sparc64nbsd_sizeof_struct_reg, sparc64nbsd_sizeof_struct_fpreg):
+ Remove variables.
+ (fetch_core_registers): Remove function.
+ (sparc64nbsd_core_fns): Remove variable.
+ (sparc64nbsd_supply_gregset, sparc64nbsd_supply_fpregset): New
+ functions.
+ (sparc64nbsd_init_abi): Initialize TDEP->gregset,
+ TDEP->sizeof_gregset, TDEP->fpregset and TDEP->sizeof_gregset.
+ (_initialize_sparc64nbsd_tdep): Remove call to add_core_fns.
+
+ * sparc-tdep.c (sparc32_extract_struct_value_address): Rename from
+ sparc_extract_struct_value_address.
+ (sparc32_gdbarch_init): Set extract_struct_value_address.
+ * sparc64-tdep.c (sparc64_extract_struct_value_address): New
+ function.
+ (sparc64_init_abi): Set extract_struct_value_address. Don't set
+ return_value_on_stack.
-2003-02-26 Daniel Jacobowitz <drow@mvista.com>
+ * NEWS: Mention that %cs and %ss have been added to the AMD64
+ configurations
- Fix PR build/1097.
- * utils.c (gdb_realpath): Move closing brace outwards one #endif.
+ * frame.c: Update copyright year.
+ (get_prev_frame): Improve comment.
-2003-02-25 Andrew Cagney <cagney@redhat.com>
+ * sparc64fbsd-tdep.c: Include "regset.h".
+ (sparc64fbsd_sizeof_struct_reg, sparc64fbsd_sizeof_struct_fpreg):
+ Remove variables.
+ (fetch_core_registers): Remove function.
+ (sparc64fbsd_core_fns): Remove variable.
+ (sparc64fbsd_supply_gregset, sparc64fbsd_supply_fpregset): New
+ functions.
+ (sparc64fbsd_init_abi): Initialize TDEP->gregset,
+ TDEP->sizeof_gregset, TDEP->fpregset and TDEP->sizeof_gregset.
+ (_initialize_sparc64fbsd_tdep): Remove call to add_core_fns.
- * frame.c (get_prev_frame): Add comment on check for
- inside_entry_func. Only check for inside_entry_file when not a
- dummy and not a sentinel. Check that the new frame is not inner
- to the old frame.
+ * sparcnbsd-tdep.c: Include "regset.h".
+ (fetch_core_registers): Remove function.
+ (sparcnbsd_core_fns, sparcnbsd_elfcore_fns): Remove varaibles.
+ (sparc32nbsd_supply_gregset, sparc32nbsd_supply_fpregset): New
+ functions.
+ (sparc32nbsd_init_abi): Initialize TDEP->gregset and
+ TDEP->fpregset.
+ (_initialize_sparcnbsd_tdep): Remove calls to add_core_fns.
+
+ * sparc-tdep.h (struct regset): Provide opaque declaration.
+ (struct gdbarch_tdep): Add gregset, sizeof_gregset,
+ fpregset and sizeof_fpregset members.
+ * sparc-tdep.c (struct regset): Provide opaque declaration.
+ (sparc_regset_from_core_section): New function.
+ (sparc32_gdbarch_init): Initialize TDEP->gregset,
+ TDEP->sizeof_gregset, TDEP->fpregset and TDEP->sizeof_fpregset.
+ Set regset_from_core_section when appropriate.
+
+2004-01-10 Mark Kettenis <kettenis@gnu.org>
+
+ * x86-64-tdep.c (amd64_non_pod_p): New function.
+ (amd64_classify_aggregate): Return class memory for non-POD
+ C++ structure types.
+
+ * x86-64-tdep.c (amd64_push_arguments): Add struct_return
+ argument. Use it to reserve a register if necessary.
+ (amd64_push_dummy_call): Pass STRUCT_RETURN in call to
+ amd64_push_arguments.
+
+ * x86-64-tdep.c (amd64_classify_aggregate): Ignore static fields.
+
+ * x86-64-tdep.c (amd64_register_info): Add %cs and %ss. Adjust
+ register numbers in comments.
+ * x86-64-tdep.h: Update copyright year.
+ (X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM, X86_64_XMM1_REGNUM):
+ Adjust for addition of %cs and %ss.
+ * amd64fbsd-nat.c: Update copyright year.
+ (reg_offset): Add register offsets for %cs and %ss.
+ * amd64fbsd-tdep.c: Update copyright year.
+ (amd64fbsd_r_reg_offset): Add register offsets for %cs and %ss.
+ (amd64fbsd_sc_reg_offset): Likewise.
+ * x86-64-linux-nat.c: Update copyright year.
+ (x86_64_linux_gregset64_reg_offset): Add register offsets for %cs
+ and %ss.
+ * amd64nbsd-nat.c: Update copyright year.
+ (amd64nbsd32_r_reg_offset): Add register offsets for %cs and %ss.
+ * amd64nbsd-tdep.c: Update copyright year.
+ (amd64nbsd_r_reg_offset): Add register offsets for %cs and %ss.
+ * x86-64-linux-tdep.c: Update copyright year.
+ (user_to_gdb_regmap): Add mapping for %cs and %ss.
+ (x86_64_linux_sc_reg_offset): Adjust for addition of %cs and %ss.
+ * regformats/reg-x86-64.dat: Add %cs and %ss.
+
+ * blockframe.c (inside_entry_func): Reformat. Introduce new local
+ variables to prevent long lines. Update comments to reflect
+ reality.
-2003-02-25 Andrew Cagney <cagney@redhat.com>
+2004-01-09 David Carlton <carlton@kealia.com>
- * frame.c (frame_debug): New variable.
- (_initialize_frame): Add "set/show debug frame" command.
- (get_prev_frame): When frame_debug, print reason why unwind
- failed.
+ Checked in by Elena Zannoni <ezannoni@redhat.com>.
+ * dwarf2read.c (read_namespace): Pull out name-generating code
+ into namespace_name. Rename previous_namespace to previous_prefix
+ and processing_current_namespace to processing_current_prefix..
+ (namespace_name): New function.
+ (add_partial_symbol): Substitute uses of pdi->name with
+ actual_name.
+ * cp-support.h: Rename processing_current_namespace to
+ processing_current_prefix.
+ Update copyright year.
+ * cp-namespace.c: Rename processing_current_namespace to
+ processing_current_prefix.
+ Update copyright year.
-2003-02-25 Michael Chastain <mec@shout.net>
+2004-01-09 Andrew Cagney <cagney@redhat.com>
- * PROBLEMS (i[3456]86-*-linux*): Require glibc 2.1.3 or later
- to avoid uintptr_t definition problems.
+ * jv-valprint.c, ser-unix.c: Add missing copyright years.
-2003-02-25 David Carlton <carlton@math.stanford.edu>
+2004-01-09 Mark Kettenis <kettenis@gnu.org>
- * symtab.h (SYMBOL_NATURAL_NAME): New macro.
- (SYMBOL_LINKAGE_NAME): Ditto.
- (SYMBOL_PRINT_NAME): Use SYMBOL_NATURAL_NAME and
- SYMBOL_LINKAGE_NAME.
- (struct general_symbol_info): Expand comment.
- (DEPRECATED_SYMBOL_NAME): Rename from SYMBOL_NAME.
- (SYMBOL_MATCHES_NAME): Use DEPRECATED_SYMBOL_NAME.
- (SYMBOL_MATCHES_REGEXP): Ditto.
- * symtab.c (symbol_natural_name): New function.
- * objfiles.h: Replace all uses of SYMBOL_NAME by
- DEPRECATED_SYMBOL_NAME.
- * xcoffread.c, valops.c, typeprint.c, tracepoint.c: Ditto.
- * symtab.c, symmisc.c, symfile.c, stack.c, stabsread.c: Ditto.
- * somsolib.c, sol-thread.c, rs6000-tdep.c, p-valprint.c: Ditto.
- * printcmd.c, objfiles.c, objc-lang.c, mipsread.c: Ditto.
- * minsyms.c, mdebugread.c, linespec.c, jv-lang.c: Ditto.
- * i386-tdep.c, i386-linux-tdep.c, hpread.c, hppa-tdep.c: Ditto.
- * gnu-v2-abi.c, f-valprint.c, findvar.c, expprint.c: Ditto.
- * dwarfread.c, dwarf2read.c, dbxread.c, c-valprint.c: Ditto.
- * cp-valprint.c, coffread.c, buildsym.c, breakpoint.c: Ditto.
- * blockframe.c, ax-gdb.c, arm-linux-tdep.c, ada-lang.c: Ditto.
- * ada-exp.y: Ditto.
- * ada-exp.y: Update copyright.
- * sol-thread.c, mipsread.c, jv-lang.c, f-valprint.c: Ditto.
- * cp-valprint.c: Ditto.
+ * dbxread.c (read_dbx_symtab): Ignore N_PATCH stabs instead of
+ complaining.
+ (process_one_symbol): Deal with N_PATCH stabs.
-2003-02-25 Jeff Johnston <jjohnstn@redhat.com>
+2004-01-09 Elena Zannoni <ezannoni@redhat.com>
- * infptrace.c (detach): Do not flag error if ptrace detach fails
- and errno is set to ESRCH.
+ * dwarf2read.c (read_array_type): Discard FORTRAN_HACK macro and
+ ifdeffed code.
+ Update copyright year.
-2003-02-24 Andrew Cagney <cagney@redhat.com>
+2004-01-08 Michael Chastain <mec.gnu@mindspring.com>
- * infptrace.c (udot_info): Change type of udot_off to long. Use
- paddr when printing udot_off's value.
+ * config/pa/tm-hppa.h: Update extern declarations for
+ hppa32_hpux_frame_saved_pc_in_sigtramp,
+ hppa32_hpux_frame_base_before_sigtramp, and
+ hppa32_hpux_frame_find_saved_regs_in_sigtramp.
-2003-02-24 David Carlton <carlton@math.stanford.edu>
+2004-01-08 Michael Chastain <mec.gnu@mindspring.com>
- * symtab.c (make_symbol_overload_list): Only read in partial
- symtabs containing a matching partial symbol.
+ * config/pa/tm-hppah.h: Update copyright years.
-2003-02-24 David Carlton <carlton@math.stanford.edu>
+2004-01-08 Andrew Cagney <cagney@redhat.com>
- * symtab.c (lookup_partial_symbol): Use strcmp_iw_ordered to
- do the comparison, not strcmp.
- * symfile.c (compare_psymbols): Ditto.
- * defs.h: Declare strcmp_iw_ordered.
- * utils.c (strcmp_iw_ordered): New function.
+ * mips-tdep.c (mips_n32n64_reg_struct_has_addr): Delete function.
+ (mips_o32_reg_struct_has_addr): Delete function.
+ (mips_gdbarch_init): Update.
+ (mips_extract_struct_value_address): Delete function.
-2003-02-24 Jim Blandy <jimb@redhat.com>
+2004-01-08 David Mosberger <davidm@hpl.hp.com>
- * MAINTAINERS (GNU/Linux/x86, linespec, breakpoints, Scheme
- support, shared libs): Remove my name from here, to better reflect
+ * ia64-linux-tdep.c: Update GATE_AREA_END value to reflect
reality.
-2003-02-24 Kris Warkentin <kewarken@qnx.com>
+2004-01-07 Andrew Cagney <cagney@redhat.com>
- * target.h: (HAVE_CONTINUABLE_WATCHPOINT): Define.
- (target_ops): Add to_have_continuable_watchpoint.
- * target.c (update_current_target): Add INHERIT line for
- to_have_continuable_watchpoint.
- * infrun.c: Remove HAVE_CONTINUABLE_WATCHPOINT defines.
- * config/i386/nm-i386.h, config/i386/nm-i386sco5.h,
- config/i386/nm-i386sol2.h, config/s390/nm-linux.h,
- config/sparc/nm-sun4sol2.h: HAVE_CONTINUABLE_WATCHPOINT defined as 1.
+ * mips-tdep.c (mips_gdbarch_init): Set elf_flags to the previous
+ architecture's elf flags (when available).
-2003-02-24 Elena Zannoni <ezannoni@redhat.com>
-
- * MAINTAINERS (Core): Drop main.c and top.c. Clarify event loop
- maintainership.
-
-2003-02-24 Kris Warkentin <kewarken@qnx.com>
-
- * solib.c (solib_open): Call target defined search function after
- failing with solib-search-path.
- * solist.h (target_so_ops): Add find_and_open_solib function hook and
- create define TARGET_SO_FIND_AND_OPEN_SOLIB.
-
-2003-02-24 Kris Warkentin <kewarken@qnx.com>
-
- * MAINTAINERS: Add myself to Write After section.
-
-2003-02-23 Stephane Carrez <stcarrez@nerim.fr>
+ * mips-tdep.c (mips_gdbarch_init): Move code determining the MIPS
+ FPU to the start, check the MIPS FPU when looking for an old
+ architecture.
+ (set_mipsfpu_single_command): Update the architecture.
+ (set_mipsfpu_double_command, set_mipsfpu_none_command): Ditto.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): long double is 64-bit wide.
+ * mips-tdep.c (MIPS_DEFAULT_MASK_ADDRESS_P): Delete macro.
+ (mips_mask_address_p): Add "tdep" parameter.
+ (show_mask_address, mips_addr_bits_remove): Update.
+ (mips_dump_tdep): Update.
+ (MIPS_DEFAULT_STACK_ARGSIZE): Delete macro.
+ (MIPS_STACK_ARGSIZE): Delete macro.
+ (mips_stack_argsize, mips_eabi_push_dummy_call): Update.
+ (mips_n32n64_push_dummy_call, mips_o32_push_dummy_call): Update.
+ (mips_o64_push_dummy_call, mips_o32_return_value): Update.
+ (mips_dump_tdep): Update.
+ (MIPS_SAVED_REGSIZE): Delete macro.
+ (MIPS_DEFAULT_SAVED_REGSIZE): Delete macro.
+ (mips_saved_regsize, mips_eabi_use_struct_convention): Update.
+ (mips_eabi_reg_struct_has_addr, mips_find_saved_regs): Update.
+ (mips_frame_saved_pc, mips16_heuristic_proc_desc): Update.
+ (mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call): Update.
+ (mips_o32_push_dummy_call, mips_o64_push_dummy_call): Update.
+ (mips_pop_frame, return_value_location): Update.
+ (mips_n32n64_return_value, mips_dump_tdep): Update.
-2003-02-22 Stephane Carrez <stcarrez@nerim.fr>
+ * mips-tdep.c (mips_gdbarch_init): Clean up code selecting the
+ MIPS ABI.
- * m68hc11-tdep.c (m68hc11_init_reggroups): New function.
- (m68hc11_add_reggroups): New function.
- (m68hc11_register_reggroup_p): New to register hard/soft reggroups.
- (m68hc11_gdbarch_init): Install the reggroups.
- (_initialize_m68hc11_tdep): Initialize them.
+ * mips-tdep.c: Update copyright.
+ (mips_gdbarch_init): Merge two code blocks handling the register
+ name and number layout.
-2003-02-21 James E Wilson <wilson@tuliptree.org>
+2004-01-02 Pawel Ostrowski <pasza@zodiac.mimuw.edu.pl>
- * MAINTAINERS: Update my email address.
+ * tracepoint.c (validate_actionline): Fix segv at EOF
-2003-02-21 David Carlton <carlton@math.stanford.edu>
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
- * arm-tdep.c (arm_gdbarch_init): Add break after default label.
+ * hpread.c (hpread_read_struct_type): Call SET_FIELD_PHYSNAME
+ properly for static fields.
-2003-02-21 Daniel Jacobowitz <drow@mvista.com>
+2004-01-06 Jeff Johnston <jjohnstn@redhat.com>
+ Jason Molenda <jmolenda@apple.com>
- Based on a patch from Daniel Berlin (dberlin@dberlin.org).
- * symtab.h: Add opaque declarations of struct axs_value and
- struct agent_expr.
- (enum address_class): Add LOC_COMPUTED and LOC_COMPUTED_ARG.
- (struct location_funcs): New type.
- (struct symbol): Add "loc" to aux_value.
- (SYMBOL_LOCATION_BATON, SYMBOL_LOCATION_FUNCS): New macros.
- * dwarf2read.c: Include "dwarf2expr.h".
- (dwarf2_symbol_mark_computed): New function.
- (read_func_scope): Use it.
- (var_decode_location): New function.
- (new_symbol): Use it.
- * dwarf2expr.c, dwarf2expr.h, dwarf2loc.c, dwarf2loc.h: New files.
-
- * Makefile.in (SFILES): Add dwarf2loc.c and dwarf2expr.c.
- (dwarf2expr_h, dwarf2loc_h): New variables.
- (COMMON_OBS): Add dwarf2expr.o and dwarf2loc.o.
- (dwarf2expr.o, dwarf2loc.o): New rules.
- (dwarf2read.o): Add $(dwarf2expr_h) and $(dwarf2loc_h).
- * buildsym.c (finish_block): Handle LOC_COMPUTED and
- LOC_COMPUTED_ARG.
- * findvar.c (symbol_read_needs_frame, read_var_value): Likewise.
- * m2-exp.y (yylex): Likewise.
- * printcmd.c (address_info, print_frame_args): Likewise.
- * stack.c (print_block_frame_locals, print_frame_arg_vars): Likewise.
- * symmisc.c (print_symbol, print_partial_symbols): Likewise.
- * ada-lang.c (ada_resolve_subexp, symtab_for_sym)
- (ada_add_block_symbols, fill_in_ada_prototype): Likewise.
- * symtab.c (lookup_block_symbol): Likewise.
-
-2003-02-20 Adam Fedor <fedor@gnu.org>
-
- * symtab.h: Remove objc_specific struct
- (SYMBOL_OBJC_DEMANGLED_NAME): Remove.
- * symtab.c (symbol_init_language_specific, symbol_demangled_name):
- Have language_objc use cplus_specific struct.
-
-2003-02-20 Tom Tromey <tromey@redhat.com>
-
- * jv-valprint.c (java_value_print): Look at TYPE_TAG_NAME, not
- TYPE_NAME, when printing a String value. PR java/1075.
-
-2003-02-20 Adam Fedor <fedor@gnu.org>
-
- * objc-lang.h (find_methods): Remove declaration.
- * objc-lang.c (find_methods): Make static.
-
-2003-02-20 Christopher Faylor <cgf@redhat.com>
-
- * win32-nat.c (get_image_name): Check return value from
- ReadProcessMemory.
- (child_xfer_memory): Ditto.
-
-2003-02-20 Alexandre Oliva <aoliva@redhat.com>
-
- * configure.in (TARGET_SYSTEM_ROOT): Set default to
- ${exec_prefix}/${target_alias}/sys-root. Match explicit
- '${exec_prefix}' (in addition to the expansion thereof) as
- relocatable.
- * configure: Rebuilt.
-
-2003-02-20 David Carlton <carlton@math.stanford.edu>
-
- * symtab.c (search_symbols): Revert the search_symbols part of my
- 2002-12-23 patch. Add comment.
-
-2002-02-20 Daniel Jacobowitz <drow@mvista.com>
-
- * coffread.c (coff_symfile_read): Clean up minimal symbols earlier.
- * dbxread.c (elfstab_build_psymtabs): Don't call
- install_minimal_symbols.
- (stabsect_build_psymtabs): Likewise.
- * elfread.c (elf_symfile_read): Call install_minimal_symbols
- earlier.
- * somread.c (som_symfile_read): Call install_minimal_symbols
- and do_cleanups earlier.
- * nlmread.c (nlm_symfile_read): Likewise.
- * mdebugread.c (elfmdebug_build_psymtabs): Call
- install_minimal_symbols and make appropriate cleanups.
-
-2003-02-20 Kevin Buettner <kevinb@redhat.com>
-
- * solib.c (reload_shared_libraries): New function.
- (_initialize_solib): Add callbacks for ``set solib-search-path''
- and ``set solib-absolute-prefix''.
-
-2003-02-20 David Carlton <carlton@math.stanford.edu>
-
- * symtab.h (SYMBOL_PRINT_NAME): Rename from SYMBOL_SOURCE_NAME;
- expand comment.
- * ada-lang.c (user_select_syms, ada_finish_decode_line_1): Replace
- SYMBOL_PRINT_NAME with SYMBOL_SOURCE_NAME.
- * ada-typeprint.c (ada_typedef_print): Ditto.
- * ax-gdb.c (gen_var_ref): Ditto.
- * breakpoint.c (print_one_breakpoint): Ditto.
- * buildsym.c (finish_block): Ditto.
- * c-valprint.c (c_val_print): Ditto.
- * expprint.c (print_subexp): Ditto.
- * findvar.c (locate_var_value): Ditto.
- * infcmd.c (jump_command): Ditto.
- * linespec.c (decode_line_2, decode_compound): Ditto.
- * maint.c (maintenance_translate_address): Ditto.
- * objc-lang.c (compare_selectors, compare_classes): Ditto.
- * printcmd.c (build_address_symbolic, sym_info, print_frame_args):
- Ditto.
- * p-valprint.c (pascal_val_print): Ditto.
- * stabsread.c (define_symbol): Ditto.
- * stack.c (print_frame, frame_info, print_block_frame_locals)
- (print_frame_arg_vars, return_command): Ditto.
- * symfile.c (compare_symbols, compare_psymbols): Ditto.
- * symmisc.c (print_symbol): Ditto.
- * symtab.c (lookup_partial_symbol, lookup_block_symbol)
- (compare_search_syms, print_symbol_info, print_msymbol_info)
- (rbreak_command): Ditto.
- * tracepoint.c (tracepoints_info): Ditto.
- * typeprint.c (typedef_print): Ditto.
- * valops.c (value_of_variable, hand_function_call): Ditto.
- * cli/cli-cmds.c (edit_command, list_command): Ditto.
- * ada-typeprint.c: Update Copyright.
- * infcmd.c, objc-lang.c, p-valprint.c, symmisc.c: Ditto.
- * tracepoint.c, cli/cli-cmds.c: Ditto.
-
-2003-02-20 Kevin Buettner <kevinb@redhat.com>
-
- * frame.c (generic_unwind_get_saved_register): Make non-static.
- * frame.h (generic_unwind_get_saved_register): Declare.
- * mips-tdep.c (read_next_frame_reg): Fetch register from
- current regcache when frame is NULL.
- (mips_init_extra_frame_info): Pass NULL explicitly for parameter
- that must be NULL.
- (mips_get_saved_register): Call generic_unwind_get_saved_register()
- instead of frame_register_unwind().
-
-2003-02-20 Andrew Cagney <ac131313@redhat.com>
-
- * remote-sim.c (gdbsim_insert_breakpoint)
- (gdbsim_remove_breakpoint): Delete #ifdef SIM_HAS_BREAKPOINTS
- code.
-
-2003-02-20 Andrew Cagney <ac131313@redhat.com>
-
- * remote.c (_initialize_remote): Add commands "set/show remote
- hardware-watchpoint-limit" and "set/show remote
- hardware-breakpoint-limit".
- (remote_hw_watchpoint_limit): Initialize to -1.
- (remote_hw_breakpoint_limit): Ditto.
- (remote_check_watch_resources): Treat a limit of -1 as unlimited.
-
-2003-02-19 Raoul Gough <RaoulGough@yahoo.co.uk>
-
- * coff-pe-read.c: New file - support reading of minimal symbols from a
- portable executable using the export table.
- * coff-pe-read.h: New file.
- * coffread.c: Include coff-pe-read.h.
- (coff_symtab_read): Call read_pe_exported_syms iff no recognized
- debugging symbols found.
- * Makefile.in (SFILES): Add coff-pe-read.o.
- (coff_pe_read_h): Define.
- (COMMON_OBS): Add coff-pe-read.o.
- (coffread.o): Add coff_pe_read_h dependency.
- (coff-pe-read.o): New target.
-
-2003-02-19 David Carlton <carlton@math.stanford.edu>
-
- * Makefile.in (SFILES): Add block.c.
- (block_h): New.
- (COMMON_OBS): Add block.o.
- (block.o): New.
- (x86-64-tdep.o): Add $(block_h).
- (values.o, valops.o, tracepoint.o, symtab.o, symmisc.o, symfile.o)
- (stack.o, printcmd.o, p-exp.tab.o, parse.o, objfiles.o)
- (objc-exp.tab.o, objc-lang.o, nlmread.o, mips-tdep.o, mdebugread.o)
- (m2-exp.tab.o, linespec.o, jv-lang.o, jv-exp.tab.o, infcmd.o)
- (f-valprint.o, findvar.o, f-exp.tab.o, expprint.o, coffread.o)
- (c-exp.tab.o, buildsym.o, breakpoint.o, blockframe.o, ax-gdb.o)
- (alpha-tdep.o, ada-lang.o, ada-exp.tab.o, mi-cmd-stack.o): Ditto.
- * value.h: Add opaque declaration for struct block.
- * parser-defs.h, objc-lang.h, buildsym.h, breakpoint.h: Ditto.
- * ada-lang.h: Ditto.
- * x86-64-tdep.c: #include "block.h"
- * values.c, valops.c, tracepoint.c, symtab.c, symmisc.c: Ditto.
- * symfile.c, stack.c, printcmd.c, p-exp.y, parse.c: Ditto.
- * objfiles.c, objc-exp.y, objc-lang.c, nlmread.c: Ditto.
- * mips-tdep.c, mdebugread.c, m2-exp.y, linespec.c: Ditto.
- * jv-lang.c, jv-exp.y, infcmd.c, f-valprint.c: Ditto.
- * findvar.c, f-exp.y, expprint.c, coffread.c, c-exp.y: Ditto.
- * buildsym.c, breakpoint.c, blockframe.c, ax-gdb.c: Ditto.
- * alpha-tdep.c, ada-lang.c, ada-exp.y: Ditto.
- * blockframe.c (blockvector_for_pc_sect): Move to "block.c".
- (blockvector_for_pc, block_for_pc_sect, block_for_pc): Ditto.
- * symtab.c (block_function): Ditto.
- (contained_in): Ditto.
- * frame.h: Move block_for_pc and block_for_pc_sect declarations to
- block.h. Add opaque declaration for struct block.
- * symtab.h: Move block_function and contained_in declarations to
- block.h. Add opaque declarations for struct block, struct
- blockvector.
- (struct block): Move to block.h.
- (struct blockvector): Ditto.
- (BLOCK_START, BLOCK_END, BLOCK_FUNCTION, BLOCK_SUPERBLOCK)
- (BLOCK_GCC_COMPILED, BLOCK_HASHTABLE, BLOCK_NSYMS, BLOCK_SYM)
- (BLOCK_BUCKETS, BLOCK_BUCKET, BLOCK_HASHTABLE_SIZE)
- (ALL_BLOCK_SYMBOLS, BLOCK_SHOULD_SORT, BLOCKVECTOR_NBLOCKS)
- (BLOCKVECTOR_BLOCK, GLOBAL_BLOCK, STATIC_BLOCK, FIRST_LOCAL_BLOCK):
- Ditto.
- * block.c: New file.
- * block.h: New file.
-
-2003-02-19 Theodore A. Roth <troth@openavr.org>
-
- * avr-tdep.c (avr_extract_return_value): Remove function.
- (avr_store_return_value): Remove function.
- (avr_extract_struct_value_address): Remove function.
- (avr_gdbarch_init): Remove set_gdbarch_deprecated_*() calls.
-
-2003-02-19 Andrew Cagney <ac131313@redhat.com>
-
- * rs6000-tdep.c: Include "gdb_assert.h".
- (registers_e500): Add "acc" and "spefscr".
- (PPC_GPRS_PSEUDO_REGS): Remove trailing comma.
- (rs6000_gdbarch_init): Update initialization of ppc_gp0_regnum,
- ppc_gplast_regnum, sp_regnum and fp_regnum. Check that gp0_regnum
- really is "r0".
- (registers_e500): Mark the "acc" as a 64 bit (from Jim Willson).
-
-2003-02-18 Keith Seitz <keiths@redhat.com>
-
- * Makefile.in: Add gdbtk-interps.c.
-
-2003-02-18 Kevin Buettner <kevinb@redhat.com>
-
- * sparc-tdep.c (sparc_frame_chain): Adjust return value.
- * config/sparc/tm-sparc.h (init_frame_pc_noop): Declare.
-
-2003-02-18 Andrew Cagney <cagney@redhat.com>
-
- * symtab.h (struct objfile): Add opaque declaration.
-
-2003-02-18 Elena Zannoni <ezannoni@redhat.com>
-
- From Jim Ingham <jingham@apple.com>:
- * dbxread.c (process_one_symbol): Use last_function_start rather
- than function_start_offset to find the real beginning of the
- current function. The latter is just the text section offset on
- some systems, the former is always the real function start.
-
-2003-02-17 Andrew Cagney <cagney@redhat.com>
-
- * configure.in: Revert ${target} != ${host}.
-
-2003-02-17 Andrew Cagney <ac131313@redhat.com>
-
- * configure.in (Makefile): Use the test ${target} != ${host},
- instead of the absence of the "nm.h" file, to determine of the
- configuration non-native.
- * configure: Regenerate.
+ * disasm.c: Update copyright to include 2004.
+ (do_mixed_source_and_assembly): For uiout asm list
+ and tuple cleanups, initialize to null_cleanup instead of
+ NULL and do so prior to loop. Only reset when we close off
+ the tuple/list. Move check for whether to close off the
+ asm tuple/list to after dump_insns call where it will be run
+ on each loop iteration.
-2003-02-14 Elena Zannoni <ezannoni@redhat.com>
+2004-01-05 Andrew Cagney <cagney@redhat.com>
- From Brian Ford <ford@vss.fsi.com>
+ * ser-unix.c (ser_unix_async): Fix tipo, "NOTHING_SECHEDULED"
+ should be a switch case and not a label.
+ * mips-tdep.c (mips32_next_pc): Delete unused labels
+ "greater_equal_branch" and "less_zero_branch".
+ * jv-valprint.c (java_print_value_fields): Delete unused label
+ "flush_it".
- * cli/cli-decode.c (lookup_cmd_composition) [TUI]: Properly
- conditionalize tui_active test.
- (lookup_cmd_1): Ditto.
+ * target.c (unpush_target): Only close a target that is in the
+ target stack.
-2003-02-14 Mark Kettenis <kettenis@gnu.org>
+2004-01-05 Mark Kettenis <kettenis@gnu.org>
- * configure.in: Add check for _etext.
- * maint.c (maintenance_set_profile_cmd): Use etext if _etext isn't
- available.
- * config.in, configure: regenerated.
+ * sparc-tdep.c (sparc_extract_struct_value_address): Get the
+ address from [sp + 64] instead of %o2.
-2003-02-14 Daniel Jacobowitz <drow@mvista.com>
+ * frame.c (get_prev_frame): Don't try to unwind the PC. This
+ fixes PR backtrace/1476.
- * dwarf2read.c (dwarf2_get_pc_bounds): Offset addresses by base.
+2004-01-05 Andrew Cagney <cagney@redhat.com>
-2003-02-14 Andrew Cagney <ac131313@redhat.com>
+ * libunwind-frame.h (struct frame_id): Add opaque declaration,
+ move to start of file.
+ * i386-tdep.h (struct regcache): Add opaque declaration.
+ * config/ia64/nm-linux.h (struct target_ops): Add opaque
+ declaration.
+ * ia64-tdep.c (ia64_find_proc_info_x): Do not use __FUNCTION__.
+ (ia64_gdbarch_init): Use "GNU/Linux" in comment.
+ * win32-nat.c (fake_create_process): Use ISO C style definition.
+ * stabsread.c (define_symbol): Delete #ifndef
+ DEPRECATED_USE_REGISTER_NOT_ARG wrapper around
+ stabs_argument_has_addr call, macro never defined.
+
+2004-01-04 Michael Chastain <mec.gnu@mindspring.com>
+
+ * op50-rom.c: Delete.
+ * w89k-rom.c: Delete.
+ * Makefile.in: Remove references.
+
+2004-01-04 Mark Kettenis <kettenis@gnu.org>
+
+ * x86-64-tdep.c: Update copyright year.
+ (struct amd64_register_info): Rename from x86_64_register_info.
+ (amd64_register_info): Rename from x86_64_register_info.
+ (AMD64_NUM_REGS): Rename from X86_64_NUM_REGS.
+ (amd64_register_name): Rename from x86_64_register_name.
+ (amd64_register_type): Rename from x86_64_register_type.
+ (amd64_dwarf_regmap): Rename from x86_64_dwarf_regmap.
+ (amd64_dwarf_regmap_len): Rename from x86_64_dwarf_regmap_len.
+ (amd64_dwarf_reg_to_regnum): Rename from
+ x86_64_dwarf_reg_to_regnum.
+ (amd64_convert_register_p): Rename from x86_64_convert_register_p.
+ (amd64_push_dummy_call): Rename from x86_64_push_dummy_call.
+ (AMD64_NUM_SAVED_REGS): Rename from X86_64_NUM_SAVED_REGS.
+ (struct amd64_frame_cache): Renamed from x86_64_frame_cache.
+ (amd64_alloc_frame_cache): Renamed from x86_64_alloc_frame_cache.
+ (amd64_analyze_prologue): Rename from x86_64_analyze_prologue.
+ (amd64_skip_prologue): Rename from x86_64_skip_prologue.
+ (amd64_frame_cache): Rename from x86_64_frame_cache.
+ (amd64_frame_this_id): Rename from x86_64_frame_this_id.
+ (amd64_frame_prev_register): Rename from
+ x86_64_frame_prev_register.
+ (amd64_frame_unwind): Rename from x86_64_frame_unwind.
+ (amd64_frame_sniffer): Rename from x86_64_frame_sniffer.
+ (amd64_sigtramp_frame_cache): Rename from
+ x86_64_sigtramp_frame_cache.
+ (amd64_sigtramp_frame_prev_register): Rename from
+ x86_64_sigtramp_frame_prev_register.
+ (amd64_sigtramp_frame_unwind): Rename from
+ x86_64_sigtramp_frame_unwind.
+ (amd64_sigtramp_frame_sniffer): Rename from
+ x86_64_sigtramp_frame_sniffer.
+ (amd64_frame_base_address): Rename from x86_64_frame_base_address.
+ (amd64_frame_base): Rename from x86_64_frame_base.
+ (amd64_unwind_dummy_id): Rename from x86_64_unwind_dummy_id.
+ (amd64_frame_align): Rename from x86_64_frame_align.
+ (amd64_supply_fpregset): Rename from x86_64_supply_fpregset.
+ (amd64_regset_from_core_section): Rename from
+ x86_64_regset_from_core_section.
+ (x86_64_init_abi): Update comments.
+
+2004-01-04 Nick Roberts <nick@nick.uklinux.net>
- * main.c (tui_version): Delete variable.
- (captured_main): When --tui, set interpreter_p to "tui" instead of
- enabling tui_version.
- * printcmd.c (display_command) [TUI]: Test tui_active instead of
- tui_version.
- * cli/cli-decode.c (lookup_cmd_composition): Ditto.
- * cli/cli-cmds.c (disassemble_command): Ditto.
- * defs.h (tui_version): Delete declaration.
- * Makefile.in (SUBDIR_TUI_SRCS): Add "tui/tui-interp.c".
- (tui-interp.o): Add rules.
- (SUBDIR_TUI_OBS): Add "tui-interp.o".
+ * MAINTAINERS (write after approval): Add myself.
-2003-02-14 Christopher Faylor <cgf@redhat.com>
+2004-01-04 Mark Kettenis <kettenis@gnu.org>
- * win32-nat.c (register_loaded_dll): Correctly set address range for
- just-loaded dll.
+ * sparc64-tdep.c (sparc64_store_arguments): Fix handling of
+ `float' arguments.
-2003-02-12 Jason Molenda (jmolenda@apple.com)
+2004-01-04 Mark Kettenis <kettenis@gnu.org>
- * symmisc.c (print_objfile_statistics): Include information about
- the number of psymtabs and symtabs in each object file.
+ * sparc64-tdep.c (sparc64_store_floating_fields): Update comment
+ such that it mentions a specific version of GCC that exhibits this
+ bug.
-2003-02-13 Keith R Seitz <keiths@redhat.com>
+2004-01-03 Mark Kettenis <kettenis@gnu.org>
- * main.h (struct captured_main_args): Add interpreter_p.
- * main.c (captured_main): Initialize interpreter_p from context.
- * gdb.c (main): Set interpreter_p argument.
- * Makefile.in (gdb.o): Add dependency for interps.h.
+ * sparc64-tdep.c (sparc64_store_floating_fields): If TYPE is a
+ structure that has a single `float' member, store it in %f1 in
+ addition to %f0.
-2003-02-12 Andrew Cagney <ac131313@redhat.com>
+ * sparc-sol2-nat.c: Add missing '\'.
- * event-top.c (cli_command_loop): Delete declaration.
- (_initialize_event_loop): Delete function setting event_loop_hook.
- * event-top.h (cli_command_loop): Declare. Update copyright.
- (EVENT_TOP_H): Define. Wrap header in #ifdef EVENT_TOP_H.
- * interps.c (current_interp_command_loop): When event_loop_p, call
- cli_command_loop.
+ * sparc-tdep.c (sparc32_return_value): New function.
+ (sparc32_use_struct_convention, sparc32_return_value_on_stack):
+ Remove functions.
+ (sparc32_gdbarch_init): Set return_value, don't set
+ extract_return_value, store_return_value, use_struct_convention
+ and return_value_on_stack.
-2003-02-12 Andrew Cagney <ac131313@redhat.com>
+ * sparc-sol2-nat.c: Add missing ')'.
- * interps.h (interp_command_loop_ftype): Change return type to
- void.
+2004-01-03 J. Brobecker <brobecker@gnat.com>
-2003-02-12 Michal Ludvig <mludvig@suse.cz>
+ * infrun.c (handle_step_into_function): New function.
+ (handle_inferior_event): Extract out some code into the new
+ function above.
- * x86-64-tdep.c (x86_64_extract_return_value)
- (x86_64_store_return_value): Use regcache instead of regbuf.
- (x86_64_gdbarch_init): Change related set_gdbarch_* functions.
- * x86-64-linux-nat.c (fill_gregset): Use regcache.
+2004-01-03 J. Brobecker <brobecker@gnat.com>
-2003-02-11 Andrew Cagney <ac131313@redhat.com>
+ * infrun.c (handle_inferior_event): Move the declaration of
+ real_stop_pc inside the if blocks where it is used.
- * acinclude.m4 (no_tcl): SUBST TCL_CC_SEARCH_FLAGS.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
+2004-01-03 Mark Kettenis <kettenis@gnu.org>
- * Makefile.in (TCL): Use TCL_CC_SEARCH_FLAGS instead of
- TCL_LD_SEARCH_FLAGS.
-
-2003-02-10 Michal Ludvig <mludvig@suse.cz>
-
- * dwarf2cfi.c: Reindented.
-
-2003-02-09 Andrew Cagney <ac131313@redhat.com>
-
- * interps.c (clear_interpreter_hooks): Convert function definition
- to ISO C.
-
-2003-02-07 David Carlton <carlton@math.stanford.edu>
-
- * gdb_mbuild.sh: Delete extra shift after parsing '-f'.
-
-2003-02-07 Kevin Buettner <kevinb@redhat.com>
-
- * gdbtypes.h (struct main_type): Move ``length'' field from here...
- (struct type): ...to here.
- (TYPE_LENGTH): Adjust to reflect different location of ``length''
- field.
- * gdbtypes.c (make_qualified_type): Set length on newly created type.
- (replace_type): Set length on all type variants for a given type.
-
-2003-02-27 David Carlton <carlton@math.stanford.edu>
-
- * symtab.c (lookup_symbol_aux_namespace_scope): Rename from
- lookup_symbol_aux_using_loop.
- (lookup_symbol_aux_using): Delete.
- (lookup_symbol_aux): Call lookup_symbol_aux_namespace_scope
- instead of lookup_symbol_aux_using.
-
-2003-02-24 David Carlton <carlton@math.stanford.edu>
-
- * symtab.h: Declare 'struct objfile'; don't declare 'struct
- using_direct_node'.
-
-2003-02-21 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c (locate_compound_sym): Update call to
- lookup_symbol_namespace.
- * symtab.c (make_symbol_overload_list): Delete namespace_len
- argument.
- * symtab.h: Update declaration for make_symbol_overload_list.
- * valops.c (find_oload_champ_namespace_loop): New format for
- make_symbol_overload_list.
- * symtab.c (lookup_symbol_namespace): Delete namespace_len
- argument.
- (lookup_symbol_aux_using_loop): Update call to
- lookup_symbol_namespace.
- (make_symbol_overload_list_using): Delete namespace_len argument.
- * linespec.c (decode_namespace): Update call to
- lookup_symbol_namespace.
- * valops.c (value_namespace_elt): Ditto.
- * symtab.c (lookup_nested_type): Ditto.
- * symtab.h: Update declaration for lookup_symbol_namespace.
- * block.c (block_all_usings): Delete.
- (block_using): Make static.
- (block_using_iterator_next): New using_direct format.
- (block_using_iterator_first): Ditto.
- * buildsym.c (scan_for_anonymous_namespaces): Rename variables.
- (add_using_directive): New using functions.
- (end_symtab): Use cp_copy_usings.
- (copy_usings_to_obstack): Delete.
- * block.c: Tweak initial comment.
- (struct namespace_info): Move here.
- (block_initialize_namespace): Set scope to NULL!
- * block.h: Add compilation guards.
- Reorder and update declarations.
- * cp-support.c (cp_find_first_component): Return unsigned int.
- (cp_entire_prefix_len): New.
- (cp_add_using_obstack): Delete.
- (cp_add_using_xmalloc): Delete.
- (cp_copy_usings): Rewrite.
- (cp_free_usings): Delete.
- (cp_add_using): New.
- (cp_is_anonymous): Delete second argument.
- (xstrndup): New.
- * cp-support.h: Add compilation guards.
- Update declarations.
- * coffread.c: New variable coff_source_file.
- (coff_start_symtab): Use coff_source_file.
- (complete_symtab): Ditto.
- (coff_end_symtab): Ditto.
- (coff_symtab_read): Ditto.
- * dbxread.c (find_stab_function_addr): Const fix.
- * buildsym.h: Const fix.
- * buildsym.c (start_symtab): Const fix.
- (start_subfile): Ditto.
- * cp-support.c (cp_add_using_xmalloc): Copy name.
- * dwarf2read.c (read_namespace): Loop through extensions
- correctly.
- (read_file_scope): Const fix.
- (dwarf2_add_field): Ditto.
- (read_structure_scope): Ditto.
- (read_enumeration): Ditto.
- (read_typedef): Ditto.
- * buildsym.c (finish_block): Update comments and simplify code
- when setting scope.
- * buildsym.h: Add opaque declaration of 'struct block'.
- Change comment before processing_current_prefix.
- * arm-tdep.c (arm_gdbarch_init): Add break; after default:.
-
-2003-02-14 Daniel Jacobowitz <drow@mvista.com>
-
- * dwarf2read.c (dwarf2_get_pc_bounds): Offset addresses by base.
-
-2003-02-19 David Carlton <carlton@math.stanford.edu>
-
- * mdebugread.c (new_block): Add 'function' arg.
- (parse_symbol): New arg to new_block.
- (new_symtab): Ditto.
- (fixup_sigtramp): Ditto.
- * cp-support.c (initialize_namespace_blocks): Use
- dict_hashed_expandable instead of dict_linear_expandable.
- * jv-lang.c (get_java_class_symtab): Ditto.
- * dictionary.c (enum dict_type): Add DICT_HASHED_EXPANDABLE.
- (struct dictionary_hashed_expandable): New.
- (struct dictionary): Add hashed_expandable member.
- (DICT_EXPANDABLE_INITIAL_CAPACITY): Rename from
- DICT_LINEAR_EXPANDABLE_INITIAL_CAPACITY.
- (dict_create_linear_expandable): Use
- DICT_EXPANDABLE_INITIAL_CAPACITY.
- (dict_linear_vtbl): New.
- (dict_create_hashed_expandable): New.
- (add_symbol_hashed_expandable): New.
- (dict_create_hashed): Move code into insert_symbol_hashed.
- (insert_symbol_hashed): New.
- (expand_hashtable): New.
- * dictionary.h: Declare dict_create_hashed_expandable.
-
-2003-02-12 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c (examine_compound_token): Call decode_namespace.
- (decode_namespace): New function.
- * cp-support.c (cp_find_first_component): Return the offset, not a
- pointer.
- (check_possible_namespace_symbols_loop): Update call to
- cp_find_first_component.
- (cp_check_possible_namespace_symbols): Ditto.
- (cp_func_name): Ditto.
- * buildsym.c (scan_for_anonymous_namespaces): Ditto.
- (finish_block): Ditto.
- * linespec.c (examine_compound_token): Ditto.
- * symtab.c (lookup_symbol_aux_using_loop): Ditto.
- * valops.c (find_oload_champ_namespace_loop): Ditto.
- * cp-support.h: Declare cp_find_first_component to return an int.
- * Makefile.in (linespec.o): cp_support_h.
- * linespec.c (symtab_from_filename): Rename from handle_filename.
- (decode_line_1): Call symtab_from_filename instead of
- handle_filename.
- (locate_compound_sym): Rename from locate_class_sym. Search in
- such a way that we find namespace symbols, too.
- (examine_compound_token): Call locate_class_sym instead of
- locate_compound_sym.
- (locate_compound_sym): Add NAMESPACE arg.
- (examine_compound_token): New arg to locate_compound_sym.
- Handle TYPE_CODE_NAMESPACE.
- #include "cp-support.hp"
-
-2003-02-11 David Carlton <carlton@math.stanford.edu>
-
- * valops.c (find_oload_champ): Add comment.
- (find_oload_champ_namespace_loop): Fix memory management.
- (find_oload_champ_namespace): Add comment.
- (find_overload_match): Free oload_syms, oload_champ_bv.
- * gdbtypes.c (rank_function): Add comment.
- * valops.c (find_oload_champ_namespace_loop): Allow num_fns to be
- zero.
- * symtab.c (lookup_partial_symbol): Use strcmp_iw_ordered.
- (lookup_block_symbol): Delete comment.
- * symfile.c (compare_psymbols): Use strcmp_iw_ordered.
- * defs.h: Declare strcmp_iw_ordered.
- * utils.c (strcmp_iw_ordered): New function.
-
-2003-02-10 David Carlton <carlton@math.stanford.edu>
-
- * symtab.c (read_in_psymtabs): Only read in symtabs where we find
- a matching symbol.
-
-2003-02-07 David Carlton <carlton@math.stanford.edu>
-
- * gdb_mbuild.sh: Delete extra shift after -f.
-
- * Merge with mainline; tag is carlton_dictionary-20030207-merge.
-
-2003-02-07 Andrew Cagney <ac131313@redhat.com>
-
- * sol-thread.c, hpux-thread.c: Include "gdb_stat.h" instead of
- <sys/stat.h>.
- * Makefile.in (sol-thread.o, hpux-thread.o): Update dependencies.
-
-2003-02-06 Andrew Cagney <ac131313@redhat.com>
-
- * Makefile.in (symm-nat.o): Update dependencies.
- (sparc-nat.o, procfs.o, proc-api.o, ppc-linux-nat.o): Ditto.
- (lynx-nat.o, ia64-linux-nat.): Ditto.
- * symm-nat.c, sparc-nat.c, procfs.c, proc-api.c: Include
- "gdb_wait.h" instead of <wait.h> or <sys/wait.h>.
- * ppc-linux-nat.c, lynx-nat.c, ia64-linux-nat.c: Ditto.
-
- * Makefile.in (inflow_h): Define.
- (procfs.o, inflow.o, procfs.o): Update dependencies.
- * inftarg.c (child_stop): Delete extern declaration of
- inferior_process_group. Include "inflow.h".
- * procfs.c (procfs_stop): Ditto. Include "inflow.h".
- * inflow.c (PROCESS_GROUP_TYPE): Move definitions from here ...
- * inflow.h (PROCESS_GROUP_TYPE): ... to here. New file.
- (our_process_group, inferior_process_group): Extern declarations.
-
- * procfs.c: Include "gdb_assert.h".
-
- * linux-proc.c: Include "gdb_stat.h" instead of <sys/stat.h>.
- * cp-valprint.c (cp_print_value_fields): Eliminate STREQN.
- * jv-typeprint.c (java_type_print_base): Ditto.
- * typeprint.c (typedef_print): Eliminate STREQ.
- * cli/cli-script.c (define_command, define_command): Ditto.
- * main.c (captured_main): Ditto.
- * values.c (lookup_internalvar): Ditto.
- * utils.c (safe_strerror, parse_escape): Eliminate assignment
- within `if' conditional.
- * linespec.c (decode_line_2): Ditto.
- * cli/cli-dump.c (bfd_openr_with_cleanup): Ditto.
- (bfd_openw_with_cleanup): Ditto.
-
-2003-02-07 Mark Kettenis <kettenis@gnu.org>
-
- * x86-64-tdep.c (x86_64_init_abi): Set extract_return_value to
- legacy_extract_return_value and store_return_value to
- legacy_return_value.
-
-2003-02-06 Raoul Gough <RaoulGough@yahoo.co.uk>
-
- * win32-nat.c (get_relocated_section_addrs): New function. Find
- section load addresses for symbol handling in relocated DLLs.
- (solib_symbols_add): Open a bfd and call get_relocated_section_addrs.
-
-2003-02-05 Fred Fish <fnf@intrinsity.com>
-
- * remote-e7000.c (e7000_drain_command): Fix precedence problem with
- '=' and '!='.
- * rdi-share/ardi.c (wait_for_debug_message): Fix precedence problem
- with '&' and '=='.
- (angel_RDI_info): Ditto.
- * infttrace.c (threads_continue_all_but_one): Fix precedence problem
- with '&' and '!='.
- (threads_continue_all_with_signals): Ditto.
-
-2003-02-05 Jim Ingham <jingham@apple.com>
- Keith Seitz <keiths@redhat.com>
- Elena Zannoni <ezannoni@redhat.com>
- Andrew Cagney <ac131313@redhat.com>
-
- * Makefile.in (SUBDIR_CLI_OBS): Add "cli-interp.o".
- (SUBDIR_CLI_SRCS): Add "cli/cli-interp.c".
- (SUBDIR_MI_OBS): Add "mi-interp.o".
- (SUBDIR_MI_SRCS): Add "mi/mi-interp.c".
- (SFILES): Add "interps.c".
- (COMMON_OBS): Add "interps.o".
- (interps_h, mi_main_h): Define.
- (interps.o, cli-interp.o, mi-interp.o): Add dependencies.
- (mi-main.o, main.o, event-top.o): Update dependencies.
- * cli/cli-interp.c: New file.
- * interps.h, interps.c: New files.
- * top.c: (gdb_init): Don't install the default interpreter, handed
- by captured_main.
- * main.c: Include "interps.h".
- (interpreter_p): Note that it should malloc'ed.
- (captured_command_loop): Call current_interp_command_loop.
- (captured_main): Initialize interpreter_p to INTERP_CONSOLE. Use
- xfree and xstrdup when updating interpreter_p. Install the
- default interpreter. Add hack to stop mi1's copyright notice
- being encoded.
- * event-top.h (gdb_setup_readline): Declare.
- (gdb_disable_readline): Declare.
- * event-top.c: Include "interps.h".
- (display_gdb_prompt): Call current_interp_display_prompt_p.
- (gdb_setup_readline): Initialize gdb_stdout, gdb_stderr,
- gdb_stdlog, and gdb_stdtarg.
- (_initialize_event_loop): Don't call gdb_setup_readline.
- * cli-out.c (cli_out_set_stream): New function.
- * cli-out.h (cli_out_set_stream): Declare.
-
-2003-02-06 Mark Kettenis <kettenis@gnu.org>
-
- * configure.tgt (i[3456]86-*-sysv4.2*, i[3456]86-*-sysv4*,
- i[3456]86-*-sysv5*, i[3456]86-*-sco3.2v5*): Remove. These are all
- handled fine by i[3456]86-*sco* and i[3456]86-sysv*.
- * config/i386/i386sco5.mt, config/i386/i386v4.mt,
- config/i386/i386v42mp.mt: Removed.
-
-2003-02-05 Mark Kettenis <kettenis@gnu.org>
-
- * configure.tgt (*-*-solaris*): Set gdb_osabi to
- GDB_OSABI_SOLARIS.
-
-2003-02-05 Michael Chastain <mec@shout.net>
-
- * PROBLEMS (i[3456]86-*-linux*): Warn about binutils
- 2.12.1 and earlier versions.
-
-2003-02-05 Andrew Cagney <ac131313@redhat.com>
-
- Remove orphaned hosts, targets and files.
- * config/i386/gdbserve.mt, config/m68k/nm-apollo68b.h: Delete.
- * config/m68k/nm-hp300bsd.h, config/m68k/tm-apollo68b.h: Delete.
- * config/m68k/tm-es1800.h, config/m68k/tm-hp300bsd.h: Delete.
- * config/m68k/tm-mac.h, config/m68k/xm-apollo68b.h: Delete.
- * config/pa/hpux1020.mt, config/pa/hpux11.mt: Delete.
- * config/pa/hpux11w.mt, config/powerpc/gdbserve.mt: Delete.
- * config/powerpc/ppcle-eabi.mt, config/powerpc/ppcle-sim.mt: Delete.
- * config/powerpc/tm-ppc-sim.h, config/sparc/sp64sim.mt: Delete.
- * config/sparc/tm-sp64sim.h: Delete.
- * configure.host: Delete strongarm-*-*, xscale-*-*, and arm*-*-*
- hosts.
- * configure.tgt: Delete i[3456]86-*-sco3.2v4*, and
- mips*-dec-mach3* targets.
-
-2003-02-04 Michael Chastain <mec@shout.net>
-
- * NEWS: Fix typo: sepcifying -> specifying.
-
-2003-02-04 Michael Chastain <mec@shout.net>
-
- * dwarfread.c: Add documentation on the state of dwarf-1,
- looking towards obsoletion.
-
-2003-02-03 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: Add gdb/testsuite/gdb.c++/pr-1023.cc,
- gdb/testsuite/gdb.c++/pr-1023.exp.
-
-2003-02-04 Andrew Cagney <ac131313@redhat.com>
-
- * values.c: Delete code conditional on IS_TRAPPED_INTERNALVAR.
- * TODO: Delete reference to IS_TRAPPED_INTERNALVAR.
-
- * utils.c (init_page_info): Delete reference to MPW in comments.
- * main.c (captured_main): Delete #ifdef MPW.
-
-2003-02-04 Andrew Cagney <ac131313@redhat.com>
-
- * NEWS: Note that the m32r-*-elf* is obsolete.
- * monitor.c (monitor_expect): Obsolete reference to m32r.
- * configure.tgt: Mark m32r-*-elf* as obsolete.
- * MAINTAINERS: Mark m32k as obsolete.
- * m32r-rom.c: Obsolete file.
- * config/m32r/m32r.mt: Obsolete file.
- * config/m32r/tm-m32r.h: Obsolete file.
- * m32r-stub.c: Obsolete file.
- * m32r-tdep.c: Obsolete file.
-
-2003-02-04 Andrew Cagney <ac131313@redhat.com>
-
- * NEWS: Mention that the z8k-zilog-none is obsolete.
- * MAINTAINERS: Mark z8k as obsolete.
- * configure.tgt: Obsolete the z8k-*-coff* target.
- * config/z8k/z8k.mt: Obsolete file.
- * config/z8k/tm-z8k.h: Obsolete file.
- * z8k-tdep.c: Obsolete file.
-
-2003-02-04 Andrew Cagney <ac131313@redhat.com>
-
- * NEWS: Mention that the mn10200-elf is obsolete.
- * configure.tgt: Obsolete mn10200-*-* target.
- * breakpoint.c (update_breakpoints_after_exec): Update comment to
- mention that the mn10200 is obsolete.
- * breakpoint.h: Ditto.
- * MAINTAINERS: Mark the mn10200-elf as obsolete.
- * config/mn10200/mn10200.mt: Obsolete file.
- * config/mn10200/tm-mn10200.h: Obsolete file.
- * mn10200-tdep.c: Obsolete file.
-
-2003-02-04 Andrew Cagney <ac131313@redhat.com>
-
- * MAINTAINERS: Mark h8500 as obsolete.
- * configure.tgt (h8500-*-*): Mark h8500 code as obsolete.
- * findvar.c (value_from_register): Ditto.
- * h8500-tdep.c: Mark file as obsolete.
- * config/h8500/h8500.mt: Ditto.
- * config/h8500/tm-h8500.h: Ditto.
- * NEWS: Mention that h8500 is obsolete.
-
-2003-02-04 David Carlton <carlton@math.stanford.edu>
-
- * objfiles.c (allocate_objfile): Always set name. Add comment at
- start of function.
- * jv-lang.c (get_dynamics_objfile): Add comment.
-
-2003-02-04 David Carlton <carlton@math.stanford.edu>
-
- * symtab.h (SYMBOL_LINKAGE_NAME): Delete.
- * printcmd.c (build_address_symbolic): Replace uses of
- SYMBOL_LINKAGE_NAME by equivalent uses of SYMBOL_SOURCE_NAME,
- SYMBOL_NAME, and asm_demangle.
- Update copyright.
-
-2003-02-04 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c (decode_compound): Extract code into
- lookup_prefix_sym.
- (lookup_prefix_sym): New function.
-
-2003-02-04 David Carlton <carlton@math.stanford.edu>
-
- * gdbtypes.h: Delete INTEGER_COERCION_BADNESS,
- FLOAT_COERCION_BADNESS.
- * gdbtypes.c (rank_one_type): Replace all uses of
- INTEGER_COERCION_BADNESS by INTEGER_CONVERSION_BADNESS.
-
-2003-02-04 Jim Blandy <jimb@redhat.com>
-
- * dwarf2read.c (dwarf2_locate_sections): When we find a macro info
- section, let dwarf_macinfo_section point to it, not
- dwarf_loc_section.
-
-2003-02-04 Daniel Jacobowitz <drow@mvista.com>
-
- Pointed out by Anton Blanchard <anton@samba.org>.
- * ppc-linux-tdep.c (insn_is_sigreturn): New function.
- (ppc_linux_at_sigtramp_return_path): Use it.
-
-2003-02-04 Daniel Jacobowitz <drow@mvista.com>
-
- * defs.h (streq): Add prototype.
- * utils.c (streq): New function.
-
- * dwarf2read.c (new_symbol): Use SYMBOL_SET_NAMES instead of
- SYMBOL_NAME and SYMBOL_INIT_DEMANGLED_NAME.
- * mdebugread.c (new_symbol): Likewise.
- * stabsread.c (define_symbol): Likewise.
- * coffread.c (process_coff_symbol): Likewise.
- * dwarfread.c (new_symbol): Likewise.
-
- * minsyms.c (prim_record_minimal_symbol_and_info): Use
- SYMBOL_SET_NAMES instead of setting SYMBOL_NAME. Set the language
- here.
- (install_minimal_symbols): Don't set SYMBOL_LANGUAGE or call
- SYMBOL_INIT_DEMANGLED_NAME.
- * objfiles.c: Include "hashtab.h".
- (allocate_objfile): Call htab_set_functions_ex for the
- demangled_names_hash.
- (free_objfile): Call htab_delete for the demangled_names_hash.
- * objfiles.h (struct htab): Add declaration.
- (struct objfile): Add demangled_names_hash.
- * symfile.c: Include "hashtab.h".
- (reread_symbols): Call htab_delete for the demangled_names_hash.
- (add_psymbol_to_list): Use SYMBOL_SET_NAMES instead of putting
- SYMBOL_NAME in the bcache.
- * symtab.c: Include "hashtab.h". Update comments.
- (create_demangled_names_hash, symbol_set_names): New functions.
- (symbol_find_demangled_name): New function, broken out from
- symbol_init_demangled_names.
- (symbol_init_demangled_names): Use it.
- * symtab.h (SYMBOL_INIT_DEMANGLED_NAME): Add missing parentheses.
- (SYMBOL_SET_NAMES): New macro.
- (symbol_set_names): Add prototype.
-
-2003-02-03 Jim Blandy <jimb@redhat.com>
-
- Use a single, consistent representation for an empty minimal
- symbol table in an objfile.
- * objfiles.c (terminate_minimal_symbol_table): New function.
- (allocate_objfile): Call it.
- * objfiles.h (terminate_minimal_symbol_table): New declaration.
- (ALL_MSYMBOLS): No need to test whether (objfile)->msymbols is
- non-NULL.
- * minsyms.c (lookup_minimal_symbol_by_pc_section): To see whether
- objfile has minimal symbols, compare minimal_symbol_count to zero,
- instead of comparing msymbols with NULL.
- * objfiles.c (have_minimal_symbols): Same.
- * solib-sunos.c (solib_add_common_symbols): Call
- terminate_minimal_symbol_table.
- * symfile.c (reread_symbols): Same.
-
-2003-02-03 Kevin Buettner <kevinb@redhat.com>
-
- * s390-tdep.c (s390_address_class_type_flags)
- (s390_address_class_type_flags_to_name)
- (s390_address_class_name_to_type_flags): New functions.
- (s390_gdbarch_init): Define ADDRESS_CLASS_TYPE_FLAGS_TO_NAME,
- ADDRESS_CLASS_NAME_TO_TYPE_FLAGS, and ADDRESS_CLASS_TYPE_FLAGS.
-
-2003-02-03 Michael Snyder <msnyder@redhat.com>
-
- * arm-tdep.c: Fix spell-o in comment.
-
-2003-02-03 Michal Ludvig <mludvig@suse.cz>
-
- * dwarf2cfi.c (pointer_encoding): Added new parameter.
- * dwarf2cfi.c, dwarf2read.c: Changed all warnings and
- error messages to contain BFD filename.
-
-2003-02-02 Elena Zannoni <ezannoni@redhat.com>
-
- Fix PR gdb/742 gdb/743 gdb/877
- * disasm.c (dump_insns): Use make_cleanup_ui_out_tuple_begin_end.
- (do_mixed_source_and_assembly): Use
- make_cleanup_ui_out_tuple_begin_end and
- make_cleanup_ui_out_tuple_begin_end.
- (do_mixed_source_and_assembly): Ditto.
- * thread.c (do_captured_list_thread_ids): Ditto.
- * ui-out.h (ui_out_table_begin, ui_out_list_begin,
- ui_out_tuple_begin, ui_out_table_end, ui_out_list_end,
- ui_out_tuple_end): Delete prototypes.
- * ui-out.c (ui_out_list_begin, ui_out_tuple_begin,
- ui_out_list_end, ui_out_tuple_end): Delete.
-
- From Kevin Buettner <kevinb@redhat.com>:
- * ui-out.h (make_cleanup_ui_out_table_begin_end): New function.
- * ui-out.c (make_cleanup_ui_out_table_begin_end)
- (do_cleanup_table_end): New functions.
- * breakpoint.c (print_it_typical, print_one_breakpoint, mention):
- Use cleanups to invoke_ui_out_tuple_end().
- (breakpoint_1): Use cleanup to invoke ui_out_table_end().
- * cli/cli-setshow.c (cmd_show_list): Use
- make_cleanup_ui_out_tuple_begin_end.
-
-2003-02-02 Andrew Cagney <ac131313@redhat.com>
-
- * frame.c (frame_unwind_register): New function.
- (frame_unwind_unsigned_register): Use.
- (frame_unwind_signed_register): Use.
- (frame_read_register): New function.
- * frame.h (frame_unwind_register): Declare.
- (frame_read_register): Declare.
-
- * d10v-tdep.c (d10v_frame_pop): Rewrite. Use regcache_cooked_write
- and frame_unwind_register instead of read_memory, write_register
- and deprecated_write_register_bytes.
-
-2003-02-02 Andrew Cagney <ac131313@redhat.com>
-
- * frame.h: Note that namelen can be negative.
- * frame.c (frame_map_name_to_regnum): When LEN is negative, use
- NAME's length.
-
- * NEWS: Mention that the d10v's `regs' command is deprecated.
- * d10v-tdep.c (d10v_gdbarch_init): Set print_registers_info.
- (d10v_print_registers_info): New function.
- (show_regs): Call d10v_print_registers_info.
- (_initialize_d10v_tdep): Mark "show regs" command as deprecated.
-
-2003-02-02 Mark Kettenis <kettenis@gnu.org>
-
- * stack.c (print_frame_info): Restore call to annotate_frame_begin
- lost in the previous patch.
-
-2003-02-01 Andrew Cagney <ac131313@redhat.com>
-
- From 2002-11-09 Jason Molenda (jason-cl@molenda.com)
- * stack.c (print_frame_info_base): Output complete FRAME tuple
- for synthesized frames.
-
-2003-02-02 Andrew Cagney <ac131313@redhat.com>
-
- * mips-nat.c (zerobuf): Delete.
- (fetch_inferior_registers): Alloc local zerobuf.
- (fetch_core_registers): Alloc local zerobuf.
- * d10v-tdep.c (show_regs): Don't allocate a dynamic array using
- MAX_REGISTER_RAW_SIZE or MAX_REGISTER_VIRTUAL_SIZE.
- * thread-db.c (thread_db_store_registers): Ditto.
- * sh-tdep.c (sh_do_register): Ditto.
- * rom68k-rom.c (rom68k_supply_one_register): Ditto.
- * remote-sim.c (gdbsim_store_register): Ditto.
- * remote-mips.c (mips_wait, mips_fetch_registers): Ditto.
- * remote-e7000.c (fetch_regs_from_dump): Ditto.
- * monitor.c (monitor_supply_register): Ditto.
- * mipsv4-nat.c (supply_gregset, supply_fpregset): Ditto.
- * mips-nat.c (fetch_inferior_registers): Ditto.
- * m68klinux-nat.c (fetch_register): Ditto.
- * lynx-nat.c (fetch_inferior_registers): Ditto.
- (fetch_inferior_registers): Ditto.
- * irix4-nat.c (supply_gregset, supply_fpregset): Ditto.
- * hpux-thread.c (hpux_thread_fetch_registers): Ditto.
- (hpux_thread_store_registers): Ditto.
- * hppah-nat.c (fetch_register): Ditto.
- * hppab-nat.c (fetch_register): Ditto.
- * hppa-tdep.c (pa_register_look_aside): Ditto.
- (pa_print_fp_reg, pa_strcat_fp_reg): Ditto.
- * dve3900-rom.c (fetch_bitmapped_register): Ditto.
-
-2003-02-01 Andrew Cagney <ac131313@redhat.com>
-
- * gdbarch.sh: Explictly specify all method levels. When a
- variable with an empty level, provide a non-multi-arch default.
- (BELIEVE_PCC_PROMOTION_TYPE): Set level to empty.
- * gdbarch.h: Re-generate.
- * stabsread.c (BELIEVE_PCC_PROMOTION_TYPE): Delete. Always defined.
- * config/m68k/tm-sun3.h (BELIEVE_PCC_PROMOTION_TYPE): Define as 1
-
-2003-02-01 Andrew Cagney <ac131313@redhat.com>
-
- * defs.h (host_pointer_to_address): Delete declaration.
- (address_to_host_pointer): Delete declaration.
- * utils.c (host_pointer_to_address): Delete function.
- (address_to_host_pointer): Delete function.
- * procfs.c (procfs_address_to_host_pointer): New function.
- * procfs.c (proc_set_watchpoint): Use.
- (procfs_can_use_hw_breakpoint): Update comments.
- * somsolib.c (hpux_address_to_host_pointer_hack): New function.
- (som_solib_add): Use.
- * hppa-tdep.c (hppa_pointer_to_address_hack): New function.
- * hppa-tdep.c (unwind_command): Use.
-
-2003-02-01 Andrew Cagney <ac131313@redhat.com>
-
- * gdb_dirent.h: Mark up valid uses of <dirent.h>, d_namelen and
- strlen d_name.
-
- * main.c (captured_main): Delete #ifdef ADDITIONAL_OPTIONS,
- ADDITIONAL_OPTION_CASES, and ADDITIONAL_OPTION_HANDLER code.
- (print_gdb_help): Delete #ifdef ADDITIONAL_OPTION_HELP code.
- * stabsread.c (DBX_PARM_SYMBOL_CLASS): Delete macro.
- (define_symbol): Update.
- * symfile.c (generic_load): Remove references to nindy.
- * symtab.c: Remove references to nindy.
-
-2003-02-01 Andrew Cagney <ac131313@redhat.com>
-
- * infcmd.c (print_float_info): Delete code conditional on
- FLOAT_INFO.
- * config/nm-lynx.h: Delete #undef FLOAT_INFO. Update copyright.
- * config/m68k/nm-apollo68b.h: Ditto.
- * config/i386/tm-ptx.h (FLOAT_INFO): Delete. Update copyright.
- * config/ns32k/nm-nbsd.h (FLOAT_INFO): Ditto.
- * config/i386/tm-symmetry.h (FLOAT_INFO): Ditto.
-
-2003-02-01 Mark Kettenis <kettenis@gnu.org>
-
- * config/i386/tm-i386os9k.h: Removed.
-
- * configure.host (i[3456]86-*-isc*): Set gdb_host to i386v.
- Remove i[3456]86-*-sysv3.2* and i[3456]86-*-sysv32* entries since
- they're identical to i[3456]86-*-sysv* now.
- * config/i386/i386v32.mh: Removed.
- * config/i386/xm-i386v32.h: Removed.
- * config/i386/xm-i386sco.h (U_FPSTATE): Remove macro.
-
- * config/i386/i386mk.mt, config/i386/i386mk.mh: Removed.
-
- * config/i386/i386dgux.mh: Removed.
- * configure.host (i[3456]86-*-dgux): Set gdb_host to i386v4.
-
- * configure.in: Fix typo.
- * configure: Regenerated.
-
-2003-01-31 David Carlton <carlton@math.stanford.edu>
-
- * dwarf2read.c (dwarf2_locate_sections): Set
- dwarf_ranges_section.
-
-2003-01-31 Andrew Cagney <ac131313@redhat.com>
-
- * objc-exp.y, c-exp.y, f-exp.y: Remove PTR casts.
- * utils.c: Update comments documenting legitimate uses of PTR.
-
- * utils.c: Re-indent.
-
- * config/djgpp/fnchange.lst: Delete nindy files.
- * nindy-share/ttyflush.c, nindy-share/stop.h: Delete files.
- * nindy-share/nindy.c, nindy-share/env.h: Delete files.
- * nindy-share/coff.h, nindy-share/block_io.h: Delete files.
- * nindy-share/b.out.h, nindy-share/VERSION: Delete files.
- * nindy-share/README, nindy-share/Onindy.c: Delete files.
- * nindy-tdep.c, nindy-share/Makefile: Delete files.
- * Makefile.in (init.c): Remove nindy references.
- (saber_gdb): Delete rule.
- (ALLDEPFILES): Delete hp300ux-nat.c, nindy-tdep.c,
- nindy-share/Onindy.c, nindy-share/nindy.c, nindy-share/ttyflush.c,
- and a68v-nat.c.
- (hp300ux-nat.o, a68v-nat.o, ptx4-nat.o): Delete rules.
- (Onindy.o, nindy.o, ttyflush.o, nindy-tdep.o): Delete rules.
- (HFILES_NO_SRCDIR): Delete nindy-share/b.out.h,
- nindy-share/block_io.h, nindy-share/coff.h, nindy-share/env.h, and
- nindy-share/stop.h.
- * hp300ux-nat.c, a68v-nat.c, ptx4-nat.c: Delete files.
- * saber.suppress: Delete file.
-
-2003-01-31 Daniel Jacobowitz <drow@mvista.com>
-
- * dbxread.c (stabs_data): New static variable.
- (fill_symbuf): Support an in-memory buffer for stabs data.
- (stabs_seek): New function.
- (dbx_psymtab_to_symtab): Relocate the stabs data if necessary.
- (read_ofile_symtab): Use stabs_seek.
- (elfstab_build_psymtabs): Take an asection* instead of
- an offset and size. Relocate the stabs data if necessary.
- Save the section* for dbx_psymtab_to_symtab.
- * dwarf2read.c: Add section variables for each debug section.
- (dwarf2_locate_sections): Fill them in.
- (dwarf2_read_section): Take an asection* argument.
- Relocate the section contents if necessary.
- (dwarf2_build_psymtabs, dwarf2_build_psymtabs_easy): Update callers.
- * dwarf2cfi.c (parse_frame_info): Take a section argument and pass
- it to dwarf2_read_section.
- (dwarf2_build_frame_info): Update callers.
- * elfread.c (elf_symfile_read): Update call to
- elfstab_build_psymtabs.
- * gdb-stabs.h (struct dbx_symfile_info): Add stab_section.
- (DBX_STAB_SECTION): New macro.
- * stabsread.h (elfstab_build_psymtabs): Update prototype.
- * symfile.c (symfile_dummy_outputs): New function.
- (symfile_relocate_debug_section): New function.
- * symfile.h (symfile_relocate_debug_section): Add prototype.
-
-2003-01-31 Richard Henderson <rth@redhat.com>
-
- * alpha-nat.c (REGISTER_PTRACE_ADDR): Merge into ...
- (register_addr): ... here. Support ALPHA_UNIQUE_REGNUM.
- (fetch_elf_core_registers): Support ALPHA_UNIQUE_REGNUM.
- * alpha-tdep.c (alpha_register_name): Add "unique".
- * alpha-tdep.h (ALPHA_NUM_REGS): Increment.
- (ALPHA_UNIQUE_REGNUM): New.
- * config/alpha/nm-linux.h (ALPHA_UNIQUE_PTRACE_ADDR): New.
-
-2003-01-31 Andrew Cagney <ac131313@redhat.com>
-
- * README: Remove reference to Ericsson 1800 monitor.
- * Makefile.in (remote-es.o): Delete rule.
- (ALLDEPFILES): Delete remote-es.c.
- * remote-es.c: Delete file.
- * config/m68k/es1800.mt: Delete file.
- * config/djgpp/fnchange.lst: Update.
- * configure.tgt: Delete m68*-ericsson-* target.
-
-2003-01-31 Adam Fedor <fedor@gnu.org>
-
- * infrun.c (handle_inferior_event): Rename 'tmp' to real_stop_pc.
- Remove duplicate/shadowing variable of same name.
-
-2003-01-30 Jim Blandy <jimb@redhat.com>
-
- * symfile.c (find_separate_debug_file): Assert that the objfile's
- directory name we compute ends with a slash, and then assume that
- that's so everywhere we use it.
-
-2003-01-30 Daniel Jacobowitz <drow@mvista.com>
-
- * valops.c (value_assign): Flush frame cache after stores to memory
- also.
-
-2003-01-30 Andrew Cagney <ac131313@redhat.com>
-
- * Makefile.in (mon960-rom.o): Delete rule.
- * mon960-rom.c: Delete file.
-
-2003-01-30 Andrew Cagney <ac131313@redhat.com>
-
- * d10v-tdep.c: Include "frame-unwind.h".
- (d10v_gdbarch_init): Append d10v_frame_p to the unwind predicate
- list.
- (next_addr, uses_frame): Delete.
- (struct d10v_unwind_cache): Define.
- (prologue_find_regs): Add struct d10v_unwind_cache info parameter.
- Use info instead of next_addr and uses_frame globals.
- (d10v_frame_init_saved_regs): Delete function.
- (d10v_init_extra_frame_info): Delete function.
- (d10v_gdbarch_init): Do not initialize init_extra_frame_info,
- frame_init_saved_regs or pop_frame, frame_chain, frame_chain_valid,
- init_frame_pc or frame_saved_pc.
- (d10v_pop_frame): Delete function.
- (do_d10v_pop_frame): Delete function.
- (d10v_frame_chain): Delete function.
- (d10v_frame_chain_valid): Delete function.
- (d10v_frame_pc_unwind): New function.
- (d10v_frame_id_unwind): New function.
- (saved_regs_unwinder): New function.
- (d10v_frame_register_unwind): New function.
- (d10v_frame_pop): New function.
- (d10v_frame_unwind): New variable.
- (d10v_frame_p): New function.
- (d10v_frame_saved_pc): Delete function.
- * Makefile.in (d10v-tdep.o): Update dependencies.
-
-2003-01-30 J. Brobecker <brobecker@gnat.com>
-
- * config/pa/tm-hppa64.h (CALL_DUMMY_LOCATION): Remove #undef
- causing some regressions due to a change in the default value
- for this macro.
-
-2003-01-29 Richard Henderson <rth@redhat.com>
- Elena Zannoni <ezannoni@redhat.com>
- Daniel Jacobowitz <drow@mvista.com>
-
- Fix PR gdb/961.
- * dwarf2read.c (dwarf_ranges_offset, dwarf_ranges_size): New
- variables.
- (RANGES_SECTION): New.
- (dwarf_ranges_buffer): New variable.
- (struct comp_unit_head): Add member "die".
- (struct dwarf2_pinfo): Add dwarf_ranges_buffer, dwarf_ranges_size.
- (DWARF_RANGES_BUFFER, DWARF_RANGES_SIZE): New.
- (dwarf2_has_info): Init dwarf_ranges_offset and dwarf_ranges_size.
- (dwarf2_locate_sections): Likewise.
- (dwarf2_build_psymtabs): Read .debug_ranges.
- (dwarf2_build_psymtabs_hard): Swap dwarf_ranges out.
- (psymtab_to_symtab_1): Swap dwarf_ranges in. Set cu_header.die.
- (dwarf2_get_pc_bounds): New cu_header argument; adjust all callers.
- Look for DW_AT_ranges and return the bounding box.
-
-2003-01-29 Brian Ford <ford@vss.fsi.com>
-
- * win32-nat.c (cygwin_pid): Removed as unused.
- (child_attach): Try fall back to Cygwin pid.
-
-2003-01-29 Jim Blandy <jimb@redhat.com>
-
- * objfiles.h (struct objfile): Doc fix.
-
-2003-01-29 Andrew Cagney <ac131313@redhat.com>
-
- * frame.c (frame_saved_regs_id_unwind): Assert FRAME_CHAIN_P.
- (legacy_get_prev_frame): Assert FRAME_CHAIN_P.
- (get_prev_frame): When FRAME_CHAIN_P, call legacy_get_prev_frame.
- (frame_saved_regs_pc_unwind): Assert FRAME_SAVED_PC_P.
- * gdbarch.sh (FRAME_CHAIN): Change to a function with predicate.
- (FRAME_SAVED_PC): Change to a function with predicate.
- * gdbarch.h, gdbarch.c: Re-generate.
+ * sparc64-tdep.c (sparc64_16_byte_align_p)
+ (sparc64_store_floating_fields, sparc64_store_floating_fields):
+ Use check_typedef to get subtypes of structures and unions.
+ (sparc64_store_return_value): Fix calculation of the appropriate
+ offset into VALBUF when storing a structure or union.
+ (sparc64_return_value): New function.
+ (sparc64_use_struct_convention): Remove function.
+ (sparc64_init_abi): Set return_value, don't set
+ extract_return_value, store_return_value and
+ use_struct_convention.
-2003-01-28 Andrew Cagney <ac131313@redhat.com>
-
- * hppah-nat.c (child_pid_to_exec_file): Don't use boolean.
-
- * complaints.c (complain): Delete function.
- * complaints.h (struct deprecated_complaint): Delete definition.
- (complain): Delete declaration.
-
-2003-01-28 Kevin Buettner <kevinb@redhat.com>
-
- * mips-tdep.c (mips_init_extra_frame_info): Return early for
- dummy frames.
-
-2003-01-27 Andrew Cagney <ac131313@redhat.com>
-
- * sentinel-frame.h, sentinel-frame.c: New files.
- * Makefile.in (frame.o): Update dependencies.
- (SFILES): Add sentinel-frame.c.
- (sentinel_frame_h): Define.
- (COMMON_OBS): Add sentinel-frame.o.
- (sentinel-frame.o): Specify dependencies.
- * frame.c: Include "sentinel-frame.h".
- (frame_register_unwind): Rewrite assuming that there is always a a
- ->next frame.
- (frame_register, generic_unwind_get_saved_register): Ditto.
- (frame_read_unsigned_register, frame_read_signed_register): Ditto.
- (create_sentinel_frame, unwind_to_current_frame): New functions.
- (get_current_frame): Rewrite using create_sentinel_frame and
- unwind_to_current_frame. When possible, always create a frame.
- (create_new_frame): Set next to the sentinel frame.
- (get_next_frame): Rewrite. Don't go below the level 0 frame.
- (deprecated_update_frame_pc_hack): Update the next frame's PC and
- ID cache when necessary.
- (frame_saved_regs_id_unwind): Use frame_relative_level.
- (deprecated_generic_get_saved_register): Use frame_relative_level,
- get_frame_saved_regs, get_frame_pc, get_frame_base and
- get_next_frame.
- (frame_saved_regs_register_unwind): Use get_frame_saved_regs and
- frame_register.
-
-2003-01-27 Daniel Jacobowitz <drow@mvista.com>
-
- * gdb_indent.sh: Add -T bfd and -T asection to the indent arguments.
-
-2003-01-27 Daniel Jacobowitz <drow@mvista.com>
-
- * maint.c [! (HAVE_MONSTARTUP && HAVE__MCLEANUP)]
- (maintenance_set_profile_cmd): Use error () instead of warning ().
-
-2003-01-27 Daniel Jacobowitz <drow@mvista.com>
-
- * configure.in: Check that -pg works if using --enable-profiling.
- Check for monstartup and _mcleanup regardless of --enable-profiling.
- * maint.c: Check for monstartup and _mcleanup before using them.
- * config.in: Regenerated.
- * configure: Regenerated.
-
-2003-01-24 Nick Clifton <nickc@redhat.com>
-
- * Add sh2e support:
-
- 2002-04-02 Elena Zannoni <ezannoni@redhat.com>
-
- * gdb/sh-tdep.c (sh_sh2e_register_name): New.
- (sh2e_show_regs): New.
- (sh_gdbarch_init): Handle bfd_mach_sh2e.
- * config/sh/tm-sh.h: Added sh2e to comments.
-
-2003-01-23 Jim Blandy <jimb@redhat.com>
-
- * symfile.c (syms_from_objfile): Don't print the "(no debugging
- symbols found)" message here; we haven't checked for a separate
- debug info file yet, so we don't know yet.
- (symbol_file_add_with_addrs_or_offsets): Print it here, after
- we've looked everywhere. Also, there's no need to print a special
- message when we're loading the separate debug info file: the one
- symbol_file_add prints is fine.
-
-2003-01-23 Alexander Larsson <alexl@redhat.com>
- Jim Blandy <jimb@redhat.com>
-
- Add support for executables whose debug info has been separated
- out into a separate file, leaving only a link behind.
- * objfiles.h (struct objfile): New fields: separate_debug_objfile
- and separate_debug_objfile_backlink.
- (put_objfile_before): New declaration.
- * symfile.c: #include "filenames.h".
- (symbol_file_add_with_addrs_or_offsets): If this objfile has its
- debug info in a separate file, read that, too. Save the addrs
- argument, so we can use it again to read the separated debug info;
- syms_from_objfile modifies the table we pass it.
- (reread_symbols): After re-reading an objfile, call
- reread_separate_symbols to refresh its separate debug info
- objfile, if it has one.
- (reread_separate_symbols, find_separate_debug_file,
- get_debug_link_info, separate_debug_file_exists): New functions.
- (debug_file_directory): New global var.
- (_initialize_symfile): Initialize debug_file_directory, and
- provide the new `set debug-file-directory' command to let the user
- change it.
- * objfiles.c (free_objfile): If this objfile has its debug info in
- a separate objfile, free that one too. If this is itself a
- separate debug info objfile, clear our parent's backlink.
- (put_objfile_before): New function.
- * utils.c (gnu_debuglink_crc32): New function.
- * defs.h (gnu_debuglink_crc32): New declaration.
- * Makefile.in (symfile.o): Note dependency on "filenames.h".
- * configure.in: Handle --with-separate-debug-dir config option.
- * acinclude.m4 (AC_DEFINE_DIR): New macro.
- * acconfig.h (DEBUGDIR): New macro.
- * configure, aclocal.m4, config.in: Regenerated.
-
-2003-01-22 Jim Blandy <jimb@redhat.com>
-
- * symfile.c (symbol_file_add_with_addrs_or_offsets): New function,
- like the old symbol_file_add, but taking new arguments: you can
- now pass in either a `struct section_addr_info' list to say where
- each section is loaded, or a `struct section_offsets' table. Pass
- these new arguments through to syms_from_objfile as appropriate.
- (symbol_file_add): Just call symbol_file_add_with_addrs_or_offsets,
- with the appropriate quiescent values for the new arguments.
-
- * symfile.c: #include "gdb_assert.h".
- (syms_from_objfile): Add the ability to pass in a section offset
- table directly, as an alternative to the section_addr_info table.
- Document arguments better.
- (symbol_file_add): Pass extra arguments to syms_from_objfile.
- * symfile.h (syms_from_objfile): Update declaration.
- * rs6000-nat.c (objfile_symbol_add): Pass new arguments to
- syms_from_objfile.
- * Makefile.in (symfile.o): List dependency on $(gdb_assert_h).
-
-2003-01-22 Daniel Jacobowitz <drow@mvista.com>
-
- Original patch by Tom Tromey <tromey@cygnus.com> and
- Jason Molenda <jmolenda@apple.com>.
- * Makefile.in (PROFILE_CFLAGS): Substitute from configure.
- (INTERNAL_LDFLAGS): Don't include PROFILE_CFLAGS.
- * NEWS: Mention profiling.
- * configure.in (--enable-gdbtk): Fix typo.
- (--enable-profiling): New. Set PROFILE_CFLAGS.
- * maint.c (maintenance_set_profile_cmd): Remove NOTYET.
- Fill in function.
- (profiling_state): New variable.
- (mcleanup_wrapper): New function.
- (_initialize_maint): Remove NOTYET, fix call to
- add_setshow_boolean_cmd for "maint set profile".
- * configure: Regenerated.
-
-2003-01-21 Martin M. Hunt <hunt@redhat.com>
-
- * Makefile.in (install-gdbtk): Install PNG images too.
-
-2003-01-21 Andrew Cagney <ac131313@redhat.com>
-
- * exec.c (text_start): Delete global variable.
- (exec_file_attach): Make text_start local to the function.
- * inferior.h (BEFORE_TEXT_END, AFTER_TEXT_END): Delete macros.
- * valops.c (hand_function_call): Delete code that handles
- BEFORE_TEXT_END and AFTER_TEXT_END.
- * gdbarch.sh (CALL_DUMMY_LENGTH): Test call_dummy_length instead
- of CALL_DUMMY_LOCATION.
- * gdbarch.c: Regenerate.
- * inferior.h (deprecated_pc_in_call_dummy_before_text_end)
- (deprecated_pc_in_call_dummy_after_text_end): Delete declaration.
- * blockframe.c (deprecated_pc_in_call_dummy_before_text_end)
- (deprecated_pc_in_call_dummy_after_text_end): Delete functions.
- (text_end): Delete extern declaration.
-
-2003-01-21 Andrew Cagney <ac131313@redhat.com>
-
- * frame.h (FRAME_OBSTACK_ZALLOC): Define.
- * blockframe.c (backtrace_below_main): Move to "frame.c".
- (frame_chain_valid): Delete check for backtrace_below_main.
- (_initialize_blockframe): Delete initialization, move ``set
- backtrace-below-main'' command to "frame.c".
- (do_flush_frames_sfunc): Delete function.
- * frame.c: Include "command.h" and "gdbcmd.h".
- (frame_type_from_pc): New function.
- (create_new_frame): Use frame_type_from_pc.
- (legacy_get_prev_frame): New function.
- (get_prev_frame): Rewrite. When an old style frame, call
- legacy_get_prev_frame. Otherwize, unwind the PC first.
- (_initialize_frame): Add ``set backtrace-below-main'' command.
- * Makefile.in (frame.o): Update dependencies.
-
-2003-01-19 Andrew Cagney <ac131313@redhat.com>
-
- * config/pa/tm-hppa.h (DEPRECATED_DO_REGISTERS_INFO): Rename
- DEPRECATED_REGISTERS_INFO.
-
-2003-01-19 Andrew Cagney <ac131313@redhat.com>
-
- * MAINTAINERS: Replace `Blanket Write Privs' with `Global
- Maintainers'. Update `Various Maintainers'.
-
-2003-01-19 Andrew Cagney <ac131313@redhat.com>
-
- * frame.c (frame_saved_regs_pop): Assert POP_FRAME_P.
- * gdbarch.sh (POP_FRAME): Change to function with predicate.
- Suppress actual parameters when `-'.
- * gdbarch.h, gdbarch.c: Regenerate.
-
-2003-01-19 Andrew Cagney <ac131313@redhat.com>
-
- * d10v-tdep.c (d10v_frame_saved_pc, d10v_frame_chain): Restore
- code handling dummy frames.
-
-2003-01-19 Andrew Cagney <ac131313@redhat.com>
-
- * frame-unwind.h (frame_unwind_pop_ftype): Declare.
- (struct frame_unwind): Add field pop.
- * frame.h (frame_pop): Declare.
- * frame.c (frame_saved_regs_pop): New function.
- (trad_frame_unwinder): Add frame_saved_regs_pop.
- (frame_pop): New function.
- * dummy-frame.c (dummy_frame_pop): New function.
- (discard_innermost_dummy): New function.
- (generic_pop_dummy_frame): Use discard_innermost_dummy.
- (dummy_frame_unwind): Add dummy_frame_pop.
- * infrun.c (normal_stop): Call frame_pop instead of POP_FRAME.
- * valops.c (hand_function_call): Ditto.
- * stack.c (return_command): Ditto.
-
-2003-01-18 Andrew Cagney <ac131313@redhat.com>
-
- * cris-tdep.c: Fix function declaration indentation.
- * dwarfread.c, gdbcore.h, gdbtypes.h, i386v-nat.c: Ditto.
- * mips-tdep.c, monitor.h, parse.c, proc-utils.h: Ditto.
- * rs6000-nat.c, ser-go32.c, somread.c, stabsread.c: Ditto.
- * symfile.h, symtab.h, target.c, target.h, value.h: Ditto.
- * xcoffread.c, config/pa/tm-hppa.h: Ditto.
- * config/sparc/tm-sp64.h, config/sparc/tm-sparc.h: Ditto.
-
-2003-01-18 Michael Chastain <mec@shout.net>
-
- * README (Unpacking and Installation -- quick overview):
- Warn against ".../gdb-5.3/gdb/configure".
-
-2003-01-18 Andrew Cagney <ac131313@redhat.com>
-
- * dummy-frame.h (dummy_frame_id_unwind): Delete declaration.
- (dummy_frame_pc_unwind, dummy_frame_register_unwind): Ditto.
- (struct frame_unwind): Declare opaque.
- (dummy_frame_p): Declare function.
- * dummy-frame.c (dummy_frame_id_unwind): Make static.
- (dummy_frame_pc_unwind, dummy_frame_register_unwind): Ditto.
- * dummy-frame.c: Include "frame-unwind.h".
- (dummy_frame_p): New function.
- (dummy_frame_unwind): New variable.
- * frame.c: Include "frame-unwind.h".
- (frame_pc_unwind, frame_id_unwind, frame_register_unwind): Update
- to use the new unwind field.
- (set_unwind_by_pc): Delete function.
- (create_new_frame, get_prev_frame): Set unwind field using
- frame_unwind_find_by_pc.
- (trad_frame_unwind, trad_frame_unwinder): New variables.
- * frame.h (trad_frame_unwind): Declare variable.
- (frame_id_unwind_ftype): Delete declaration.
- (frame_pc_unwind_ftype, frame_register_unwind_ftype): Ditto.
- (struct frame_unwind): Declare opaque.
- (struct frame_info): Replace the fields id_unwind, pc_unwind and
- register_unwind with a single unwind pointer.
- * frame-unwind.h, frame-unwind.c: New files.
- * Makefile.in (SFILES): Add frame-unwind.c.
- (frame_unwind_h): Define.
- (COMMON_OBS): Add frame-unwind.o.
- (frame-unwind.o): Specify dependencies.
- (frame.o, dummy-frame.o): Update dependencies.
-
-2003-01-18 Andrew Cagney <ac131313@redhat.com>
-
- * ada-valprint.c: Eliminate PTR.
- * breakpoint.c, corelow.c, cris-tdep.c, dbxread.c: Ditto.
- * defs.h, dve3900-rom.c, dwarf2read.c, dwarfread.c: Ditto.
- * exec.c, hppa-tdep.c, hpread.c, infcmd.c, mdebugread.c: Ditto.
- * objfiles.c, objfiles.h, ocd.c, remote-es.c: Ditto.
- * remote-mips.c, remote-sds.c, remote-vx.c: Ditto.
- * solib-svr4.c, solib.c, stack.c, symfile.c, symfile.h: Ditto.
- * symmisc.c, v850ice.c, xcoffread.c, cli/cli-script.c: Ditto.
-
-2003-01-17 Andrew Cagney <ac131313@redhat.com>
-
- * main.c (captured_main): Don't use PTR.
- * cp-valprint.c (cp_print_class_method): Replace STREQ with strcmp.
- * gdbtypes.c (lookup_primitive_typename): Ditto.
- (lookup_struct_elt_type): Ditto.
- * f-valprint.c (info_common_command): Ditto.
- (list_all_visible_commons): Ditto.
- * jv-typeprint.c (java_type_print_base): Ditto.
-
- * config/djgpp/fnchange.lst: Rename mi1-var-block.exp,
- mi1-var-child.exp, mi1-var-cmd.exp and mi1-var-display.exp.
- Rename opcodes/iq2000-desc.c and opcodes/iq2000-dis.c. Rename
- i386-interix-nat.c and i386-interix-tdep.c. Rename
- m68klinux-nat.c and m68klinux-tdep.c. Rename
- config/mips/tm-linux.h and config/mips/tm-linux64.h. Rename
- bfd/po/.cvsignore and opcodes/po/.cvsignore. Rename
- gdb/objc-exp.tab.c and gdb/ada-exp.tab.c
- * main.c (captured_main): Use xfree, not free.
-
-2003-01-16 Andrew Cagney <ac131313@redhat.com>
-
- * frame.h (frame_id_unwind_ftype): Change type so that the frame's
- ID back using a parameter.
- * frame.c (frame_id_unwind): Update call.
- (frame_saved_regs_id_unwind): Update.
- * dummy-frame.c (dummy_frame_id_unwind): Update function.
- * dummy-frame.h (struct frame_id): Add opaque declaration.
- (dummy_frame_id_unwind): Update declaration.
-
-2003-01-15 Andrew Cagney <ac131313@redhat.com>
-
- * sparc-tdep.c: Delete reference to PRINT_REGISTER_HOOK.
-
-2003-01-15 Stephen P. Smith <ischis2@cox.net>
-
- * MAINTAINERS (Stephen P. Smith): Updated email address.
-
-2003-01-14 Elena Zannoni <ezannoni@redhat.com>
-
- Fix PR gdb/898
- * breakpoint.c (until_break_command): Add new argument. Use it to
- decide whether to stop only at the current frame or not.
- * breakpoint.h (until_break_command): Update prototype.
- * infcmd.c (until_command): Add new argument to until_break_command
- call.
- (advance_command): New function.
- (_initialize_infcmd): Update help string for 'until' command.
- Add new 'advance' command.
-
-2003-01-14 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c (decode_line_1): Normalize comments.
- (set_flags): Ditto.
- (locate_first_half): Ditto.
- (decode_compound): Ditto.
- (symtab_from_filename): Ditto.
- (decode_all_digits): Ditto.
- (decode_dollar): Ditto.
- (find_methods): Ditto.
- (find_toplevel_char): Ditto.
-
-2003-01-13 Andrew Cagney <ac131313@redhat.com>
-
- * ax-gdb.c, c-valprint.c, charset.c, corefile.c: Update copyright.
- * demangle.c, disasm.c, dwarf2cfi.c, dwarfread.c: Update copyright.
- * elfread.c, eval.c, expprint.c, expression.h: Update copyright.
- * f-typeprint.c, findvar.c, gcore.c, gdb_mbuild.sh: Update copyright.
- * gdbtypes.h, gnu-v2-abi.c, inferior.h, inftarg.c: Update copyright.
- * language.c, language.h, m32r-tdep.c: Update copyright.
- * mn10200-tdep.c, scm-lang.c, scm-lang.h: Update copyright.
- * somsolib.c, somsolib.h, symfile.c, symtab.h: Update copyright.
- * thread-db.c, typeprint.c, utils.c, valarith.c: Update copyright.
- * values.c, win32-nat.c, x86-64-linux-nat.c: Update copyright.
- * x86-64-linux-tdep.c, z8k-tdep.c: Update copyright.
- * cli/cli-decode.h, config/h8500/tm-h8500.h: Update copyright.
-
-2003-01-13 Elena Zannoni <ezannoni@redhat.com>
-
- * stabsread.h (process_later, resolve_cfront_continuation):
- Obsolete.
- Update copyright years.
- * buildsym.c (start_subfile): Obsolete comment pertinent to Cfront.
- Update copyright year.
- * dbxread.c(struct cont_elem): Obsolete.
- (process_later, process_now): Obsolete functions.
- (read_dbx_symtab, read_ofile_symtab): Obsolete cfront support.
- Update copyright year.
- * gdbtypes.c (INIT_EXTRA, ADD_EXTRA): Obsolete macros.
- (add_name, add_mangled_type, cfront_mangle_name): Obsolete functions.
- * mdebugread.c (parse_type): Obsolete comment pertinent to Cfront.
- (parse_partial_symbols): Obsolete cfront support.
- * stabsread.c
- (CFRONT_VISIBILITY_PRIVATE,CFRONT_VISIBILITY_PUBLIC): Obsolete
+2004-01-03 Eli Zaretskii <eliz@elta.co.il>
+
+ * config/djgpp/fnchange.lst: Add lines for COPYING.LIBGLOSS,
+ bfd/doc/ChangeLog-9103, bfd/elf32-m68hc1x.c,
+ gdb/config/alpha/xm-alphaosf.h,
+ gdb/config/powerpc/tm-ppcle-eabi.h,
+ gdb/config/rs6000/tm-rs6000-aix4.h, gdb/gdbtk/ChangeLog-2001,
+ gdb/gdbtk/ChangeLog-2002, gdb/gdbtk/ChangeLog-2003,
+ gdb/gdbtk/plugins/intel-pentium/intel-pentium.tcl.in,
+ gdb/gdbtk/plugins/rhabout/rhabout.tcl.in, gdb/i386-linux-nat.c,
+ gdb/ia64-aix-nat.c, gdb/ia64-aix-tdep.c, gdb/ia64-linux-nat.c,
+ gdb/ia64-linux-nat.c, gdb/ppc-linux-tdep.c, gdb/ppc-linux-nat.c,
+ gdb/sparc64nbsd-nat.c, gdb/sparc64nbsd-tdep.c,
+ gdb/sparc64-linux-nat.c, gdb/sparc64-linux-tdep.c,
+ gdb/sparc64-nat.c, gdb/sparc64-tdep.c, gdb/sparc64-sol2-tdep.c,
+ gdb/sparc-sol2-nat.c, gdb/sparc-sol2-tdep.c,
+ gdb/testsuite/gdb.gdbtk/, gdb/testsuite/gdb.mi/mi-var-child.exp,
+ nclude/ChangeLog-9103, include/coff/ChangeLog-9103,
+ include/elf/ChangeLog-9103, include/opcode/ChangeLog-9103,
+ opcodes/ChangeLog-0001, opcodes/ChangeLog-0203,
+ opcodes/openrisc-dis.c, opcodes/openrisc-desc.h,
+ sim/frv/profile-fr550.c, sim/frv/profile-fr550.h,
+ sim/sh64/sem-compact-switch.c, sim/sh64/sem-media-switch.c,
+ sim/testsuite/sim/sh64/compact/ldsl-mach.cgs,
+ sim/testsuite/sim/sh64/compact/ldsl-macl.cgs,
+ sim/testsuite/sim/sh64/compact/stsl-mach.cgs, and
+ sim/testsuite/sim/sh64/compact/stsl-macl.cgs.
+ Remove lines for .cvsignore files.
+
+2004-01-03 J. Brobecker <brobecker@gnat.com>
+
+ * infrun.c: Back out the previous change.
+
+2004-01-03 Mark Kettenis <kettenis@gnu.org>
+
+ * NEWS: Mention revised SPARC target. Add sparc-*-lynxos* and
+ sparc-*-sunos4* to the list of REMOVED configurations.
+
+ * configure.tgt: Add back sparc-*-vxworks*.
+ * remote-vxsparc.c: Remove all includes except for "defs.h",
+ "regcache.h", "vx-share/ptrace.h" and "vx-share/regPacket.h".
+ Include "sparc-tdep.h".
+ (SPARC_R_G1): New define.
+ (vxsparc_gregset): New variable.
+ (ext_format_sparc): Remove extern declaration.
+ (vx_read_register): Rewrite to use sparc32_supply_gregset and
+ sparc32_supply_fpregset.
+ (vx_write_register): Rewrite to use sparc32_collect_gregset,
+ sparc_collect_rwindow and sparc32_collect_fpregset.
+ * config/sparc/tm-vxworks.h: New file, based on recently removed
+ tm-vxsparc.h.
+ * config/sparc/vxworks.mt: New file, based on recently removed
+ vxworks.mt.
+
+2004-01-03 J. Brobecker <brobecker@gnat.com>
+
+ * infrun.c (handle_step_into_function): New function.
+ (handle_inferior_event): Extract out some code into the new
+ function above.
+
+2004-01-02 Mark Kettenis <kettenis@gnu.org>
+
+ * Makefile.in (ALLDEPFILES): Remove sparc-linux-nat.c and
+ sparcl-tdep.c. Add sparc-linux-tdep.c, sparc-sol2-nat.c,
+ sparc-sol2-tdep.c, sparc-sol2-nat.c, sparc-sol2-tdep.c,
+ sparc64-linux-nat.c, sparc64-linux-tdep.c, sparc64-nat.c,
+ sparc64-sol2-tdep.c, sparc64-tdep.c, sparc64fbsd-nat.c,
+ sparc64fbsd-tdep.c, sparcnbsd-nat.c, sparcnbsd-tdep.c.
+ (sparc_nat_h): New variable.
+ (sparcbsd_nat_h, sparcnbsd_tdep_h): Remove variables.
+ (tm-sun4os4.h): Remove dependency.
+ (sparcbsd-nat.o, sparc-linux-nat.o): Remove dependencies.
+ (sparc64fbsd-nat.o, sparc64fbsd-tdep.o, sparc64nbsd-nat.o,
+ sparc64-tdep.o, sparc-nat.o, sparcnbsd-nat.o, sparcnbsd-tdep.o,
+ sparc-tdep.o): Update dependencies.
+ (sparc-linux-tdep.o, sparc-sol2-nat.o, sparc-sol2-tdep.o,
+ sparc64-linux-nat.o, sparc64-linux-tdep.o, sparc64-nat.o,
+ sparc64-sol2-tdep.o, sparc64-tdep.o, sparc64nbsd-tdep.o): New
+ dependencies.
+ * configure.host: Remove existing sparc-*-lynxos*,
+ sparc-*-solaris*, sparc-*-sunos4*, sparc-*-sunos5*, sparc-*-*,
+ ultrasparc-*-freebsd, sparcv9-*-freebsd, sparc64-*-linux*,
+ sparcv9-*-* and sparc64-*-* triplets. Add new sparc64-*-linux*,
+ sparc-*-solaris2*, sparcv9-*-solaris2* and sparc64-*-solaris2*
+ triplets.
+ * configure.tgt: Remove exitsing sparc-*-aout*, sparc-*-coff*,
+ sparc-*-elf*, sparc*-lynxos*, sparc-*-solars2*, sparc-*-sunos4*,
+ sparc-*-sunos5*, sparc-*-vxworks*, sparc64-*linux*, sparc64-*-*,
+ sparcv9-*-* and commented out sparc64-*-solars2* triplets. Add
+ new sparc-*-solaris2.[0-6], sparc-*-solaris2.[0-6].*,
+ sparc64-*-linux, sparc-*-solaris2*, sparcv9-*-solaris*,
+ sparc64-*-solaris2* and sparc64-*-* triplets.
+ * sparc64-tdep.c: Update copyright year. Include "inferior.h",
+ "symtab.h" and "objfiles.h".
+ (BIAS): Remove define.
+ (X_OP, X_RD, X_A, X_COND, X_OP2, X_IMM22, X_OP3, X_I, X_DISP22)
+ (X_DISP19): Remove macros.
+ (sparc_fetch_instruction): Remove function.
+ (struct gdbarch_tdep): Remove definition.
+ (SPARC64_NUM_REGS, SPARC64_NUM_PSEUDO_REGS): Use ARRAY_SIZE.
+ (sparc_breakpoint_from_pc): Remove function.
+ (struct sparc64_frame_cache): Remove definition.
+ (sparc64_alloc_frame_cache, sparc64_analyze_prologue,
+ sparc64_unwind_pc): Remove functions.
+ (sparc64_skip_prologue): Use `struct sparc_frame_cache' instead of
+ `struct sparc64_frame_cache. Call sparc_analyze_prologue instead
+ of sparc64_analyze_prologue. Mark constant as ULL instead of UL.
+ (sparc64_frame_cache): Change return type to `struct
+ sparc_frame_cache *'. Simply call sparc_frame_cache.
+ (sparc64_frame_this_id, sparc64_frame_prev_register,
+ sparc64_frame_base_address): Use `struct sparc_frame_cache'
+ instead of `struct sparc64_frame_cache.
+ (sparc_unwind_dummy_id, sparc_extract_struct_value_address,
+ sparc_analyze_control_transfer, sparc_software_single_step,
+ sparc64_gdbarch_init, sparc_supply_rwindow, sparc_fill_rwindow,
+ _initialize_sparc64_tdep): Remove functions.
+ (TSTATE_CWP, TSTATE_ICC, TSTATE_XCC): New macros.
+ (PSR_S, PSR_ICC, PSR_VERS, PSR_IMPL, PSR_V8PLUS, PSR_XCC): New
macros.
- (get_substring, get_cfront_method_physname, msg_unknown_complaint,
- read_cfront_baseclasses, read_cfront_member_functions,
- resolve_cfront_continuation,read_cfront_static_fields,
- copy_cfront_struct_fields): Obsolete functions.
- (define_symbol, read_one_struct_field): Obsolete cfront support.
- * xcoffread.c (scan_xcoff_symtab): Obsolete CFront support.
- Update Copyright year.
-
-2003-01-13 Elena Zannoni <ezannoni@redhat.com>
-
- * stack.c (print_frame_info, print_stack_frame_base_stub,
- print_stack_frame_base, show_and_print_stack_frame_stub,
- show_and_print_stack_frame, print_only_stack_frame_stub,
- print_only_stack_frame): Delete functions.
- (print_stack_frame_stub): Call print_frame_info instead of
- print_frame_info_base.
- (print_frame_info_base): Rename to print_frame_info.
- (backtrace_command_1): Call print_frame_info, instead of
- print_frame_info_base.
- (current_frame_command): Call print_stack_frame, instead of
- print_only_stack_frame.
- (frame_command): Call print_stack_frame, instead of
- show_and_print_stack_frame.
- (up_command): Ditto.
- (down_command): Ditto.
- * frame.h (print_only_stack_frame): Delete prototype.
- * infrun.c (normal_stop): Call print_stack_frame, instead of
- show_and_print_stack_frame.
- * thread.c (info_threads_command): Call print_stack_frame, instead
- of print_only_stack_frame.
-
-2003-01-13 Andrew Cagney <ac131313@redhat.com>
-
- * README (Graphical interface to GDB): Update URL. Point at
- gdb/links/.
-
- * gdb_indent.sh: Update to version 2.2.9. Warn when not exact
- version match.
-
-2003-01-13 Daniel Jacobowitz <drow@mvista.com>
-
- * symtab.c (find_pc_sect_line): Don't consider end-of-function
- lines.
-
-2003-01-13 Daniel Jacobowitz <drow@mvista.com>
-
- * thread-db.c (attach_thread): Prototype.
- (struct private_thread_info): Remove lwpid. Add thread handle (th),
- thread information (ti), and valid flags (th_valid, ti_valid).
- (attach_thread): Move target_pid_to_str call to after the thread
- is added to GDB's list. Initialize the cache.
- (thread_get_info_callback, thread_db_map_id2thr)
- (thread_db_get_info): New functions.
- (thread_from_lwp, lwp_from_thread, thread_db_fetch_registers)
- (thread_db_store_registers, thread_db_thread_alive)
- (thread_db_get_thread_local_address): Use them.
- (thread_db_pid_to_str): Likewise. Return "Missing" instead
- of calling error() for threads in unknown state.
-
- (clear_lwpid_callback): New function.
- (thread_db_resume): Use it to clear the cache.
-
-2003-01-13 Daniel Jacobowitz <drow@mvista.com>
-
- * lin-lwp.c (struct private_thread_info, find_lwp_callback): Remove.
- (resume_callback): Remove dead code.
-
-2003-01-13 Andrew Cagney <ac131313@redhat.com>
-
- * gdbarch.sh (FRAME_INIT_SAVED_REGS): Change to function with
- predicate.
- * gdbarch.h, gdbarch.c: Regenerate.
- * stack.c (frame_info): Only initialize the saved registers when
- FRAME_INIT_SAVED_REGS_P.
- * frame.c (frame_saved_regs_register_unwind): Assert
- FRAME_INIT_SAVED_REGS_P.
- (deprecated_generic_get_saved_register): Ditto.
-
-2003-01-13 Daniel Jacobowitz <drow@mvista.com>
-
- * source.c (openp): Squelch warning about "filename".
-
-2003-01-13 Daniel Jacobowitz <drow@mvista.com>
-
- * source.c (openp): If the file does not exist don't necessarily
- search the path.
-
-2003-01-13 Daniel Jacobowitz <drow@mvista.com>
-
- Fix PR gdb/872.
- * gdbtypes.c (init_type): Mark "char" as TYPE_FLAG_NOSIGN.
- (integer_types_same_name_p): New function.
- (rank_one_type): Use it.
- * stabsread.c (read_range_type): Mark "char" as TYPE_FLAG_NOSIGN.
-
-2003-01-13 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in (TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_DEFINE): New
+ (sparc64_supply_gregset, sparc64_collect_gregset,
+ sparc64_supply_fpregset, sparc64_collect_fpregset): New functions.
+ (sparc64_init_abi): New function.
+ * sparc64-tdep.h: Update copyright year. Fix typo in multiple
+ inclusion guard. Include "sparc-tdep.h".
+ (BIAS): Define.
+ (r_tstate_offset, r_fprs_offset): New defines.
+ (enum sparc_regnum): Remove defenition.
+ (enum sparc64_regnum): Reformat.
+ (sparc_supply_rwindow, sparc_fill_rwindow): Remove prototypes.
+ (sparc64_init_abi, sparc64_supply_gregset,
+ sparc64_collect_gregset, sparc64_supply_fpregset,
+ sparc64_collect_fpregset): New prototypes.
+ (sparc64_sol2_gregset, sparc64nbsd_gregset, sparc64fbsd_gregset):
+ Add extern declarations.
+ (sparc64_sol2_init_abi): New prototype.
+ (sparc64fbsd_supply_reg, sparc64fbsd_fill_reg)
+ (sparc64fbsd_supply_fpreg, sparc64fbsd_fill_fpreg): Remove
+ prototypes.
+ * sparc64fbsd-nat.c: Include "sparc-nat.h", don't include
+ "sparnbsd-nat.h".
+ (sparc64fbsd_reg_supplies_p, sparc64fbsd_fpreg_supplies_p): Remove
+ functions.
+ (_initialize_sparc64fbsd_nat): Remove initialization of
+ sparcbsd_supply_reg, sparcbsd_fill_reg, sparcbsd_supply_fpreg,
+ sparcbsd_fill_fpreg, sparcbsd_reg_supplies_p,
+ sparcbsd_fpreg_supplies_p. Initialize sparc_gregset.
+ * sparc64fbsd-tdep.c: Update copyright year. Include "frame.h",
+ "frame-unwind.h", "trad-frame.h" and "gdb_assert.h".
+ (sparc64fbsd_r_global_offset, sparc64fbsd_r_out_offset)
+ (sparc64fbsd_r_fprs_offset, sparc64fbsd_r_tnpc_offset)
+ (sparc64fbsd_r_tpc_offset, sparc64fbsd_r_tstate_offset)
+ (sparc64fbsd_r_y_offset): Remove variables.
+ (sparc64fbsd_sizeof_struct_reg, sparc64fbsd_sizeof_struct_fpreg):
+ Make static and const.
+ (sparc64fbsd_supply_reg, sparc64fbsd_fill_reg)
+ (sparc64fbsd_supply_fpreg, sparc64fbsd_fill_fpreg): Remove
+ functions.
+ (sparc64fbsd_gregset): New variable.
+ (fetch_core_registers): Replace calls to sparc64fbsd_supply_reg
+ and sparc64fbsd_supply_fpreg with calls to sparc64_supply_gregset
+ and sparc64_supply_fpregset.
+ (sparc64fbsd_pc_in_sigtramp, sparc64fbsd_sigtramp_frame_cache)
+ (sparc64fbsd_sigtramp_frame_this_id)
+ (sparc64fbsd_sigtramp_frame_prev_register): New functions.
+ (sparc64fbsd_sigtramp_frame_unwind): New variable.
+ (sparc64fbsd_sigtramp_frame_sniffer): New function.
+ (sparc64fbsd_init_abi): Set pc_in_sigtramp, append
+ sparc64fbsd_sigtramp_frame_sniffer. Call sparc64_init_abi.
+ * sparcnbsd-tdep.c: Update copyright year. Include
+ "floatformat.h", "frame.h", "frame-unwind.h", "symtab.h",
+ "trad-frame.h" and "gdb_assert.h", don't include "target.h",
+ "value.h" and "sparcnbsd-tdep.h".
+ (REG32_OFFSET_PSR, REG32_OFFSET_PC, REG32_OFFSET_NPC)
+ (REG32_OFFSET_Y, REG32_OFFSET_GLOBAL, REG32_OFFSET_OUT)
+ (REG64_OFFSET_TSTATE, REG64_OFFSET_PC, REG64_OFFSET_NPC)
+ (REG64_OFFSET_Y, REG64_OFFSET_GLOBAL, REG64_OFFSET_OUT): Remove
+ defines.
+ (sparcnbsd_gregset): New variable.
+ (sparcnbsd_supply_reg32, sparcnbsd_supply_reg64)
+ (sparcnbsd_fill_reg32, sparcnbsd_fill_reg64)
+ (sparcnbsd_supply_fpreg32, sparcnbsd_supply_fpreg64)
+ (sparcnbsd_fill_reg32, sparcnbsd_fill_reg64): Remove functions.
+ (sparc32nbsd_sigtramp_start, sparc32nbsd_sigtramp_end): New
variables.
- (main.o): Custom rule which uses $(TARGET_SYSTEM_ROOT_DEFINE).
- * configure.in: Add --with-sysroot.
- * configure: Regenerated.
- * main.c (gdb_sysroot): New variable.
- (captured_main): Initialize gdb_sysroot.
- * defs.h (gdb_sysroot): New extern declaration.
- * solib.c (_initialize_solib): Initialize solib_absolute_prefix.
-
-2003-01-12 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: add gdb/ChangeLog-2002.
-
-2003-01-12 Michael Chastain <mec@shout.net>
-
- * top.c (print_gdb_version): Bump copyright year to 2003.
-
-2003-01-12 David Carlton <carlton@bactrian.org>
-
- * linespec.c (symtab_from_filename): Rename variable 's' to
- 'file_symtab'.
-
-2003-01-12 Andrew Cagney <ac131313@redhat.com>
-
- * d10v-tdep.c (d10v_init_extra_frame_info): Remove checks for a
- dummy frame.
- (d10v_frame_saved_pc, d10v_frame_chain): Ditto.
-
-2003-01-12 Andrew Cagney <ac131313@redhat.com>
-
- * d10v-tdep.c: Include "gdb_assert.h".
- (d10v_store_return_value): Rewrite to match current interface.
- (d10v_extract_struct_value_address): Ditto.
- (d10v_extract_return_value): Ditto.
- (d10v_gdbarch_init): Set store_restore_value,
- extract_struct_value_address and extract_return_value.
-
-2003-01-12 J. Brobecker <brobecker@gnat.com>
-
- * hpread.c (set_namestring): New procedure replacing the
- SET_NAMESTRING macro.
- (hpread_build_psymtabs): Replace calls to SET_NAMESTRING
- by calls to set_namestring.
-
-2003-01-11 J. Brobecker <brobecker@gnat.com>
-
- * hpread.c (SET_NAMESTRING): Remove an incorrect cast to fix
- a compilation warning.
- (hpread_process_one_debug_symbol): Likewise.
-
-2003-01-10 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c (decode_line_1): Rename variable 's' to
- 'file_symtab'.
- (decode_all_digits): Rename argument 's' to 'file_symtab'.
- (decode_dollar): Ditto.
- (decode_variable): Ditto.
- (symbol_found): Ditto.
-
-2003-01-09 Michael Chastain <mec@shout.net>
-
- * config/djgpp/fnchange.lst: update file list for testsuite/gdb.c++.
-
-2003-01-07 Corinna Vinschen <vinschen@redhat.com>
-
- * win32-nat.c (set_process_privilege): New function.
- (child_attach): Call set_process_privilege() to enable the
- SE_DEBUG_NAME user privilege if available in process token.
-
-2003-01-10 J. Brobecker <brobecker@gnat.com>
-
- * hpread.c (hpread_process_one_debug_symbol): Fix a small
- compilation error in the previous revision.
-
-2003-01-09 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c: Update copyright.
-
-2003-01-09 Daniel Jacobowitz <drow@mvista.com>
-
- * lin-lwp.c (child_wait): Ignore exit statuses for processes other
- than inferior_ptid.
- (lin_lwp_wait): Ignore exit statuses for unknown LWPs.
-
-2003-01-09 Andrew Cagney <ac131313@redhat.com>
-
- * frame.h (frame_obstack_zalloc): Replace frame_obstack_alloc.
- Update comments.
- * frame.c (frame_obstack_zalloc): Replace frame_obstack_alloc.
- (frame_saved_regs_zalloc): Update.
- (frame_saved_regs_register_unwind): Update.
- (create_new_frame): Update.
- (get_prev_frame): Update.
- (frame_extra_info_zalloc): Update.
- (deprecated_get_frame_saved_regs): Update.
- * dwarf2cfi.c (cfi_init_extra_frame_info): Update.
- * cris-tdep.c: Update comment.
-
- * somsolib.h: Fix function indentation.
- * disasm.c, buildsym.c, buildsym.h: Eliminate PTR.
- * gnu-v2-abi.c, f-typeprint.c, x86-64-linux-tdep.c: Eliminate STREQ.
- * demangle.c, ax-gdb.c, c-valprint.c: Eliminate STREQ.
- * alpha-osf1-tdep.c, corefile.c: Eliminate STREQ.
- * somsolib.c, inftarg.c: Remove assignment in if conditional.
-
- * infrun.c (follow_fork): Use ISO C definition.
- * expprint.c (print_subexp): Use xfree instead of free.
- * charset.c: Include "gdb_string.h" instead of <string.h>.
- (register_iconv_charsets): Use ISO C definition.
- (host_charset, target_charset): Ditto.
- * Makefile.in (charset.o): Update dependencies.
- (mi-cmd-env.o): Update dependencies.
-
-2003-01-08 Andrew Cagney <cagney@redhat.com>
-
- * alpha-linux-tdep.c (alpha_linux_sigcontext_addr): Use
- get_frame_base.
-
-2003-01-08 Andrew Cagney <ac131313@redhat.com>
-
- * gdb_mbuild.sh: Add --keep option. When specified, keep the
- build directories. Save edited gdb output in Mbuild.log. If a
- build fails, remove any final GDB executable.
-
-2003-01-08 Andrew Cagney <ac131313@redhat.com>
-
- * gdb_mbuild.sh: Edit the output of `maint print architecture'
- replacing hex constants with function names and stripping leading
- file name directory prefixes.
-
-2003-01-08 Andrew Cagney <cagney@redhat.com>
-
- * gcore.c, i386-linux-tdep.c: Use get_frame_pc, get_next_frame and
- get_frame_base.
-
-2003-01-08 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c (decode_line_1): Move code into decode_variable.
- (decode_variable): New function.
-
-2003-01-08 Andrew Cagney <ac131313@redhat.com>
-
- * mn10300-tdep.c (analyze_dummy_frame): Fix typo.
-
-2003-01-08 Andrew Cagney <cagney@redhat.com>
-
- * cris-tdep.c (cris_frame_init_saved_regs): Use
- get_frame_saved_regs and SIZEOF_FRAME_SAVED_REGS when copying a
- saved_regs buffer.
- * sh-tdep.c (sh_nofp_frame_init_saved_regs): Ditto.
- (sh64_nofp_frame_init_saved_regs): Ditto.
- (sh_fp_frame_init_saved_regs): Ditto.
- * arm-tdep.c: Use deprecated_set_frame_saved_regs_hack.
- * mips-tdep.c (mips_init_extra_frame_info): Ditto.
- * mcore-tdep.c (analyze_dummy_frame): Ditto.
- * mn10300-tdep.c (analyze_dummy_frame): Ditto.
-
-2003-01-08 Daniel Jacobowitz <drow@mvista.com>
+ (sparc32nbsd_pc_in_sigtramp, sparc32nbsd_sigcontext_frame_cache)
+ (sparc32nbsd_sigcontext_frame_this_id)
+ (sparc32nbsd_sigcontext_frame_prev_register): New functions.
+ (sparc32nbsd_sigcontext_frame_unwind): New variable.
+ (sparc32nbsd_sigtramp_frame_sniffer): New function.
+ (sparcnbsd_get_longjmp_target_32,
+ sparcnbsd_get_longjmp_target_64): Remove functions.
+ (sparcnbsd_aout_in_solib_call_trampoline): Rewrite.
+ (sparcnbsd_init_abi_common, sparcnbsd_init_aout,
+ sparcnbsd_init_elf): Remove.
+ (sparcnbsd_init_abi, sparcnbsd_aout_init_abi)
+ (sparcnbsd_elf_init_abi): New functions.
+ (_initialize_sparcnbsd_tdep): New prototype.
+ (_initialize_sparnbsd_tdep): Update.
+ * config/sparc/fbsd.mh (NATDEPFILES): Remove sparcbsd-nat.o and
+ corelow.o. Add sparc64-nat.o and sparc-nat.o.
+ * config/sparc/fbsd.mt (TDEPFILES): Add sparc-tdep.o and corelow.o.
+ * config/sparc/linux.mh: Update comment.
+ (XM_FILE, HOST_IPC): Remove variables.
+ (NATDEPFILES): Add sparc-sol2-nat.o and core-regset.o. Remove
+ sparc-linux-nat.o.
+ * config/sparc/linux.mt: Update comment.
+ (TDEPFILES): Add sparc-sol2-tdep.o and sparc-linux-tdep.o.
+ * config/sparc/nbsd.mt: Reformat.
+ * config/sparc/nbsd64.mh: Update comment.
+ (NATDEPFILES): Add sparc-nat.o.
+ * config/sparc/nbsd64.mt: Update comment.
+ (TDEPFILES): Add sparc64-tdep.o and sparc64nbsd-tdep.o.
+ (TM_FILE): Set to tm-nbsd.h.
+ * config/sparc/nbsdelf.mh: Update comment.
+ (NATDEPFILES): Add sparc-nat.o.
+ (XM_FILE): Delete.
+ * config/sparc/nbsdaout.mh: Update comment.
+ (NATDEPFILES): Add sparc-nat.o
+ (XM_FILE): Delete.
+ * config/sparc/nm-linux.h: Update copyright year. Don't include
+ "config/nm-svr4.h" and "solib.h". Add protection against multiple
+ inclusion.
+ (KERNEL_U_SIZE): Remove define.
+ (kernel_u_size): Remove prototype.
+ (PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define.
+ * config/sparc/nm-nbsd.h: Update copyright. Don't include
+ "regcache.h".
+ (CHILD_PREPARE_TO_STORE): Remove define.
+ * config/sparc/nm-nbsdaout.h: Tweak some comments.
+ * sparc-nat.c, sparc-tdep.c, sparc-tdep.h, sparc64nbsd-nat.c,
+ sparcnbsd-nat.c: Rewrite files.
+ * config/sparc/tm-linux.h, config/sparc/tm-nbsd.h: Rewrite files.
+ * sparc-linux-nat.c, sparcbsd-nat.c, sparcbsd-nat.h,
+ sparcnbsd-tdep.h: Remove files.
+ * config/sparc/nm-sparclynx.h, config/sparc/nm-sun4os4.h,
+ config/sparc/nm-sun4sol2.h, config/sparc/sp64.mt,
+ config/sparc/sp64linux.mt, config/sparc/sp64sol2.mt,
+ config/sparc/sparc-em.mt, config/sparc/sparclynx.mh,
+ config/sparc/sparclynx.mt, config/sparc/sun4os4.mh,
+ config/sparc/sun4os4.mt, config/sparc/sun4sol2.mh,
+ config/sparc/sun4sol2.mt, config/sparc/tm-sp64.h,
+ config/sparc/tm-sp64linux.h, config/sparc/tm-sparc.h,
+ config/sparc/tm-sparclynx.h, config/sparc/tm-spc-em.h,
+ config/sparc/tm-sun4os4.h, config/sparc/tm-sun4sol2.h,
+ config/sparc/tm-vxsparc.h, config/sparc/vxsparc.mt,
+ config/sparc/xm-linux.h, config/sparc/xm-sun4sol2.h: Remove files.
+ * sparc-linux-tdep.c, sparc-nat.h, sparc-sol2-nat.c,
+ sparc-sol2-tdep.c, sparc64-linux-nat.c, sparc64-linux-t dep.c,
+ sparc64-nat.c, sparc64-sol2-tdep.c, sparc64nbsd-tdep.c: New files.
+ * config/sparc/linux64.mh, config/sparc/linux64.mt,
+ config/sparc/nm-sol2.h, config/sparc/sol2-64.mt,
+ config/sparc/sol2.mh, config/sparc/sol2.mt, config/sparc/sparc.mt,
+ config/sparc/sparc64.mt, config/sparc/tm-sol2.h: New files.
+
+2004-01-02 Andrew Cagney <cagney@redhat.com>
+
+ From 2003-12-18 Kazuhiro Inaoka:
+ * configure.host: Add m32r-linux target.
+
+2004-01-02 Michael Chastain <mec.gnu@mindspring.com>
+
+ * top.c (print_gdb_version): Update year to 2004.
+
+2004-01-02 Mark Mitchell <mark@codesourcery.com>
+
+ * MAINTAINERS: Add myself to the write-after-approval category.
+
+2004-01-02 Daniel Jacobowitz <drow@mvista.com>
+
+ From Bernardo Innocenti <bernie@develer.com>:
+ * configure.tgt: Add uClinux target.
+
+2004-01-02 Andrew Cagney <cagney@redhat.com>
+
+ * utils.c (do_my_cleanups): Make static, add forward declaration.
+ * defs.h (do_my_cleanups): Delete declaration.
+
+2004-01-02 Eli Zaretskii <eliz@elta.co.il>
+
+ * config/djgpp/fnchange.lst: Add lines for gdb/ChangeLog-2003 and
+ bfd/ChangeLog-0203.
+
+2004-01-02 Mark Kettenis <kettenis@gnu.org>
+
+ * configure.in: Check for <machine/reg.h>. Check for `struct reg'
+ in <machine/reg.h>.
+ * configure, config.in: Regenerate.
- * minsyms.c (lookup_minimal_symbol): Update comment.
- (lookup_minimal_symbol_text): Update comment. Use the hash table.
- (lookup_minimal_symbol_solib_trampoline): Likewise.
+2004-01-16 David Carlton <carlton@kealia.com>
-2003-01-08 Andrew Cagney <cagney@redhat.com>
+ * symtab.c: Delete double-include of dictionary.h.
- * d10v-tdep.c (d10v_init_extra_frame_info): Use
- frame_relative_level.
-
- * alpha-tdep.c: Use get_frame_extra_info.
- * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto.
- * h8300-tdep.c, ia64-tdep.c, m68hc11-tdep.c, mcore-tdep.c: Ditto.
- * mips-tdep.c, mn10300-tdep.c, s390-tdep.c, sh-tdep.c: Ditto.
- * sparc-tdep.c, xstormy16-tdep.c: Ditto.
-
- * alpha-tdep.c: Use get_next_frame.
- * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto.
- * dwarf2cfi.c, h8300-tdep.c, i386-tdep.c, ia64-tdep.c: Ditto.
- * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c: Ditto.
- * mips-tdep.c, mn10200-tdep.c, mn10300-tdep.c: Ditto.
- * ns32k-tdep.c, s390-tdep.c, sh-tdep.c, sparc-tdep.c: Ditto.
- * v850-tdep.c, vax-tdep.c, x86-64-linux-tdep.c: Ditto.
- * xstormy16-tdep.c: Ditto.
-
-2003-01-07 Andrew Cagney <cagney@redhat.com>
-
- * alpha-tdep.c: Use get_frame_base.
- * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto.
- * h8300-tdep.c, i386-tdep.c, ia64-tdep.c, m68hc11-tdep.c: Ditto.
- * m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10200-tdep.c: Ditto.
- * mn10300-tdep.c, ns32k-tdep.c, s390-tdep.c, sh-tdep.c: Ditto.
- * sparc-tdep.c, v850-tdep.c, vax-tdep.c: Ditto.
- * x86-64-linux-tdep.c, xstormy16-tdep.c: Ditto.
- * config/h8500/tm-h8500.h, config/mn10200/tm-mn10200.h: Ditto.
- * config/sparc/tm-sparc.h: Ditto.
-
-2003-01-07 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (deprecated_get_frame_context): New function.
- (deprecated_set_frame_context): New function.
- * frame.h (deprecated_get_frame_context): Declare.
- (deprecated_set_frame_context): Declare.
- * dwarf2cfi.c (UNWIND_CONTEXT): Use deprecated_get_frame_context.
- (cfi_init_extra_frame_info): Use deprecated_set_frame_context.
-
-2003-01-07 Andrew Cagney <cagney@redhat.com>
-
- * frame.c (deprecated_set_frame_next_hack): New function.
- (deprecated_set_frame_prev_hack): New function.
- * frame.h (deprecated_set_frame_next_hack): Declare.
- (deprecated_set_frame_prev_hack): Declare.
- * mcore-tdep.c (analyze_dummy_frame): Use
- deprecated_set_frame_next_hack and deprecated_set_frame_prev_hack.
- * mn10300-tdep.c (analyze_dummy_frame): Ditto.
-
-2003-01-07 David Carlton <carlton@math.stanford.edu>
-
- * linespec.c (decode_line_1): Move code into decode_dollar.
- (decode_dollar): New function.
-
-2003-01-07 Andrew Cagney <cagney@redhat.com>
-
- * arm-tdep.c (arm_init_extra_frame_info): Use
- deprecated_update_frame_base_hack.
- * xstormy16-tdep.c (xstormy16_scan_prologue): Ditto.
- * mn10300-tdep.c (analyze_dummy_frame): Ditto.
- (fix_frame_pointer): Ditto.
- (mn10300_analyze_prologue): Ditto.
-
-2003-01-07 Andrew Cagney <cagney@redhat.com>
-
- * xstormy16-tdep.c (xstormy16_init_extra_frame_info): Allocate
- extra_info using frame_extra_info_zalloc.
- * sparc-tdep.c (sparc_init_extra_frame_info): Ditto.
- * sh-tdep.c (sh_init_extra_frame_info): Ditto.
- (sh64_init_extra_frame_info): Ditto.
- * mn10300-tdep.c (mn10300_init_extra_frame_info): Ditto.
- * s390-tdep.c (s390_init_extra_frame_info): Ditto.
- * mips-tdep.c (mips_init_extra_frame_info): Ditto.
- * mcore-tdep.c (mcore_init_extra_frame_info): Ditto.
- * frv-tdep.c (frv_init_extra_frame_info): Ditto.
- * m68hc11-tdep.c (m68hc11_init_extra_frame_info): Ditto.
- * ia64-tdep.c (ia64_init_extra_frame_info): Ditto.
- * h8300-tdep.c (h8300_init_extra_frame_info): Ditto.
- * d10v-tdep.c (d10v_init_extra_frame_info): Ditto.
- * cris-tdep.c (cris_init_extra_frame_info): Ditto.
- * arm-tdep.c (arm_init_extra_frame_info): Ditto.
- * alpha-tdep.c (alpha_init_extra_frame_info): Ditto.
-
- * mn10300-tdep.c (analyze_dummy_frame): Use
- deprecated_set_frame_extra_info_hack.
- * mcore-tdep.c (analyze_dummy_frame): Ditto.
-
-2003-01-07 J. Brobecker <brobecker@gnat.com>
-
- * mdebugread.c (parse_symbol): Skip stProc entries which storage
- class is not scText. These do not define "real" procedures.
- (parse_partial_symbols): Likewise.
-
-2003-01-06 Michael Snyder <msnyder@redhat.com>
-
- * lin-lwp.c: Added or elaborated on "debug lin-lwp" info.
-
-2003-01-06 Andrew Cagney <ac131313@redhat.com>
-
- * frame.h (deprecated_frame_xmalloc_with_cleanup): Declare.
- * frame.c (deprecated_frame_xmalloc_with_cleanup): New function.
- * arm-tdep.c (arm_frame_chain): Allocate caller_fi using
- deprecated_frame_xmalloc_with_cleanup.
- * m32r-tdep.c (m32r_virtual_frame_pointer): Allocate `fi' using
- deprecated_frame_xmalloc.
- * mcore-tdep.c (analyze_dummy_frame): Ditto for dummy.
- * mn10200-tdep.c (mn10200_frame_chain): Ditto for dummy_frame.
-
-2003-01-06 Andrew Cagney <cagney@redhat.com>
-
- * x86-64-linux-tdep.c: Include "osabi.h".
- * Makefile.in (x86-64-linux-tdep.o): Update dependencies.
-
- * sparc-tdep.c (sparc_dump_tdep): Fix typo, match -> mach.
-
-2003-01-06 Andrew Cagney <cagney@redhat.com>
-
- * MAINTAINERS (Target Instruction Set Architectures): Update
- arm-elf. Can be built with -Werror, has been multiarched.
-
- * value.h (unpack_long): Make buffer parameter constant.
- (unpack_double, unpack_pointer, unpack_field_as_long): Ditto.
- * scm-lang.h (scm_parse): Ditto.
- * defs.h (extract_typed_address, extract_address): Ditto.
- (extract_long_unsigned_integer): Ditto.
- * inferior.h (unsigned_pointer_to_address): Ditto.
- (signed_pointer_to_address): Ditto.
- * gdbarch.sh (POINTER_TO_ADDRESS): Ditto.
- * gdbarch.h, gdbarch.c: Regenerate.
- * findvar.c (extract_long_unsigned_integer): Update.
- (extract_address): Update.
- (extract_typed_address): Update.
- (unsigned_pointer_to_address): Update.
- * values.c (unpack_long): Update.
- (unpack_double): Update.
- (unpack_pointer): Update.
- (unpack_field_as_long): Update.
- * d10v-tdep.c (d10v_pointer_to_address): Update.
- * avr-tdep.c (avr_pointer_to_address): Update.
- * scm-lang.c (scm_unpack): Update.
- * findvar.c (signed_pointer_to_address): Update.
-
-2003-01-06 Michal Ludvig <mludvig@suse.cz>
-
- * x86-64-linux-nat.c (i386_sse_regnum_p): Deleted. Not needed anymore
- since it is in i386-tdep.c.
-
-2003-01-06 J. Brobecker <brobecker@gnat.com>
-
- * alpha-tdep.c (alpha_gdbarch_init): Fix a small compilation
- failure introduced in the previous change.
-
-2003-01-05 Michael Chastain <mec@shout.net>
-
- * README: Remove references to deleted remote-*.c files:
- remote-adapt.c, remote-eb.c, remote-mm.c, remote-nindy.c,
- remote-nrom.c, remote-os9k.c, remote-udi.c.
-
-2003-01-05 Mark Kettenis <kettenis@gnu.org>
-
- * i386-tdep.c (i386_get_longjmp_target): Make usable on x86-64.
- * x86-64-tdep.c (x86_64_init_abi): Remove FIXME about
- i386_get_longjmp_target.
-
-2003-01-05 Andrew Cagney <ac131313@redhat.com>
-
- * arm-tdep.c (prologue_cache): Change to a pointer.
- (_initialize_arm_tdep): Allocate prologue_cache.
- (check_prologue_cache): Update.
- (save_prologue_cache): Update.
- (arm_gdbarch_init): Update.
-
-2003-01-04 Daniel Jacobowitz <drow@mvista.com>
-
- * stabsread.c (update_method_name_from_physname): Call complaint()
- instead of error.
-
-2003-01-04 Daniel Jacobowitz <drow@mvista.com>
-
- * arm-tdep.c (arm_frame_chain_valid): Remove unnecessary test.
- * d10v-tdep.c (d10v_frame_chain_valid): Remove unnecessary tests.
- * hppa-tdep.c (hppa_frame_chain_valid): Remove unnecessary test.
-
- * blockframe.c: Include "gdbcmd.h" and "command.h".
- (backtrace_below_main): New variable.
- (file_frame_chain_valid, func_frame_chain_valid)
- (nonnull_frame_chain_valid, generic_file_frame_chain_valid)
- (generic_func_frame_chain_valid): Remove functions.
- (frame_chain_valid, do_flush_frames_sfunc): New functions.
- (_initialize_blockframe): New function.
- * Makefile.in (blockframe.o): Update dependencies.
- * frame.c (frame_saved_regs_id_unwind, get_prev_frame): Remove FIXME
- comment. Call frame_chain_valid ().
- * frame.h: Remove old prototypes. Add prototype for
- frame_chain_valid and update comments to match.
- * gdbarch.sh: Change FRAME_CHAIN_VALID into a predicated function.
- Remove old comment.
- * gdbarch.h: Regenerated.
- * gdbarch.c: Regenerated.
-
- * alpha-tdep.c (alpha_gdbarch_init): Don't call
- set_gdbarch_frame_chain_valid.
- * avr-tdep.c (avr_gdbarch_init): Likewise.
- * cris-tdep.c (cris_gdbarch_init): Likewise.
- * frv-tdep.c (frv_gdbarch_init): Likewise.
- * h8300-tdep.c (h8300_gdbarch_init): Likewise.
- * i386-tdep.c (i386_svr4_init_abi): Likewise.
- (i386_nw_init_abi): Likewise.
- (i386_gdbarch_init): Likewise.
- * ia64-tdep.c (ia64_gdbarch_init): Likewise.
- * m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise.
- * m68k-tdep.c (m68k_gdbarch_init): Likewise.
- * mcore-tdep.c (mcore_gdbarch_init): Likewise.
- * mips-tdep.c (mips_gdbarch_init): Likewise.
- * mn10300-tdep.c (mn10300_gdbarch_init): Likewise.
- * ns32k-tdep.c (ns32k_gdbarch_init): Likewise.
- * ppcnbsd-tdep.c (ppcnbsd_init_abi): Likewise.
- * rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
- * s390-tdep.c (s390_gdbarch_init): Likewise.
- * sh-tdep.c (sh_gdbarch_init): Likewise.
- * sparc-tdep.c (sparc_gdbarch_init): Likewise.
- * v850-tdep.c (v850_gdbarch_init): Likewise.
- * vax-tdep.c (vax_gdbarch_init): Likewise.
- * x86-64-tdep.c (x86_64_init_abi): Likewise.
-
- * config/m32r/tm-m32r.h (FRAME_CHAIN_VALID): Don't define.
- * config/m68k/tm-apollo68b.h (FRAME_CHAIN_VALID): Likewise.
- * config/m68k/tm-m68kv4.h (FRAME_CHAIN_VALID): Likewise.
- * config/m68k/tm-monitor.h (FRAME_CHAIN_VALID): Likewise.
- * config/m68k/tm-os68k.h (FRAME_CHAIN_VALID): Likewise.
- * config/m68k/tm-vx68.h (FRAME_CHAIN_VALID): Likewise.
- * config/mn10200/tm-mn10200.h (FRAME_CHAIN_VALID): Likewise.
- * config/sparc/tm-sparclite.h (FRAME_CHAIN_VALID): Likewise.
-
-2002-01-04 Daniel Jacobowitz <drow@mvista.com>
-
- * Makefile.in (acconfig_h): Remove incorrect macro.
- (config_h): Define.
- (osabi.o): Update dependencies.
- * configure.tgt: Set gdb_osabi based on target triplet.
- * configure.in: Define GDB_OSABI_DEFAULT based on gdb_osabi.
- * configure: Regenerated.
- * config.in: Regenerated.
- * osabi.c: Include "arch-utils.h", "gdbcmd.h", and "command.h".
- (GDB_OSABI_DEFAULT): Define if not already defined.
- (user_osabi_state, user_selected_osabi, gdb_osabi_available_names)
- (set_osabi_string): New variables.
- (gdbarch_register_osabi): Add new OS ABI to
- gdb_osabi_available_names.
- (gdbarch_lookup_osabi): Honor specified and default OS ABIs.
- (set_osabi, show_osabi): New functions.
- (_initialize_gdb_osabi): Add "set osabi" and "show osabi" commands.
-
-2003-01-04 Daniel Jacobowitz <drow@mvista.com>
-
- * arch-utils.c (gdbarch_info_init): Set osabi to
- GDB_OSABI_UNINITIALIZED.
- * gdbarch.sh: Add osabi to struct gdbarch and to struct
- gdbarch_info. Include "osabi.h" in gdbarch.c. Check osabi
- in gdbarch_list_lookup_by_info and in gdbarch_update_p.
- * gdbarch.c: Regenerated.
- * gdbarch.h: Regenerated.
- * osabi.c (gdbarch_lookup_osabi): Return GDB_OSABI_UNINITIALIZED if
- there's no BFD.
- (gdbarch_init_osabi): Remove osabi argument; use info.osabi.
- * osabi.h (enum gdb_osabi): Move to defs.h.
- (gdbarch_init_osabi): Update prototype.
- * defs.h (enum gdb_osabi): Moved here.
- * Makefile.in: Update dependencies.
-
- * alpha-tdep.h: Don't include "osabi.h".
- (struct gdbarch_tdep): Remove osabi member.
- * alpha-tdep.c: Include "osabi.h".
- (alpha_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't
- iterate over arches. Update call to gdbarch_init_osabi.
- (alpha_dump_tdep): Don't dump osabi.
- * alpha-linux-tdep.c: Include "osabi.h".
- * alpha-osf1-tdep.c: Include "osabi.h".
- * alphafbsd-tdep.c: Include "osabi.h".
- * alphanbsd-tdep.c: Include "osabi.h".
-
- * arm-tdep.h: Don't include "osabi.h".
- (struct gdbarch_tdep): Remove osabi member.
- * arm-tdep.c: Include "osabi.h".
- (arm_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't
- iterate over arches. Update call to gdbarch_init_osabi.
- (arm_dump_tdep): Don't dump osabi.
- * arm-linux-tdep.c: Include "osabi.h".
- * armnbsd-tdep.c: Include "osabi.h".
-
- * hppa-tdep.c (hppa_gdbarch_init): Don't call gdbarch_lookup_osabi.
- Update call to gdbarch_init_osabi.
-
- * i386-tdep.h: Don't include "osabi.h".
- (struct gdbarch_tdep): Remove osabi member.
- * i386-tdep.c: Include "osabi.h".
- (i386_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't
- iterate over arches. Update call to gdbarch_init_osabi.
- (i386_dump_tdep): Don't dump osabi.
- * i386-linux-tdep.c: Include "osabi.h".
- * i386-sol2-tdep.c: Include "osabi.h".
- * i386bsd-tdep.c: Include "osabi.h".
- * i386gnu-tdep.c: Include "osabi.h".
- * i386ly-tdep.c: Include "osabi.h".
- * i386nbsd-tdep.c: Include "osabi.h".
- * i386obsd-tdep.c: Include "osabi.h".
-
- * mips-tdep.c (struct gdbarch_tdep): Remove osabi member.
- (mips_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't
- check osabi when iterating over arches. Update call to
- gdbarch_init_osabi.
- (mips_dump_tdep): Don't dump osabi.
-
- * ns32k-tdep.h: Don't include "osabi.h".
- (struct gdbarch_tdep): Remove.
- * ns32k-tdep.c (ns32k_gdbarch_init): Don't call
- gdbarch_lookup_osabi. Don't iterate over arches. Don't
- allocate tdep. Update call to gdbarch_init_osabi.
- (ns32k_dump_tdep): Remove.
- (_initialize_ns32k_tdep): Update call to gdbarch_register.
- * ns32knbsd-tdep.c: Include "osabi.h".
-
- * ppc-tdep.h: Don't include "osabi.h".
- (struct gdbarch_tdep): Remove osabi member.
- * rs6000-tdep.c: Include "osabi.h".
- (rs6000_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't check
- osabi when iterating over arches. Update call to
- gdbarch_init_osabi.
- (rs6000_dump_tdep): Don't dump osabi.
- * ppc-linux-tdep.c: Include "osabi.h".
- * ppcnbsd-tdep.c: Include "osabi.h".
-
- * sh-tdep.h: Don't include "osabi.h".
- (struct gdbarch_tdep): Remove osabi member.
- * sh-tdep.c: Include "osabi.h".
- (sh_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't
- iterate over arches. Update call to gdbarch_init_osabi.
- (sh_dump_tdep): Don't dump osabi.
- * shnbsd-tdep.c: Include "osabi.h".
-
- * sparc-tdep.c: Include "osabi.h".
- (sparc_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't
- iterate over arches. Update call to gdbarch_init_osabi.
- (sparc_dump_tdep): Don't dump osabi. Do dump the rest of the
- tdep structure.
-
- * vax-tdep.h: Don't include "osabi.h".
- (struct gdbarch_tdep): Remove.
- * vax-tdep.c: Include "osabi.h".
- (vax_gdbarch_init): Don't call gdbarch_lookup_osabi. Don't
- iterate over arches. Don't allocate tdep. Update call
- to gdbarch_init_osabi.
- (vax_dump_tdep): Remove.
- (_initialize_vax_tdep): Update call to gdbarch_register.
-
-2003-01-04 Daniel Jacobowitz <drow@mvista.com>
-
- * breakpoint.c (insert_breakpoints): Skip disabled breakpoints
- entirely.
- (breakpoint_re_set_one): Don't fetch the value for a disabled
- watchpoint.
-
-2003-01-04 Daniel Jacobowitz <drow@mvista.com>
-
- * buildsym.h (processing_hp_compilation): Remove obsolete variable.
- * gdbarch.sh Remove include of "value.h" in gdbarch.h.
- (COERCE_FLOAT_TO_DOUBLE): Remove.
- * gdbarch.c: Regenerate.
- * gdbarch.h: Regenerate.
- * Makefile.in: Remove value_h from gdbarch_h.
- * valops.c (coerce_float_to_double): New variable.
- (default_coerce_float_to_double): Remove.
- (standard_coerce_float_to_double): Remove.
- (value_arg_coerce): Use coerce_float_to_double.
- (_initialize_valops): Add "set coerce-float-to-double".
- * value.h (default_coerce_float_to_double): Remove prototype.
- (standard_coerce_float_to_double): Remove prototype.
-
- * hpread.c (hpread_process_one_debug_symbol): Mark C++ functions as
- prototyped.
- * mdebugread.c (parse_symbol): Likewise.
- * stabsread.c (define_symbol): Mark all functions as prototyped.
-
- * hppa-tdep.c (hppa_coerce_float_to_double): Remove.
- * alpha-tdep.c (alpha_gdbarch_init): Remove call to
- set_gdbarch_coerce_float_to_double.
- * arm-tdep.c (arm_gdbarch_init): Likewise.
- * frv-tdep.c (frv_gdbarch_init): Likewise.
- * h8300-tdep.c (h8300_gdbarch_init): Likewise (commented out).
- * i386-sol2-tdep.c (i386_sol2_init_abi): Likewise.
- * mips-tdep.c (mips_gdbarch_init): Likewise.
- (mips_coerce_float_to_double): Remove.
- * rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
- (rs6000_coerce_float_to_double): Remove.
- * s390-tdep.c (s390_gdbarch_init): Likewise.
- * sh-tdep.c (sh_gdbarch_init): Likewise.
- (sh_coerce_float_to_double): Remove.
- * sparc-tdep.c (sparc_gdbarch_init): Likewise.
- (sparc_coerce_float_to_double): Remove.
- * v850-tdep.c (v850_gdbarch_init): Likewise.
- * xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise.
- * config/m32r/tm-m32r.h (COERCE_FLOAT_TO_DOUBLE): Remove.
- * config/pa/tm-hppa.h: (COERCE_FLOAT_TO_DOUBLE): Remove.
- (hppa_coerce_float_to_double): Remove prototype.
- * config/sparc/tm-sparc.h (COERCE_FLOAT_TO_DOUBLE): Remove.
-
-2003-01-04 Daniel Jacobowitz <drow@mvista.com>
-
- * regformats/reg-m68k.dat: Remove fpcode and fpflags.
-
-2003-01-04 Daniel Jacobowitz <drow@mvista.com>
-
- Suggested by Stewart Brown <sb24@avaya.com>:
- * c-typeprint.c (c_type_print_varspec_prefix): Pass value of show
- in recursive calls. Handle TYPE_CODE_TYPEDEF.
- (c_type_print_varspec_suffix): Likewise.
-
-2003-01-04 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Don't set and AC_SUBST SUBDIRS.
- * configure: Regenerated.
-
- * configure.in: Remove code dealing with shared libraries.
- * Makefile.in: Remove HLDFLAGS and HLDENV.
- * configure: Regenerated.
-
-2003-01-04 Andrew Cagney <ac131313@redhat.com>
-
- * frame.c (deprecated_frame_xmalloc): New function.
- (deprecated_set_frame_saved_regs_hack): New function.
- (deprecated_set_frame_extra_info_hack): New function.
- * frame.h (deprecated_frame_xmalloc): Declare.
- (deprecated_set_frame_saved_regs_hack): Declare.
- (deprecated_set_frame_extra_info_hack): Declare.
-
-2003-01-04 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Move code that provides the --enable-gdbtk option
- right after the code that handles the --enable-tui option, and
- polish it somewhat.
- * configure: Regenerated.
-
- * configure.in: Call AC_GNU_SOURCE. Check for pread64 using
- AC_CHECK_FUNCS and remove the old check for pread64.
- * acinclude.m4 (AC_GNU_SOURCE): New macro.
- * acconfig.h (_GNU_SOURCE): Add.
- (HAVE_PREAD64): Remove.
- * configure, aclocal.m4, config.in: Regenerated.
-
-2003-01-03 Andrew Cagney <ac131313@redhat.com>
-
- * alpha-tdep.c: Use get_frame_saved_regs.
- * arm-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto.
- * h8300-tdep.c, i386-tdep.c, ia64-tdep.c, m68hc11-tdep.c: Ditto.
- * m68k-tdep.c, mcore-tdep.c, mips-tdep.c, mn10300-tdep.c: Ditto.
- * ns32k-tdep.c, s390-tdep.c, sh-tdep.c, v850-tdep.c: Ditto.
- * vax-tdep.c, xstormy16-tdep.c: Ditto.
-
-2003-01-03 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Remove all use of the SUBDIRS variable; add
- directories using the AC_CONFIG_SUBDIRS macro instead. Polish
- code providing the --enable-multi-ice option, and move it right in
- front of the code that checks whether gdbserver is supported.
- Polish that too.
- * configure: Regenerated.
- * Makefile.in (SUBDIRS): Substitute @subdirs@ instead of
- @SUBDIRS@.
-
-2003-01-03 Andrew Cagney <cagney@redhat.com>
-
- * alpha-tdep.c: Use deprecated_update_frame_base_hack.
- * avr-tdep.c, cris-tdep.c: Ditto.
- * mcore-tdep.c, mips-tdep.c, mn10200-tdep.c: Ditto.
- * sh-tdep.c, sparc-tdep.c, v850-tdep.c: Ditto.
-
-2003-01-03 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Remove --enable-netrom option.
- * configure: Regenerated.
-
-2003-01-03 Mark Kettenis <kettenis@gnu.org>
-
- * cli/cli-decode.h: Don't include "gdb_regex.h"; provide a forward
- declaration for `struct re_pattern_buffer' instead.
- * Makefile.in (cli_decode_h): Remove $(gdb_regex_h).
-
-2003-01-03 J. Brobecker <brobecker@gnat.com>
-
- * mdebugread.c (parse_symbol): Count until the stEnd matching
- the structure name.
-
-2003-01-02 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Remove --with-cpu option.
- subscripts. Remove evil changequotes here.
- * acconfig.h (TARGET_CPU_DEFAULT): Remove.
- * config.in, configure: Regenerated.
-
- * acconfig.h (DEFAULT_BFD_ARCH, DEFAULT_BFD_VEC): Remove.
- * configure.in: Cleanup section that sources GDB and BFD configure
- subscripts. Remove evil changequotes here.
- * config.in, configure: Regenerated.
-
-2003-01-02 Andrew Cagney <ac131313@redhat.com>
-
- * arm-tdep.c: Use get_frame_pc and deprecated_update_frame_pc_hack
- frame accessor methods.
- * alpha-tdep.c, avr-tdep.c, cris-tdep.c, d10v-tdep.c: Ditto.
- * dwarf2cfi.c, h8300-tdep.c, i386-tdep.c, ia64-tdep.c: Ditto.
- * m68hc11-tdep.c, m68k-tdep.c, mcore-tdep.c, mips-tdep.c: Ditto.
- * mn10200-tdep.c, mn10300-tdep.c, ns32k-tdep.c: Ditto.
- * s390-tdep.c, sh-tdep.c, sparc-tdep.c, v850-tdep.c: Ditto.
- * vax-tdep.c, x86-64-linux-tdep.c, xstormy16-tdep.c: Ditto.
- * z8k-tdep.c: Ditto.
-
-2003-01-02 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Remove UI_OUT configuration code.
- * ada-lang.c: Update assuming UI_OUT is always true.
- * Makefile.in (UIOUT_CFLAGS): Remove.
- * configure: Regenerated.
- * TODO: Remove blurb about elimination of -DUI_OUT.
-
- * configure.in: Move code that provides the --enable-gdbcli,
- --enable-gdbmi options right before the code that handles the
- --enable-tui option. Polish a bit.
- * configure: Regenerated.
-
- * configure.in: Rewrite check for GNU regex and the
- --without-included regex option, and move it into the "Checks for
- library functions" section. This makes us use the system regex
- again by default on systems with version 2 of the GNU C library.
- This was apparently broken.
- * gdb_regex.h [!USE_INCLUDED_REGEX] (_REGEX_RE_COMP): Define.
- * acconfig.h (USE_INCLUDED_REGEX): Remove.
- * config.in, configure: Regenerated.
-
- * configure.in: Move code that provides the --enable-tui option
- before the "Checks for libraries" section. Polish the code
- somewhat and set need_curses to yes if we build the TUI. Rewrite
- code that looks for a library providing termcap functionality to
- match more closely what's done in the Readline library, and move
- it into to the "Checks for libraries" section.
- * configure: Regenerated.
- * Makefile.in (TERMCAP): Remove variable.
- * config/i386/go32.mh (TERMCAP): Remove variable.
-
-2003-01-02 Andrew Cagney <ac131313@redhat.com>
-
- * MAINTAINERS: Mention gdb_mbuild.sh.
- * gdb_mbuild.sh: Rewrite.
-
-2003-01-02 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Fix typo in last change.
- * config.in, configure: Regenerated.
-
-2003-01-02 Andrew Cagney <ac131313@redhat.com>
-
- * valarith.c (value_binop): Delete obsolete code and comments.
- * configure.host: Ditto.
- * buildsym.h (make_blockvector): Ditto.
- * buildsym.c (make_blockvector): Ditto.
- * defs.h (enum language): Ditto.
- (chill_demangle): Ditto.
- * elfread.c (elf_symtab_read): Ditto.
- * dwarfread.c (CHILL_PRODUCER): Ditto.
- (set_cu_language): Ditto.
- (handle_producer): Ditto.
- * expprint.c (print_subexp): Ditto.
- * gdbtypes.c (chill_varying_type): Ditto.
- * gdbtypes.h (builtin_type_chill_bool): Ditto.
- (builtin_type_chill_char, builtin_type_chill_long): Ditto.
- (builtin_type_chill_ulong, builtin_type_chill_real): Ditto.
- (chill_varying_type): Ditto.
- * language.h (_LANG_chill): Ditto.
- * language.c (binop_result_type, integral_type): Ditto.
- (character_type, string_type, structured_type): Ditto.
- (lang_bool_type, binop_type_check): Ditto.
- * stabsread.h (os9k_stabs): Ditto.
- * stabsread.c (os9k_type_vector, dbx_lookup_type): Ditto.
- (define_symbol, read_type, read_struct_fields): Ditto.
- (read_array_type, read_enum_type, read_huge_number): Ditto.
- (read_range_type, start_stabs): Ditto.
- * symfile.c (init_filename_language_table): Ditto.
- (add_psymbol_with_dem_name_to_list): Ditto.
- * symtab.c (symbol_init_language_specific): Ditto.
- (symbol_init_demangled_name, symbol_demangled_name): Ditto.
- * symtab.h (struct general_symbol_info): Ditto.
- (SYMBOL_CHILL_DEMANGLED_NAME): Ditto.
- * typeprint.c (typedef_print): Ditto.
- * utils.c (fprintf_symbol_filtered): Ditto.
- * valops.c (value_cast, search_struct_field, value_slice): Delete
- obsolete code.
- (varying_to_slice): Delete function.
- * value.h (COERCE_VARYING_ARRAY): Delete obsolete macro contents.
- (varying_to_slice): Delete declaration.
- * MAINTAINERS: Update.
-
-2003-01-02 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Reorganize "Checks for library functions section"
- a bit. Remove check for `btowc' and `isascii' functions.
- * configure: Regenerated.
-
- * acconfig.h (_MSE_INT_H): Remove.
- * configure.in: Create "Checks for header files" section, and move
- appropriate tests there. Don't check for objlist.h, wchar.h,
- wctype.h and asm/debugreg.h. Rewrite Solaris 2.[78] <curses.h>
- misdetection fix. Also add "Checks for types", "Checks for
- compiler characteristics" and "Checks for library functions"
- sections.
- * config.in, configure: Regenerated.
-
- * configure.in: Create "Checks for programs" section, and move
- appropriate tests there.
-
-2003-01-01 Mark Kettenis <kettenis@gnu.org>
-
- * configure.in: Create "Checks for libraries" section, and move
- appropriate tests there. Cleanup check for wctype in libw. Use
- AC_SEARCH_LIBS to see whether we need libsocket.
- * configure: Regenerated.
-
-2003-01-31 David Carlton <carlton@math.stanford.edu>
-
- From Jim Blandy <jimb@redhat.com>:
-
- Use a single, consistent representation for an empty minimal
- symbol table in an objfile.
- * objfiles.c (terminate_minimal_symbol_table): New function.
- (allocate_objfile): Call it.
- * objfiles.h (terminate_minimal_symbol_table): New declaration.
- (ALL_MSYMBOLS): No need to test whether (objfile)->msymbols is
- non-NULL.
- * minsyms.c (lookup_minimal_symbol_by_pc_section): To see whether
- objfile has minimal symbols, compare minimal_symbol_count to zero,
- instead of comparing msymbols with NULL.
- * objfiles.c (have_minimal_symbols): Same.
- * solib-sunos.c (solib_add_common_symbols): Call
- terminate_minimal_symbol_table.
- * symfile.c (reread_symbols): Same.
-
- * objfiles.h: Revert patch from 2003-01-27, to be replaced by
- similar patch from Jim Blandy.
- * objfiles.c (objfile_relocate): Ditto.
- * i386-linux-tdep.c (find_minsym_and_objfile): Ditto.
- * arm-linux-tdep.c (find_minsym_and_objfile): Ditto.
- * gdbtypes.h: Delete INTEGER_COERCION_BADNESS,
- FLOAT_COERCION_BADNESS.
- * gdbtypes.c (rank_one_type): Replace all uses of
- INTEGER_COERCION_BADNESS by INTEGER_CONVERSION_BADNESS.
- * valops.c (find_overload_match): Call cp_func_name.
- * cp-support.h: Declare cp_func_name.
- * cp-support.c (cp_func_name): New function.
-
-2003-01-30 David Carlton <carlton@math.stanford.edu>
-
- * valops.c (find_overload_match): Move code into
- find_oload_champ_namespace.
- (find_oload_champ_namespace): New function, which immediately gets
- eviscerated and turned into a call to
- find_oload_champ_namespace_loop.
- (find_oload_champ_namespace_loop): New function.
- * symtab.c (make_symbol_overload_list): Move entire body into
- make_symbol_overload_list_qualified.
- (make_symbol_overload_list_qualified): New.
- (read_in_psymtabs): New.
- (make_symbol_overload_list_qualified): Rewrite.
- (make_symbol_overload_list_using): New.
- (lookup_symbol_namespace): Use alloca, not xmalloc.
- (make_symbol_overload_list): Put some memory management stuff back
- in.
-
-2003-01-28 David Carlton <carlton@math.stanford.edu>
-
- * valops.c (find_overload_match): Calculate func_name via
- SYMBOL_CPLUS_DEMANGLED_NAME + remove_params.
- * symtab.c (remove_params): Make extern.
- * symtab.h: Add declaration for remove_params.
- * symtab.c (overload_list_add_symbol): Change second arg to const
- char *.
- * valops.c (find_overload_match) Update call to
- make_symbol_overload_list.
- * symtab.h: Update declaration for make_symbol_overload_list.
- * symtab.c (make_symbol_overload_list): Change arguments.
- * valops.c (find_overload_match): Rename cleanups to old_cleanups;
- handle freeing func_name via cleanups.
-
-2003-01-27 David Carlton <carlton@math.stanford.edu>
-
- * objfiles.h: Add comments about objfile->msymbols being NULL.
- * objfiles.c (objfile_relocate): Enclose ALL_OBJFILE_MSYMBOLS in
- guard.
- * i386-linux-tdep.c (find_minsym_and_objfile): Call ALL_MSYMBOLS
- instead of ALL_OBJFILES and ALL_OBJFILE_MSYMBOLS.
- * arm-linux-tdep.c (find_minsym_and_objfile): Ditto.
-
-2003-01-24 David Carlton <carlton@math.stanford.edu>
-
- * valops.c (find_oload_champ): New function.
- (find_overload_match): Separate code into find_oload_champ and
- oload_method_static.
- (find_oload_champ): Call oload_method_static.
- (oload_method_static): New function.
- (find_overload_match): Call classify_oload_match.
- (classify_oload_match): New function.
- * value.h: Update declaration of find_overload_match.
- * eval.c (evaluate_subexp_standard): Pass current block to
- find_overload_match.
- * valops.c (find_overload_match): Add CURRENT_BLOCK arg.
-
-2003-01-20 David Carlton <carlton@math.stanford.edu>
-
- * p-exp.y: Add block to OP_FUNCALL.
- * objc-exp.y: Add block to OP_FUNCALL.
- * m2-exp.y: Add block to OP_FUNCALL.
- * c-exp.y: Add block to OP_FUNCALL.
- * ada-exp.y: Add block to OP_FUNCALL.
- (write_object_renaming): Ditto.
- * parse.c (length_of_subexp): Split off OP_FUNCALL.
- (prefixify_subexp): Ditto.
- * expprint.c (print_subexp): Change offset for OP_FUNCALL.
- (dump_subexp): Ditto.
- * eval.c (evaluate_subexp_standard): Change offset for
- OP_FUNCALL.
- * ada-lang.c (ada_resolve_subexp): Add comment on OP_FUNCALL.
- (replace_operator_with_call): Add block to OP_FUNCALL.
- (ada_evaluate_subexp): Change offset for OP_FUNCALL.
- * expression.h (exp_opcode): Change comments before OP_FUNCALL and
- OP_F77_UNDETERMINED_ARGLIST.
-
-2003-01-14 David Carlton <carlton@math.stanford.edu>
-
- * symtab.c (search_symbols): Add comment.
- (lookup_symbol_aux_using): Function name should start line.
- (lookup_symbol_aux_using_loop): Ditto.
- (lookup_block_symbol): Add comment.
-
-2003-01-13 David Carlton <carlton@math.stanford.edu>
-
- * dwarf2read.c (read_structure_scope): Add comment.
- (add_partial_structure): Ditto.
- * symtab.c (lookup_transparent_type): Add comment.
-
-2003-01-10 David Carlton <carlton@math.stanford.edu>
-
- * objfiles.c (allocate_objfile): Always set name.
- * dwarf2read.c (scan_partial_symbols): Don't call
- add_partial_structure on unions.
- (add_partial_structure): Look for enclosing namespace names.
- (read_structure_scope): Look enclosing namespace/class names.
- (new_symbol): For C++ structures, always grab the name from the
- type's name.
-
-2003-01-07 David Carlton <carlton@math.stanford.edu>
-
- * dwarf2read.c (add_partial_structure): New function.
- (scan_partial_symbols): Call add_partial_structure. New variable
- info_ptr_updated.
- * symtab.h (struct general_symbol_info): Make demangled_names
- const char *.
-
-2003-01-06 David Carlton <carlton@math.stanford.edu>
-
- * config/djgpp/fnchange.lst: Mention
- testsuite/gdb.c++/namespace1.cc.
- * cp-support.h: Declare cp_lookup_namespace_symbol.
- * cp-support.c (cp_lookup_namespace_symbol): New function.
- (cp_check_namespace_symbol): Call cp_lookup_namespace_symbol.
- (cp_lookup_possible_namespace_symbol): Update comment.
- * symtab.c (lookup_symbol_aux_file): Add 'anonymous_namespace'
- argument.
- (lookup_symbol_namespace): Call lookup_symbol_aux_file with new
- argument.
- * cp-support.h: Declare cp_is_anonymous.
- * cp-support.c (cp_is_anonymous): New function.
- * buildsym.c (add_symbol_to_list): Don't test for anonymous
- namespace mention here.
- (scan_for_anonymous_namespaces): Test for it here, instead.
- * symtab.c (lookup_symbol_aux_minsyms): Delete.
- (lookup_symbol_aux_nonlocal): Don't call
- lookup_symbol_aux_minsyms.
-
-2002-12-24 David Carlton <carlton@math.stanford.edu>
-
- * MAINTAINERS: Delete OBSOLETE targets.
- * config/sparc/tm-sparc.h: Delete duplicate definition of
- DEPRECATED_PC_IN_CALL_DUMMY.
-
-2002-12-23 David Carlton <carlton@math.stanford.edu>
-
- * symtab.c (search_symbols): Update comment.
- (lookup_symbol): Don't demangle names.
- (lookup_symbol_minsym): Delete FIXME comment.
- (lookup_symbol_linkage): Add comment.
- (lookup_symbol_aux): Rename 'mangled_name' argument to
- 'linkage_name'.
- (lookup_symbol_aux_local): Ditto.
- (lookup_symbol_aux_block): Ditto.
- (lookup_symbol_aux_nonlocal): Ditto.
- (lookup_symbol_aux_file): Ditto.
- (lookup_symbol_aux_symtabs): Ditto.
- (lookup_symbol_aux_psymtabs): Ditto.
- (lookup_symbol_aux_using): Ditto.
- (lookup_symbol_aux_using_loop): Ditto.
- (lookup_symbol_namespace): Ditto.
- (lookup_symbol_aux_minsyms): Ditto.
- * symfile.c (psymbol_init_demangled_name): Delete unnecessary
- variable, initialization.
-
- * Merge from mainline; tag is carlton_dictionary-20021223-merge.
-
-For older changes see ChangeLog-2002
+For older changes see ChangeLog-2003, mi/ChangeLog-1999-2003, and
+tui/ChangeLog-1998-2003.
Local Variables:
mode: change-log
diff --git a/gdb/ChangeLog-2003 b/gdb/ChangeLog-2003
index b396264760a..1b53daec53b 100644
--- a/gdb/ChangeLog-2003
+++ b/gdb/ChangeLog-2003
@@ -1,3 +1,10 @@
+2003-12-15 David Carlton <carlton@kealia.com>
+
+ * Merge with mainline; tag is carlton_dictionary-20031215-merge.
+ * cp-support.c (class_name_from_physname): Add DMGL_PARAMS to call
+ to cplus_demangle.
+ (method_name_from_physname): Ditto.
+
2003-12-30 Eli Zaretskii <eliz@elta.co.il>
* configure.in: Check for st_blocks member in struct stat and
diff --git a/gdb/MAINTAINERS b/gdb/MAINTAINERS
index 7b997643bb7..204338cd71e 100644
--- a/gdb/MAINTAINERS
+++ b/gdb/MAINTAINERS
@@ -174,8 +174,8 @@ support - typically shared libraries and quirks to procfs/ptrace/...
The Native maintainer works with the Arch and Core maintainers when
resolving more generic problems.
-The host maintainer ensures that gdb (including mmalloc) can be built
-as a cross debugger on their platform.
+The host maintainer ensures that gdb can be built as a cross debugger on
+their platform.
AIX Peter Schauer Peter.Schauer@regent.e-technik.tu-muenchen.de
Kevin Buettner kevinb@redhat.com
@@ -316,6 +316,7 @@ Philip Blundell philb@gnu.org
Per Bothner per@bothner.com
Joel Brobecker brobecker@act-europe.fr
Dave Brolley brolley@redhat.com
+Paul Brook paul@codesourcery.com
Kevin Buettner kevinb@redhat.com
Andrew Cagney ac131313@redhat.com
David Carlton carlton@kealia.com
@@ -364,8 +365,10 @@ H.J. Lu hjl@lucon.org
Michal Ludvig mludvig@suse.cz
Glen McCready gkm@redhat.com
Greg McGary greg@mcgary.org
+Roland McGrath roland@redhat.com
Jason Merrill jason@redhat.com
David S. Miller davem@redhat.com
+Mark Mitchell mark@codesourcery.com
Marko Mlinar markom@opencores.org
Alan Modra amodra@bigpond.net.au
Jason Molenda jmolenda@apple.com
@@ -375,7 +378,8 @@ Hans-Peter Nilsson hp@bitrange.com
David O'Brien obrien@freebsd.org
Alexandre Oliva aoliva@redhat.com
Tom Rix trix@redhat.com
-Bob Rossi bob_rossi@cox.net
+Nick Roberts nick@nick.uklinux.net
+Bob Rossi bob_rossi@cox.net
Theodore A. Roth troth@openavr.org
Ian Roxborough irox@redhat.com
Grace Sainsbury graces@redhat.com
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 7eeca767b80..3e94213c643 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1,5 +1,6 @@
-# Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-# 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+# 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation,
+# Inc.
# This file is part of GDB.
@@ -105,10 +106,6 @@ INCLUDE_CFLAGS = -I$(INCLUDE_DIR)
# Where is the "-liberty" library? Typically in ../libiberty.
LIBIBERTY = ../libiberty/libiberty.a
-# 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 = $(BFD_DIR)/libbfd.a
@@ -195,19 +192,40 @@ SUBDIR_MI_UNINSTALL=
# TUI sub directory definitions
#
SUBDIR_TUI_OBS = \
- tui-file.o tui.o tuiData.o tuiSource.o tuiStack.o tuiIO.o \
+ tui-command.o \
+ tui-data.o \
+ tui-disasm.o \
+ tui-file.o tui.o \
+ tui-hooks.o \
tui-interp.o \
- tuiGeneralWin.o tuiLayout.o tuiWin.o tuiCommand.o \
- tuiDisassem.o tuiSourceWin.o tuiRegs.o tuiDataWin.o \
- tui-out.o tui-hooks.o
+ tui-io.o \
+ tui-layout.o \
+ tui-out.o \
+ tui-regs.o \
+ tui-source.o \
+ tui-stack.o \
+ tui-win.o \
+ tui-windata.o \
+ tui-wingeneral.o \
+ tui-winsource.o
SUBDIR_TUI_SRCS = \
- tui/tui-file.c tui/tui.c tui/tuiData.c tui/tuiSource.c \
+ tui/tui-command.c \
+ tui/tui-data.c \
+ tui/tui-disasm.c \
+ tui/tui-file.c \
+ tui/tui-hooks.c \
tui/tui-interp.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 tui/tui-out.c tui/tui-hooks.c
+ tui/tui-io.c \
+ tui/tui-layout.c \
+ tui/tui-out.c \
+ tui/tui-regs.c \
+ tui/tui-source.c \
+ tui/tui-stack.c \
+ tui/tui-win.c \
+ tui/tui-windata.c \
+ tui/tui-wingeneral.c \
+ tui/tui-winsource.c \
+ tui/tui.c
SUBDIR_TUI_DEPS =
SUBDIR_TUI_INITS = \
$(SUBDIR_TUI_SRCS)
@@ -342,7 +360,7 @@ CXXFLAGS = -g -O
INTERNAL_WARN_CFLAGS = \
$(CFLAGS) $(GLOBAL_CFLAGS) $(PROFILE_CFLAGS) \
$(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \
- $(BFD_CFLAGS) $(MMALLOC_CFLAGS) $(INCLUDE_CFLAGS) \
+ $(BFD_CFLAGS) $(INCLUDE_CFLAGS) \
$(INTL_CFLAGS) $(ENABLE_CFLAGS) \
$(GDB_WARN_CFLAGS)
INTERNAL_CFLAGS = $(INTERNAL_WARN_CFLAGS) $(GDB_WERROR_CFLAGS)
@@ -362,19 +380,18 @@ INTERNAL_LDFLAGS = $(CFLAGS) $(GLOBAL_CFLAGS) $(MH_LDFLAGS) $(LDFLAGS) $(CONFIG_
# Libraries and corresponding dependencies for compiling gdb.
# {X,T}M_CLIBS, defined in *config files, have host- and target-dependent libs.
-# MMALLOC comes after anything else that might want an allocation function.
# LIBIBERTY appears twice on purpose.
# If you have the Cygnus libraries installed,
# you can use 'CLIBS=$(INSTALLED_LIBS)' 'CDEPS='
INSTALLED_LIBS=-lbfd -lreadline -lopcodes -liberty \
$(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
- -lmmalloc -lintl -liberty
+ -lintl -liberty
CLIBS = $(SIM) $(BFD) $(READLINE) $(OPCODES) $(INTL) $(LIBIBERTY) \
$(XM_CLIBS) $(TM_CLIBS) $(NAT_CLIBS) $(GDBTKLIBS) @LIBS@ \
$(LIBICONV) \
- $(MMALLOC) $(LIBIBERTY) $(WIN32LIBS)
+ $(LIBIBERTY) $(WIN32LIBS)
CDEPS = $(XM_CDEPS) $(TM_CDEPS) $(NAT_CDEPS) $(SIM) $(BFD) $(READLINE) \
- $(OPCODES) $(MMALLOC) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS)
+ $(OPCODES) $(INTL_DEPS) $(LIBIBERTY) $(CONFIG_DEPS)
ADD_FILES = $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)
ADD_DEPS = $(XM_ADD_FILES) $(TM_ADD_FILES) $(NAT_ADD_FILES)
@@ -383,7 +400,7 @@ DIST=gdb
LINT=/usr/5bin/lint
LINTFLAGS= $(GDB_CFLAGS) $(OPCODES_CFLAGS) $(READLINE_CFLAGS) \
- $(BFD_CFLAGS) $(MMALLOC_CFLAGS) $(INCLUDE_CFLAGS) \
+ $(BFD_CFLAGS) $(INCLUDE_CFLAGS) \
$(INTL_CFLAGS)
RUNTEST = `if [ -f $${rootsrc}/../dejagnu/runtest ] ; then \
@@ -708,7 +725,7 @@ interps_h = interps.h
jv_lang_h = jv-lang.h
kod_h = kod.h
language_h = language.h
-libunwind_frame_h = libunwind-frame.h
+libunwind_frame_h = libunwind-frame.h $(libunwind_h)
linespec_h = linespec.h
linux_nat_h = linux-nat.h
m2_lang_h = m2-lang.h
@@ -755,9 +772,8 @@ solib_svr4_h = solib-svr4.h
solist_h = solist.h
somsolib_h = somsolib.h
source_h = source.h
-sparc64_tdep_h = sparc64-tdep.h
-sparcbsd_nat_h = sparcbsd-nat.h
-sparcnbsd_tdep_h = sparcnbsd-tdep.h
+sparc64_tdep_h = sparc64-tdep.h $(sparc_tdep_h)
+sparc_nat_h = sparc-nat.h
sparc_tdep_h = sparc-tdep.h
srec_h = srec.h
stabsread_h = stabsread.h
@@ -812,20 +828,20 @@ mi_parse_h = $(srcdir)/mi/mi-parse.h
# gdb/tui/ headers
#
-tuiCommand_h = $(srcdir)/tui/tuiCommand.h
-tuiDataWin_h = $(srcdir)/tui/tuiDataWin.h
-tuiData_h = $(srcdir)/tui/tuiData.h
-tuiDisassem_h = $(srcdir)/tui/tuiDisassem.h
-tuiGeneralWin_h = $(srcdir)/tui/tuiGeneralWin.h
-tuiIO_h = $(srcdir)/tui/tuiIO.h
-tuiLayout_h = $(srcdir)/tui/tuiLayout.h
-tuiRegs_h = $(srcdir)/tui/tuiRegs.h
-tuiSourceWin_h = $(srcdir)/tui/tuiSourceWin.h
-tuiSource_h = $(srcdir)/tui/tuiSource.h $(defs_h)
-tuiStack_h = $(srcdir)/tui/tuiStack.h
-tuiWin_h = $(srcdir)/tui/tuiWin.h
+tui_command_h = $(srcdir)/tui/tui-command.h
+tui_data_h = $(srcdir)/tui/tui-data.h
+tui_disasm_h = $(srcdir)/tui/tui-disasm.h
tui_file_h = $(srcdir)/tui/tui-file.h
tui_h = $(srcdir)/tui/tui.h $(ansidecl_h)
+tui_io_h = $(srcdir)/tui/tui-io.h
+tui_layout_h = $(srcdir)/tui/tui-layout.h
+tui_regs_h = $(srcdir)/tui/tui-regs.h
+tui_source_h = $(srcdir)/tui/tui-source.h $(defs_h)
+tui_stack_h = $(srcdir)/tui/tui-stack.h
+tui_windata_h = $(srcdir)/tui/tui-windata.h
+tui_wingeneral_h = $(srcdir)/tui/tui-wingeneral.h
+tui_win_h = $(srcdir)/tui/tui-win.h
+tui_winsource_h = $(srcdir)/tui/tui-winsource.h
# Header files that need to have srcdir added. Note that in the cases
# where we use a macro like $(gdbcmd_h), things are carefully arranged
@@ -1114,7 +1130,6 @@ gdb1$(EXEEXT): gdb$(EXEEXT)
# dependency to do the right thing.
tm-sun3.h tm-altos.h: tm-m68k.h
tm-sun2.h tm-3b1.h: tm-m68k.h
-tm-sun4os4.h: tm-sparc.h
xm-vaxult.h: xm-vax.h
xm-vaxbsd.h: xm-vax.h
@@ -1268,12 +1283,12 @@ ALLDEPFILES = \
armnbsd-nat.c armnbsd-tdep.c \
avr-tdep.c \
coff-solib.c \
- core-sol2.c core-regset.c core-aout.c corelow.c \
+ core-regset.c core-aout.c corelow.c \
dcache.c delta68-nat.c dpx2-nat.c exec.c fork-child.c \
glibc-tdep.c \
go32-nat.c h8300-tdep.c \
hppa-tdep.c hppa-hpux-tdep.c \
- hppab-nat.c hppah-nat.c hpread.c \
+ hppah-nat.c hpread.c \
i386-tdep.c i386b-nat.c i386v-nat.c i386-linux-nat.c \
i386v4-nat.c i386ly-tdep.c i386-cygwin-tdep.c \
i386bsd-nat.c i386bsd-tdep.c i386fbsd-nat.c i386fbsd-tdep.c \
@@ -1307,10 +1322,14 @@ ALLDEPFILES = \
s390-tdep.c s390-nat.c \
ser-go32.c ser-pipe.c ser-tcp.c \
sh-tdep.c sh64-tdep.c shnbsd-tdep.c shnbsd-nat.c \
- solib.c solib-irix.c solib-svr4.c solib-sunos.c sparc-linux-nat.c \
- sparc-nat.c \
- sparc64nbsd-nat.c sparcnbsd-nat.c sparcnbsd-tdep.c \
- sparc-tdep.c sparcl-tdep.c sun3-nat.c \
+ solib.c solib-irix.c solib-svr4.c solib-sunos.c \
+ sparc-linux-tdep.c sparc-nat.c sparc-sol2-nat.c sparc-sol2-tdep.c \
+ sparc-tdep.c sparc-sol2-nat.c sparc-sol2-tdep.c sparc64-linux-nat.c \
+ sparc64-linux-tdep.c sparc64-nat.c sparc64-sol2-tdep.c \
+ sparc64-tdep.c sparc64fbsd-nat.c sparc64fbsd-tdep.c \
+ sparc64nbsd-nat.c sparc64nbsd-tdep.c sparc64obsd-tdep.c \
+ sparcnbsd-nat.c sparcnbsd-tdep.c sparcobsd-tdep.c \
+ sun3-nat.c \
symm-tdep.c symm-nat.c \
vax-tdep.c \
vx-share/xdr_ld.c vx-share/xdr_ptrace.c vx-share/xdr_rdb.c \
@@ -1570,27 +1589,28 @@ amd64bsd-nat.o: amd64bsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
$(gdb_assert_h) $(x86_64_tdep_h) $(amd64_nat_h)
amd64fbsd-nat.o: amd64fbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
$(gdb_assert_h) $(gregset_h) $(x86_64_tdep_h) $(amd64_nat_h)
-amd64nbsd-nat.o: amd64nbsd-nat.c $(defs_h) $(gdb_assert_h) \
- $(x86_64_tdep_h) $(amd64_nat_h)
amd64fbsd-tdep.o: amd64fbsd-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \
$(gdbcore_h) $(regcache_h) $(osabi_h) $(gdb_string_h) \
$(x86_64_tdep_h)
+amd64-nat.o: amd64-nat.c $(defs_h) $(gdbarch_h) $(regcache_h) \
+ $(gdb_assert_h) $(i386_tdep_h) $(x86_64_tdep_h)
+amd64nbsd-nat.o: amd64nbsd-nat.c $(defs_h) $(gdb_assert_h) $(x86_64_tdep_h) \
+ $(amd64_nat_h)
amd64nbsd-tdep.o: amd64nbsd-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \
$(gdbcore_h) $(osabi_h) $(gdb_assert_h) $(nbsd_tdep_h) \
$(x86_64_tdep_h)
-amd64-nat.o: amd64-nat.c $(defs_h) $(gdbarch_h) $(regcache_h) \
- $(gdb_assert_h) $(i386_tdep_h) $(x86_64_tdep_h)
annotate.o: annotate.c $(defs_h) $(annotate_h) $(value_h) $(target_h) \
$(gdbtypes_h) $(breakpoint_h)
arch-utils.o: arch-utils.c $(defs_h) $(arch_utils_h) $(buildsym_h) \
$(gdbcmd_h) $(inferior_h) $(gdb_string_h) $(regcache_h) \
- $(gdb_assert_h) $(sim_regno_h) $(version_h) $(floatformat_h)
+ $(gdb_assert_h) $(sim_regno_h) $(osabi_h) $(version_h) \
+ $(floatformat_h)
arm-linux-nat.o: arm-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
- $(gdb_string_h) $(regcache_h) $(arm_tdep_h) $(glibc_tdep_h) $(gregset_h)
+ $(gdb_string_h) $(regcache_h) $(arm_tdep_h) $(gregset_h)
arm-linux-tdep.o: arm-linux-tdep.c $(defs_h) $(target_h) $(value_h) \
$(gdbtypes_h) $(floatformat_h) $(gdbcore_h) $(frame_h) $(regcache_h) \
- $(doublest_h) $(solib_svr4_h) $(osabi_h) $(arm_tdep_h) $(symtab_h) \
- $(symfile_h) $(objfiles_h)
+ $(doublest_h) $(solib_svr4_h) $(osabi_h) $(arm_tdep_h) \
+ $(glibc_tdep_h)
armnbsd-nat.o: armnbsd-nat.c $(defs_h) $(arm_tdep_h) $(inferior_h) \
$(regcache_h) $(gdbcore_h)
armnbsd-tdep.o: armnbsd-tdep.c $(defs_h) $(osabi_h) $(arm_tdep_h) \
@@ -1610,8 +1630,8 @@ ax-gdb.o: ax-gdb.c $(defs_h) $(symtab_h) $(symfile_h) $(gdbtypes_h) \
$(target_h) $(ax_h) $(ax_gdb_h) $(gdb_string_h) $(block_h) \
$(regcache_h)
ax-general.o: ax-general.c $(defs_h) $(ax_h) $(value_h) $(gdb_string_h)
-bcache.o: bcache.c $(defs_h) $(gdb_obstack_h) $(bcache_h) \
- $(gdb_string_h) $(gdb_assert_h)
+bcache.o: bcache.c $(defs_h) $(gdb_obstack_h) $(bcache_h) $(gdb_string_h) \
+ $(gdb_assert_h)
bfd-target.o: bfd-target.c $(defs_h) $(target_h) $(bfd_target_h) \
$(gdb_assert_h) $(gdb_string_h)
block.o: block.c $(defs_h) $(block_h) $(symtab_h) $(symfile_h) \
@@ -1653,21 +1673,20 @@ coff-solib.o: coff-solib.c $(defs_h) $(frame_h) $(bfd_h) $(gdbcore_h) \
complaints.o: complaints.c $(defs_h) $(complaints_h) $(gdb_assert_h) \
$(command_h) $(gdbcmd_h)
completer.o: completer.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
- $(filenames_h) $(cli_decode_h) $(gdbcmd_h) $(completer_h) \
- $(language_h)
+ $(filenames_h) $(language_h) $(cli_decode_h) $(gdbcmd_h) \
+ $(completer_h)
copying.o: copying.c $(defs_h) $(command_h) $(gdbcmd_h)
core-aout.o: core-aout.c $(defs_h) $(gdbcore_h) $(value_h) $(regcache_h) \
$(gdb_dirent_h) $(gdb_stat_h)
corefile.o: corefile.c $(defs_h) $(gdb_string_h) $(inferior_h) $(symtab_h) \
$(command_h) $(gdbcmd_h) $(bfd_h) $(target_h) $(gdbcore_h) \
$(dis_asm_h) $(gdb_stat_h) $(completer_h)
-corelow.o: corelow.c $(defs_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
- $(symtab_h) $(command_h) $(bfd_h) $(target_h) $(gdbcore_h) \
- $(gdbthread_h) $(regcache_h) $(symfile_h) $(exec_h)
+corelow.o: corelow.c $(defs_h) $(arch_utils_h) $(gdb_string_h) $(frame_h) \
+ $(inferior_h) $(symtab_h) $(command_h) $(bfd_h) $(target_h) \
+ $(gdbcore_h) $(gdbthread_h) $(regcache_h) $(regset_h) $(symfile_h) \
+ $(exec_h) $(gdb_assert_h)
core-regset.o: core-regset.c $(defs_h) $(command_h) $(gdbcore_h) \
$(inferior_h) $(target_h) $(gdb_string_h) $(gregset_h)
-core-sol2.o: core-sol2.c $(defs_h) $(gdb_string_h) $(regcache_h) \
- $(inferior_h) $(target_h) $(command_h) $(gdbcore_h) $(gregset_h)
cp-abi.o: cp-abi.c $(defs_h) $(value_h) $(cp_abi_h) $(command_h) $(gdbcmd_h) \
$(ui_out_h) $(gdb_string_h)
cp-namespace.o: cp-namespace.c $(defs_h) $(cp_support_h) $(gdb_obstack_h) \
@@ -1675,7 +1694,8 @@ cp-namespace.o: cp-namespace.c $(defs_h) $(cp_support_h) $(gdb_obstack_h) \
$(gdbtypes_h) $(dictionary_h) $(command_h) $(frame_h)
cp-support.o: cp-support.c $(defs_h) $(cp_support_h) $(gdb_string_h) \
$(demangle_h) $(gdb_assert_h) $(gdbcmd_h) $(dictionary_h) \
- $(objfiles_h) $(frame_h) $(symtab_h) $(block_h) $(complaints_h)
+ $(objfiles_h) $(frame_h) $(symtab_h) $(block_h) $(complaints_h) \
+ $(gdbtypes_h)
cpu32bug-rom.o: cpu32bug-rom.c $(defs_h) $(gdbcore_h) $(target_h) \
$(monitor_h) $(serial_h) $(regcache_h) $(m68k_tdep_h)
cp-valprint.o: cp-valprint.c $(defs_h) $(gdb_obstack_h) $(symtab_h) \
@@ -1691,8 +1711,8 @@ c-typeprint.o: c-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
$(language_h) $(demangle_h) $(c_lang_h) $(typeprint_h) $(cp_abi_h) \
$(gdb_string_h)
c-valprint.o: c-valprint.c $(defs_h) $(gdb_string_h) $(symtab_h) \
- $(gdbtypes_h) $(expression_h) $(value_h) $(valprint_h) \
- $(language_h) $(c_lang_h) $(cp_abi_h) $(target_h)
+ $(gdbtypes_h) $(expression_h) $(value_h) $(valprint_h) $(language_h) \
+ $(c_lang_h) $(cp_abi_h) $(target_h)
d10v-tdep.o: d10v-tdep.c $(defs_h) $(frame_h) $(frame_unwind_h) \
$(frame_base_h) $(symtab_h) $(gdbtypes_h) $(gdbcmd_h) $(gdbcore_h) \
$(gdb_string_h) $(value_h) $(inferior_h) $(dis_asm_h) $(symfile_h) \
@@ -1761,8 +1781,7 @@ event-top.o: event-top.c $(defs_h) $(top_h) $(inferior_h) $(target_h) \
$(gdbcmd_h)
exec.o: exec.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcmd_h) \
$(language_h) $(symfile_h) $(objfiles_h) $(completer_h) $(value_h) \
- $(gdb_string_h) $(gdbcore_h) $(gdb_stat_h) $(xcoffsolib_h) \
- $(exec_h)
+ $(exec_h) $(gdb_string_h) $(gdbcore_h) $(gdb_stat_h) $(xcoffsolib_h)
expprint.o: expprint.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
$(value_h) $(language_h) $(parser_defs_h) $(user_regs_h) $(target_h) \
$(gdb_string_h) $(block_h)
@@ -1789,7 +1808,8 @@ frame-unwind.o: frame-unwind.c $(defs_h) $(frame_h) $(frame_unwind_h) \
frv-tdep.o: frv-tdep.c $(defs_h) $(gdb_string_h) $(inferior_h) $(symfile_h) \
$(gdbcore_h) $(arch_utils_h) $(regcache_h) $(frame_h) \
$(frame_unwind_h) $(frame_base_h) $(trad_frame_h) $(dis_asm_h) \
- $(gdb_assert_h) $(sim_regno_h) $(gdb_sim_frv_h) $(frv_desc_h)
+ $(gdb_assert_h) $(sim_regno_h) $(gdb_sim_frv_h) \
+ $(opcodes_frv_desc_h)
f-typeprint.o: f-typeprint.c $(defs_h) $(gdb_obstack_h) $(bfd_h) $(symtab_h) \
$(gdbtypes_h) $(expression_h) $(value_h) $(gdbcore_h) $(target_h) \
$(f_lang_h) $(gdb_string_h)
@@ -1809,15 +1829,17 @@ gdbtypes.o: gdbtypes.c $(defs_h) $(gdb_string_h) $(bfd_h) $(symtab_h) \
$(symfile_h) $(objfiles_h) $(gdbtypes_h) $(expression_h) \
$(language_h) $(target_h) $(value_h) $(demangle_h) $(complaints_h) \
$(gdbcmd_h) $(wrapper_h) $(cp_abi_h) $(gdb_assert_h)
+glibc-tdep.o: glibc-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(symfile_h) \
+ $(objfiles_h) $(glibc_tdep_h)
gnu-nat.o: gnu-nat.c $(gdb_string_h) $(defs_h) $(inferior_h) $(symtab_h) \
$(value_h) $(language_h) $(target_h) $(gdb_wait_h) $(gdbcmd_h) \
$(gdbcore_h) $(gdbthread_h) $(gdb_assert_h) $(gdb_obstack_h) \
$(gnu_nat_h) $(exc_request_S_h) $(notify_S_h) $(process_reply_S_h) \
$(msg_reply_S_h) $(exc_request_U_h) $(msg_U_h)
gnu-v2-abi.o: gnu-v2-abi.c $(defs_h) $(gdb_string_h) $(symtab_h) \
- $(gdbtypes_h) $(value_h) $(demangle_h) $(cp_abi_h)
-gnu-v3-abi.o: gnu-v3-abi.c $(defs_h) $(value_h) $(cp_abi_h) $(demangle_h) \
- $(gdb_assert_h) $(gdb_string_h)
+ $(gdbtypes_h) $(value_h) $(demangle_h) $(cp_abi_h) $(cp_support_h)
+gnu-v3-abi.o: gnu-v3-abi.c $(defs_h) $(value_h) $(cp_abi_h) $(cp_support_h) \
+ $(demangle_h) $(gdb_assert_h) $(gdb_string_h)
go32-nat.o: go32-nat.c $(defs_h) $(inferior_h) $(gdb_wait_h) $(gdbcore_h) \
$(command_h) $(gdbcmd_h) $(floatformat_h) $(buildsym_h) \
$(i387_tdep_h) $(i386_tdep_h) $(value_h) $(regcache_h) \
@@ -1827,13 +1849,10 @@ h8300-tdep.o: h8300-tdep.c $(defs_h) $(value_h) $(inferior_h) $(symfile_h) \
$(gdb_assert_h) $(dis_asm_h)
hpacc-abi.o: hpacc-abi.c $(defs_h) $(value_h) $(gdb_regex_h) $(gdb_string_h) \
$(gdbtypes_h) $(gdbcore_h) $(cp_abi_h)
-hppab-nat.o: hppab-nat.c $(defs_h) $(inferior_h) $(target_h) $(regcache_h)
hppah-nat.o: hppah-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
$(gdb_wait_h) $(regcache_h) $(gdb_string_h)
hppa-hpux-tdep.o: hppa-hpux-tdep.c $(defs_h) $(arch_utils_h) $(gdbcore_h) \
$(osabi_h) $(gdb_string_h) $(frame_h)
-hppam3-nat.o: hppam3-nat.c $(defs_h) $(inferior_h) $(floatformat_h) \
- $(regcache_h)
hppa-tdep.o: hppa-tdep.c $(defs_h) $(frame_h) $(bfd_h) $(inferior_h) \
$(value_h) $(regcache_h) $(completer_h) $(language_h) $(osabi_h) \
$(gdb_assert_h) $(infttrace_h) $(symtab_h) $(infcall_h) $(dis_asm_h) \
@@ -1871,21 +1890,22 @@ i386-linux-nat.o: i386-linux-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) \
$(gregset_h) $(i387_tdep_h) $(i386_tdep_h) $(i386_linux_tdep_h) \
$(gdb_proc_service_h)
i386-linux-tdep.o: i386-linux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \
- $(value_h) $(regcache_h) $(inferior_h) $(reggroups_h) $(symtab_h) \
- $(symfile_h) $(objfiles_h) $(solib_svr4_h) $(osabi_h) $(i386_tdep_h) \
- $(i386_linux_tdep_h) $(glibc_tdep_h)
+ $(value_h) $(regcache_h) $(inferior_h) $(osabi_h) $(reggroups_h) \
+ $(solib_svr4_h) $(gdb_string_h) $(i386_tdep_h) $(i386_linux_tdep_h) \
+ $(glibc_tdep_h)
i386ly-tdep.o: i386ly-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
$(regcache_h) $(target_h) $(osabi_h) $(i386_tdep_h)
i386-nat.o: i386-nat.c $(defs_h) $(breakpoint_h) $(command_h) $(gdbcmd_h)
-i386nbsd-tdep.o: i386nbsd-tdep.c $(defs_h) $(gdbtypes_h) $(gdbcore_h) \
- $(regcache_h) $(arch_utils_h) $(osabi_h) $(i386_tdep_h) \
- $(i387_tdep_h) $(nbsd_tdep_h) $(solib_svr4_h)
+i386nbsd-tdep.o: i386nbsd-tdep.c $(defs_h) $(arch_utils_h) $(gdbcore_h) \
+ $(regcache_h) $(regset_h) $(osabi_h) $(gdb_assert_h) $(gdb_string_h) \
+ $(i386_tdep_h) $(i387_tdep_h) $(nbsd_tdep_h) $(solib_svr4_h)
i386-nto-tdep.o: i386-nto-tdep.c $(gdb_string_h) $(gdb_assert_h) $(defs_h) \
$(frame_h) $(target_h) $(regcache_h) $(solib_svr4_h) $(i386_tdep_h) \
$(nto_tdep_h) $(osabi_h) $(i387_tdep_h)
i386obsd-nat.o: i386obsd-nat.c $(defs_h) $(i386_tdep_h)
i386obsd-tdep.o: i386obsd-tdep.c $(defs_h) $(arch_utils_h) $(gdbcore_h) \
- $(regcache_h) $(osabi_h) $(i386_tdep_h) $(i387_tdep_h)
+ $(regcache_h) $(regset_h) $(osabi_h) $(gdb_assert_h) $(gdb_string_h) \
+ $(i386_tdep_h) $(i387_tdep_h)
i386-sol2-tdep.o: i386-sol2-tdep.c $(defs_h) $(value_h) $(osabi_h) \
$(i386_tdep_h)
i386-stub.o: i386-stub.c
@@ -1910,12 +1930,13 @@ ia64-aix-nat.o: ia64-aix-nat.c $(defs_h) $(inferior_h) $(target_h) \
ia64-aix-tdep.o: ia64-aix-tdep.c $(defs_h)
ia64-linux-nat.o: ia64-linux-nat.c $(defs_h) $(gdb_string_h) $(inferior_h) \
$(target_h) $(gdbcore_h) $(regcache_h) $(gdb_wait_h) $(gregset_h)
-ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(arch_utils_h)
+ia64-linux-tdep.o: ia64-linux-tdep.c $(defs_h) $(arch_utils_h) $(gdbcore_h)
ia64-tdep.o: ia64-tdep.c $(defs_h) $(inferior_h) $(symfile_h) $(gdbcore_h) \
$(arch_utils_h) $(floatformat_h) $(regcache_h) $(reggroups_h) \
$(frame_h) $(frame_base_h) $(frame_unwind_h) $(doublest_h) \
$(value_h) $(gdb_assert_h) $(objfiles_h) $(elf_common_h) \
- $(elf_bfd_h) $(dis_asm_h) $(libunwind_frame_h)
+ $(elf_bfd_h) $(elf_h) $(dis_asm_h) $(libunwind_frame_h) \
+ $(libunwind_ia64_h)
infcall.o: infcall.c $(defs_h) $(breakpoint_h) $(target_h) $(regcache_h) \
$(inferior_h) $(gdb_assert_h) $(block_h) $(gdbcore_h) $(language_h) \
$(symfile_h) $(gdbcmd_h) $(command_h) $(gdb_string_h) $(infcall_h)
@@ -1923,7 +1944,8 @@ infcmd.o: infcmd.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
$(frame_h) $(inferior_h) $(environ_h) $(value_h) $(gdbcmd_h) \
$(symfile_h) $(gdbcore_h) $(target_h) $(language_h) $(symfile_h) \
$(objfiles_h) $(completer_h) $(ui_out_h) $(event_top_h) \
- $(parser_defs_h) $(regcache_h) $(reggroups_h) $(block_h)
+ $(parser_defs_h) $(regcache_h) $(reggroups_h) $(block_h) \
+ $(gdb_assert_h)
inf-loop.o: inf-loop.c $(defs_h) $(inferior_h) $(target_h) $(event_loop_h) \
$(event_top_h) $(inf_loop_h) $(remote_h)
inflow.o: inflow.c $(defs_h) $(frame_h) $(inferior_h) $(command_h) \
@@ -1946,7 +1968,7 @@ interps.o: interps.c $(defs_h) $(gdbcmd_h) $(ui_out_h) $(event_loop_h) \
$(event_top_h) $(interps_h) $(completer_h) $(gdb_string_h) \
$(gdb_events_h) $(gdb_assert_h) $(top_h)
irix5-nat.o: irix5-nat.c $(defs_h) $(inferior_h) $(gdbcore_h) $(target_h) \
- $(regcache_h) $(gdb_string_h) $(gregset_h)
+ $(regcache_h) $(gdb_string_h) $(gregset_h) $(mips_tdep_h)
jv-lang.o: jv-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
$(parser_defs_h) $(language_h) $(gdbtypes_h) $(symtab_h) \
$(symfile_h) $(objfiles_h) $(gdb_string_h) $(value_h) $(c_lang_h) \
@@ -1963,10 +1985,10 @@ kod-cisco.o: kod-cisco.c $(defs_h) $(gdb_string_h) $(kod_h)
language.o: language.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \
$(value_h) $(gdbcmd_h) $(expression_h) $(language_h) $(target_h) \
$(parser_defs_h) $(jv_lang_h) $(demangle_h)
-libunwind-frame.o: libunwind-frame.c $(defs_h) \
- $(frame_h) $(frame_base_h) $(frame_unwind_h) $(gdbcore_h) \
- $(gdbtypes_h) $(symtab_h) $(objfiles_h) $(regcache_h) \
- $(gdb_assert_h) $(gdb_string_h) $(complaints_h) $(libunwind_frame_h)
+libunwind-frame.o: libunwind-frame.c $(defs_h) $(inferior_h) $(frame_h) \
+ $(frame_base_h) $(frame_unwind_h) $(gdbcore_h) $(gdbtypes_h) \
+ $(symtab_h) $(objfiles_h) $(regcache_h) $(gdb_assert_h) \
+ $(gdb_string_h) $(libunwind_frame_h) $(complaints_h)
linespec.o: linespec.c $(defs_h) $(symtab_h) $(frame_h) $(command_h) \
$(symfile_h) $(objfiles_h) $(source_h) $(demangle_h) $(value_h) \
$(completer_h) $(cp_abi_h) $(parser_defs_h) $(block_h) \
@@ -1996,7 +2018,7 @@ m32r-tdep.o: m32r-tdep.c $(defs_h) $(frame_h) $(frame_unwind_h) \
$(frame_base_h) $(symtab_h) $(gdbtypes_h) $(gdbcmd_h) $(gdbcore_h) \
$(gdb_string_h) $(value_h) $(inferior_h) $(symfile_h) $(objfiles_h) \
$(language_h) $(arch_utils_h) $(regcache_h) $(trad_frame_h) \
- $(gdb_assert_h) $(dis_asm_h)
+ $(dis_asm_h) $(gdb_assert_h)
m68hc11-tdep.o: m68hc11-tdep.c $(defs_h) $(frame_h) $(frame_unwind_h) \
$(frame_base_h) $(dwarf2_frame_h) $(trad_frame_h) $(symtab_h) \
$(gdbtypes_h) $(gdbcmd_h) $(gdbcore_h) $(gdb_string_h) $(value_h) \
@@ -2107,13 +2129,11 @@ objc-lang.o: objc-lang.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(expression_h) \
objfiles.o: objfiles.c $(defs_h) $(bfd_h) $(symtab_h) $(symfile_h) \
$(objfiles_h) $(gdb_stabs_h) $(target_h) $(bcache_h) $(gdb_assert_h) \
$(gdb_stat_h) $(gdb_obstack_h) $(gdb_string_h) $(hashtab_h) \
- $(breakpoint_h) $(block_h) $(dictionary_h) $(mmalloc_h)
+ $(breakpoint_h) $(block_h) $(dictionary_h)
observer.o: observer.c $(defs_h) $(observer_h)
ocd.o: ocd.c $(defs_h) $(gdbcore_h) $(gdb_string_h) $(frame_h) $(inferior_h) \
$(bfd_h) $(symfile_h) $(target_h) $(gdbcmd_h) $(objfiles_h) \
$(gdb_stabs_h) $(serial_h) $(ocd_h) $(regcache_h)
-op50-rom.o: op50-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
- $(serial_h)
osabi.o: osabi.c $(defs_h) $(gdb_assert_h) $(gdb_string_h) $(osabi_h) \
$(arch_utils_h) $(gdbcmd_h) $(command_h) $(elf_bfd_h)
pa64solib.o: pa64solib.c $(defs_h) $(frame_h) $(bfd_h) $(libhppa_h) \
@@ -2147,7 +2167,7 @@ ppcnbsd-tdep.o: ppcnbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \
$(ppcnbsd_tdep_h) $(nbsd_tdep_h) $(solib_svr4_h)
ppc-sysv-tdep.o: ppc-sysv-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \
$(regcache_h) $(value_h) $(gdb_string_h) $(gdb_assert_h) \
- $(ppc_tdep_h) $(target_h)
+ $(ppc_tdep_h) $(target_h) $(objfiles_h)
printcmd.o: printcmd.c $(defs_h) $(gdb_string_h) $(frame_h) $(symtab_h) \
$(gdbtypes_h) $(value_h) $(language_h) $(expression_h) $(gdbcore_h) \
$(gdbcmd_h) $(target_h) $(breakpoint_h) $(demangle_h) $(valprint_h) \
@@ -2211,7 +2231,7 @@ remote-sds.o: remote-sds.c $(defs_h) $(gdb_string_h) $(frame_h) \
remote-sim.o: remote-sim.c $(defs_h) $(inferior_h) $(value_h) \
$(gdb_string_h) $(terminal_h) $(target_h) $(gdbcore_h) \
$(gdb_callback_h) $(gdb_remote_sim_h) $(remote_utils_h) $(command_h) \
- $(regcache_h) $(gdb_assert_h) $(sim_regno_h)
+ $(regcache_h) $(gdb_assert_h) $(sim_regno_h) $(arch_utils_h)
remote-st.o: remote-st.c $(defs_h) $(gdbcore_h) $(target_h) $(gdb_string_h) \
$(serial_h) $(regcache_h)
remote-utils.o: remote-utils.c $(defs_h) $(gdb_string_h) $(gdbcmd_h) \
@@ -2232,17 +2252,14 @@ remote-vxmips.o: remote-vxmips.c $(defs_h) $(vx_share_regPacket_h) \
$(symtab_h) $(symfile_h) $(regcache_h) $(gdb_string_h) \
$(vx_share_ptrace_h) $(vx_share_xdr_ptrace_h) $(vx_share_xdr_ld_h) \
$(vx_share_xdr_rdb_h) $(vx_share_dbgRpcLib_h)
-remote-vxsparc.o: remote-vxsparc.c $(defs_h) $(vx_share_regPacket_h) \
- $(frame_h) $(inferior_h) $(target_h) $(gdbcore_h) $(command_h) \
- $(symtab_h) $(symfile_h) $(regcache_h) $(gdb_string_h) \
- $(vx_share_ptrace_h) $(vx_share_xdr_ptrace_h) $(vx_share_xdr_ld_h) \
- $(vx_share_xdr_rdb_h) $(vx_share_dbgRpcLib_h)
+remote-vxsparc.o: remote-vxsparc.c $(defs_h) $(regcache_h) $(gdb_string_h) \
+ $(sparc_tdep_h) $(vx_share_ptrace_h) $(vx_share_regPacket_h)
rom68k-rom.o: rom68k-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
$(serial_h) $(regcache_h) $(value_h) $(m68k_tdep_h)
rs6000-nat.o: rs6000-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
$(xcoffsolib_h) $(symfile_h) $(objfiles_h) $(libbfd_h) $(bfd_h) \
$(gdb_stabs_h) $(regcache_h) $(arch_utils_h) $(language_h) \
- $(ppc_tdep_h) $(gdb_stat_h)
+ $(ppc_tdep_h) $(exec_h) $(gdb_stat_h)
rs6000-tdep.o: rs6000-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
$(target_h) $(gdbcore_h) $(gdbcmd_h) $(symfile_h) $(objfiles_h) \
$(arch_utils_h) $(regcache_h) $(doublest_h) $(value_h) \
@@ -2300,7 +2317,7 @@ solib-aix5.o: solib-aix5.c $(defs_h) $(gdb_string_h) $(elf_external_h) \
solib.o: solib.c $(defs_h) $(gdb_string_h) $(symtab_h) $(bfd_h) $(symfile_h) \
$(objfiles_h) $(gdbcore_h) $(command_h) $(target_h) $(frame_h) \
$(gdb_regex_h) $(inferior_h) $(environ_h) $(language_h) $(gdbcmd_h) \
- $(completer_h) $(filenames_h) $(solist_h) $(exec_h)
+ $(completer_h) $(filenames_h) $(exec_h) $(solist_h)
solib-irix.o: solib-irix.c $(defs_h) $(symtab_h) $(bfd_h) $(symfile_h) \
$(objfiles_h) $(gdbcore_h) $(target_h) $(inferior_h) $(solist_h)
solib-legacy.o: solib-legacy.c $(defs_h) $(gdbcore_h) $(solib_svr4_h)
@@ -2329,31 +2346,61 @@ source.o: source.c $(defs_h) $(symtab_h) $(expression_h) $(language_h) \
$(symfile_h) $(objfiles_h) $(annotate_h) $(gdbtypes_h) $(linespec_h) \
$(filenames_h) $(completer_h) $(ui_out_h)
sparc64fbsd-nat.o: sparc64fbsd-nat.c $(defs_h) $(sparc64_tdep_h) \
- $(sparcbsd_nat_h)
-sparc64fbsd-tdep.o: sparc64fbsd-tdep.c $(defs_h) $(gdbcore_h) $(osabi_h) \
- $(regcache_h) $(target_h) $(gdb_string_h) $(sparc64_tdep_h)
-sparc64nbsd-nat.o: sparc64nbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
- $(sparc_tdep_h) $(sparcnbsd_tdep_h)
+ $(sparc_nat_h)
+sparc64fbsd-tdep.o: sparc64fbsd-tdep.c $(defs_h) $(frame_h) \
+ $(frame_unwind_h) $(gdbcore_h) $(osabi_h) $(regcache_h) $(regset_h) \
+ $(target_h) $(trad_frame_h) $(gdb_assert_h) $(gdb_string_h) \
+ $(sparc64_tdep_h)
+sparc64-linux-nat.o: sparc64-linux-nat.c $(defs_h) $(sparc64_tdep_h) \
+ $(sparc_nat_h)
+sparc64-linux-tdep.o: sparc64-linux-tdep.c $(defs_h) $(gdbarch_h) $(osabi_h) \
+ $(solib_svr4_h) $(sparc64_tdep_h)
+sparc64-nat.o: sparc64-nat.c $(defs_h) $(gdbarch_h) $(sparc64_tdep_h) \
+ $(sparc_nat_h)
+sparc64nbsd-nat.o: sparc64nbsd-nat.c $(defs_h) $(sparc64_tdep_h) \
+ $(sparc_nat_h)
+sparc64nbsd-tdep.o: sparc64nbsd-tdep.c $(defs_h) $(frame_h) \
+ $(frame_unwind_h) $(gdbcore_h) $(osabi_h) $(regcache_h) $(regset_h) \
+ $(symtab_h) $(solib_svr4_h) $(trad_frame_h) $(gdb_assert_h) \
+ $(gdb_string_h) $(sparc64_tdep_h) $(nbsd_tdep_h)
+sparc64obsd-tdep.o: sparc64obsd-tdep.c $(defs_h) $(frame_h) \
+ $(frame_unwind_h) $(osabi_h) $(regset_h) $(symtab_h) \
+ $(solib_svr4_h) $(trad_frame_h) $(gdb_assert_h) \
+ $(sparc64_tdep_h) $(nbsd_tdep_h)
+sparc64-sol2-tdep.o: sparc64-sol2-tdep.c $(defs_h) $(frame_h) \
+ $(frame_unwind_h) $(gdbarch_h) $(symtab_h) $(objfiles_h) $(osabi_h) \
+ $(trad_frame_h) $(gdb_assert_h) $(sparc64_tdep_h)
sparc64-tdep.o: sparc64-tdep.c $(defs_h) $(arch_utils_h) $(floatformat_h) \
$(frame_h) $(frame_base_h) $(frame_unwind_h) $(gdbcore_h) \
- $(gdbtypes_h) $(osabi_h) $(regcache_h) $(target_h) $(value_h) \
- $(gdb_assert_h) $(gdb_string_h) $(sparc64_tdep_h)
-sparcbsd-nat.o: sparcbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
- $(sparc64_tdep_h) $(sparcbsd_nat_h)
-sparc-linux-nat.o: sparc-linux-nat.c $(defs_h) $(regcache_h) $(sparc_tdep_h) \
- $(gregset_h)
-sparc-nat.o: sparc-nat.c $(defs_h) $(inferior_h) $(target_h) $(gdbcore_h) \
- $(regcache_h) $(sparc_tdep_h) $(gdb_wait_h)
-sparcnbsd-nat.o: sparcnbsd-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
- $(sparc_tdep_h) $(sparcnbsd_tdep_h)
-sparcnbsd-tdep.o: sparcnbsd-tdep.c $(defs_h) $(gdbcore_h) $(regcache_h) \
- $(target_h) $(value_h) $(osabi_h) $(gdb_string_h) $(sparc_tdep_h) \
- $(sparcnbsd_tdep_h) $(nbsd_tdep_h) $(solib_svr4_h)
+ $(gdbtypes_h) $(inferior_h) $(symtab_h) $(objfiles_h) $(osabi_h) \
+ $(regcache_h) $(target_h) $(value_h) $(gdb_assert_h) $(gdb_string_h) \
+ $(sparc64_tdep_h)
+sparc-linux-tdep.o: sparc-linux-tdep.c $(defs_h) $(floatformat_h) $(frame_h) \
+ $(frame_unwind_h) $(gdbarch_h) $(gdbcore_h) $(osabi_h) $(regcache_h) \
+ $(solib_svr4_h) $(symtab_h) $(trad_frame_h) $(gdb_assert_h) \
+ $(gdb_string_h) $(sparc_tdep_h)
+sparc-nat.o: sparc-nat.c $(defs_h) $(inferior_h) $(regcache_h) \
+ $(gdb_string_h) $(gdb_wait_h) $(sparc_tdep_h) $(sparc_nat_h)
+sparcnbsd-nat.o: sparcnbsd-nat.c $(defs_h) $(sparc_tdep_h) $(sparc_nat_h)
+sparcnbsd-tdep.o: sparcnbsd-tdep.c $(defs_h) $(floatformat_h) $(frame_h) \
+ $(frame_unwind_h) $(gdbcore_h) $(osabi_h) $(regcache_h) $(regset_h) \
+ $(solib_svr4_h) $(symtab_h) $(trad_frame_h) $(gdb_assert_h) \
+ $(gdb_string_h) $(sparc_tdep_h) $(nbsd_tdep_h)
+sparcobsd-tdep.o: sparcobsd-tdep.c $(defs_h) $(floatformat_h) $(frame_h) \
+ $(frame_unwind_h) $(osabi_h) $(solib_svr4_h) $(symtab_h) \
+ $(trad_frame_h) $(gdb_assert_h) $(sparc_tdep_h) $(nbsd_tdep_h)
+sparc-sol2-nat.o: sparc-sol2-nat.c $(defs_h) $(regcache_h) $(gregset_h) \
+ $(sparc_tdep_h) $(sparc64_tdep_h)
+sparc-sol2-tdep.o: sparc-sol2-tdep.c $(defs_h) $(frame_h) $(frame_unwind_h) \
+ $(gdbcore_h) $(symtab_h) $(objfiles_h) $(osabi_h) $(regcache_h) \
+ $(target_h) $(trad_frame_h) $(gdb_assert_h) $(gdb_string_h) \
+ $(sparc_tdep_h)
sparc-stub.o: sparc-stub.c
-sparc-tdep.o: sparc-tdep.c $(defs_h) $(arch_utils_h) $(frame_h) \
- $(inferior_h) $(target_h) $(value_h) $(bfd_h) $(gdb_string_h) \
- $(regcache_h) $(osabi_h) $(dis_asm_h) $(sparc_tdep_h) $(gregset_h) \
- $(gdbcore_h) $(gdb_assert_h) $(symfile_h)
+sparc-tdep.o: sparc-tdep.c $(defs_h) $(arch_utils_h) $(dis_asm_h) \
+ $(floatformat_h) $(frame_h) $(frame_base_h) $(frame_unwind_h) \
+ $(gdbcore_h) $(gdbtypes_h) $(inferior_h) $(symtab_h) $(objfiles_h) \
+ $(osabi_h) $(regcache_h) $(target_h) $(value_h) $(gdb_assert_h) \
+ $(gdb_string_h) $(sparc_tdep_h)
stabsread.o: stabsread.c $(defs_h) $(gdb_string_h) $(bfd_h) $(gdb_obstack_h) \
$(symtab_h) $(gdbtypes_h) $(expression_h) $(symfile_h) $(objfiles_h) \
$(aout_stab_gnu_h) $(libaout_h) $(aout_aout64_h) $(gdb_stabs_h) \
@@ -2390,8 +2437,7 @@ symtab.o: symtab.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(gdbcore_h) \
$(cp_support_h)
target.o: target.c $(defs_h) $(gdb_string_h) $(target_h) $(gdbcmd_h) \
$(symtab_h) $(inferior_h) $(bfd_h) $(symfile_h) $(objfiles_h) \
- $(gdb_wait_h) $(dcache_h) $(regcache_h) $(gdb_assert_h) \
- $(gdbcore_h)
+ $(gdb_wait_h) $(dcache_h) $(regcache_h) $(gdb_assert_h) $(gdbcore_h)
thread.o: thread.c $(defs_h) $(symtab_h) $(frame_h) $(inferior_h) \
$(environ_h) $(value_h) $(target_h) $(gdbthread_h) $(command_h) \
$(gdbcmd_h) $(regcache_h) $(gdb_h) $(gdb_string_h) $(ui_out_h)
@@ -2424,11 +2470,9 @@ user-regs.o: user-regs.c $(defs_h) $(user_regs_h) $(gdbtypes_h) \
utils.o: utils.c $(defs_h) $(gdb_assert_h) $(gdb_string_h) $(event_top_h) \
$(gdbcmd_h) $(serial_h) $(bfd_h) $(target_h) $(demangle_h) \
$(expression_h) $(language_h) $(charset_h) $(annotate_h) \
- $(filenames_h) $(inferior_h) $(mmalloc_h)
+ $(filenames_h) $(inferior_h)
uw-thread.o: uw-thread.c $(defs_h) $(gdbthread_h) $(target_h) $(inferior_h) \
$(regcache_h) $(gregset_h)
-glibc-tdep.o: glibc-tdep.c $(defs_h) $(frame_h) $(symtab_h) \
- $(symfile_h) $(objfiles_h) $(glibc_tdep_h)
v850ice.o: v850ice.c $(defs_h) $(gdb_string_h) $(frame_h) $(symtab_h) \
$(inferior_h) $(breakpoint_h) $(symfile_h) $(target_h) $(objfiles_h) \
$(gdbcore_h) $(value_h) $(command_h) $(regcache_h)
@@ -2455,12 +2499,10 @@ varobj.o: varobj.c $(defs_h) $(value_h) $(expression_h) $(frame_h) \
vax-tdep.o: vax-tdep.c $(defs_h) $(symtab_h) $(opcode_vax_h) $(gdbcore_h) \
$(inferior_h) $(regcache_h) $(frame_h) $(value_h) $(arch_utils_h) \
$(gdb_string_h) $(osabi_h) $(dis_asm_h) $(vax_tdep_h)
-w89k-rom.o: w89k-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
- $(serial_h) $(xmodem_h) $(regcache_h)
win32-nat.o: win32-nat.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
$(gdbcore_h) $(command_h) $(completer_h) $(regcache_h) $(top_h) \
- $(i386_tdep_h) $(buildsym_h) $(symfile_h) $(objfiles_h) \
- $(gdb_string_h) $(gdbthread_h) $(gdbcmd_h) $(exec_h)
+ $(buildsym_h) $(symfile_h) $(objfiles_h) $(gdb_string_h) \
+ $(gdbthread_h) $(gdbcmd_h) $(exec_h) $(i386_tdep_h) $(i387_tdep_h)
wince.o: wince.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) $(gdbcore_h) \
$(command_h) $(buildsym_h) $(symfile_h) $(objfiles_h) \
$(gdb_string_h) $(gdbthread_h) $(gdbcmd_h) $(wince_stub_h) \
@@ -2767,80 +2809,86 @@ signals.o: $(srcdir)/signals/signals.c $(server_h) $(defs_h) $(target_h) \
# Need to explicitly specify the compile rule as make will do nothing
# or try to compile the object file into the sub-directory.
-tuiCommand.o: $(srcdir)/tui/tuiCommand.c $(defs_h) $(tui_h) $(tuiData_h) \
- $(tuiWin_h) $(tuiIO_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiCommand.c
-tuiDataWin.o: $(srcdir)/tui/tuiDataWin.c $(defs_h) $(tui_h) $(tuiData_h) \
- $(tuiGeneralWin_h) $(tuiRegs_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiDataWin.c
-tuiData.o: $(srcdir)/tui/tuiData.c $(defs_h) $(symtab_h) $(tui_h) \
- $(tuiData_h) $(tuiGeneralWin_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiData.c
-tuiDisassem.o: $(srcdir)/tui/tuiDisassem.c $(defs_h) $(symtab_h) \
- $(breakpoint_h) $(frame_h) $(value_h) $(source_h) $(disasm_h) \
- $(tui_h) $(tuiData_h) $(tuiWin_h) $(tuiLayout_h) $(tuiSourceWin_h) \
- $(tuiStack_h) $(tui_file_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiDisassem.c
-tuiGeneralWin.o: $(srcdir)/tui/tuiGeneralWin.c $(defs_h) $(tui_h) \
- $(tuiData_h) $(tuiGeneralWin_h) $(tuiWin_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiGeneralWin.c
-tuiIO.o: $(srcdir)/tui/tuiIO.c $(defs_h) $(terminal_h) $(target_h) \
- $(event_loop_h) $(event_top_h) $(command_h) $(top_h) $(readline_h) \
- $(tui_h) $(tuiData_h) $(tuiIO_h) $(tuiCommand_h) $(tuiWin_h) \
- $(tuiGeneralWin_h) $(tui_file_h) $(ui_out_h) $(cli_out_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiIO.c
-tuiLayout.o: $(srcdir)/tui/tuiLayout.c $(defs_h) $(command_h) $(symtab_h) \
- $(frame_h) $(source_h) $(tui_h) $(tuiData_h) $(tuiDataWin_h) \
- $(tuiGeneralWin_h) $(tuiStack_h) $(tuiRegs_h) $(tuiWin_h) \
- $(tuiSourceWin_h) $(tuiDisassem_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiLayout.c
-tuiRegs.o: $(srcdir)/tui/tuiRegs.c $(defs_h) $(tui_h) $(tuiData_h) \
- $(symtab_h) $(gdbtypes_h) $(gdbcmd_h) $(frame_h) $(regcache_h) \
- $(inferior_h) $(target_h) $(tuiLayout_h) $(tuiWin_h) $(tuiDataWin_h) \
- $(tuiGeneralWin_h) $(tui_file_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiRegs.c
tuiSourceWin.o: $(srcdir)/tui/tuiSourceWin.c $(defs_h) $(symtab_h) \
$(frame_h) $(breakpoint_h) $(value_h) $(source_h) $(tui_h) \
$(tuiData_h) $(tuiStack_h) $(tuiWin_h) $(tuiGeneralWin_h) \
$(tuiSourceWin_h) $(tuiSource_h) $(tuiDisassem_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiSourceWin.c
-tuiSource.o: $(srcdir)/tui/tuiSource.c $(defs_h) $(symtab_h) $(frame_h) \
- $(breakpoint_h) $(source_h) $(symtab_h) $(tui_h) $(tuiData_h) \
- $(tuiStack_h) $(tuiSourceWin_h) $(tuiSource_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiSource.c
-tuiStack.o: $(srcdir)/tui/tuiStack.c $(defs_h) $(symtab_h) $(breakpoint_h) \
- $(frame_h) $(command_h) $(inferior_h) $(target_h) $(top_h) $(tui_h) \
- $(tuiData_h) $(tuiStack_h) $(tuiGeneralWin_h) $(tuiSource_h) \
- $(tuiSourceWin_h) $(tui_file_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiStack.c
-tuiWin.o: $(srcdir)/tui/tuiWin.c $(defs_h) $(command_h) $(symtab_h) \
- $(breakpoint_h) $(frame_h) $(cli_cmds_h) $(top_h) $(source_h) \
- $(tui_h) $(tuiData_h) $(tuiGeneralWin_h) $(tuiStack_h) $(tuiRegs_h) \
- $(tuiDisassem_h) $(tuiSource_h) $(tuiSourceWin_h) $(tuiDataWin_h)
- $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tuiWin.c
-tui.o: $(srcdir)/tui/tui.c $(defs_h) $(gdbcmd_h) $(tui_h) $(tuiData_h) \
- $(tuiLayout_h) $(tuiIO_h) $(tuiRegs_h) $(tuiStack_h) $(tuiWin_h) \
- $(tuiSourceWin_h) $(tuiDataWin_h) $(readline_h) $(target_h) \
- $(frame_h) $(breakpoint_h) $(inferior_h) $(symtab_h) $(source_h)
+tui.o: $(srcdir)/tui/tui.c $(defs_h) $(gdbcmd_h) $(tui_h) $(tui_data_h) \
+ $(tui_layout_h) $(tui_io_h) $(tui_regs_h) $(tui_stack_h) \
+ $(tui_win_h) $(tui_winsource_h) $(tui_windata_h) $(readline_h) \
+ $(target_h) $(frame_h) $(breakpoint_h) $(inferior_h) $(symtab_h) \
+ $(source_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui.c
+tui-command.o: $(srcdir)/tui/tui-command.c $(defs_h) $(tui_h) $(tui_data_h) \
+ $(tui_win_h) $(tui_io_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-command.c
+tui-data.o: $(srcdir)/tui/tui-data.c $(defs_h) $(symtab_h) $(tui_h) \
+ $(tui_data_h) $(tui_wingeneral_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-data.c
+tui-disasm.o: $(srcdir)/tui/tui-disasm.c $(defs_h) $(symtab_h) \
+ $(breakpoint_h) $(frame_h) $(value_h) $(source_h) $(disasm_h) \
+ $(tui_h) $(tui_data_h) $(tui_win_h) $(tui_layout_h) \
+ $(tui_winsource_h) $(tui_stack_h) $(tui_file_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-disasm.c
tui-file.o: $(srcdir)/tui/tui-file.c $(defs_h) $(ui_file_h) $(tui_file_h) \
- $(tui_tuiIO_h) $(tui_h)
+ $(tui_io_h) $(tui_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-file.c
tui-hooks.o: $(srcdir)/tui/tui-hooks.c $(defs_h) $(symtab_h) $(inferior_h) \
$(command_h) $(bfd_h) $(symfile_h) $(objfiles_h) $(target_h) \
$(gdbcore_h) $(event_loop_h) $(event_top_h) $(frame_h) \
$(breakpoint_h) $(gdb_events_h) $(ui_out_h) $(top_h) $(tui_h) \
- $(tuiData_h) $(tuiLayout_h) $(tuiIO_h) $(tuiRegs_h) $(tuiWin_h) \
- $(tuiStack_h) $(tuiDataWin_h) $(tuiSourceWin_h)
+ $(tui_data_h) $(tui_layout_h) $(tui_io_h) $(tui_regs_h) $(tui_win_h) \
+ $(tui_stack_h) $(tui_windata_h) $(tui_winsource_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-hooks.c
tui-interp.o: $(srcdir)/tui/tui-interp.c $(defs_h) $(interps_h) $(top_h) \
$(event_top_h) $(event_loop_h) $(ui_out_h) $(cli_out_h) \
- $(tui_tuiData_h) $(readline_h) $(tui_tuiWin_h) $(tui_h) \
- $(tui_tuiIO_h)
+ $(tui_data_h) $(readline_h) $(tui_win_h) $(tui_h) $(tui_io_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-interp.c
+tui-io.o: $(srcdir)/tui/tui-io.c $(defs_h) $(terminal_h) $(target_h) \
+ $(event_loop_h) $(event_top_h) $(command_h) $(top_h) $(readline_h) \
+ $(tui_h) $(tui_data_h) $(tui_io_h) $(tui_command_h) $(tui_win_h) \
+ $(tui_wingeneral_h) $(tui_file_h) $(ui_out_h) $(cli_out_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-io.c
+tui-layout.o: $(srcdir)/tui/tui-layout.c $(defs_h) $(command_h) $(symtab_h) \
+ $(frame_h) $(source_h) $(tui_h) $(tui_data_h) $(tui_windata_h) \
+ $(tui_wingeneral_h) $(tui_stack_h) $(tui_regs_h) $(tui_win_h) \
+ $(tui_winsource_h) $(tui_disasm_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-layout.c
tui-out.o: $(srcdir)/tui/tui-out.c $(defs_h) $(ui_out_h) $(tui_h) \
$(gdb_string_h) $(gdb_assert_h)
$(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-out.c
+tui-regs.o: $(srcdir)/tui/tui-regs.c $(defs_h) $(tui_h) $(tui_data_h) \
+ $(symtab_h) $(gdbtypes_h) $(gdbcmd_h) $(frame_h) $(regcache_h) \
+ $(inferior_h) $(target_h) $(tui_layout_h) $(tui_win_h) \
+ $(tui_windata_h) $(tui_wingeneral_h) $(tui_file_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-regs.c
+tui-source.o: $(srcdir)/tui/tui-source.c $(defs_h) $(symtab_h) $(frame_h) \
+ $(breakpoint_h) $(source_h) $(symtab_h) $(tui_h) $(tui_data_h) \
+ $(tui_stack_h) $(tui_winsource_h) $(tui_source_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-source.c
+tui-stack.o: $(srcdir)/tui/tui-stack.c $(defs_h) $(symtab_h) $(breakpoint_h) \
+ $(frame_h) $(command_h) $(inferior_h) $(target_h) $(top_h) $(tui_h) \
+ $(tui_data_h) $(tui_stack_h) $(tui_wingeneral_h) $(tui_source_h) \
+ $(tui_winsource_h) $(tui_file_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-stack.c
+tui-win.o: $(srcdir)/tui/tui-win.c $(defs_h) $(command_h) $(symtab_h) \
+ $(breakpoint_h) $(frame_h) $(cli_cmds_h) $(top_h) $(source_h) \
+ $(tui_h) $(tui_data_h) $(tui_wingeneral_h) $(tui_stack_h) \
+ $(tui_regs_h) $(tui_disasm_h) $(tui_source_h) $(tui_winsource_h) \
+ $(tui_windata_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-win.c
+tui-windata.o: $(srcdir)/tui/tui-windata.c $(defs_h) $(tui_h) $(tui_data_h) \
+ $(tui_wingeneral_h) $(tui_regs_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-windata.c
+tui-wingeneral.o: $(srcdir)/tui/tui-wingeneral.c $(defs_h) $(tui_h) \
+ $(tui_data_h) $(tui_wingeneral_h) $(tui_win_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-wingeneral.c
+tui-winsource.o: $(srcdir)/tui/tui-winsource.c $(defs_h) $(symtab_h) \
+ $(frame_h) $(breakpoint_h) $(value_h) $(source_h) $(tui_h) \
+ $(tui_data_h) $(tui_stack_h) $(tui_win_h) $(tui_wingeneral_h) \
+ $(tui_winsource_h) $(tui_source_h) $(tui_disasm_h)
+ $(CC) -c $(INTERNAL_CFLAGS) $(srcdir)/tui/tui-winsource.c
#
# vx-share sub-directory
diff --git a/gdb/NEWS b/gdb/NEWS
index 9b2a28fc2e0..f24f592db51 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -3,6 +3,24 @@
*** Changes since GDB 6.0:
+* Removed --with-mmalloc
+
+Support for the mmalloc memory manager has been removed, as it
+conflicted with the internal gdb byte cache.
+
+* Changes in AMD64 configurations
+
+The AMD64 target now includes the %cs and %ss registers. As a result
+the AMD64 remote protocol has changed; this affects the floating-point
+and SSE registers. If you rely on those registers for your debugging,
+you should upgrade gdbserver on the remote side.
+
+* Revised SPARC target
+
+The SPARC target has been completely revised, incorporating the
+FreeBSD/sparc64 support that was added for GDB 6.0. As a result
+support for LynxOS and SunOS 4 has been dropped.
+
* New C++ demangler
GDB has a new C++ demangler which does a better job on the mangled
@@ -19,6 +37,8 @@ encountered these.
* New native configurations
NetBSD/amd64 x86_64-*-netbsd*
+OpenBSD/sparc sparc-*-openbsd*
+OpenBSD/sparc64 sparc64-*-openbsd*
* New debugging protocols
@@ -63,6 +83,8 @@ PMAX (MIPS) running Mach 3.0 mips*-*-mach3*
Sequent family i[3456]86-sequent-sysv4*
i[3456]86-sequent-sysv*
i[3456]86-sequent-bsd*
+SPARC running LynxOS sparc-*-lynxos*
+SPARC running SunOS 4 sparc-*-sunos4*
Tsqware Sparclet sparclet-*-*
Fujitsu SPARClite sparclite-fujitsu-none or sparclite
diff --git a/gdb/acconfig.h b/gdb/acconfig.h
index f3b8bf1351a..87560c7b001 100644
--- a/gdb/acconfig.h
+++ b/gdb/acconfig.h
@@ -6,6 +6,9 @@
/* Define if your struct reg has r_fs. */
#undef HAVE_STRUCT_REG_R_FS
+/* Define if your struct stat has st_blocks. */
+#undef HAVE_STRUCT_STAT_ST_BLOCKS
+
/* Define if your struct reg has r_gs. */
#undef HAVE_STRUCT_REG_R_GS
@@ -105,15 +108,6 @@
/* Define if you have HPUX threads */
#undef HAVE_HPUX_THREAD_SUPPORT
-/* Define if you want to use the memory mapped malloc package (mmalloc). */
-#undef USE_MMALLOC
-
-/* Define if the runtime uses a routine from mmalloc before gdb has a chance
- to initialize mmalloc, and we want to force checking to be used anyway.
- This may cause spurious memory corruption messages if the runtime tries
- to explicitly deallocate that memory when gdb calls exit. */
-#undef MMCHECK_FORCE
-
/* Define to 1 if NLS is requested. */
#undef ENABLE_NLS
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 81be6ddc48d..1301bfc0671 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -1,5 +1,5 @@
/* Ada language support routines for GDB, the GNU debugger. Copyright
- 1992, 1993, 1994, 1997, 1998, 1999, 2000, 2003
+ 1992, 1993, 1994, 1997, 1998, 1999, 2000, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -8020,6 +8020,7 @@ const struct language_defn ada_language_defn = {
NULL, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
#if 0
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
index 325cf19b7d4..a166ba5c75f 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
@@ -1555,7 +1555,6 @@ alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_breakpoint_from_pc (gdbarch, alpha_breakpoint_from_pc);
set_gdbarch_decr_pc_after_break (gdbarch, 4);
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_frame_args_skip (gdbarch, 0);
/* Hook in ABI-specific overrides, if they have been registered. */
diff --git a/gdb/amd64fbsd-nat.c b/gdb/amd64fbsd-nat.c
index 2354fa361bf..edab8b56709 100644
--- a/gdb/amd64fbsd-nat.c
+++ b/gdb/amd64fbsd-nat.c
@@ -1,6 +1,6 @@
/* Native-dependent code for FreeBSD/amd64.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -74,6 +74,8 @@ static int reg_offset[] =
REG_OFFSET (r_r15),
REG_OFFSET (r_rip),
REG_OFFSET (r_rflags),
+ REG_OFFSET (r_cs),
+ REG_OFFSET (r_ss),
-1,
-1,
-1,
diff --git a/gdb/amd64fbsd-tdep.c b/gdb/amd64fbsd-tdep.c
index bb44ec032b2..6814dd97e96 100644
--- a/gdb/amd64fbsd-tdep.c
+++ b/gdb/amd64fbsd-tdep.c
@@ -1,6 +1,6 @@
/* Target-dependent code for FreeBSD/amd64.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -58,15 +58,30 @@ amd64fbsd_sigcontext_addr (struct frame_info *next_frame)
/* From <machine/reg.h>. */
static int amd64fbsd_r_reg_offset[] =
{
- 14 * 8, 11 * 8, /* %rax, %rbx */
- 13 * 8, 12 * 8, /* %rcx, %rdx */
- 9 * 8, 8 * 8, /* %rsi, %rdi */
- 10 * 8, 20 * 8, /* %rbp, %rsp */
- 7 * 8, 6 * 8, 5 * 8, 4 * 8, /* %r8 ... */
- 3 * 8, 2 * 8, 1 * 8, 0 * 8, /* ... %r15 */
- 17 * 8, 19 * 8, /* %rip, %eflags */
- -1, -1, /* %ds, %es */
- -1, -1 /* %fs, %gs */
+ 14 * 8, /* %rax */
+ 11 * 8, /* %rbx */
+ 13 * 8, /* %rcx */
+ 12 * 8, /* %rdx */
+ 9 * 8, /* %rsi */
+ 8 * 8, /* %rdi */
+ 10 * 8, /* %rbp */
+ 20 * 8, /* %rsp */
+ 7 * 8, /* %r8 ... */
+ 6 * 8,
+ 5 * 8,
+ 4 * 8,
+ 3 * 8,
+ 2 * 8,
+ 1 * 8,
+ 0 * 8, /* ... %r15 */
+ 17 * 8, /* %rip */
+ 19 * 8, /* %eflags */
+ 18 * 8, /* %cs */
+ 21 * 8, /* %ss */
+ -1, /* %ds */
+ -1, /* %es */
+ -1, /* %fs */
+ -1 /* %gs */
};
/* Location of the signal trampoline. */
@@ -74,7 +89,7 @@ CORE_ADDR amd64fbsd_sigtramp_start = 0x7fffffffffc0;
CORE_ADDR amd64fbsd_sigtramp_end = 0x7fffffffffe0;
/* From <machine/signal.h>. */
-int amd64fbsd_sc_reg_offset[X86_64_NUM_GREGS] =
+int amd64fbsd_sc_reg_offset[] =
{
24 + 6 * 8, /* %rax */
24 + 7 * 8, /* %rbx */
@@ -84,16 +99,18 @@ int amd64fbsd_sc_reg_offset[X86_64_NUM_GREGS] =
24 + 0 * 8, /* %rdi */
24 + 8 * 8, /* %rbp */
24 + 22 * 8, /* %rsp */
- 24 + 4 * 8, /* %r8 */
- 24 + 5 * 8, /* %r9 */
- 24 + 9 * 8, /* %r10 */
- 24 + 10 * 8, /* %r11 */
- 24 + 11 * 8, /* %r12 */
- 24 + 12 * 8, /* %r13 */
- 24 + 13 * 8, /* %r14 */
- 24 + 14 * 8, /* %r15 */
+ 24 + 4 * 8, /* %r8 ... */
+ 24 + 5 * 8,
+ 24 + 9 * 8,
+ 24 + 10 * 8,
+ 24 + 11 * 8,
+ 24 + 12 * 8,
+ 24 + 13 * 8,
+ 24 + 14 * 8, /* ... %r15 */
24 + 19 * 8, /* %rip */
24 + 21 * 8, /* %eflags */
+ 24 + 20 * 8, /* %cs */
+ 24 + 23 * 8, /* %ss */
-1, /* %ds */
-1, /* %es */
-1, /* %fs */
diff --git a/gdb/amd64nbsd-nat.c b/gdb/amd64nbsd-nat.c
index 4af22feb7f5..da4532e69ee 100644
--- a/gdb/amd64nbsd-nat.c
+++ b/gdb/amd64nbsd-nat.c
@@ -1,6 +1,6 @@
/* Native-dependent code for NetBSD/amd64.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -47,8 +47,8 @@ static int amd64nbsd32_r_reg_offset[] =
0 * 8, /* %edi */
21 * 8, /* %eip */
23 * 8, /* %eflags */
- -1, /* %cs */
- -1, /* %ss */
+ 22 * 8, /* %cs */
+ 25 * 8, /* %ss */
18 * 8, /* %ds */
17 * 8, /* %es */
16 * 8, /* %fs */
diff --git a/gdb/amd64nbsd-tdep.c b/gdb/amd64nbsd-tdep.c
index 5500ed13db8..a39c33e7c11 100644
--- a/gdb/amd64nbsd-tdep.c
+++ b/gdb/amd64nbsd-tdep.c
@@ -1,6 +1,6 @@
/* Target-dependent code for NetBSD/amd64.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -72,6 +72,8 @@ int amd64nbsd_r_reg_offset[] =
11 * 8, /* ... %r15 */
21 * 8, /* %rip */
23 * 8, /* %eflags */
+ 22 * 8, /* %cs */
+ 25 * 8, /* %ss */
18 * 8, /* %ds */
17 * 8, /* %es */
16 * 8, /* %fs */
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index e7aef4a4024..f51b82ed0b4 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -1,6 +1,6 @@
/* Common target dependent code for GDB on ARM systems.
Copyright 1988, 1989, 1991, 1992, 1993, 1995, 1996, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -2689,6 +2689,21 @@ arm_coff_make_msymbol_special(int val, struct minimal_symbol *msym)
MSYMBOL_SET_SPECIAL (msym);
}
+static void
+arm_write_pc (CORE_ADDR pc, ptid_t ptid)
+{
+ write_register_pid (ARM_PC_REGNUM, pc, ptid);
+
+ /* If necessary, set the T bit. */
+ if (arm_apcs_32)
+ {
+ CORE_ADDR val = read_register_pid (ARM_PS_REGNUM, ptid);
+ if (arm_pc_is_thumb (pc))
+ write_register_pid (ARM_PS_REGNUM, val | 0x20, ptid);
+ else
+ write_register_pid (ARM_PS_REGNUM, val & ~(CORE_ADDR) 0x20, ptid);
+ }
+}
static enum gdb_osabi
arm_elf_osabi_sniffer (bfd *abfd)
@@ -2851,6 +2866,8 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_push_dummy_call (gdbarch, arm_push_dummy_call);
+ set_gdbarch_write_pc (gdbarch, arm_write_pc);
+
/* Frame handling. */
set_gdbarch_unwind_dummy_id (gdbarch, arm_unwind_dummy_id);
set_gdbarch_unwind_pc (gdbarch, arm_unwind_pc);
@@ -2866,9 +2883,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_smash_text_address (gdbarch, arm_smash_text_address);
set_gdbarch_addr_bits_remove (gdbarch, arm_addr_bits_remove);
- /* Offset from address of function to start of its code. */
- set_gdbarch_function_start_offset (gdbarch, 0);
-
/* Advance PC across function entry code. */
set_gdbarch_skip_prologue (gdbarch, arm_skip_prologue);
@@ -2880,7 +2894,6 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
/* Breakpoint manipulation. */
set_gdbarch_breakpoint_from_pc (gdbarch, arm_breakpoint_from_pc);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
/* Information about registers, etc. */
set_gdbarch_print_float_info (gdbarch, arm_print_float_info);
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
index 9ef84c0b6f1..cf231faff6f 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
@@ -1,5 +1,5 @@
/* Target-dependent code for Atmel AVR, for GDB.
- Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -226,12 +226,6 @@ avr_make_iaddr (CORE_ADDR x)
return ((x) | AVR_IMEM_START);
}
-static int
-avr_iaddr_p (CORE_ADDR x)
-{
- return (((x) & AVR_MEM_MASK) == AVR_IMEM_START);
-}
-
/* FIXME: TRoth: Really need to use a larger mask for instructions. Some
devices are already up to 128KBytes of flash space.
@@ -251,12 +245,6 @@ avr_make_saddr (CORE_ADDR x)
return ((x) | AVR_SMEM_START);
}
-static int
-avr_saddr_p (CORE_ADDR x)
-{
- return (((x) & AVR_MEM_MASK) == AVR_SMEM_START);
-}
-
static CORE_ADDR
avr_convert_saddr_to_raw (CORE_ADDR x)
{
@@ -1319,11 +1307,8 @@ avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_skip_prologue (gdbarch, avr_skip_prologue);
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
set_gdbarch_breakpoint_from_pc (gdbarch, avr_breakpoint_from_pc);
- set_gdbarch_function_start_offset (gdbarch, 0);
-
set_gdbarch_frame_args_skip (gdbarch, 0);
set_gdbarch_frameless_function_invocation (gdbarch,
frameless_look_for_prologue);
diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c
index cb8ff2c4210..0d0dfd2774f 100644
--- a/gdb/ax-gdb.c
+++ b/gdb/ax-gdb.c
@@ -134,7 +134,6 @@ static void gen_sizeof (union exp_element **pc,
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 (char *exp, int from_tty);
@@ -1797,33 +1796,6 @@ gen_trace_for_expr (CORE_ADDR scope, struct expression *expr)
discard_cleanups (old_chain);
return ax;
}
-
-
-
-/* The "agent" command, for testing: compile and disassemble an expression. */
-
-static void
-print_axs_value (struct ui_file *f, struct axs_value *value)
-{
- switch (value->kind)
- {
- case axs_rvalue:
- fputs_filtered ("rvalue", f);
- break;
-
- case axs_lvalue_memory:
- fputs_filtered ("memory lvalue", f);
- break;
-
- case axs_lvalue_register:
- fprintf_filtered (f, "register %d lvalue", value->u.reg);
- break;
- }
-
- fputs_filtered (" : ", f);
- type_print (value->type, "", f, -1);
-}
-
static void
agent_command (char *exp, int from_tty)
diff --git a/gdb/block.h b/gdb/block.h
index 38d037e0226..a36821305ca 100644
--- a/gdb/block.h
+++ b/gdb/block.h
@@ -139,9 +139,7 @@ struct blockvector
/* Special block numbers */
-#define GLOBAL_BLOCK 0
-#define STATIC_BLOCK 1
-#define FIRST_LOCAL_BLOCK 2
+enum { GLOBAL_BLOCK = 0, STATIC_BLOCK = 1, FIRST_LOCAL_BLOCK = 2 };
extern struct symbol *block_function (const struct block *);
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index 4602f5ca99f..30a82a084f6 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -2,8 +2,8 @@
functions and pc values.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
- Foundation, Inc.
+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GDB.
@@ -73,18 +73,13 @@ deprecated_inside_entry_file (CORE_ADDR addr)
}
/* Test whether PC is in the range of addresses that corresponds to
- the "main" function.
-
- A PC of zero is always considered to be the bottom of the stack. */
+ the "main" function. */
int
inside_main_func (CORE_ADDR pc)
{
struct minimal_symbol *msymbol;
- if (pc == 0)
- return 1;
-
if (symfile_objfile == 0)
return 0;
@@ -161,31 +156,27 @@ inside_main_func (CORE_ADDR pc)
&& symfile_objfile->ei.main_func_highpc > pc);
}
-/* Test a specified PC value to see if it is in the range of addresses
- that correspond to the process entry point function. See comments
- in objfiles.h for why we might want to do this.
-
- Typically called from DEPRECATED_FRAME_CHAIN_VALID.
-
- A PC of zero is always considered to be the bottom of the stack. */
+/* Test whether PC is inside the range of addresses that corresponds
+ to the process entry point function. */
int
inside_entry_func (CORE_ADDR pc)
{
- if (pc == 0)
- return 1;
if (symfile_objfile == 0)
return 0;
+
if (CALL_DUMMY_LOCATION == AT_ENTRY_POINT)
{
- /* Do not stop backtracing if the pc is in the call dummy
- at the entry point. */
- /* FIXME: Won't always work with zeros for the last two arguments */
+ /* Do not stop backtracing if the program counter is in the call
+ dummy at the entry point. */
+ /* FIXME: This won't always work with zeros for the last two
+ arguments. */
if (DEPRECATED_PC_IN_CALL_DUMMY (pc, 0, 0))
return 0;
}
- return (symfile_objfile->ei.entry_func_lowpc <= pc &&
- symfile_objfile->ei.entry_func_highpc > pc);
+
+ return (symfile_objfile->ei.entry_func_lowpc <= pc
+ && symfile_objfile->ei.entry_func_highpc > pc);
}
/* Return nonzero if the function for this frame lacks a prologue. Many
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 84713526b19..39b40fdeebd 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -1,8 +1,8 @@
/* Everything about breakpoints, for GDB.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
- Foundation, Inc.
+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GDB.
@@ -244,16 +244,6 @@ static int overlay_events_enabled;
B ? (TMP=B->next, 1): 0; \
B = TMP)
-/* True if SHIFT_INST_REGS defined, false otherwise. */
-
-int must_shift_inst_regs =
-#if defined(SHIFT_INST_REGS)
-1
-#else
-0
-#endif
- ;
-
/* True if breakpoint hit counts should be displayed in breakpoint info. */
int show_breakpoint_hit_counts = 1;
@@ -1992,7 +1982,6 @@ bpstat_do_actions (bpstat *bsp)
{
bpstat bs;
struct cleanup *old_chain;
- struct command_line *cmd;
/* Avoid endless recursion if a `source' command is contained
in bs->commands. */
@@ -2017,7 +2006,23 @@ top:
breakpoint_proceeded = 0;
for (; bs != NULL; bs = bs->next)
{
+ struct command_line *cmd;
+ struct cleanup *this_cmd_tree_chain;
+
+ /* Take ownership of the BSP's command tree, if it has one.
+
+ The command tree could legitimately contain commands like
+ 'step' and 'next', which call clear_proceed_status, which
+ frees stop_bpstat's command tree. To make sure this doesn't
+ free the tree we're executing out from under us, we need to
+ take ownership of the tree ourselves. Since a given bpstat's
+ commands are only executed once, we don't need to copy it; we
+ can clear the pointer in the bpstat, and make sure we free
+ the tree when we're done. */
cmd = bs->commands;
+ bs->commands = 0;
+ this_cmd_tree_chain = make_cleanup_free_command_lines (&cmd);
+
while (cmd != NULL)
{
execute_control_command (cmd);
@@ -2027,14 +2032,16 @@ top:
else
cmd = cmd->next;
}
+
+ /* We can free this command tree now. */
+ do_cleanups (this_cmd_tree_chain);
+
if (breakpoint_proceeded)
/* The inferior is proceeded by the command; bomb out now.
The bpstat chain has been blown away by wait_for_inferior.
But since execution has stopped again, there is a new bpstat
to look at, so start over. */
goto top;
- else
- free_command_lines (&bs->commands);
}
do_cleanups (old_chain);
}
@@ -2605,7 +2612,7 @@ bpstat_stop_status (CORE_ADDR *pc, int not_a_sw_breakpoint)
if (b->type == bp_hardware_breakpoint)
{
- if (b->loc->address != (*pc - DECR_PC_AFTER_HW_BREAK))
+ if (b->loc->address != *pc)
continue;
if (overlay_debugging /* unmapped overlay section */
&& section_is_overlay (b->loc->section)
@@ -2865,24 +2872,12 @@ bpstat_stop_status (CORE_ADDR *pc, int not_a_sw_breakpoint)
if (real_breakpoint && bs)
{
- if (bs->breakpoint_at->type == bp_hardware_breakpoint)
- {
- if (DECR_PC_AFTER_HW_BREAK != 0)
- {
- *pc = *pc - DECR_PC_AFTER_HW_BREAK;
- write_pc (*pc);
- }
- }
- else
+ if (bs->breakpoint_at->type != bp_hardware_breakpoint)
{
- if (DECR_PC_AFTER_BREAK != 0 || must_shift_inst_regs)
+ if (DECR_PC_AFTER_BREAK != 0)
{
*pc = bp_addr;
-#if defined (SHIFT_INST_REGS)
- SHIFT_INST_REGS ();
-#else /* No SHIFT_INST_REGS. */
write_pc (bp_addr);
-#endif /* No SHIFT_INST_REGS. */
}
}
}
@@ -4328,7 +4323,7 @@ solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname,
int thread = -1; /* All threads. */
/* Set a breakpoint on the specified hook. */
- sals = decode_line_1 (&hookname, 1, (struct symtab *) NULL, 0, &canonical);
+ sals = decode_line_1 (&hookname, 1, (struct symtab *) NULL, 0, &canonical, NULL);
addr_end = hookname;
if (sals.nelts == 0)
@@ -4845,9 +4840,9 @@ parse_breakpoint_sals (char **address,
|| ((strchr ("+-", (*address)[0]) != NULL)
&& ((*address)[1] != '['))))
*sals = decode_line_1 (address, 1, default_breakpoint_symtab,
- default_breakpoint_line, addr_string);
+ default_breakpoint_line, addr_string, NULL);
else
- *sals = decode_line_1 (address, 1, (struct symtab *) NULL, 0, addr_string);
+ *sals = decode_line_1 (address, 1, (struct symtab *) NULL, 0, addr_string, NULL);
}
/* For any SAL that didn't have a canonical string, fill one in. */
if (sals->nelts > 0 && *addr_string == NULL)
@@ -5293,7 +5288,7 @@ break_at_finish_command_1 (char *arg, int flag, int from_tty)
beg_addr_string = addr_string;
sals = decode_line_1 (&addr_string, 1, (struct symtab *) NULL, 0,
- (char ***) NULL);
+ (char ***) NULL, NULL);
xfree (beg_addr_string);
old_chain = make_cleanup (xfree, sals.sals);
@@ -5810,10 +5805,10 @@ until_break_command (char *arg, int from_tty, int anywhere)
if (default_breakpoint_valid)
sals = decode_line_1 (&arg, 1, default_breakpoint_symtab,
- default_breakpoint_line, (char ***) NULL);
+ default_breakpoint_line, (char ***) NULL, NULL);
else
sals = decode_line_1 (&arg, 1, (struct symtab *) NULL,
- 0, (char ***) NULL);
+ 0, (char ***) NULL, NULL);
if (sals.nelts != 1)
error ("Couldn't get information on specified line.");
@@ -6273,7 +6268,7 @@ handle_gnu_v3_exceptions (int tempflag, char *cond_string,
trigger_func_name = xstrdup ("__cxa_throw");
nameptr = trigger_func_name;
- sals = decode_line_1 (&nameptr, 1, NULL, 0, NULL);
+ sals = decode_line_1 (&nameptr, 1, NULL, 0, NULL, NULL);
if (sals.nelts == 0)
{
xfree (trigger_func_name);
@@ -6980,7 +6975,7 @@ breakpoint_re_set_one (void *bint)
set_language (b->language);
input_radix = b->input_radix;
s = b->addr_string;
- sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL);
+ sals = decode_line_1 (&s, 1, (struct symtab *) NULL, 0, (char ***) NULL, NULL);
for (i = 0; i < sals.nelts; i++)
{
resolve_sal_pc (&sals.sals[i]);
@@ -7516,10 +7511,10 @@ decode_line_spec_1 (char *string, int funfirstline)
sals = decode_line_1 (&string, funfirstline,
default_breakpoint_symtab,
default_breakpoint_line,
- (char ***) NULL);
+ (char ***) NULL, NULL);
else
sals = decode_line_1 (&string, funfirstline,
- (struct symtab *) NULL, 0, (char ***) NULL);
+ (struct symtab *) NULL, 0, (char ***) NULL, NULL);
if (*string)
error ("Junk at end of line specification: %s", string);
return sals;
diff --git a/gdb/c-exp.y b/gdb/c-exp.y
index 206170d4026..197f8ba4bde 100644
--- a/gdb/c-exp.y
+++ b/gdb/c-exp.y
@@ -1,6 +1,6 @@
/* YACC parser for C expressions, for GDB.
Copyright 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2003
+ 1998, 1999, 2000, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
diff --git a/gdb/c-lang.c b/gdb/c-lang.c
index a296d8193b4..ba34540f386 100644
--- a/gdb/c-lang.c
+++ b/gdb/c-lang.c
@@ -1,5 +1,5 @@
/* C language support routines for GDB, the GNU debugger.
- Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002
+ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -556,6 +556,7 @@ const struct language_defn c_language_defn =
NULL, /* Language specific skip_trampoline */
NULL, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
@@ -613,6 +614,7 @@ const struct language_defn cplus_language_defn =
NULL, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
cp_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ cp_lookup_transparent_type, /* lookup_transparent_type */
cplus_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
@@ -647,6 +649,7 @@ const struct language_defn asm_language_defn =
NULL, /* Language specific skip_trampoline */
NULL, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
@@ -686,6 +689,7 @@ const struct language_defn minimal_language_defn =
NULL, /* Language specific skip_trampoline */
NULL, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
diff --git a/gdb/cli/cli-cmds.c b/gdb/cli/cli-cmds.c
index 6f9fe90f2d2..4f255c3089f 100644
--- a/gdb/cli/cli-cmds.c
+++ b/gdb/cli/cli-cmds.c
@@ -59,8 +59,6 @@ static void pwd_command (char *, int);
static void show_version (char *, int);
-static void validate_comname (char *);
-
static void help_command (char *, int);
static void show_command (char *, int);
@@ -506,9 +504,9 @@ shell_escape (char *arg, int from_tty)
p++; /* Get past '/' */
if (!arg)
- execl (user_shell, p, 0);
+ execl (user_shell, p, (char *) 0);
else
- execl (user_shell, p, "-c", arg, 0);
+ execl (user_shell, p, "-c", arg, (char *) 0);
fprintf_unfiltered (gdb_stderr, "Cannot execute %s: %s\n", user_shell,
safe_strerror (errno));
@@ -557,7 +555,7 @@ edit_command (char *arg, int from_tty)
/* Now should only be one argument -- decode it in SAL */
arg1 = arg;
- sals = decode_line_1 (&arg1, 0, 0, 0, 0);
+ sals = decode_line_1 (&arg1, 0, 0, 0, 0, 0);
if (! sals.nelts) return; /* C++ */
if (sals.nelts > 1) {
@@ -681,7 +679,7 @@ list_command (char *arg, int from_tty)
dummy_beg = 1;
else
{
- sals = decode_line_1 (&arg1, 0, 0, 0, 0);
+ sals = decode_line_1 (&arg1, 0, 0, 0, 0, 0);
if (!sals.nelts)
return; /* C++ */
@@ -714,9 +712,9 @@ list_command (char *arg, int from_tty)
else
{
if (dummy_beg)
- sals_end = decode_line_1 (&arg1, 0, 0, 0, 0);
+ sals_end = decode_line_1 (&arg1, 0, 0, 0, 0, 0);
else
- sals_end = decode_line_1 (&arg1, 0, sal.symtab, sal.line, 0);
+ sals_end = decode_line_1 (&arg1, 0, sal.symtab, sal.line, 0, 0);
if (sals_end.nelts == 0)
return;
if (sals_end.nelts > 1)
diff --git a/gdb/cli/cli-dump.c b/gdb/cli/cli-dump.c
index 7b88975c6d4..9e9c3de4b91 100644
--- a/gdb/cli/cli-dump.c
+++ b/gdb/cli/cli-dump.c
@@ -331,36 +331,6 @@ dump_value_command (char *cmd, char *mode)
}
static void
-dump_filetype (char *cmd, char *mode, char *filetype)
-{
- char *suffix = cmd;
-
- if (cmd == NULL || *cmd == '\0')
- error ("Missing subcommand: try 'help %s %s'.",
- mode[0] == 'a' ? "append" : "dump",
- filetype);
-
- suffix += strcspn (cmd, " \t");
-
- if (suffix != cmd)
- {
- if (strncmp ("memory", cmd, suffix - cmd) == 0)
- {
- dump_memory_to_file (suffix, mode, filetype);
- return;
- }
- else if (strncmp ("value", cmd, suffix - cmd) == 0)
- {
- dump_value_to_file (suffix, mode, filetype);
- return;
- }
- }
-
- error ("dump %s: unknown subcommand '%s' -- try 'value' or 'memory'.",
- filetype, cmd);
-}
-
-static void
dump_srec_memory (char *args, int from_tty)
{
dump_memory_to_file (args, FOPEN_WB, "srec");
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c
index cac5408893d..a8375a38f5f 100644
--- a/gdb/cli/cli-script.c
+++ b/gdb/cli/cli-script.c
@@ -36,9 +36,6 @@
/* Prototypes for local functions */
-static struct cleanup *
- make_cleanup_free_command_lines (struct command_line **arg);
-
static enum command_control_type
recurse_read_control_structure (struct command_line *current_cmd);
@@ -1001,7 +998,7 @@ do_free_command_lines_cleanup (void *arg)
free_command_lines (arg);
}
-static struct cleanup *
+struct cleanup *
make_cleanup_free_command_lines (struct command_line **arg)
{
return make_cleanup (do_free_command_lines_cleanup, arg);
diff --git a/gdb/cli/cli-script.h b/gdb/cli/cli-script.h
index 03cb84137e5..fc5c20301e8 100644
--- a/gdb/cli/cli-script.h
+++ b/gdb/cli/cli-script.h
@@ -47,6 +47,8 @@ extern void print_command_lines (struct ui_out *,
extern struct command_line * copy_command_lines (struct command_line *cmds);
+struct cleanup *make_cleanup_free_command_lines (struct command_line **arg);
+
/* Exported to gdb/infrun.c */
extern void execute_user_command (struct cmd_list_element *c, char *args);
diff --git a/gdb/config.in b/gdb/config.in
index a3edf86a0d7..69982fd6b9a 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -79,6 +79,9 @@
/* Define if your struct reg has r_fs. */
#undef HAVE_STRUCT_REG_R_FS
+/* Define if your struct stat has st_blocks. */
+#undef HAVE_STRUCT_STAT_ST_BLOCKS
+
/* Define if your struct reg has r_gs. */
#undef HAVE_STRUCT_REG_R_GS
@@ -133,15 +136,6 @@
/* Define if you have HPUX threads */
#undef HAVE_HPUX_THREAD_SUPPORT
-/* Define if you want to use the memory mapped malloc package (mmalloc). */
-#undef USE_MMALLOC
-
-/* Define if the runtime uses a routine from mmalloc before gdb has a chance
- to initialize mmalloc, and we want to force checking to be used anyway.
- This may cause spurious memory corruption messages if the runtime tries
- to explicitly deallocate that memory when gdb calls exit. */
-#undef MMCHECK_FORCE
-
/* Define if <proc_service.h> on solaris uses int instead of
size_t, and assorted other type changes. */
#undef PROC_SERVICE_IS_OLD
@@ -287,6 +281,9 @@
/* Define if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
+/* Define if you have the <machine/reg.h> header file. */
+#undef HAVE_MACHINE_REG_H
+
/* Define if you have the <malloc.h> header file. */
#undef HAVE_MALLOC_H
@@ -456,6 +453,9 @@
/* Define to 1 if the regex included in libiberty should be used. */
#undef USE_INCLUDED_REGEX
+/* Define to 1 if your system has struct reg in <machine/reg.h>. */
+#undef HAVE_STRUCT_REG
+
/* Define if <stdint.h> provides the uintptr_t type. */
#undef HAVE_UINTPTR_T
diff --git a/gdb/config/alpha/alpha-linux.mh b/gdb/config/alpha/alpha-linux.mh
index d3731795020..418bc419f8a 100644
--- a/gdb/config/alpha/alpha-linux.mh
+++ b/gdb/config/alpha/alpha-linux.mh
@@ -7,9 +7,6 @@ NATDEPFILES= infptrace.o inftarg.o corelow.o alpha-nat.o linux-proc.o \
LOADLIBES = -ldl -rdynamic
-MMALLOC =
-MMALLOC_CFLAGS = -DNO_MMALLOC
-
# doublest.c currently assumes some properties of FP arithmetic
# on the host which require this.
MH_CFLAGS = -mieee
diff --git a/gdb/config/djgpp/config.sed b/gdb/config/djgpp/config.sed
index 7cc9d3f3e48..4313bfb0c0c 100644
--- a/gdb/config/djgpp/config.sed
+++ b/gdb/config/djgpp/config.sed
@@ -3,7 +3,7 @@ s|gdb\.c++|gdb.cxx|g
/ac_rel_source/s|ln -s|cp -p|
s|\.gdbinit|gdb.ini|g
-/ac_given_INSTALL=/,/^CEOF/ {
+/^ac_given_INSTALL=/,/^CEOF/ {
/^s%@prefix@%/a\
s,\\([yp*]\\)\\.tab,\\1_tab,g\
/^ @rm -f/s,\\$@-\\[0-9\\]\\[0-9\\],& *.i[1-9] *.i[1-9][0-9],\
@@ -12,19 +12,27 @@ s|\.gdbinit|gdb.ini|g
s,\\.info\\*,.inf* *.i[1-9] *.i[1-9][0-9],\
s,\\.gdbinit,gdb.ini,g\
/TEXINPUTS=/s,:,';',g\
- /VPATH *=/s,\\([^A-z]\\):,\1;,g\
+ /VPATH *=/s,\\([^A-z]\\):,\\1;,g\
/\\$\\$file-\\[0-9\\]/s,echo,& *.i[1-9] *.i[1-9][0-9],\
/\\$\\$file-\\[0-9\\]/s,rm -f \\$\\$file,& \\${PACKAGE}.i[1-9] \\${PACKAGE}.i[1-9][0-9],\
s,config\\.h\\.in,config.h-in,g\
s,po2tbl\\.sed\\.in,po2tblsed.in,g
+
+}
+
+/^ac_given_srcdir=/,/^CEOF/ {
+ /^s%@TOPLEVEL_CONFIGURE_ARGUMENTS@%/a\
+ /@test ! -f /s,\\(.\\)\$, export am_cv_exeext=.exe; export lt_cv_sys_max_cmd_len=12288; \\1,
+
}
/^CONFIG_FILES=/,/^EOF/ {
- s|po/Makefile.in\([^-:]\)|po/Makefile.in:po/Makefile.in-in\1|
+ s|po/Makefile.in\([^-:a-z]\)|po/Makefile.in:po/Makefile.in-in\1|
}
-/^ *CONFIG_HEADERS=/,/^EOF/ {
- s|config.h\([^-:]\)|config.h:config.h-in\1|
+/^ *# *Handling of arguments/,/^done/ {
+ s| config.h"| config.h:config.h-in"|
+ s|config.h\([^-:"a-z]\)|config.h:config.h-in\1|
}
/^[ ]*\/\*)/s,/\*,/*|[A-z]:/*,
@@ -32,3 +40,4 @@ s|\.gdbinit|gdb.ini|g
/\$]\*) ac_rel_source=/s,\[/\$\]\*,&|[A-z]:/*,
/ac_file_inputs=/s,\( -e "s%\^%\$ac_given_srcdir/%"\)\( -e "s%:% $ac_given_srcdir/%g"\),\2\1,
/^[ ]*if test "x`echo /s,sed 's@/,sed -e 's@^[A-z]:@@' -e 's@/,
+/^ *ac_config_headers=/s, config.h", config.h:config.h-in",
diff --git a/gdb/config/djgpp/djconfig.sh b/gdb/config/djgpp/djconfig.sh
index 23be0d5fdad..c79dbfb4e13 100644
--- a/gdb/config/djgpp/djconfig.sh
+++ b/gdb/config/djgpp/djconfig.sh
@@ -5,7 +5,7 @@
# configuring other GNU programs for DJGPP.
#
#=====================================================================
-# Copyright 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Copyright 1997,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
#
# Originally written by Robert Hoehne, revised by Eli Zaretskii.
# This file is part of GDB.
@@ -52,9 +52,21 @@ fi
# Make sure they don't have some file names mangled by untarring.
echo -n "Checking the unpacked distribution..."
if ( ! test -f ${srcdir}/intl/po2tblsed.in || \
- ! test -d ${srcdir}/gdb/testsuite/gdb.cxx || \
+ ! test -f ${srcdir}/gdb/ChangeLog.002 || \
! test -f ${srcdir}/readline/config.h-in ) ; then
+ if ( ! test -f ${srcdir}/intl/po2tblsed.in ) ; then
+ notfound=${srcdir}/intl/po2tblsed.in
+ else
+ if ( ! test -d ${srcdir}/gdb/testsuite/cxx) ; then
+ notfound=${srcdir}/gdb/ChangeLog.002
+ else
+ if ( ! test -f ${srcdir}/readline/config.h-in ) ; then
+ notfound=${srcdir}/readline/config.h-in
+ fi
+ fi
+ fi
echo " FAILED."
+ echo "(File $notfound was not found.)"
echo ""
echo "You MUST unpack the sources with the DJTAR command, like this:"
echo ""
@@ -62,6 +74,7 @@ if ( ! test -f ${srcdir}/intl/po2tblsed.in || \
echo ""
echo "where X.YZ is the GDB version, and fnchange.lst can be found"
echo "in the gdb/config/djgpp/ directory in the GDB distribution."
+ echo ""
echo "configure FAILED!"
exit 1
else
diff --git a/gdb/config/djgpp/fnchange.lst b/gdb/config/djgpp/fnchange.lst
index 61d9014245a..88569db874e 100644
--- a/gdb/config/djgpp/fnchange.lst
+++ b/gdb/config/djgpp/fnchange.lst
@@ -1,8 +1,11 @@
-@V@/bfd/ChangeLog-0001 @V@/bfd/ChangeLog.0001
+@V@/COPYING.LIBGLOSS @V@/COPYING.GLOSS
@V@/bfd/ChangeLog-9193 @V@/bfd/ChangeLog.9193
@V@/bfd/ChangeLog-9495 @V@/bfd/ChangeLog.9495
@V@/bfd/ChangeLog-9697 @V@/bfd/ChangeLog.9697
@V@/bfd/ChangeLog-9899 @V@/bfd/ChangeLog.9899
+@V@/bfd/ChangeLog-0001 @V@/bfd/ChangeLog.0001
+@V@/bfd/ChangeLog-0203 @V@/bfd/ChangeLog.0203
+@V@/bfd/doc/ChangeLog-9103 @V@/bfd/ChangeLog.9103
@V@/bfd/coff-tic30.c @V@/bfd/cofftic30.c
@V@/bfd/coff-tic4x.c @V@/bfd/cofftic40.c
@V@/bfd/coff-tic54x.c @V@/bfd/cofftic54x.c
@@ -18,13 +21,13 @@
@V@/bfd/elf32-i386.c @V@/bfd/e32i86.c
@V@/bfd/elf32-m68hc11.c @V@/bfd/em68hc11.c
@V@/bfd/elf32-m68hc12.c @V@/bfd/em68hc12.c
+@V@/bfd/elf32-m68hc1x.c @V@/bfd/em68hc1x.c
@V@/bfd/elf32-m68k.c @V@/bfd/em68k.c
@V@/bfd/elf32-ppc.c @V@/bfd/e32ppc.c
@V@/bfd/elf32-sh.c @V@/bfd/e32sh.c
@V@/bfd/elf32-sh64.c @V@/bfd/e32sh64.c
@V@/bfd/elf64-alpha.c @V@/bfd/e64alphf.c
@V@/bfd/elf64-sh64.c @V@/bfd/e64sh64.c
-@V@/bfd/po/.cvsignore @V@/bfd/po/_cvsignore
@V@/dejagnu/baseboards/mn10200-cygmon.exp @V@/dejagnu/baseboards/mn10200cygmon.exp
@V@/dejagnu/baseboards/mn10200-sim.exp @V@/dejagnu/baseboards/mn10200sim.exp
@V@/dejagnu/baseboards/mn10300-cygmon.exp @V@/dejagnu/baseboards/mn10300cygmon.exp
@@ -36,7 +39,6 @@
@V@/dejagnu/baseboards/sparclite-sim-le.exp @V@/dejagnu/baseboards/sl-sim-le.exp
@V@/dejagnu/baseboards/sparclite-sim.exp @V@/dejagnu/baseboards/sl-sim.exp
@V@/dejagnu/contrib/test-g++ @V@/dejagnu/contrib/test-gxx
-@V@/dejagnu/doc/.cvsignore @V@/dejagnu/doc/_cvsignore
@V@/dejagnu/example/calc/calc.h.in @V@/dejagnu/example/calc/calc.h-in
@V@/expect/Dbg_cf.h.in @V@/expect/Dbg_cf.h-in
@V@/expect/example/beer.exp.out @V@/expect/example/beer_exp.out
@@ -60,6 +62,7 @@
@V@/gdb/ChangeLog-2000 @V@/gdb/ChangeLog.000
@V@/gdb/ChangeLog-2001 @V@/gdb/ChangeLog.001
@V@/gdb/ChangeLog-2002 @V@/gdb/ChangeLog.002
+@V@/gdb/ChangeLog-2003 @V@/gdb/ChangeLog.003
@V@/gdb/ChangeLog-3.x @V@/gdb/ChangeLog.3-x
@V@/gdb/ada-exp.tab.c @V@/gdb/ada-exp_tab.c
@V@/gdb/amd64fbsd-nat.c @V@/gdb/a64fb-nat.c
@@ -79,6 +82,7 @@
@V@/gdb/config/alpha/alpha-osf3.mh @V@/gdb/config/alpha/alphosf3.mh
@V@/gdb/config/alpha/tm-alphalinux.h @V@/gdb/config/alpha/tm-alplinux.h
@V@/gdb/config/alpha/xm-alphalinux.h @V@/gdb/config/alpha/xm-alplinux.h
+@V@/gdb/config/alpha/xm-alphaosf.h @V@/gdb/config/alpha/xm-alposf.h
@V@/gdb/config/i386/nm-i386sco4.h @V@/gdb/config/i386/nm-sco4.h
@V@/gdb/config/i386/nm-i386sco5.h @V@/gdb/config/i386/nm-sco5.h
@V@/gdb/config/i386/nm-i386sol2.h @V@/gdb/config/i386/nm-sol2.h
@@ -89,13 +93,18 @@
@V@/gdb/config/m88k/xm-delta88v4.h @V@/gdb/config/m88k/xm-d88v4.h
@V@/gdb/config/mips/tm-linux.h @V@/gdb/config/mips/tm-lx.h
@V@/gdb/config/pa/nm-hppah11.h @V@/gdb/config/pa/nm-hppa11.h
-@V@/gdb/config/powerpc/tm-ppcle-sim.h @V@/gdb/config/powerpc/tm-ppcl-sim.h
+@V@/gdb/config/powerpc/tm-ppcle-sim.h @V@/gdb/config/powerpc/tm-ppclsim.h
+@V@/gdb/config/powerpc/tm-ppcle-eabi.h @V@/gdb/config/powerpc/tm-ppcleabi.h
@V@/gdb/config/rs6000/nm-rs6000ly.h @V@/gdb/config/rs6000/nm-rs6kly.h
@V@/gdb/config/rs6000/tm-rs6000.h @V@/gdb/config/rs6000/tm-rs6k.h
@V@/gdb/config/rs6000/tm-rs6000ly.h @V@/gdb/config/rs6000/tm-rs6kly.h
+@V@/gdb/config/rs6000/tm-rs6000-aix4.h @V@/gdb/config/rs6000/tm-rs6kaix4.h
@V@/gdb/config/sparc/tm-sparclynx.h @V@/gdb/config/sparc/tm-splynx.h
@V@/gdb/config/vax/xm-vaxult2.h @V@/gdb/config/vax/xm-vaxut2.h
@V@/gdb/f-exp.tab.c @V@/gdb/f-exp_tab.c
+@V@/gdb/gdbtk/ChangeLog-2001 @V@/gdb/gdbtk/ChangeLog.001
+@V@/gdb/gdbtk/ChangeLog-2002 @V@/gdb/gdbtk/ChangeLog.002
+@V@/gdb/gdbtk/ChangeLog-2003 @V@/gdb/gdbtk/ChangeLog.003
@V@/gdb/gdbtk/generic/ChangeLog-1997 @V@/gdb/gdbtk/generic/ChangeLog.97
@V@/gdb/gdbtk/generic/ChangeLog-1998 @V@/gdb/gdbtk/generic/ChangeLog.98
@V@/gdb/gdbtk/generic/ChangeLog-1999 @V@/gdb/gdbtk/generic/ChangeLog.99
@@ -105,21 +114,25 @@
@V@/gdb/gdbtk/library/ChangeLog-1998 @V@/gdb/gdbtk/library/ChangeLog.98
@V@/gdb/gdbtk/library/ChangeLog-1999 @V@/gdb/gdbtk/library/ChangeLog.99
@V@/gdb/gdbtk/library/ChangeLog-2000 @V@/gdb/gdbtk/library/ChangeLog.000
+@V@/gdb/gdbtk/plugins/intel-pentium/intel-pentium.tcl.in @V@/gdb/gdbtk/plugins/intel-pentium/intel-pentium.t-in
+@V@/gdb/gdbtk/plugins/rhabout/rhabout.tcl.in @V@/gdb/gdbtk/plugins/rhabout/rhabout.t-in
@V@/gdb/i386-interix-nat.c @V@/gdb/i386ix-nat.c
@V@/gdb/i386-interix-tdep.c @V@/gdb/i386ix-tdep.c
-@V@/gdb/i386-linux-tdep.c @V@/gdb/i386linux-tdep.c
+@V@/gdb/i386-linux-tdep.c @V@/gdb/i386lx-tdep.c
+@V@/gdb/i386-linux-nat.c @V@/gdb/i386lx-nat.c
@V@/gdb/i386bsd-nat.c @V@/gdb/i3bsd-nat.c
@V@/gdb/i386bsd-tdep.c @V@/gdb/i3bsd-tdep.c
@V@/gdb/i386fbsd-nat.c @V@/gdb/i3fbsd-nat.c
@V@/gdb/i386fbsd-tdep.c @V@/gdb/i3fbsd-tdep.c
@V@/gdb/i386gnu-nat.c @V@/gdb/i3gnu-nat.c
@V@/gdb/i386gnu-tdep.c @V@/gdb/i3gnu-tdep.c
-@V@/gdb/i386nbsd-nat.c @V@/gdb/i3nbsd-nat.c
@V@/gdb/i386nbsd-tdep.c @V@/gdb/i3nbsd-tdep.c
@V@/gdb/i386obsd-nat.c @V@/gdb/i3obsd-nat.c
@V@/gdb/i386obsd-tdep.c @V@/gdb/i3obsd-tdep.c
-@V@/gdb/ia64-aix-nat.c @V@/gdb/ia64aix-nat.c
-@V@/gdb/ia64-linux-nat.c @V@/gdb/ia64linux-nat.c
+@V@/gdb/ia64-aix-nat.c @V@/gdb/ia64ax-nat.c
+@V@/gdb/ia64-aix-tdep.c @V@/gdb/ia64ax-tdep.c
+@V@/gdb/ia64-linux-nat.c @V@/gdb/ia64lx-nat.c
+@V@/gdb/ia64-linux-nat.c @V@/gdb/ia64lx-tdep.c
@V@/gdb/jv-exp.tab.c @V@/gdb/jv-exp_tab.c
@V@/gdb/m2-exp.tab.c @V@/gdb/m2-exp_tab.c
@V@/gdb/m68klinux-nat.c @V@/gdb/m68kl-nat.c
@@ -135,7 +148,8 @@
@V@/gdb/objc-exp.tab.c @V@/gdb/objc-exp_tab.c
@V@/gdb/osf-share/cma_stack_int.h @V@/gdb/osf-share/cma_stkint.h
@V@/gdb/p-exp.tab.c @V@/gdb/p-exp_tab.c
-@V@/gdb/ppc-linux-tdep.c @V@/gdb/ppc-linx-tdep.c
+@V@/gdb/ppc-linux-tdep.c @V@/gdb/ppc-lx-tdep.c
+@V@/gdb/ppc-linux-nat.c @V@/gdb/ppc-lx-nat.c
@V@/gdb/ppcnbsd-nat.c @V@/gdb/ppcnb-nat.c
@V@/gdb/ppcnbsd-tdep.c @V@/gdb/ppcnb-tdep.c
@V@/gdb/regformats/reg-i386-linux.dat @V@/gdb/regformats/r-i386-lnx.dat
@@ -154,8 +168,17 @@
@V@/gdb/remote-vxsparc.c @V@/gdb/rmt-vxsparc.c
@V@/gdb/sparc64fbsd-nat.c @V@/gdb/sp64fb-nat.c
@V@/gdb/sparc64fbsd-tdep.c @V@/gdb/sp64fb-tdep.c
+@V@/gdb/sparc64nbsd-nat.c @V@/gdb/sp64nb-nat.c
+@V@/gdb/sparc64nbsd-tdep.c @V@/gdb/sp64nb-tdep.c
+@V@/gdb/sparc64-linux-nat.c @V@/gdb/sp64lx-nat.c
+@V@/gdb/sparc64-linux-tdep.c @V@/gdb/sp64lx-tdep.c
+@V@/gdb/sparc64-nat.c @V@/gdb/sp64-nat.c
+@V@/gdb/sparc64-tdep.c @V@/gdb/sp64-tdep.c
+@V@/gdb/sparc64-sol2-tdep.c @V@/gdb/sp64s2-tdep.c
@V@/gdb/sparcnbsd-nat.c @V@/gdb/spnb-nat.c
@V@/gdb/sparcnbsd-tdep.c @V@/gdb/spnb-tdep.c
+@V@/gdb/sparc-sol2-nat.c @V@/gdb/spsol2-nat.c
+@V@/gdb/sparc-sol2-tdep.c @V@/gdb/spsol2-tdep.c
@V@/gdb/testsuite/.gdbinit @V@/gdb/testsuite/gdb.ini
@V@/gdb/testsuite/gdb.arch/altivec-abi.c @V@/gdb/testsuite/gdb.arch/av-abi.c
@V@/gdb/testsuite/gdb.arch/altivec-abi.exp @V@/gdb/testsuite/gdb.arch/av-abi.exp
@@ -164,7 +187,37 @@
@V@/gdb/testsuite/gdb.base/coremaker2.c @V@/gdb/testsuite/gdb.base/core2maker.c
@V@/gdb/testsuite/gdb.cp/m-static1.cc @V@/gdb/testsuite/gdb.cp/m-stat1.cc
@V@/gdb/testsuite/gdb.cp/namespace1.cc @V@/gdb/testsuite/gdb.cp/namesp1.cc
+@V@/gdb/testsuite/gdb.gdbtk/ChangeLog @V@/gdb/testsuite/gdb.tk/ChangeLog
+@V@/gdb/testsuite/gdb.gdbtk/Makefile.in @V@/gdb/testsuite/gdb.tk/Makefile.in
+@V@/gdb/testsuite/gdb.gdbtk/browser.exp @V@/gdb/testsuite/gdb.tk/browser.exp
+@V@/gdb/testsuite/gdb.gdbtk/browser.test @V@/gdb/testsuite/gdb.tk/browser.test
+@V@/gdb/testsuite/gdb.gdbtk/c_variable.c @V@/gdb/testsuite/gdb.tk/c_variable.c
+@V@/gdb/testsuite/gdb.gdbtk/c_variable.exp @V@/gdb/testsuite/gdb.tk/c_variable.exp
+@V@/gdb/testsuite/gdb.gdbtk/c_variable.test @V@/gdb/testsuite/gdb.tk/c_variable.test
+@V@/gdb/testsuite/gdb.gdbtk/configure @V@/gdb/testsuite/gdb.tk/configure
+@V@/gdb/testsuite/gdb.gdbtk/configure.in @V@/gdb/testsuite/gdb.tk/configure.in
+@V@/gdb/testsuite/gdb.gdbtk/console.exp @V@/gdb/testsuite/gdb.tk/console.exp
+@V@/gdb/testsuite/gdb.gdbtk/console.test @V@/gdb/testsuite/gdb.tk/console.test
+@V@/gdb/testsuite/gdb.gdbtk/cpp_variable.cc @V@/gdb/testsuite/gdb.tk/cpp_variable.cc
+@V@/gdb/testsuite/gdb.gdbtk/cpp_variable.exp @V@/gdb/testsuite/gdb.tk/cpp_variable.exp
+@V@/gdb/testsuite/gdb.gdbtk/cpp_variable.h @V@/gdb/testsuite/gdb.tk/cpp_variable.h
+@V@/gdb/testsuite/gdb.gdbtk/cpp_variable.test @V@/gdb/testsuite/gdb.tk/cpp_variable.test
+@V@/gdb/testsuite/gdb.gdbtk/defs @V@/gdb/testsuite/gdb.tk/defs
+@V@/gdb/testsuite/gdb.gdbtk/list0.c @V@/gdb/testsuite/gdb.tk/list0.c
+@V@/gdb/testsuite/gdb.gdbtk/list0.h @V@/gdb/testsuite/gdb.tk/list0.h
+@V@/gdb/testsuite/gdb.gdbtk/list1.c @V@/gdb/testsuite/gdb.tk/list1.c
+@V@/gdb/testsuite/gdb.gdbtk/README @V@/gdb/testsuite/gdb.tk/README
+@V@/gdb/testsuite/gdb.gdbtk/simple.c @V@/gdb/testsuite/gdb.tk/simple.c
+@V@/gdb/testsuite/gdb.gdbtk/srcwin.exp @V@/gdb/testsuite/gdb.tk/srcwin.exp
+@V@/gdb/testsuite/gdb.gdbtk/srcwin.test @V@/gdb/testsuite/gdb.tk/srcwin.test
+@V@/gdb/testsuite/gdb.gdbtk/srcwin2.test @V@/gdb/testsuite/gdb.tk/srcwin2.test
+@V@/gdb/testsuite/gdb.gdbtk/srcwin3.test @V@/gdb/testsuite/gdb.tk/srcwin3.test
+@V@/gdb/testsuite/gdb.gdbtk/stack1.c @V@/gdb/testsuite/gdb.tk/stack1.c
+@V@/gdb/testsuite/gdb.gdbtk/stack2.c @V@/gdb/testsuite/gdb.tk/stack2.c
+@V@/gdb/testsuite/gdb.gdbtk/windows.exp @V@/gdb/testsuite/gdb.tk/windows.exp
+@V@/gdb/testsuite/gdb.gdbtk/windows.test @V@/gdb/testsuite/gdb.tk/windows.test
@V@/gdb/testsuite/gdb.mi/mi-var-cmd.exp @V@/gdb/testsuite/gdb.mi/mi-varcmd.exp
+@V@/gdb/testsuite/gdb.mi/mi-var-child.exp @V@/gdb/testsuite/gdb.mi/mi-varchild.exp
@V@/gdb/testsuite/gdb.mi/mi1-var-block.exp @V@/gdb/testsuite/gdb.mi/mi1varblock.exp
@V@/gdb/testsuite/gdb.mi/mi1-var-child.exp @V@/gdb/testsuite/gdb.mi/mi1varchild.exp
@V@/gdb/testsuite/gdb.mi/mi1-var-cmd.exp @V@/gdb/testsuite/gdb.mi/mi1varcmd.exp
@@ -173,10 +226,12 @@
@V@/gdb/testsuite/gdb.mi/mi2-var-child.exp @V@/gdb/testsuite/gdb.mi/mi2varchild.exp
@V@/gdb/testsuite/gdb.mi/mi2-var-cmd.exp @V@/gdb/testsuite/gdb.mi/mi2varcmd.exp
@V@/gdb/testsuite/gdb.mi/mi2-var-display.exp @V@/gdb/testsuite/gdb.mi/mi2vardisplay.exp
-@V@/gdb/tui/tuiSourceWin.c @V@/gdb/tui/tuiWinSource.c
-@V@/gdb/tui/tuiSourceWin.h @V@/gdb/tui/tuiWinSource.h
@V@/gdb/x86-64-linux-tdep.c @V@/gdb/x8664-ltdep.c
@V@/gdb/x86-64-linux-nat.c @V@/gdb/x8664-lnat.c
+@V@/include/ChangeLog-9103 @V@/include/ChangeLog.9103
+@V@/include/coff/ChangeLog-9103 @V@/include/coff/ChangeLog.9103
+@V@/include/elf/ChangeLog-9103 @V@/include/elf/ChangeLog.9103
+@V@/include/opcode/ChangeLog-9103 @V@/include/opcode/ChangeLog.9103
@V@/include/xtensa-isa-internal.h @V@/include/xt-internal.h
@V@/include/xtensa-isa.h @V@/include/xt-isa.h
@V@/intl/intlh.inst.in @V@/intl/intlh_inst.in
@@ -193,6 +248,8 @@
@V@/libgui/src/tkWinPrintText.c @V@/libgui/src/tkWPrtText.c
@V@/opcodes/ChangeLog-9297 @V@/opcodes/ChangeLog.9297
@V@/opcodes/ChangeLog-9899 @V@/opcodes/ChangeLog.9899
+@V@/opcodes/ChangeLog-0001 @V@/opcodes/ChangeLog.0001
+@V@/opcodes/ChangeLog-0203 @V@/opcodes/ChangeLog.0203
@V@/opcodes/ia64-opc-a.c @V@/opcodes/ia64opca.c
@V@/opcodes/ia64-opc-b.c @V@/opcodes/ia64opcb.c
@V@/opcodes/ia64-opc-d.c @V@/opcodes/ia64opcd.c
@@ -205,19 +262,21 @@
@V@/opcodes/iq2000-dis.c @V@/opcodes/iq2000dis.c
@V@/opcodes/m68hc11-dis.c @V@/opcodes/m68hc11dis.c
@V@/opcodes/m68hc11-opc.c @V@/opcodes/m68hc11opc.c
-@V@/opcodes/openris-dis.c @V@/opcodes/orisc-dis.c
@V@/opcodes/openrisc-asm.c @V@/opcodes/orisc-asm.c
@V@/opcodes/openrisc-desc.c @V@/opcodes/orisc-desc.c
+@V@/opcodes/openrisc-dis.c @V@/opcodes/orisc-dis.c
@V@/opcodes/openrisc-ibld.c @V@/opcodes/orisc-ibld.c
@V@/opcodes/openrisc-opc.c @V@/opcodes/orisc-opc.c
@V@/opcodes/openrisc-opc.h @V@/opcodes/orisc-opc.h
-@V@/opcodes/po/.cvsignore @V@/opcodes/po/_cvsignore
+@V@/opcodes/openrisc-desc.h @V@/opcodes/orisc-desc.h
@V@/readline/config.h.bot @V@/readline/config.h-bot
@V@/readline/config.h.in @V@/readline/config.h-in
@V@/sim/frv/profile-fr400.c @V@/sim/frv/fr400-profile.c
@V@/sim/frv/profile-fr400.h @V@/sim/frv/fr400-profile.h
@V@/sim/frv/profile-fr500.c @V@/sim/frv/fr500-profile.c
@V@/sim/frv/profile-fr500.h @V@/sim/frv/fr500-profile.h
+@V@/sim/frv/profile-fr550.c @V@/sim/frv/fr550-profile.c
+@V@/sim/frv/profile-fr550.h @V@/sim/frv/fr550-profile.h
@V@/sim/m68hc11/dv-m68hc11eepr.c @V@/sim/m68hc11/dv-eepr.c
@V@/sim/m68hc11/dv-m68hc11sio.c @V@/sim/m68hc11/dv-sio.c
@V@/sim/m68hc11/dv-m68hc11spi.c @V@/sim/m68hc11/dv-spi.c
@@ -237,6 +296,8 @@
@V@/sim/ppc/idecode_expression.h @V@/sim/ppc/idec_expression.h
@V@/sim/ppc/idecode_fields.h @V@/sim/ppc/idec_fields.h
@V@/sim/ppc/sim-endian-n.h @V@/sim/ppc/sim-endn.h
+@V@/sim/sh64/sem-compact-switch.c @V@/sim/sh64/sem-cswitch.c
+@V@/sim/sh64/sem-media-switch.c @V@/sim/sh64/sem-mswitch.c
@V@/sim/testsuite/d10v-elf/t-ae-ld-d.s @V@/sim/testsuite/d10v-elf/t-ld-d.s
@V@/sim/testsuite/d10v-elf/t-ae-ld-i.s @V@/sim/testsuite/d10v-elf/t-ld-i.s
@V@/sim/testsuite/d10v-elf/t-ae-ld-id.s @V@/sim/testsuite/d10v-elf/t-ld-id.s
@@ -270,6 +331,10 @@
@V@/sim/testsuite/sim/frv/interrupts/data_store_error-fr550.cgs @V@/sim/testsuite/sim/frv/interrupts/fr550-data_store_error.cgs
@V@/sim/testsuite/sim/frv/interrupts/fp_exception-fr550.cgs @V@/sim/testsuite/sim/frv/interrupts/fr550-fp_exception.cgs
@V@/sim/testsuite/sim/frv/interrupts/insn_access_error-fr550.cgs @V@/sim/testsuite/sim/frv/interrupts/fr550-insn_access_error.cgs
+@V@/sim/testsuite/sim/sh64/compact/ldsl-mach.cgs @V@/sim/testsuite/sim/sh64/compact/mach-ldsl.cgs
+@V@/sim/testsuite/sim/sh64/compact/ldsl-macl.cgs @V@/sim/testsuite/sim/sh64/compact/macl-ldsl.cgs
+@V@/sim/testsuite/sim/sh64/compact/stsl-mach.cgs @V@/sim/testsuite/sim/sh64/compact/mach-stsl.cgs
+@V@/sim/testsuite/sim/sh64/compact/stsl-macl.cgs @V@/sim/testsuite/sim/sh64/compact/macl-stsl.cgs
@V@/tcl/cygwin/tclConfig.sh.in @V@/tcl/cygwin/tclConfig.sh-in
@V@/tcl/doc/ExprLongObj.3 @V@/tcl/doc/ExprLObj.3
@V@/tcl/mac/tclMacBOAAppInit.c @V@/tcl/mac/tclBOAAppInit.c
diff --git a/gdb/config/i386/go32.mh b/gdb/config/i386/go32.mh
index 846896bffc7..0de5a9fdef9 100644
--- a/gdb/config/i386/go32.mh
+++ b/gdb/config/i386/go32.mh
@@ -1,8 +1,5 @@
# Host: Intel x86 running DJGPP
-# we don't need mmalloc on DJGPP
-MH_CFLAGS= -DNO_MMALLOC
-MMALLOC=
-MMALLOC_CFLAGS=
+MH_CFLAGS=
XM_FILE= xm-go32.h
diff --git a/gdb/config/i386/i386sol2.mh b/gdb/config/i386/i386sol2.mh
index 931cc132bbb..1245ca7a4bd 100644
--- a/gdb/config/i386/i386sol2.mh
+++ b/gdb/config/i386/i386sol2.mh
@@ -1,9 +1,8 @@
# Host: Intel 386 running Solaris 2 (SVR4)
-XM_FILE= xm-i386v4.h
-XM_CLIBS= -lsocket -lnsl
+XM_FILE= xm-i386.h
NAT_FILE= nm-i386sol2.h
-NATDEPFILES= core-regset.o fork-child.o i386v4-nat.o corelow.o \
+NATDEPFILES= fork-child.o i386v4-nat.o \
procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o gcore.o \
solib.o solib-svr4.o solib-legacy.o
diff --git a/gdb/config/i386/i386sol2.mt b/gdb/config/i386/i386sol2.mt
index 93c2d783538..863f61500d7 100644
--- a/gdb/config/i386/i386sol2.mt
+++ b/gdb/config/i386/i386sol2.mt
@@ -1,3 +1,3 @@
# Target: Intel 386 running Solaris 2 (SVR4)
-TDEPFILES= i386-tdep.o i387-tdep.o i386-sol2-tdep.o
+TDEPFILES= i386-tdep.o i387-tdep.o i386-sol2-tdep.o corelow.o
TM_FILE= tm-i386sol2.h
diff --git a/gdb/config/i386/interix.mh b/gdb/config/i386/interix.mh
index 23311d615fa..c294dd5e808 100644
--- a/gdb/config/i386/interix.mh
+++ b/gdb/config/i386/interix.mh
@@ -4,6 +4,3 @@ NATDEPFILES= corelow.o core-regset.o fork-child.o i386-interix-nat.o \
procfs.o proc-api.o proc-events.o proc-flags.o proc-why.o
NAT_FILE= nm-interix.h
XM_FILE= xm-interix.h
-# The below may be temporary; mmalloc relies on sbrk() at the moment
-MMALLOC=
-MMALLOC_CFLAGS=-DNO_MMALLOC
diff --git a/gdb/config/i386/nm-i386.h b/gdb/config/i386/nm-i386.h
index 97a70539b0f..88eacc8852b 100644
--- a/gdb/config/i386/nm-i386.h
+++ b/gdb/config/i386/nm-i386.h
@@ -1,5 +1,5 @@
/* Native macro definitions for GDB on an Intel i[3456]86.
- Copyright 2001 Free Software Foundation, Inc.
+ Copyright 2001, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -113,8 +113,6 @@ extern int i386_remove_hw_breakpoint (CORE_ADDR addr, void *shadow);
#define target_remove_hw_breakpoint(addr, shadow) \
i386_remove_hw_breakpoint (addr, shadow)
-#define DECR_PC_AFTER_HW_BREAK 0
-
/* child_post_startup_inferior used to
reset all debug registers by calling i386_cleanup_dregs (). */
#define CHILD_POST_STARTUP_INFERIOR
diff --git a/gdb/config/ia64/nm-linux.h b/gdb/config/ia64/nm-linux.h
index 01c980748e2..5e9df60021c 100644
--- a/gdb/config/ia64/nm-linux.h
+++ b/gdb/config/ia64/nm-linux.h
@@ -22,6 +22,8 @@
#ifndef NM_LINUX_H
#define NM_LINUX_H
+struct target_ops;
+
#include "config/nm-linux.h"
/* Note: It seems likely that we'll have to eventually define
diff --git a/gdb/config/pa/tm-hppah.h b/gdb/config/pa/tm-hppah.h
index 325af819536..0d0dde3b703 100644
--- a/gdb/config/pa/tm-hppah.h
+++ b/gdb/config/pa/tm-hppah.h
@@ -1,5 +1,6 @@
/* Parameters for execution on an HP PA-RISC machine, running HPUX, for GDB.
- Copyright 1991, 1992, 1995, 1998 Free Software Foundation, Inc.
+ Copyright 1991, 1992, 1995, 1998, 2002, 2003, 2004
+ Free Software Foundation, Inc.
Contributed by the Center for Software Science at the
University of Utah (pa-gdb-bugs@cs.utah.edu).
@@ -35,17 +36,17 @@ struct frame_info;
#include "somsolib.h"
#endif
-extern void hppa_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi,
+extern void hppa32_hpux_frame_saved_pc_in_sigtramp (struct frame_info *fi,
CORE_ADDR *tmp);
#define FRAME_SAVED_PC_IN_SIGTRAMP(FRAME, TMP) \
hppa32_hpux_frame_saved_pc_in_sigtramp (FRAME, TMP)
-extern void hppa_hpux_frame_base_before_sigtramp (struct frame_info *fi,
+extern void hppa32_hpux_frame_base_before_sigtramp (struct frame_info *fi,
CORE_ADDR *tmp);
#define FRAME_BASE_BEFORE_SIGTRAMP(FRAME, TMP) \
hppa32_hpux_frame_base_before_sigtramp (FRAME, TMP)
-extern void hppa_hpux_frame_find_saved_regs_in_sigtramp
+extern void hppa32_hpux_frame_find_saved_regs_in_sigtramp
(struct frame_info *fi, CORE_ADDR *fsr);
#define FRAME_FIND_SAVED_REGS_IN_SIGTRAMP(FRAME, FSR) \
hppa32_hpux_frame_find_saved_regs_in_sigtramp (FRAME, FSR)
diff --git a/gdb/config/powerpc/xm-linux.h b/gdb/config/powerpc/xm-linux.h
index c8a029d1010..73e7c406445 100644
--- a/gdb/config/powerpc/xm-linux.h
+++ b/gdb/config/powerpc/xm-linux.h
@@ -25,14 +25,4 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
to get the offset in the core file of the register values. */
#define KERNEL_U_ADDR 0x0
-/* If you expect to use the mmalloc package to obtain mapped symbol files,
- for now you have to specify some parameters that determine how gdb places
- the mappings in it's address space. See the comments in map_to_address()
- for details. This is expected to only be a short term solution. Yes it
- is a kludge.
- FIXME: Make this more automatic. */
-
-#define MMAP_BASE_ADDRESS 0x20000000 /* First mapping here */
-#define MMAP_INCREMENT 0x01000000 /* Increment to next mapping */
-
#endif /* #ifndef XM_LINUX_H */
diff --git a/gdb/config/sparc/fbsd.mh b/gdb/config/sparc/fbsd.mh
index 27942f86e6a..fb491a55c47 100644
--- a/gdb/config/sparc/fbsd.mh
+++ b/gdb/config/sparc/fbsd.mh
@@ -1,5 +1,5 @@
# Host: FreeBSD/sparc64
-NATDEPFILES= sparc64fbsd-nat.o sparcbsd-nat.o \
- corelow.o fork-child.o infptrace.o inftarg.o \
+NATDEPFILES= sparc64fbsd-nat.o sparc64-nat.o sparc-nat.o \
+ fork-child.o infptrace.o inftarg.o \
solib.o solib-svr4.o solib-legacy.o
NAT_FILE= nm-fbsd.h
diff --git a/gdb/config/sparc/fbsd.mt b/gdb/config/sparc/fbsd.mt
index 20c7f1ce27a..8e4dead7add 100644
--- a/gdb/config/sparc/fbsd.mt
+++ b/gdb/config/sparc/fbsd.mt
@@ -1,3 +1,3 @@
# Target: FreeBSD/sparc64
-TDEPFILES= sparc64-tdep.o sparc64fbsd-tdep.o
+TDEPFILES= sparc-tdep.o sparc64-tdep.o sparc64fbsd-tdep.o corelow.o
TM_FILE= tm-fbsd.h
diff --git a/gdb/config/sparc/linux.mh b/gdb/config/sparc/linux.mh
index f36dbb1ae34..ed68cc78aea 100644
--- a/gdb/config/sparc/linux.mh
+++ b/gdb/config/sparc/linux.mh
@@ -1,14 +1,11 @@
-# Host: Sparcstation, running GNU/Linux.
-
-XM_FILE= xm-linux.h
-
+# Host: GNU/Linux SPARC
NAT_FILE= nm-linux.h
-NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o sparc-nat.o \
- proc-service.o thread-db.o lin-lwp.o sparc-linux-nat.o \
+NATDEPFILES= sparc-nat.o sparc-sol2-nat.o \
+ corelow.o core-regset.o fork-child.o \
+ infptrace.o inftarg.o \
+ proc-service.o thread-db.o lin-lwp.o \
linux-proc.o gcore.o linux-nat.o
# The dynamically loaded libthread_db needs access to symbols in the
# gdb executable.
LOADLIBES = -ldl -rdynamic
-
-HOST_IPC=-DBSD_IPC
diff --git a/gdb/config/sparc/linux.mt b/gdb/config/sparc/linux.mt
index d6cf773a8ee..e053f302c4f 100644
--- a/gdb/config/sparc/linux.mt
+++ b/gdb/config/sparc/linux.mt
@@ -1,3 +1,4 @@
-# Target: Sparcstation, running Linux
-TDEPFILES= sparc-tdep.o solib.o solib-svr4.o solib-legacy.o
+# Target: GNU/Linux SPARC
+TDEPFILES= sparc-tdep.o sparc-sol2-tdep.o sparc-linux-tdep.o \
+ solib.o solib-svr4.o solib-legacy.o
TM_FILE= tm-linux.h
diff --git a/gdb/config/sparc/nbsd.mt b/gdb/config/sparc/nbsd.mt
index b04dd42fabb..25dbefff703 100644
--- a/gdb/config/sparc/nbsd.mt
+++ b/gdb/config/sparc/nbsd.mt
@@ -1,4 +1,4 @@
-# Target: SPARC running NetBSD
-TDEPFILES= sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o corelow.o solib.o \
- solib-svr4.o
+# Target: NetBSD/sparc
+TDEPFILES= sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o \
+ corelow.o solib.o solib-svr4.o
TM_FILE= tm-nbsd.h
diff --git a/gdb/config/sparc/nbsd64.mh b/gdb/config/sparc/nbsd64.mh
index eb54e489eb8..e8ac58bda2b 100644
--- a/gdb/config/sparc/nbsd64.mh
+++ b/gdb/config/sparc/nbsd64.mh
@@ -1,3 +1,4 @@
-# Host: UltraSPARC running NetBSD
-NATDEPFILES= fork-child.o infptrace.o inftarg.o sparc64nbsd-nat.o
+# Host: NetBSD/sparc64
+NATDEPFILES= sparc64nbsd-nat.o sparc-nat.o \
+ fork-child.o infptrace.o inftarg.o
NAT_FILE= nm-nbsd.h
diff --git a/gdb/config/sparc/nbsd64.mt b/gdb/config/sparc/nbsd64.mt
index 93b8f7841d4..4a1b13b9bb6 100644
--- a/gdb/config/sparc/nbsd64.mt
+++ b/gdb/config/sparc/nbsd64.mt
@@ -1,4 +1,5 @@
-# Target: UltraSPARC running NetBSD
-TDEPFILES= sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o corelow.o solib.o \
- solib-svr4.o
-TM_FILE= tm-nbsd64.h
+# Target: NetBSD/sparc64
+TDEPFILES= sparc64-tdep.o sparc64nbsd-tdep.o \
+ sparc-tdep.o sparcnbsd-tdep.o nbsd-tdep.o \
+ corelow.o solib.o solib-svr4.o
+TM_FILE= tm-nbsd.h
diff --git a/gdb/config/sparc/nbsdaout.mh b/gdb/config/sparc/nbsdaout.mh
index 45208998124..8944e60e483 100644
--- a/gdb/config/sparc/nbsdaout.mh
+++ b/gdb/config/sparc/nbsdaout.mh
@@ -1,4 +1,4 @@
-# Host: Sun 4 or Sparcstation, running NetBSD
-NATDEPFILES= fork-child.o infptrace.o inftarg.o sparcnbsd-nat.o solib-sunos.o
-XM_FILE= xm-nbsd.h
+# Host: NetBSD/sparc a.out
+NATDEPFILES= sparc-nat.o sparcnbsd-nat.o \
+ fork-child.o infptrace.o inftarg.o solib-sunos.o
NAT_FILE= nm-nbsdaout.h
diff --git a/gdb/config/sparc/nbsdelf.mh b/gdb/config/sparc/nbsdelf.mh
index 1042d91b9dd..45309ecaec0 100644
--- a/gdb/config/sparc/nbsdelf.mh
+++ b/gdb/config/sparc/nbsdelf.mh
@@ -1,4 +1,4 @@
-# Host: Sun 4 or Sparcstation, running NetBSD
-NATDEPFILES= fork-child.o infptrace.o inftarg.o sparcnbsd-nat.o
-XM_FILE= xm-nbsd.h
+# Host: NetBSD/sparc ELF
+NATDEPFILES= sparc-nat.o sparcnbsd-nat.o \
+ fork-child.o infptrace.o inftarg.o
NAT_FILE= nm-nbsd.h
diff --git a/gdb/config/sparc/nm-linux.h b/gdb/config/sparc/nm-linux.h
index a156eba0707..cfab3893ca5 100644
--- a/gdb/config/sparc/nm-linux.h
+++ b/gdb/config/sparc/nm-linux.h
@@ -1,7 +1,7 @@
-/* Macro definitions for running gdb on a Sparc running GNU/Linux.
+/* Native-dependent definitions for GNU/Linux SPARC.
- Copyright 1989, 1992, 1996, 1998, 1999, 2000, 2002 Free Software
- Foundation, Inc.
+ Copyright 1989, 1992, 1996, 1998, 1999, 2000, 2002, 2003
+ Free Software Foundation, Inc.
This file is part of GDB.
@@ -20,13 +20,18 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#include "config/nm-sysv4.h"
+#ifndef NM_LINUX_H
+#define NM_LINUX_H
+
#include "config/nm-linux.h"
-#include "solib.h"
-#define FETCH_INFERIOR_REGISTERS
+/* Type of the third argument to the `ptrace' system call. */
+#define PTRACE_ARG3_TYPE long
-/* Return sizeof user struct to callers in less machine dependent routines */
+/* Type of the fourth argument to the `ptrace' system call. */
+#define PTRACE_XFER_TYPE long
+
+/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */
+#define FETCH_INFERIOR_REGISTERS
-#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size (void);
+#endif /* nm-linux.h */
diff --git a/gdb/config/sparc/nm-nbsd.h b/gdb/config/sparc/nm-nbsd.h
index 7ffd72e9101..089a5acf1dc 100644
--- a/gdb/config/sparc/nm-nbsd.h
+++ b/gdb/config/sparc/nm-nbsd.h
@@ -1,5 +1,6 @@
-/* Native-dependent definitions for Sparc running NetBSD, for GDB.
- Copyright 1986, 1987, 1989, 1992, 1994, 1996, 1999, 2000, 2002
+/* Native-dependent definitions for NetBSD/sparc.
+
+ Copyright 1986, 1987, 1989, 1992, 1994, 1996, 1999, 2000, 2002, 2003
Free Software Foundation, Inc.
This file is part of GDB.
@@ -22,14 +23,7 @@
#ifndef NM_NBSD_H
#define NM_NBSD_H
-#include "regcache.h"
-
-/* Get generic NetBSD native definitions. */
-
+/* Get generic NetBSD native definitions. */
#include "config/nm-nbsd.h"
-/* Before storing, we need to read all the registers. */
-
-#define CHILD_PREPARE_TO_STORE() deprecated_read_register_bytes (0, NULL, DEPRECATED_REGISTER_BYTES)
-
-#endif /* NM_NBSD_H */
+#endif /* nm-nbsd.h */
diff --git a/gdb/config/sparc/nm-nbsdaout.h b/gdb/config/sparc/nm-nbsdaout.h
index 730759153e0..9e463f9b503 100644
--- a/gdb/config/sparc/nm-nbsdaout.h
+++ b/gdb/config/sparc/nm-nbsdaout.h
@@ -1,5 +1,6 @@
-/* Native-dependent definitions for Sparc running NetBSD a.out, for GDB.
- Copyright 1999 Free Software Foundation, Inc.
+/* Native-dependent definitions for NetBSD/sparc a.out.
+
+ Copyright 1999, 2003 Free Software Foundation, Inc.
This file is part of GDB.
@@ -23,8 +24,7 @@
#include "sparc/nm-nbsd.h"
-/* Get generic NetBSD a.out native definitions. */
-
+/* Get generic NetBSD a.out native definitions. */
#include "config/nm-nbsdaout.h"
-#endif /* NM_NBSDAOUT_H */
+#endif /* nm-nbsdaout.h */
diff --git a/gdb/config/sparc/nm-sparclynx.h b/gdb/config/sparc/nm-sparclynx.h
deleted file mode 100644
index a231ba4cce1..00000000000
--- a/gdb/config/sparc/nm-sparclynx.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Native-dependent definitions for Sparc running LynxOS.
- Copyright 1993, 1994 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifndef NM_SPARCLYNX_H
-#define NM_SPARCLYNX_H
-
-#include "config/nm-lynx.h"
-
-#endif /* NM_SPARCLYNX_H */
diff --git a/gdb/config/sparc/nm-sun4os4.h b/gdb/config/sparc/nm-sun4os4.h
deleted file mode 100644
index e77330c51d4..00000000000
--- a/gdb/config/sparc/nm-sun4os4.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Macro definitions for running gdb on a Sun 4 running sunos 4.
- Copyright 1989, 1992, 1996, 2000 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "regcache.h"
-
-/* Do implement the attach and detach commands. */
-
-#define ATTACH_DETACH
-
-/* Override copies of {fetch,store}_inferior_registers in infptrace.c. */
-
-#define FETCH_INFERIOR_REGISTERS
-
-/* Before storing, we need to read all the registers. */
-
-#define CHILD_PREPARE_TO_STORE() deprecated_read_register_bytes (0, NULL, DEPRECATED_REGISTER_BYTES)
-
-/* Return sizeof user struct to callers in less machine dependent routines */
-
-#define KERNEL_U_SIZE kernel_u_size()
-extern int kernel_u_size (void);
-
-/* SunOS 4.x uses nonstandard "char *" as type of third argument to ptrace() */
-
-#define PTRACE_ARG3_TYPE char*
diff --git a/gdb/config/sparc/nm-sun4sol2.h b/gdb/config/sparc/nm-sun4sol2.h
deleted file mode 100644
index 6f37162d7a8..00000000000
--- a/gdb/config/sparc/nm-sun4sol2.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Native-dependent definitions for Sparc running SVR4.
- Copyright 1994, 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "regcache.h"
-
-/* Include the generic SVR4 definitions. */
-
-#include "config/nm-sysv4.h"
-
-/* Before storing, we need to read all the registers. */
-
-#define CHILD_PREPARE_TO_STORE() deprecated_read_register_bytes (0, NULL, DEPRECATED_REGISTER_BYTES)
-
-/* Solaris PSRVADDR support does not seem to include a place for nPC. */
-
-#define PRSVADDR_BROKEN
-
-/* gdb wants to use the prgregset_t interface rather than
- the gregset_t interface, partly because that's what's
- used in core-sol2.c */
-
-#define GDB_GREGSET_T prgregset_t
-#define GDB_FPREGSET_T prfpregset_t
-
-#ifdef NEW_PROC_API /* Solaris 6 and above can do HW watchpoints */
-
-#define TARGET_HAS_HARDWARE_WATCHPOINTS
-
-/* The man page for proc4 on solaris 6 and 7 says that the system
- can support "thousands" of hardware watchpoints, but gives no
- method for finding out how many. So just tell GDB 'yes'. */
-#define TARGET_CAN_USE_HARDWARE_WATCHPOINT(TYPE, CNT, OT) 1
-
-/* When a hardware watchpoint fires off the PC will be left at the
- instruction following the one which caused the watchpoint.
- It will *NOT* be necessary for GDB to step over the watchpoint. */
-#define HAVE_CONTINUABLE_WATCHPOINT 1
-
-extern int procfs_stopped_by_watchpoint (ptid_t);
-#define STOPPED_BY_WATCHPOINT(W) \
- procfs_stopped_by_watchpoint(inferior_ptid)
-
-/* Use these macros for watchpoint insertion/deletion. */
-/* type can be 0: write watch, 1: read watch, 2: access watch (read/write) */
-
-extern int procfs_set_watchpoint (ptid_t, CORE_ADDR, int, int, int);
-#define target_insert_watchpoint(ADDR, LEN, TYPE) \
- procfs_set_watchpoint (inferior_ptid, ADDR, LEN, TYPE, 1)
-#define target_remove_watchpoint(ADDR, LEN, TYPE) \
- procfs_set_watchpoint (inferior_ptid, ADDR, 0, 0, 0)
-
-#endif /* NEW_PROC_API */
diff --git a/gdb/config/sparc/sp64.mt b/gdb/config/sparc/sp64.mt
deleted file mode 100644
index 943abfc240e..00000000000
--- a/gdb/config/sparc/sp64.mt
+++ /dev/null
@@ -1,6 +0,0 @@
-# Target: SPARC64
-# solib.o and procfs.o taken out for now. We don't have shared libraries yet,
-# and the elf version requires procfs.o but the a.out version doesn't.
-# Then again, having procfs.o in a target makefile fragment seems wrong.
-TDEPFILES = sparc-tdep.o
-TM_FILE= tm-sp64.h
diff --git a/gdb/config/sparc/sp64linux.mt b/gdb/config/sparc/sp64linux.mt
deleted file mode 100644
index d7d642ead71..00000000000
--- a/gdb/config/sparc/sp64linux.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Target: UltraSPARC, running Linux 64bit programs
-TDEPFILES= sparc-tdep.o solib.o solib-svr4.o solib-legacy.o
-TM_FILE= tm-sp64linux.h
diff --git a/gdb/config/sparc/sp64sol2.mt b/gdb/config/sparc/sp64sol2.mt
deleted file mode 100644
index ce2f0d82df0..00000000000
--- a/gdb/config/sparc/sp64sol2.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Target: Ultrasparc, running Solaris 2
-TDEPFILES= sparc-tdep.o
-TM_FILE= tm-sun4sol2.h
diff --git a/gdb/config/sparc/sparc-em.mt b/gdb/config/sparc/sparc-em.mt
deleted file mode 100644
index 13b0c6a29e2..00000000000
--- a/gdb/config/sparc/sparc-em.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Target: SPARC embedded
-TDEPFILES= sparc-tdep.o
-TM_FILE= tm-spc-em.h
diff --git a/gdb/config/sparc/sparclynx.mh b/gdb/config/sparc/sparclynx.mh
deleted file mode 100644
index c573604b66a..00000000000
--- a/gdb/config/sparc/sparclynx.mh
+++ /dev/null
@@ -1,6 +0,0 @@
-# Host: Sparc running LynxOS
-
-XM_CLIBS= -lbsd
-
-NAT_FILE= nm-sparclynx.h
-NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o lynx-nat.o
diff --git a/gdb/config/sparc/sparclynx.mt b/gdb/config/sparc/sparclynx.mt
deleted file mode 100644
index 5e61645caaa..00000000000
--- a/gdb/config/sparc/sparclynx.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Target: Sparc running LynxOS
-TDEPFILES= coff-solib.o sparc-tdep.o
-TM_FILE= tm-sparclynx.h
diff --git a/gdb/config/sparc/sun4os4.mh b/gdb/config/sparc/sun4os4.mh
deleted file mode 100644
index 4e664d71ccb..00000000000
--- a/gdb/config/sparc/sun4os4.mh
+++ /dev/null
@@ -1,9 +0,0 @@
-# Host: Sun 4 or Sparcstation, running SunOS 4
-NAT_FILE= nm-sun4os4.h
-NATDEPFILES= fork-child.o infptrace.o inftarg.o corelow.o sparc-nat.o
-HOST_IPC=-DBSD_IPC
-
-# Setting XM_CLIBS=-lresolv would let us use the DNS, but that would screw
-# anyone who wants to use NIS, which includes at least one Cygnus customer
-# (PR 3593). So leave it this way until/unless we find a resolver which can
-# get names from either DNS or NIS from the same GDB binary.
diff --git a/gdb/config/sparc/sun4os4.mt b/gdb/config/sparc/sun4os4.mt
deleted file mode 100644
index 342d6f73537..00000000000
--- a/gdb/config/sparc/sun4os4.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Target: Sun 4 or Sparcstation, running SunOS 4
-TDEPFILES= sparc-tdep.o solib.o solib-sunos.o
-TM_FILE= tm-sun4os4.h
diff --git a/gdb/config/sparc/sun4sol2.mh b/gdb/config/sparc/sun4sol2.mh
deleted file mode 100644
index 4e77b9234cd..00000000000
--- a/gdb/config/sparc/sun4sol2.mh
+++ /dev/null
@@ -1,22 +0,0 @@
-# Host: Sun 4 or Sparcstation, running Solaris 2
-
-XM_FILE= xm-sun4sol2.h
-XM_CLIBS= -lsocket -lnsl
-
-NAT_FILE= nm-sun4sol2.h
-NATDEPFILES= corelow.o core-sol2.o solib.o solib-svr4.o solib-legacy.o \
- fork-child.o procfs.o gcore.o \
- proc-api.o proc-events.o proc-flags.o proc-why.o
-
-# /usr/include/v9 is needed only by core-sol2.c when including
-# v9/sys/privregs.h, or rather the headers it in turn includes.
-MH_CFLAGS=-I/usr/include/v9
-# If you are compiling with Sun's compiler, add the -xs option to CC
-# (e.g. `make CC="cc -xs"').
-# Sun's compilers require the -xs option to produce debug information
-# in the final linked executable. Otherwise they leave it in the .o
-# files only, with undocumented pointers to it in the linked executable.
-# This is commented out because we don't assume that the Sun compiler
-# is in use.
-#MH_CFLAGS=-xs -I/usr/include/v9
-HOST_IPC=-DBSD_IPC
diff --git a/gdb/config/sparc/sun4sol2.mt b/gdb/config/sparc/sun4sol2.mt
deleted file mode 100644
index af70e9f9f9f..00000000000
--- a/gdb/config/sparc/sun4sol2.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Target: Sun 4 or Sparcstation, running Solaris 2
-TDEPFILES= sparc-tdep.o
-TM_FILE= tm-sun4sol2.h
diff --git a/gdb/config/sparc/tm-linux.h b/gdb/config/sparc/tm-linux.h
index 63be2b885a5..ae853ba0acb 100644
--- a/gdb/config/sparc/tm-linux.h
+++ b/gdb/config/sparc/tm-linux.h
@@ -1,7 +1,6 @@
-/* Macro definitions for GDB for a Sparc running GNU/Linux.
+/* Target-dependent definitions for GNU/Linux SPARC.
- Copyright 1989, 1992, 1994, 1995, 1998, 1999, 2002 Free Software
- Foundation, Inc.
+ Copyright 2003 Free Software Foundation, Inc.
This file is part of GDB.
@@ -17,16 +16,14 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-#ifndef TM_SPARCLINUX_H
-#define TM_SPARCLINUX_H
+#ifndef TM_LINUX_H
+#define TM_LINUX_H
-#include "sparc/tm-sparc.h"
+#define GDB_MULTI_ARCH GDB_MULTI_ARCH_TM
-#define SIGCONTEXT_PC_OFFSET 12
+/* Shared library support. */
+#include "solib.h"
-#include "config/tm-linux.h"
-
-#endif /* TM_SPARCLINUX_H */
+#endif /* tm-linux.h */
diff --git a/gdb/config/sparc/tm-nbsd.h b/gdb/config/sparc/tm-nbsd.h
index c82c3154088..301136bbead 100644
--- a/gdb/config/sparc/tm-nbsd.h
+++ b/gdb/config/sparc/tm-nbsd.h
@@ -1,5 +1,6 @@
-/* Macro definitions for Sparc running under NetBSD.
- Copyright 1994, 2002 Free Software Foundation, Inc.
+/* Target-dependent definitions for NetBSD/sparc.
+
+ Copyright 1994, 2002, 2003 Free Software Foundation, Inc.
This file is part of GDB.
@@ -21,7 +22,9 @@
#ifndef TM_NBSD_H
#define TM_NBSD_H
-#include "sparc/tm-sparc.h"
+#define GDB_MULTI_ARCH GDB_MULTI_ARCH_TM
+
+/* Shared library support. */
#include "solib.h"
-#endif /* TM_NBSD_H */
+#endif /* tm-nbsd.h */
diff --git a/gdb/config/sparc/tm-sp64.h b/gdb/config/sparc/tm-sp64.h
deleted file mode 100644
index 960cc0b9d97..00000000000
--- a/gdb/config/sparc/tm-sp64.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Target machine sub-parameters for SPARC64, for GDB, the GNU debugger.
- This is included by other tm-*.h files to define SPARC64 cpu-related info.
- Copyright 1994, 1995, 1996, 1998, 1999, 2000
- Free Software Foundation, Inc.
- This is (obviously) based on the SPARC Vn (n<9) port.
- Contributed by Doug Evans (dje@cygnus.com).
- Further modified by Bob Manson (manson@cygnus.com).
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-struct type;
-
-#ifndef GDB_TARGET_IS_SPARC64
-#define GDB_TARGET_IS_SPARC64 1
-#endif
-
-#include "sparc/tm-sparc.h"
-
-/* Eeeew. Ok, we have to assume (for now) that the processor really is
- in sparc64 mode. While this is the same instruction sequence as
- on the Sparc, the stack frames are offset by +2047 (and the arguments
- are 8 bytes instead of 4). */
-/* Instructions are:
- std %f10, [ %fp + 0x7a7 ]
- std %f8, [ %fp + 0x79f ]
- std %f6, [ %fp + 0x797 ]
- std %f4, [ %fp + 0x78f ]
- std %f2, [ %fp + 0x787 ]
- std %f0, [ %fp + 0x77f ]
- std %g6, [ %fp + 0x777 ]
- std %g4, [ %fp + 0x76f ]
- std %g2, [ %fp + 0x767 ]
- std %g0, [ %fp + 0x75f ]
- std %fp, [ %fp + 0x757 ]
- std %i4, [ %fp + 0x74f ]
- std %i2, [ %fp + 0x747 ]
- std %i0, [ %fp + 0x73f ]
- nop
- nop
- nop
- nop
- rd %tbr, %o0
- st %o0, [ %fp + 0x72b ]
- rd %tpc, %o0
- st %o0, [ %fp + 0x727 ]
- rd %psr, %o0
- st %o0, [ %fp + 0x723 ]
- rd %y, %o0
- st %o0, [ %fp + 0x71f ]
- ldx [ %sp + 0x8a7 ], %o5
- ldx [ %sp + 0x89f ], %o4
- ldx [ %sp + 0x897 ], %o3
- ldx [ %sp + 0x88f ], %o2
- ldx [ %sp + 0x887 ], %o1
- call %g0
- ldx [ %sp + 0x87f ], %o0
- nop
- ta 1
- nop
- nop
- */
-
-/* Offsets into jmp_buf.
- FIXME: This was borrowed from the v8 stuff and will probably have to change
- for v9. */
-
-#define JB_ELEMENT_SIZE 8 /* Size of each element in jmp_buf */
-
-#define JB_ONSSTACK 0
-#define JB_SIGMASK 1
-#define JB_SP 2
-#define JB_PC 3
-#define JB_NPC 4
-#define JB_PSR 5
-#define JB_G1 6
-#define JB_O0 7
-#define JB_WBCNT 8
-
-/* Figure out where the longjmp will land. We expect that we have
- just entered longjmp and haven't yet setup the stack frame, so the
- args are still in the output regs. %o0 (O0_REGNUM) points at the
- jmp_buf structure from which we extract the pc (JB_PC) that we will
- land at. The pc is copied into ADDR. This routine returns true on
- success */
-
-extern int get_longjmp_target (CORE_ADDR *);
-
-#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-
-#undef TM_PRINT_INSN_MACH
-#define TM_PRINT_INSN_MACH bfd_mach_sparc_v9a
-
diff --git a/gdb/config/sparc/tm-sp64linux.h b/gdb/config/sparc/tm-sp64linux.h
deleted file mode 100644
index 81d9db0036d..00000000000
--- a/gdb/config/sparc/tm-sp64linux.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Macro definitions for GDB for a UltraSparc running GNU/Linux.
-
- Copyright 2001, 2002 Free Software Foundation, Inc.
-
-This file is part of GDB.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#ifndef TM_SPARC_LIN64_H
-#define TM_SPARC_LIN64_H
-
-#include "sparc/tm-sp64.h"
-
-#define SIGCONTEXT_PC_OFFSET 16 /* See asm-sparc64/sigcontext.h */
-
-/* We always want full V9 + Ultra VIS stuff... */
-#undef TM_PRINT_INSN_MACH
-#define TM_PRINT_INSN_MACH bfd_mach_sparc_v9a
-
-#include "config/tm-sysv4.h"
-
-#endif /* TM_SPARC_LIN64_H */
diff --git a/gdb/config/sparc/tm-sparc.h b/gdb/config/sparc/tm-sparc.h
deleted file mode 100644
index af8feccdc2f..00000000000
--- a/gdb/config/sparc/tm-sparc.h
+++ /dev/null
@@ -1,354 +0,0 @@
-/* Target machine sub-parameters for SPARC, for GDB, the GNU debugger.
- This is included by other tm-*.h files to define SPARC cpu-related info.
- Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
- Contributed by Michael Tiemann (tiemann@mcc.com)
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "regcache.h"
-
-struct type;
-struct value;
-struct frame_info;
-
-/*
- * The following enums are purely for the convenience of the GDB
- * developer, when debugging GDB.
- */
-
-enum { /* Sparc general registers, for all sparc versions. */
- G0_REGNUM, G1_REGNUM, G2_REGNUM, G3_REGNUM,
- G4_REGNUM, G5_REGNUM, G6_REGNUM, G7_REGNUM,
- O0_REGNUM, O1_REGNUM, O2_REGNUM, O3_REGNUM,
- O4_REGNUM, O5_REGNUM, O6_REGNUM, O7_REGNUM,
- L0_REGNUM, L1_REGNUM, L2_REGNUM, L3_REGNUM,
- L4_REGNUM, L5_REGNUM, L6_REGNUM, L7_REGNUM,
- I0_REGNUM, I1_REGNUM, I2_REGNUM, I3_REGNUM,
- I4_REGNUM, I5_REGNUM, I6_REGNUM, I7_REGNUM,
- FP0_REGNUM /* Floating point register 0 */
-};
-
-enum { /* Sparc general registers, alternate names. */
- R0_REGNUM, R1_REGNUM, R2_REGNUM, R3_REGNUM,
- R4_REGNUM, R5_REGNUM, R6_REGNUM, R7_REGNUM,
- R8_REGNUM, R9_REGNUM, R10_REGNUM, R11_REGNUM,
- R12_REGNUM, R13_REGNUM, R14_REGNUM, R15_REGNUM,
- R16_REGNUM, R17_REGNUM, R18_REGNUM, R19_REGNUM,
- R20_REGNUM, R21_REGNUM, R22_REGNUM, R23_REGNUM,
- R24_REGNUM, R25_REGNUM, R26_REGNUM, R27_REGNUM,
- R28_REGNUM, R29_REGNUM, R30_REGNUM, R31_REGNUM
-};
-
-enum { /* Sparc32 control registers. */
- PS_REGNUM = 65, /* PC, NPC, and Y are omitted because */
- WIM_REGNUM = 66, /* they have different values depending on */
- TBR_REGNUM = 67, /* 32-bit / 64-bit mode. */
- FPS_REGNUM = 70,
- CPS_REGNUM = 71
-};
-
-/* v9 misc. and priv. regs */
-
-/* Note: specifying values explicitly for documentation purposes. */
-enum { /* Sparc64 control registers, excluding Y, PC, and NPC. */
- CCR_REGNUM = 82, /* Condition Code Register (%xcc,%icc) */
- FSR_REGNUM = 83, /* Floating Point State */
- FPRS_REGNUM = 84, /* Floating Point Registers State */
- ASI_REGNUM = 86, /* Alternate Space Identifier */
- VER_REGNUM = 87, /* Version register */
- TICK_REGNUM = 88, /* Tick register */
- PIL_REGNUM = 89, /* Processor Interrupt Level */
- PSTATE_REGNUM = 90, /* Processor State */
- TSTATE_REGNUM = 91, /* Trap State */
- TBA_REGNUM = 92, /* Trap Base Address */
- TL_REGNUM = 93, /* Trap Level */
- TT_REGNUM = 94, /* Trap Type */
- TPC_REGNUM = 95, /* Trap pc */
- TNPC_REGNUM = 96, /* Trap npc */
- WSTATE_REGNUM = 97, /* Window State */
- CWP_REGNUM = 98, /* Current Window Pointer */
- CANSAVE_REGNUM = 99, /* Savable Windows */
- CANRESTORE_REGNUM = 100, /* Restorable Windows */
- CLEANWIN_REGNUM = 101, /* Clean Windows */
- OTHERWIN_REGNUM = 102, /* Other Windows */
- ASR16_REGNUM = 103, /* Ancillary State Registers */
- ASR17_REGNUM = 104,
- ASR18_REGNUM = 105,
- ASR19_REGNUM = 106,
- ASR20_REGNUM = 107,
- ASR21_REGNUM = 108,
- ASR22_REGNUM = 109,
- ASR23_REGNUM = 110,
- ASR24_REGNUM = 111,
- ASR25_REGNUM = 112,
- ASR26_REGNUM = 113,
- ASR27_REGNUM = 114,
- ASR28_REGNUM = 115,
- ASR29_REGNUM = 116,
- ASR30_REGNUM = 117,
- ASR31_REGNUM = 118,
- ICC_REGNUM = 119, /* 32 bit condition codes */
- XCC_REGNUM = 120, /* 64 bit condition codes */
- FCC0_REGNUM = 121, /* fp cc reg 0 */
- FCC1_REGNUM = 122, /* fp cc reg 1 */
- FCC2_REGNUM = 123, /* fp cc reg 2 */
- FCC3_REGNUM = 124 /* fp cc reg 3 */
-};
-
-/*
- * Make sparc target multi-archable: April 2000
- */
-
-/* Multi-arch definition of TARGET_IS_SPARC64, TARGET_ELF64 */
-#undef GDB_TARGET_IS_SPARC64
-#define GDB_TARGET_IS_SPARC64 \
- (sparc_intreg_size () == 8)
-#undef TARGET_ELF64
-#define TARGET_ELF64 \
- (sparc_intreg_size () == 8)
-extern int sparc_intreg_size (void);
-
-/*
- * The following defines should ONLY appear for MULTI_ARCH.
- */
-
-/* Multi-arch the nPC and Y registers. */
-#define Y_REGNUM (sparc_y_regnum ())
-
-/* On the Sun 4 under SunOS, the compile will leave a fake insn which
- encodes the structure size being returned. If we detect such
- a fake insn, step past it. */
-
-#define PC_ADJUST(PC) sparc_pc_adjust (PC)
-extern CORE_ADDR sparc_pc_adjust (CORE_ADDR);
-
-/* If an argument is declared "register", Sun cc will keep it in a register,
- never saving it onto the stack. So we better not believe the "p" symbol
- descriptor stab. */
-
-#define DEPRECATE_USE_REGISTER_NOT_ARG
-
-/* For acc, there's no need to correct LBRAC entries by guessing how
- they should work. In fact, this is harmful because the LBRAC
- entries now all appear at the end of the function, not intermixed
- with the SLINE entries. n_opt_found detects acc for Solaris binaries;
- function_stab_type detects acc for SunOS4 binaries.
-
- For binary from SunOS4 /bin/cc, need to correct LBRAC's.
-
- For gcc, like acc, don't correct. */
-
-#define SUN_FIXED_LBRAC_BUG \
- (n_opt_found \
- || function_stab_type == N_STSYM \
- || function_stab_type == N_GSYM \
- || processing_gcc_compilation)
-
-/* Do variables in the debug stabs occur after the N_LBRAC or before it?
- acc: after, gcc: before, SunOS4 /bin/cc: before. */
-
-#define VARIABLES_INSIDE_BLOCK(desc, gcc_p) \
- (!(gcc_p) \
- && (n_opt_found \
- || function_stab_type == N_STSYM \
- || function_stab_type == N_GSYM))
-
-/* Sequence of bytes for breakpoint instruction (ta 1). */
-
-extern const unsigned char *sparc_breakpoint_from_pc (CORE_ADDR *pc, int *len);
-#define BREAKPOINT_FROM_PC(PC,LEN) sparc_breakpoint_from_pc ((PC), (LEN))
-
-/* Register numbers of various important registers.
- Note that some of these values are "real" register numbers,
- and correspond to the general registers of the machine,
- and some are "phony" register numbers which are too large
- to be actual register numbers as far as the user is concerned
- but do serve to get the desired values when passed to read_register. */
-
-#define G0_REGNUM 0 /* %g0 */
-#define G1_REGNUM 1 /* %g1 */
-#define O0_REGNUM 8 /* %o0 */
-#define RP_REGNUM 15 /* Contains return address value, *before* \
- any windows get switched. */
-#define O7_REGNUM 15 /* Last local reg not saved on stack frame */
-#define L0_REGNUM 16 /* First local reg that's saved on stack frame
- rather than in machine registers */
-#define I0_REGNUM 24 /* %i0 */
-#define I7_REGNUM 31 /* Last local reg saved on stack frame */
-#define PS_REGNUM 65 /* Contains processor status */
-#define PS_FLAG_CARRY 0x100000 /* Carry bit in PS */
-#define WIM_REGNUM 66 /* Window Invalid Mask (not really supported) */
-#define TBR_REGNUM 67 /* Trap Base Register (not really supported) */
-#define FPS_REGNUM 70 /* Floating point status register */
-#define CPS_REGNUM 71 /* Coprocessor status register */
-
-/* Writing to %g0 is a noop (not an error or exception or anything like
- that, however). */
-
-#define CANNOT_STORE_REGISTER(regno) ((regno) == G0_REGNUM)
-
-#define DEPRECATED_PRINT_EXTRA_FRAME_INFO(FI) \
- sparc_print_extra_frame_info (FI)
-extern void sparc_print_extra_frame_info (struct frame_info *);
-
-/* DEPRECATED_INIT_EXTRA_FRAME_INFO needs the PC to detect flat
- frames. */
-
-#define DEPRECATED_INIT_FRAME_PC_FIRST(FROMLEAF, PREV) \
- ((FROMLEAF) ? DEPRECATED_SAVED_PC_AFTER_CALL ((PREV)->next) : \
- (PREV)->next ? DEPRECATED_FRAME_SAVED_PC ((PREV)->next) : read_pc ())
-
-/* Define other aspects of the stack frame. */
-
-/* The location of I0 w.r.t SP. This is actually dependent on how the
- system's window overflow/underflow routines are written. Most
- vendors save the L regs followed by the I regs (at the higher
- address). Some vendors get it wrong. */
-
-#define FRAME_SAVED_L0 0
-#define FRAME_SAVED_I0 (8 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM))
-
-/* Things needed for making the inferior call functions. */
-/*
- * First of all, let me give my opinion of what the DUMMY_FRAME
- * actually looks like.
- *
- * | |
- * | |
- * + - - - - - - - - - - - - - - - - +<-- fp (level 0)
- * | |
- * | |
- * | |
- * | |
- * | Frame of innermost program |
- * | function |
- * | |
- * | |
- * | |
- * | |
- * | |
- * |---------------------------------|<-- sp (level 0), fp (c)
- * | |
- * DUMMY | fp0-31 |
- * | |
- * | ------ |<-- fp - 0x80
- * FRAME | g0-7 |<-- fp - 0xa0
- * | i0-7 |<-- fp - 0xc0
- * | other |<-- fp - 0xe0
- * | ? |
- * | ? |
- * |---------------------------------|<-- sp' = fp - 0x140
- * | |
- * xcution start | |
- * sp' + 0x94 -->| CALL_DUMMY (x code) |
- * | |
- * | |
- * |---------------------------------|<-- sp'' = fp - 0x200
- * | align sp to 8 byte boundary |
- * | ==> args to fn <== |
- * Room for | |
- * i & l's + agg | CALL_DUMMY_STACK_ADJUST = 0x0x44|
- * |---------------------------------|<-- final sp (variable)
- * | |
- * | Where function called will |
- * | build frame. |
- * | |
- * | |
- *
- * I understand everything in this picture except what the space
- * between fp - 0xe0 and fp - 0x140 is used for. Oh, and I don't
- * understand why there's a large chunk of CALL_DUMMY that never gets
- * executed (its function is superceeded by
- * DEPRECATED_PUSH_DUMMY_FRAME; they are designed to do the same
- * thing).
- *
- * DEPRECATED_PUSH_DUMMY_FRAME saves the registers above sp' and
- * pushes the * register file stack down one.
- *
- * call_function then writes CALL_DUMMY, pushes the args onto the
- * stack, and adjusts the stack pointer.
-
- call_function_by_hand then starts execution (in the middle of
- CALL_DUMMY, as directed by call_function). */
-
-#ifndef CALL_DUMMY
-/* This sequence of words is the instructions
-
- 00: bc 10 00 01 mov %g1, %fp
- 04: 9d e3 80 00 save %sp, %g0, %sp
- 08: bc 10 00 02 mov %g2, %fp
- 0c: be 10 00 03 mov %g3, %i7
- 10: da 03 a0 58 ld [ %sp + 0x58 ], %o5
- 14: d8 03 a0 54 ld [ %sp + 0x54 ], %o4
- 18: d6 03 a0 50 ld [ %sp + 0x50 ], %o3
- 1c: d4 03 a0 4c ld [ %sp + 0x4c ], %o2
- 20: d2 03 a0 48 ld [ %sp + 0x48 ], %o1
- 24: 40 00 00 00 call <fun>
- 28: d0 03 a0 44 ld [ %sp + 0x44 ], %o0
- 2c: 01 00 00 00 nop
- 30: 91 d0 20 01 ta 1
- 34: 01 00 00 00 nop
-
- NOTES:
- * the first four instructions are necessary only on the simulator.
- * this is a multiple of 8 (not only 4) bytes.
- * the `call' insn is a relative, not an absolute call.
- * the `nop' at the end is needed to keep the trap from
- clobbering things (if NPC pointed to garbage instead).
- */
-
-#endif /* CALL_DUMMY */
-
-/* Sparc has no reliable single step ptrace call */
-
-#define SOFTWARE_SINGLE_STEP_P() 1
-extern void sparc_software_single_step (enum target_signal, int);
-#define SOFTWARE_SINGLE_STEP(sig,bp_p) sparc_software_single_step (sig,bp_p)
-
-/* We need more arguments in a frame specification for the
- "frame" or "info frame" command. */
-
-#define SETUP_ARBITRARY_FRAME(argc, argv) setup_arbitrary_frame (argc, argv)
-extern struct frame_info *setup_arbitrary_frame (int, CORE_ADDR *);
-
-extern void sparc_do_registers_info (int regnum, int all);
-#undef DEPRECATED_DO_REGISTERS_INFO
-#define DEPRECATED_DO_REGISTERS_INFO(REGNUM,ALL) sparc_do_registers_info (REGNUM, ALL)
-
-/* Optimization for storing registers to the inferior. The hook
- DO_DEFERRED_STORES
- actually executes any deferred stores. It is called any time
- we are going to proceed the child, or read its registers.
- The hook CLEAR_DEFERRED_STORES is called when we want to throw
- away the inferior process, e.g. when it dies or we kill it.
- FIXME, this does not handle remote debugging cleanly. */
-
-extern int deferred_stores;
-#define DO_DEFERRED_STORES \
- if (deferred_stores) \
- target_store_registers (-2);
-#define CLEAR_DEFERRED_STORES \
- deferred_stores = 0;
-
-/* Select the sparc disassembler */
-
-#define TM_PRINT_INSN_MACH bfd_mach_sparc
-
-#define DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED 1
diff --git a/gdb/config/sparc/tm-sparclynx.h b/gdb/config/sparc/tm-sparclynx.h
deleted file mode 100644
index e4ea4d5223d..00000000000
--- a/gdb/config/sparc/tm-sparclynx.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Macro definitions for Sparc running under LynxOS.
- Copyright 1993, 1994 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifndef TM_SPARCLYNX_H
-#define TM_SPARCLYNX_H
-
-#include "config/tm-lynx.h"
-
-/* Use generic Sparc definitions. */
-#include "sparc/tm-sparc.h"
-
-/* Lynx does this backwards from everybody else */
-
-#undef FRAME_SAVED_I0
-#undef FRAME_SAVED_L0
-
-#define FRAME_SAVED_I0 0
-#define FRAME_SAVED_L0 (8 * DEPRECATED_REGISTER_RAW_SIZE (I0_REGNUM))
-
-#endif /* TM_SPARCLYNX_H */
diff --git a/gdb/config/sparc/tm-spc-em.h b/gdb/config/sparc/tm-spc-em.h
deleted file mode 100644
index 760e7a4258a..00000000000
--- a/gdb/config/sparc/tm-spc-em.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Target machine definitions for GDB for an embedded SPARC.
- Copyright 1989, 1992, 1993, 2000 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "sparc/tm-sparc.h"
-
-/* Offsets into jmp_buf. Not defined by Sun, but at least documented in a
- comment in <machine/setjmp.h>! */
-
-#define JB_ELEMENT_SIZE 4 /* Size of each element in jmp_buf */
-
-#define JB_ONSSTACK 0
-#define JB_SIGMASK 1
-#define JB_SP 2
-#define JB_PC 3
-#define JB_NPC 4
-#define JB_PSR 5
-#define JB_G1 6
-#define JB_O0 7
-#define JB_WBCNT 8
-
-/* Figure out where the longjmp will land. We expect that we have just entered
- longjmp and haven't yet setup the stack frame, so the args are still in the
- output regs. %o0 (O0_REGNUM) points at the jmp_buf structure from which we
- extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
- This routine returns true on success */
-
-extern int get_longjmp_target (CORE_ADDR *);
-
-#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
diff --git a/gdb/config/sparc/tm-sun4os4.h b/gdb/config/sparc/tm-sun4os4.h
deleted file mode 100644
index e080904d927..00000000000
--- a/gdb/config/sparc/tm-sun4os4.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Macro definitions for GDB for a Sun 4 running sunos 4.
- Copyright 1989, 1992, 1994, 1995, 1998, 2000
- Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "sparc/tm-sparc.h"
-#include "config/tm-sunos.h"
-
-/* Redefine SKIP_TRAMPOLINE_CODE to handle PIC compiled modules
- in main executables. */
-
-#undef SKIP_TRAMPOLINE_CODE
-#define SKIP_TRAMPOLINE_CODE(pc) sunos4_skip_trampoline_code (pc)
-extern CORE_ADDR sunos4_skip_trampoline_code (CORE_ADDR);
-
-/* Offsets into jmp_buf. Not defined by Sun, but at least documented in a
- comment in <machine/setjmp.h>! */
-
-#define JB_ELEMENT_SIZE 4 /* Size of each element in jmp_buf */
-
-#define JB_ONSSTACK 0
-#define JB_SIGMASK 1
-#define JB_SP 2
-#define JB_PC 3
-#define JB_NPC 4
-#define JB_PSR 5
-#define JB_G1 6
-#define JB_O0 7
-#define JB_WBCNT 8
-
-/* Figure out where the longjmp will land. We expect that we have just entered
- longjmp and haven't yet setup the stack frame, so the args are still in the
- output regs. %o0 (O0_REGNUM) points at the jmp_buf structure from which we
- extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
- This routine returns true on success */
-
-extern int get_longjmp_target (CORE_ADDR *);
-
-#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-
-extern char *sunpro_static_transform_name (char *);
-#define STATIC_TRANSFORM_NAME(x) sunpro_static_transform_name (x)
-#define IS_STATIC_TRANSFORM_NAME(name) ((name)[0] == '$')
diff --git a/gdb/config/sparc/tm-sun4sol2.h b/gdb/config/sparc/tm-sun4sol2.h
deleted file mode 100644
index 2247914c50d..00000000000
--- a/gdb/config/sparc/tm-sun4sol2.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Macro definitions for GDB for a Sun 4 running Solaris 2
- Copyright 1989, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000
- Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "sparc/tm-sparc.h"
-#include "config/tm-sysv4.h"
-
-/* With Sol2 it is no longer necessary to enable software single-step,
- since the /proc interface can take care of it for us in hardware. */
-#undef SOFTWARE_SINGLE_STEP
-#undef SOFTWARE_SINGLE_STEP_P
-
-/* There are two different signal handler trampolines in Solaris2. */
-#define IN_SIGTRAMP(pc, name) \
- ((name) \
- && (DEPRECATED_STREQ ("sigacthandler", name) || DEPRECATED_STREQ ("ucbsigvechandler", name)))
-
-/* The signal handler gets a pointer to an ucontext as third argument
- if it is called from sigacthandler. This is the offset to the saved
- PC within it. sparc_frame_saved_pc knows how to deal with
- ucbsigvechandler. */
-#define SIGCONTEXT_PC_OFFSET 44
-
-#if 0 /* FIXME Setjmp/longjmp are not as well doc'd in SunOS 5.x yet */
-
-/* Offsets into jmp_buf. Not defined by Sun, but at least documented in a
- comment in <machine/setjmp.h>! */
-
-#define JB_ELEMENT_SIZE 4 /* Size of each element in jmp_buf */
-
-#define JB_ONSSTACK 0
-#define JB_SIGMASK 1
-#define JB_SP 2
-#define JB_PC 3
-#define JB_NPC 4
-#define JB_PSR 5
-#define JB_G1 6
-#define JB_O0 7
-#define JB_WBCNT 8
-
-/* Figure out where the longjmp will land. We expect that we have just entered
- longjmp and haven't yet setup the stack frame, so the args are still in the
- output regs. %o0 (O0_REGNUM) points at the jmp_buf structure from which we
- extract the pc (JB_PC) that we will land at. The pc is copied into ADDR.
- This routine returns true on success */
-
-extern int get_longjmp_target (CORE_ADDR *);
-
-#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
-#endif /* 0 */
-
-/* The SunPRO compiler puts out 0 instead of the address in N_SO symbols,
- and for SunPRO 3.0, N_FUN symbols too. */
-#define SOFUN_ADDRESS_MAYBE_MISSING
-
-extern char *sunpro_static_transform_name (char *);
-#define STATIC_TRANSFORM_NAME(x) sunpro_static_transform_name (x)
-#define IS_STATIC_TRANSFORM_NAME(name) ((name)[0] == '$')
-
-/* Enable handling of shared libraries for a.out executables. */
-#define HANDLE_SVR4_EXEC_EMULATORS
diff --git a/gdb/config/sparc/tm-vxsparc.h b/gdb/config/sparc/tm-vxsparc.h
deleted file mode 100644
index 95861ecf9fb..00000000000
--- a/gdb/config/sparc/tm-vxsparc.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Target machine description for VxWorks sparc's, for GDB, the GNU debugger.
- Copyright 1993, 1999 Free Software Foundation, Inc.
- Contributed by Cygnus Support.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "sparc/tm-spc-em.h"
-#include "config/tm-vxworks.h"
-
-/* Number of registers in a ptrace_getfpregs call. */
-
-/* #define VX_SIZE_FPREGS (don't know how many) */
diff --git a/gdb/config/sparc/vxsparc.mt b/gdb/config/sparc/vxsparc.mt
deleted file mode 100644
index 9eadd17451d..00000000000
--- a/gdb/config/sparc/vxsparc.mt
+++ /dev/null
@@ -1,3 +0,0 @@
-# Target: SPARC running VxWorks
-TDEPFILES= sparc-tdep.o remote-vx.o remote-vxsparc.o xdr_ld.o xdr_ptrace.o xdr_rdb.o
-TM_FILE= tm-vxsparc.h
diff --git a/gdb/config/sparc/xm-linux.h b/gdb/config/sparc/xm-linux.h
deleted file mode 100644
index b0518e650e9..00000000000
--- a/gdb/config/sparc/xm-linux.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Macro definitions for running gdb on a Sparc running GNU/Linux.
-
- Copyright 1989, 1993, 1994, 1995, 1996, 1998, 2001, 2002 Free
- Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifndef XM_SPARCLINUX_H
-#define XM_SPARCLINUX_H
-
-/* This is the amount to subtract from u.u_ar0
- to get the offset in the core file of the register values. */
-#define KERNEL_U_ADDR 0x0
-
-#define U_REGS_OFFSET 0
-
-/* If you expect to use the mmalloc package to obtain mapped symbol files,
- for now you have to specify some parameters that determine how gdb places
- the mappings in it's address space. See the comments in map_to_address()
- for details. This is expected to only be a short term solution. Yes it
- is a kludge.
- FIXME: Make this more automatic. */
-
-#define MMAP_BASE_ADDRESS 0xE0000000 /* First mapping here */
-#define MMAP_INCREMENT 0x01000000 /* Increment to next mapping */
-
-#endif /* _XM_SPARCLINUX_H */
diff --git a/gdb/config/sparc/xm-sun4sol2.h b/gdb/config/sparc/xm-sun4sol2.h
deleted file mode 100644
index 490962d4495..00000000000
--- a/gdb/config/sparc/xm-sun4sol2.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Macro definitions for running gdb on a Sun 4 running Solaris 2.
- Copyright 1989, 1992, 1993, 1994, 1995, 1996, 1998, 2000
- Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* Pick up more stuff from the generic SVR4 host include file. */
-
-#include "config/xm-sysv4.h"
-
-/* These are not currently used in SVR4 (but should be, FIXME!). */
-#undef DO_DEFERRED_STORES
-#undef CLEAR_DEFERRED_STORES
-
-/* solaris doesn't have siginterrupt, though it has sigaction; however,
- in this case siginterrupt would just be setting the default. */
-#define NO_SIGINTERRUPT
-
-/* On sol2.7, <curses.h> emits a bunch of 'macro redefined'
- warnings, which makes autoconf think curses.h doesn't
- exist. Compensate for that here. */
-#define HAVE_CURSES_H 1
diff --git a/gdb/configure b/gdb/configure
index be034a64dc5..a2fc0ea5dad 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -43,8 +43,6 @@ ac_help="$ac_help
ac_help="$ac_help
--enable-gdb-build-warnings Enable GDB specific build-time compiler warnings if gcc is used"
ac_help="$ac_help
- --with-mmalloc Use memory mapped malloc package"
-ac_help="$ac_help
--with-tclconfig=DIR Directory containing tcl configuration (tclConfig.sh)"
ac_help="$ac_help
--with-tkconfig=DIR Directory containing tk configuration (tkConfig.sh)"
@@ -587,7 +585,7 @@ fi
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:591: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:589: 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"
@@ -613,7 +611,7 @@ fi
# 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:617: checking for $ac_word" >&5
+echo "configure:615: 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
@@ -643,7 +641,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:647: checking for $ac_word" >&5
+echo "configure:645: 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
@@ -694,7 +692,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:698: checking for $ac_word" >&5
+echo "configure:696: 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
@@ -726,7 +724,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:730: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:728: 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.
@@ -737,12 +735,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 741 "configure"
+#line 739 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:744: \"$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
@@ -768,12 +766,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:772: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:770: 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:777: checking whether we are using GNU C" >&5
+echo "configure:775: 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
@@ -782,7 +780,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:786: \"$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:784: \"$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
@@ -801,7 +799,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:805: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:803: 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
@@ -838,7 +836,7 @@ EOF
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:842: checking how to run the C preprocessor" >&5
+echo "configure:840: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -853,13 +851,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 857 "configure"
+#line 855 "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:863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:861: \"$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
:
@@ -870,13 +868,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 874 "configure"
+#line 872 "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:880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:878: \"$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
:
@@ -887,13 +885,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 891 "configure"
+#line 889 "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:897: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:895: \"$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
:
@@ -918,9 +916,9 @@ fi
echo "$ac_t""$CPP" 1>&6
echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:922: checking for AIX" >&5
+echo "configure:920: checking for AIX" >&5
cat > conftest.$ac_ext <<EOF
-#line 924 "configure"
+#line 922 "configure"
#include "confdefs.h"
#ifdef _AIX
yes
@@ -942,7 +940,7 @@ rm -f conftest*
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:946: checking for POSIXized ISC" >&5
+echo "configure:944: 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
@@ -966,7 +964,7 @@ fi
echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:970: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:968: 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
@@ -983,7 +981,7 @@ for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIO
do
CC="$ac_save_CC $ac_arg"
cat > conftest.$ac_ext <<EOF
-#line 987 "configure"
+#line 985 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
@@ -1020,7 +1018,7 @@ return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
; return 0; }
EOF
-if { (eval echo configure:1024: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_prog_cc_stdc="$ac_arg"; break
else
@@ -1091,7 +1089,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:1095: checking host system type" >&5
+echo "configure:1093: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -1112,7 +1110,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:1116: checking target system type" >&5
+echo "configure:1114: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -1130,7 +1128,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:1134: checking build system type" >&5
+echo "configure:1132: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -1168,7 +1166,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:1172: checking for $ac_word" >&5
+echo "configure:1170: 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
@@ -1200,7 +1198,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:1204: checking for $ac_word" >&5
+echo "configure:1202: 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
@@ -1235,7 +1233,7 @@ fi
ALL_LINGUAS=
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1239: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1237: 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
@@ -1264,7 +1262,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:1268: checking for $ac_word" >&5
+echo "configure:1266: 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
@@ -1292,12 +1290,12 @@ else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1296: checking for ANSI C header files" >&5
+echo "configure:1294: 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 1301 "configure"
+#line 1299 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -1305,7 +1303,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1307: \"$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*
@@ -1322,7 +1320,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 1326 "configure"
+#line 1324 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -1340,7 +1338,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 1344 "configure"
+#line 1342 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -1361,7 +1359,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 1365 "configure"
+#line 1363 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1372,7 +1370,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:1376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -1396,12 +1394,12 @@ EOF
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1400: checking for working const" >&5
+echo "configure:1398: 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 1405 "configure"
+#line 1403 "configure"
#include "confdefs.h"
int main() {
@@ -1450,7 +1448,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:1454: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -1471,21 +1469,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1475: checking for inline" >&5
+echo "configure:1473: 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 1482 "configure"
+#line 1480 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:1489: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1487: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1511,12 +1509,12 @@ EOF
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1515: checking for off_t" >&5
+echo "configure:1513: 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 1520 "configure"
+#line 1518 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1544,12 +1542,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1548: checking for size_t" >&5
+echo "configure:1546: 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 1553 "configure"
+#line 1551 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -1579,19 +1577,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:1583: checking for working alloca.h" >&5
+echo "configure:1581: 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 1588 "configure"
+#line 1586 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1593: \"$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
@@ -1612,12 +1610,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1616: checking for alloca" >&5
+echo "configure:1614: 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 1621 "configure"
+#line 1619 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -1645,7 +1643,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:1649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1647: \"$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
@@ -1677,12 +1675,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1681: checking whether alloca needs Cray hooks" >&5
+echo "configure:1679: 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 1686 "configure"
+#line 1684 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -1707,12 +1705,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:1711: checking for $ac_func" >&5
+echo "configure:1709: 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 1716 "configure"
+#line 1714 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1735,7 +1733,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1737: \"$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
@@ -1762,7 +1760,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1766: checking stack direction for C alloca" >&5
+echo "configure:1764: 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
@@ -1770,7 +1768,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 1774 "configure"
+#line 1772 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -1789,7 +1787,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:1793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1791: \"$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
@@ -1814,17 +1812,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:1818: checking for $ac_hdr" >&5
+echo "configure:1816: 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 1823 "configure"
+#line 1821 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1828: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1826: \"$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*
@@ -1853,12 +1851,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1857: checking for $ac_func" >&5
+echo "configure:1855: 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 1862 "configure"
+#line 1860 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1881,7 +1879,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1883: \"$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
@@ -1906,7 +1904,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:1910: checking for working mmap" >&5
+echo "configure:1908: 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
@@ -1914,7 +1912,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 1918 "configure"
+#line 1916 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -2054,7 +2052,7 @@ main()
}
EOF
-if { (eval echo configure:2058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2056: \"$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
@@ -2082,17 +2080,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:2086: checking for $ac_hdr" >&5
+echo "configure:2084: 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 2091 "configure"
+#line 2089 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2096: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2094: \"$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*
@@ -2122,12 +2120,12 @@ done
__argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2126: checking for $ac_func" >&5
+echo "configure:2124: 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 2131 "configure"
+#line 2129 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2150,7 +2148,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2154: \"$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*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2179,12 +2177,12 @@ done
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2183: checking for $ac_func" >&5
+echo "configure:2181: 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 2188 "configure"
+#line 2186 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2207,7 +2205,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2211: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2209: \"$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
@@ -2241,19 +2239,19 @@ EOF
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2245: checking for LC_MESSAGES" >&5
+echo "configure:2243: 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 2250 "configure"
+#line 2248 "configure"
#include "confdefs.h"
#include <locale.h>
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2255: \"$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
@@ -2274,7 +2272,7 @@ EOF
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2278: checking whether NLS is requested" >&5
+echo "configure:2276: 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"
@@ -2294,7 +2292,7 @@ fi
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2298: checking whether included gettext is requested" >&5
+echo "configure:2296: 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"
@@ -2313,17 +2311,17 @@ fi
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2317: checking for libintl.h" >&5
+echo "configure:2315: 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 2322 "configure"
+#line 2320 "configure"
#include "confdefs.h"
#include <libintl.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2327: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2325: \"$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*
@@ -2340,19 +2338,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:2344: checking for gettext in libc" >&5
+echo "configure:2342: 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 2349 "configure"
+#line 2347 "configure"
#include "confdefs.h"
#include <libintl.h>
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2354: \"$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
@@ -2368,7 +2366,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:2372: checking for bindtextdomain in -lintl" >&5
+echo "configure:2370: 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
@@ -2376,7 +2374,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2380 "configure"
+#line 2378 "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
@@ -2387,7 +2385,7 @@ int main() {
bindtextdomain()
; return 0; }
EOF
-if { (eval echo configure:2391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2389: \"$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
@@ -2403,19 +2401,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:2407: checking for gettext in libintl" >&5
+echo "configure:2405: 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 2412 "configure"
+#line 2410 "configure"
#include "confdefs.h"
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2417: \"$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
@@ -2443,7 +2441,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:2447: checking for $ac_word" >&5
+echo "configure:2445: 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
@@ -2477,12 +2475,12 @@ fi
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2481: checking for $ac_func" >&5
+echo "configure:2479: 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 2486 "configure"
+#line 2484 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2505,7 +2503,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2509: \"$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*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2532,7 +2530,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:2536: checking for $ac_word" >&5
+echo "configure:2534: 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
@@ -2568,7 +2566,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:2572: checking for $ac_word" >&5
+echo "configure:2570: 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
@@ -2600,7 +2598,7 @@ else
fi
cat > conftest.$ac_ext <<EOF
-#line 2604 "configure"
+#line 2602 "configure"
#include "confdefs.h"
int main() {
@@ -2608,7 +2606,7 @@ extern int _nl_msg_cat_cntr;
return _nl_msg_cat_cntr
; return 0; }
EOF
-if { (eval echo configure:2612: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2640,7 +2638,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:2644: checking for $ac_word" >&5
+echo "configure:2642: 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
@@ -2674,7 +2672,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:2678: checking for $ac_word" >&5
+echo "configure:2676: 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
@@ -2710,7 +2708,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:2714: checking for $ac_word" >&5
+echo "configure:2712: 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
@@ -2800,7 +2798,7 @@ fi
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:2804: checking for catalogs to be installed" >&5
+echo "configure:2802: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -2828,17 +2826,17 @@ echo "configure:2804: 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:2832: checking for linux/version.h" >&5
+echo "configure:2830: 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 2837 "configure"
+#line 2835 "configure"
#include "confdefs.h"
#include <linux/version.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2842: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2840: \"$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*
@@ -3112,17 +3110,17 @@ else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3116: checking for $ac_hdr" >&5
+echo "configure:3114: 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 3121 "configure"
+#line 3119 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3126: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3124: \"$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*
@@ -3152,17 +3150,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3156: checking for $ac_hdr" >&5
+echo "configure:3154: 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 3161 "configure"
+#line 3159 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3166: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3164: \"$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*
@@ -3200,17 +3198,17 @@ if test x"$enable_libunwind" = xyes; then
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3204: checking for $ac_hdr" >&5
+echo "configure:3202: 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 3209 "configure"
+#line 3207 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3212: \"$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*
@@ -3240,17 +3238,17 @@ done
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3244: checking for $ac_hdr" >&5
+echo "configure:3242: 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 3249 "configure"
+#line 3247 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3252: \"$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*
@@ -3303,12 +3301,12 @@ fi
for ac_func in monstartup _mcleanup
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3307: checking for $ac_func" >&5
+echo "configure:3305: 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 3312 "configure"
+#line 3310 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3331,7 +3329,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3333: \"$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
@@ -3356,12 +3354,12 @@ fi
done
echo $ac_n "checking for _etext""... $ac_c" 1>&6
-echo "configure:3360: checking for _etext" >&5
+echo "configure:3358: checking for _etext" >&5
if eval "test \"`echo '$''{'ac_cv_var__etext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3365 "configure"
+#line 3363 "configure"
#include "confdefs.h"
#include <stdlib.h>
extern char _etext;
@@ -3370,7 +3368,7 @@ int main() {
free (&_etext);
; return 0; }
EOF
-if { (eval echo configure:3374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_var__etext=yes
else
@@ -3398,19 +3396,19 @@ if test "$enable_profiling" = yes ; then
CFLAGS="$CFLAGS $PROFILE_CFLAGS"
echo $ac_n "checking whether $CC supports -pg""... $ac_c" 1>&6
-echo "configure:3402: checking whether $CC supports -pg" >&5
+echo "configure:3400: checking whether $CC supports -pg" >&5
if eval "test \"`echo '$''{'ac_cv_cc_supports_pg'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3407 "configure"
+#line 3405 "configure"
#include "confdefs.h"
int main() {
int x;
; return 0; }
EOF
-if { (eval echo configure:3414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3412: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cc_supports_pg=yes
else
@@ -3440,7 +3438,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:3444: checking for $ac_word" >&5
+echo "configure:3442: 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
@@ -3481,7 +3479,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:3485: checking for a BSD compatible install" >&5
+echo "configure:3483: 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
@@ -3534,7 +3532,7 @@ 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:3538: checking whether ln -s works" >&5
+echo "configure:3536: 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
@@ -3557,7 +3555,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:3561: checking for $ac_word" >&5
+echo "configure:3559: 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
@@ -3589,7 +3587,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:3593: checking for $ac_word" >&5
+echo "configure:3591: 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
@@ -3623,7 +3621,7 @@ test -n "$YACC" || YACC="yacc"
# 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:3627: checking for $ac_word" >&5
+echo "configure:3625: 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
@@ -3655,7 +3653,7 @@ 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:3659: checking for $ac_word" >&5
+echo "configure:3657: 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
@@ -3687,7 +3685,7 @@ 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:3691: checking for $ac_word" >&5
+echo "configure:3689: 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
@@ -3721,7 +3719,7 @@ fi
# 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:3725: checking for $ac_word" >&5
+echo "configure:3723: 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
@@ -3757,7 +3755,7 @@ fi
# We might need to link with -lm; most simulators need it.
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:3761: checking for main in -lm" >&5
+echo "configure:3759: 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
@@ -3765,14 +3763,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3769 "configure"
+#line 3767 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3774: \"$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
@@ -3805,12 +3803,12 @@ fi
# libw that some versions of the GNU linker cannot hanle (GNU ld 2.9.1
# is known to have this problem). Therefore we avoid libw if we can.
echo $ac_n "checking for wctype""... $ac_c" 1>&6
-echo "configure:3809: checking for wctype" >&5
+echo "configure:3807: checking for wctype" >&5
if eval "test \"`echo '$''{'ac_cv_func_wctype'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3814 "configure"
+#line 3812 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char wctype(); below. */
@@ -3833,7 +3831,7 @@ wctype();
; return 0; }
EOF
-if { (eval echo configure:3837: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_wctype=yes"
else
@@ -3851,7 +3849,7 @@ if eval "test \"`echo '$ac_cv_func_'wctype`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for wctype in -lw""... $ac_c" 1>&6
-echo "configure:3855: checking for wctype in -lw" >&5
+echo "configure:3853: 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
@@ -3859,7 +3857,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lw $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3863 "configure"
+#line 3861 "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
@@ -3870,7 +3868,7 @@ int main() {
wctype()
; return 0; }
EOF
-if { (eval echo configure:3874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3872: \"$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
@@ -3903,14 +3901,14 @@ fi
# Some systems (e.g. Solaris) have `gethostbyname' in libnsl.
echo $ac_n "checking for library containing gethostbyname""... $ac_c" 1>&6
-echo "configure:3907: checking for library containing gethostbyname" >&5
+echo "configure:3905: checking for library containing gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_search_gethostbyname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_gethostbyname="no"
cat > conftest.$ac_ext <<EOF
-#line 3914 "configure"
+#line 3912 "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
@@ -3921,7 +3919,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_gethostbyname="none required"
else
@@ -3932,7 +3930,7 @@ rm -f conftest*
test "$ac_cv_search_gethostbyname" = "no" && for i in nsl; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3936 "configure"
+#line 3934 "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
@@ -3943,7 +3941,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_gethostbyname="-l$i"
break
@@ -3967,14 +3965,14 @@ fi
# Some systems (e.g. Solaris) have `socketpair' in libsocket.
echo $ac_n "checking for library containing socketpair""... $ac_c" 1>&6
-echo "configure:3971: checking for library containing socketpair" >&5
+echo "configure:3969: checking for library containing socketpair" >&5
if eval "test \"`echo '$''{'ac_cv_search_socketpair'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_socketpair="no"
cat > conftest.$ac_ext <<EOF
-#line 3978 "configure"
+#line 3976 "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
@@ -3985,7 +3983,7 @@ int main() {
socketpair()
; return 0; }
EOF
-if { (eval echo configure:3989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_socketpair="none required"
else
@@ -3996,7 +3994,7 @@ rm -f conftest*
test "$ac_cv_search_socketpair" = "no" && for i in socket; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4000 "configure"
+#line 3998 "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
@@ -4007,7 +4005,7 @@ int main() {
socketpair()
; return 0; }
EOF
-if { (eval echo configure:4011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_socketpair="-l$i"
break
@@ -4043,14 +4041,14 @@ fi
if test "$need_curses" = yes; then
echo $ac_n "checking for library containing initscr""... $ac_c" 1>&6
-echo "configure:4047: checking for library containing initscr" >&5
+echo "configure:4045: checking for library containing initscr" >&5
if eval "test \"`echo '$''{'ac_cv_search_initscr'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_initscr="no"
cat > conftest.$ac_ext <<EOF
-#line 4054 "configure"
+#line 4052 "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
@@ -4061,7 +4059,7 @@ int main() {
initscr()
; return 0; }
EOF
-if { (eval echo configure:4065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_initscr="none required"
else
@@ -4072,7 +4070,7 @@ rm -f conftest*
test "$ac_cv_search_initscr" = "no" && for i in ncurses Hcurses curses; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4076 "configure"
+#line 4074 "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
@@ -4083,7 +4081,7 @@ int main() {
initscr()
; return 0; }
EOF
-if { (eval echo configure:4087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_initscr="-l$i"
break
@@ -4111,8 +4109,7 @@ case $host_os in
LIBS="../libtermcap/libtermcap.a $LIBS"
ac_cv_search_tgetent="../libtermcap/libtermcap.a"
fi ;;
- go32*)
- # ??? Is this really true?
+ go32* | *djgpp*)
ac_cv_search_tgetent="none required"
;;
aix*)
@@ -4120,14 +4117,14 @@ case $host_os in
# ??? Why?
echo $ac_n "checking for library containing tgetent""... $ac_c" 1>&6
-echo "configure:4124: checking for library containing tgetent" >&5
+echo "configure:4121: checking for library containing tgetent" >&5
if eval "test \"`echo '$''{'ac_cv_search_tgetent'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_tgetent="no"
cat > conftest.$ac_ext <<EOF
-#line 4131 "configure"
+#line 4128 "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
@@ -4138,7 +4135,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:4142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_tgetent="none required"
else
@@ -4149,7 +4146,7 @@ rm -f conftest*
test "$ac_cv_search_tgetent" = "no" && for i in tinfo ncurses curses termcap; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4153 "configure"
+#line 4150 "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
@@ -4160,7 +4157,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:4164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_tgetent="-l$i"
break
@@ -4187,14 +4184,14 @@ esac
# Readline doesn't, so I think we're safe with leaving them out.
echo $ac_n "checking for library containing tgetent""... $ac_c" 1>&6
-echo "configure:4191: checking for library containing tgetent" >&5
+echo "configure:4188: checking for library containing tgetent" >&5
if eval "test \"`echo '$''{'ac_cv_search_tgetent'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_func_search_save_LIBS="$LIBS"
ac_cv_search_tgetent="no"
cat > conftest.$ac_ext <<EOF
-#line 4198 "configure"
+#line 4195 "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
@@ -4205,7 +4202,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:4209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_tgetent="none required"
else
@@ -4216,7 +4213,7 @@ rm -f conftest*
test "$ac_cv_search_tgetent" = "no" && for i in termcap tinfo ncurses Hcurses curses; do
LIBS="-l$i $ac_func_search_save_LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4220 "configure"
+#line 4217 "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
@@ -4227,7 +4224,7 @@ int main() {
tgetent()
; return 0; }
EOF
-if { (eval echo configure:4231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_search_tgetent="-l$i"
break
@@ -4261,12 +4258,12 @@ for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:4265: checking for $ac_hdr that defines DIR" >&5
+echo "configure:4262: 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 4270 "configure"
+#line 4267 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -4274,7 +4271,7 @@ int main() {
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:4278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4275: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
@@ -4299,7 +4296,7 @@ done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:4303: checking for opendir in -ldir" >&5
+echo "configure:4300: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4307,7 +4304,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4311 "configure"
+#line 4308 "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
@@ -4318,7 +4315,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:4322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4340,7 +4337,7 @@ fi
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:4344: checking for opendir in -lx" >&5
+echo "configure:4341: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4348,7 +4345,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4352 "configure"
+#line 4349 "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
@@ -4359,7 +4356,7 @@ int main() {
opendir()
; return 0; }
EOF
-if { (eval echo configure:4363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4382,12 +4379,12 @@ fi
fi
echo $ac_n "checking whether stat file-mode macros are broken""... $ac_c" 1>&6
-echo "configure:4386: checking whether stat file-mode macros are broken" >&5
+echo "configure:4383: 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 4391 "configure"
+#line 4388 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@@ -4438,12 +4435,12 @@ EOF
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:4442: checking for ANSI C header files" >&5
+echo "configure:4439: 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 4447 "configure"
+#line 4444 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -4451,7 +4448,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4455: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4452: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4468,7 +4465,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 4472 "configure"
+#line 4469 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -4486,7 +4483,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 4490 "configure"
+#line 4487 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -4507,7 +4504,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 4511 "configure"
+#line 4508 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -4518,7 +4515,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:4522: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -4545,17 +4542,57 @@ for ac_hdr in link.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4549: checking for $ac_hdr" >&5
+echo "configure:4546: 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 4554 "configure"
+#line 4551 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4559: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
+for ac_hdr in machine/reg.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:4586: 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 4591 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:4596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4585,17 +4622,17 @@ for ac_hdr in nlist.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4589: checking for $ac_hdr" >&5
+echo "configure:4626: 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 4594 "configure"
+#line 4631 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4599: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4625,17 +4662,17 @@ for ac_hdr in poll.h sys/poll.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4629: checking for $ac_hdr" >&5
+echo "configure:4666: 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 4634 "configure"
+#line 4671 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4639: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4676: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4665,17 +4702,17 @@ for ac_hdr in proc_service.h thread_db.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4669: checking for $ac_hdr" >&5
+echo "configure:4706: 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 4674 "configure"
+#line 4711 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4716: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4705,17 +4742,17 @@ for ac_hdr in stddef.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4709: checking for $ac_hdr" >&5
+echo "configure:4746: 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 4714 "configure"
+#line 4751 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4756: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4745,17 +4782,17 @@ for ac_hdr in stdlib.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4749: checking for $ac_hdr" >&5
+echo "configure:4786: 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 4754 "configure"
+#line 4791 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4759: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4796: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4785,17 +4822,17 @@ for ac_hdr in stdint.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4789: checking for $ac_hdr" >&5
+echo "configure:4826: 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 4794 "configure"
+#line 4831 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4836: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4825,17 +4862,17 @@ for ac_hdr in string.h memory.h strings.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4829: checking for $ac_hdr" >&5
+echo "configure:4866: 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 4834 "configure"
+#line 4871 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4839: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4876: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4865,17 +4902,17 @@ for ac_hdr in sys/fault.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4869: checking for $ac_hdr" >&5
+echo "configure:4906: 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 4874 "configure"
+#line 4911 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4879: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4916: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4905,17 +4942,17 @@ for ac_hdr in sys/file.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4909: checking for $ac_hdr" >&5
+echo "configure:4946: 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 4914 "configure"
+#line 4951 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4919: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4945,17 +4982,17 @@ for ac_hdr in sys/filio.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4949: checking for $ac_hdr" >&5
+echo "configure:4986: 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 4954 "configure"
+#line 4991 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4959: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4985,17 +5022,17 @@ for ac_hdr in sys/ioctl.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4989: checking for $ac_hdr" >&5
+echo "configure:5026: 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 4994 "configure"
+#line 5031 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4999: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5025,17 +5062,17 @@ for ac_hdr in sys/param.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5029: checking for $ac_hdr" >&5
+echo "configure:5066: 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 5034 "configure"
+#line 5071 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5039: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5076: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5065,17 +5102,17 @@ for ac_hdr in sys/proc.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5069: checking for $ac_hdr" >&5
+echo "configure:5106: 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 5074 "configure"
+#line 5111 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5079: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5105,17 +5142,17 @@ for ac_hdr in sys/procfs.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5109: checking for $ac_hdr" >&5
+echo "configure:5146: 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 5114 "configure"
+#line 5151 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5119: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5156: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5145,17 +5182,17 @@ for ac_hdr in sys/ptrace.h ptrace.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5149: checking for $ac_hdr" >&5
+echo "configure:5186: 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 5154 "configure"
+#line 5191 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5159: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5185,17 +5222,17 @@ for ac_hdr in sys/reg.h sys/debugreg.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5189: checking for $ac_hdr" >&5
+echo "configure:5226: 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 5194 "configure"
+#line 5231 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5199: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5236: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5225,17 +5262,17 @@ for ac_hdr in sys/select.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5229: checking for $ac_hdr" >&5
+echo "configure:5266: 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 5234 "configure"
+#line 5271 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5276: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5265,17 +5302,17 @@ for ac_hdr in sys/syscall.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5269: checking for $ac_hdr" >&5
+echo "configure:5306: 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 5274 "configure"
+#line 5311 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5279: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5316: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5305,17 +5342,17 @@ for ac_hdr in sys/user.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5309: checking for $ac_hdr" >&5
+echo "configure:5346: 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 5314 "configure"
+#line 5351 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5356: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5345,17 +5382,17 @@ for ac_hdr in sys/wait.h wait.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5349: checking for $ac_hdr" >&5
+echo "configure:5386: 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 5354 "configure"
+#line 5391 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5396: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5385,17 +5422,17 @@ for ac_hdr in termios.h termio.h sgtty.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5389: checking for $ac_hdr" >&5
+echo "configure:5426: 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 5394 "configure"
+#line 5431 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5399: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5436: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5425,17 +5462,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5429: checking for $ac_hdr" >&5
+echo "configure:5466: 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 5434 "configure"
+#line 5471 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5476: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5478,17 +5515,17 @@ for ac_hdr in curses.h ncurses.h term.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5482: checking for $ac_hdr" >&5
+echo "configure:5519: 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 5487 "configure"
+#line 5524 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5492: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5521,17 +5558,17 @@ for ac_hdr in ctype.h time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5525: checking for $ac_hdr" >&5
+echo "configure:5562: 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 5530 "configure"
+#line 5567 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -5558,6 +5595,39 @@ fi
done
+echo $ac_n "checking for member st_blocks in struct stat""... $ac_c" 1>&6
+echo "configure:5600: checking for member st_blocks in struct stat" >&5
+if eval "test \"`echo '$''{'gdb_cv_have_struct_stat_with_st_blocks_member'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5605 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+int main() {
+struct stat st; (void) st.st_blocks;
+; return 0; }
+EOF
+if { (eval echo configure:5613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ gdb_cv_have_struct_stat_with_st_blocks_member=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ gdb_cv_have_struct_stat_with_st_blocks_member=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$gdb_cv_have_struct_stat_with_st_blocks_member" 1>&6
+if test $gdb_cv_have_struct_stat_with_st_blocks_member = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+EOF
+
+fi
# ------------------------- #
# Checks for declarations. #
# ------------------------- #
@@ -5566,12 +5636,12 @@ for ac_func in getopt
do
ac_tr_decl=HAVE_DECL_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
echo $ac_n "checking whether $ac_func is declared""... $ac_c" 1>&6
-echo "configure:5570: checking whether $ac_func is declared" >&5
+echo "configure:5640: checking whether $ac_func is declared" >&5
if eval "test \"`echo '$''{'gcc_cv_have_decl_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5575 "configure"
+#line 5645 "configure"
#include "confdefs.h"
#undef $ac_tr_decl
#define $ac_tr_decl 1
@@ -5583,7 +5653,7 @@ char *(*pfn) = (char *(*)) $ac_func ;
#endif
; return 0; }
EOF
-if { (eval echo configure:5587: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5657: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "gcc_cv_have_decl_$ac_func=yes"
else
@@ -5620,12 +5690,12 @@ fi
# ------------------ #
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:5624: checking return type of signal handlers" >&5
+echo "configure:5694: 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 5629 "configure"
+#line 5699 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
@@ -5642,7 +5712,7 @@ int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:5646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
@@ -5666,12 +5736,12 @@ EOF
# ------------------------------------- #
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:5670: checking for working const" >&5
+echo "configure:5740: 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 5675 "configure"
+#line 5745 "configure"
#include "confdefs.h"
int main() {
@@ -5720,7 +5790,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
-if { (eval echo configure:5724: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5794: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -5741,21 +5811,21 @@ EOF
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:5745: checking for inline" >&5
+echo "configure:5815: 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 5752 "configure"
+#line 5822 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:5759: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5829: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -5788,19 +5858,19 @@ esac
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:5792: checking for working alloca.h" >&5
+echo "configure:5862: 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 5797 "configure"
+#line 5867 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:5804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -5821,12 +5891,12 @@ EOF
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:5825: checking for alloca" >&5
+echo "configure:5895: 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 5830 "configure"
+#line 5900 "configure"
#include "confdefs.h"
#ifdef __GNUC__
@@ -5854,7 +5924,7 @@ int main() {
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:5858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -5886,12 +5956,12 @@ EOF
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:5890: checking whether alloca needs Cray hooks" >&5
+echo "configure:5960: 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 5895 "configure"
+#line 5965 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
@@ -5916,12 +5986,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:5920: checking for $ac_func" >&5
+echo "configure:5990: 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 5925 "configure"
+#line 5995 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -5944,7 +6014,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:5948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -5971,7 +6041,7 @@ done
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:5975: checking stack direction for C alloca" >&5
+echo "configure:6045: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5979,7 +6049,7 @@ else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 5983 "configure"
+#line 6053 "configure"
#include "confdefs.h"
find_stack_direction ()
{
@@ -5998,7 +6068,7 @@ main ()
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:6002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -6023,17 +6093,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6027: checking for $ac_hdr" >&5
+echo "configure:6097: 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 6032 "configure"
+#line 6102 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6037: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6107: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -6062,12 +6132,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6066: checking for $ac_func" >&5
+echo "configure:6136: 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 6071 "configure"
+#line 6141 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6090,7 +6160,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6115,7 +6185,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:6119: checking for working mmap" >&5
+echo "configure:6189: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6123,7 +6193,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 6127 "configure"
+#line 6197 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -6263,7 +6333,7 @@ main()
}
EOF
-if { (eval echo configure:6267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -6286,12 +6356,12 @@ EOF
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:6290: checking for pid_t" >&5
+echo "configure:6360: 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 6295 "configure"
+#line 6365 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -6320,17 +6390,17 @@ fi
ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:6324: checking for vfork.h" >&5
+echo "configure:6394: checking for vfork.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6329 "configure"
+#line 6399 "configure"
#include "confdefs.h"
#include <vfork.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -6355,18 +6425,18 @@ else
fi
echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:6359: checking for working vfork" >&5
+echo "configure:6429: checking for working vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$cross_compiling" = yes; then
echo $ac_n "checking for vfork""... $ac_c" 1>&6
-echo "configure:6365: checking for vfork" >&5
+echo "configure:6435: checking for vfork" >&5
if eval "test \"`echo '$''{'ac_cv_func_vfork'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6370 "configure"
+#line 6440 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vfork(); below. */
@@ -6389,7 +6459,7 @@ vfork();
; return 0; }
EOF
-if { (eval echo configure:6393: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6463: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_vfork=yes"
else
@@ -6411,7 +6481,7 @@ fi
ac_cv_func_vfork_works=$ac_cv_func_vfork
else
cat > conftest.$ac_ext <<EOF
-#line 6415 "configure"
+#line 6485 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
@@ -6506,7 +6576,7 @@ main() {
}
}
EOF
-if { (eval echo configure:6510: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_vfork_works=yes
else
@@ -6531,12 +6601,12 @@ fi
for ac_func in canonicalize_file_name realpath
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6535: checking for $ac_func" >&5
+echo "configure:6605: 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 6540 "configure"
+#line 6610 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6559,7 +6629,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6586,12 +6656,12 @@ done
for ac_func in poll
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6590: checking for $ac_func" >&5
+echo "configure:6660: 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 6595 "configure"
+#line 6665 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6614,7 +6684,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6641,12 +6711,12 @@ done
for ac_func in pread64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6645: checking for $ac_func" >&5
+echo "configure:6715: 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 6650 "configure"
+#line 6720 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6669,7 +6739,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6673: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6696,12 +6766,12 @@ done
for ac_func in sbrk
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6700: checking for $ac_func" >&5
+echo "configure:6770: 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 6705 "configure"
+#line 6775 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6724,7 +6794,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6798: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6751,12 +6821,12 @@ done
for ac_func in setpgid setpgrp
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6755: checking for $ac_func" >&5
+echo "configure:6825: 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 6760 "configure"
+#line 6830 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6779,7 +6849,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6806,12 +6876,12 @@ done
for ac_func in sigaction sigprocmask sigsetmask
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6810: checking for $ac_func" >&5
+echo "configure:6880: 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 6815 "configure"
+#line 6885 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6834,7 +6904,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6861,12 +6931,12 @@ done
for ac_func in socketpair
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6865: checking for $ac_func" >&5
+echo "configure:6935: 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 6870 "configure"
+#line 6940 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6889,7 +6959,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6916,12 +6986,12 @@ done
for ac_func in syscall
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6920: checking for $ac_func" >&5
+echo "configure:6990: 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 6925 "configure"
+#line 6995 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6944,7 +7014,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6971,7 +7041,7 @@ done
if test "$cross_compiling" = no; then
echo $ac_n "checking whether setpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:6975: checking whether setpgrp takes no argument" >&5
+echo "configure:7045: checking whether setpgrp takes no argument" >&5
if eval "test \"`echo '$''{'ac_cv_func_setpgrp_void'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6979,7 +7049,7 @@ else
{ echo "configure: error: cannot check setpgrp if cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 6983 "configure"
+#line 7053 "configure"
#include "confdefs.h"
#ifdef HAVE_UNISTD_H
@@ -6999,7 +7069,7 @@ main()
}
EOF
-if { (eval echo configure:7003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:7073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_setpgrp_void=no
else
@@ -7024,12 +7094,12 @@ fi
else
echo $ac_n "checking whether setpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:7028: checking whether setpgrp takes no argument" >&5
+echo "configure:7098: checking whether setpgrp takes no argument" >&5
if eval "test \"`echo '$''{'ac_cv_func_setpgrp_void'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7033 "configure"
+#line 7103 "configure"
#include "confdefs.h"
#include <unistd.h>
@@ -7043,7 +7113,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:7047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7117: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_func_setpgrp_void=no
else
@@ -7067,12 +7137,12 @@ fi
# Check if sigsetjmp is available. Using AC_CHECK_FUNCS won't do
# since sigsetjmp might only be defined as a macro.
echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:7071: checking for sigsetjmp" >&5
+echo "configure:7141: checking for sigsetjmp" >&5
if eval "test \"`echo '$''{'gdb_cv_func_sigsetjmp'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7076 "configure"
+#line 7146 "configure"
#include "confdefs.h"
#include <setjmp.h>
@@ -7081,7 +7151,7 @@ int main() {
sigjmp_buf env; while (! sigsetjmp (env, 1)) siglongjmp (env, 1);
; return 0; }
EOF
-if { (eval echo configure:7085: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7155: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_func_sigsetjmp=yes
else
@@ -7107,12 +7177,12 @@ gdb_use_included_regex=yes
# However, if the system regex is GNU regex, then default to *not*
# using the included regex.
echo $ac_n "checking for GNU regex""... $ac_c" 1>&6
-echo "configure:7111: checking for GNU regex" >&5
+echo "configure:7181: 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 7116 "configure"
+#line 7186 "configure"
#include "confdefs.h"
#include <gnu-versions.h>
int main() {
@@ -7122,7 +7192,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:7126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_gnu_regex=yes
else
@@ -7154,22 +7224,57 @@ EOF
fi
+# See if <machine/reg.h> degines `struct reg'.
+echo $ac_n "checking for struct reg in machine/reg.h""... $ac_c" 1>&6
+echo "configure:7230: checking for struct reg in machine/reg.h" >&5
+if eval "test \"`echo '$''{'gdb_cv_struct_reg'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 7235 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <machine/reg.h>
+int main() {
+struct reg r;
+; return 0; }
+EOF
+if { (eval echo configure:7243: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ gdb_cv_struct_reg=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ gdb_cv_struct_reg=no
+fi
+rm -f conftest*
+fi
+
+echo "$ac_t""$gdb_cv_struct_reg" 1>&6
+if test $gdb_cv_struct_reg = yes; then
+ cat >> confdefs.h <<\EOF
+#define HAVE_STRUCT_REG 1
+EOF
+
+fi
+
# See if <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:7161: checking for r_fs in struct reg" >&5
+echo "configure:7266: 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 7166 "configure"
+#line 7271 "configure"
#include "confdefs.h"
#include <machine/reg.h>
int main() {
struct reg r; r.r_fs;
; return 0; }
EOF
-if { (eval echo configure:7173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7278: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_struct_reg_r_fs=yes
else
@@ -7189,19 +7294,19 @@ EOF
fi
echo $ac_n "checking for r_gs in struct reg""... $ac_c" 1>&6
-echo "configure:7193: checking for r_gs in struct reg" >&5
+echo "configure:7298: 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 7198 "configure"
+#line 7303 "configure"
#include "confdefs.h"
#include <machine/reg.h>
int main() {
struct reg r; r.r_gs;
; return 0; }
EOF
-if { (eval echo configure:7205: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_struct_reg_r_gs=yes
else
@@ -7223,19 +7328,19 @@ fi
# See if <sys/ptrace.h> provides the PTRACE_GETREGS request.
echo $ac_n "checking for PTRACE_GETREGS""... $ac_c" 1>&6
-echo "configure:7227: checking for PTRACE_GETREGS" >&5
+echo "configure:7332: 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 7232 "configure"
+#line 7337 "configure"
#include "confdefs.h"
#include <sys/ptrace.h>
int main() {
PTRACE_GETREGS;
; return 0; }
EOF
-if { (eval echo configure:7239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7344: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_ptrace_getregs=yes
else
@@ -7257,19 +7362,19 @@ fi
# See if <sys/ptrace.h> provides the PTRACE_GETFPXREGS request.
echo $ac_n "checking for PTRACE_GETFPXREGS""... $ac_c" 1>&6
-echo "configure:7261: checking for PTRACE_GETFPXREGS" >&5
+echo "configure:7366: checking for PTRACE_GETFPXREGS" >&5
if eval "test \"`echo '$''{'gdb_cv_have_ptrace_getfpxregs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7266 "configure"
+#line 7371 "configure"
#include "confdefs.h"
#include <sys/ptrace.h>
int main() {
PTRACE_GETFPXREGS;
; return 0; }
EOF
-if { (eval echo configure:7273: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_ptrace_getfpxregs=yes
else
@@ -7291,12 +7396,12 @@ fi
# See if <sys/ptrace.h> provides the PT_GETDBREGS request.
echo $ac_n "checking for PT_GETDBREGS""... $ac_c" 1>&6
-echo "configure:7295: checking for PT_GETDBREGS" >&5
+echo "configure:7400: checking for PT_GETDBREGS" >&5
if eval "test \"`echo '$''{'gdb_cv_have_pt_getdbregs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7300 "configure"
+#line 7405 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/ptrace.h>
@@ -7304,7 +7409,7 @@ int main() {
PT_GETDBREGS;
; return 0; }
EOF
-if { (eval echo configure:7308: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7413: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_pt_getdbregs=yes
else
@@ -7326,12 +7431,12 @@ fi
# See if <sys/ptrace.h> provides the PT_GETXMMREGS request.
echo $ac_n "checking for PT_GETXMMREGS""... $ac_c" 1>&6
-echo "configure:7330: checking for PT_GETXMMREGS" >&5
+echo "configure:7435: checking for PT_GETXMMREGS" >&5
if eval "test \"`echo '$''{'gdb_cv_have_pt_getxmmregs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7335 "configure"
+#line 7440 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/ptrace.h>
@@ -7339,7 +7444,7 @@ int main() {
PT_GETXMMREGS;
; return 0; }
EOF
-if { (eval echo configure:7343: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7448: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_pt_getxmmregs=yes
else
@@ -7362,19 +7467,19 @@ fi
# See if stdint.h provides the uintptr_t type.
# Autoconf 2.5X has an improved AC_CHECK_TYPE which will simplify this.
echo $ac_n "checking for uintptr_t in stdint.h""... $ac_c" 1>&6
-echo "configure:7366: checking for uintptr_t in stdint.h" >&5
+echo "configure:7471: checking for uintptr_t in stdint.h" >&5
if eval "test \"`echo '$''{'gdb_cv_have_uintptr_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7371 "configure"
+#line 7476 "configure"
#include "confdefs.h"
#include <stdint.h>
int main() {
uintptr_t foo = 0;
; return 0; }
EOF
-if { (eval echo configure:7378: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7483: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_uintptr_t=yes
else
@@ -7395,12 +7500,12 @@ EOF
fi
echo $ac_n "checking whether malloc must be declared""... $ac_c" 1>&6
-echo "configure:7399: checking whether malloc must be declared" >&5
+echo "configure:7504: 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 7404 "configure"
+#line 7509 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -7421,7 +7526,7 @@ int main() {
char *(*pfn) = (char *(*)) malloc
; return 0; }
EOF
-if { (eval echo configure:7425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_malloc=no
else
@@ -7442,12 +7547,12 @@ EOF
fi
echo $ac_n "checking whether realloc must be declared""... $ac_c" 1>&6
-echo "configure:7446: checking whether realloc must be declared" >&5
+echo "configure:7551: 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 7451 "configure"
+#line 7556 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -7468,7 +7573,7 @@ int main() {
char *(*pfn) = (char *(*)) realloc
; return 0; }
EOF
-if { (eval echo configure:7472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_realloc=no
else
@@ -7489,12 +7594,12 @@ EOF
fi
echo $ac_n "checking whether free must be declared""... $ac_c" 1>&6
-echo "configure:7493: checking whether free must be declared" >&5
+echo "configure:7598: 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 7498 "configure"
+#line 7603 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -7515,7 +7620,7 @@ int main() {
char *(*pfn) = (char *(*)) free
; return 0; }
EOF
-if { (eval echo configure:7519: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7624: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_free=no
else
@@ -7536,12 +7641,12 @@ EOF
fi
echo $ac_n "checking whether strerror must be declared""... $ac_c" 1>&6
-echo "configure:7540: checking whether strerror must be declared" >&5
+echo "configure:7645: 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 7545 "configure"
+#line 7650 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -7562,7 +7667,7 @@ int main() {
char *(*pfn) = (char *(*)) strerror
; return 0; }
EOF
-if { (eval echo configure:7566: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7671: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_strerror=no
else
@@ -7583,12 +7688,12 @@ EOF
fi
echo $ac_n "checking whether strdup must be declared""... $ac_c" 1>&6
-echo "configure:7587: checking whether strdup must be declared" >&5
+echo "configure:7692: 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 7592 "configure"
+#line 7697 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -7609,7 +7714,7 @@ int main() {
char *(*pfn) = (char *(*)) strdup
; return 0; }
EOF
-if { (eval echo configure:7613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_strdup=no
else
@@ -7630,12 +7735,12 @@ EOF
fi
echo $ac_n "checking whether strstr must be declared""... $ac_c" 1>&6
-echo "configure:7634: checking whether strstr must be declared" >&5
+echo "configure:7739: 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 7639 "configure"
+#line 7744 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -7656,7 +7761,7 @@ int main() {
char *(*pfn) = (char *(*)) strstr
; return 0; }
EOF
-if { (eval echo configure:7660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7765: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_strstr=no
else
@@ -7677,12 +7782,12 @@ EOF
fi
echo $ac_n "checking whether canonicalize_file_name must be declared""... $ac_c" 1>&6
-echo "configure:7681: checking whether canonicalize_file_name must be declared" >&5
+echo "configure:7786: checking whether canonicalize_file_name must be declared" >&5
if eval "test \"`echo '$''{'bfd_cv_decl_needed_canonicalize_file_name'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 7686 "configure"
+#line 7791 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -7703,7 +7808,7 @@ int main() {
char *(*pfn) = (char *(*)) canonicalize_file_name
; return 0; }
EOF
-if { (eval echo configure:7707: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7812: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_decl_needed_canonicalize_file_name=no
else
@@ -7729,9 +7834,9 @@ fi
# could be expunged. --jsm 1999-03-22
echo $ac_n "checking for HPUX save_state structure""... $ac_c" 1>&6
-echo "configure:7733: checking for HPUX save_state structure" >&5
+echo "configure:7838: checking for HPUX save_state structure" >&5
cat > conftest.$ac_ext <<EOF
-#line 7735 "configure"
+#line 7840 "configure"
#include "confdefs.h"
#include <machine/save_state.h>
EOF
@@ -7746,7 +7851,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 7750 "configure"
+#line 7855 "configure"
#include "confdefs.h"
#include <machine/save_state.h>
EOF
@@ -7816,12 +7921,12 @@ fi
if test "$ac_cv_header_sys_procfs_h" = yes; then
echo $ac_n "checking for pstatus_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:7820: checking for pstatus_t in sys/procfs.h" >&5
+echo "configure:7925: 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 7825 "configure"
+#line 7930 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -7830,7 +7935,7 @@ int main() {
pstatus_t avar
; return 0; }
EOF
-if { (eval echo configure:7834: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7939: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_pstatus_t=yes
else
@@ -7852,12 +7957,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_pstatus_t" 1>&6
echo $ac_n "checking for prrun_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:7856: checking for prrun_t in sys/procfs.h" >&5
+echo "configure:7961: 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 7861 "configure"
+#line 7966 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -7866,7 +7971,7 @@ int main() {
prrun_t avar
; return 0; }
EOF
-if { (eval echo configure:7870: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:7975: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prrun_t=yes
else
@@ -7888,12 +7993,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prrun_t" 1>&6
echo $ac_n "checking for gregset_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:7892: checking for gregset_t in sys/procfs.h" >&5
+echo "configure:7997: 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 7897 "configure"
+#line 8002 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -7902,7 +8007,7 @@ int main() {
gregset_t avar
; return 0; }
EOF
-if { (eval echo configure:7906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8011: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_gregset_t=yes
else
@@ -7924,12 +8029,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_gregset_t" 1>&6
echo $ac_n "checking for fpregset_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:7928: checking for fpregset_t in sys/procfs.h" >&5
+echo "configure:8033: 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 7933 "configure"
+#line 8038 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -7938,7 +8043,7 @@ int main() {
fpregset_t avar
; return 0; }
EOF
-if { (eval echo configure:7942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_fpregset_t=yes
else
@@ -7960,12 +8065,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_fpregset_t" 1>&6
echo $ac_n "checking for prgregset_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:7964: checking for prgregset_t in sys/procfs.h" >&5
+echo "configure:8069: 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 7969 "configure"
+#line 8074 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -7974,7 +8079,7 @@ int main() {
prgregset_t avar
; return 0; }
EOF
-if { (eval echo configure:7978: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prgregset_t=yes
else
@@ -7996,12 +8101,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prgregset_t" 1>&6
echo $ac_n "checking for prfpregset_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8000: checking for prfpregset_t in sys/procfs.h" >&5
+echo "configure:8105: 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 8005 "configure"
+#line 8110 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -8010,7 +8115,7 @@ int main() {
prfpregset_t avar
; return 0; }
EOF
-if { (eval echo configure:8014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prfpregset_t=yes
else
@@ -8032,12 +8137,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prfpregset_t" 1>&6
echo $ac_n "checking for prgregset32_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8036: checking for prgregset32_t in sys/procfs.h" >&5
+echo "configure:8141: checking for prgregset32_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prgregset32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8041 "configure"
+#line 8146 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -8046,7 +8151,7 @@ int main() {
prgregset32_t avar
; return 0; }
EOF
-if { (eval echo configure:8050: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8155: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prgregset32_t=yes
else
@@ -8068,12 +8173,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prgregset32_t" 1>&6
echo $ac_n "checking for prfpregset32_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8072: checking for prfpregset32_t in sys/procfs.h" >&5
+echo "configure:8177: checking for prfpregset32_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prfpregset32_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8077 "configure"
+#line 8182 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -8082,7 +8187,7 @@ int main() {
prfpregset32_t avar
; return 0; }
EOF
-if { (eval echo configure:8086: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8191: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prfpregset32_t=yes
else
@@ -8104,12 +8209,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prfpregset32_t" 1>&6
echo $ac_n "checking for lwpid_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8108: checking for lwpid_t in sys/procfs.h" >&5
+echo "configure:8213: 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 8113 "configure"
+#line 8218 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -8118,7 +8223,7 @@ int main() {
lwpid_t avar
; return 0; }
EOF
-if { (eval echo configure:8122: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8227: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_lwpid_t=yes
else
@@ -8140,12 +8245,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpid_t" 1>&6
echo $ac_n "checking for psaddr_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8144: checking for psaddr_t in sys/procfs.h" >&5
+echo "configure:8249: 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 8149 "configure"
+#line 8254 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -8154,7 +8259,7 @@ int main() {
psaddr_t avar
; return 0; }
EOF
-if { (eval echo configure:8158: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8263: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_psaddr_t=yes
else
@@ -8176,12 +8281,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_psaddr_t" 1>&6
echo $ac_n "checking for prsysent_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8180: checking for prsysent_t in sys/procfs.h" >&5
+echo "configure:8285: checking for prsysent_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prsysent_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8185 "configure"
+#line 8290 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -8190,7 +8295,7 @@ int main() {
prsysent_t avar
; return 0; }
EOF
-if { (eval echo configure:8194: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_prsysent_t=yes
else
@@ -8212,12 +8317,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_prsysent_t" 1>&6
echo $ac_n "checking for pr_sigset_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8216: checking for pr_sigset_t in sys/procfs.h" >&5
+echo "configure:8321: checking for pr_sigset_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pr_sigset_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8221 "configure"
+#line 8326 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -8226,7 +8331,7 @@ int main() {
pr_sigset_t avar
; return 0; }
EOF
-if { (eval echo configure:8230: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8335: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_pr_sigset_t=yes
else
@@ -8248,12 +8353,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_pr_sigset_t" 1>&6
echo $ac_n "checking for pr_sigaction64_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8252: checking for pr_sigaction64_t in sys/procfs.h" >&5
+echo "configure:8357: checking for pr_sigaction64_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pr_sigaction64_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8257 "configure"
+#line 8362 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -8262,7 +8367,7 @@ int main() {
pr_sigaction64_t avar
; return 0; }
EOF
-if { (eval echo configure:8266: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8371: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_pr_sigaction64_t=yes
else
@@ -8284,12 +8389,12 @@ EOF
echo "$ac_t""$bfd_cv_have_sys_procfs_type_pr_sigaction64_t" 1>&6
echo $ac_n "checking for pr_siginfo64_t in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8288: checking for pr_siginfo64_t in sys/procfs.h" >&5
+echo "configure:8393: checking for pr_siginfo64_t in sys/procfs.h" >&5
if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_pr_siginfo64_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8293 "configure"
+#line 8398 "configure"
#include "confdefs.h"
#define _SYSCALL32
@@ -8298,7 +8403,7 @@ int main() {
pr_siginfo64_t avar
; return 0; }
EOF
-if { (eval echo configure:8302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8407: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
bfd_cv_have_sys_procfs_type_pr_siginfo64_t=yes
else
@@ -8325,7 +8430,7 @@ EOF
if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
echo $ac_n "checking whether prfpregset_t type is broken""... $ac_c" 1>&6
-echo "configure:8329: checking whether prfpregset_t type is broken" >&5
+echo "configure:8434: checking whether prfpregset_t type is broken" >&5
if eval "test \"`echo '$''{'gdb_cv_prfpregset_t_broken'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8333,7 +8438,7 @@ else
gdb_cv_prfpregset_t_broken=yes
else
cat > conftest.$ac_ext <<EOF
-#line 8337 "configure"
+#line 8442 "configure"
#include "confdefs.h"
#include <sys/procfs.h>
int main ()
@@ -8343,7 +8448,7 @@ else
return 0;
}
EOF
-if { (eval echo configure:8347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8452: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
gdb_cv_prfpregset_t_broken=no
else
@@ -8368,12 +8473,12 @@ EOF
echo $ac_n "checking for PIOCSET ioctl entry in sys/procfs.h""... $ac_c" 1>&6
-echo "configure:8372: checking for PIOCSET ioctl entry in sys/procfs.h" >&5
+echo "configure:8477: 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 8377 "configure"
+#line 8482 "configure"
#include "confdefs.h"
#include <unistd.h>
#include <sys/types.h>
@@ -8386,7 +8491,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:8390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8495: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_procfs_piocset=yes
else
@@ -8410,19 +8515,19 @@ fi
if test ${host} = ${target} ; then
echo $ac_n "checking for member l_addr in struct link_map""... $ac_c" 1>&6
-echo "configure:8414: checking for member l_addr in struct link_map" >&5
+echo "configure:8519: checking for member l_addr in struct link_map" >&5
if eval "test \"`echo '$''{'gdb_cv_have_struct_link_map_with_l_members'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8419 "configure"
+#line 8524 "configure"
#include "confdefs.h"
#include <link.h>
int main() {
struct link_map lm; (void) lm.l_addr;
; return 0; }
EOF
-if { (eval echo configure:8426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8531: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_struct_link_map_with_l_members=yes
else
@@ -8444,12 +8549,12 @@ EOF
echo $ac_n "checking for member lm_addr in struct link_map""... $ac_c" 1>&6
-echo "configure:8448: checking for member lm_addr in struct link_map" >&5
+echo "configure:8553: checking for member lm_addr in struct link_map" >&5
if eval "test \"`echo '$''{'gdb_cv_have_struct_link_map_with_lm_members'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8453 "configure"
+#line 8558 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <link.h>
@@ -8457,7 +8562,7 @@ int main() {
struct link_map lm; (void) lm.lm_addr;
; return 0; }
EOF
-if { (eval echo configure:8461: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8566: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_struct_link_map_with_lm_members=yes
else
@@ -8479,12 +8584,12 @@ EOF
echo $ac_n "checking for member som_addr in struct so_map""... $ac_c" 1>&6
-echo "configure:8483: checking for member som_addr in struct so_map" >&5
+echo "configure:8588: checking for member som_addr in struct so_map" >&5
if eval "test \"`echo '$''{'gdb_cv_have_struct_so_map_with_som_members'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8488 "configure"
+#line 8593 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_NLIST_H
@@ -8495,7 +8600,7 @@ int main() {
struct so_map lm; (void) lm.som_addr;
; return 0; }
EOF
-if { (eval echo configure:8499: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_struct_so_map_with_som_members=yes
else
@@ -8517,12 +8622,12 @@ EOF
echo $ac_n "checking for struct link_map32 in sys/link.h""... $ac_c" 1>&6
-echo "configure:8521: checking for struct link_map32 in sys/link.h" >&5
+echo "configure:8626: checking for struct link_map32 in sys/link.h" >&5
if eval "test \"`echo '$''{'gdb_cv_have_struct_link_map32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8526 "configure"
+#line 8631 "configure"
#include "confdefs.h"
#define _SYSCALL32
#include <sys/link.h>
@@ -8530,7 +8635,7 @@ int main() {
struct link_map32 l;
; return 0; }
EOF
-if { (eval echo configure:8534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8639: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_struct_link_map32=yes
else
@@ -8557,12 +8662,12 @@ fi
echo $ac_n "checking for long long support in compiler""... $ac_c" 1>&6
-echo "configure:8561: checking for long long support in compiler" >&5
+echo "configure:8666: 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 8566 "configure"
+#line 8671 "configure"
#include "confdefs.h"
int main() {
@@ -8572,7 +8677,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:8576: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_c_long_long=yes
else
@@ -8594,7 +8699,7 @@ fi
echo $ac_n "checking for long long support in printf""... $ac_c" 1>&6
-echo "configure:8598: checking for long long support in printf" >&5
+echo "configure:8703: checking for long long support in printf" >&5
if eval "test \"`echo '$''{'gdb_cv_printf_has_long_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8602,7 +8707,7 @@ else
gdb_cv_printf_has_long_long=no
else
cat > conftest.$ac_ext <<EOF
-#line 8606 "configure"
+#line 8711 "configure"
#include "confdefs.h"
int main () {
@@ -8616,7 +8721,7 @@ int main () {
return (strcmp ("0x0123456789abcdef", buf));
}
EOF
-if { (eval echo configure:8620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
gdb_cv_printf_has_long_long=yes
else
@@ -8640,19 +8745,19 @@ echo "$ac_t""$gdb_cv_printf_has_long_long" 1>&6
echo $ac_n "checking for long double support in compiler""... $ac_c" 1>&6
-echo "configure:8644: checking for long double support in compiler" >&5
+echo "configure:8749: 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 8649 "configure"
+#line 8754 "configure"
#include "confdefs.h"
int main() {
long double foo;
; return 0; }
EOF
-if { (eval echo configure:8656: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:8761: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_long_double=yes
else
@@ -8674,7 +8779,7 @@ fi
echo $ac_n "checking for long double support in printf""... $ac_c" 1>&6
-echo "configure:8678: checking for long double support in printf" >&5
+echo "configure:8783: checking for long double support in printf" >&5
if eval "test \"`echo '$''{'gdb_cv_printf_has_long_double'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8682,7 +8787,7 @@ else
gdb_cv_printf_has_long_double=no
else
cat > conftest.$ac_ext <<EOF
-#line 8686 "configure"
+#line 8791 "configure"
#include "confdefs.h"
int main () {
@@ -8692,7 +8797,7 @@ int main () {
return (strncmp ("3.14159", buf, 7));
}
EOF
-if { (eval echo configure:8696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
gdb_cv_printf_has_long_double=yes
else
@@ -8716,7 +8821,7 @@ echo "$ac_t""$gdb_cv_printf_has_long_double" 1>&6
echo $ac_n "checking for long double support in scanf""... $ac_c" 1>&6
-echo "configure:8720: checking for long double support in scanf" >&5
+echo "configure:8825: checking for long double support in scanf" >&5
if eval "test \"`echo '$''{'gdb_cv_scanf_has_long_double'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8724,7 +8829,7 @@ else
gdb_cv_scanf_has_long_double=no
else
cat > conftest.$ac_ext <<EOF
-#line 8728 "configure"
+#line 8833 "configure"
#include "confdefs.h"
int main () {
@@ -8734,7 +8839,7 @@ int main () {
return !(f > 3.14159 && f < 3.14160);
}
EOF
-if { (eval echo configure:8738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:8843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
gdb_cv_scanf_has_long_double=yes
else
@@ -8759,7 +8864,7 @@ echo "$ac_t""$gdb_cv_scanf_has_long_double" 1>&6
case ${host_os} in
aix*)
echo $ac_n "checking for -bbigtoc option""... $ac_c" 1>&6
-echo "configure:8763: checking for -bbigtoc option" >&5
+echo "configure:8868: checking for -bbigtoc option" >&5
if eval "test \"`echo '$''{'gdb_cv_bigtoc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -8773,14 +8878,14 @@ else
LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
cat > conftest.$ac_ext <<EOF
-#line 8777 "configure"
+#line 8882 "configure"
#include "confdefs.h"
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:8784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
:
else
echo "configure: failed program was:" >&5
@@ -8803,7 +8908,7 @@ if test ${build} = ${host} -a ${host} = ${target} ; then
case ${host_os} in
hpux*)
echo $ac_n "checking for HPUX/OSF thread support""... $ac_c" 1>&6
-echo "configure:8807: checking for HPUX/OSF thread support" >&5
+echo "configure:8912: checking for HPUX/OSF thread support" >&5
if test -f /usr/include/dce/cma_config.h ; then
if test "$GCC" = "yes" ; then
echo "$ac_t""yes" 1>&6
@@ -8826,7 +8931,7 @@ EOF
# because version 0 (present on Solaris 2.4 or earlier) doesn't have
# the same API.
echo $ac_n "checking for Solaris thread debugging library""... $ac_c" 1>&6
-echo "configure:8830: checking for Solaris thread debugging library" >&5
+echo "configure:8935: checking for Solaris thread debugging library" >&5
if test -f /usr/lib/libthread_db.so.1 ; then
echo "$ac_t""yes" 1>&6
cat >> confdefs.h <<\EOF
@@ -8836,7 +8941,7 @@ EOF
CONFIG_LIB_OBS="${CONFIG_LIB_OBS} sol-thread.o"
CONFIG_SRCS="${CONFIG_SRCS} sol-thread.c"
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:8840: checking for dlopen in -ldl" >&5
+echo "configure:8945: checking for dlopen in -ldl" >&5
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -8844,7 +8949,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 8848 "configure"
+#line 8953 "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
@@ -8855,7 +8960,7 @@ int main() {
dlopen()
; return 0; }
EOF
-if { (eval echo configure:8859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -8887,17 +8992,17 @@ fi
# all symbols visible in the dynamic symbol table.
hold_ldflags=$LDFLAGS
echo $ac_n "checking for the ld -export-dynamic flag""... $ac_c" 1>&6
-echo "configure:8891: checking for the ld -export-dynamic flag" >&5
+echo "configure:8996: checking for the ld -export-dynamic flag" >&5
LDFLAGS="${LDFLAGS} -Wl,-export-dynamic"
cat > conftest.$ac_ext <<EOF
-#line 8894 "configure"
+#line 8999 "configure"
#include "confdefs.h"
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:8901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
found=yes
else
@@ -8916,13 +9021,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:8920: checking if <proc_service.h> is old" >&5
+echo "configure:9025: 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 8926 "configure"
+#line 9031 "configure"
#include "confdefs.h"
#include <proc_service.h>
@@ -8933,7 +9038,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:8937: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9042: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_proc_service_is_old=no
else
@@ -8959,12 +9064,12 @@ EOF
;;
aix*)
echo $ac_n "checking for AiX thread debugging library""... $ac_c" 1>&6
-echo "configure:8963: checking for AiX thread debugging library" >&5
+echo "configure:9068: checking for AiX thread debugging library" >&5
if eval "test \"`echo '$''{'gdb_cv_have_aix_thread_debug'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 8968 "configure"
+#line 9073 "configure"
#include "confdefs.h"
#include <sys/pthdebug.h>
int main() {
@@ -8973,7 +9078,7 @@ int main() {
#endif
; return 0; }
EOF
-if { (eval echo configure:8977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9082: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_have_aix_thread_debug=yes
else
@@ -8998,19 +9103,19 @@ fi
if test "x$ac_cv_header_thread_db_h" = "xyes"; then
echo $ac_n "checking whether <thread_db.h> has TD_NOTALLOC""... $ac_c" 1>&6
-echo "configure:9002: checking whether <thread_db.h> has TD_NOTALLOC" >&5
+echo "configure:9107: checking whether <thread_db.h> has TD_NOTALLOC" >&5
if eval "test \"`echo '$''{'gdb_cv_thread_db_h_has_td_notalloc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9007 "configure"
+#line 9112 "configure"
#include "confdefs.h"
#include <thread_db.h>
int main() {
int i = TD_NOTALLOC;
; return 0; }
EOF
-if { (eval echo configure:9014: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_thread_db_h_has_td_notalloc=yes
else
@@ -9035,19 +9140,19 @@ fi
if test "x$ac_cv_header_sys_syscall_h" = "xyes"; then
echo $ac_n "checking whether <sys/syscall.h> has __NR_tkill""... $ac_c" 1>&6
-echo "configure:9039: checking whether <sys/syscall.h> has __NR_tkill" >&5
+echo "configure:9144: checking whether <sys/syscall.h> has __NR_tkill" >&5
if eval "test \"`echo '$''{'gdb_cv_sys_syscall_h_has_tkill'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 9044 "configure"
+#line 9149 "configure"
#include "confdefs.h"
#include <sys/syscall.h>
int main() {
int i = __NR_tkill;
; return 0; }
EOF
-if { (eval echo configure:9051: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9156: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
gdb_cv_sys_syscall_h_has_tkill=yes
else
@@ -9114,9 +9219,10 @@ fi
# NOTE: If you add to this list, remember to update
# gdb/doc/gdbint.texinfo.
build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
--Wformat -Wparentheses -Wpointer-arith -Wuninitialized"
+-Wformat -Wparentheses -Wpointer-arith -Wuninitialized -Wformat-nonliteral \
+-Wunused-label"
# Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
-# -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
+# -Wunused-function -Wunused-variable -Wunused-value
# -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
# -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
# -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
@@ -9158,7 +9264,7 @@ WERROR_CFLAGS=""
if test "x${build_warnings}" != x -a "x$GCC" = xyes
then
echo $ac_n "checking compiler warning flags""... $ac_c" 1>&6
-echo "configure:9162: checking compiler warning flags" >&5
+echo "configure:9268: checking compiler warning flags" >&5
# Separate out the -Werror flag as some files just cannot be
# compiled with it enabled.
for w in ${build_warnings}; do
@@ -9168,14 +9274,14 @@ echo "configure:9162: checking compiler warning flags" >&5
saved_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $w"
cat > conftest.$ac_ext <<EOF
-#line 9172 "configure"
+#line 9278 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:9179: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
WARN_CFLAGS="${WARN_CFLAGS} $w"
else
@@ -9191,44 +9297,14 @@ fi
-MMALLOC_CFLAGS=
-MMALLOC=
-
-
-
-# Check whether --with-mmalloc or --without-mmalloc was given.
-if test "${with_mmalloc+set}" = set; then
- withval="$with_mmalloc"
- case "${withval}" in
- yes) want_mmalloc=true ;;
- no) want_mmalloc=false;;
- *) { echo "configure: error: bad value ${withval} for GDB with-mmalloc option" 1>&2; exit 1; } ;;
-esac
-else
- want_mmalloc=false
-fi
-
-if test x$want_mmalloc = xtrue; then
- cat >> confdefs.h <<\EOF
-#define USE_MMALLOC 1
-EOF
-
- cat >> confdefs.h <<\EOF
-#define MMCHECK_FORCE 1
-EOF
-
- MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
- MMALLOC='../mmalloc/libmmalloc.a'
-fi
-
# In the Cygwin environment, we need some additional flags.
echo $ac_n "checking for cygwin""... $ac_c" 1>&6
-echo "configure:9227: checking for cygwin" >&5
+echo "configure:9303: 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 9232 "configure"
+#line 9308 "configure"
#include "confdefs.h"
#if defined (__CYGWIN__) || defined (__CYGWIN32__)
@@ -9306,7 +9382,7 @@ if test "${with_tclconfig+set}" = set; then
fi
echo $ac_n "checking for Tcl configuration""... $ac_c" 1>&6
-echo "configure:9310: checking for Tcl configuration" >&5
+echo "configure:9386: checking for Tcl configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_tclconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9415,7 +9491,7 @@ if test "${with_tkconfig+set}" = set; then
fi
echo $ac_n "checking for Tk configuration""... $ac_c" 1>&6
-echo "configure:9419: checking for Tk configuration" >&5
+echo "configure:9495: checking for Tk configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_tkconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9524,7 +9600,7 @@ fi
no_tcl=true
echo $ac_n "checking for Tcl private headers. dir=${configdir}""... $ac_c" 1>&6
-echo "configure:9528: checking for Tcl private headers. dir=${configdir}" >&5
+echo "configure:9604: checking for Tcl private headers. dir=${configdir}" >&5
# Check whether --with-tclinclude or --without-tclinclude was given.
if test "${with_tclinclude+set}" = set; then
withval="$with_tclinclude"
@@ -9590,17 +9666,17 @@ fi
if test x"${ac_cv_c_tclh}" = x ; then
ac_safe=`echo "tclInt.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for tclInt.h""... $ac_c" 1>&6
-echo "configure:9594: checking for tclInt.h" >&5
+echo "configure:9670: 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 9599 "configure"
+#line 9675 "configure"
#include "confdefs.h"
#include <tclInt.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9680: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -9660,7 +9736,7 @@ fi
#
no_tk=true
echo $ac_n "checking for Tk private headers""... $ac_c" 1>&6
-echo "configure:9664: checking for Tk private headers" >&5
+echo "configure:9740: checking for Tk private headers" >&5
# Check whether --with-tkinclude or --without-tkinclude was given.
if test "${with_tkinclude+set}" = set; then
withval="$with_tkinclude"
@@ -9726,17 +9802,17 @@ fi
if test x"${ac_cv_c_tkh}" = x ; then
ac_safe=`echo "tk.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for tk.h""... $ac_c" 1>&6
-echo "configure:9730: checking for tk.h" >&5
+echo "configure:9806: 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 9735 "configure"
+#line 9811 "configure"
#include "confdefs.h"
#include <tk.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9816: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -9782,7 +9858,7 @@ fi
echo $ac_n "checking for Itcl private headers. srcdir=${srcdir}""... $ac_c" 1>&6
-echo "configure:9786: checking for Itcl private headers. srcdir=${srcdir}" >&5
+echo "configure:9862: checking for Itcl private headers. srcdir=${srcdir}" >&5
if test x"${ac_cv_c_itclh}" = x ; then
for i in ${srcdir}/../itcl ${srcdir}/../../itcl ${srcdir}/../../../itcl ${srcdir}/../itcl/itcl; do
if test -f $i/generic/itcl.h ; then
@@ -9805,7 +9881,7 @@ fi
echo $ac_n "checking for Itk private headers. srcdir=${srcdir}""... $ac_c" 1>&6
-echo "configure:9809: checking for Itk private headers. srcdir=${srcdir}" >&5
+echo "configure:9885: checking for Itk private headers. srcdir=${srcdir}" >&5
if test x"${ac_cv_c_itkh}" = x ; then
for i in ${srcdir}/../itcl ${srcdir}/../../itcl ${srcdir}/../../../itcl ${srcdir}/../itcl/itk; do
if test -f $i/generic/itk.h ; then
@@ -9860,7 +9936,7 @@ if test "${with_itclconfig+set}" = set; then
fi
echo $ac_n "checking for Itcl configuration""... $ac_c" 1>&6
-echo "configure:9864: checking for Itcl configuration" >&5
+echo "configure:9940: checking for Itcl configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_itclconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -9963,7 +10039,7 @@ if test "${with_itkconfig+set}" = set; then
fi
echo $ac_n "checking for Itk configuration""... $ac_c" 1>&6
-echo "configure:9967: checking for Itk configuration" >&5
+echo "configure:10043: checking for Itk configuration" >&5
if eval "test \"`echo '$''{'ac_cv_c_itkconfig'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10106,7 +10182,7 @@ fi
# Uses ac_ vars as temps to allow command line to override cache and checks.
# --without-x overrides everything else, but does not touch the cache.
echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:10110: checking for X" >&5
+echo "configure:10186: checking for X" >&5
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
@@ -10168,12 +10244,12 @@ if test "$ac_x_includes" = NO; then
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 10172 "configure"
+#line 10248 "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:10177: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -10242,14 +10318,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 10246 "configure"
+#line 10322 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:10253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
LIBS="$ac_save_LIBS"
# We can link X programs with no special library path.
@@ -10463,7 +10539,7 @@ fi
# We only build gdbserver automatically if host and target are the same.
if test "x$target" = "x$host"; then
echo $ac_n "checking whether gdbserver is supported on this host""... $ac_c" 1>&6
-echo "configure:10467: checking whether gdbserver is supported on this host" >&5
+echo "configure:10543: checking whether gdbserver is supported on this host" >&5
if test "x$build_gdbserver" = xyes; then
configdirs="$configdirs gdbserver"
echo "$ac_t""yes" 1>&6
@@ -10527,12 +10603,12 @@ fi
echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
-echo "configure:10531: checking for Cygwin environment" >&5
+echo "configure:10607: 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 10536 "configure"
+#line 10612 "configure"
#include "confdefs.h"
int main() {
@@ -10543,7 +10619,7 @@ int main() {
return __CYGWIN__;
; return 0; }
EOF
-if { (eval echo configure:10547: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10623: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_cygwin=yes
else
@@ -10560,19 +10636,19 @@ echo "$ac_t""$ac_cv_cygwin" 1>&6
CYGWIN=
test "$ac_cv_cygwin" = yes && CYGWIN=yes
echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
-echo "configure:10564: checking for mingw32 environment" >&5
+echo "configure:10640: 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 10569 "configure"
+#line 10645 "configure"
#include "confdefs.h"
int main() {
return __MINGW32__;
; return 0; }
EOF
-if { (eval echo configure:10576: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10652: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_mingw32=yes
else
@@ -10591,7 +10667,7 @@ test "$ac_cv_mingw32" = yes && MINGW32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:10595: checking for executable suffix" >&5
+echo "configure:10671: checking for executable suffix" >&5
if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10601,7 +10677,7 @@ else
rm -f conftest*
echo 'int main () { return 0; }' > conftest.$ac_ext
ac_cv_exeext=
- if { (eval echo configure:10605: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+ if { (eval echo configure:10681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
for file in conftest.*; do
case $file in
*.c | *.o | *.obj | *.ilk | *.pdb) ;;
@@ -10643,7 +10719,7 @@ fi
echo $ac_n "checking for iconv""... $ac_c" 1>&6
-echo "configure:10647: checking for iconv" >&5
+echo "configure:10723: checking for iconv" >&5
if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -10651,7 +10727,7 @@ else
am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no
cat > conftest.$ac_ext <<EOF
-#line 10655 "configure"
+#line 10731 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -10661,7 +10737,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:10665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_func_iconv=yes
else
@@ -10673,7 +10749,7 @@ rm -f conftest*
am_save_LIBS="$LIBS"
LIBS="$LIBS -liconv"
cat > conftest.$ac_ext <<EOF
-#line 10677 "configure"
+#line 10753 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <iconv.h>
@@ -10683,7 +10759,7 @@ iconv_t cd = iconv_open("","");
iconv_close(cd);
; return 0; }
EOF
-if { (eval echo configure:10687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_lib_iconv=yes
am_cv_func_iconv=yes
@@ -10704,13 +10780,13 @@ echo "$ac_t""$am_cv_func_iconv" 1>&6
EOF
echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6
-echo "configure:10708: checking for iconv declaration" >&5
+echo "configure:10784: checking for iconv declaration" >&5
if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 10714 "configure"
+#line 10790 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -10729,7 +10805,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:10733: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10809: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
am_cv_proto_iconv_arg1=""
else
@@ -10949,8 +11025,6 @@ s%@TARGET_SYSTEM_ROOT@%$TARGET_SYSTEM_ROOT%g
s%@TARGET_SYSTEM_ROOT_DEFINE@%$TARGET_SYSTEM_ROOT_DEFINE%g
s%@WARN_CFLAGS@%$WARN_CFLAGS%g
s%@WERROR_CFLAGS@%$WERROR_CFLAGS%g
-s%@MMALLOC_CFLAGS@%$MMALLOC_CFLAGS%g
-s%@MMALLOC@%$MMALLOC%g
s%@SER_HARDWIRE@%$SER_HARDWIRE%g
s%@WIN32LIBS@%$WIN32LIBS%g
s%@LIBGUI@%$LIBGUI%g
diff --git a/gdb/configure.host b/gdb/configure.host
index 723d87c601e..a61de2a0f90 100644
--- a/gdb/configure.host
+++ b/gdb/configure.host
@@ -22,6 +22,7 @@ s390*) gdb_host_cpu=s390 ;;
sh*) gdb_host_cpu=sh ;;
x86_64*) gdb_host_cpu=i386 ;;
xscale*) gdb_host_cpu=arm ;;
+m32r*) gdb_host_cpu=m32r ;;
*) gdb_host_cpu=$host_cpu ;;
esac
@@ -124,20 +125,18 @@ s390*-*-*) gdb_host=s390 ;;
sh*-*-netbsdelf*) gdb_host=nbsd ;;
+sparc64-*-freebsd*) gdb_host=fbsd ;;
sparc-*-linux*) gdb_host=linux ;;
-sparc-*-lynxos*) gdb_host=sparclynx ;;
+sparc64-*-linux*) gdb_host=linux64 ;;
sparc-*-netbsdelf*) gdb_host=nbsdelf ;;
sparc-*-netbsdaout*) gdb_host=nbsdaout ;;
sparc-*-netbsd*) gdb_host=nbsdaout ;;
-sparc-*-solaris2*) gdb_host=sun4sol2 ;;
-sparc-*-sunos4*) gdb_host=sun4os4 ;;
-sparc-*-sunos5*) gdb_host=sun4sol2 ;;
-sparc-*-*) gdb_host=sun4os4 ;;
-sparc64-*-freebsd*|ultrasparc-*-freebsd*|sparcv9-*-freebsd*)
- gdb_host=fbsd ;;
-sparc64-*-linux*) gdb_host=linux ;;
sparc64-*-netbsd*) gdb_host=nbsd64 ;;
-sparcv9-*-* | sparc64-*-*) gdb_host=sun4sol2 ;;
+sparc-*-openbsd*) gdb_host=nbsdelf ;;
+sparc64-*-openbsd*) gdb_host=nbsd64 ;;
+sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
+ gdb_host=sol2
+ ;;
vax-*-bsd*) gdb_host=vaxbsd ;;
vax-*-ultrix2*) gdb_host=vaxult2 ;;
@@ -147,4 +146,6 @@ x86_64-*-linux*) gdb_host=x86-64linux ;;
x86_64-*-freebsd*) gdb_host=fbsd64 ;;
x86_64-*-netbsd*) gdb_host=nbsd64 ;;
+m32r*-*-linux*) gdb_host=linux ;;
+
esac
diff --git a/gdb/configure.in b/gdb/configure.in
index da44f30826e..84ecaa60442 100644
--- a/gdb/configure.in
+++ b/gdb/configure.in
@@ -1,5 +1,5 @@
dnl Autoconf configure script for GDB, the GNU debugger.
-dnl Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+dnl Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
dnl Free Software Foundation, Inc.
dnl
dnl This file is part of GDB.
@@ -317,8 +317,7 @@ case $host_os in
LIBS="../libtermcap/libtermcap.a $LIBS"
ac_cv_search_tgetent="../libtermcap/libtermcap.a"
fi ;;
- go32*)
- # ??? Is this really true?
+ go32* | *djgpp*)
ac_cv_search_tgetent="none required"
;;
aix*)
@@ -344,6 +343,7 @@ AC_HEADER_DIRENT
AC_HEADER_STAT
AC_HEADER_STDC
AC_CHECK_HEADERS(link.h)
+AC_CHECK_HEADERS(machine/reg.h)
AC_CHECK_HEADERS(nlist.h)
AC_CHECK_HEADERS(poll.h sys/poll.h)
AC_CHECK_HEADERS(proc_service.h thread_db.h)
@@ -384,6 +384,18 @@ AC_CHECK_HEADERS(curses.h ncurses.h term.h)
# unconditionally, so what's the point in checking these?
AC_CHECK_HEADERS(ctype.h time.h)
+dnl Check for struct stat with an st_blocks member
+AC_MSG_CHECKING(for member st_blocks in struct stat)
+AC_CACHE_VAL(gdb_cv_have_struct_stat_with_st_blocks_member,
+ [AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/stat.h>],
+ [struct stat st; (void) st.st_blocks;],
+ gdb_cv_have_struct_stat_with_st_blocks_member=yes,
+ gdb_cv_have_struct_stat_with_st_blocks_member=no)])
+AC_MSG_RESULT($gdb_cv_have_struct_stat_with_st_blocks_member)
+if test $gdb_cv_have_struct_stat_with_st_blocks_member = yes; then
+ AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
+fi
# ------------------------- #
# Checks for declarations. #
# ------------------------- #
@@ -480,6 +492,16 @@ if test "$gdb_with_regex" = yes; then
[Define to 1 if the regex included in libiberty should be used.])
fi
+# See if <machine/reg.h> degines `struct reg'.
+AC_CACHE_CHECK([for struct reg in machine/reg.h], gdb_cv_struct_reg,
+[AC_TRY_COMPILE([#include <sys/types.h>
+#include <machine/reg.h>], [struct reg r;],
+gdb_cv_struct_reg=yes, gdb_cv_struct_reg=no)])
+if test $gdb_cv_struct_reg = yes; then
+ AC_DEFINE(HAVE_STRUCT_REG, 1,
+ [Define to 1 if your system has struct reg in <machine/reg.h>.])
+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'.
AC_CACHE_CHECK([for r_fs in struct reg], gdb_cv_struct_reg_r_fs,
@@ -1002,9 +1024,10 @@ AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
# NOTE: If you add to this list, remember to update
# gdb/doc/gdbint.texinfo.
build_warnings="-Wimplicit -Wreturn-type -Wcomment -Wtrigraphs \
--Wformat -Wparentheses -Wpointer-arith -Wuninitialized"
+-Wformat -Wparentheses -Wpointer-arith -Wuninitialized -Wformat-nonliteral \
+-Wunused-label"
# Up for debate: -Wswitch -Wcomment -trigraphs -Wtrigraphs
-# -Wunused-function -Wunused-label -Wunused-variable -Wunused-value
+# -Wunused-function -Wunused-variable -Wunused-value
# -Wchar-subscripts -Wtraditional -Wshadow -Wcast-qual
# -Wcast-align -Wwrite-strings -Wconversion -Wstrict-prototypes
# -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls
@@ -1059,26 +1082,6 @@ fi
AC_SUBST(WARN_CFLAGS)
AC_SUBST(WERROR_CFLAGS)
-MMALLOC_CFLAGS=
-MMALLOC=
-AC_SUBST(MMALLOC_CFLAGS)
-AC_SUBST(MMALLOC)
-
-AC_ARG_WITH(mmalloc,
-[ --with-mmalloc Use memory mapped malloc package],
-[case "${withval}" in
- yes) want_mmalloc=true ;;
- no) want_mmalloc=false;;
- *) AC_MSG_ERROR(bad value ${withval} for GDB with-mmalloc option) ;;
-esac],[want_mmalloc=false])dnl
-
-if test x$want_mmalloc = xtrue; then
- AC_DEFINE(USE_MMALLOC)
- AC_DEFINE(MMCHECK_FORCE)
- MMALLOC_CFLAGS="-I$srcdir/../mmalloc"
- MMALLOC='../mmalloc/libmmalloc.a'
-fi
-
# In the Cygwin environment, we need some additional flags.
AC_CACHE_CHECK([for cygwin], gdb_cv_os_cygwin,
[AC_EGREP_CPP(lose, [
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index d150ccfb3b9..ef9484ca31f 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -38,8 +38,7 @@ esac
case "${target}" in
x86_64-*-freebsd*) gdb_target=fbsd64 ;;
-*-*-freebsd*) gdb_target=fbsd
- ;;
+*-*-freebsd*) gdb_target=fbsd ;;
alpha*-*-osf*) gdb_target=alpha-osf1 ;;
alpha*-*-linux*) gdb_target=alpha-linux ;;
@@ -129,6 +128,7 @@ m68*-*-os68k*) gdb_target=os68k ;;
# OBSOLETE m68*-*-sunos3*) gdb_target=sun3os3 ;;
# OBSOLETE m68*-*-sunos4*) gdb_target=sun3os4 ;;
# OBSOLETE m68*-*-sysv4*) gdb_target=m68kv4 ;;
+m68*-*-uclinux*) gdb_target=monitor ;;
m68*-*-vxworks*) gdb_target=vxworks68 ;;
mcore*-*-*) gdb_target=mcore ;;
@@ -185,26 +185,23 @@ sh*-*-netbsdelf*) gdb_target=nbsd ;;
sh-*-nto*) gdb_target=nto ;;
sh*) gdb_target=embed ;;
-sparc-*-aout*) gdb_target=sparc-em ;;
-sparc-*-coff*) gdb_target=sparc-em ;;
-sparc-*-elf*) gdb_target=sparc-em ;;
sparc-*-linux*) gdb_target=linux ;;
-sparc-*-lynxos*) gdb_target=sparclynx ;;
+sparc64-*-linux*) gdb_target=linux64 ;;
sparc-*-netbsd*) gdb_target=nbsd ;;
-sparc-*-solaris2*) gdb_target=sun4sol2 ;;
-sparc-*-sunos4*) gdb_target=sun4os4 ;;
-sparc-*-sunos5*) gdb_target=sun4sol2 ;;
-sparc-*-vxworks*) gdb_target=vxsparc ;;
-sparc-*-*) gdb_target=sun4os4 ;;
-# It's not clear what the right solution for "v8plus" systems is yet.
-# For now, stick with sparc-sun-solaris2 since that's what config.guess
-# should return. Work is still needed to get gdb to print the 64 bit
-# regs (some of which are usable in v8plus) so sp64sol.mt hasn't been
-# deleted though presumably it should be eventually.
-#sparc64-*-solaris2*) gdb_target=sp64sol2 ;;
-sparc64-*-linux*) gdb_target=sp64linux ;;
sparc64-*-netbsd*) gdb_target=nbsd64 ;;
-sparcv9-*-* | sparc64-*-*) gdb_target=sp64 ;;
+sparc-*-openbsd*) gdb_target=obsd ;;
+sparc64-*-openbsd*) gdb_target=obsd64
+ gdb_osabi=GDB_OSABI_OPENBSD_ELF
+ ;;
+sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
+ gdb_target=sol2
+ ;;
+sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
+ gdb_target=sol2-64
+ ;;
+sparc-*-vxworks*) gdb_target=vxworks ;;
+sparc-*-*) gdb_target=sparc ;;
+sparc64-*-*) gdb_target=sparc64 ;;
xstormy16-*-*) gdb_target=xstormy16 ;;
diff --git a/gdb/core-sol2.c b/gdb/core-sol2.c
deleted file mode 100644
index 456eebc8f62..00000000000
--- a/gdb/core-sol2.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/* Machine independent support for Solaris 2 core files for GDB.
- Copyright 1994, 1995, 1996, 1998, 1999, 2000, 2001
- Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-
-/* Solaris comes with two flavours of core files, cores generated by
- an ELF executable and cores generated by programs that were
- run under BCP (the part of Solaris which allows it to run SunOS4
- a.out files).
- This file combines the core register fetching from core-regset.c
- and sparc-nat.c to be able to read both flavours. */
-
-#include "defs.h"
-
-#if defined (__sparcv9)
-/* Fails to get included by the Solaris system header files. */
-# include <v9/sys/privregs.h>
-#endif
-
-#include <time.h>
-#include <sys/types.h>
-#include <sys/regset.h>
-#include <sys/procfs.h>
-#include <fcntl.h>
-#include <errno.h>
-#include "gdb_string.h"
-#include "regcache.h"
-
-#include "inferior.h"
-#include "target.h"
-#include "command.h"
-#include "gdbcore.h"
-
-/* Prototypes for supply_gregset etc. */
-#include "gregset.h"
-
-static void fetch_core_registers (char *, unsigned, int, CORE_ADDR);
-
-/* Fetch registers from core file data pointed to by CORE_REG_SECT. When
- WHICH is 0, the the general register set is fetched; when WHICH is
- 2, the floating point registers are fetched. CORE_REG_SIZE is used
- to validate the size of the data pointed to by CORE_REG_SECT. REG_ADDR
- is unused. */
-
-static void
-fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which,
- CORE_ADDR reg_addr)
-{
- int i;
-
- if (which == 0)
- {
- prgregset_t prgregset;
-
- if (core_reg_size == sizeof (prgregset_t))
- {
- memcpy ((char *) &prgregset, core_reg_sect, sizeof (prgregset));
- supply_gregset (&prgregset);
- }
-#if defined (HAVE_PRGREGSET32_T)
- /* 32-bit corefile, 64-bit debugger. */
- else if (core_reg_size == sizeof (prgregset32_t))
- {
- prgreg32_t *core_gregs;
-
- /* Can't use memcpy here, because the core file contains
- 32-bit regs; supply_register expects 64-bit regs. */
- core_gregs = (prgreg32_t *) core_reg_sect;
- for (i = 0; i < NPRGREG; i++)
- prgregset[i] = core_gregs[i];
-
- supply_gregset (&prgregset);
- }
-#endif /* HAVE_PRGREGSET32_T */
- else if (core_reg_size == sizeof (struct regs))
- {
- struct regs *gregs = (struct regs *) core_reg_sect;
-
- /* G0 *always* holds 0. */
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (0)] = 0;
-
- /* The globals and output registers. */
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (G1_REGNUM)],
- &gregs->r_g1, 15 * DEPRECATED_REGISTER_RAW_SIZE (G1_REGNUM));
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PS_REGNUM)]
- = gregs->r_ps;
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PC_REGNUM)]
- = gregs->r_pc;
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (DEPRECATED_NPC_REGNUM)]
- = gregs->r_npc;
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)]
- = gregs->r_y;
-
- /* My best guess at where to get the locals and input
- registers is exactly where they usually are, right above
- the stack pointer. If the core dump was caused by a bus error
- from blowing away the stack pointer (as is possible) then this
- won't work, but it's worth the try. */
- {
- int sp;
-
- sp = *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)];
- if (0 != target_read_memory (sp,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)],
- 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM)))
- {
- warning ("couldn't read input and local registers from core file\n");
- }
- }
- }
- else
- {
- warning ("wrong size gregset struct in core file");
- }
- }
- else if (which == 2)
- {
- prfpregset_t prfpregset;
-
- if (core_reg_size == sizeof (prfpregset_t))
- {
- memcpy ((char *) &prfpregset, core_reg_sect, sizeof (prfpregset));
- supply_fpregset (&prfpregset);
- }
-#if defined (HAVE_PRFPREGSET32_T)
- /* 32-bit corefile, 64-bit debugger. */
- else if (core_reg_size == sizeof (prfpregset32_t))
- {
- prfpregset32_t *core_fpregset;
-
- /* Can't use memcpy here, because the core file contains
- 32-bit regs; supply_fpregset expects 64-bit regs. */
-
- core_fpregset = (prfpregset32_t *) core_reg_sect;
- for (i = 0; i < 16; i++)
- prfpregset.pr_fr.pr_dregs[i] = core_fpregset->pr_fr.pr_dregs[i];
- while (i < 32)
- prfpregset.pr_fr.pr_dregs[i++] = 0;
-
- prfpregset.pr_fsr = core_fpregset->pr_fsr;
- prfpregset.pr_qcnt = core_fpregset->pr_qcnt;
- prfpregset.pr_q_entrysize = core_fpregset->pr_q_entrysize;
- prfpregset.pr_en = core_fpregset->pr_en;
- /* We will not use the pr_q array. */
-
- supply_fpregset (&prfpregset);
- }
-#endif /* HAVE_PRFPREGSET32_T */
- else if (core_reg_size >= sizeof (struct fpu))
- {
- struct fpu *fpuregs = (struct fpu *) core_reg_sect;
-
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)],
- &fpuregs->fpu_fr, sizeof (fpuregs->fpu_fr));
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)],
- &fpuregs->fpu_fsr, sizeof (FPU_FSR_TYPE));
- }
- else
- {
- warning ("wrong size fpregset struct in core file");
- }
- }
-}
-
-
-/* Register that we are able to handle solaris core file formats. */
-
-static struct core_fns solaris_core_fns =
-{
- bfd_target_elf_flavour, /* core_flavour */
- default_check_format, /* check_format */
- default_core_sniffer, /* core_sniffer */
- fetch_core_registers, /* core_read_registers */
- NULL /* next */
-};
-
-void
-_initialize_core_solaris (void)
-{
- add_core_fns (&solaris_core_fns);
-}
diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c
index d7714efb3ae..b9cc794e353 100644
--- a/gdb/cp-namespace.c
+++ b/gdb/cp-namespace.c
@@ -1,5 +1,5 @@
/* Helper routines for C++ support in GDB.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
Contributed by David Carlton and by Kealia, Inc.
@@ -36,9 +36,9 @@
/* When set, the file that we're processing is known to have debugging
info for C++ namespaces. */
-/* NOTE: carlton/2003-11-10: No currently released version of GCC (the
+/* NOTE: carlton/2004-01-13: No currently released version of GCC (the
latest of which is 3.3.x at the time of this writing) produces this
- debug info. */
+ debug info. GCC 3.4 should, however. */
unsigned char processing_has_namespace_info;
@@ -53,9 +53,9 @@ unsigned char processing_has_namespace_info;
};
}
- then processing_current_prefix should be set to "N::C". If
- processing_has_namespace_info is false, then this variable might
- not be reliable. */
+ then processing_current_prefix should be set to "N::C". If
+ processing_has_namespace_info is false, then this variable might
+ not be reliable. */
const char *processing_current_prefix;
@@ -86,9 +86,9 @@ static struct symbol *lookup_symbol_file (const char *name,
struct symtab **symtab,
int anonymous_namespace);
-static struct type *lookup_transparent_type_namespace_loop (const char *name,
- const char *scope,
- int scope_len);
+static struct type *cp_lookup_transparent_type_loop (const char *name,
+ const char *scope,
+ int scope_len);
static void initialize_namespace_symtab (struct objfile *objfile);
@@ -531,19 +531,13 @@ cp_lookup_nested_type (struct type *parent_type,
case TYPE_CODE_STRUCT:
case TYPE_CODE_NAMESPACE:
{
- /* NOTE: carlton/2002-12-17: As of this writing, C++ class
- members of classes aren't treated like, say, data or
- function members. Instead, they're just represented by
- symbols whose names are qualified by the name of the
- surrounding class. This is just like members of
- namespaces; in particular, lookup_symbol_namespace works
- when looking them up. */
-
- /* NOTE: carlton/2002-12-17: The above is, actually, lying:
- there are still situations where nested types are
- represented by symbols that include only the member name,
- not the parent name. Sigh. Blame it on stabs, or
- something. */
+ /* NOTE: carlton/2003-11-10: We don't treat C++ class members
+ of classes like, say, data or function members. Instead,
+ they're just represented by symbols whose names are
+ qualified by the name of the surrounding class. This is
+ just like members of namespaces; in particular,
+ lookup_symbol_namespace works when looking them up. */
+
const char *parent_name = TYPE_TAG_NAME (parent_type);
struct symbol *sym = cp_lookup_symbol_namespace (parent_name,
nested_name,
@@ -562,56 +556,72 @@ cp_lookup_nested_type (struct type *parent_type,
}
}
-/* Try to look up the type definition associated to NAME if honest
- methods don't work: look for NAME in the classes/namespaces that
- are currently active, on the off chance that it might be there. */
+/* The C++-version of lookup_transparent_type. */
+
+/* FIXME: carlton/2004-01-16: The problem that this is trying to
+ address is that, unfortunately, sometimes NAME is wrong: it may not
+ include the name of namespaces enclosing the type in question.
+ lookup_transparent_type gets called when the the type in question
+ is a declaration, and we're trying to find its definition; but, for
+ declarations, our type name deduction mechanism doesn't work.
+ There's nothing we can do to fix this in general, I think, in the
+ absence of debug information about namespaces (I've filed PR
+ gdb/1511 about this); until such debug information becomes more
+ prevalent, one heuristic which sometimes looks is to search for the
+ definition in namespaces containing the current namespace.
+
+ We should delete this functions once the appropriate debug
+ information becomes more widespread. (GCC 3.4 will be the first
+ released version of GCC with such information.) */
struct type *
-lookup_transparent_type_namespace (const char *name)
+cp_lookup_transparent_type (const char *name)
{
- const char *scope = block_scope (get_selected_block (0));
+ /* First, try the honest way of looking up the definition. */
+ struct type *t = basic_lookup_transparent_type (name);
+ const char *scope;
+
+ if (t != NULL)
+ return t;
- if (strstr (scope, "::") == NULL)
+ /* If that doesn't work and we're within a namespace, look there
+ instead. */
+ scope = block_scope (get_selected_block (0));
+
+ if (scope[0] == '\0')
return NULL;
- return lookup_transparent_type_namespace_loop (name, scope, 0);
+ return cp_lookup_transparent_type_loop (name, scope, 0);
}
/* Lookup the the type definition associated to NAME in
- namespaces/classes containing SCOPE other than the global
- namespace. */
+ namespaces/classes containing SCOPE whose name is strictly longer
+ than LENGTH. LENGTH must be the index of the start of a
+ component of SCOPE. */
static struct type *
-lookup_transparent_type_namespace_loop (const char *name, const char *scope,
- int scope_len)
+cp_lookup_transparent_type_loop (const char *name, const char *scope,
+ int length)
{
- int new_scope_len = scope_len;
+ int scope_length = cp_find_first_component (scope + length);
char *full_name;
- /* If the current scope is followed by "::", skip past that. */
- if (new_scope_len != 0)
- new_scope_len += 2;
- new_scope_len += cp_find_first_component (scope + new_scope_len);
-
- if (scope[new_scope_len] == ':')
+ /* If the current scope is followed by "::", look in the next
+ component. */
+ if (scope[scope_length] == ':')
{
struct type *retval
- = lookup_transparent_type_namespace_loop (name, scope, new_scope_len);
+ = cp_lookup_transparent_type_loop (name, scope, scope_length + 2);
if (retval != NULL)
return retval;
}
- /* If there's no enclosing scope, lookup_transparent_type would have
- found it. */
- if (scope_len == 0)
- return NULL;
-
- full_name = alloca (scope_len + 2 + strlen (name) + 1);
- strncpy (full_name, scope, scope_len);
- strncpy (full_name + scope_len, "::", 2);
- strcpy (full_name + scope_len + 2, name);
+ full_name = alloca (scope_length + 2 + strlen (name) + 1);
+ strncpy (full_name, scope, scope_length);
+ strncpy (full_name + scope_length, "::", 2);
+ strcpy (full_name + scope_length + 2, name);
- return lookup_transparent_type_aux (full_name);
+ return basic_lookup_transparent_type (full_name);
}
/* Now come functions for dealing with symbols associated to
diff --git a/gdb/cp-support.h b/gdb/cp-support.h
index ed315925405..03b8b9df5ae 100644
--- a/gdb/cp-support.h
+++ b/gdb/cp-support.h
@@ -1,5 +1,5 @@
/* Helper routines for C++ support in GDB.
- Copyright 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by MontaVista Software.
Namespace support contributed by David Carlton.
@@ -113,7 +113,7 @@ extern struct type *cp_lookup_nested_type (struct type *parent_type,
extern void cp_check_possible_namespace_symbols (const char *name,
struct objfile *objfile);
-struct type *lookup_transparent_type_namespace (const char *name);
+struct type *cp_lookup_transparent_type (const char *name);
/* The list of "maint cplus" commands. */
diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c
index 6c5483b7055..6ef3b05c270 100644
--- a/gdb/cris-tdep.c
+++ b/gdb/cris-tdep.c
@@ -1,5 +1,7 @@
/* Target dependent code for CRIS, for GDB, the GNU debugger.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+
Contributed by Axis Communications AB.
Written by Hendrik Ruijter, Stefan Andersson, and Orjan Friberg.
@@ -176,9 +178,6 @@ cris_abi (void)
return (gdbarch_tdep (current_gdbarch)->cris_abi);
}
-/* For saving call-clobbered contents in R9 when returning structs. */
-static CORE_ADDR struct_return_address;
-
struct frame_extra_info
{
CORE_ADDR return_pc;
@@ -1078,26 +1077,14 @@ cris_abi_v2_extract_return_value (struct type *type, char *regbuf,
}
/* Store the address of the place in which to copy the structure the
- subroutine will return. In the CRIS ABI, R9 is used in order to pass
- the address of the allocated area where a structure return value must
- be stored. R9 is call-clobbered, which means we must save it here for
- later use. */
+ subroutine will return. In the CRIS ABI, R9 is used in order to
+ pass the address of the allocated area where a structure return
+ value must be stored. */
static void
cris_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
{
write_register (STR_REGNUM, addr);
- struct_return_address = addr;
-}
-
-/* Extract from regbuf the address where a function should return a
- structure value. It's not there in the CRIS ABI, so we must do it another
- way. */
-
-static CORE_ADDR
-cris_extract_struct_value_address (char *regbuf)
-{
- return struct_return_address;
}
/* Returns 1 if the given type will be passed by pointer rather than
@@ -4267,8 +4254,6 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_pop_frame (gdbarch, cris_pop_frame);
set_gdbarch_deprecated_store_struct_return (gdbarch, cris_store_struct_return);
- set_gdbarch_deprecated_extract_struct_value_address
- (gdbarch, cris_extract_struct_value_address);
set_gdbarch_use_struct_convention (gdbarch, always_use_struct_convention);
set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, cris_frame_init_saved_regs);
@@ -4281,13 +4266,6 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_breakpoint_from_pc (gdbarch, cris_breakpoint_from_pc);
- /* The PC must not be decremented after a breakpoint. (The breakpoint
- handler takes care of that.) */
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
-
- /* Offset from address of function to start of its code. */
- set_gdbarch_function_start_offset (gdbarch, 0);
-
/* The number of bytes at the start of arglist that are not really args,
0 in the CRIS ABI. */
set_gdbarch_frame_args_skip (gdbarch, 0);
diff --git a/gdb/d10v-tdep.c b/gdb/d10v-tdep.c
index 6ad5ed5c21e..b4eb2bb454d 100644
--- a/gdb/d10v-tdep.c
+++ b/gdb/d10v-tdep.c
@@ -293,12 +293,6 @@ d10v_register_type (struct gdbarch *gdbarch, int reg_nr)
}
static int
-d10v_daddr_p (CORE_ADDR x)
-{
- return (((x) & 0x3000000) == DMEM_START);
-}
-
-static int
d10v_iaddr_p (CORE_ADDR x)
{
return (((x) & 0x3000000) == IMEM_START);
@@ -1516,7 +1510,6 @@ d10v_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_skip_prologue (gdbarch, d10v_skip_prologue);
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
set_gdbarch_decr_pc_after_break (gdbarch, 4);
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_breakpoint_from_pc (gdbarch, d10v_breakpoint_from_pc);
set_gdbarch_remote_translate_xfer_address (gdbarch,
diff --git a/gdb/dbxread.c b/gdb/dbxread.c
index 5d02367f9be..6b88ea5bd74 100644
--- a/gdb/dbxread.c
+++ b/gdb/dbxread.c
@@ -2087,6 +2087,7 @@ read_dbx_symtab (struct objfile *objfile)
case N_OBJ: /* useless types from Solaris */
case N_OPT:
+ case N_PATCH:
/* These symbols aren't interesting; don't worry about them */
continue;
@@ -3253,6 +3254,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
/* The following symbol types can be ignored. */
case N_OBJ: /* Solaris 2: Object file dir and name */
+ case N_PATCH: /* Solaris2: Patch Run Time Checker. */
/* N_UNDF: Solaris 2: file separator mark */
/* N_UNDF: -- we will never encounter it, since we only process one
file's symbols at once. */
diff --git a/gdb/defs.h b/gdb/defs.h
index eac3e4a987f..8490e761cf8 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -1,7 +1,7 @@
/* *INDENT-OFF* */ /* ATTR_FORMAT confuses indent, avoid running it for now */
/* Basic, host-specific, and target-specific definitions for GDB.
Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -355,7 +355,6 @@ extern void request_quit (int);
extern void do_cleanups (struct cleanup *);
extern void do_final_cleanups (struct cleanup *);
-extern void do_my_cleanups (struct cleanup **, struct cleanup *);
extern void do_run_cleanups (struct cleanup *);
extern void do_exec_cleanups (struct cleanup *);
extern void do_exec_error_cleanups (struct cleanup *);
@@ -912,6 +911,8 @@ extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
+extern NORETURN void error_silent (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
+
extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
/* Initialize the error buffer. */
@@ -921,6 +922,9 @@ extern void error_init (void);
message. */
extern char *error_last_message (void);
+/* Output arbitrary error message. */
+extern void error_output_message (char *pre_print, char *msg);
+
extern NORETURN void internal_verror (const char *file, int line,
const char *, va_list ap) ATTR_NORETURN;
@@ -983,6 +987,11 @@ extern NORETURN void throw_exception (enum return_reason) ATTR_NORETURN;
new cleanup_chain is established. The old values are restored
before catch_exceptions() returns.
+ The variant catch_exceptions_with_msg() is the same as
+ catch_exceptions() but adds the ability to return an allocated
+ copy of the gdb error message. This is used when a silent error is
+ issued and the caller wants to manually issue the error message.
+
FIXME; cagney/2001-08-13: The need to override the global UIOUT
builder variable should just go away.
@@ -995,6 +1004,11 @@ typedef int (catch_exceptions_ftype) (struct ui_out *ui_out, void *args);
extern int catch_exceptions (struct ui_out *uiout,
catch_exceptions_ftype *func, void *func_args,
char *errstring, return_mask mask);
+extern int catch_exceptions_with_msg (struct ui_out *uiout,
+ catch_exceptions_ftype *func,
+ void *func_args,
+ char *errstring, char **gdberrmsg,
+ return_mask mask);
/* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero
otherwize the result from CATCH_ERRORS_FTYPE is returned. It is
@@ -1035,6 +1049,7 @@ enum gdb_osabi
GDB_OSABI_FREEBSD_ELF,
GDB_OSABI_NETBSD_AOUT,
GDB_OSABI_NETBSD_ELF,
+ GDB_OSABI_OPENBSD_ELF,
GDB_OSABI_WINCE,
GDB_OSABI_GO32,
GDB_OSABI_NETWARE,
diff --git a/gdb/dink32-rom.c b/gdb/dink32-rom.c
index 3b10c7caa2e..4a6814093a0 100644
--- a/gdb/dink32-rom.c
+++ b/gdb/dink32-rom.c
@@ -96,19 +96,6 @@ dink32_supply_register (char *regname, int regnamelen, char *val, int vallen)
monitor_supply_register (regno, val);
}
-static void
-dink32_load (struct monitor_ops *monops, char *filename, int from_tty)
-{
- generic_load (filename, from_tty);
-
- /* Finally, make the PC point at the start address */
- if (exec_bfd)
- write_pc (bfd_get_start_address (exec_bfd));
-
- inferior_ptid = null_ptid; /* No process now */
-}
-
-
/* This array of registers needs to match the indexes used by GDB. The
whole reason this exists is because the various ROM monitors use
different names than GDB does, and don't support all the registers
@@ -172,9 +159,6 @@ _initialize_dink32_rom (void)
/* S-record download, via "keyboard port". */
dink32_cmds.load = "dl -k\r";
dink32_cmds.loadresp = "Set Input Port : set to Keyboard Port\r";
-#if 0 /* slow load routine not needed if S-records work... */
- dink32_cmds.load_routine = dink32_load;
-#endif
dink32_cmds.prompt = "DINK32_603 >>";
dink32_cmds.line_term = "\r";
dink32_cmds.target = &dink32_ops;
diff --git a/gdb/disasm.c b/gdb/disasm.c
index 20d0ab3404b..3cde2ea9040 100644
--- a/gdb/disasm.c
+++ b/gdb/disasm.c
@@ -1,6 +1,6 @@
/* Disassemble support for GDB.
- Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -164,6 +164,8 @@ do_mixed_source_and_assembly (struct ui_out *uiout,
CORE_ADDR pc;
int num_displayed = 0;
struct cleanup *ui_out_chain;
+ struct cleanup *ui_out_tuple_chain = make_cleanup (null_cleanup, 0);
+ struct cleanup *ui_out_list_chain = make_cleanup (null_cleanup, 0);
mle = (struct dis_line_entry *) alloca (nlines
* sizeof (struct dis_line_entry));
@@ -221,10 +223,6 @@ do_mixed_source_and_assembly (struct ui_out *uiout,
for (i = 0; i < newlines; i++)
{
- struct cleanup *ui_out_tuple_chain = NULL;
- struct cleanup *ui_out_list_chain = NULL;
- int close_list = 1;
-
/* Print out everything from next_line to the current line. */
if (mle[i].line >= next_line)
{
@@ -275,23 +273,23 @@ do_mixed_source_and_assembly (struct ui_out *uiout,
next_line = mle[i].line + 1;
ui_out_list_chain
= make_cleanup_ui_out_list_begin_end (uiout, "line_asm_insn");
- /* Don't close the list if the lines are not in order. */
- if (i < (newlines - 1) && mle[i + 1].line <= mle[i].line)
- close_list = 0;
}
num_displayed += dump_insns (uiout, di, mle[i].start_pc, mle[i].end_pc,
how_many, stb);
- if (close_list)
+
+ /* When we've reached the end of the mle array, or we've seen the last
+ assembly range for this source line, close out the list/tuple. */
+ if (i == (newlines - 1) || mle[i + 1].line > mle[i].line)
{
do_cleanups (ui_out_list_chain);
do_cleanups (ui_out_tuple_chain);
+ ui_out_tuple_chain = make_cleanup (null_cleanup, 0);
+ ui_out_list_chain = make_cleanup (null_cleanup, 0);
ui_out_text (uiout, "\n");
- close_list = 0;
}
- if (how_many >= 0)
- if (num_displayed >= how_many)
- break;
+ if (how_many >= 0 && num_displayed >= how_many)
+ break;
}
do_cleanups (ui_out_chain);
}
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 1bd740159dc..2ddf21ad3c2 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,54 @@
+2004-01-24 Eli Zaretskii <eliz@gnu.org>
+
+ * gdb.texinfo (KOD): Document "show os". Add index entries for
+ "set/show os" and "info cisco" commands.
+
+2004-01-21 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.in (install-info): Prepend $(DESTDIR) to $(infodir).
+
+2004-01-19 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdbint.texinfo: Delete USE_MMALLOC, NO_MMCHECK, MMCHECK_FORCE,
+ MMAP_BASE_ADDRESS, MMAP_INCREMENT.
+
+2004-01-19 Nick Roberts <nick@nick.uklinux.net>
+
+ * gdb.texinfo (GDB/MI Stack Manipulation): Describe extension to
+ -stack-list-locals.
+ (GDB/MI Variable Objects): Describe extension to
+ -var-list-children.
+
+2004-01-17 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdbint.texinfo (DECR_PC_AFTER_HW_BREAK): Don't document.
+
+2004-01-17 Andrew Cagney <cagney@redhat.com>
+
+ * gdbint.texinfo (Target Architecture Definition): Delete
+ documentation on DEPRECATED_NPC_REGNUM.
+
+2004-01-13 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdb.texinfo: Update copyright year. Mention that set
+ follow-fork-mode is supported on GNU/Linux. Remove documentation of
+ "set follow-fork-mode ask".
+
+2004-01-13 Andrew Cagney <cagney@redhat.com>
+
+ * gdbint.texinfo: Update copyright year.
+ (Coding): Add -Wunused-label to list of -Werror warnings.
+
+2004-01-08 Jason Molenda <jmolenda@apple.com>
+ Eli Zaretskii <eliz@is.elta.co.il>
+
+ * gdb.texinfo: Update copyright.
+ (Objective-C): "methodName" typeo fixed. Add @code/@var markup
+ around names, as appropriate. Minor syntax cleanup of
+ _NSPrintForDebugger explanation. Two spaces after periods.
+ GDBN used instead of lit. "gdb". Index entries added for
+ print-object and _NSPrintForDebugger. @noindent added in one spot.
+
2003-11-11 Elena Zannoni <ezannoni@redhat.com>
* stabs.texinfo: Add dircategory and direntry commands.
diff --git a/gdb/doc/Makefile.in b/gdb/doc/Makefile.in
index a06cc4ac711..90043b7fa51 100644
--- a/gdb/doc/Makefile.in
+++ b/gdb/doc/Makefile.in
@@ -171,8 +171,8 @@ install-info: $(INFO_DEPS)
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
list='$(INFO_DEPS)'; \
for file in $$list; do \
- echo " install-info --info-dir=$(infodir) $(DESTDIR)$(infodir)/$$file";\
- install-info --info-dir=$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
+ echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
+ install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
done; \
else : ; fi
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index f470800cdce..c99dcad7a59 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1,6 +1,6 @@
\input texinfo @c -*-texinfo-*-
@c Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,
-@c 1999, 2000, 2001, 2002, 2003
+@c 1999, 2000, 2001, 2002, 2003, 2004
@c Free Software Foundation, Inc.
@c
@c %**start of header
@@ -52,7 +52,7 @@ This is the @value{EDITION} Edition, of @cite{Debugging with
Version @value{GDBVN}.
Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998,@*
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -84,7 +84,7 @@ development.''
@vskip 0pt plus 1filll
Copyright @copyright{} 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-1996, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
@sp 2
Published by the Free Software Foundation @*
59 Temple Place - Suite 330, @*
@@ -115,7 +115,7 @@ This file describes @value{GDBN}, the @sc{gnu} symbolic debugger.
This is the @value{EDITION} Edition, for @value{GDBN} Version
@value{GDBVN}.
-Copyright (C) 1988-2003 Free Software Foundation, Inc.
+Copyright (C) 1988-2004 Free Software Foundation, Inc.
@menu
* Summary:: Summary of @value{GDBN}
@@ -2289,9 +2289,10 @@ get its process ID. Then tell @value{GDBN} (a new invocation of
the child process (@pxref{Attach}). From that point on you can debug
the child process just like any other process which you attached to.
-On HP-UX (11.x and later only?), @value{GDBN} provides support for
-debugging programs that create additional processes using the
-@code{fork} or @code{vfork} function.
+On some systems, @value{GDBN} provides support for debugging programs that
+create additional processes using the @code{fork} or @code{vfork} functions.
+Currently, the only platforms with this feature are HP-UX (11.x and later
+only?) and GNU/Linux (kernel version 2.5.60 and later).
By default, when a program forks, @value{GDBN} will continue to debug
the parent process and the child process will run unimpeded.
@@ -2315,8 +2316,6 @@ unimpeded. This is the default.
The new process is debugged after a fork. The parent process runs
unimpeded.
-@item ask
-The debugger will ask for one of the above choices.
@end table
@item show follow-fork-mode
@@ -8482,12 +8481,13 @@ A fully qualified Objective-C method name is specified as
-[@var{Class} @var{methodName}]
@end smallexample
-where the minus sign is used to indicate an instance method and a plus
-sign (not shown) is used to indicate a class method. The
-class name @var{Class} and method name @var{methoName} are enclosed in
-brackets, similar to the way messages are specified in Objective-C source
-code. For example, to set a breakpoint at the @code{create} instance method of
-class @code{Fruit} in the program currently being debugged, enter:
+where the minus sign is used to indicate an instance method and a
+plus sign (not shown) is used to indicate a class method. The class
+name @var{Class} and method name @var{methodName} are enclosed in
+brackets, similar to the way messages are specified in Objective-C
+source code. For example, to set a breakpoint at the @code{create}
+instance method of class @code{Fruit} in the program currently being
+debugged, enter:
@smallexample
break -[Fruit create]
@@ -8500,10 +8500,10 @@ enter:
list +[NSText initialize]
@end smallexample
-In the current version of GDB, the plus or minus sign is required. In
-future versions of GDB, the plus or minus sign will be optional, but you
-can use it to narrow the search. It is also possible to specify just a
-method name:
+In the current version of @value{GDBN}, the plus or minus sign is
+required. In future versions of @value{GDBN}, the plus or minus
+sign will be optional, but you can use it to narrow the search. It
+is also possible to specify just a method name:
@smallexample
break create
@@ -8524,20 +8524,24 @@ clear -[NSWindow makeKeyAndOrderFront:]
@node The Print Command with Objective-C
@subsubsection The Print Command With Objective-C
+@kindex print-object
+@kindex po @r{(@code{print-object})}
-The print command has also been extended to accept methods. For example:
+The print command has also been extended to accept methods. For example:
@smallexample
-print -[object hash]
+print -[@var{object} hash]
@end smallexample
@cindex print an Objective-C object description
-will tell gdb to send the -hash message to object and print the
-result. Also an additional command has been added, @code{print-object}
-or @code{po} for short, which is meant to print the description of an
-object. However, this command may only work with certain Objective-C
-libraries that have a particular hook function, called
-@code{_NSPrintForDebugger} defined.
+@cindex @code{_NSPrintForDebugger}, and printing Objective-C objects
+@noindent
+will tell @value{GDBN} to send the @code{hash} message to @var{object}
+and print the result. Also, an additional command has been added,
+@code{print-object} or @code{po} for short, which is meant to print
+the description of an object. However, this command may only work
+with certain Objective-C libraries that have a particular hook
+function, @code{_NSPrintForDebugger}, defined.
@node Modula-2, , Objective-C, Support
@subsection Modula-2
@@ -10628,9 +10632,7 @@ configuration of @value{GDBN}; use @code{help target} to list them.
@node KOD
@section Kernel Object Display
-
@cindex kernel object display
-@cindex kernel object
@cindex KOD
Some targets support kernel object display. Using this facility,
@@ -10639,6 +10641,7 @@ and can display information about operating system-level objects such as
mutexes and other synchronization objects. Exactly which objects can be
displayed is determined on a per-OS basis.
+@kindex set os
Use the @code{set os} command to set the operating system. This tells
@value{GDBN} which kernel object display module to initialize:
@@ -10646,11 +10649,17 @@ Use the @code{set os} command to set the operating system. This tells
(@value{GDBP}) set os cisco
@end smallexample
+@kindex show os
+The associated command @code{show os} displays the operating system
+set with the @code{set os} command; if no operating system has been
+set, @code{show os} will display an empty string @samp{""}.
+
If @code{set os} succeeds, @value{GDBN} will display some information
about the operating system, and will create a new @code{info} command
which can be used to query the target. The @code{info} command is named
after the operating system:
+@kindex info cisco
@smallexample
(@value{GDBP}) info cisco
List of Cisco Kernel Objects
@@ -10661,8 +10670,10 @@ any Any and all objects
Further subcommands can be used to query about particular objects known
by the kernel.
-There is currently no way to determine whether a given operating system
-is supported other than to try it.
+There is currently no way to determine whether a given operating
+system is supported other than to try setting it with @kbd{set os
+@var{name}}, where @var{name} is the name of the operating system you
+want to try.
@node Remote Debugging
@@ -17202,8 +17213,14 @@ Show a single frame:
@end smallexample
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 their values.
+argument of 0 or @code{--no-values}, prints only the names of the variables.
+With argument of 1 or @code{--all-values}, prints also their values. With
+argument of 2 or @code{--simple-values}, prints the name, type and value for
+simple data types and the name and type for arrays, structures and
+unions. In this last case, the idea is that the user can see the
+value of simple data types immediately and he can create variable
+objects for other data types if he wishes to explore their values in
+more detail.
@subsubheading @value{GDBN} Command
@@ -17216,9 +17233,12 @@ prints also their values.
-stack-list-locals 0
^done,locals=[name="A",name="B",name="C"]
(@value{GDBP})
--stack-list-locals 1
+-stack-list-locals --all-values
^done,locals=[@{name="A",value="1"@},@{name="B",value="2"@},
- @{name="C",value="3"@}]
+ @{name="C",value="@{1, 2, 3@}"@}]
+-stack-list-locals --simple-values
+^done,locals=[@{name="A",type="int",value="1"@},
+ @{name="B",type="int",value="2"@},@{name="C",type="int [3]"@}]
(@value{GDBP})
@end smallexample
@@ -18162,14 +18182,26 @@ Returns the number of children of a variable object @var{name}:
@subsubheading Synopsis
@smallexample
- -var-list-children @var{name}
+ -var-list-children [@var{print-values}] @var{name}
@end smallexample
-Returns a list of the children of the specified variable object:
+Returns a list of the children of the specified variable object. With
+just the variable object name as an argument or with an optional
+preceding argument of 0 or @code{--no-values}, prints only the names of the
+variables. With an optional preceding argument of 1 or @code{--all-values},
+also prints their values.
+
+@subsubheading Example
@smallexample
+(@value{GDBP})
+ -var-list-children n
numchild=@var{n},children=[@{name=@var{name},
numchild=@var{n},type=@var{type}@},@r{(repeats N times)}]
+(@value{GDBP})
+ -var-list-children --all-values n
+ numchild=@var{n},children=[@{name=@var{name},
+ numchild=@var{n},value=@var{value},type=@var{type}@},@r{(repeats N times)}]
@end smallexample
diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo
index 3170ce242d7..ebf9a371186 100644
--- a/gdb/doc/gdbint.texinfo
+++ b/gdb/doc/gdbint.texinfo
@@ -8,7 +8,7 @@
@ifinfo
This file documents the internals of the GNU debugger @value{GDBN}.
-Copyright 1990,1991,1992,1993,1994,1996,1998,1999,2000,2001,2002,2003
+Copyright 1990,1991,1992,1993,1994,1996,1998,1999,2000,2001,2002,2003,2004
Free Software Foundation, Inc.
Contributed by Cygnus Solutions. Written by John Gilmore.
Second Edition by Stan Shebs.
@@ -48,7 +48,7 @@ Free Documentation License''.
@vskip 0pt plus 1filll
Copyright @copyright{} 1990,1991,1992,1993,1994,1996,1998,1999,2000,2001,
- 2002, 2003 Free Software Foundation, Inc.
+ 2002, 2003, 2004 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -480,13 +480,6 @@ two macros can use them for their internal purposes.
If the inferior has some watchpoint that triggered, return the address
associated with that watchpoint. Otherwise, return zero.
-@findex DECR_PC_AFTER_HW_BREAK
-@item DECR_PC_AFTER_HW_BREAK
-If defined, @value{GDBN} decrements the program counter by the value
-of @code{DECR_PC_AFTER_HW_BREAK} after a hardware break-point. This
-overrides the value of @code{DECR_PC_AFTER_BREAK} when a breakpoint
-that breaks is a hardware-assisted breakpoint.
-
@findex HAVE_STEPPABLE_WATCHPOINT
@item HAVE_STEPPABLE_WATCHPOINT
If defined to a non-zero value, it is not necessary to disable a
@@ -2245,12 +2238,6 @@ This macro is used as the argument to @code{lseek} (or, most commonly,
@code{bfd_seek}). FIXME, should be replaced by SEEK_SET instead,
which is the POSIX equivalent.
-@item MMAP_BASE_ADDRESS
-When using HAVE_MMAP, the first mapping should go at this address.
-
-@item MMAP_INCREMENT
-when using HAVE_MMAP, this is the increment between mappings.
-
@item NORETURN
If defined, this should be one or more tokens, such as @code{volatile},
that can be used in both the declaration and definition of functions to
@@ -2264,37 +2251,6 @@ of functions to indicate that they never return. The default is already
set correctly if compiling with GCC. This will almost never need to be
defined.
-@item USE_MMALLOC
-@findex mmalloc
-@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 redefinition of @code{malloc} to call @code{mmalloc}.
-When defining @code{USE_MMALLOC}, you will also have to set
-@code{MMALLOC} in the Makefile, to point to the @code{mmalloc} library. This
-define is set when you configure with @samp{--with-mmalloc}.
-
-@item NO_MMCHECK
-@findex mmcheck
-Define this if you are using @code{mmalloc}, but don't want the overhead
-of checking the heap with @code{mmcheck}. Note that on some systems,
-the C runtime makes calls to @code{malloc} prior to calling @code{main}, and if
-@code{free} is ever called with these pointers after calling
-@code{mmcheck} to enable checking, a memory corruption abort is certain
-to occur. These systems can still use @code{mmalloc}, but must define
-@code{NO_MMCHECK}.
-
-@item MMCHECK_FORCE
-Define this to 1 if the C runtime allocates memory prior to
-@code{mmcheck} being called, but that memory is never freed so we don't
-have to worry about it triggering a memory corruption abort. The
-default is 0, which means that @code{mmcheck} will only install the heap
-checking functions if there has not yet been any memory allocation
-calls, and if it fails to install the functions, @value{GDBN} will issue a
-warning. This is currently defined if you configure using
-@samp{--with-mmalloc}.
-
@item NO_SIGINTERRUPT
@findex siginterrupt
Define this to indicate that @code{siginterrupt} is not available.
@@ -3161,10 +3117,6 @@ Define this to be the amount by which to decrement the PC after the
program encounters a breakpoint. This is often the number of bytes in
@code{BREAKPOINT}, though not always. For most targets this value will be 0.
-@item DECR_PC_AFTER_HW_BREAK
-@findex DECR_PC_AFTER_HW_BREAK
-Similarly, for hardware breakpoints.
-
@item DISABLE_UNSETTABLE_BREAK (@var{addr})
@findex DISABLE_UNSETTABLE_BREAK
If defined, this should evaluate to 1 if @var{addr} is in a shared
@@ -3715,13 +3667,6 @@ be the number (greater than or equal to zero) of that register.
This should only need to be defined if @code{TARGET_READ_PC} and
@code{TARGET_WRITE_PC} are not defined.
-@item DEPRECATED_NPC_REGNUM
-@findex DEPRECATED_NPC_REGNUM
-The number of the ``next program counter'' register, if defined.
-
-@code{DEPRECATED_NPC_REGNUM} has been replaced by @code{TARGET_WRITE_PC}
-(@pxref{TARGET_WRITE_PC}).
-
@item PARM_BOUNDARY
@findex PARM_BOUNDARY
If non-zero, round arguments to a boundary of this many bits before
@@ -5132,6 +5077,23 @@ This warning includes uses of the assignment operator within an
@item -Wpointer-arith
@item -Wuninitialized
+
+@item -Wunused-label
+This warning has the additional benefit of detecting the absence of the
+@code{case} reserved word in a switch statement:
+@smallexample
+enum @{ FD_SCHEDULED, NOTHING_SCHEDULED @} sched;
+@dots{}
+switch (sched)
+ @{
+ case FD_SCHEDULED:
+ @dots{};
+ break;
+ NOTHING_SCHEDULED:
+ @dots{};
+ break;
+ @}
+@end smallexample
@end table
@emph{Pragmatics: Due to the way that @value{GDBN} is implemented most
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c
index 59f4481bef3..2c655d9793c 100644
--- a/gdb/dwarf2-frame.c
+++ b/gdb/dwarf2-frame.c
@@ -105,6 +105,7 @@ enum dwarf2_reg_rule
about a register, leaving how to obtain its value totally
unspecified. */
REG_UNSPECIFIED = 0,
+
/* The term "undefined" comes from the DWARF2 CFI spec which this
code is moddeling; it indicates that the register's value is
"undefined". GCC uses the less formal term "unsaved". Its
@@ -115,7 +116,12 @@ enum dwarf2_reg_rule
REG_SAVED_OFFSET,
REG_SAVED_REG,
REG_SAVED_EXP,
- REG_SAME_VALUE
+ REG_SAME_VALUE,
+
+ /* These aren't defined by the DWARF2 CFI specification, but are
+ used internally by GDB. */
+ REG_RA, /* Return Address. */
+ REG_CFA /* Call Frame Address. */
};
struct dwarf2_frame_state
@@ -426,6 +432,9 @@ execute_cfa_program (unsigned char *insn_ptr, unsigned char *insn_end,
/* cfa_how deliberately not set. */
break;
+ case DW_CFA_nop:
+ break;
+
case DW_CFA_def_cfa_expression:
insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_exp_len);
fs->cfa_exp = insn_ptr;
@@ -443,7 +452,26 @@ execute_cfa_program (unsigned char *insn_ptr, unsigned char *insn_end,
insn_ptr += utmp;
break;
- case DW_CFA_nop:
+ case DW_CFA_offset_extended_sf:
+ insn_ptr = read_uleb128 (insn_ptr, insn_end, &reg);
+ insn_ptr = read_sleb128 (insn_ptr, insn_end, &offset);
+ offset += fs->data_align;
+ dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
+ fs->regs.reg[reg].how = REG_SAVED_OFFSET;
+ fs->regs.reg[reg].loc.offset = offset;
+ break;
+
+ case DW_CFA_def_cfa_sf:
+ insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_reg);
+ insn_ptr = read_sleb128 (insn_ptr, insn_end, &offset);
+ fs->cfa_offset = offset * fs->data_align;
+ fs->cfa_how = CFA_REG_OFFSET;
+ break;
+
+ case DW_CFA_def_cfa_offset_sf:
+ insn_ptr = read_sleb128 (insn_ptr, insn_end, &offset);
+ fs->cfa_offset = offset * fs->data_align;
+ /* cfa_how deliberately not set. */
break;
case DW_CFA_GNU_args_size:
@@ -547,38 +575,59 @@ dwarf2_frame_cache (struct frame_info *next_frame, void **this_cache)
internal_error (__FILE__, __LINE__, "Unknown CFA rule.");
}
- /* Initialize things so that all registers are marked as
- unspecified. */
+ /* Initialize the register rules. If we have a register that acts
+ as a program counter, mark it as a destination for the return
+ address. If we have a register that serves as the stack pointer,
+ arrange for it to be filled with the call frame address (CFA).
+ The other registers are marked as unspecified.
+
+ We copy the return address to the program counter, since many
+ parts in GDB assume that it is possible to get the return address
+ by unwind the program counter register. However, on ISA's with a
+ dedicated return address register, the CFI usually only contains
+ information to unwind that return address register.
+
+ The reason we're treating the stack pointer special here is
+ because in many cases GCC doesn't emit CFI for the stack pointer
+ and implicitly assumes that it is equal to the CFA. This makes
+ some sense since the DWARF specification (version 3, draft 8,
+ p. 102) says that:
+
+ "Typically, the CFA is defined to be the value of the stack
+ pointer at the call site in the previous frame (which may be
+ different from its value on entry to the current frame)."
+
+ However, this isn't true for all platforms supported by GCC
+ (e.g. IBM S/390 and zSeries). For those targets we should
+ override the defaults given here. */
{
int regnum;
for (regnum = 0; regnum < num_regs; regnum++)
- cache->reg[regnum].how = REG_UNSPECIFIED;
+ {
+ if (regnum == PC_REGNUM)
+ cache->reg[regnum].how = REG_RA;
+ else if (regnum == SP_REGNUM)
+ cache->reg[regnum].how = REG_CFA;
+ else
+ cache->reg[regnum].how = REG_UNSPECIFIED;
+ }
}
/* Go through the DWARF2 CFI generated table and save its register
- location information in the cache. */
+ location information in the cache. Note that we don't skip the
+ return address column; it's perfectly all right for it to
+ correspond to a real register. If it doesn't correspond to a
+ real register, or if we shouldn't treat it as such,
+ DWARF2_REG_TO_REGNUM should be defined to return a number outside
+ the range [0, NUM_REGS). */
{
int column; /* CFI speak for "register number". */
for (column = 0; column < fs->regs.num_regs; column++)
{
- int regnum;
-
- /* Skip the return address column. */
- if (column == fs->retaddr_column)
- /* NOTE: cagney/2003-06-07: Is this right? What if
- RETADDR_COLUMN corresponds to a real register (and,
- worse, that isn't the PC_REGNUM)? I'm guessing that the
- PC_REGNUM further down is trying to handle this. That
- can't be right though; PC_REGNUM may not be valid (it can
- be negative). I think, instead when RETADDR_COLUM isn't
- a real register, it should map itself onto
- frame_pc_unwind. */
- continue;
-
/* Use the GDB register number as the destination index. */
- regnum = DWARF2_REG_TO_REGNUM (column);
+ int regnum = DWARF2_REG_TO_REGNUM (column);
/* If there's no corresponding GDB register, ignore it. */
if (regnum < 0 || regnum >= num_regs)
@@ -599,35 +648,33 @@ dwarf2_frame_cache (struct frame_info *next_frame, void **this_cache)
complaint (&symfile_complaints,
"Incomplete CFI data; unspecified registers at 0x%s",
paddr (fs->pc));
-
- cache->reg[regnum] = fs->regs.reg[column];
+ else
+ cache->reg[regnum] = fs->regs.reg[column];
}
}
- /* Store the location of the return addess. If the return address
- column (adjusted) is not the same as GDB's PC_REGNUM, then this
- implies a copy from the return address column register. */
- if (fs->retaddr_column < fs->regs.num_regs
- && fs->regs.reg[fs->retaddr_column].how != REG_UNDEFINED)
- {
- /* See comment above about a possibly negative PC_REGNUM. If
- this assertion fails, it's a problem with this code and not
- the architecture. */
- gdb_assert (PC_REGNUM >= 0);
- cache->reg[PC_REGNUM] = fs->regs.reg[fs->retaddr_column];
- }
- else
- {
- if (DWARF2_REG_TO_REGNUM (fs->retaddr_column) != PC_REGNUM)
- {
- /* See comment above about PC_REGNUM being negative. If
- this assertion fails, it's a problem with this code and
- not the architecture. */
- gdb_assert (PC_REGNUM >= 0);
- cache->reg[PC_REGNUM].loc.reg = fs->retaddr_column;
- cache->reg[PC_REGNUM].how = REG_SAVED_REG;
- }
- }
+ /* Eliminate any REG_RA rules. */
+ {
+ int regnum;
+
+ for (regnum = 0; regnum < num_regs; regnum++)
+ {
+ if (cache->reg[regnum].how == REG_RA)
+ {
+ if (fs->retaddr_column < fs->regs.num_regs)
+ cache->reg[regnum] = fs->regs.reg[fs->retaddr_column];
+ else
+ {
+ /* It turns out that GCC assumes that if the return
+ address column is "empty" the return address can be
+ found in the register corresponding to the return
+ address column. */
+ cache->reg[regnum].loc.reg = fs->retaddr_column;
+ cache->reg[regnum].how = REG_SAVED_REG;
+ }
+ }
+ }
+ }
do_cleanups (old_chain);
@@ -663,42 +710,7 @@ dwarf2_frame_prev_register (struct frame_info *next_frame, void **this_cache,
*lvalp = not_lval;
*addrp = 0;
*realnump = -1;
- if (regnum == SP_REGNUM)
- {
- /* GCC defines the CFA as the value of the stack pointer
- just before the call instruction is executed. Do other
- compilers use the same definition? */
- /* DWARF V3 Draft 7 p102: Typically, the CFA is defined to
- be the value of the stack pointer at the call site in the
- previous frame (which may be different from its value on
- entry to the current frame). */
- /* DWARF V3 Draft 7 p103: The first column of the rules
- defines the rule which computes the CFA value; it may be
- either a register and a signed offset that are added
- together or a DWARF expression that is evaluated. */
- /* FIXME: cagney/2003-07-07: I don't understand this. The
- CFI info should have provided unwind information for the
- SP register and then pointed ->cfa_reg at it, not the
- reverse. Assuming that SP_REGNUM isn't negative, there
- is a very real posibility that CFA is an offset from some
- other register, having nothing to do with the unwound SP
- value. */
- /* FIXME: cagney/2003-09-05: I think I understand. GDB was
- lumping the two states "unspecified" and "undefined"
- together. Here SP_REGNUM was "unspecified", GCC assuming
- that in such a case CFA would be used. This branch of
- the if statement should be deleted - the problem of
- SP_REGNUM is now handed by the case REG_UNSPECIFIED
- below. */
- *optimizedp = 0;
- if (valuep)
- {
- /* Store the value. */
- store_typed_address (valuep, builtin_type_void_data_ptr,
- cache->cfa);
- }
- }
- else if (valuep)
+ if (valuep)
{
/* In some cases, for example %eflags on the i386, we have
to provide a sane value, even though this register wasn't
@@ -749,48 +761,8 @@ dwarf2_frame_prev_register (struct frame_info *next_frame, void **this_cache,
"undefined"). Code above issues a complaint about this.
Here just fudge the books, assume GCC, and that the value is
more inner on the stack. */
- if (SP_REGNUM >= 0 && regnum == SP_REGNUM)
- {
- /* Can things get worse? Yep! One of the registers GCC
- forgot to provide unwind information for was the stack
- pointer. Outch! GCC appears to assumes that the CFA
- address can be used - after all it points to the inner
- most address of the previous frame before the function
- call and that's always the same as the stack pointer on
- return, right? Wrong. See GCC's i386 STDCALL option for
- an ABI that has a different entry and return stack
- pointer. */
- /* DWARF V3 Draft 7 p102: Typically, the CFA is defined to
- be the value of the stack pointer at the call site in the
- previous frame (which may be different from its value on
- entry to the current frame). */
- /* DWARF V3 Draft 7 p103: The first column of the rules
- defines the rule which computes the CFA value; it may be
- either a register and a signed offset that are added
- together or a DWARF expression that is evaluated. */
- /* NOTE: cagney/2003-09-05: Should issue a complaint.
- Unfortunately it turns out that DWARF2 CFI has a problem.
- Since CFI specifies the location at which a register was
- saved (not its value) it isn't possible to specify
- something like "unwound(REG) == REG + constant" using CFI
- as will almost always occure with the stack pointer. I
- guess CFI should be point SP at CFA. Ref: danielj,
- "Describing unsaved stack pointers", posted to dwarf2
- list 2003-08-15. */
- *optimizedp = 0;
- *lvalp = not_lval;
- *addrp = 0;
- *realnump = -1;
- if (valuep)
- /* Store the value. */
- store_typed_address (valuep, builtin_type_void_data_ptr,
- cache->cfa);
- }
- else
- /* Assume that the register can be found in the next inner
- most frame. */
- frame_register_unwind (next_frame, regnum,
- optimizedp, lvalp, addrp, realnump, valuep);
+ frame_register_unwind (next_frame, regnum,
+ optimizedp, lvalp, addrp, realnump, valuep);
break;
case REG_SAME_VALUE:
@@ -798,6 +770,18 @@ dwarf2_frame_prev_register (struct frame_info *next_frame, void **this_cache,
optimizedp, lvalp, addrp, realnump, valuep);
break;
+ case REG_CFA:
+ *optimizedp = 0;
+ *lvalp = not_lval;
+ *addrp = 0;
+ *realnump = -1;
+ if (valuep)
+ {
+ /* Store the value. */
+ store_typed_address (valuep, builtin_type_void_data_ptr, cache->cfa);
+ }
+ break;
+
default:
internal_error (__FILE__, __LINE__, "Unknown register rule.");
}
diff --git a/gdb/dwarf2expr.c b/gdb/dwarf2expr.c
index cf00929e225..50baced5f2e 100644
--- a/gdb/dwarf2expr.c
+++ b/gdb/dwarf2expr.c
@@ -562,7 +562,7 @@ execute_stack_op (struct dwarf_expr_context *ctx, unsigned char *op_ptr,
second = dwarf_expr_fetch (ctx, 0);
dwarf_expr_pop (ctx);
- first = dwarf_expr_fetch (ctx, 1);
+ first = dwarf_expr_fetch (ctx, 0);
dwarf_expr_pop (ctx);
val1 = value_from_longest (unsigned_address_type (), first);
@@ -660,7 +660,7 @@ execute_stack_op (struct dwarf_expr_context *ctx, unsigned char *op_ptr,
goto no_push;
default:
- error ("Unhandled dwarf expression opcode");
+ error ("Unhandled dwarf expression opcode 0x%x", op);
}
/* Most things push a result value. */
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 807432473a5..8469b1af9aa 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -1,5 +1,6 @@
/* DWARF 2 debugging format support for GDB.
- Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+ 2004
Free Software Foundation, Inc.
Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
@@ -591,13 +592,6 @@ struct field_info
/* Various complaints about symbol reading that don't abort the process */
static void
-dwarf2_non_const_array_bound_ignored_complaint (const char *arg1)
-{
- complaint (&symfile_complaints, "non-constant array bounds form '%s' ignored",
- arg1);
-}
-
-static void
dwarf2_statement_list_fits_in_line_number_section_complaint (void)
{
complaint (&symfile_complaints,
@@ -611,13 +605,6 @@ dwarf2_complex_location_expr_complaint (void)
}
static void
-dwarf2_unsupported_at_frame_base_complaint (const char *arg1)
-{
- complaint (&symfile_complaints,
- "unsupported DW_AT_frame_base for function '%s'", arg1);
-}
-
-static void
dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
int arg3)
{
@@ -787,6 +774,8 @@ static void read_type_die (struct die_info *, struct dwarf2_cu *);
static char *determine_prefix (struct die_info *die);
+static char *determine_prefix_aux (struct die_info *die);
+
static char *typename_concat (const char *prefix, const char *suffix);
static char *class_name (struct die_info *die);
@@ -795,6 +784,8 @@ static void read_typedef (struct die_info *, struct dwarf2_cu *);
static void read_base_type (struct die_info *, struct dwarf2_cu *);
+static void read_subrange_type (struct die_info *die, struct dwarf2_cu *cu);
+
static void read_file_scope (struct die_info *, struct dwarf2_cu *);
static void read_func_scope (struct die_info *, struct dwarf2_cu *);
@@ -907,6 +898,8 @@ static void dwarf2_empty_hash_tables (void);
static unsigned int dwarf2_get_ref_die_offset (struct attribute *);
+static int dwarf2_get_attr_constant_value (struct attribute *, int);
+
static struct die_info *follow_die_ref (unsigned int);
static struct type *dwarf2_fundamental_type (struct objfile *, int);
@@ -1409,6 +1402,7 @@ scan_partial_symbols (char *info_ptr, CORE_ADDR *lowpc,
}
break;
case DW_TAG_base_type:
+ case DW_TAG_subrange_type:
/* File scope base type definitions are added to the partial
symbol table. */
add_partial_symbol (&pdi, cu, namespace);
@@ -1532,6 +1526,7 @@ add_partial_symbol (struct partial_die_info *pdi,
break;
case DW_TAG_typedef:
case DW_TAG_base_type:
+ case DW_TAG_subrange_type:
add_psymbol_to_list (actual_name, strlen (actual_name),
VAR_DOMAIN, LOC_TYPEDEF,
&objfile->static_psymbols,
@@ -1543,7 +1538,7 @@ add_partial_symbol (struct partial_die_info *pdi,
case DW_TAG_enumeration_type:
/* Skip aggregate types without children, these are external
references. */
- /* NOTE: carlton/2002-11-29: See comment in new_symbol about
+ /* NOTE: carlton/2003-10-07: See comment in new_symbol about
static vs. global. */
if (pdi->has_children == 0)
return;
@@ -1636,8 +1631,10 @@ add_partial_namespace (struct partial_die_info *pdi, char *info_ptr,
strcat (full_name, "::");
strcat (full_name, new_name);
- /* FIXME: carlton/2003-06-27: Should we replace this by a call to
- add_partial_symbol? */
+ /* FIXME: carlton/2003-10-07: We can't just replace this by a call
+ to add_partial_symbol, because we don't have a way to pass in the
+ full name to that function; that might be a flaw in
+ add_partial_symbol's interface. */
add_psymbol_to_list (full_name, strlen (full_name),
VAR_DOMAIN, LOC_TYPEDEF,
@@ -1659,8 +1656,7 @@ add_partial_structure (struct partial_die_info *struct_pdi, char *info_ptr,
struct dwarf2_cu *cu,
const char *namespace)
{
- struct objfile *objfile = cu->objfile;
- bfd *abfd = objfile->obfd;
+ bfd *abfd = cu->objfile->obfd;
char *actual_class_name = NULL;
if (cu_language == language_cplus
@@ -1673,7 +1669,7 @@ add_partial_structure (struct partial_die_info *struct_pdi, char *info_ptr,
for a member function; its demangled name will contain
namespace info, if there is any. */
- /* NOTE: carlton/2003-01-13: Getting the info this way changes
+ /* NOTE: carlton/2003-10-07: Getting the info this way changes
what template types look like, because the demangler
frequently doesn't give the same name as the debug info. We
could fix this by only using the demangled name to get the
@@ -1685,7 +1681,8 @@ add_partial_structure (struct partial_die_info *struct_pdi, char *info_ptr,
{
struct partial_die_info child_pdi;
- next_child = read_partial_die (&child_pdi, abfd, next_child, cu);
+ next_child = read_partial_die (&child_pdi, abfd, next_child,
+ cu);
if (!child_pdi.tag)
break;
if (child_pdi.tag == DW_TAG_subprogram)
@@ -1883,7 +1880,11 @@ psymtab_to_symtab_1 (struct partial_symtab *pst)
/* Do line number decoding in read_file_scope () */
process_die (dies, &cu);
+ /* Some compilers don't define a DW_AT_high_pc attribute for the
+ compilation unit. If the DW_AT_high_pc is missing, synthesize
+ it, by scanning the DIE's below the compilation unit. */
get_scope_pc_bounds (dies, &lowpc, &highpc, &cu);
+
symtab = end_symtab (highpc + baseaddr, objfile, SECT_OFF_TEXT (objfile));
/* Set symtab language to language from DW_AT_language.
@@ -1960,6 +1961,14 @@ process_die (struct die_info *die, struct dwarf2_cu *cu)
new_symbol (die, die->type, cu);
}
break;
+ case DW_TAG_subrange_type:
+ read_subrange_type (die, cu);
+ if (dwarf_attr (die, DW_AT_name))
+ {
+ /* Add a typedef symbol for the base type definition. */
+ new_symbol (die, die->type, cu);
+ }
+ break;
case DW_TAG_common_block:
read_common_block (die, cu);
break;
@@ -2136,6 +2145,8 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
struct die_info *child_die;
struct attribute *attr;
char *name;
+ const char *previous_prefix = processing_current_prefix;
+ struct cleanup *back_to = NULL;
name = dwarf2_linkage_name (die);
@@ -2144,6 +2155,40 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
if (name == NULL || !dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu))
return;
+ if (cu_language == language_cplus)
+ {
+ struct die_info *spec_die = die_specification (die);
+
+ /* NOTE: carlton/2004-01-23: We have to be careful in the
+ presence of DW_AT_specification. For example, with GCC
+ 3.4, given the code
+
+ namespace N {
+ void foo() {
+ // Definition of N::foo.
+ }
+ }
+
+ then we'll have a tree of DIEs like this:
+
+ 1: DW_TAG_compile_unit
+ 2: DW_TAG_namespace // N
+ 3: DW_TAG_subprogram // declaration of N::foo
+ 4: DW_TAG_subprogram // definition of N::foo
+ DW_AT_specification // refers to die #3
+
+ Thus, when processing die #4, we have to pretend that
+ we're in the context of its DW_AT_specification, namely
+ the contex of die #3. */
+
+ if (spec_die != NULL)
+ {
+ char *specification_prefix = determine_prefix (spec_die);
+ processing_current_prefix = specification_prefix;
+ back_to = make_cleanup (xfree, specification_prefix);
+ }
+ }
+
lowpc += baseaddr;
highpc += baseaddr;
@@ -2194,6 +2239,10 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
symbols go in the file symbol list. */
if (outermost_context_p ())
list_in_scope = &file_symbols;
+
+ processing_current_prefix = previous_prefix;
+ if (back_to != NULL)
+ do_cleanups (back_to);
}
/* Process all the DIES contained within a lexical block scope. Start
@@ -2399,6 +2448,7 @@ dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
/* Get the low and high pc's represented by the scope DIE, and store
them in *LOWPC and *HIGHPC. If the correct values can't be
determined, set *LOWPC to -1 and *HIGHPC to 0. */
+
static void
get_scope_pc_bounds (struct die_info *die,
CORE_ADDR *lowpc, CORE_ADDR *highpc,
@@ -2428,14 +2478,14 @@ get_scope_pc_bounds (struct die_info *die,
}
break;
case DW_TAG_namespace:
- /* FIXME: carlton/2003-12-15: Should we do this for
+ /* FIXME: carlton/2004-01-16: Should we do this for
DW_TAG_class_type/DW_TAG_structure_type, too? I think
that current GCC's always emit the DIEs corresponding
to definitions of methods of classes as children of a
DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
the DIEs giving the declarations, which could be
- anywhere). But I don't see any reason why they have to
- be there. */
+ anywhere). But I don't see any reason why the
+ standards says that they have to be there. */
get_scope_pc_bounds (child, &current_low, &current_high, cu);
if (current_low != ((CORE_ADDR) -1))
@@ -2935,7 +2985,7 @@ read_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
if (processing_has_namespace_info)
{
- /* FIXME: carlton/2002-11-26: This variable exists only for
+ /* FIXME: carlton/2003-11-10: This variable exists only for
const-correctness reasons. When I tried to change
TYPE_TAG_NAME to be a const char *, I ran into a cascade
of changes which would have forced decode_line_1 to take
@@ -3019,11 +3069,11 @@ read_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
information about enclosing namespaces/classes,
if any. */
- /* FIXME: carlton/2003-01-10: The excessive
+ /* FIXME: carlton/2003-11-10: The excessive
demangling here is a bit wasteful, as is the
memory usage for names. */
- /* NOTE: carlton/2003-01-13: As commented in
+ /* NOTE: carlton/2003-11-10: As commented in
add_partial_structure, the demangler sometimes
prints the type info in a different form from the
debug info. We could solve this by using the
@@ -3279,98 +3329,22 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
{
if (child_die->tag == DW_TAG_subrange_type)
{
- unsigned int low, high;
-
- /* Default bounds to an array with unspecified length. */
- low = 0;
- high = -1;
- if (cu_language == language_fortran)
- {
- /* FORTRAN implies a lower bound of 1, if not given. */
- low = 1;
- }
-
- index_type = die_type (child_die, cu);
- attr = dwarf_attr (child_die, DW_AT_lower_bound);
- if (attr)
- {
- if (attr->form == DW_FORM_sdata)
- {
- low = DW_SND (attr);
- }
- else if (attr->form == DW_FORM_udata
- || attr->form == DW_FORM_data1
- || attr->form == DW_FORM_data2
- || attr->form == DW_FORM_data4
- || attr->form == DW_FORM_data8)
- {
- low = DW_UNSND (attr);
- }
- else
- {
- dwarf2_non_const_array_bound_ignored_complaint
- (dwarf_form_name (attr->form));
-#ifdef FORTRAN_HACK
- die->type = lookup_pointer_type (element_type);
- return;
-#else
- low = 0;
-#endif
- }
- }
- attr = dwarf_attr (child_die, DW_AT_upper_bound);
- if (attr)
- {
- if (attr->form == DW_FORM_sdata)
- {
- high = DW_SND (attr);
- }
- else if (attr->form == DW_FORM_udata
- || attr->form == DW_FORM_data1
- || attr->form == DW_FORM_data2
- || attr->form == DW_FORM_data4
- || attr->form == DW_FORM_data8)
- {
- high = DW_UNSND (attr);
- }
- else if (attr->form == DW_FORM_block1)
- {
- /* GCC encodes arrays with unspecified or dynamic length
- with a DW_FORM_block1 attribute.
- FIXME: GDB does not yet know how to handle dynamic
- arrays properly, treat them as arrays with unspecified
- length for now.
-
- FIXME: jimb/2003-09-22: GDB does not really know
- how to handle arrays of unspecified length
- either; we just represent them as zero-length
- arrays. Choose an appropriate upper bound given
- the lower bound we've computed above. */
- high = low - 1;
- }
- else
- {
- dwarf2_non_const_array_bound_ignored_complaint
- (dwarf_form_name (attr->form));
-#ifdef FORTRAN_HACK
- die->type = lookup_pointer_type (element_type);
- return;
-#else
- high = 1;
-#endif
- }
- }
+ read_subrange_type (child_die, cu);
- /* Create a range type and save it for array type creation. */
- if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
- {
- range_types = (struct type **)
- xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
- * sizeof (struct type *));
- if (ndim == 0)
- make_cleanup (free_current_contents, &range_types);
- }
- range_types[ndim++] = create_range_type (NULL, index_type, low, high);
+ if (child_die->type != NULL)
+ {
+ /* The range type was succesfully read. Save it for
+ the array type creation. */
+ if ((ndim % DW_FIELD_ALLOC_CHUNK) == 0)
+ {
+ range_types = (struct type **)
+ xrealloc (range_types, (ndim + DW_FIELD_ALLOC_CHUNK)
+ * sizeof (struct type *));
+ if (ndim == 0)
+ make_cleanup (free_current_contents, &range_types);
+ }
+ range_types[ndim++] = child_die->type;
+ }
}
child_die = sibling_die (child_die);
}
@@ -3512,6 +3486,10 @@ read_namespace (struct die_info *die, struct dwarf2_cu *cu)
processing_current_prefix = previous_prefix;
}
+/* Return the name of the namespace represented by DIE. Set
+ *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
+ namespace. */
+
static const char *
namespace_name (struct die_info *die, int *is_anonymous)
{
@@ -3909,6 +3887,78 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
die->type = type;
}
+/* Read the given DW_AT_subrange DIE. */
+
+static void
+read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+{
+ struct type *base_type;
+ struct type *range_type;
+ struct attribute *attr;
+ int low = 0;
+ int high = -1;
+
+ /* If we have already decoded this die, then nothing more to do. */
+ if (die->type)
+ return;
+
+ base_type = die_type (die, cu);
+ if (base_type == NULL)
+ {
+ complaint (&symfile_complaints,
+ "DW_AT_type missing from DW_TAG_subrange_type");
+ return;
+ }
+
+ if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
+ base_type = alloc_type (NULL);
+
+ if (cu_language == language_fortran)
+ {
+ /* FORTRAN implies a lower bound of 1, if not given. */
+ low = 1;
+ }
+
+ attr = dwarf_attr (die, DW_AT_lower_bound);
+ if (attr)
+ low = dwarf2_get_attr_constant_value (attr, 0);
+
+ attr = dwarf_attr (die, DW_AT_upper_bound);
+ if (attr)
+ {
+ if (attr->form == DW_FORM_block1)
+ {
+ /* GCC encodes arrays with unspecified or dynamic length
+ with a DW_FORM_block1 attribute.
+ FIXME: GDB does not yet know how to handle dynamic
+ arrays properly, treat them as arrays with unspecified
+ length for now.
+
+ FIXME: jimb/2003-09-22: GDB does not really know
+ how to handle arrays of unspecified length
+ either; we just represent them as zero-length
+ arrays. Choose an appropriate upper bound given
+ the lower bound we've computed above. */
+ high = low - 1;
+ }
+ else
+ high = dwarf2_get_attr_constant_value (attr, 1);
+ }
+
+ range_type = create_range_type (NULL, base_type, low, high);
+
+ attr = dwarf_attr (die, DW_AT_name);
+ if (attr && DW_STRING (attr))
+ TYPE_NAME (range_type) = DW_STRING (attr);
+
+ attr = dwarf_attr (die, DW_AT_byte_size);
+ if (attr)
+ TYPE_LENGTH (range_type) = DW_UNSND (attr);
+
+ die->type = range_type;
+}
+
+
/* Read a whole compilation unit into a linked list of dies. */
static struct die_info *
@@ -5578,7 +5628,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
}
{
- /* NOTE: carlton/2002-11-29: C++ class symbols shouldn't
+ /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
really ever be static objects: otherwise, if you try
to, say, break of a class's method and you're in a file
which doesn't mention that class, it won't work unless
@@ -5627,6 +5677,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
add_symbol_to_list (sym, list_in_scope);
break;
case DW_TAG_base_type:
+ case DW_TAG_subrange_type:
SYMBOL_CLASS (sym) = LOC_TYPEDEF;
SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
add_symbol_to_list (sym, list_in_scope);
@@ -5646,7 +5697,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
dwarf2_const_value (attr, sym, cu);
}
{
- /* NOTE: carlton/2002-11-29: See comment above in the
+ /* NOTE: carlton/2003-11-10: See comment above in the
DW_TAG_class_type, etc. block. */
struct pending **list_to_add;
@@ -5933,6 +5984,9 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu)
case DW_TAG_typedef:
read_typedef (die, cu);
break;
+ case DW_TAG_subrange_type:
+ read_subrange_type (die, cu);
+ break;
case DW_TAG_base_type:
read_base_type (die, cu);
break;
@@ -5946,12 +6000,27 @@ read_type_die (struct die_info *die, struct dwarf2_cu *cu)
do_cleanups (back_to);
}
+/* Return the name of the namespace/class that DIE is defined within,
+ or "" if we can't tell. The caller should xfree the result. */
+
+/* NOTE: carlton/2004-01-23: See read_func_scope (and the comment
+ therein) for an example of how to use this function to deal with
+ DW_AT_specification. */
+
+static char *
+determine_prefix (struct die_info *die)
+{
+ char *prefix = determine_prefix_aux (die);
+
+ return prefix ? prefix : xstrdup ("");
+}
+
/* Return the name of the namespace/class that DIE is defined
within, or NULL if we can't tell. The caller should xfree the
result. */
static char *
-determine_prefix (struct die_info *die)
+determine_prefix_aux (struct die_info *die)
{
struct die_info *parent;
@@ -5966,7 +6035,7 @@ determine_prefix (struct die_info *die)
}
else
{
- char *parent_prefix = determine_prefix (parent);
+ char *parent_prefix = determine_prefix_aux (parent);
char *retval;
switch (parent->tag) {
@@ -5988,7 +6057,7 @@ determine_prefix (struct die_info *die)
if (parent_name != NULL)
retval = typename_concat (parent_prefix, dwarf2_name (parent));
else
- /* FIXME: carlton/2003-05-28: I'm not sure what the
+ /* FIXME: carlton/2003-11-10: I'm not sure what the
best thing to do here is. */
retval = typename_concat (parent_prefix,
"<<anonymous class>>");
@@ -7150,6 +7219,28 @@ dwarf2_get_ref_die_offset (struct attribute *attr)
return result;
}
+/* Return the constant value held by the given attribute. Return -1
+ if the value held by the attribute is not constant. */
+
+static int
+dwarf2_get_attr_constant_value (struct attribute *attr, int default_value)
+{
+ if (attr->form == DW_FORM_sdata)
+ return DW_SND (attr);
+ else if (attr->form == DW_FORM_udata
+ || attr->form == DW_FORM_data1
+ || attr->form == DW_FORM_data2
+ || attr->form == DW_FORM_data4
+ || attr->form == DW_FORM_data8)
+ return DW_UNSND (attr);
+ else
+ {
+ complaint (&symfile_complaints, "Attribute value is not a constant (%s)",
+ dwarf_form_name (attr->form));
+ return default_value;
+ }
+}
+
static struct die_info *
follow_die_ref (unsigned int offset)
{
diff --git a/gdb/exec.h b/gdb/exec.h
index e9c2d17bf7a..d0862516c97 100644
--- a/gdb/exec.h
+++ b/gdb/exec.h
@@ -28,7 +28,7 @@ struct section_table;
struct target_ops;
struct bfd;
-struct target_ops exec_ops;
+extern struct target_ops exec_ops;
/* Builds a section table, given args BFD, SECTABLE_PTR, SECEND_PTR.
Returns 0 if OK, 1 on error. */
diff --git a/gdb/f-lang.c b/gdb/f-lang.c
index 37ca92c7d43..c34b4a7b826 100644
--- a/gdb/f-lang.c
+++ b/gdb/f-lang.c
@@ -1,5 +1,5 @@
/* Fortran language support routines for GDB, the GNU debugger.
- Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
+ Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
Contributed by Motorola. Adapted from the C parser by Farooq Butt
(fmbutt@engage.sps.mot.com).
@@ -475,6 +475,7 @@ const struct language_defn f_language_defn =
NULL, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%o", "0", "o", ""}, /* Octal format info */
diff --git a/gdb/frame.c b/gdb/frame.c
index 1d378913fb4..a7da9196b0f 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -1,7 +1,7 @@
/* Cache and manage frames for GDB, the GNU debugger.
Copyright 1986, 1987, 1989, 1991, 1994, 1995, 1996, 1998, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -1726,7 +1726,12 @@ legacy_get_prev_frame (struct frame_info *this_frame)
/* Return a structure containing various interesting information
about the frame that called THIS_FRAME. Returns NULL
- if there is no such frame. */
+ if there is no such frame.
+
+ This function tests some target-independent conditions that should
+ terminate the frame chain, such as unwinding past main(). It
+ should not contain any target-dependent tests, such as checking
+ whether the program-counter is zero. */
struct frame_info *
get_prev_frame (struct frame_info *this_frame)
@@ -1943,37 +1948,6 @@ get_prev_frame (struct frame_info *this_frame)
prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info);
prev_frame->level = this_frame->level + 1;
- /* Try to unwind the PC. If that doesn't work, assume we've reached
- the oldest frame and simply return. Is there a better sentinal
- value? The unwound PC value is then used to initialize the new
- previous frame's type.
-
- Note that the pc-unwind is intentionally performed before the
- frame chain. This is ok since, for old targets, both
- frame_pc_unwind (nee, FRAME_SAVED_PC) and
- DEPRECATED_FRAME_CHAIN()) assume THIS_FRAME's data structures
- have already been initialized (using
- DEPRECATED_INIT_EXTRA_FRAME_INFO) and hence the call order
- doesn't matter.
-
- By unwinding the PC first, it becomes possible to, in the case of
- a dummy frame, avoid also unwinding the frame ID. This is
- because (well ignoring the PPC) a dummy frame can be located
- using THIS_FRAME's frame ID. */
-
- if (frame_pc_unwind (this_frame) == 0)
- {
- /* The allocated PREV_FRAME will be reclaimed when the frame
- obstack is next purged. */
- if (frame_debug)
- {
- fprintf_unfiltered (gdb_stdlog, "-> ");
- fprint_frame (gdb_stdlog, NULL);
- fprintf_unfiltered (gdb_stdlog, " // unwound PC zero }\n");
- }
- return NULL;
- }
-
/* Don't yet compute ->unwind (and hence ->type). It is computed
on-demand in get_frame_type, frame_register_unwind, and
get_frame_id. */
diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c
index 4fc8740d25c..67fb641be70 100644
--- a/gdb/frv-tdep.c
+++ b/gdb/frv-tdep.c
@@ -44,8 +44,6 @@ static gdbarch_breakpoint_from_pc_ftype frv_breakpoint_from_pc;
static gdbarch_adjust_breakpoint_address_ftype frv_gdbarch_adjust_breakpoint_address;
static gdbarch_skip_prologue_ftype frv_skip_prologue;
static gdbarch_frameless_function_invocation_ftype frv_frameless_function_invocation;
-static gdbarch_deprecated_push_arguments_ftype frv_push_arguments;
-static gdbarch_deprecated_saved_pc_after_call_ftype frv_saved_pc_after_call;
/* Register numbers. The order in which these appear define the
remote protocol, so take care in changing them. */
@@ -417,6 +415,61 @@ is_argument_reg (int reg)
return (8 <= reg && reg <= 13);
}
+/* Given PC at the function's start address, attempt to find the
+ prologue end using SAL information. Return zero if the skip fails.
+
+ A non-optimized prologue traditionally has one SAL for the function
+ and a second for the function body. A single line function has
+ them both pointing at the same line.
+
+ An optimized prologue is similar but the prologue may contain
+ instructions (SALs) from the instruction body. Need to skip those
+ while not getting into the function body.
+
+ The functions end point and an increasing SAL line are used as
+ indicators of the prologue's endpoint.
+
+ This code is based on the function refine_prologue_limit (versions
+ found in both ia64 and ppc). */
+
+static CORE_ADDR
+skip_prologue_using_sal (CORE_ADDR func_addr)
+{
+ struct symtab_and_line prologue_sal;
+ CORE_ADDR start_pc;
+ CORE_ADDR end_pc;
+
+ /* Get an initial range for the function. */
+ find_pc_partial_function (func_addr, NULL, &start_pc, &end_pc);
+ start_pc += FUNCTION_START_OFFSET;
+
+ prologue_sal = find_pc_line (start_pc, 0);
+ if (prologue_sal.line != 0)
+ {
+ while (prologue_sal.end < end_pc)
+ {
+ struct symtab_and_line sal;
+
+ sal = find_pc_line (prologue_sal.end, 0);
+ if (sal.line == 0)
+ break;
+ /* Assume that a consecutive SAL for the same (or larger)
+ line mark the prologue -> body transition. */
+ if (sal.line >= prologue_sal.line)
+ break;
+ /* The case in which compiler's optimizer/scheduler has
+ moved instructions into the prologue. We look ahead in
+ the function looking for address ranges whose
+ corresponding line number is less the first one that we
+ found for the function. This is more conservative then
+ refine_prologue_limit which scans a large number of SALs
+ looking for any in the prologue */
+ prologue_sal = sal;
+ }
+ }
+ return prologue_sal.end;
+}
+
/* Scan an FR-V prologue, starting at PC, until frame->PC.
If FRAME is non-zero, fill in its saved_regs with appropriate addresses.
@@ -474,26 +527,111 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
char gr_saved[64];
int gr_sp_offset[64];
+ /* The address of the most recently scanned prologue instruction. */
+ CORE_ADDR last_prologue_pc;
+
+ /* The address of the next instruction. */
+ CORE_ADDR next_pc;
+
+ /* The upper bound to of the pc values to scan. */
+ CORE_ADDR lim_pc;
+
memset (gr_saved, 0, sizeof (gr_saved));
- while (! next_frame || pc < frame_pc_unwind (next_frame))
+ last_prologue_pc = pc;
+
+ /* Try to compute an upper limit (on how far to scan) based on the
+ line number info. */
+ lim_pc = skip_prologue_using_sal (pc);
+ /* If there's no line number info, lim_pc will be 0. In that case,
+ set the limit to be 100 instructions away from pc. Hopefully, this
+ will be far enough away to account for the entire prologue. Don't
+ worry about overshooting the end of the function. The scan loop
+ below contains some checks to avoid scanning unreasonably far. */
+ if (lim_pc == 0)
+ lim_pc = pc + 400;
+
+ /* If we have a frame, we don't want to scan past the frame's pc. This
+ will catch those cases where the pc is in the prologue. */
+ if (next_frame)
+ {
+ CORE_ADDR frame_pc = frame_pc_unwind (next_frame);
+ if (frame_pc < lim_pc)
+ lim_pc = frame_pc;
+ }
+
+ /* Scan the prologue. */
+ while (pc < lim_pc)
{
LONGEST op = read_memory_integer (pc, 4);
+ next_pc = pc + 4;
/* The tests in this chain of ifs should be in order of
decreasing selectivity, so that more particular patterns get
to fire before less particular patterns. */
+ /* Some sort of control transfer instruction: stop scanning prologue.
+ Integer Conditional Branch:
+ X XXXX XX 0000110 XX XXXXXXXXXXXXXXXX
+ Floating-point / media Conditional Branch:
+ X XXXX XX 0000111 XX XXXXXXXXXXXXXXXX
+ LCR Conditional Branch to LR
+ X XXXX XX 0001110 XX XX 001 X XXXXXXXXXX
+ Integer conditional Branches to LR
+ X XXXX XX 0001110 XX XX 010 X XXXXXXXXXX
+ X XXXX XX 0001110 XX XX 011 X XXXXXXXXXX
+ Floating-point/Media Branches to LR
+ X XXXX XX 0001110 XX XX 110 X XXXXXXXXXX
+ X XXXX XX 0001110 XX XX 111 X XXXXXXXXXX
+ Jump and Link
+ X XXXXX X 0001100 XXXXXX XXXXXX XXXXXX
+ X XXXXX X 0001101 XXXXXX XXXXXX XXXXXX
+ Call
+ X XXXXXX 0001111 XXXXXXXXXXXXXXXXXX
+ Return from Trap
+ X XXXXX X 0000101 XXXXXX XXXXXX XXXXXX
+ Integer Conditional Trap
+ X XXXX XX 0000100 XXXXXX XXXX 00 XXXXXX
+ X XXXX XX 0011100 XXXXXX XXXXXXXXXXXX
+ Floating-point /media Conditional Trap
+ X XXXX XX 0000100 XXXXXX XXXX 01 XXXXXX
+ X XXXX XX 0011101 XXXXXX XXXXXXXXXXXX
+ Break
+ X XXXX XX 0000100 XXXXXX XXXX 11 XXXXXX
+ Media Trap
+ X XXXX XX 0000100 XXXXXX XXXX 10 XXXXXX */
+ if ((op & 0x01d80000) == 0x00180000 /* Conditional branches and Call */
+ || (op & 0x01f80000) == 0x00300000 /* Jump and Link */
+ || (op & 0x01f80000) == 0x00100000 /* Return from Trap, Trap */
+ || (op & 0x01f80000) == 0x00700000) /* Trap immediate */
+ {
+ /* Stop scanning; not in prologue any longer. */
+ break;
+ }
+
+ /* Loading something from memory into fp probably means that
+ we're in the epilogue. Stop scanning the prologue.
+ ld @(GRi, GRk), fp
+ X 000010 0000010 XXXXXX 000100 XXXXXX
+ ldi @(GRi, d12), fp
+ X 000010 0110010 XXXXXX XXXXXXXXXXXX */
+ else if ((op & 0x7ffc0fc0) == 0x04080100
+ || (op & 0x7ffc0000) == 0x04c80000)
+ {
+ break;
+ }
+
/* Setting the FP from the SP:
ori sp, 0, fp
P 000010 0100010 000001 000000000000 = 0x04881000
0 111111 1111111 111111 111111111111 = 0x7fffffff
. . . . . . . .
We treat this as part of the prologue. */
- if ((op & 0x7fffffff) == 0x04881000)
+ else if ((op & 0x7fffffff) == 0x04881000)
{
fp_set = 1;
fp_offset = 0;
+ last_prologue_pc = next_pc;
}
/* Move the link register to the scratch register grJ, before saving:
@@ -508,11 +646,10 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
/* If we're moving it to a scratch register, that's fine. */
if (is_caller_saves_reg (gr_j))
- lr_save_reg = gr_j;
- /* Otherwise it's not a prologue instruction that we
- recognize. */
- else
- break;
+ {
+ lr_save_reg = gr_j;
+ last_prologue_pc = next_pc;
+ }
}
/* To save multiple callee-saves registers on the stack, at
@@ -550,10 +687,8 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
gr_saved[gr_k + i] = 1;
gr_sp_offset[gr_k + i] = 4 * i;
}
+ last_prologue_pc = next_pc;
}
- else
- /* It's not a prologue instruction. */
- break;
}
/* Adjusting the stack pointer. (The stack pointer is GR1.)
@@ -564,11 +699,22 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
We treat this as part of the prologue. */
else if ((op & 0x7ffff000) == 0x02401000)
{
- /* Sign-extend the twelve-bit field.
- (Isn't there a better way to do this?) */
- int s = (((op & 0xfff) - 0x800) & 0xfff) - 0x800;
+ if (framesize == 0)
+ {
+ /* Sign-extend the twelve-bit field.
+ (Isn't there a better way to do this?) */
+ int s = (((op & 0xfff) - 0x800) & 0xfff) - 0x800;
- framesize -= s;
+ framesize -= s;
+ last_prologue_pc = pc;
+ }
+ else
+ {
+ /* If the prologue is being adjusted again, we've
+ likely gone too far; i.e. we're probably in the
+ epilogue. */
+ break;
+ }
}
/* Setting the FP to a constant distance from the SP:
@@ -584,6 +730,7 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
int s = (((op & 0xfff) - 0x800) & 0xfff) - 0x800;
fp_set = 1;
fp_offset = s;
+ last_prologue_pc = pc;
}
/* To spill an argument register to a scratch register:
@@ -602,10 +749,10 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
{
int gr_i = ((op >> 12) & 0x3f);
- /* If the source isn't an arg register, then this isn't a
- prologue instruction. */
- if (! is_argument_reg (gr_i))
- break;
+ /* Make sure that the source is an arg register; if it is, we'll
+ treat it as a prologue instruction. */
+ if (is_argument_reg (gr_i))
+ last_prologue_pc = next_pc;
}
/* To spill 16-bit values to the stack:
@@ -625,8 +772,10 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
{
int gr_k = ((op >> 25) & 0x3f);
- if (! is_argument_reg (gr_k))
- break; /* Source isn't an arg register. */
+ /* Make sure that GRk is really an argument register; treat
+ it as a prologue instruction if so. */
+ if (is_argument_reg (gr_k))
+ last_prologue_pc = next_pc;
}
/* To save multiple callee-saves register on the stack, at a
@@ -667,10 +816,8 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
gr_saved[gr_k + i] = 1;
gr_sp_offset[gr_k + i] = s + (4 * i);
}
+ last_prologue_pc = next_pc;
}
- else
- /* It's not a prologue instruction. */
- break;
}
/* Storing any kind of integer register at any constant offset
@@ -704,13 +851,16 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
/* If the address isn't relative to the SP or FP, it's not a
prologue instruction. */
if (gr_i != sp_regnum && gr_i != fp_regnum)
- break;
+ {
+ /* Do nothing; not a prologue instruction. */
+ }
/* Saving the old FP in the new frame (relative to the SP). */
- if (gr_k == fp_regnum && gr_i == sp_regnum)
+ else if (gr_k == fp_regnum && gr_i == sp_regnum)
{
gr_saved[fp_regnum] = 1;
gr_sp_offset[fp_regnum] = offset;
+ last_prologue_pc = next_pc;
}
/* Saving callee-saves register(s) on the stack, relative to
@@ -723,6 +873,7 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
gr_sp_offset[gr_k] = offset;
else
gr_sp_offset[gr_k] = offset + fp_offset;
+ last_prologue_pc = next_pc;
}
/* Saving the scratch register holding the return address. */
@@ -734,24 +885,14 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
lr_sp_offset = offset;
else
lr_sp_offset = offset + fp_offset;
+ last_prologue_pc = next_pc;
}
/* Spilling int-sized arguments to the stack. */
else if (is_argument_reg (gr_k))
- ;
-
- /* It's not a store instruction we recognize, so this must
- be the end of the prologue. */
- else
- break;
+ last_prologue_pc = next_pc;
}
-
- /* It's not any instruction we recognize, so this must be the end
- of the prologue. */
- else
- break;
-
- pc += 4;
+ pc = next_pc;
}
if (next_frame && info)
@@ -790,7 +931,7 @@ frv_analyze_prologue (CORE_ADDR pc, struct frame_info *next_frame,
trad_frame_set_value (info->saved_regs, sp_regnum, info->prev_sp);
}
- return pc;
+ return last_prologue_pc;
}
@@ -1277,9 +1418,6 @@ frv_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- set_gdbarch_function_start_offset (gdbarch, 0);
-
set_gdbarch_remote_translate_xfer_address
(gdbarch, generic_remote_translate_xfer_address);
diff --git a/gdb/gcore.c b/gdb/gcore.c
index d1525ddbb05..b5513728ef5 100644
--- a/gdb/gcore.c
+++ b/gdb/gcore.c
@@ -1,6 +1,6 @@
/* Generate a core file for the inferior process.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -314,6 +314,20 @@ gcore_create_callback (CORE_ADDR vaddr, unsigned long size,
asection *osec;
flagword flags = SEC_ALLOC | SEC_HAS_CONTENTS | SEC_LOAD;
+ /* If the memory segment has no permissions set, ignore it, otherwise
+ when we later try to access it for read/write, we'll get an error
+ or jam the kernel. */
+ if (read == 0 && write == 0 && exec == 0)
+ {
+ if (info_verbose)
+ {
+ fprintf_filtered (gdb_stdout, "Ignore segment, %s bytes at 0x%s\n",
+ paddr_d (size), paddr_nz (vaddr));
+ }
+
+ return 0;
+ }
+
if (write == 0)
{
/* See if this region of memory lies inside a known file on disk.
@@ -364,8 +378,8 @@ gcore_create_callback (CORE_ADDR vaddr, unsigned long size,
if (info_verbose)
{
- fprintf_filtered (gdb_stdout, "Save segment, %lld bytes at 0x%s\n",
- (long long) size, paddr_nz (vaddr));
+ fprintf_filtered (gdb_stdout, "Save segment, %s bytes at 0x%s\n",
+ paddr_d (size), paddr_nz (vaddr));
}
bfd_set_section_size (obfd, osec, size);
@@ -450,8 +464,8 @@ gcore_copy_callback (bfd *obfd, asection *osec, void *ignored)
if (target_read_memory (bfd_section_vma (obfd, osec),
memhunk, size) != 0)
- warning ("Memory read failed for corefile section, %ld bytes at 0x%s\n",
- (long) size, paddr (bfd_section_vma (obfd, osec)));
+ warning ("Memory read failed for corefile section, %s bytes at 0x%s\n",
+ paddr_d (size), paddr (bfd_section_vma (obfd, osec)));
if (!bfd_set_section_contents (obfd, osec, memhunk, 0, size))
warning ("Failed to write corefile contents (%s).",
bfd_errmsg (bfd_get_error ()));
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
index bac577b1ad1..fffbd0de80e 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
@@ -1,7 +1,9 @@
/* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
/* Dynamic architecture support for GDB, the GNU debugger.
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
@@ -137,7 +139,6 @@ struct gdbarch
int pc_regnum;
int ps_regnum;
int fp0_regnum;
- int deprecated_npc_regnum;
gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum;
gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum;
gdbarch_dwarf_reg_to_regnum_ftype *dwarf_reg_to_regnum;
@@ -208,7 +209,6 @@ struct gdbarch
gdbarch_deprecated_store_return_value_ftype *deprecated_store_return_value;
gdbarch_use_struct_convention_ftype *use_struct_convention;
gdbarch_extract_struct_value_address_ftype *extract_struct_value_address;
- gdbarch_deprecated_extract_struct_value_address_ftype *deprecated_extract_struct_value_address;
gdbarch_deprecated_frame_init_saved_regs_ftype *deprecated_frame_init_saved_regs;
gdbarch_deprecated_init_extra_frame_info_ftype *deprecated_init_extra_frame_info;
gdbarch_skip_prologue_ftype *skip_prologue;
@@ -310,7 +310,6 @@ struct gdbarch startup_gdbarch =
-1, /* pc_regnum */
-1, /* ps_regnum */
0, /* fp0_regnum */
- 0, /* deprecated_npc_regnum */
0, /* stab_reg_to_regnum */
0, /* ecoff_reg_to_regnum */
0, /* dwarf_reg_to_regnum */
@@ -381,7 +380,6 @@ struct gdbarch startup_gdbarch =
0, /* deprecated_store_return_value */
0, /* use_struct_convention */
0, /* extract_struct_value_address */
- 0, /* deprecated_extract_struct_value_address */
0, /* deprecated_frame_init_saved_regs */
0, /* deprecated_init_extra_frame_info */
0, /* skip_prologue */
@@ -493,7 +491,6 @@ gdbarch_alloc (const struct gdbarch_info *info,
current_gdbarch->pc_regnum = -1;
current_gdbarch->ps_regnum = -1;
current_gdbarch->fp0_regnum = -1;
- current_gdbarch->deprecated_npc_regnum = -1;
current_gdbarch->stab_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->ecoff_reg_to_regnum = no_op_reg_to_regnum;
current_gdbarch->dwarf_reg_to_regnum = no_op_reg_to_regnum;
@@ -525,8 +522,6 @@ gdbarch_alloc (const struct gdbarch_info *info,
current_gdbarch->prologue_frameless_p = generic_prologue_frameless_p;
current_gdbarch->memory_insert_breakpoint = default_memory_insert_breakpoint;
current_gdbarch->memory_remove_breakpoint = default_memory_remove_breakpoint;
- current_gdbarch->decr_pc_after_break = -1;
- current_gdbarch->function_start_offset = -1;
current_gdbarch->remote_translate_xfer_address = generic_remote_translate_xfer_address;
current_gdbarch->frame_args_skip = -1;
current_gdbarch->frameless_function_invocation = generic_frameless_function_invocation_not;
@@ -632,7 +627,6 @@ verify_gdbarch (struct gdbarch *current_gdbarch)
/* Skip verify of pc_regnum, invalid_p == 0 */
/* Skip verify of ps_regnum, invalid_p == 0 */
/* Skip verify of fp0_regnum, invalid_p == 0 */
- /* Skip verify of deprecated_npc_regnum, invalid_p == 0 */
/* Skip verify of stab_reg_to_regnum, invalid_p == 0 */
/* Skip verify of ecoff_reg_to_regnum, invalid_p == 0 */
/* Skip verify of dwarf_reg_to_regnum, invalid_p == 0 */
@@ -693,7 +687,6 @@ verify_gdbarch (struct gdbarch *current_gdbarch)
/* Skip verify of store_return_value, invalid_p == 0 */
/* Skip verify of use_struct_convention, invalid_p == 0 */
/* Skip verify of extract_struct_value_address, has predicate */
- /* Skip verify of deprecated_extract_struct_value_address, has predicate */
/* Skip verify of deprecated_frame_init_saved_regs, has predicate */
/* Skip verify of deprecated_init_extra_frame_info, has predicate */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
@@ -709,12 +702,8 @@ verify_gdbarch (struct gdbarch *current_gdbarch)
/* Skip verify of adjust_breakpoint_address, has predicate */
/* Skip verify of memory_insert_breakpoint, invalid_p == 0 */
/* Skip verify of memory_remove_breakpoint, invalid_p == 0 */
- if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
- && (current_gdbarch->decr_pc_after_break == -1))
- fprintf_unfiltered (log, "\n\tdecr_pc_after_break");
- if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
- && (current_gdbarch->function_start_offset == -1))
- fprintf_unfiltered (log, "\n\tfunction_start_offset");
+ /* Skip verify of decr_pc_after_break, invalid_p == 0 */
+ /* Skip verify of function_start_offset, invalid_p == 0 */
/* Skip verify of remote_translate_xfer_address, invalid_p == 0 */
if ((GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL)
&& (current_gdbarch->frame_args_skip == -1))
@@ -1098,25 +1087,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
(long) current_gdbarch->deprecated_extract_return_value
/*DEPRECATED_EXTRACT_RETURN_VALUE ()*/);
#endif
-#ifdef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P()",
- XSTRING (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P ()));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P() = %d\n",
- DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P ());
-#endif
-#ifdef DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS
- fprintf_unfiltered (file,
- "gdbarch_dump: %s # %s\n",
- "DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regbuf)",
- XSTRING (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (regbuf)));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS = <0x%08lx>\n",
- (long) current_gdbarch->deprecated_extract_struct_value_address
- /*DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS ()*/);
-#endif
#ifdef DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED
fprintf_unfiltered (file,
"gdbarch_dump: DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED # %s\n",
@@ -1376,14 +1346,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
"gdbarch_dump: DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE = %d\n",
DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE);
#endif
-#ifdef DEPRECATED_NPC_REGNUM
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_NPC_REGNUM # %s\n",
- XSTRING (DEPRECATED_NPC_REGNUM));
- fprintf_unfiltered (file,
- "gdbarch_dump: DEPRECATED_NPC_REGNUM = %d\n",
- DEPRECATED_NPC_REGNUM);
-#endif
#ifdef DEPRECATED_PC_IN_CALL_DUMMY_P
fprintf_unfiltered (file,
"gdbarch_dump: %s # %s\n",
@@ -2993,23 +2955,6 @@ set_gdbarch_fp0_regnum (struct gdbarch *gdbarch,
}
int
-gdbarch_deprecated_npc_regnum (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- /* Skip verify of deprecated_npc_regnum, invalid_p == 0 */
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_npc_regnum called\n");
- return gdbarch->deprecated_npc_regnum;
-}
-
-void
-set_gdbarch_deprecated_npc_regnum (struct gdbarch *gdbarch,
- int deprecated_npc_regnum)
-{
- gdbarch->deprecated_npc_regnum = deprecated_npc_regnum;
-}
-
-int
gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int stab_regnr)
{
gdb_assert (gdbarch != NULL);
@@ -4425,30 +4370,6 @@ set_gdbarch_extract_struct_value_address (struct gdbarch *gdbarch,
}
int
-gdbarch_deprecated_extract_struct_value_address_p (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- return gdbarch->deprecated_extract_struct_value_address != NULL;
-}
-
-CORE_ADDR
-gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, char *regbuf)
-{
- gdb_assert (gdbarch != NULL);
- gdb_assert (gdbarch->deprecated_extract_struct_value_address != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_deprecated_extract_struct_value_address called\n");
- return gdbarch->deprecated_extract_struct_value_address (regbuf);
-}
-
-void
-set_gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch,
- gdbarch_deprecated_extract_struct_value_address_ftype deprecated_extract_struct_value_address)
-{
- gdbarch->deprecated_extract_struct_value_address = deprecated_extract_struct_value_address;
-}
-
-int
gdbarch_deprecated_frame_init_saved_regs_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
@@ -4626,8 +4547,7 @@ CORE_ADDR
gdbarch_decr_pc_after_break (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
- /* Check variable changed from pre-default. */
- gdb_assert (gdbarch->decr_pc_after_break != -1);
+ /* Skip verify of decr_pc_after_break, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_decr_pc_after_break called\n");
return gdbarch->decr_pc_after_break;
@@ -4644,8 +4564,7 @@ CORE_ADDR
gdbarch_function_start_offset (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
- /* Check variable changed from pre-default. */
- gdb_assert (gdbarch->function_start_offset != -1);
+ /* Skip verify of function_start_offset, invalid_p == 0 */
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_function_start_offset called\n");
return gdbarch->function_start_offset;
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
index a9df6754327..8240ae4fe30 100644
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
@@ -1,7 +1,9 @@
/* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
/* Dynamic architecture support for GDB, the GNU debugger.
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
@@ -376,18 +378,6 @@ extern void set_gdbarch_fp0_regnum (struct gdbarch *gdbarch, int fp0_regnum);
#define FP0_REGNUM (gdbarch_fp0_regnum (current_gdbarch))
#endif
-/* Replace DEPRECATED_NPC_REGNUM with an implementation of WRITE_PC
- that updates PC, NPC and even NNPC. */
-
-extern int gdbarch_deprecated_npc_regnum (struct gdbarch *gdbarch);
-extern void set_gdbarch_deprecated_npc_regnum (struct gdbarch *gdbarch, int deprecated_npc_regnum);
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_NPC_REGNUM)
-#error "Non multi-arch definition of DEPRECATED_NPC_REGNUM"
-#endif
-#if !defined (DEPRECATED_NPC_REGNUM)
-#define DEPRECATED_NPC_REGNUM (gdbarch_deprecated_npc_regnum (current_gdbarch))
-#endif
-
/* Convert stab register number (from `r' declaration) to a gdb REGNUM. */
typedef int (gdbarch_stab_reg_to_regnum_ftype) (int stab_regnr);
@@ -1548,31 +1538,6 @@ extern void set_gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, g
#define EXTRACT_STRUCT_VALUE_ADDRESS(regcache) (gdbarch_extract_struct_value_address (current_gdbarch, regcache))
#endif
-#if defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
-/* Legacy for systems yet to multi-arch DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS */
-#if !defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P)
-#define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P() (1)
-#endif
-#endif
-
-extern int gdbarch_deprecated_extract_struct_value_address_p (struct gdbarch *gdbarch);
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P)
-#error "Non multi-arch definition of DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS"
-#endif
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P)
-#define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P() (gdbarch_deprecated_extract_struct_value_address_p (current_gdbarch))
-#endif
-
-typedef CORE_ADDR (gdbarch_deprecated_extract_struct_value_address_ftype) (char *regbuf);
-extern CORE_ADDR gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, char *regbuf);
-extern void set_gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, gdbarch_deprecated_extract_struct_value_address_ftype *deprecated_extract_struct_value_address);
-#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
-#error "Non multi-arch definition of DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS"
-#endif
-#if !defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
-#define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regbuf) (gdbarch_deprecated_extract_struct_value_address (current_gdbarch, regbuf))
-#endif
-
#if defined (DEPRECATED_FRAME_INIT_SAVED_REGS)
/* Legacy for systems yet to multi-arch DEPRECATED_FRAME_INIT_SAVED_REGS */
#if !defined (DEPRECATED_FRAME_INIT_SAVED_REGS_P)
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
index eb015b38d74..1801e8fb662 100755
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
@@ -1,7 +1,10 @@
#!/bin/sh -u
# Architecture commands for GDB, the GNU debugger.
-# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+#
+# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+# Foundation, Inc.
+#
#
# This file is part of GDB.
#
@@ -454,9 +457,6 @@ v:2:SP_REGNUM:int:sp_regnum::::-1:-1::0
v:2:PC_REGNUM:int:pc_regnum::::-1:-1::0
v:2:PS_REGNUM:int:ps_regnum::::-1:-1::0
v:2:FP0_REGNUM:int:fp0_regnum::::0:-1::0
-# Replace DEPRECATED_NPC_REGNUM with an implementation of WRITE_PC
-# that updates PC, NPC and even NNPC.
-v:2:DEPRECATED_NPC_REGNUM:int:deprecated_npc_regnum::::0:-1::0
# Convert stab register number (from \`r\' declaration) to a gdb REGNUM.
f:2:STAB_REG_TO_REGNUM:int:stab_reg_to_regnum:int stab_regnr:stab_regnr:::no_op_reg_to_regnum::0
# Provide a default mapping from a ecoff register number to a gdb REGNUM.
@@ -620,7 +620,6 @@ f:2:DEPRECATED_STORE_RETURN_VALUE:void:deprecated_store_return_value:struct type
f:2:USE_STRUCT_CONVENTION:int:use_struct_convention:int gcc_p, struct type *value_type:gcc_p, value_type:::generic_use_struct_convention::0
F:2:EXTRACT_STRUCT_VALUE_ADDRESS:CORE_ADDR:extract_struct_value_address:struct regcache *regcache:regcache
-F:2:DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS:CORE_ADDR:deprecated_extract_struct_value_address:char *regbuf:regbuf
#
F:2:DEPRECATED_FRAME_INIT_SAVED_REGS:void:deprecated_frame_init_saved_regs:struct frame_info *frame:frame
F:2:DEPRECATED_INIT_EXTRA_FRAME_INFO:void:deprecated_init_extra_frame_info:int fromleaf, struct frame_info *frame:fromleaf, frame
@@ -632,8 +631,8 @@ f::BREAKPOINT_FROM_PC:const unsigned char *:breakpoint_from_pc:CORE_ADDR *pcptr,
M:2:ADJUST_BREAKPOINT_ADDRESS:CORE_ADDR:adjust_breakpoint_address:CORE_ADDR bpaddr:bpaddr
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
+v:2:DECR_PC_AFTER_BREAK:CORE_ADDR:decr_pc_after_break::::0:::0
+v:2:FUNCTION_START_OFFSET:CORE_ADDR:function_start_offset::::0:::0
#
m::REMOTE_TRANSLATE_XFER_ADDRESS:void:remote_translate_xfer_address:struct regcache *regcache, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len:regcache, gdb_addr, gdb_len, rem_addr, rem_len:::generic_remote_translate_xfer_address::0
#
@@ -823,7 +822,9 @@ cat <<EOF
/* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
/* Dynamic architecture support for GDB, the GNU debugger.
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
diff --git a/gdb/gdbinit.in b/gdb/gdbinit.in
index 56881c97476..1a080dca897 100644
--- a/gdb/gdbinit.in
+++ b/gdb/gdbinit.in
@@ -10,7 +10,6 @@ commands
return
end
-dir @srcdir@/../mmalloc
dir @srcdir@/../libiberty
dir @srcdir@/../bfd
dir @srcdir@
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
index 1b6620aa3a6..4058af1a4dc 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -127,8 +127,6 @@ struct extra
int len;
}; /* maximum extension is 128! FIXME */
-static void add_name (struct extra *, const char *);
-static void add_mangled_type (struct extra *, struct type *);
static void print_bit_vector (B_TYPE *, int);
static void print_arg_types (struct field *, int, int);
static void dump_fn_fieldlists (struct type *, int);
diff --git a/gdb/go32-nat.c b/gdb/go32-nat.c
index fc4df5d65f4..0932ddb541c 100644
--- a/gdb/go32-nat.c
+++ b/gdb/go32-nat.c
@@ -1515,7 +1515,7 @@ go32_sldt (char *arg, int from_tty)
if (ldt_entry < 0
|| (ldt_entry & 4) == 0
|| (ldt_entry & 3) != (cpl & 3))
- error ("Invalid LDT entry 0x%03x.", ldt_entry);
+ error ("Invalid LDT entry 0x%03lx.", (unsigned long)ldt_entry);
}
}
@@ -1553,8 +1553,8 @@ go32_sldt (char *arg, int from_tty)
if (ldt_entry >= 0)
{
if (ldt_entry > limit)
- error ("Invalid LDT entry %#x: outside valid limits [0..%#x]",
- ldt_entry, limit);
+ error ("Invalid LDT entry %#lx: outside valid limits [0..%#x]",
+ (unsigned long)ldt_entry, limit);
display_descriptor (ldt_descr.stype, base, ldt_entry / 8, 1);
}
@@ -1584,8 +1584,8 @@ go32_sgdt (char *arg, int from_tty)
{
gdt_entry = parse_and_eval_long (arg);
if (gdt_entry < 0 || (gdt_entry & 7) != 0)
- error ("Invalid GDT entry 0x%03x: not an integral multiple of 8.",
- gdt_entry);
+ error ("Invalid GDT entry 0x%03lx: not an integral multiple of 8.",
+ (unsigned long)gdt_entry);
}
}
@@ -1595,8 +1595,8 @@ go32_sgdt (char *arg, int from_tty)
if (gdt_entry >= 0)
{
if (gdt_entry > gdtr.limit)
- error ("Invalid GDT entry %#x: outside valid limits [0..%#x]",
- gdt_entry, gdtr.limit);
+ error ("Invalid GDT entry %#lx: outside valid limits [0..%#x]",
+ (unsigned long)gdt_entry, gdtr.limit);
display_descriptor (0, gdtr.base, gdt_entry / 8, 1);
}
@@ -1625,7 +1625,7 @@ go32_sidt (char *arg, int from_tty)
{
idt_entry = parse_and_eval_long (arg);
if (idt_entry < 0)
- error ("Invalid (negative) IDT entry %d.", idt_entry);
+ error ("Invalid (negative) IDT entry %ld.", idt_entry);
}
}
@@ -1637,8 +1637,8 @@ go32_sidt (char *arg, int from_tty)
if (idt_entry >= 0)
{
if (idt_entry > idtr.limit)
- error ("Invalid IDT entry %#x: outside valid limits [0..%#x]",
- idt_entry, idtr.limit);
+ error ("Invalid IDT entry %#lx: outside valid limits [0..%#x]",
+ (unsigned long)idt_entry, idtr.limit);
display_descriptor (1, idtr.base, idt_entry, 1);
}
@@ -1834,7 +1834,7 @@ display_page_table (long n, int force)
static void
go32_pte (char *arg, int from_tty)
{
- long pde_idx = -1, i;
+ long pde_idx = -1L, i;
if (arg && *arg)
{
@@ -1845,7 +1845,7 @@ go32_pte (char *arg, int from_tty)
{
pde_idx = parse_and_eval_long (arg);
if (pde_idx < 0 || pde_idx >= 1024)
- error ("Entry %d is outside valid limits [0..1023].", pde_idx);
+ error ("Entry %ld is outside valid limits [0..1023].", pde_idx);
}
}
diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c
index 4a66d806a51..c87dfab61f7 100644
--- a/gdb/h8300-tdep.c
+++ b/gdb/h8300-tdep.c
@@ -1323,11 +1323,6 @@ h8300_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
*/
/* Stack grows up. */
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- /* PC stops zero byte after a trap instruction
- (which means: exactly on trap instruction). */
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- /* This value is almost never non-zero... */
- set_gdbarch_function_start_offset (gdbarch, 0);
/* This value is almost never non-zero... */
set_gdbarch_frame_args_skip (gdbarch, 0);
set_gdbarch_frameless_function_invocation (gdbarch,
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
index 57579bcfd9a..53bb447ec7e 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
@@ -1,7 +1,8 @@
/* Target-dependent code for the HP PA architecture, for GDB.
Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
Contributed by the Center for Software Science at the
University of Utah (pa-gdb-bugs@cs.utah.edu).
@@ -193,7 +194,6 @@ int hppa32_use_struct_convention (int gcc_p, struct type *type);
int hppa64_use_struct_convention (int gcc_p, struct type *type);
void hppa32_store_return_value (struct type *type, char *valbuf);
void hppa64_store_return_value (struct type *type, char *valbuf);
-CORE_ADDR hppa_extract_struct_value_address (char *regbuf);
int hppa_cannot_store_register (int regnum);
void hppa_init_extra_frame_info (int fromleaf, struct frame_info *frame);
CORE_ADDR hppa_frame_chain (struct frame_info *frame);
@@ -2608,7 +2608,7 @@ hppa_target_write_pc (CORE_ADDR v, ptid_t ptid)
write_register_pid (31, v | 0x3, ptid);
write_register_pid (PC_REGNUM, v, ptid);
- write_register_pid (DEPRECATED_NPC_REGNUM, v + 4, ptid);
+ write_register_pid (PCOQ_TAIL_REGNUM, v + 4, ptid);
}
/* return the alignment of a type in bytes. Structures have the maximum
@@ -5005,26 +5005,6 @@ hppa_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
{
write_register (28, addr);
}
-
-CORE_ADDR
-hppa_extract_struct_value_address (char *regbuf)
-{
- /* 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). */
- /* FIXME: brobecker 2002-12-26.
- The current implementation is historical, but we should eventually
- implement it in a more robust manner as it relies on the fact that
- the address size is equal to the size of an int* _on the host_...
- One possible implementation that crossed my mind is to use
- extract_address. */
- /* FIXME: cagney/2003-09-27: This function can probably go. ELZ
- writes: We cannot assume on the pa that r28 still contains the
- address of the returned structure. Usually this will be
- overwritten by the callee. */
- return (*(int *)(regbuf + DEPRECATED_REGISTER_BYTE (28)));
-}
-
/* Return True if REGNUM is not a register available to the user
through ptrace(). */
@@ -5061,6 +5041,41 @@ hppa_fetch_pointer_argument (struct frame_info *frame, int argi,
return addr;
}
+/* Here is a table of C type sizes on hppa with various compiles
+ and options. I measured this on PA 9000/800 with HP-UX 11.11
+ and these compilers:
+
+ /usr/ccs/bin/cc HP92453-01 A.11.01.21
+ /opt/ansic/bin/cc HP92453-01 B.11.11.28706.GP
+ /opt/aCC/bin/aCC B3910B A.03.45
+ gcc gcc 3.3.2 native hppa2.0w-hp-hpux11.11
+
+ cc : 1 2 4 4 8 : 4 8 -- : 4 4
+ ansic +DA1.1 : 1 2 4 4 8 : 4 8 16 : 4 4
+ ansic +DA2.0 : 1 2 4 4 8 : 4 8 16 : 4 4
+ ansic +DA2.0W : 1 2 4 8 8 : 4 8 16 : 8 8
+ acc +DA1.1 : 1 2 4 4 8 : 4 8 16 : 4 4
+ acc +DA2.0 : 1 2 4 4 8 : 4 8 16 : 4 4
+ acc +DA2.0W : 1 2 4 8 8 : 4 8 16 : 8 8
+ gcc : 1 2 4 4 8 : 4 8 16 : 4 4
+
+ Each line is:
+
+ compiler and options
+ char, short, int, long, long long
+ float, double, long double
+ char *, void (*)()
+
+ So all these compilers use either ILP32 or LP64 model.
+ TODO: gcc has more options so it needs more investigation.
+
+ For floating point types, see:
+
+ http://docs.hp.com/hpux/pdf/B3906-90006.pdf
+ HP-UX floating-point guide, hpux 11.00
+
+ -- chastain 2003-12-18 */
+
static struct gdbarch *
hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
{
@@ -5141,12 +5156,16 @@ hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_register_bytes
(gdbarch, gdbarch_num_regs (gdbarch) * tdep->bytes_per_address);
set_gdbarch_long_bit (gdbarch, tdep->bytes_per_address * TARGET_CHAR_BIT);
- set_gdbarch_long_long_bit (gdbarch, 64);
set_gdbarch_ptr_bit (gdbarch, tdep->bytes_per_address * TARGET_CHAR_BIT);
+ /* The following gdbarch vector elements are the same in both ILP32
+ and LP64, but might show differences some day. */
+ set_gdbarch_long_long_bit (gdbarch, 64);
+ set_gdbarch_long_double_bit (gdbarch, 128);
+ set_gdbarch_long_double_format (gdbarch, &floatformat_ia64_quad_big);
+
/* The following gdbarch vector elements do not depend on the address
size, or in any other gdbarch element previously set. */
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_skip_prologue (gdbarch, hppa_skip_prologue);
set_gdbarch_skip_trampoline_code (gdbarch, hppa_skip_trampoline_code);
set_gdbarch_in_solib_call_trampoline (gdbarch, hppa_in_solib_call_trampoline);
@@ -5154,21 +5173,17 @@ hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
hppa_in_solib_return_trampoline);
set_gdbarch_deprecated_saved_pc_after_call (gdbarch, hppa_saved_pc_after_call);
set_gdbarch_inner_than (gdbarch, hppa_inner_than);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
set_gdbarch_deprecated_register_size (gdbarch, tdep->bytes_per_address);
set_gdbarch_deprecated_fp_regnum (gdbarch, 3);
set_gdbarch_sp_regnum (gdbarch, 30);
set_gdbarch_fp0_regnum (gdbarch, 64);
set_gdbarch_pc_regnum (gdbarch, PCOQ_HEAD_REGNUM);
- set_gdbarch_deprecated_npc_regnum (gdbarch, PCOQ_TAIL_REGNUM);
set_gdbarch_deprecated_register_raw_size (gdbarch, hppa_register_raw_size);
set_gdbarch_deprecated_register_byte (gdbarch, hppa_register_byte);
set_gdbarch_deprecated_register_virtual_size (gdbarch, hppa_register_raw_size);
set_gdbarch_deprecated_max_register_raw_size (gdbarch, tdep->bytes_per_address);
set_gdbarch_deprecated_max_register_virtual_size (gdbarch, 8);
set_gdbarch_deprecated_store_struct_return (gdbarch, hppa_store_struct_return);
- set_gdbarch_deprecated_extract_struct_value_address
- (gdbarch, hppa_extract_struct_value_address);
set_gdbarch_cannot_store_register (gdbarch, hppa_cannot_store_register);
set_gdbarch_deprecated_init_extra_frame_info (gdbarch, hppa_init_extra_frame_info);
set_gdbarch_deprecated_frame_chain (gdbarch, hppa_frame_chain);
diff --git a/gdb/hppab-nat.c b/gdb/hppab-nat.c
deleted file mode 100644
index 416db66a2bc..00000000000
--- a/gdb/hppab-nat.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/* Machine-dependent hooks for the unix child process stratum. This
- code is for the HP PA-RISC cpu.
-
- Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1998,
- 1999, 2000, 2001 Free Software Foundation, Inc.
-
- Contributed by the Center for Software Science at the
- University of Utah (pa-gdb-bugs@cs.utah.edu).
-
- 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 "target.h"
-#include "regcache.h"
-#include <sys/ptrace.h>
-
-/* Use an extra level of indirection for ptrace calls.
- This lets us breakpoint usefully on call_ptrace. It also
- allows us to pass an extra argument to ptrace without
- using an ANSI-C specific macro. */
-
-#define ptrace call_ptrace
-
-#if !defined (offsetof)
-#define offsetof(TYPE, MEMBER) ((unsigned long) &((TYPE *)0)->MEMBER)
-#endif
-
-/* U_REGS_OFFSET is the offset of the registers within the u area. */
-#if !defined (U_REGS_OFFSET)
-#define U_REGS_OFFSET \
- ptrace (PT_READ_U, PIDGET (inferior_ptid), \
- (PTRACE_ARG3_TYPE) (offsetof (struct user, u_ar0)), 0) \
- - KERNEL_U_ADDR
-#endif
-
-/* Fetch one register. */
-
-static void
-fetch_register (int regno)
-{
- unsigned int regaddr;
- char buf[MAX_REGISTER_SIZE];
- int i;
-
- /* Offset of registers within the u area. */
- unsigned int offset;
-
- offset = U_REGS_OFFSET;
-
- regaddr = register_addr (regno, offset);
- for (i = 0; i < DEPRECATED_REGISTER_RAW_SIZE (regno); i += sizeof (int))
- {
- errno = 0;
- *(int *) &buf[i] = ptrace (PT_RUREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) regaddr, 0);
- regaddr += sizeof (int);
- if (errno != 0)
- {
- /* Warning, not error, in case we are attached; sometimes the
- kernel doesn't let us at the registers. */
- char *err = safe_strerror (errno);
- char *msg = alloca (strlen (err) + 128);
- sprintf (msg, "reading register %s: %s", REGISTER_NAME (regno), err);
- warning (msg);
- goto error_exit;
- }
- }
- supply_register (regno, buf);
-error_exit:;
-}
-
-/* Fetch all registers, or just one, from the child process. */
-
-void
-fetch_inferior_registers (int regno)
-{
- if (regno == -1)
- for (regno = 0; regno < NUM_REGS; regno++)
- fetch_register (regno);
- else
- fetch_register (regno);
-}
-
-/* Store our register values back into the inferior.
- If REGNO is -1, do this for all registers.
- Otherwise, REGNO specifies which register (so we can save time). */
-
-void
-store_inferior_registers (int regno)
-{
- unsigned int regaddr;
- char buf[80];
- int i;
- unsigned int offset = U_REGS_OFFSET;
- int scratch;
-
- if (regno >= 0)
- {
- if (CANNOT_STORE_REGISTER (regno))
- return;
- regaddr = register_addr (regno, offset);
- errno = 0;
- if (regno == PCOQ_HEAD_REGNUM || regno == PCOQ_TAIL_REGNUM)
- {
- scratch = *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (regno)] | 0x3;
- ptrace (PT_WUREGS, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) regaddr,
- scratch);
- if (errno != 0)
- {
- /* Error, even if attached. Failing to write these two
- registers is pretty serious. */
- sprintf (buf, "writing register number %d", regno);
- perror_with_name (buf);
- }
- }
- else
- for (i = 0; i < DEPRECATED_REGISTER_RAW_SIZE (regno); i += sizeof (int))
- {
- errno = 0;
- ptrace (PT_WUREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) regaddr,
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (regno) + i]);
- if (errno != 0)
- {
- /* Warning, not error, in case we are attached; sometimes the
- kernel doesn't let us at the registers. */
- char *err = safe_strerror (errno);
- char *msg = alloca (strlen (err) + 128);
- sprintf (msg, "writing register %s: %s",
- REGISTER_NAME (regno), err);
- warning (msg);
- return;
- }
- regaddr += sizeof (int);
- }
- }
- else
- for (regno = 0; regno < NUM_REGS; regno++)
- store_inferior_registers (regno);
-}
-
-/* PT_PROT is specific to the PA BSD kernel and isn't documented
- anywhere (except here).
-
- PT_PROT allows one to enable/disable the data memory break bit
- for pages of memory in an inferior process. This bit is used
- to cause "Data memory break traps" to occur when the appropriate
- page is written to.
-
- The arguments are as follows:
-
- PT_PROT -- The ptrace action to perform.
-
- INFERIOR_PID -- The pid of the process who's page table entries
- will be modified.
-
- PT_ARGS -- The *address* of a 3 word block of memory which has
- additional information:
-
- word 0 -- The start address to watch. This should be a page-aligned
- address.
-
- word 1 -- The ending address to watch. Again, this should be a
- page aligned address.
-
- word 2 -- Nonzero to enable the data memory break bit on the
- given address range or zero to disable the data memory break
- bit on the given address range.
-
- This call may fail if the given addresses are not valid in the inferior
- process. This most often happens when restarting a program which
- has watchpoints inserted on heap or stack memory. */
-
-#define PT_PROT 21
-
-int
-hppa_set_watchpoint (int addr, int len, int flag)
-{
- int pt_args[3];
- pt_args[0] = addr;
- pt_args[1] = addr + len;
- pt_args[2] = flag;
-
- /* Mask off the lower 12 bits since we want to work on a page basis. */
- pt_args[0] >>= 12;
- pt_args[1] >>= 12;
-
- /* Rounding adjustments. */
- pt_args[1] -= pt_args[0];
- pt_args[1]++;
-
- /* Put the lower 12 bits back as zero. */
- pt_args[0] <<= 12;
- pt_args[1] <<= 12;
-
- /* Do it. */
- return ptrace (PT_PROT, PIDGET (inferior_ptid), (PTRACE_ARG3_TYPE) pt_args, 0);
-}
diff --git a/gdb/hppam3-nat.c b/gdb/hppam3-nat.c
deleted file mode 100644
index cbee288c778..00000000000
--- a/gdb/hppam3-nat.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/* Low level interface to HP800 running mach 4.0 for GDB, the GNU
- debugger.
-
- Copyright 1995, 2000, 2001, 2003 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "defs.h"
-#include "inferior.h"
-#include "floatformat.h"
-#include "regcache.h"
-
-#include <stdio.h>
-
-#include <mach.h>
-#include <mach/message.h>
-#include <mach/exception.h>
-#include <mach_error.h>
-
-#include <target.h>
-
-/*
- * Fetch inferiors registers for gdb.
- * REGNO specifies which (as gdb views it) register, -1 for all.
- */
-
-void
-fetch_inferior_registers (int regno)
-{
- kern_return_t ret;
- thread_state_data_t state;
- unsigned int stateCnt = TRACE_FLAVOR_SIZE;
- int index;
-
- if (!MACH_PORT_VALID (current_thread))
- error ("fetch inferior registers: Invalid thread");
-
- if (must_suspend_thread)
- setup_thread (current_thread, 1);
-
- ret = thread_get_state (current_thread,
- TRACE_FLAVOR,
- state,
- &stateCnt);
-
- if (ret != KERN_SUCCESS)
- warning ("fetch_inferior_registers: %s ",
- mach_error_string (ret));
- else
- {
- for (index = 0; index < NUM_REGS; index++)
- supply_register (index, (void *) &state[index]);
- }
-
- if (must_suspend_thread)
- setup_thread (current_thread, 0);
-}
-
-/* Store our register values back into the inferior.
- * If REGNO is -1, do this for all registers.
- * Otherwise, REGNO specifies which register
- *
- * On mach3 all registers are always saved in one call.
- */
-void
-store_inferior_registers (int regno)
-{
- kern_return_t ret;
- thread_state_data_t state;
- unsigned int stateCnt = TRACE_FLAVOR_SIZE;
- int index;
-
- if (!MACH_PORT_VALID (current_thread))
- error ("store inferior registers: Invalid thread");
-
- if (must_suspend_thread)
- setup_thread (current_thread, 1);
-
- /* Fetch the state of the current thread */
- ret = thread_get_state (current_thread,
- TRACE_FLAVOR,
- state,
- &stateCnt);
-
- if (ret != KERN_SUCCESS)
- {
- warning ("store_inferior_registers (get): %s",
- mach_error_string (ret));
- if (must_suspend_thread)
- setup_thread (current_thread, 0);
- return;
- }
-
-
- /* move gdb's registers to thread's state
-
- * Since we save all registers anyway, save the ones
- * that gdb thinks are valid (e.g. ignore the regno
- * parameter)
- */
- if (regno > 0 && regno < NUM_REGS)
- {
- memcpy (&state[regno], &deprecated_registers[DEPRECATED_REGISTER_BYTE (regno)],
- DEPRECATED_REGISTER_RAW_SIZE (regno));
- }
- else
- {
- for (index = 0; index < NUM_REGS; index++)
- memcpy (&state[index], &deprecated_registers[DEPRECATED_REGISTER_BYTE (index)],
- DEPRECATED_REGISTER_RAW_SIZE (index));
-/* state[index] = deprecated_registers[DEPRECATED_REGISTER_BYTE (index)]; */
-
- }
-
- /* Write gdb's current view of register to the thread
- */
- ret = thread_set_state (current_thread,
- TRACE_FLAVOR,
- state,
- TRACE_FLAVOR_SIZE);
-
- if (ret != KERN_SUCCESS)
- warning ("store_inferior_registers (set): %s",
- mach_error_string (ret));
-
- if (must_suspend_thread)
- setup_thread (current_thread, 0);
-}
diff --git a/gdb/hpread.c b/gdb/hpread.c
index 40875f79377..246f77ec0c5 100644
--- a/gdb/hpread.c
+++ b/gdb/hpread.c
@@ -1,6 +1,6 @@
/* Read hp debug symbols and convert to internal format, for GDB.
- Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+ Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -4160,16 +4160,19 @@ hpread_read_struct_type (dnttpointer hp_type, union dnttentry *dn_bufp,
list->field.name = VT (objfile) + fieldp->dfield.name;
- /* A FIELD by itself (without a GENFIELD) can also be a static member */
- FIELD_STATIC_KIND (list->field) = 0;
+ /* A FIELD by itself (without a GENFIELD) can also be a static
+ member. Mark it as static with a physname of NULL.
+ fix_static_member_physnames will assign the physname later. */
if (fieldp->dfield.staticmem)
{
- FIELD_BITPOS (list->field) = -1;
+ SET_FIELD_PHYSNAME (list->field, NULL);
+ FIELD_BITPOS (list->field) = 0;
FIELD_BITSIZE (list->field) = 0;
}
else
/* Non-static data member */
{
+ FIELD_STATIC_KIND (list->field) = 0;
FIELD_BITPOS (list->field) = fieldp->dfield.bitoffset;
if (fieldp->dfield.bitlength % 8)
FIELD_BITSIZE (list->field) = fieldp->dfield.bitlength;
diff --git a/gdb/i386-interix-tdep.c b/gdb/i386-interix-tdep.c
index ea9f8c43e86..0d2af2f0cf2 100644
--- a/gdb/i386-interix-tdep.c
+++ b/gdb/i386-interix-tdep.c
@@ -325,7 +325,6 @@ i386_interix_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
tdep->struct_return = reg_struct_return;
tdep->jb_pc_offset = jump_buffer_Eip_offset;
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
set_gdbarch_pc_in_sigtramp (gdbarch, i386_interix_pc_in_sigtramp);
set_gdbarch_in_solib_call_trampoline (gdbarch,
i386_interix_in_solib_call_trampoline);
diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c
index bb161438690..16436615883 100644
--- a/gdb/i386-linux-nat.c
+++ b/gdb/i386-linux-nat.c
@@ -641,6 +641,8 @@ store_inferior_registers (int regno)
}
+/* Support for debug registers. */
+
static unsigned long
i386_linux_dr_get (int regnum)
{
diff --git a/gdb/i386-nto-tdep.c b/gdb/i386-nto-tdep.c
index a80c7a47f98..4a1eaace828 100644
--- a/gdb/i386-nto-tdep.c
+++ b/gdb/i386-nto-tdep.c
@@ -270,7 +270,8 @@ i386nto_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* NTO uses ELF. */
i386_elf_init_abi (info, gdbarch);
- /* Neutrino rewinds to look more normal. */
+ /* Neutrino rewinds to look more normal. Need to override the i386
+ default which is [unfortunatly] to decrement the PC. */
set_gdbarch_decr_pc_after_break (gdbarch, 0);
/* NTO has shared libraries. */
diff --git a/gdb/i386-sol2-tdep.c b/gdb/i386-sol2-tdep.c
index 78487af4658..0da32d5c0e2 100644
--- a/gdb/i386-sol2-tdep.c
+++ b/gdb/i386-sol2-tdep.c
@@ -24,6 +24,27 @@
#include "i386-tdep.h"
+/* From <ia32/sys/reg.h>. */
+static int i386_sol2_gregset_reg_offset[] =
+{
+ 11 * 4, /* %eax */
+ 10 * 4, /* %ecx */
+ 9 * 4, /* %edx */
+ 8 * 4, /* %ebx */
+ 17 * 4, /* %esp */
+ 6 * 4, /* %ebp */
+ 5 * 4, /* %esi */
+ 4 * 4, /* %edi */
+ 14 * 4, /* %eip */
+ 16 * 4, /* %eflags */
+ 15 * 4, /* %cs */
+ 18 * 4, /* %ss */
+ 3 * 4, /* %ds */
+ 2 * 4, /* %es */
+ 1 * 4, /* %fs */
+ 0 * 4 /* %gs */
+};
+
static int
i386_sol2_pc_in_sigtramp (CORE_ADDR pc, char *name)
{
@@ -32,6 +53,20 @@ i386_sol2_pc_in_sigtramp (CORE_ADDR pc, char *name)
return (pc == 0xffffffff);
}
+/* Solaris doesn't have a `struct sigcontext', but it does have a
+ `mcontext_t' that contains the saved set of machine registers. */
+
+static CORE_ADDR
+i386_sol2_mcontext_addr (struct frame_info *next_frame)
+{
+ CORE_ADDR sp, ucontext_addr;
+
+ sp = frame_unwind_register_unsigned (next_frame, I386_ESP_REGNUM);
+ ucontext_addr = get_frame_memory_unsigned (next_frame, sp + 8, 4);
+
+ return ucontext_addr + 36;
+}
+
/* Solaris 2. */
static void
@@ -42,6 +77,18 @@ i386_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* Solaris is SVR4-based. */
i386_svr4_init_abi (info, gdbarch);
+ /* Solaris reserves space for its FPU emulator in `fpregset_t'.
+ There is also some space reserved for the registers of a Weitek
+ math coprocessor. */
+ tdep->gregset_reg_offset = i386_sol2_gregset_reg_offset;
+ tdep->gregset_num_regs = ARRAY_SIZE (i386_sol2_gregset_reg_offset);
+ tdep->sizeof_gregset = 19 * 4;
+ tdep->sizeof_fpregset = 380;
+
+ tdep->sigcontext_addr = i386_sol2_mcontext_addr;
+ tdep->sc_reg_offset = tdep->gregset_reg_offset;
+ tdep->sc_num_regs = tdep->gregset_num_regs;
+
/* Signal trampolines are slightly different from SVR4. */
set_gdbarch_pc_in_sigtramp (gdbarch, i386_sol2_pc_in_sigtramp);
}
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
index 4ee9fa46f19..e1ce81fcf0c 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
@@ -1,7 +1,8 @@
/* Intel 386 target-dependent stuff.
Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
This file is part of GDB.
@@ -1274,19 +1275,6 @@ i386_store_return_value (struct gdbarch *gdbarch, struct type *type,
#undef I387_ST0_REGNUM
}
-
-/* Extract from REGCACHE, which contains the (raw) register state, the
- address in which a function should return its structure value, as a
- CORE_ADDR. */
-
-static CORE_ADDR
-i386_extract_struct_value_address (struct regcache *regcache)
-{
- char buf[4];
-
- regcache_cooked_read (regcache, I386_EAX_REGNUM, buf);
- return extract_unsigned_integer (buf, 4);
-}
/* This is the variable that is set with "set struct-convention", and
@@ -1995,8 +1983,6 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_value_to_register (gdbarch, i386_value_to_register);
set_gdbarch_return_value (gdbarch, i386_return_value);
- set_gdbarch_extract_struct_value_address (gdbarch,
- i386_extract_struct_value_address);
set_gdbarch_skip_prologue (gdbarch, i386_skip_prologue);
@@ -2005,7 +1991,6 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_breakpoint_from_pc (gdbarch, i386_breakpoint_from_pc);
set_gdbarch_decr_pc_after_break (gdbarch, 1);
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_frame_args_skip (gdbarch, 8);
set_gdbarch_pc_in_sigtramp (gdbarch, i386_pc_in_sigtramp);
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
index c261e38c61c..70f6b8fec24 100644
--- a/gdb/i386-tdep.h
+++ b/gdb/i386-tdep.h
@@ -27,6 +27,7 @@ struct frame_info;
struct gdbarch;
struct reggroup;
struct regset;
+struct regcache;
/* GDB's i386 target supports both the 32-bit Intel Architecture
(IA-32) and the 64-bit AMD x86-64 architecture. Internally it uses
@@ -164,6 +165,8 @@ enum i386_regnum
I386_EDI_REGNUM, /* %edi */
I386_EIP_REGNUM, /* %eip */
I386_EFLAGS_REGNUM, /* %eflags */
+ I386_CS_REGNUM, /* %cs */
+ I386_SS_REGNUM, /* %ss */
I386_ST0_REGNUM = 16, /* %st(0) */
};
diff --git a/gdb/i386bsd-tdep.c b/gdb/i386bsd-tdep.c
index 80739cf572d..67d09ee14d7 100644
--- a/gdb/i386bsd-tdep.c
+++ b/gdb/i386bsd-tdep.c
@@ -144,6 +144,15 @@ i386bsd_aout_osabi_sniffer (bfd *abfd)
return GDB_OSABI_UNKNOWN;
}
+static enum gdb_osabi
+i386bsd_core_osabi_sniffer (bfd *abfd)
+{
+ if (strcmp (bfd_get_target (abfd), "netbsd-core") == 0)
+ return GDB_OSABI_NETBSD_AOUT;
+
+ return GDB_OSABI_UNKNOWN;
+}
+
/* Provide a prototype to silence -Wmissing-prototypes. */
void _initialize_i386bsd_tdep (void);
@@ -153,4 +162,9 @@ _initialize_i386bsd_tdep (void)
{
gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_aout_flavour,
i386bsd_aout_osabi_sniffer);
+
+ /* BFD doesn't set the architecture for NetBSD style a.out core
+ files. */
+ gdbarch_register_osabi_sniffer (bfd_arch_unknown, bfd_target_unknown_flavour,
+ i386bsd_core_osabi_sniffer);
}
diff --git a/gdb/i386obsd-tdep.c b/gdb/i386obsd-tdep.c
index a7e944150df..ed7a771a900 100644
--- a/gdb/i386obsd-tdep.c
+++ b/gdb/i386obsd-tdep.c
@@ -1,4 +1,5 @@
/* Target-dependent code for OpenBSD/i386.
+
Copyright 1988, 1989, 1991, 1992, 1994, 1996, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
@@ -23,60 +24,74 @@
#include "arch-utils.h"
#include "gdbcore.h"
#include "regcache.h"
+#include "regset.h"
#include "osabi.h"
+#include "gdb_assert.h"
+#include "gdb_string.h"
+
#include "i386-tdep.h"
#include "i387-tdep.h"
-/* Provide a prototype to silence -Wmissing-prototypes. */
-void _initialize_i386obsd_tdep (void);
-
-#define SIZEOF_STRUCT_REG (16 * 4)
+/* From <machine/reg.h>. */
+static int i386obsd_r_reg_offset[] =
+{
+ 0 * 4, /* %eax */
+ 1 * 4, /* %ecx */
+ 2 * 4, /* %edx */
+ 3 * 4, /* %ebx */
+ 4 * 4, /* %esp */
+ 5 * 4, /* %ebp */
+ 6 * 4, /* %esi */
+ 7 * 4, /* %edi */
+ 8 * 4, /* %eip */
+ 9 * 4, /* %eflags */
+ 10 * 4, /* %cs */
+ 11 * 4, /* %ss */
+ 12 * 4, /* %ds */
+ 13 * 4, /* %es */
+ 14 * 4, /* %fs */
+ 15 * 4 /* %gs */
+};
static void
-i386obsd_supply_reg (char *regs, int regno)
+i386obsd_aout_supply_regset (const struct regset *regset,
+ struct regcache *regcache, int regnum,
+ const void *regs, size_t len)
{
- int i;
+ const struct gdbarch_tdep *tdep = regset->descr;
+
+ gdb_assert (len >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE);
- for (i = 0; i <= 15; i++)
- if (regno == i || regno == -1)
- supply_register (i, regs + i * 4);
+ i386_supply_gregset (regset, regcache, regnum, regs, tdep->sizeof_gregset);
+ i387_supply_fsave (regcache, regnum, (char *) regs + tdep->sizeof_gregset);
}
-static void
-fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which,
- CORE_ADDR ignore)
+const struct regset *
+i386obsd_aout_regset_from_core_section (struct gdbarch *gdbarch,
+ const char *sect_name,
+ size_t sect_size)
{
- char *regs, *fsave;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- /* We get everything from one section. */
- if (which != 0)
- return;
+ /* OpenBSD a.out core dumps don't use seperate register sets for the
+ general-purpose and floating-point registers. */
- if (core_reg_size < (SIZEOF_STRUCT_REG + 108))
+ if (strcmp (sect_name, ".reg") == 0
+ && sect_size >= tdep->sizeof_gregset + I387_SIZEOF_FSAVE)
{
- warning ("Wrong size register set in core file.");
- return;
+ if (tdep->gregset == NULL)
+ {
+ tdep->gregset = XMALLOC (struct regset);
+ tdep->gregset->descr = tdep;
+ tdep->gregset->supply_regset = i386obsd_aout_supply_regset;
+ }
+ return tdep->gregset;
}
- regs = core_reg_sect;
- fsave = core_reg_sect + SIZEOF_STRUCT_REG;
-
- /* Integer registers. */
- i386obsd_supply_reg (regs, -1);
-
- /* Floating point registers. */
- i387_supply_fsave (current_regcache, -1, fsave);
+ return NULL;
}
-static struct core_fns i386obsd_core_fns =
-{
- bfd_target_unknown_flavour, /* core_flavour */
- default_check_format, /* check_format */
- default_core_sniffer, /* core_sniffer */
- fetch_core_registers, /* core_read_registers */
- NULL /* next */
-};
CORE_ADDR i386obsd_sigtramp_start = 0xbfbfdf20;
@@ -111,6 +126,15 @@ i386obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* Obviously OpenBSD is BSD-based. */
i386bsd_init_abi (info, gdbarch);
+ /* OpenBSD has a different `struct reg'. */
+ tdep->gregset_reg_offset = i386obsd_r_reg_offset;
+ tdep->gregset_num_regs = ARRAY_SIZE (i386obsd_r_reg_offset);
+ tdep->sizeof_gregset = 16 * 4;
+
+ /* OpenBSD has a single register set. */
+ set_gdbarch_regset_from_core_section
+ (gdbarch, i386obsd_aout_regset_from_core_section);
+
/* OpenBSD uses -freg-struct-return by default. */
tdep->struct_return = reg_struct_return;
@@ -121,14 +145,16 @@ i386obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* OpenBSD has a `struct sigcontext' that's different from the
origional 4.3 BSD. */
tdep->sc_reg_offset = i386obsd_sc_reg_offset;
- tdep->sc_num_regs = I386_NUM_GREGS;
+ tdep->sc_num_regs = ARRAY_SIZE (i386obsd_sc_reg_offset);
}
+
+
+/* Provide a prototype to silence -Wmissing-prototypes. */
+void _initialize_i386obsd_tdep (void);
void
_initialize_i386obsd_tdep (void)
{
- add_core_fns (&i386obsd_core_fns);
-
/* FIXME: kettenis/20021020: Since OpenBSD/i386 binaries are
indistingushable from NetBSD/i386 a.out binaries, building a GDB
that should support both these targets will probably not work as
diff --git a/gdb/ia64-linux-tdep.c b/gdb/ia64-linux-tdep.c
index 25902c57000..e465c3249aa 100644
--- a/gdb/ia64-linux-tdep.c
+++ b/gdb/ia64-linux-tdep.c
@@ -1,5 +1,5 @@
/* Target-dependent code for the IA-64 for GDB, the GNU debugger.
- Copyright 2000
+ Copyright 2000, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -29,7 +29,7 @@
overly generous to allow for different pages sizes. */
#define GATE_AREA_START 0xa000000000000100LL
-#define GATE_AREA_END 0xa000000000010000LL
+#define GATE_AREA_END 0xa000000000020000LL
/* Offset to sigcontext structure from frame of handler */
#define IA64_LINUX_SIGCONTEXT_OFFSET 192
diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c
index 88e0e20c072..6b2dba652ba 100644
--- a/gdb/ia64-tdep.c
+++ b/gdb/ia64-tdep.c
@@ -2480,9 +2480,9 @@ ia64_find_proc_info_x (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
return -UNW_ENOINFO;
if (gdbarch_debug >= 1)
- fprintf_unfiltered (gdb_stdlog, "%s: %lx -> "
+ fprintf_unfiltered (gdb_stdlog, "ia64_find_proc_info_x: %lx -> "
"(name=`%s',segbase=%lx,start=%lx,end=%lx,gp=%lx,"
- "length=%lu,data=%p)\n", __FUNCTION__,
+ "length=%lu,data=%p)\n",
ip, (char *)di.u.ti.name_ptr,
di.u.ti.segbase, di.start_ip, di.end_ip,
di.gp, di.u.ti.table_len, di.u.ti.table_data);
@@ -2494,9 +2494,9 @@ ia64_find_proc_info_x (unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
return ret;
if (gdbarch_debug >= 1)
- fprintf_unfiltered (gdb_stdlog, "%s: %lx -> "
+ fprintf_unfiltered (gdb_stdlog, "ia64_find_proc_info_x: %lx -> "
"(name=`%s',segbase=%lx,start=%lx,end=%lx,gp=%lx,"
- "length=%lu,data=%lx)\n", __FUNCTION__,
+ "length=%lu,data=%lx)\n",
ip, (char *)di.u.rti.name_ptr,
di.u.rti.segbase, di.start_ip, di.end_ip,
di.gp, di.u.rti.table_len, di.u.rti.table_data);
@@ -3356,12 +3356,14 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
0, "builtin_type_ia64_ext", NULL);
TYPE_FLOATFORMAT (builtin_type_ia64_ext) = &floatformat_ia64_ext;
- /* According to the ia64 specs, instructions that store long double floats
- in memory use a long-double format different than that used in the floating
- registers. The memory format matches the x86 extended float format which is
- 80 bits. An OS may choose to use this format (e.g. Linux) or choose to use
- a different format for storing long doubles (e.g. HPUX). In the latter case,
- the setting of the format may be moved/overridden in an OS-specific tdep file. */
+ /* According to the ia64 specs, instructions that store long double
+ floats in memory use a long-double format different than that
+ used in the floating registers. The memory format matches the
+ x86 extended float format which is 80 bits. An OS may choose to
+ use this format (e.g. GNU/Linux) or choose to use a different
+ format for storing long doubles (e.g. HPUX). In the latter case,
+ the setting of the format may be moved/overridden in an
+ OS-specific tdep file. */
set_gdbarch_long_double_format (gdbarch, &floatformat_i387_ext);
set_gdbarch_short_bit (gdbarch, 16);
@@ -3423,8 +3425,6 @@ ia64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
/* Settings that should be unnecessary. */
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_frame_args_skip (gdbarch, 0);
set_gdbarch_remote_translate_xfer_address (
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 2c8631eb3ba..ebf7f39bc9f 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -1,6 +1,6 @@
/* Memory-access and commands for "inferior" process, for GDB.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -661,13 +661,6 @@ which has no line number information.\n", name);
if (!stop_step)
break;
-
- /* FIXME: On nexti, this may have already been done (when we hit the
- step resume break, I think). Probably this should be moved to
- wait_for_inferior (near the top). */
-#if defined (SHIFT_INST_REGS)
- SHIFT_INST_REGS ();
-#endif
}
if (!single_inst || skip_subroutines)
@@ -702,15 +695,7 @@ step_1_continuation (struct continuation_arg *arg)
count = arg->next->next->data.integer;
if (stop_step)
- {
- /* FIXME: On nexti, this may have already been done (when we hit the
- step resume break, I think). Probably this should be moved to
- wait_for_inferior (near the top). */
-#if defined (SHIFT_INST_REGS)
- SHIFT_INST_REGS ();
-#endif
- step_once (skip_subroutines, single_inst, count - 1);
- }
+ step_once (skip_subroutines, single_inst, count - 1);
else
if (!single_inst || skip_subroutines)
do_exec_cleanups (ALL_CLEANUPS);
@@ -1062,23 +1047,19 @@ advance_command (char *arg, int from_tty)
}
-/* Print the result of a function at the end of a 'finish' command. */
+/* Print the result of a function at the end of a 'finish' command. */
+
static void
-print_return_value (int structure_return, struct type *value_type)
+print_return_value (int struct_return, struct type *value_type)
{
+ struct cleanup *old_chain;
+ struct ui_stream *stb;
struct value *value;
- static struct ui_stream *stb = NULL;
- if (!structure_return)
+ if (!struct_return)
{
+ /* The return value can be found in the inferior's registers. */
value = register_value_being_returned (value_type, stop_registers);
- stb = ui_out_stream_new (uiout);
- ui_out_text (uiout, "Value returned is ");
- ui_out_field_fmt (uiout, "gdb-result-var", "$%d", record_latest_value (value));
- ui_out_text (uiout, " = ");
- value_print (value, stb->stream, 0, Val_no_prettyprint);
- ui_out_field_stream (uiout, "return-value", stb);
- ui_out_text (uiout, "\n");
}
/* FIXME: 2003-09-27: When returning from a nested inferior function
call, it's possible (with no help from the architecture vector)
@@ -1092,7 +1073,8 @@ print_return_value (int structure_return, struct type *value_type)
initiate the call, as opposed to the call_function_by_hand
case. */
{
- gdb_assert (gdbarch_return_value (current_gdbarch, value_type, NULL, NULL, NULL)
+ gdb_assert (gdbarch_return_value (current_gdbarch, value_type,
+ NULL, NULL, NULL)
== RETURN_VALUE_STRUCT_CONVENTION);
ui_out_text (uiout, "Value returned has type: ");
ui_out_field_string (uiout, "return-type", TYPE_NAME (value_type));
@@ -1109,14 +1091,6 @@ print_return_value (int structure_return, struct type *value_type)
error ("Function return value unknown.");
value = value_at (value_type, addr, NULL);
}
- else if (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P ())
- {
- char *buf = deprecated_grub_regcache_for_registers (stop_registers);
- CORE_ADDR addr = DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS (buf);
- if (!addr)
- error ("Function return value unknown.");
- value = value_at (value_type, addr, NULL);
- }
else
{
/* It is "struct return" yet the value is being extracted,
@@ -1130,25 +1104,31 @@ print_return_value (int structure_return, struct type *value_type)
EXTRACT_RETURN_VALUE (value_type, stop_registers,
VALUE_CONTENTS_RAW (value));
}
- stb = ui_out_stream_new (uiout);
- ui_out_text (uiout, "Value returned is ");
- ui_out_field_fmt (uiout, "gdb-result-var", "$%d", record_latest_value (value));
- ui_out_text (uiout, " = ");
- value_print (value, stb->stream, 0, Val_no_prettyprint);
- ui_out_field_stream (uiout, "return-value", stb);
- ui_out_text (uiout, "\n");
}
+
+ /* Print it. */
+ stb = ui_out_stream_new (uiout);
+ old_chain = make_cleanup_ui_out_stream_delete (stb);
+ ui_out_text (uiout, "Value returned is ");
+ ui_out_field_fmt (uiout, "gdb-result-var", "$%d",
+ record_latest_value (value));
+ ui_out_text (uiout, " = ");
+ value_print (value, stb->stream, 0, Val_no_prettyprint);
+ ui_out_field_stream (uiout, "return-value", stb);
+ ui_out_text (uiout, "\n");
+ do_cleanups (old_chain);
}
/* Stuff that needs to be done by the finish command after the target
- has stopped. In asynchronous mode, we wait for the target to stop in
- the call to poll or select in the event loop, so it is impossible to
- do all the stuff as part of the finish_command function itself. The
- only chance we have to complete this command is in
- fetch_inferior_event, which is called by the event loop as soon as it
- detects that the target has stopped. This function is called via the
- cmd_continuation pointer. */
-void
+ has stopped. In asynchronous mode, we wait for the target to stop
+ in the call to poll or select in the event loop, so it is
+ impossible to do all the stuff as part of the finish_command
+ function itself. The only chance we have to complete this command
+ is in fetch_inferior_event, which is called by the event loop as
+ soon as it detects that the target has stopped. This function is
+ called via the cmd_continuation pointer. */
+
+static void
finish_command_continuation (struct continuation_arg *arg)
{
struct symbol *function;
@@ -1156,15 +1136,15 @@ finish_command_continuation (struct continuation_arg *arg)
struct cleanup *cleanups;
breakpoint = (struct breakpoint *) arg->data.pointer;
- function = (struct symbol *) arg->next->data.pointer;
- cleanups = (struct cleanup *) arg->next->next->data.pointer;
+ function = (struct symbol *) arg->next->data.pointer;
+ cleanups = (struct cleanup *) arg->next->next->data.pointer;
if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL
- && function != 0)
+ && function != NULL)
{
struct type *value_type;
- CORE_ADDR funcaddr;
int struct_return;
+ int gcc_compiled;
value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (function));
if (!value_type)
@@ -1177,18 +1157,18 @@ finish_command_continuation (struct continuation_arg *arg)
return;
}
- funcaddr = BLOCK_START (SYMBOL_BLOCK_VALUE (function));
-
- struct_return = using_struct_return (check_typedef (value_type),
- BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function)));
+ CHECK_TYPEDEF (value_type);
+ gcc_compiled = BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function));
+ struct_return = using_struct_return (value_type, gcc_compiled);
print_return_value (struct_return, value_type);
}
+
do_exec_cleanups (cleanups);
}
-/* "finish": Set a temporary breakpoint at the place
- the selected frame will return to, then continue. */
+/* "finish": Set a temporary breakpoint at the place the selected
+ frame will return to, then continue. */
static void
finish_command (char *arg, int from_tty)
@@ -1202,20 +1182,20 @@ finish_command (char *arg, int from_tty)
int async_exec = 0;
- /* Find out whether we must run in the background. */
+ /* Find out whether we must run in the background. */
if (arg != NULL)
async_exec = strip_bg_char (&arg);
/* If we must run in the background, but the target can't do it,
- error out. */
+ error out. */
if (event_loop_p && async_exec && !target_can_async_p ())
error ("Asynchronous execution not supported on this target.");
/* If we are not asked to run in the bg, then prepare to run in the
- foreground, synchronously. */
+ foreground, synchronously. */
if (event_loop_p && !async_exec && target_can_async_p ())
{
- /* Simulate synchronous execution */
+ /* Simulate synchronous execution. */
async_disable_stdin ();
}
@@ -1246,8 +1226,8 @@ finish_command (char *arg, int from_tty)
function = find_pc_function (get_frame_pc (deprecated_selected_frame));
- /* Print info on the selected frame, including level number
- but not source. */
+ /* Print info on the selected frame, including level number but not
+ source. */
if (from_tty)
{
printf_filtered ("Run till exit from ");
@@ -1258,7 +1238,7 @@ finish_command (char *arg, int from_tty)
/* If running asynchronously and the target support asynchronous
execution, set things up for the rest of the finish command to be
completed later on, when gdb has detected that the target has
- stopped, in fetch_inferior_event. */
+ stopped, in fetch_inferior_event. */
if (event_loop_p && target_can_async_p ())
{
arg1 =
@@ -1276,44 +1256,43 @@ finish_command (char *arg, int from_tty)
add_continuation (finish_command_continuation, arg1);
}
- proceed_to_finish = 1; /* We want stop_registers, please... */
+ proceed_to_finish = 1; /* We want stop_registers, please... */
proceed ((CORE_ADDR) -1, TARGET_SIGNAL_DEFAULT, 0);
/* Do this only if not running asynchronously or if the target
- cannot do async execution. Otherwise, complete this command when
- the target actually stops, in fetch_inferior_event. */
+ cannot do async execution. Otherwise, complete this command when
+ the target actually stops, in fetch_inferior_event. */
if (!event_loop_p || !target_can_async_p ())
{
-
- /* Did we stop at our breakpoint? */
+ /* Did we stop at our breakpoint? */
if (bpstat_find_breakpoint (stop_bpstat, breakpoint) != NULL
- && function != 0)
+ && function != NULL)
{
struct type *value_type;
- CORE_ADDR funcaddr;
int struct_return;
+ int gcc_compiled;
value_type = TYPE_TARGET_TYPE (SYMBOL_TYPE (function));
if (!value_type)
internal_error (__FILE__, __LINE__,
"finish_command: function has no target type");
- /* FIXME: Shouldn't we do the cleanups before returning? */
+ /* FIXME: Shouldn't we do the cleanups before returning? */
if (TYPE_CODE (value_type) == TYPE_CODE_VOID)
return;
- funcaddr = BLOCK_START (SYMBOL_BLOCK_VALUE (function));
-
- struct_return =
- using_struct_return (check_typedef (value_type),
- BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function)));
+ CHECK_TYPEDEF (value_type);
+ gcc_compiled = BLOCK_GCC_COMPILED (SYMBOL_BLOCK_VALUE (function));
+ struct_return = using_struct_return (value_type, gcc_compiled);
print_return_value (struct_return, value_type);
}
+
do_cleanups (old_chain);
}
}
+
static void
program_info (char *args, int from_tty)
{
diff --git a/gdb/infrun.c b/gdb/infrun.c
index b16cc62091f..0724546ccfe 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -2,8 +2,8 @@
process.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
- Foundation, Inc.
+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
@@ -61,9 +61,6 @@ static int hook_stop_stub (void *);
static void delete_breakpoint_current_contents (void *);
-static void set_follow_fork_mode_command (char *arg, int from_tty,
- struct cmd_list_element *c);
-
static int restore_selected_frame (void *);
static void build_infrun (void);
@@ -340,12 +337,10 @@ static struct
}
pending_follow;
-static const char follow_fork_mode_ask[] = "ask";
static const char follow_fork_mode_child[] = "child";
static const char follow_fork_mode_parent[] = "parent";
static const char *follow_fork_mode_kind_names[] = {
- follow_fork_mode_ask,
follow_fork_mode_child,
follow_fork_mode_parent,
NULL
@@ -357,16 +352,7 @@ static const char *follow_fork_mode_string = follow_fork_mode_parent;
static int
follow_fork (void)
{
- const char *follow_mode = follow_fork_mode_string;
- int follow_child = (follow_mode == follow_fork_mode_child);
-
- /* Or, did the user not know, and want us to ask? */
- if (follow_fork_mode_string == follow_fork_mode_ask)
- {
- internal_error (__FILE__, __LINE__,
- "follow_inferior_fork: \"ask\" mode not implemented");
- /* follow_mode = follow_fork_mode_...; */
- }
+ int follow_child = (follow_fork_mode_string == follow_fork_mode_child);
return target_follow_fork (follow_child);
}
@@ -987,6 +973,7 @@ struct execution_control_state
void init_execution_control_state (struct execution_control_state *ecs);
+static void handle_step_into_function (struct execution_control_state *ecs);
void handle_inferior_event (struct execution_control_state *ecs);
static void check_sigtramp2 (struct execution_control_state *ecs);
@@ -1236,6 +1223,95 @@ pc_in_sigtramp (CORE_ADDR pc)
return PC_IN_SIGTRAMP (pc, name);
}
+/* Handle the inferior event in the cases when we just stepped
+ into a function. */
+
+static void
+handle_step_into_function (struct execution_control_state *ecs)
+{
+ CORE_ADDR real_stop_pc;
+
+ if ((step_over_calls == STEP_OVER_NONE)
+ || ((step_range_end == 1)
+ && in_prologue (prev_pc, ecs->stop_func_start)))
+ {
+ /* I presume that step_over_calls is only 0 when we're
+ supposed to be stepping at the assembly language level
+ ("stepi"). Just stop. */
+ /* Also, maybe we just did a "nexti" inside a prolog,
+ so we thought it was a subroutine call but it was not.
+ Stop as well. FENN */
+ stop_step = 1;
+ print_stop_reason (END_STEPPING_RANGE, 0);
+ stop_stepping (ecs);
+ return;
+ }
+
+ if (step_over_calls == STEP_OVER_ALL || IGNORE_HELPER_CALL (stop_pc))
+ {
+ /* We're doing a "next". */
+
+ if (pc_in_sigtramp (stop_pc)
+ && frame_id_inner (step_frame_id,
+ frame_id_build (read_sp (), 0)))
+ /* We stepped out of a signal handler, and into its
+ calling trampoline. This is misdetected as a
+ subroutine call, but stepping over the signal
+ trampoline isn't such a bad idea. In order to do that,
+ we have to ignore the value in step_frame_id, since
+ that doesn't represent the frame that'll reach when we
+ return from the signal trampoline. Otherwise we'll
+ probably continue to the end of the program. */
+ step_frame_id = null_frame_id;
+
+ step_over_function (ecs);
+ keep_going (ecs);
+ return;
+ }
+
+ /* If we are in a function call trampoline (a stub between
+ the calling routine and the real function), locate the real
+ function. That's what tells us (a) whether we want to step
+ into it at all, and (b) what prologue we want to run to
+ the end of, if we do step into it. */
+ real_stop_pc = skip_language_trampoline (stop_pc);
+ if (real_stop_pc == 0)
+ real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
+ if (real_stop_pc != 0)
+ ecs->stop_func_start = real_stop_pc;
+
+ /* If we have line number information for the function we
+ are thinking of stepping into, step into it.
+
+ If there are several symtabs at that PC (e.g. with include
+ files), just want to know whether *any* of them have line
+ numbers. find_pc_line handles this. */
+ {
+ struct symtab_and_line tmp_sal;
+
+ tmp_sal = find_pc_line (ecs->stop_func_start, 0);
+ if (tmp_sal.line != 0)
+ {
+ step_into_function (ecs);
+ return;
+ }
+ }
+
+ /* If we have no line number and the step-stop-if-no-debug
+ is set, we stop the step so that the user has a chance to
+ switch in assembly mode. */
+ if (step_over_calls == STEP_OVER_UNDEBUGGABLE && step_stop_if_no_debug)
+ {
+ stop_step = 1;
+ print_stop_reason (END_STEPPING_RANGE, 0);
+ stop_stepping (ecs);
+ return;
+ }
+
+ step_over_function (ecs);
+ keep_going (ecs);
+ return;
+}
/* Given an execution control state that has been freshly filled in
by an event from the inferior, figure out what it means and take
@@ -1244,7 +1320,6 @@ pc_in_sigtramp (CORE_ADDR pc)
void
handle_inferior_event (struct execution_control_state *ecs)
{
- CORE_ADDR real_stop_pc;
/* NOTE: cagney/2003-03-28: If you're looking at this code and
thinking that the variable stepped_after_stopped_by_watchpoint
isn't used, then you're wrong! The macro STOPPED_BY_WATCHPOINT,
@@ -2226,7 +2301,7 @@ process_event_stop_test:
gdb of events. This allows the user to get control
and place breakpoints in initializer routines for
dynamically loaded objects (among other things). */
- if (stop_on_solib_events)
+ if (stop_on_solib_events || stop_stack_dummy)
{
stop_stepping (ecs);
return;
@@ -2479,88 +2554,8 @@ process_event_stop_test:
|| ecs->stop_func_name == 0)
{
/* It's a subroutine call. */
-
- if ((step_over_calls == STEP_OVER_NONE)
- || ((step_range_end == 1)
- && in_prologue (prev_pc, ecs->stop_func_start)))
- {
- /* I presume that step_over_calls is only 0 when we're
- supposed to be stepping at the assembly language level
- ("stepi"). Just stop. */
- /* Also, maybe we just did a "nexti" inside a prolog,
- so we thought it was a subroutine call but it was not.
- Stop as well. FENN */
- stop_step = 1;
- print_stop_reason (END_STEPPING_RANGE, 0);
- stop_stepping (ecs);
- return;
- }
-
- if (step_over_calls == STEP_OVER_ALL || IGNORE_HELPER_CALL (stop_pc))
- {
- /* We're doing a "next". */
-
- if (pc_in_sigtramp (stop_pc)
- && frame_id_inner (step_frame_id,
- frame_id_build (read_sp (), 0)))
- /* We stepped out of a signal handler, and into its
- calling trampoline. This is misdetected as a
- subroutine call, but stepping over the signal
- trampoline isn't such a bad idea. In order to do that,
- we have to ignore the value in step_frame_id, since
- that doesn't represent the frame that'll reach when we
- return from the signal trampoline. Otherwise we'll
- probably continue to the end of the program. */
- step_frame_id = null_frame_id;
-
- step_over_function (ecs);
- keep_going (ecs);
- return;
- }
-
- /* If we are in a function call trampoline (a stub between
- the calling routine and the real function), locate the real
- function. That's what tells us (a) whether we want to step
- into it at all, and (b) what prologue we want to run to
- the end of, if we do step into it. */
- real_stop_pc = skip_language_trampoline (stop_pc);
- if (real_stop_pc == 0)
- real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
- if (real_stop_pc != 0)
- ecs->stop_func_start = real_stop_pc;
-
- /* If we have line number information for the function we
- are thinking of stepping into, step into it.
-
- If there are several symtabs at that PC (e.g. with include
- files), just want to know whether *any* of them have line
- numbers. find_pc_line handles this. */
- {
- struct symtab_and_line tmp_sal;
-
- tmp_sal = find_pc_line (ecs->stop_func_start, 0);
- if (tmp_sal.line != 0)
- {
- step_into_function (ecs);
- return;
- }
- }
-
- /* If we have no line number and the step-stop-if-no-debug
- is set, we stop the step so that the user has a chance to
- switch in assembly mode. */
- if (step_over_calls == STEP_OVER_UNDEBUGGABLE && step_stop_if_no_debug)
- {
- stop_step = 1;
- print_stop_reason (END_STEPPING_RANGE, 0);
- stop_stepping (ecs);
- return;
- }
-
- step_over_function (ecs);
- keep_going (ecs);
+ handle_step_into_function (ecs);
return;
-
}
/* We've wandered out of the step range. */
@@ -2582,7 +2577,7 @@ process_event_stop_test:
if (IN_SOLIB_RETURN_TRAMPOLINE (stop_pc, ecs->stop_func_name))
{
/* Determine where this trampoline returns. */
- real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
+ CORE_ADDR real_stop_pc = SKIP_TRAMPOLINE_CODE (stop_pc);
/* Only proceed through if we know where it's going. */
if (real_stop_pc)
@@ -2762,6 +2757,29 @@ step_into_function (struct execution_control_state *ecs)
&& ecs->sal.end < ecs->stop_func_end)
ecs->stop_func_start = ecs->sal.end;
+ /* Architectures which require breakpoint adjustment might not be able
+ to place a breakpoint at the computed address. If so, the test
+ ``ecs->stop_func_start == stop_pc'' will never succeed. Adjust
+ ecs->stop_func_start to an address at which a breakpoint may be
+ legitimately placed.
+
+ Note: kevinb/2004-01-19: On FR-V, if this adjustment is not
+ made, GDB will enter an infinite loop when stepping through
+ optimized code consisting of VLIW instructions which contain
+ subinstructions corresponding to different source lines. On
+ FR-V, it's not permitted to place a breakpoint on any but the
+ first subinstruction of a VLIW instruction. When a breakpoint is
+ set, GDB will adjust the breakpoint address to the beginning of
+ the VLIW instruction. Thus, we need to make the corresponding
+ adjustment here when computing the stop address. */
+
+ if (gdbarch_adjust_breakpoint_address_p (current_gdbarch))
+ {
+ ecs->stop_func_start
+ = gdbarch_adjust_breakpoint_address (current_gdbarch,
+ ecs->stop_func_start);
+ }
+
if (ecs->stop_func_start == stop_pc)
{
/* We are already there: stop now. */
@@ -2945,17 +2963,6 @@ keep_going (struct execution_control_state *ecs)
if (stop_signal == TARGET_SIGNAL_TRAP && !signal_program[stop_signal])
stop_signal = TARGET_SIGNAL_0;
-#ifdef SHIFT_INST_REGS
- /* I'm not sure when this following segment applies. I do know,
- now, that we shouldn't rewrite the regs when we were stopped
- by a random signal from the inferior process. */
- /* FIXME: Shouldn't this be based on the valid bit of the SXIP?
- (this is only used on the 88k). */
-
- if (!bpstat_explains_signal (stop_bpstat)
- && (stop_signal != TARGET_SIGNAL_CHLD) && !stopped_by_random_signal)
- SHIFT_INST_REGS ();
-#endif /* SHIFT_INST_REGS */
resume (currently_stepping (ecs), stop_signal);
}
@@ -4066,31 +4073,12 @@ to the user would be loading/unloading of a new library.\n", &setlist), &showlis
c = add_set_enum_cmd ("follow-fork-mode",
class_run,
follow_fork_mode_kind_names, &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
- the "both" option. */
-/* "Set debugger response to a program call of fork \
- or vfork.\n\
- A fork or vfork creates a new process. follow-fork-mode can be:\n\
- parent - the original process is debugged after a fork\n\
- child - the new process is debugged after a fork\n\
- both - both the parent and child are debugged after a fork\n\
- ask - the debugger will ask for one of the above choices\n\
- For \"both\", another copy of the debugger will be started to follow\n\
- the new child process. The original debugger will continue to follow\n\
- the original parent process. To distinguish their prompts, the\n\
- debugger copy's prompt will be changed.\n\
- For \"parent\" or \"child\", the unfollowed process will run free.\n\
- By default, the debugger will follow the parent process.",
- */
"Set debugger response to a program call of fork \
or vfork.\n\
A fork or vfork creates a new process. follow-fork-mode can be:\n\
parent - the original process is debugged after a fork\n\
child - the new process is debugged after a fork\n\
- ask - the debugger will ask for one of the above choices\n\
-For \"parent\" or \"child\", the unfollowed process will run free.\n\
+The unfollowed process will continue to run.\n\
By default, the debugger will follow the parent process.", &setlist);
add_show_from_set (c, &showlist);
diff --git a/gdb/irix5-nat.c b/gdb/irix5-nat.c
index a4473899cb5..93727a65289 100644
--- a/gdb/irix5-nat.c
+++ b/gdb/irix5-nat.c
@@ -36,6 +36,7 @@
/* Prototypes for supply_gregset etc. */
#include "gregset.h"
+#include "mips-tdep.h"
static void fetch_core_registers (char *, unsigned int, int, CORE_ADDR);
diff --git a/gdb/jv-lang.c b/gdb/jv-lang.c
index 80a6487731d..a686b7aca67 100644
--- a/gdb/jv-lang.c
+++ b/gdb/jv-lang.c
@@ -1,5 +1,5 @@
/* Java language support routines for GDB, the GNU debugger.
- Copyright 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
+ Copyright 1997, 1998, 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -59,7 +59,6 @@ static void java_demangled_signature_copy (char *, const char *);
static struct symtab *get_java_class_symtab (void);
static char *get_java_utf8_name (struct obstack *obstack, struct value *name);
static int java_class_is_primitive (struct value *clas);
-static struct type *java_lookup_type (char *signature);
static struct value *java_value_string (char *ptr, int len);
static void java_emit_char (int c, struct ui_file * stream, int quoter);
@@ -774,19 +773,6 @@ java_demangle_type_signature (const char *signature)
return result;
}
-struct type *
-java_lookup_type (char *signature)
-{
- switch (signature[0])
- {
- case 'L':
- case '[':
- error ("java_lookup_type not fully implemented");
- default:
- return java_primitive_type (signature[0]);
- }
-}
-
/* Return the type of TYPE followed by DIMS pairs of [ ].
If DIMS == 0, TYPE is returned. */
@@ -1070,6 +1056,7 @@ const struct language_defn java_language_defn =
NULL, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
java_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
diff --git a/gdb/jv-valprint.c b/gdb/jv-valprint.c
index f7869cb4ef3..d38e2931ae2 100644
--- a/gdb/jv-valprint.c
+++ b/gdb/jv-valprint.c
@@ -1,5 +1,7 @@
/* Support for printing Java values for GDB, the GNU debugger.
- Copyright 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
@@ -298,9 +300,6 @@ java_print_value_fields (struct type *type, char *valaddr, CORE_ADDR address,
java_print_value_fields (baseclass, base_valaddr, address + boffset,
stream, format, recurse + 1, pretty);
fputs_filtered (", ", stream);
-
- flush_it:
- ;
}
}
diff --git a/gdb/language.c b/gdb/language.c
index c1dd2ae90db..5670a5d34e5 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -1,7 +1,7 @@
/* Multiple source language support for GDB.
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by the Department of Computer Science at the State University
of New York at Buffalo.
@@ -1290,6 +1290,7 @@ const struct language_defn unknown_language_defn =
unk_lang_trampoline, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
unk_lang_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
@@ -1325,6 +1326,7 @@ const struct language_defn auto_language_defn =
unk_lang_trampoline, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
unk_lang_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
@@ -1359,6 +1361,7 @@ const struct language_defn local_language_defn =
unk_lang_trampoline, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
unk_lang_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
diff --git a/gdb/language.h b/gdb/language.h
index b8c70c2be13..0e182158685 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -1,7 +1,7 @@
/* Source-language-related definitions for GDB.
- Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003 Free
- Software Foundation, Inc.
+ Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003,
+ 2004 Free Software Foundation, Inc.
Contributed by the Department of Computer Science at the State University
of New York at Buffalo.
@@ -233,6 +233,9 @@ struct language_defn
const domain_enum,
struct symtab **);
+ /* Find the definition of the type with the given name. */
+ struct type *(*la_lookup_transparent_type) (const char *);
+
/* Return demangled language symbol, or NULL. */
char *(*la_demangle) (const char *mangled, int options);
diff --git a/gdb/libunwind-frame.h b/gdb/libunwind-frame.h
index bacdf87a49a..e47a792cc98 100644
--- a/gdb/libunwind-frame.h
+++ b/gdb/libunwind-frame.h
@@ -23,13 +23,14 @@
#ifdef HAVE_LIBUNWIND_H
+struct frame_info;
+struct frame_id;
+
#ifndef LIBUNWIND_FRAME_H
#define LIBUNWIND_FRAME_H 1
#include "libunwind.h"
-struct frame_info;
-
struct libunwind_descr
{
int (*gdb2uw) (int);
diff --git a/gdb/linespec.c b/gdb/linespec.c
index 0fb4d2eef8f..b5040ddadb2 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -125,7 +125,8 @@ static NORETURN void cplusplus_error (const char *name,
static struct symtab *symtab_from_filename (char **argptr,
char *filename_end,
- int is_quote_enclosed);
+ int is_quote_enclosed,
+ int *not_found_ptr);
static int is_all_digits (char *arg);
@@ -150,7 +151,8 @@ static struct symtabs_and_lines decode_variable (char **argptr,
int is_quoted,
int is_objc_method,
char *paren_pointer,
- struct symtab *file_symtab);
+ struct symtab *file_symtab,
+ int *not_found_ptr);
static void build_canonical_line_spec (struct symtab_and_line *sal,
char *symname,
@@ -205,7 +207,12 @@ symtabs_and_lines minsym_found (int funfirstline,
Note that it is possible to return zero for the symtab
if no file is validly specified. Callers must check that.
- Also, the line number returned may be invalid. */
+ Also, the line number returned may be invalid.
+
+ If NOT_FOUND_PTR is not null, store a boolean true/false value at the location, based
+ on whether or not failure occurs due to an unknown function or file. In the case
+ where failure does occur due to an unknown function or file, do not issue an error
+ message. */
/* We allow single quotes in various places. This is a hideous
kludge, which exists because the completer can't yet deal with the
@@ -224,7 +231,7 @@ symtabs_and_lines minsym_found (int funfirstline,
struct symtabs_and_lines
decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
- int default_line, char ***canonical)
+ int default_line, char ***canonical, int *not_found_ptr)
{
/* This is NULL if there are no parens in *ARGPTR, or a pointer to
the closing parenthesis if there are parens. */
@@ -239,6 +246,9 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
to remember what it pointed to initially. */
char *saved_arg = *argptr;
+ if (not_found_ptr)
+ *not_found_ptr = 0;
+
/* Defaults have defaults. */
initialize_defaults (&default_symtab, &default_line);
@@ -302,7 +312,8 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
/* No, the first part is a filename; set file_symtab
accordingly. Also, move argptr past the filename. */
- file_symtab = symtab_from_filename (argptr, p, is_quote_enclosed);
+ file_symtab = symtab_from_filename (argptr, p, is_quote_enclosed,
+ not_found_ptr);
}
}
@@ -326,7 +337,8 @@ decode_line_1 (char **argptr, int funfirstline, struct symtab *default_symtab,
file's per-file block to start with. */
return decode_variable (argptr, funfirstline, canonical, is_quoted,
- is_objc_method, paren_pointer, file_symtab);
+ is_objc_method, paren_pointer, file_symtab,
+ not_found_ptr);
}
/* Now, the helper functions. */
@@ -1466,11 +1478,13 @@ cplusplus_error (const char *name, const char *fmt, ...)
/* Return the symtab associated to the filename given by the substring
- of *ARGPTR ending at FILE_NAME_END. */
+ of *ARGPTR ending at FILE_NAME_END. If NOT_FOUND_PTR is not null
+ and the source file is not found, store boolean true at the
+ location pointed to and do not issue an error message. */
static struct symtab *
symtab_from_filename (char **argptr, char *filename_end,
- int is_quote_enclosed)
+ int is_quote_enclosed, int *not_found_ptr)
{
char *saved_filename_end;
char *copy;
@@ -1496,6 +1510,18 @@ symtab_from_filename (char **argptr, char *filename_end,
{
if (!have_full_symbols () && !have_partial_symbols ())
error ("No symbol table is loaded. Use the \"file\" command.");
+ if (not_found_ptr)
+ {
+ *not_found_ptr = 1;
+ /* The caller has indicated that it wishes quiet notification of any
+ error where the function or file is not found. A call to
+ error_silent causes an error to occur, but it does not issue
+ the supplied message. The message can be manually output by
+ the caller, if desired. This is used, for example, when
+ attempting to set breakpoints for functions in shared libraries
+ that have not yet been loaded. */
+ error_silent ("No source file named %s.", copy);
+ }
error ("No source file named %s.", copy);
}
@@ -1693,12 +1719,14 @@ decode_dollar (char **argptr, int funfirstline, struct symtab *default_symtab,
/* Decode a linespec that's a variable. If FILE_SYMTAB is non-NULL,
- look in that file's static variables first. */
+ look in that file's static variables first. If NOT_FOUND_PTR is not NULL and
+ the function cannot be found, store boolean true in the location pointed to
+ and do not issue an error message. */
static struct symtabs_and_lines
decode_variable (char **argptr, int funfirstline, char ***canonical,
int is_quoted, int is_objc_method, char *paren_pointer,
- struct symtab *file_symtab)
+ struct symtab *file_symtab, int *not_found_ptr)
{
char *p;
char *copy;
@@ -1770,6 +1798,19 @@ decode_variable (char **argptr, int funfirstline, char ***canonical,
!have_partial_symbols () && !have_minimal_symbols ())
error ("No symbol table is loaded. Use the \"file\" command.");
+ if (not_found_ptr)
+ {
+ *not_found_ptr = 1;
+ /* The caller has indicated that it wishes quiet notification of any
+ error where the function or file is not found. A call to
+ error_silent causes an error to occur, but it does not issue
+ the supplied message. The message can be manually output by
+ the caller, if desired. This is used, for example, when
+ attempting to set breakpoints for functions in shared libraries
+ that have not yet been loaded. */
+ error_silent ("Function \"%s\" not defined.", copy);
+ }
+
error ("Function \"%s\" not defined.", copy);
}
diff --git a/gdb/linespec.h b/gdb/linespec.h
index 3ede4bd96ac..38b0941dcb3 100644
--- a/gdb/linespec.h
+++ b/gdb/linespec.h
@@ -24,6 +24,6 @@ struct symtab;
extern struct symtabs_and_lines
decode_line_1 (char **argptr, int funfirstline,
struct symtab *default_symtab, int default_line,
- char ***canonical);
+ char ***canonical, int *not_found_ptr);
#endif /* defined (LINESPEC_H) */
diff --git a/gdb/lynx-nat.c b/gdb/lynx-nat.c
index b0e2402d79c..7bfd40ee56e 100644
--- a/gdb/lynx-nat.c
+++ b/gdb/lynx-nat.c
@@ -256,214 +256,6 @@ static int regmap[] =
#endif /* rs6000 */
-#ifdef SPARC
-
-/* This routine handles some oddball cases for Sparc registers and LynxOS.
- In partucular, it causes refs to G0, g5->7, and all fp regs to return zero.
- It also handles knows where to find the I & L regs on the stack. */
-
-void
-fetch_inferior_registers (int regno)
-{
- int whatregs = 0;
-
-#define WHATREGS_FLOAT 1
-#define WHATREGS_GEN 2
-#define WHATREGS_STACK 4
-
- if (regno == -1)
- whatregs = WHATREGS_FLOAT | WHATREGS_GEN | WHATREGS_STACK;
- else if (regno >= L0_REGNUM && regno <= I7_REGNUM)
- whatregs = WHATREGS_STACK;
- else if (regno >= FP0_REGNUM && regno < FP0_REGNUM + 32)
- whatregs = WHATREGS_FLOAT;
- else
- whatregs = WHATREGS_GEN;
-
- if (whatregs & WHATREGS_GEN)
- {
- struct econtext ec; /* general regs */
- char buf[MAX_REGISTER_SIZE];
- int retval;
- int i;
-
- errno = 0;
- retval = ptrace (PTRACE_GETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) & ec, 0);
- if (errno)
- perror_with_name ("ptrace(PTRACE_GETREGS)");
-
- memset (buf, 0, DEPRECATED_REGISTER_RAW_SIZE (G0_REGNUM));
- supply_register (G0_REGNUM, buf);
- supply_register (TBR_REGNUM, (char *) &ec.tbr);
-
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (G1_REGNUM)], &ec.g1,
- 4 * DEPRECATED_REGISTER_RAW_SIZE (G1_REGNUM));
- for (i = G1_REGNUM; i <= G1_REGNUM + 3; i++)
- deprecated_register_valid[i] = 1;
-
- supply_register (PS_REGNUM, (char *) &ec.psr);
- supply_register (Y_REGNUM, (char *) &ec.y);
- supply_register (PC_REGNUM, (char *) &ec.pc);
- supply_register (DEPRECATED_NPC_REGNUM, (char *) &ec.npc);
- supply_register (WIM_REGNUM, (char *) &ec.wim);
-
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (O0_REGNUM)], ec.o,
- 8 * DEPRECATED_REGISTER_RAW_SIZE (O0_REGNUM));
- for (i = O0_REGNUM; i <= O0_REGNUM + 7; i++)
- deprecated_register_valid[i] = 1;
- }
-
- if (whatregs & WHATREGS_STACK)
- {
- CORE_ADDR sp;
- int i;
-
- sp = read_register (SP_REGNUM);
-
- target_read_memory (sp + FRAME_SAVED_I0,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (I0_REGNUM)],
- 8 * DEPRECATED_REGISTER_RAW_SIZE (I0_REGNUM));
- for (i = I0_REGNUM; i <= I7_REGNUM; i++)
- deprecated_register_valid[i] = 1;
-
- target_read_memory (sp + FRAME_SAVED_L0,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)],
- 8 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM));
- for (i = L0_REGNUM; i <= L0_REGNUM + 7; i++)
- deprecated_register_valid[i] = 1;
- }
-
- if (whatregs & WHATREGS_FLOAT)
- {
- struct fcontext fc; /* fp regs */
- int retval;
- int i;
-
- errno = 0;
- retval = ptrace (PTRACE_GETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) & fc, 0);
- if (errno)
- perror_with_name ("ptrace(PTRACE_GETFPREGS)");
-
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], fc.f.fregs,
- 32 * DEPRECATED_REGISTER_RAW_SIZE (FP0_REGNUM));
- for (i = FP0_REGNUM; i <= FP0_REGNUM + 31; i++)
- deprecated_register_valid[i] = 1;
-
- supply_register (FPS_REGNUM, (char *) &fc.fsr);
- }
-}
-
-/* This routine handles storing of the I & L regs for the Sparc. The trick
- here is that they actually live on the stack. The really tricky part is
- that when changing the stack pointer, the I & L regs must be written to
- where the new SP points, otherwise the regs will be incorrect when the
- process is started up again. We assume that the I & L regs are valid at
- this point. */
-
-void
-store_inferior_registers (int regno)
-{
- int whatregs = 0;
-
- if (regno == -1)
- whatregs = WHATREGS_FLOAT | WHATREGS_GEN | WHATREGS_STACK;
- else if (regno >= L0_REGNUM && regno <= I7_REGNUM)
- whatregs = WHATREGS_STACK;
- else if (regno >= FP0_REGNUM && regno < FP0_REGNUM + 32)
- whatregs = WHATREGS_FLOAT;
- else if (regno == SP_REGNUM)
- whatregs = WHATREGS_STACK | WHATREGS_GEN;
- else
- whatregs = WHATREGS_GEN;
-
- if (whatregs & WHATREGS_GEN)
- {
- struct econtext ec; /* general regs */
- int retval;
-
- ec.tbr = read_register (TBR_REGNUM);
- memcpy (&ec.g1, &deprecated_registers[DEPRECATED_REGISTER_BYTE (G1_REGNUM)],
- 4 * DEPRECATED_REGISTER_RAW_SIZE (G1_REGNUM));
-
- ec.psr = read_register (PS_REGNUM);
- ec.y = read_register (Y_REGNUM);
- ec.pc = read_register (PC_REGNUM);
- ec.npc = read_register (DEPRECATED_NPC_REGNUM);
- ec.wim = read_register (WIM_REGNUM);
-
- memcpy (ec.o, &deprecated_registers[DEPRECATED_REGISTER_BYTE (O0_REGNUM)],
- 8 * DEPRECATED_REGISTER_RAW_SIZE (O0_REGNUM));
-
- errno = 0;
- retval = ptrace (PTRACE_SETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) & ec, 0);
- if (errno)
- perror_with_name ("ptrace(PTRACE_SETREGS)");
- }
-
- if (whatregs & WHATREGS_STACK)
- {
- int regoffset;
- CORE_ADDR sp;
-
- sp = read_register (SP_REGNUM);
-
- if (regno == -1 || regno == SP_REGNUM)
- {
- if (!deprecated_register_valid[L0_REGNUM + 5])
- internal_error (__FILE__, __LINE__, "failed internal consistency check");
- target_write_memory (sp + FRAME_SAVED_I0,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (I0_REGNUM)],
- 8 * DEPRECATED_REGISTER_RAW_SIZE (I0_REGNUM));
-
- target_write_memory (sp + FRAME_SAVED_L0,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)],
- 8 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM));
- }
- else if (regno >= L0_REGNUM && regno <= I7_REGNUM)
- {
- if (!deprecated_register_valid[regno])
- internal_error (__FILE__, __LINE__, "failed internal consistency check");
- if (regno >= L0_REGNUM && regno <= L0_REGNUM + 7)
- regoffset = DEPRECATED_REGISTER_BYTE (regno) - DEPRECATED_REGISTER_BYTE (L0_REGNUM)
- + FRAME_SAVED_L0;
- else
- regoffset = DEPRECATED_REGISTER_BYTE (regno) - DEPRECATED_REGISTER_BYTE (I0_REGNUM)
- + FRAME_SAVED_I0;
- target_write_memory (sp + regoffset,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (regno)],
- DEPRECATED_REGISTER_RAW_SIZE (regno));
- }
- }
-
- if (whatregs & WHATREGS_FLOAT)
- {
- struct fcontext fc; /* fp regs */
- int retval;
-
-/* We read fcontext first so that we can get good values for fq_t... */
- errno = 0;
- retval = ptrace (PTRACE_GETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) & fc, 0);
- if (errno)
- perror_with_name ("ptrace(PTRACE_GETFPREGS)");
-
- memcpy (fc.f.fregs, &deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)],
- 32 * DEPRECATED_REGISTER_RAW_SIZE (FP0_REGNUM));
-
- fc.fsr = read_register (FPS_REGNUM);
-
- errno = 0;
- retval = ptrace (PTRACE_SETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) & fc, 0);
- if (errno)
- perror_with_name ("ptrace(PTRACE_SETFPREGS)");
- }
-}
-#endif /* SPARC */
-
#if defined (I386) || defined (M68K) || defined (rs6000)
/* Return the offset relative to the start of the per-thread data to the
diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c
index 7fe2e34e6d6..e5b6b500e7c 100644
--- a/gdb/m2-lang.c
+++ b/gdb/m2-lang.c
@@ -1,5 +1,5 @@
/* Modula 2 language support routines for GDB, the GNU debugger.
- Copyright 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2002
+ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -428,6 +428,7 @@ const struct language_defn m2_language_defn =
NULL, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"%loB", "", "o", "B"}, /* Octal format info */
diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c
index b2bc71f5b97..16ec1ffe240 100644
--- a/gdb/m32r-tdep.c
+++ b/gdb/m32r-tdep.c
@@ -945,8 +945,6 @@ m32r_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_skip_prologue (gdbarch, m32r_skip_prologue);
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_breakpoint_from_pc (gdbarch, m32r_breakpoint_from_pc);
set_gdbarch_memory_insert_breakpoint (gdbarch,
m32r_memory_insert_breakpoint);
diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c
index cc0ad71adbe..6aa29116c5a 100644
--- a/gdb/m68hc11-tdep.c
+++ b/gdb/m68hc11-tdep.c
@@ -1,5 +1,8 @@
/* Target-dependent code for Motorola 68HC11 & 68HC12
- Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
+
Contributed by Stephane Carrez, stcarrez@nerim.fr
This file is part of GDB.
@@ -1549,15 +1552,11 @@ m68hc11_gdbarch_init (struct gdbarch_info info,
set_gdbarch_return_value_on_stack (gdbarch, m68hc11_return_value_on_stack);
set_gdbarch_store_return_value (gdbarch, m68hc11_store_return_value);
- set_gdbarch_extract_struct_value_address (gdbarch, m68hc11_extract_struct_value_address);
-
set_gdbarch_store_return_value (gdbarch, m68hc11_store_return_value);
set_gdbarch_extract_struct_value_address (gdbarch, m68hc11_extract_struct_value_address);
set_gdbarch_use_struct_convention (gdbarch, m68hc11_use_struct_convention);
set_gdbarch_skip_prologue (gdbarch, m68hc11_skip_prologue);
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_breakpoint_from_pc (gdbarch, m68hc11_breakpoint_from_pc);
set_gdbarch_deprecated_stack_align (gdbarch, m68hc11_stack_align);
set_gdbarch_print_insn (gdbarch, gdb_print_insn_m68hc11);
diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c
index e5b41a9a32e..7938426d985 100644
--- a/gdb/m68k-tdep.c
+++ b/gdb/m68k-tdep.c
@@ -1,7 +1,7 @@
/* Target dependent code for the Motorola 68000 series.
- Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001,
- 2002, 2003
- Free Software Foundation, Inc.
+
+ Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000,
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -69,17 +69,6 @@
#endif
-/* gdbarch_breakpoint_from_pc is set to m68k_local_breakpoint_from_pc
- so m68k_remote_breakpoint_from_pc is currently not used. */
-
-static const unsigned char *
-m68k_remote_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
-{
- static unsigned char break_insn[] = {0x4e, (0x40 | REMOTE_BPT_VECTOR)};
- *lenptr = sizeof (break_insn);
- return break_insn;
-}
-
static const unsigned char *
m68k_local_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
{
@@ -144,20 +133,6 @@ m68k_register_name (int regnum)
else
return register_names[regnum];
}
-
-/* Index within `registers' of the first byte of the space for
- register regnum. */
-
-static int
-m68k_register_byte (int regnum)
-{
- if (regnum >= M68K_FPC_REGNUM)
- return (((regnum - M68K_FPC_REGNUM) * 4) + 168);
- else if (regnum >= FP0_REGNUM)
- return (((regnum - FP0_REGNUM) * 12) + 72);
- else
- return (regnum * 4);
-}
/* Extract from an array REGBUF containing the (raw) register state, a
function return value of TYPE, and copy that, in virtual format,
@@ -1103,8 +1078,6 @@ m68k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_long_double_format (gdbarch, &floatformat_m68881_ext);
set_gdbarch_long_double_bit (gdbarch, 96);
- set_gdbarch_function_start_offset (gdbarch, 0);
-
set_gdbarch_skip_prologue (gdbarch, m68k_skip_prologue);
#ifdef SYSCALL_TRAP
set_gdbarch_deprecated_saved_pc_after_call (gdbarch, m68k_saved_pc_after_call);
diff --git a/gdb/main.c b/gdb/main.c
index 2d552c09b12..303bf1c233b 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -264,8 +264,6 @@ captured_main (void *data)
{"dbx", no_argument, &dbx_commands, 1},
{"readnow", no_argument, &readnow_symbol_files, 1},
{"r", no_argument, &readnow_symbol_files, 1},
- {"mapped", no_argument, &mapped_symbol_files, 1},
- {"m", no_argument, &mapped_symbol_files, 1},
{"quiet", no_argument, &quiet, 1},
{"q", no_argument, &quiet, 1},
{"silent", no_argument, &quiet, 1},
diff --git a/gdb/maint.c b/gdb/maint.c
index f7bb1940cb2..f105afa601d 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -1,6 +1,8 @@
/* Support for GDB maintenance commands.
- Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+
+ Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
+ 2002, 2003, 2004 Free Software Foundation, Inc.
+
Written by Fred Fish at Cygnus Support.
This file is part of GDB.
@@ -54,8 +56,6 @@ static void maintenance_space_display (char *, int);
static void maintenance_info_command (char *, int);
-static void print_section_table (bfd *, asection *, void *);
-
static void maintenance_info_sections (char *, int);
static void maintenance_print_command (char *, int);
diff --git a/gdb/mcore-tdep.c b/gdb/mcore-tdep.c
index 598a0ace52c..5e08e25a20c 100644
--- a/gdb/mcore-tdep.c
+++ b/gdb/mcore-tdep.c
@@ -1,5 +1,7 @@
/* Target-machine dependent code for Motorola MCore for GDB, the GNU debugger
- Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
This file is part of GDB.
@@ -917,16 +919,13 @@ mcore_push_return_address (CORE_ADDR pc, CORE_ADDR sp)
argument.
For gdb, this leaves us two routes, based on what
- USE_STRUCT_CONVENTION (mcore_use_struct_convention) returns.
- If this macro returns 1, gdb will call STORE_STRUCT_RETURN and
- EXTRACT_STRUCT_VALUE_ADDRESS.
-
- If USE_STRUCT_CONVENTION retruns 0, then gdb uses STORE_RETURN_VALUE
- and EXTRACT_RETURN_VALUE to store/fetch the functions return value. */
+ USE_STRUCT_CONVENTION (mcore_use_struct_convention) returns. If
+ this macro returns 1, gdb will call STORE_STRUCT_RETURN to store
+ the return value.
-/* Should we use EXTRACT_STRUCT_VALUE_ADDRESS instead of
- EXTRACT_RETURN_VALUE? GCC_P is true if compiled with gcc
- and TYPE is the type (which is known to be struct, union or array). */
+ If USE_STRUCT_CONVENTION returns 0, then gdb uses
+ STORE_RETURN_VALUE and EXTRACT_RETURN_VALUE to store/fetch the
+ functions return value. */
static int
mcore_use_struct_convention (int gcc_p, struct type *type)
@@ -934,16 +933,6 @@ mcore_use_struct_convention (int gcc_p, struct type *type)
return (TYPE_LENGTH (type) > 8);
}
-/* Where is the return value saved? For MCore, a pointer to
- this buffer was passed as a hidden first argument, so
- just return that address. */
-
-static CORE_ADDR
-mcore_extract_struct_value_address (char *regbuf)
-{
- return extract_unsigned_integer (regbuf + DEPRECATED_REGISTER_BYTE (FIRST_ARGREG), DEPRECATED_REGISTER_SIZE);
-}
-
/* Given a function which returns a value of type TYPE, extract the
the function's return value and place the result into VALBUF.
REGBUF is the register contents of the target. */
@@ -1071,8 +1060,6 @@ mcore_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, 0);
set_gdbarch_deprecated_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos);
set_gdbarch_deprecated_saved_pc_after_call (gdbarch, mcore_saved_pc_after_call);
- set_gdbarch_function_start_offset (gdbarch, 0);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
set_gdbarch_breakpoint_from_pc (gdbarch, mcore_breakpoint_from_pc);
set_gdbarch_deprecated_push_return_address (gdbarch, mcore_push_return_address);
set_gdbarch_deprecated_push_arguments (gdbarch, mcore_push_arguments);
@@ -1087,8 +1074,6 @@ mcore_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_extract_return_value (gdbarch,
mcore_extract_return_value);
set_gdbarch_deprecated_store_struct_return (gdbarch, mcore_store_struct_return);
- set_gdbarch_deprecated_extract_struct_value_address (gdbarch,
- mcore_extract_struct_value_address);
set_gdbarch_skip_prologue (gdbarch, mcore_skip_prologue);
set_gdbarch_frame_args_skip (gdbarch, 0);
set_gdbarch_deprecated_frame_args_address (gdbarch, mcore_frame_args_address);
diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c
index 0415f7532d2..a898b5a6c9e 100644
--- a/gdb/mdebugread.c
+++ b/gdb/mdebugread.c
@@ -1,7 +1,9 @@
/* Read a symbol table in ECOFF format (Third-Eye).
- Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+
+ Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
+
Original version contributed by Alessandro Forin (af@cs.cmu.edu) at
CMU. Major work by Per Bothner, John Gilmore and Ian Lance Taylor
at Cygnus Support.
@@ -793,7 +795,8 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
else
{
t = parse_type (cur_fd, ax, sh->index + 1, 0, bigend, name);
- if (DEPRECATED_STREQ (name, "malloc") && TYPE_CODE (t) == TYPE_CODE_VOID)
+ if (strcmp (name, "malloc") == 0
+ && TYPE_CODE (t) == TYPE_CODE_VOID)
{
/* I don't know why, but, at least under Alpha GNU/Linux,
when linking against a malloc without debugging
@@ -1667,7 +1670,8 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
bad_tag_guess_complaint (sym_name);
TYPE_CODE (tp) = type_code;
}
- if (TYPE_NAME (tp) == NULL || !DEPRECATED_STREQ (TYPE_NAME (tp), name))
+ if (TYPE_NAME (tp) == NULL
+ || strcmp (TYPE_NAME (tp), name) != 0)
TYPE_NAME (tp) = obsavestring (name, strlen (name),
&current_objfile->type_obstack);
}
@@ -1987,7 +1991,8 @@ parse_procedure (PDR *pr, struct symtab *search_symtab,
/* Correct incorrect setjmp procedure descriptor from the library
to make backtrace through setjmp work. */
- if (e->pdr.pcreg == 0 && DEPRECATED_STREQ (sh_name, "setjmp"))
+ if (e->pdr.pcreg == 0
+ && strcmp (sh_name, "setjmp") == 0)
{
complaint (&symfile_complaints, "fixing bad setjmp PDR from libc");
e->pdr.pcreg = RA_REGNUM;
@@ -2608,7 +2613,8 @@ parse_partial_symbols (struct objfile *objfile)
((char *) debug_info->external_sym
+ (fh->isymBase + 1) * external_sym_size),
&sh);
- if (DEPRECATED_STREQ (debug_info->ss + fh->issBase + sh.iss, stabs_symbol))
+ if (strcmp (debug_info->ss + fh->issBase + sh.iss,
+ stabs_symbol) == 0)
processing_gcc_compilation = 2;
}
@@ -2929,12 +2935,13 @@ parse_partial_symbols (struct objfile *objfile)
things like "break c-exp.y:435" need to work (I
suppose the psymtab_include_list could be hashed or put
in a binary tree, if profiling shows this is a major hog). */
- if (pst && DEPRECATED_STREQ (namestring, pst->filename))
+ if (pst && strcmp (namestring, pst->filename) == 0)
continue;
{
int i;
for (i = 0; i < includes_used; i++)
- if (DEPRECATED_STREQ (namestring, psymtab_include_list[i]))
+ if (strcmp (namestring,
+ psymtab_include_list[i]) == 0)
{
i = -1;
break;
@@ -3861,8 +3868,8 @@ psymtab_to_symtab_1 (struct partial_symtab *pst, char *filename)
((char *) debug_info->external_sym
+ (fh->isymBase + 1) * external_sym_size),
&sh);
- if (DEPRECATED_STREQ (debug_info->ss + fh->issBase + sh.iss,
- stabs_symbol))
+ if (strcmp (debug_info->ss + fh->issBase + sh.iss,
+ stabs_symbol) == 0)
{
/* We indicate that this is a GCC compilation so that certain
features will be enabled in stabsread/dbxread. */
@@ -4502,7 +4509,7 @@ add_line (struct linetable *lt, int lineno, CORE_ADDR adr, int last)
static int
compare_blocks (const void *arg1, const void *arg2)
{
- int addr_diff;
+ LONGEST addr_diff;
struct block **b1 = (struct block **) arg1;
struct block **b2 = (struct block **) arg2;
diff --git a/gdb/mi/ChangeLog b/gdb/mi/ChangeLog
deleted file mode 100644
index 4472fe3fd49..00000000000
--- a/gdb/mi/ChangeLog
+++ /dev/null
@@ -1,2190 +0,0 @@
-2003-11-06 Andrew Cagney <cagney@redhat.com>
-
- * mi-cmd-var.c (mi_cmd_var_set_format): Replace STREQN with
- strncmp.
-
-2003-10-24 Andrew Cagney <cagney@redhat.com>
-
- * tui-out.c: Fix "fortunatly"[sic].
-
-2003-10-02 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c: Rename REGISTER_RAW_SIZE to
- DEPRECATED_REGISTER_RAW_SIZE.
-
-2003-09-30 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c: Rename REGISTER_VIRTUAL_SIZE to
- DEPRECATED_REGISTER_VIRTUAL_SIZE.
-
-2003-09-17 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c: Rename REGISTER_BYTE to DEPRECATED_REGISTER_BYTE.
-
-2003-09-10 Elena Zannoni <ezannoni@redhat.com>
-
- * mi-main.c (mi_setup_architecture_data): Don't use
- DEPRECATED_REGISTER_BYTES because some architecture don't set it
- and its default is 0.
-
-2003-08-08 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c (captured_mi_execute_command): Add "mi2" and "mi3" to
- interpreters that hack around CLI.
- * mi-interp.c (mi3_command_loop): New function.
- (mi_interpreter_resume): Check for "mi3", default to "mi2".
-
-2003-08-07 Andrew Cagney <cagney@redhat.com>
-
- * mi-interp.c (_initialize_mi_interp): Register "mi2" and "mi3".
- Make "mi" select "mi2".
-
-2003-08-05 Andrew Cagney <cagney@redhat.com>
-
- * mi-cmd-env.c (env_execute_cli_command): Use an explicit "%s %s"
- when constructing the run command.
- (mi_cmd_env_cd, mi_cmd_env_path, mi_cmd_env_dir): Simplify command
- string removing the "%s".
-
-2003-08-04 Andrew Cagney <cagney@redhat.com>
-
- * mi-cmds.h (struct mi_cli): Define.
- (struct mi_cmd): Change type of "cli" to "struct mi_cli".
- * mi-cmds.c (mi_cmds): Update table.
- * mi-parse.c (mi_parse): Update.
- * mi-main.c (mi_execute_cli_command): Add "args_p" parameter, make
- others constant.
- (mi_cmd_execute): Update call.
- (captured_mi_execute_command): Ditto.
-
-2003-08-04 David Carlton <carlton@kealia.com>
-
- * mi-main.c (mi_error_last_message): Add "%s" second argument to
- xasprintf call.
-
-2003-06-28 Daniel Jacobowitz <drow@mvista.com>
-
- * mi-out.c (mi_ui_out_impl): Add NULL for redirect member.
-
-2003-06-17 Daniel Jacobowitz <drow@mvista.com>
-
- * mi-cmds.c (mi_cmds): Add "-target-disconnect".
-
-2003-06-11 David Carlton <carlton@bactrian.org>
-
- * mi-cmd-stack.c: Include dictionary.h.
- (list_args_or_locals): Update use of ALL_BLOCK_SYMBOLS.
-
-2003-06-11 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c (get_register): Replace REGISTER_CONVERTIBLE with
- DEPRECATED_REGISTER_CONVERTIBLE.
-
-2003-06-08 Andrew Cagney <cagney@redhat.com>
-
- * mi-parse.c (_initialize_mi_parse): Delete function.
- * mi-main.c: Include "mi-main.h".
- * mi-interp.c (_initialize_mi_interp): Add declaration.
- * mi-cmd-stack.c: Include "stack.h".
- (select_frame_command_wrapper): Delete extern declaration.
- (mi_cmd_stack_select_frame): Replace select_frame_command_wrapper
- with select_frame_command.
-
-2003-05-16 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c (mi_setup_architecture_data):
-
-2003-05-12 Elena Zannoni <ezannoni@redhat.com>
-
- * mi-mi-cmd-stack.c (list_args_or_locals): Rename VAR_NAMESPACE to
- VAR_DOMAIN.
-
-2003-05-11 Andrew Cagney <cagney@redhat.com>
-
- * mi-symbol-cmds.c: Rename "mi-cmd-symbol.c", avoid 8.3 problem.
-
-2003-05-08 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c (register_changed_p): Use MAX_REGISTER_SIZE instead of
- MAX_REGISTER_RAW_SIZE.
-
-2003-05-08 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c (get_register): Use MAX_REGISTER_SIZE.
-
-2003-05-05 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c (mi_cmd_data_write_register_values): Replace
- REGISTER_SIZE with DEPRECATED_REGISTER_SIZE.
-
-2003-05-03 J. Brobecker <brobecker@gnat.com>
-
- From Thierry Schneider <tpschneider1@yahoo.com>:
- * mi-cmds.h (mi_cmd_symbol_list_lines): Add declaration.
- * mi-cmds.c (mi_cmds): Add entry for new MI command.
- * mi-cmd-symbol.c (mi_cmd_symbol_list_lines): New source file
- for all symbol-related commands.
-
-2003-04-02 Bob Rossi <bob_rossi@cox.net>
-
- * mi-cmd-file.c: New file to implement mi file commands.
- * mi-getopt.c (mi_valid_noargs): Added mi_valid_noargs to verify
- if a set of parameters passed to an MI function has no arguments
- * mi-getopt.h (mi_valid_noargs): Declare.
- * mi-cmds.c (mi_cmds): Added -file-list-exec-source-file command.
- * mi-cmds.h (mi_cmd_file_list_exec_source_file): Declare.
-
-2003-03-27 Andrew Cagney <cagney@redhat.com>
-
- * gdbmi.texinfo: Delete file. Contents moved to
- ../doc/gdb.texinfo.
-
-2003-03-12 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c (get_register): Use frame_register instead of
- get_saved_register.
-
-2003-03-08 Andrew Cagney <cagney@redhat.com>
-
- * mi-out.c: Update copyright.
- (mi_out_data): Define typedef. Use instead of ui_out_data.
-
-2003-03-01 Andrew Cagney <cagney@redhat.com>
-
- * mi-main.c (get_register): Use register_type instead of
- REGISTER_VIRTUAL_TYPE.
-
-2003-02-25 David Carlton <carlton@math.stanford.edu>
-
- * mi-cmd-stack.c: Replace all instances of SYMBOL_NAME with
- DEPRECATED_SYMBOL_NAME. Update copyright.
-
-2003-02-21 Daniel Jacobowitz <drow@mvista.com>
-
- * mi-cmd-stack.c (list_args_or_locals): Handle LOC_COMPUTED and
- LOC_COMPUTED_ARG.
-
-2003-02-19 David Carlton <carlton@math.stanford.edu>
-
- * mi-cmd-stack.c: #include "block.h"
-
-2003-02-09 Andrew Cagney <ac131313@redhat.com>
-
- * mi-interp.c (mi_remove_notify_hooks): Convert function
- definition to ISO C.
-
-2003-02-06 Andrew Cagney <ac131313@redhat.com>
-
- * mi-cmd-env.c: Include "gdb_stat.h" instead of <sys/stat.h>.
-
-2003-02-04 Jim Ingham <jingham@apple.com>
- Keith Seitz <keiths@redhat.com>
- Elena Zannoni <ezannoni@redhat.com>
- Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.h: New file.
- * mi-interp.c: New file.
- * mi-main.c: Include "interps.h".
- (mi_error_message): Make global.
- (mi_input): Delete static function, moved to "mi-interp.c".
- (mi_execute_command, mi_execute_command_wrapper): Ditto.
- (mi_command_loop, mi1_command_loop, mi2_command_loop): Ditto.
- (mi_load_progress): Make non-static.
- (mi_error_last_message): New function.
- (captured_mi_execute_command): If the interpreter changed, don't
- print anything.
- (mi_load_progress): Use current_interp_named_p.
- (mi_init_ui): Delete function.
- (_initialize_mi_main): Don't install the mi interpreter, handled
- by "mi-interp.c".
- (mi_exec_async_cli_cmd_continuation): Make static.
- * mi-console.h (mi_console_file_new): Add `quote' parameter.
- * mi-console.c (struct mi_console_file): Add `quote'.
- (mi_console_file_new): Add `quote' parameter. Initialize `quote'.
- (mi_console_raw_packet): Only quote the output when `quote'.
- * mi-cmds.h (mi_cmd_interpreter_exec): Declare.
- (mi_error_message, mi_error_last_message): Declare.
- (mi_execute_command): Declare.
- * mi-cmds.c: Add `interpreter-exec' command.
-
-2003-02-04 Andrew Cagney <ac131313@redhat.com>
-
- From Keith Seitz <keiths@redhat.com>:
- * gdbmi.texinfo (GDB/MI Miscellaneous Commands): Document the
- interpreter-exec command.
-
-2003-02-02 Andrew Cagney <ac131313@redhat.com>
-
- From 2002-11-10 Jason Molenda (jason-cl@molenda.com):
- * mi-cmd-var.c (mi_cmd_var_list_children): CHILDREN field is
- now a list; still a tuple when in mi1.
- * gdbmi.texinfo: Update var-list-children example.
-
-2003-01-13 Andrew Cagney <ac131313@redhat.com>
-
- * mi-cmd-env.c: Update copyright.
-
-2003-01-13 Elena Zannoni <ezannoni@redhat.com>
-
- * mi-main.c (mi_cmd_exec_return): Use print_stack_frame instead of
- show_and_print_stack_frame.
-
-2003-01-09 Andrew Cagney <ac131313@redhat.com>
-
- * mi-cmd-env.c: Include "gdb_string.h" instead of <string.h>.
- Move all includes to after "defs.h".
-
-2002-12-13 Jeff Johnston <jjohnstn@redhat.com>
-
- * mi-cmds.c (-environment-directory) Change to use mi_cmd_env_dir,
- (-environment-cd): Change to use mi_cmd_env_cd,.
- (-environment-pwd): Change to use mi_cmd_env_pwd.
- (-environment-path): Change to use mi_cmd_env_path.
- * mi-cmds.h (mi_cmd_env_cd, mi_cmd_env_dir): New prototypes.
- (mi_cmd_env_path, mi_cmd_env_pwd): Ditto.
- * mi-cmd-env.c: New file. Part of fix for PR gdb/741.
- * gdbmi.texinfo (environment-cd): Update output and example.
- (environment-pwd): Ditto.
- (environment-dir): Update output, description, and examples.
- (environment-path): Ditto.
-
-2002-11-29 Andrew Cagney <ac131313@redhat.com>
-
- * mi/mi-cmd-stack.c, mi/mi-main.c: Update to use
- deprecated_selected_frame.
-
-2002-11-13 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_data_write_register_values): Use
- deprecated_write_register_bytes instead of write_register_bytes.
-
-2002-11-11 Jeff Johnston <jjohnstn@redhat.com>
-
- * gdbmi.texinfo (-var-assign): Add comments about interaction
- with -var-update and add an example. Part of fix for gdb/702.
-
-2002-11-08 Jeff Johnston <jjohnstn@redhat.com>
-
- * mi-main.c (mi_command_loop): Initialize raw_stdout and gdb_stdout
- only if mi version is <= 1.
- (mi_init_ui): Initialize raw_stdout and gdb_stdout if mi version
- is > 1 so startup message is treated as console output. This is
- part of fix for PR gdb/604.
-
-2002-11-06 Jeff Johnston <jjohnstn@redhat.com>
-
- * mi-cmd-var.c (mi_cmd_var_create): Change the function used to
- parse the frame addr from parse_and_eval_address() to
- string_to_core_addr(). This is a fix for PR gdb/494.
-
-2002-10-23 Jeff Johnston <jjohnstn@redhat.com>
-
- * mi-cmd-var.c: Change all remaining occurrences of ui_out_tuple_begin
- to make_cleanup_ui_out_tuple_begin_end. Change all remaining
- occurrences of ui_out_list_begin to make_cleanup_ui_out_list_begin_end.
- Use do_cleanups instead of ui_out_list_end or ui_out_tuple_end. This
- is a fix for PR gdb/680.
- * mi-cmd-stack.c: Ditto.
- * mi-main.c: Ditto.
-
-2002-10-22 Keith Seitz <keiths@redhat.com>
-
- * mi-main.c (mi_cmd_thread_select): Only return MI_CMD_CAUGHT_ERROR
- when we really did catch an error(). If we got GDB_RC_FAIL, return
- MI_CMD_ERROR instead.
-
-2002-10-18 David Carlton <carlton@math.stanford.edu>
-
- * mi-cmd-stack.c: #include "block.h"
-
-2002-10-03 Jeff Johnston <jjohnstn@redhat.com>
-
- * gdbmi.texinfo: Fix examples that show frames to remove
- extraneous blank in level field. Part of fix for PR gdb/192.
-
-2002-10-03 Jeff Johnston <jjohnstn@redhat.com>
-
- * mi-cmd-var.c (mi_cmd_var_update): Fix for PR gdb/672. For m2,
- output list begin and end for "changelist" rather than tuple begin/end.
- (varobj_update_one): For m2, add tuple begin and end for varobj
- update output.
-
-2002-10-02 Elena Zannoni <ezannoni@redhat.com>
-
- * mi-main.c (mi_cmd_exec_return): Don't use
- return_command_wrapper, use return_command instead.
- (mi_cmd_exec_interrupt): Don't use
- interrupt_target_command_wrapper, use interrupt_target_command
- instead.
- (return_command_wrapper, interrupt_target_command_wrapper):
- Delete.
- Include frame.h.
-
-2002-10-01 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi2_command_loop): New function.
- (mi0_command_loop): Delete function.
- (_initialize_mi_main): Recognize, and default to, "mi2". Do not
- recognize "mi0".
- * mi-out.c (mi_table_begin): Remove mi0 code.
- (mi_table_body, mi_table_end): Ditto.
- (mi_table_header, mi_open, mi_close): Ditto.
-
-2002-09-29 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_version): New function.
- * mi-out.h (mi_version): Declare.
-
-2002-09-27 Andrew Cagney <ac131313@redhat.com>
-
- From 2002-07-12 Mo DeJong <supermo@bayarea.net>
- * gdbmi.texinfo (var-evaluate-expression): Note that
- var-list-children must be invoked before child variable
- values can be evaluated.
-
-2002-09-26 Elena Zannoni <ezannoni@redhat.com>
-
- * mi-cmd-disas.c (dump_insns): Add text only output for CLI.
- (do_mixed_source_and_assembly): Ditto.
-
-2002-09-23 David Carlton <carlton@math.stanford.edu>
-
- * mi-cmd-stack.c (list_args_or_locals): Update use of
- ALL_BLOCK_SYMBOLS.
- #include "dictionary.h"
-
-2002-09-11 Keith Seitz <keiths@redhat.com>
-
- * mi-main.c (mi_cmd_data_list_register_names): Use cleanups
- for the uiout list. Do the cleanups when returning an error.
- (mi_cmd_data_list_changed_registers): Ditto.
- (mi_cmd_data_list_register_values): Use cleanups for the uiout list
- and tuples. Do the cleanups when returning errors.
-
-2002-07-29 Andrew Cagney <ac131313@redhat.com>
-
- * mi-cmd-var.c: Include "gdb_string.h".
- * mi-cmd-disas.c: Ditto.
-
-2002-06-17 Keith Seitz <keiths@redhat.com>
-
- * gdbmi.texinfo: Update command examples with real MI behavior.
-
-2002-05-20 Keith Seitz <keiths@redhat.com>
-
- * mi-main.c (captured_mi_execute_command): Add uiout parameter.
- "data" is now a structure which is used to pass data to/from this
- function to mi_execute_command.
- Modify function to comply with requirements from catch_exceptions.
- Store real return result and command's return result in data.
- (mi_execute_command): Use catch_exceptions.
- Use enum to handle actions to be performed instead of overloading
- catch_errors return result and the mi return result.
-
-2002-04-14 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_exec_return):
-
-2002-04-09 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (register_changed_p): Use frame_register_read instead
- of read_relative_register_raw_bytes.
- (get_register): Delete out-of-date comment.
-
-2002-04-07 Elena Zannoni <ezannoni@redhat.com>
-
- * mi-cmd-disas.c: Run through indent.
-
-2002-04-07 Elena Zannoni <ezannoni@redhat.com>
-
- * mi-cmd-disas.c (dump_insns): New function.
- (do_mixed_source_and_assembly): New function.
- (do_assembly_only): New function.
- (do_disassembly): New function.
- (mi_cmd_disassemble): Rewrite using smaller, more modular
- functions.
-
-2002-04-05 Jim Blandy <jimb@redhat.com>
-
- * mi-cmd-stack.c (list_args_or_locals): Pass new arg to
- get_frame_block. (See entry in gdb/ChangeLog.)
-
-2002-04-05 Elena Zannoni <ezannoni@redhat.com>
-
- * mi-cmd-disas.c (mi_cmd_disassemble): Use TARGET_PRINT_INSN
- instead of tm_print_insn.
- Update copyright year.
-
-2002-04-04 Daniel Jacobowitz <drow@mvista.com>
-
- * mi-cmd-disas.c (mi_cmd_disassemble): Skip end-of-function
- markers in the line table.
-
-2002-03-15 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (XMALLOC): Delete macro.
- * mi-out.c (XMALLOC): Ditto.
- * mi-parse.c (XMALLOC): Ditto.
- * mi-console.c (XMALLOC): Ditto.
- * mi-cmd-var.c (XMALLOC): Ditto.
- * mi-cmd-break.c (XMALLOC): Ditto.
-
- * mi/mi-cmd-var.c, mi/mi-console.c, mi/mi-out.c: Update copyright
- * mi/mi-parse.c: Ditto.
-
-2002-02-24 Andrew Cagney <ac131313@redhat.com>
-
- From wiz at danbala:
- * gdbmi.texinfo: Fix grammar and typos.
- Fix PR gdb/287.
-
-2002-02-03 Jim Blandy <jimb@redhat.com>
-
- * mi-cmd-stack.c (list_args_or_locals): Move declaration of
- print_me inside the loop body, so it gets re-initialized every
- iteration. The cases for the different symbol kinds leave
- print_me unchanged if they don't want the symbol printed.
-
-2002-01-22 Andrew Cagney <ac131313@redhat.com>
-
- * gdbmi.texinfo: Remove makeinfo 3.12 hacks.
-
-2002-01-21 Andrew Cagney <ac131313@redhat.com>
-
- * mi-cmd-stack.c: Remove #else clause of #ifdef UI_OUT.
- * mi-cmd-break.c: Ditto.
- * mi-main.c: Ditto.
-
-2001-12-30 Eli Zaretskii <eliz@is.elta.co.il>
-
- * gdbmi.texinfo: Fix the application of GFDL in the Copyright notice.
-
-2001-10-12 Daniel Jacobowitz <drow@mvista.com>
-
- * mi-cmd-stack.c (list_args_or_locals): Use ALL_BLOCK_SYMBOLS.
-
-2001-09-18 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_thread_select): Pass uiout to
- gdb_thread_select.
- (mi_cmd_thread_list_ids): Pass uiout to gdb_list_thread_ids.
-
- * mi-cmd-break.c (breakpoint_notify): Pass uiout to
- gdb_breakpoint_query.
-
-2001-08-17 Keith Seitz <keiths@redhat.com>
-
- * mi-cmd-var.c (varobj_update_one): Update call to
- varobj_update to reflect recent api change.
-
-2001-07-26 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c: Include "gdb.h".
- * mi-cmd-break.c: Include "gdb.h".
-
-2001-07-12 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_execute_command): Flush output after ``(gdb)''
- prompt. Bug reported by David Whedon.
- (mi_execute_async_cli_command): Ditto.
- (mi_exec_async_cli_cmd_continuation): Ditto.
- (mi_command_loop): Ditto.
-
-2001-07-10 Mark Kettenis <kettenis@gnu.org>
-
- * mi-out.c (mi_out_new): Initialize suppress_ouput field of newly
- created `struct ui_out_data'.
-
-2001-07-09 Kevin Buettner <kevinb@redhat.com>
-
- * mi-main.c (register_changed_p, get_register): Use alloca()
- to allocate space previously allocated via gcc's
- variable-length array extension.
- (mi_cmd_data_write_register_values, mi_cmd_data_write_memory):
- Change type of ``buffer'' to ``void *''. Don't cast return value
- from xmalloc(). Add a cleanup to free the xmalloc'd buffer.
-
-2001-07-07 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_data_evaluate_expression): Replace value_ptr
- with `struct value *'.
-
-2001-07-08 Kevin Buettner <kevinb@redhat.com>
-
- * mi-out.c (mi_table_header, mi_field_int, mi_field_skip)
- (mi_field_string) Make function declarators match earlier
- declarations.
-
-2001-07-04 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_ui_out_impl): Initialize is_mi_like_p to one.
-
-2001-06-27 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_table_begin): Include nr_cols and nr_rows in mi1
- table output.
- * mi-out.c (mi_table_begin): Only suppress output when mi0. Change
- the header to a list.
- (mi_table_body): For mi1, close the header list and open a table
- body list.
- (mi_table_end): For mi1, close the body list.
- (mi_table_header): For mi1, output a tuple containing all the
- header information.
- (mi_open, mi_close): Reverse logic of mi_version test.
- * gdbmi.texinfo (GDB/MI Breakpoint Table Commands): Update.
-
-2001-06-26 Andrew Cagney <ac131313@redhat.com>
-
- * gdbmi.texinfo (GDB/MI Output Syntax): Delete reference to query
- packet.
-
-2001-06-26 Andrew Cagney <ac131313@redhat.com>
-
- * mi-cmd-stack.c (list_args_or_locals): Output a list of "args" or
- "locals" entries.
- * gdbmi.texinfo (stack-list-locals, stack-list-arguments)
- (exec-interrupt, target-select, thread-select): Update
- documentation.
-
-2001-06-26 Andrew Cagney <ac131313@redhat.com>
-
- * mi-cmd-stack.c (mi_cmd_stack_list_frames): Output a list of
- "stack" entries.
- (mi_cmd_stack_list_args): Ditto for "stack-args".
- * gdbmi.texinfo (stack-list-frames, stack-list-arguments): Update
- documentation.
- (GDB/MI Stack Manipulation Commands): Fix section title. Was
- Stack Manipulation Commands in GDB/MI.
-
-2001-06-25 Andrew Cagney <ac131313@redhat.com>
-
- * gdbmi.texinfo: Update output examples that contain stop reason
- output, change the args=.... to a list.
- (exec-return): Ditto.
-
-2001-06-25 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_data_read_memory): Output the memory contents
- - memory and data - as a list.
- * gdbmi.texinfo (data-read-memory): Update documentation.
-
-2001-06-25 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_data_list_register_values): Output a list of
- register values.
- * gdbmi.texinfo (data-list-register-values): Update documentation.
-
-2001-06-25 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_data_list_register_names): Output a list of
- register names.
- (mi_cmd_data_list_register_names): Include the pseudo registers.
- (mi_cmd_data_list_register_names): Don't leave holes in the list,
- output "" for NULL registers.
- * gdbmi.texinfo (data-list-register-names): Update documentation.
-
-2001-06-23 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_data_list_changed_registers): Output a list of
- register numbers.
- * gdbmi.texinfo (data-list-changed-registers): Update
- documentation.
-
-2001-06-23 Andrew Cagney <ac131313@redhat.com>
-
- * gdbmi.texinfo (data-disassemble): Update documentation of
- output. Produces a list of instructions and a list of source
- lines.
-
-2001-06-22 Andrew Cagney <ac131313@redhat.com>
-
- * mi-cmd-disas.c (mi_cmd_disassemble): For "-data-disassemble",
- output a list instead of a tupple.
-
-2001-06-21 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (struct ui_out_data): Replace field first_header with
- suppress_output.
- (mi_begin, mi_end): Check suppress_header.
- (mi_field_int, mi_field_skip): Ditto.
- (mi_field_string, mi_field_fmt): Ditto.
- (mi_table_begin): When nr_rows is zero, set suppress_header else,
- output the start of the header.
- (mi_table_body): Clear suppress header.
-
-2001-06-21 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_open): For lists, when mi_version > 0, use ``[''.
- (mi_close): Ditto for ``]''.
-
-2001-06-20 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_table_header): Add parameter ``col_name''.
-
-2001-06-18 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c: Include "gdb_assert.h".
- (mi_table_begin): Add parameter ``nr_rows''.
-
-2001-06-18 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c: Use strncmp as the "mi" test. Allow "mi", "mi0" and
- "mi1".
- (mi_command_loop): Add parameter mi_version, pass to mi_out_new.
- (mi1_command_loop, mi0_command_loop): New functions.
- (_initialize_mi_main): Recognize "mi", "mi0" and "mi1".
- * mi-out.c (mi_out_new): Add parameter mi_version.
- (struct ui_out_data): Add field mi_version.
- * mi-out.h (mi_out_new): Update.
-
-2001-06-07 Andrew Cagney <ac131313@redhat.com>
-
- * gdbmi.texinfo (GDB/MI Output Syntax): Add tuples and lists to
- syntax.
- (GDB/MI Draft Changes to Output Syntax): Delete section.
-
-Mon Jun 11 17:22:25 2001 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-out.c: Fix typo. s/supress/suppress/.
-
-2001-06-09 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_table_end, mi_table_begin, mi_begin, mi_end): Move
- supress_field_separator updates from here.
- (mi_open, mi_close): To here.
- (mi_open): Add parameter name. Output a field_separator.
- (mi_table_begin): Update.
- (mi_table_header): Update.
- (mi_begin): Update.
-
-2001-06-09 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_table_begin): Make char* parameters constant.
- (mi_table_header): Ditto.
- (mi_field_int): Ditto.
- (mi_field_skip): Ditto.
- (mi_field_string): Ditto.
- (mi_field_fmt): Ditto.
- (mi_text): Ditto.
- (mi_message): Ditto.
-
-2001-05-12 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_close, mi_open): Output ``[]'' when a list.
-
-Fri May 11 13:55:07 2001 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmd-var.c: Replace ui_out_list_begin, ui_out_list_end and
- make_cleanup_ui_out_list_end with ui_out_tupple_begin,
- ui_out_tupple_end and make_cleanup_ui_out_tupple_begin_end.
- * mi-cmd-stack.c: Ditto.
- * mi-cmd-disas.c: Ditto.
- * mi-main.c: Ditto.
-
-2001-05-10 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_open, mi_close): Replace list_open and list_close.
- (mi_table_begin): Update.
- (mi_table_header): Update.
- (mi_begin): Update.
- (mi_table_body): Update.
- (mi_table_end): Update.
- (mi_end): Update.
-
-Thu May 10 16:28:13 2001 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_execute_async_cli_command): Always initialize
- old_cleanups.
-
-2001-05-08 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.c (mi_begin, mi_end): Replace mi_list_begin and
- mi_list_end.
- (mi_ui_out_impl): Update.
-
-2001-03-28 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_data_read_memory): Use xcalloc.
-
-2001-03-26 Eli Zaretskii <eliz@is.elta.co.il>
-
- * gdbmi.texinfo: Update copyright. Change Permissions to GFDL.
-
-2001-03-20 Andrew Cagney <ac131313@redhat.com>
-
- * mi-cmd-disas.c (mi_cmd_disassemble): Initialize ``file_string''
- and ``line_num''. Consolidate declaration of argument variables.
-
-2001-03-19 Andrew Cagney <ac131313@redhat.com>
-
- * mi-out.h: Remove #ifdef __STDC__.
-
-2001-03-08 Andrew Cagney <ac131313@redhat.com>
-
- * mi-main.c (mi_cmd_data_list_register_names): Use NUM_REGS, not
- ARCH_NUM_REGS.
- (mi_cmd_data_list_changed_registers): Ditto.
- (mi_cmd_data_list_register_values): Ditto.
- (mi_cmd_data_write_register_values): Ditto.
-
-2001-03-06 Kevin Buettner <kevinb@redhat.com>
-
- * gdbmi.texinfo, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c,
- mi-cmds.c, mi-cmds.h, mi-console.c, mi-console.h, mi-getopt.c,
- mi-getopt.h, mi-out.c, mi-out.h, mi-parse.c, mi-parse.h:
- Update/correct copyright notices.
-
-Wed Feb 7 19:50:37 2001 Andrew Cagney <cagney@redhat.com>
-
- * mi-getopt.c: Add __FILE__ and __LINE__ parameter to calls to
- internal_error.
- * mi-console.c: Ditto.
- * mi-cmds.c: Ditto.
- * mi-cmd-break.c: Ditto.
-
-2001-01-27 Fernando Nasser <fnasser@redhat.com>
-
- From Momchil Velikov <velco@fadata.bg>
- * mi-cmd-disas.c (gdb_dis_asm_read_memory): Add missing memory
- attributes argument in the call to `xfer_memory'.
-
-2000-12-14 Kevin Buettner <kevinb@redhat.com>
-
- * mi-cmd-disas.c, mi-cmd-var.c, mi-console.c, mi-main.c,
- mi-parse.c: Replace occurrences of free() with xfree().
-
-Fri Nov 17 16:07:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c: Replace asprintf with xasprintf.
- * mi-cmd-var.c (mi_cmd_var_create): Ditto.
-
-2000-10-16 Eli Zaretskii <eliz@is.elta.co.il>
-
- * gdbmi.texinfo (GDB/MI Variable Objects): Dimensions of
- multitable changed to "@columnfractions .4 .6". Suggested by
- Dmitry Sivachenko <dima@Chg.RU>.
-
-2000-08-23 Eli Zaretskii <eliz@is.elta.co.il>
-
- * gdbmi.texinfo: Change flathead -> @sc{gdb/mi}.
- Fix typos and markup mistakes (from Dmitry S.
- Sivachenko <dima@Chg.RU>).
-
-2000-07-24 Eli Zaretskii <eliz@is.elta.co.il>
-
- * gdbmi.texinfo: Change GDB -> @value{GDBN}, and
- (gdb) -> (@value{GDBP}). Fix a few typos and some markup. From
- Dmitry S. Sivachenko <dima@Chg.RU>.
-
-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 "@"
- to indicate an "USE_CURRENT_FRAME" variable.
- (varobj_update_one): Add "in_scope" and "type_changed" to the
- result.
-
-2000-03-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.h: Export mi_cmd_data_write_register_values.
-
- * mi-cmds.c (mi_cmds): Implement data-write-register-values with
- mi_cmd_data_write_register_values.
-
- * mi-main.c (mi_cmd_data_write_register_values): New
- function. Write a value into a register.
-
-2000-03-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Update data-disassemble documentation.
-
-2000-03-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmd-disas.c (mi_cmd_disassemble): Use
- ui_out_field_core_addr() instead of print_address_numeric(), to
- maintain consistency throughout MI.
-
-Wed Feb 23 17:09:39 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmd-break.c, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c,
- mi-cmds.c, mi-cmds.h, mi-console.c, mi-console.h, mi-getopt.c,
- mi-getopt.h, mi-main.c, mi-out.c, mi-out.h, mi-parse.c,
- mi-parse.h: Update copyright information.
-
-Wed Feb 23 13:31:16 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmd-disas.c (gdb_dis_asm_read_memory): Change LEN to unsigned
- long. Match ../include/dis-asm.h change.
-
-Wed Feb 23 10:30:55 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * gdbmi.texinfo: Update copyright - FSF. Update version
- information.
-
- mi-cmd-break.c, mi-cmd-disas.c, mi-cmd-stack.c, mi-cmd-var.c,
- mi-cmds.h, mi-main.c, mi-parse.c, mi-parse.h: Re-format using GNU
- indent.
-
-2000-02-21 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c: Add include of gdbcore.h for write_memory()
- prototype.
-
-2000-02-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmd-disas.c (mi_cmd_disassemble): Change syntax of
- command. Now use options.
- Instead of printing the symbolic address of instructions via
- print_address_symbolic(), use build_address_symbolic() and format
- properly for output.
- (gdb_do_disassmble): Delete.
-
-2000-02-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmd-disas.c (mi_cmd_disassemble):
-
-2000-02-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_data_write_memory): New function. Write a
- value into target memory.
-
- * mi-cmds.h (mi_cmd_data_write_memory): Export.
-
- * mi-cmds.c (mi_cmds): Hook up data-write-memory to
- mi_cmd_data_write_memory().
-
-2000-02-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_target_download): Correct error message to
- report right function name.
- (mi_cmd_target_select): Add doing exec cleanups at end.
- (mi_cmd_data_read_memory): Correct typo.
- (mi_cmd_execute): Do not simply free last_async_command, but reset
- it to NULL as well.
- (free_and_reset): New function, free the argument and set it to
- NULL.
- (mi_cmd_target_select_continuation): Delete prototype.
-
-Tue Feb 1 00:17:12 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmd-disas.c, mi-cmds.h, mi-console.c, mi-console.h,
- mi-main.c, mi-out.c, mi-out.h: Update to reflect rename of
- gdb-file / GDB_FILE to ui-file / ``struct ui_file''.
-
-Mon Jan 31 18:33:28 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_command_loop): Delete reference to
- fputs_unfiltered_hook.
-
-2000-01-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.c (mi_cmds): Update entries for
- mi_cmd_data_list_register_names,
- mi_cmd_data_list_changed_registers,
- mi_cmd_data_list_register_values.
-
- * mi-cmds.h (mi_cmd_data_list_register_names,
- mi_cmd_data_list_changed_registers,
- mi_cmd_data_list_register_values): Update to mi_cmd_argv_ftype.
-
- * mi-main.c (mi_cmd_data_list_register_names,
- mi_cmd_data_list_changed_registers,
- mi_cmd_data_list_register_values): Update to use argc, argv
- parameters.
-
-2000-01-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_data_read_memory): Correct the computation of
- next-row.
-
-2000-01-27 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-cmd-var.c (mi_cmd_var_create): Test for NULL type.
- (mi_cmd_var_set_format, mi_cmd_var_show_format,
- mi_cmd_var_info_num_children, mi_cmd_var_list_children,
- mi_cmd_var_info_type, mi_cmd_var_info_expression,
- mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression,
- mi_cmd_var_assign, mi_cmd_var_update): Prevent possibility of memory
- leak on error.
-
-2000-01-27 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-out.c (mi_field_string): Test for NULL string pointer.
-
-2000-01-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmd-stack.c (mi_cmd_stack_list_frames): Call
- print_frmae_info() with the correct arguments.
-
- * mi-main.c (mi_cmd_exec_return): Call
- show_and_print_stack_frame() with LOC_AND_ADDRESS, so it does the
- right thing. Update Copyright.
-
-2000-01-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c: Move disassemble commands from here.
-
- * mi-cmd-disas.c: To here. New file.
-
-2000-01-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmd-stack.c: Remove include of mi-out.h.
-
- * mi-main.c (mi_cmd_disassemble): Update function to use argc/argv
- interface.
-
- * mi-cmds.h: Ditto.
-
- * mi-cmds.c: Ditto.
-
-2000-01-12 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Update stack commands descriptions.
- Add thread commands descriptions and examples.
-
- * mi-main.c (mi_cmd_thread_list_ids): Fix typo.
-
-2000-01-12 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_thread_list_ids): New function, print a list
- of currently known threads ids, and the total number of threads.
- (mi_cmd_thread_select): New function. Switch current thread.
-
- * mi-cmds.c (mi_cmds): Implement thread-list-ids by
- mi_cmd_thread_list_ids, and thread-select by mi_cmd_thread_select.
-
- * mi-cmds.h (mi_cmd_thread_select, mi_cmd_thread_list_ids): Export.
-
-2000-01-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c: Move stack commands from here.
-
- * mi-cmd-stack.c: To here. New file.
-
-2000-01-07 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (list_args_or_locals): Add a new paramter, the frame
- for which to display args or locals. Don't use selected_frame
- anymore, use the new parameter instead. Return void instead of
- mi_cmd_result, let callers do so.
- (mi_cmd_stack_list_args): Change interface. Now accept low and
- high frame numbers to display args for a range of frames. Without
- these two, display args for the whole stack.
- (mi_cmd_stack_list_locals): Adapt to new interface for
- list_args_or_locals.
-
-2000-01-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_stack_info_depth, mi_cmd_stack_list_args,
- mi_cmd_stack_list_frames, mi_cmd_stack_list_locals,
- mi_cmd_stack_select_frame): Change to use argv type of parameters.
-
- * mi-cmds.c (mi_cmds): Change stack-info-depth,
- stack-list-arguments, stack-list-frames, stack-list-locals,
- stack-select-frame to use argv parameters.
-
- * mi-cmds.h (mi_cmd_stack_info_depth, mi_cmd_stack_list_args,
- mi_cmd_stack_list_frames, mi_cmd_stack_list_locals,
- mi_cmd_stack_select_frame): Update definitions.
-
-Tue Jan 4 12:38:54 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_command_loop): Force the MI interface to use seven
- bit strings.
- * gdbmi.texinfo: Make it clear that a quoted C string is seven
- bit.
-
-Thu Dec 30 14:15:22 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-getopt.c (mi_getopt): Rewrite. Allow long options.
- * mi-getopt.h (struct mi_opt): Declare.
- (mi_getopt): Update.
-
- * mi-main.c (mi_cmd_data_read_memory), mi-cmd-break.c
- (mi_cmd_break_insert, mi_cmd_break_watch): Update.
-
-Wed Dec 29 23:38:35 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmd-break.c (mi_cmd_break_insert): Add support for -c
- <condition>, -i <ignore-count> and -p <thread>.
- (breakpoint_notify): New function.
- (mi_cmd_break_insert): Wrap GDB call with callback hooks so that
- MI is notified when ever a breakpoint is created.
-
- * gdbmi.texinfo: Update.
-
-Fri Dec 24 11:23:22 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (gdb_do_disassemble): Strip out more useless #ifdef
- UI_OUTs.
-
-1999-12-23 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (gdb_do_disassemble): Fix output. Lines that have no
- assembly instructions must still be outputted, to keep the source
- line numbering correct.
- Remove #ifdef UI_OUT's, they are useless.
-
-1999-12-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (gdb_do_disassemble): Don't print a new list in mixed
- mode, every time. Just do it when we actually encounter a new
- source line.
-
-1999-12-17 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-cmd-var.c (mi_cmd_var_list_children): Add test for C++ pseudo
- variable objects (private, public, protected) as these do not have
- a type and the -var-list-children operation was dumping core.
-
-Fri Dec 17 20:23:33 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * gdbmi.texinfo: Document recommended syntax for options.
-
- * mi-main.c (mi_cmd_data_read_memory): Add support for ``-o
- <offset>''.
- * gdbmi.texinfo: Document.
-
-Wed Dec 15 17:43:08 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-getopt.h (mi_getopt): Change optarg to a char pointer. Check
- optind.
- * mi-cmd-break.c (mi_cmd_break_insert): Update.
-
- * mi-main.c (mi_cmd_data_read_memory): Add fields "next-row-addr",
- "prev-row-addr", "next-page-addr", "prev-page-addr" and a per row
- "addr".
- * gdbmi.texinfo: Update.
-
-Wed Dec 15 01:05:40 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmds.h (mi_cmd_result): Add MI_CMD_CAUGHT_ERROR for when the
- error is caught.
-
- * mi-main.c (captured_mi_execute_command): When
- MI_CMD_CAUGHT_ERROR return 0 rethrowing the eror.
-
-1999-12-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmd-break.c (mi_cmd_break_insert): Remove unused var.
-
- * mi-cmd-var.c (mi_cmd_var_update): Remove unused variables.
-
-Mon Dec 13 18:43:36 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-parse.c (mi_parse): Quote the command when printing it.
- (mi_parse_argv): Fix handling of quoted strings. Was not
- de-quoting them.
- (mi_parse_argv): Make static.
-
-Mon Dec 13 18:30:03 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmds.h (mi_cmd_break_insert, mi_cmd_break_watch): Change type
- to mi_cmd_argv_ftype.
- * mi-cmds.c (mi_cmds): Update.
- * mi-cmd-break.c (mi_cmd_break_insert, mi_cmd_break_watch): Change
- to new style of arguments with argc and argv. Parse arguments
- using mi_getopt.
-
- * mi-cmd-break.c (mi_cmd_break_insert): Wrap body in #ifdef UI_OUT
- to avoid non-ui compile problems.
-
-Mon Dec 13 15:08:36 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-getopt.h, mi-getopt.c: New files. Similar to getopt but with
- well defined semantics.
-
-Mon Dec 13 14:22:21 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_cmd_break_insert, mi_cmd_break_watch, enum
- wp_type, enum bp_type): Move from here.
- * mi-cmd-break.c: To here. New file.
- (mi_cmd_break_insert, mi_cmd_break_insert, mi_cmd_break_watch):
- Use error to report problems.
-
-1999-12-09 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Update description of exec-interrupt.
-
- * mi-main.c (mi_cmd_exec_interrupt): If the program is not
- executing, don't try to interrupt it, but error out instead. Make
- sure previous_async_command is not null before duplicating it into
- last_async_command.
-
- * gdbmi.texinfo: Add examples for data-evaluate-expression.
-
-1999-12-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmd-var.c (mi_cmd_var_assign, mi_cmd_var_create,
- mi_cmd_var_delete, mi_cmd_var_evaluate_expression,
- mi_cmd_var_info_expression, mi_cmd_var_info_num_children,
- mi_cmd_var_info_type, mi_cmd_var_list_children,
- mi_cmd_var_set_format, mi_cmd_var_show_attributes,
- mi_cmd_var_show_format, mi_cmd_var_update): Change to use new
- style of arguments with argc and argv.
- (next_arg): Delete.
- (which_var): Delete.
-
- * mi-cmds.c (mi_cmds): Update entries for mi_cmd_var_assign,
- mi_cmd_var_create, mi_cmd_var_delete,
- mi_cmd_var_evaluate_expression, mi_cmd_var_info_expression,
- mi_cmd_var_info_num_children, mi_cmd_var_info_type,
- mi_cmd_var_list_children, mi_cmd_var_set_format,
- mi_cmd_var_show_attributes, mi_cmd_var_show_format,
- mi_cmd_var_update.
-
- * mi-cmds.h (mi_cmd_var_assign, mi_cmd_var_create,
- mi_cmd_var_delete, mi_cmd_var_evaluate_expression,
- mi_cmd_var_info_expression, mi_cmd_var_info_num_children,
- mi_cmd_var_info_type, mi_cmd_var_list_children,
- mi_cmd_var_set_format, mi_cmd_var_show_attributes,
- mi_cmd_var_show_format, mi_cmd_var_update): Update declarations.
-
-1999-12-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Comment out -data-assign command. * mi-main.c
- (mi_cmd_data_assign): Do not use, comment out. * mi-cmds.h
- (mi_cmd_data_assign): Remove. * mi-cmds.c: Remove -data-assign
- command from MI interface.
-
-1999-12-07 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-parse.c (mi_parse): Add '\n' at end of error messages, so
- that prompt comes out on new line.
-
- * gdbmi.texinfo: Update disassembly command output.
-
-1999-12-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (gdb_do_disassemble): Update output for UI_OUT case.
-
-1999-12-02 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Update exec-until output, including the reason
- for stopping.
-
-Thu Dec 2 17:17:22 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmds.c: Include <string.h> for memset.
-
-1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_exec_return): ifdef the references to
- return_command_wrapper().
-
-1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_interrupt,
- mi_cmd_target_select, mi_execute_async_cli_command,
- mi_exec_async_cli_cmd_continuation, mi_load_progress): Don't print
- last_async_command if it is NULL.
- (mi_cmd_exec_return):
-
-1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_exec_return): Reimplement using
- return_command() instead of mi_execute_async_cli_command().
-
-1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.h: Export mi_cmd_data_assign and
- mi_cmd_data_evaluate_expression.
-
- * mi-cmds.c (mi_cmds): Hook data-assign to mi_cmd_data_assign and
- data-evaluate-expression to mi_cmd_data_evaluate_expression.
-
- * mi-main.c (mi_cmd_data_assign): New function. Implement
- data-assign command.
- (mi_cmd_data_evaluate_expression): New function. Implement
- data-evaluate-expression command.
-
-1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Fix some texinfo formatting errors.
-
-1999-12-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Update data-list-register-values description.
-
- * mi-cmds.h: Export mi_cmd_data_list_register_values.
-
- * mi-cmds.c (mi_cmds): Hook data-list-register-values to
- mi_cmd_data_list_register_values.
-
- * mi-main.c (mi_cmd_data_list_register_values): New
- function. Implements the -data-list-register-values command.
- (get_register): New function. Output the contents of a given
- register.
-
-Wed Dec 1 20:27:22 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_execute_async_cli_command): Append missing "\n"
- for synchronous stopped message.
-
-1999-11-30 James Ingham <jingham@leda.cygnus.com>
-
- * gdbmi.texinfo: Fix obvious typo in @end statement.
-
-Wed Dec 1 12:36:27 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmd-var.c: Include "value.h".
- * mi-console.c: Include <string.h>.
-
-Wed Dec 1 00:21:03 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (captured_mi_execute_command): For a CLI command, pass
- "%s" to mi_execute_cli_command to stop core dumps.
- (captured_mi_execute_command): Echo CLI commands on gdb_stdlog.
-
-Wed Dec 1 00:10:07 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * gdbmi.texinfo: Explain NR-BYTES and ADDR.
-
-Tue Nov 30 23:31:57 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete,
- mi_cmd_var_set_format, mi_cmd_var_show_format,
- mi_cmd_var_info_num_children, mi_cmd_var_list_children,
- mi_cmd_var_info_type, mi_cmd_var_info_expression,
- mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression,
- mi_cmd_var_assign, mi_cmd_var_update, varobj_update_one, next_arg,
- which_var): New file. Move varobj commands to here from
- mi-main.c.
-
- * mi-console.h, mi-console.c (mi_console_file_new,
- mi_console_file_delete, mi_console_file_fputs,
- mi_console_raw_packet, mi_console_file_flush): New files. Move
- mi_console_file to here from mi-main.c.
-
-Tue Nov 30 19:37:25 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (captured_mi_execute_command): Use fputstr_unfiltered
- when printing error messages.
- (mi_cmd_execute): Ditto.
-
-1999-11-29 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Describe -data-list-changed-registers,
- -data-list-register-names. Add examples for
- -exec-next-instruction, exec-step-instruction, -exec-run,
- -exec-until. Format examples for -data-read-memory.
- update example for -target-download.
-
-1999-11-29 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Remove mentioning of inaccurate watchpoint hit
- count.
-
-Mon Nov 29 19:28:55 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_execute_async_cli_command): Return ``enum
- mi_cmd_cmd_result''. mi_cmd_exec_run, mi_cmd_exec_next,
- mi_cmd_exec_step, mi_cmd_exec_step_instruction,
- mi_cmd_exec_finish, mi_cmd_exec_until, mi_cmd_exec_return,
- mi_cmd_exec_continue): Update call.
- (mi_execute_async_cli_command): When target is synchronous, fake
- asynchronous behavour (ulgh). Allows tests to be run on built-in
- simulator and native targets.
-
-Mon Nov 29 15:15:16 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmds.h (mi_cmd_gdb_exit), mi-cmds.c (mi_cmds), mi-main.c
- (mi_cmd_gdb_exit): Change function signature to mi_cmd_argv_ftype.
-
-1999-11-28 Andew Cagney <cagney@rat-in-a-hat.cygnus.com>
-
- * mi-parse.c: Include <ctype.h> and <string.h>
-
-1999-11-26 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdbmi.texinfo: Added watchpoint command descriptions and
- examples.
-
- * mi-main.c (mi_load_progress): Add parameter for total sent so far.
- Print it as well.
-
-Fri Nov 26 10:17:49 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * gdbmi.texinfo (section Output Syntax): For lists, the <string>
- part of a <result> is optional. Clarify syntax.
- (appendix Proposed v2.0 Output Syntax): New section. Provide
- record of discussion of possible changes to syntax.
-
-Wed Nov 24 19:41:35 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_cmd_data_read_memory): Simplify. Fix coredump
- when arguments were bad.
- (mi_cmd_execute): Change parameter to ``struct mi_parse''. Handle
- case of argv_func as well as args_func.
- (captured_mi_execute_command): Update.
-
- * mi-cmds.c (struct mi_cmd): Add field for mi_cmd_argv_ftype.
- (mi_cmds): Update mi_cmd_data_read_memory.
- (mi_lookup): Return
-
- * mi-cmds.h (mi_cmd_args_ftype): Rename mi_cmd_ftype. Make all
- functions of type this type.
- (mi_cmd_argv_ftype): Declare.
- (mi_cmd_data_read_memory): Change type to mi_cmd_argv_fytpe.
- (struct mi_cmd): Move declaration to here from mi-cmds.c.
- (mi_lookup): Return a pointer to ``struct mi_cmd''.
-
-Wed Nov 24 15:03:34 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-parse.c (mi_parse): Initialize TOKEN when a CLI command.
-
- * gdbmi.texinfo: Allow a <token> before a CLI command.
-
- * mi-parse.h (struct mi_parse): Declare.
- (mi_parse): Change to return a ``struct mi_parse''.
- (enum mi_command_type): Delete PARSE_ERROR.
-
- * mi-main.c (struct mi_execute_command_context): Delete.
- (captured_mi_execute_command): Update
- (mi_execute_command): Update. Check for mi_parse returning NULL.
-
-Wed Nov 24 12:57:14 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-parse.h: Remove const, from cmd parameter. Causes cascading
- warnings.
-
-Wed Nov 24 15:03:34 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-parse.c (mi_parse): New function. Move parse code to here.
- * mi-main.c (parse): From here. Delete.
-
-Wed Nov 24 12:57:14 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-parse.c, mi-parse.h: New files. Implement mi_parse_env.
-
-Wed Nov 24 11:24:05 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-out.c (mi_field_string): Make string parameter constant.
-
-1999-11-23 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.h (mi_cmd_target_download): Export.
-
- * mi-cmds.c (mi_cmds): Add mi_cmd_target_download.
-
- * mi-main.c: Include <sys/time.h>.
- (mi_cmd_target_download): New function, implement the
- target-download command.
- (mi_load_progress): New function. Called via the
- show_load_progress hook. Prints updates every 0.5 secs.
- (mi_command_loop): Initialize the show_load_progress hook.
-
-1999-11-22 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_exec_until): New function. Implement until
- command.
- (mi_cmd_exec_step_instruction): New function. Implement stepi
- command.
- (mi_cmd_exec_next_instruction): New function. Implement nexti
- command.
-
- * mi-cmds.c (mi_cmds): Add mi_cmd_exec_step_instruction,
- mi_cmd_exec_next_instruction, mi_cmd_exec_until.
-
- * mi-cmds.h (mi_cmd_exec_step_instruction,
- mi_cmd_exec_next_instruction, mi_cmd_exec_until): Export.
-
-Tue Nov 23 00:30:37 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi/gdbmi.texinfo: Document -data-read-memory.
-
- * mi-main.c (mi_cmd_data_read_memory): Fix off-by-one check of
- argc.
- (mi_cmd_data_read_memory): Label the output table with "memory".
-
-Thu Nov 18 18:15:53 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_cmd_exec_interrupt, mi_cmd_break_insert,
- mi_cmd_break_watch, mi_cmd_disassemble, mi_cmd_execute): Replace
- strdup with xstrdup.
-
-Thu Nov 18 20:50:09 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_cmd_data_read_memory): New function. Implement
- data-read-memory.
-
- * mi-cmds.h, mi-cmds.c: Add mi_cmd_data_read_memory.
- * mi-cmds.c (mi_cmds): Ditto.
-
-1999-11-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.h (mi_cmd_break_watch): Export.
-
- * mi-cmds.c (mi_cmds): Hook up break-watch to function
- mi_cmd_break_watch.
-
- * mi-main.c (wp_type): New enumeration for the possible types of
- watchpoints.
- (mi_cmd_break_watch): New function, implements the break-watch
- command.
-
-1999-11-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_break_insert): Handle case in which the command is
- just a -break-insert w/o args.
-
-Fri Nov 12 00:01:52 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-out.c (mi_field_string): Always quote the string.
-
-1999-11-10 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.h(mi_cmd_data_list_changed_registers,
- mi_cmd_data_list_register_names): Export.
-
- * mi-cmds.c (mi_cmds): Hook up data-list-changed-registers to
- mi_cmd_data_list_changed_registers and data-list-register-names to
- mi_cmd_data_list_register_names.
-
- * mi-main.c (mi_cmd_data_list_changed_registers): New function,
- implements the data-list-changed-registers command.
- (mi_cmd_data_list_register_names): New function, implements the
- data-list-register-names command.
- (register_changed_p): New function. Decide whether the register
- contents have changed.
- (setup_architecture_data): New function. Initialize registers
- memory.
- (_initialize_mi_main): Call setup_architecture_data(), and
- register_gdbarch_swap().
-
-Wed Nov 10 18:35:08 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_execute_command): Correctly quote error messages.
-
-Wed Nov 10 11:05:14 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi/gdbmi.texinfo: Delete <stream-output>. Replaced by
- <c-string>.
-
- * mi-main.c (mi_console_raw_packet): Always quote console output.
-
-Tue Nov 9 17:53:05 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_console_file_new), mi-out.c (mi_out_new): Replace
- the tui_file with a mem_file. Ya!
-
- * mi-out.c (do_write): New function, wrapper to gdb_file_write.
- (mi_out_put): Pass do_write to gdb_file_put.
-
- * mi-main.c (mi_console_file_flush): Rewrite. Use
- mi_console_raw_packet to send data to the console.
- (mi_console_raw_packet): New function. Correctly
- create quoted C string packets.
-
-1999-11-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.c (mi_cmds): Break-insert is now implemented by
- mi_cmd_break_insert.
- * mi-cmds.h (mi_cmd_break_insert): Export.
- * mi-main.c (bp_type): New enumeration.
- (mi_cmd_break_insert): New function. Implements all flavors of
- breakpoint insertion.
-
-Mon Nov 8 17:49:17 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_console_file_flush): Replace gdb_file_get_strbuf
- with tui_file_get_strbuf.
-
-Fri Nov 5 17:06:07 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_console_file_delete, mi_console_file_fputs,
- mi_console_file_flush): Call internal_error instead of error.
-
-Thu Nov 4 19:53:32 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (captured_mi_execute_command): New function.
- (mi_execute_command): Rewrite. Replace SET_TOP_LEVEL() with call
- to captured_mi_execute_command via catch_errors.
-
-Thu Nov 4 20:33:58 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (clean): Delete.
- (mi_command_loop): Delete extern declaration of
- mi_execute_command.
-
-1999-10-28 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_stack_select_frame): Conditionalize the body
- on UI_OUT, because select_frame_command_wrapper is only defined if
- UI_OUT is.
- (mi_cmd_exec_interrupt): Conditionalize the body on UI_OUT,
- because interrupt_target_command_wrapper is only defined if UI_OUT is.
-
- * mi-cmds.c (mi_cmds): Implement command exec-interrupt by
- mi_cmd_exec_interrupt.
-
- * mi-main.c (mi_cmd_exec_interrupt): New function. Implements
- exec-interrupt command.
- (mi_cmd_execute): If the target is running save execution command
- token in previous_async_command. If the command is not 'interrupt'
- and the target is running, reject it.
- (clean): New function. Free the arg and reset it to NULL.
-
- * mi-cmds.h (mi_cmd_exec_interrupt):Export.
-
-1999-10-28 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.c (mi_cmds): Implement command stack-select-frame by
- mi_cmd_stack_select_frame.
-
- * mi-main.c (mi_cmd_stack_select_frame): New function. Implements
- stack-select-frame command.
-
- * mi-cmds.h (mi_cmd_select_frame):Export.
-
-1999-10-26 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.c (mi_cmds): Implement commands stack-list-locals and
- stack-list-arguments by mi_cmd_stack_list_locals and
- mi_cmd_stack_list_args.
-
- * mi-main.c (mi_cmd_stack_list_locals): New function. Implements
- stack-list-locals command.
- (mi_cmd_stack_list_args): New function. Implements
- stack-list-arguments command.
- (list_args_or_locals): New function. Do all the work for the
- listing of locals or arguments.
-
- * mi-cmds.h (mi_cmd_stack_list_args,mi_cmd_stack_list_locals) :
- Export.
-
-1999-10-25 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-cmds.c (mi_cmds): Add new command stack-info-depth.
-
- * mi-main.c (mi_cmd_stack_info_depth): New function. Implements
- the stack-info-depth command.
- * mi-cmds.h (mi_cmd_stack_info_depth): Export.
-
-
-1999-10-22 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_execute_command): Handle MI_CMD_ERROR case
- properly, for command that return error code and don't set
- mi_error_message.
-
- * mi-cmds.c (mi_cmds): Hook stack-list-frames command to
- mi_cmd_stack_list_frames function.
- * mi-cmds.h (mi_cmd_stack_list_frames): Export.
-
- * mi-main.c (mi_execute_command): Deal with a return code of
- MI_CMD_ERROR from the execution of mi commands.
- (mi_error_message): Static string variable, to contain the error
- message from mi commands.
- (mi_cmd_stack_list_frames): New function. Prints a backtrace.
-
-1999-10-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_disassemble): Handle the new command line
- parameter that specifies the number of disassembly lines to be
- displayed.
- (gdb_do_disassemble): Add new parameter. Count the number of lines
- that have been displayed, and stop when limit is reached.
-
-Wed Oct 13 18:04:13 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_command_loop): Don't initialize ``flush_hook''.
-
-1999-10-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi/gdbmi.texinfo: More reformatting of the grammars.
-
-1999-10-12 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi/gdbmi.texinfo: More TeX formatting.
-
-1999-10-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi/gdbmi.texinfo: First pass completed. All commands should have
- some comments/info.
- Escape '@' output special char.
- Reformat for TeX.
-
-1999-10-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi/gdbmi.texinfo: Filled in part of file command section, and
- stack section.
-
-1999-10-07 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi/gdbmi.texinfo: Filled in some sections about execution
- commands.
-
-Tue Oct 5 15:27:28 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmds.h: Sort table
- * mi-cmds.c: Ditto.
- (MI_TABLE_SIZE): Increase to 251.
-
-1999-10-04 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_cmd_var_create, mi_cmd_var_delete): Add missing
- cleanups.
-
-1999-10-04 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (next_arg): Returns lenght as well.
- (which_var, mi_cmd_var_create, mi_cmd_var_delete,
- mi_cmd_var_set_format, mi_cmd_var_update): Do not modify the input
- string, use allocated storage instead.
- (mi_cmd_var_assign): Adjust call to next_arg() to include new
- argument.
-
-1999-10-04 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_execute_command): Fix handling of errors.
-
-1999-10-04 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-out.c (mi_out_new): Call tui_sfileopen() instead of
- deprecated gdb_file_init_astream().
- * mi-main.c (mi_console_file_new): Ditto.
-
-Mon Oct 4 15:17:29 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmds.h: Sort function declarations.
- (mi_lookup): Add extern.
-
- * mi-cmds.c (mi_lookup): Delete dead code.
- (build_table): Call internal_error instead of error.
- (build_table): Send trace output to gdb_stdlog.
-
-1999-10-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_execute_async_cli_command): Don't do the cleanups
- if target_executing is null.
-
-1999-09-28 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (async_p): Change var name to event_loop_p.
-
-Mon Sep 27 15:11:00 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_execute_async_cli_command, mi_execute_command):
- Replace target_has_async with function target_can_async_p.
-
-Sun Sep 26 00:12:52 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_cmd_target_select_continuation): Delete function.
- (mi_cmd_target_select): Simplify. target-connect is guarenteed to
- be synchronous.
-
-Sun Sep 26 00:12:52 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmds.h (mi_cmd_ftype): Replace mi_impl_ftype.
- (enum mi_cmd_result): Define.
- * mi-cmds.c (struct mi_cmd): Update.
- (mi_lookup): Update.
- * mi-main.c (mi_cmd_execute): Update.
-
- * mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_run, mi_cmd_exec_next,
- mi_cmd_exec_step, mi_cmd_target_select, mi_cmd_exec_continue,
- mi_cmd_exec_return, mi_cmd_exec_finish, mi_cmd_disassemble,
- mi_cmd_var_create, mi_cmd_var_delete, mi_cmd_var_set_format,
- mi_cmd_var_show_format, mi_cmd_var_info_num_children,
- mi_cmd_var_list_children, mi_cmd_var_info_type,
- mi_cmd_var_info_expression, mi_cmd_var_show_attributes,
- mi_cmd_var_evaluate_expression, mi_cmd_var_update): Update.
- Return MI_CMD_DONE.
-
-1999-09-22 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_cmd_var_create): Use paddr() to format address
- on trace output.
-
-1999-09-21 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_cmd_var_create): Test for varobjdebug before
- printing trace and send it to gdb_stdlog.
-
-Mon Sep 20 13:41:04 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * Makefile.in (mi-out.o): Add dependency list.
- * mi-out.c: Include "mi-out.h".
-
-1999-09-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (_initialize_mi_main): Events on stadin are now
- handled by stdin_event_handler.
-
-1999-09-17 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-cmds.c (mi_cmds): Add var-* commands.
-
-1999-09-17 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_cmd_var_create, mi_cmd_var_delete,
- mi_cmd_var_set_format, mi_cmd_var_show_format,
- mi_cmd_var_info_num_children, mi_cmd_var_list_children,
- mi_cmd_var_info_type, mi_cmd_var_info_expression,
- mi_cmd_var_show_attributes, mi_cmd_var_evaluate_expression,
- mi_cmd_var_assign, mi_cmd_var_update, varobj_update_one,
- which_var, next_arg): New functions. Implement the -var-*
- commands.
- * mi-cmds.h: Add prototypes for the above.
-
-1999-09-14 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-cmds.c (mi_cmds): Add detach command.
-
-1999-09-09 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-cmds.c (lookup_table): Fix typo.
-
-1999-09-09 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-cmds.c (mi_cmds): Fix typo and missing command.
-
-1999-09-09 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c: Properly align function prototypes.
- (mi_cmd_target_select): Proper check for NULL value.
-
-1999-09-09 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_execute_async_cli_command): Fix for native targets
- that do not have async yet.
-
-1999-09-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_disassemble): Remove unused var.
- (gdb_do_disassemble): Ditto.
-
-1999-08-30 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c: Replace all the occurrences of 'asynch' in variable
- or function names with 'async' to make it consistent with the rest
- of gdb.
-
-Mon Aug 30 18:16:39 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c: #include <ctype.h> for isspace().
-
-1999-08-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (gdb_do_disassemble): This function returns void, not
- int.
-
-1999-08-26 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_disassemble): Don't use atoi() on the high
- address string, just treat it same as address low.
- (gdb_do_disassemble): Parse high_address string before seeing if
- it is zero.
-
-1999-08-25 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_disassemble): New function to produce
- disassembly output for mi.
- (gdb_dis_asm_read_memory): New function. Read the disassembly from
- the executable file, instead of target memory.
- (compare_lines): New function. Compare order of disassembly lines.
- (gdb_do_disassemble): New function. Do the real job of getting the
- assembly code out.
-
- * mi-cmds.c (mi_cmds): Do data-disassemble mi command via the
- mi_cmd_disassemble function.
-
- * mi-cmds.h: Export new function mi_cmd_disassemble.
-
-Wed Aug 25 15:58:31 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_command_loop): Remove references to ui-hooks.
-
-1999-08-21 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_execute_asynch_cli_command): Fix the incorrect
- usage of strcat(): allocate enough space for the string.
-
-1999-08-13 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- From Christopher Faylor <cgf@cygnus.com>
- * mi-main.c (mi_execute_command): Make sure we flush all the
- output after each command.
-
-1999-08-10 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (_initialize_mi_main): Remove casting in call to
- add_file_handler.
-
-Sun Aug 8 17:20:57 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_cmd_target_select, mi_execute_asynch_cli_command):
- Replace call to fatal with call to internal_error.
-
-1999-07-26 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_cmd_execute): Add return code.
- (mi_execute_command): Make appropriate changes when calling the
- function mentioned above.
- (mi_cmd_gdb_exit, mi_cmd_target_select,
- mi_cmd_target_select_continuation, mi_execute_command,
- mi_exec_asynch_cli_cmd, mi_exec_asynch_cli_cmd_continuation):
- Print token, prefix, class and output (if any) in one single group
- of statements.
- (mi_execute_command, mi_cmd_execute): Fix error prefix.
- (mi_cmd_execute): Use exec cleanup for token.
- * mi-out.c (mi_out_rewind): New function.
- * mi-out.h: Prototype for the above.
-
-1999-07-16 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_cmd_gdb_exit): Use buffer for exit message.
- (mi_cmd_execute): Route error messages to correct file.
- (mi_execute_asynch_cli_command): Insert line feed after running
- message.
-
-1999-07-16 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-out.h (mi_out_buffered): Add extern declaration.
- * mi-out.c (mi_out_buffered): New function. Insert a string at the
- current buffer position.
- * mi-main.c (mi_cmd_target_select, mi_execute_command,
- mi_cmd_execute, mi_execute_asynch_cli_command): Use the above
- function instead of printing to raw_stdout.
- (mi_cmd_target_select, mi_cmd_target_select_continuation,
- mi_execute_command, mi_cmd_execute, mi_execute_cli_command,
- mi_exec_asynch_cli_cmd_continuation): Fix handling of token and
- prefix.
- (mi_execute_cli_command): Remove parameter no longer needed.
-
-1999-07-15 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c (mi_cmd_target_select_continuation): Print the numeric
- token when we are connected.
- (mi_execute_command): Don't print the token now, do it later.
- (mi_execute_cli_command): Add a new parameter for the numeric
- token. Print the token, the prefix and the class after the
- command has executed, not before.
- (mi_execute_asynch_cli_command): Don't print an extra blank line.
-
-1999-07-15 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_gdb_exit): Add \n at the end.
-
-1999-07-15 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_cmd_execute): New function. Dispatch a mi operation.
- (mi_execute_command): Use the above.
-
-1999-07-15 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c: Fix identation.
-
-1999-07-15 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-main.c: Include target.h and inferior.h.
- (mi_cmd_target_select): New function to execute the target-select
- mi operation.
- (mi_cmd_target_select_continuation): New function. Continuation
- for the target-select operation.
- (mi_execute_command): In case of an MI command which requires
- asynchronous execution, do not try to display the result now. If
- the execution has to look synchronous don't display the "(gdb)"
- prompt.
- (mi_execute_asynch_cli_command): Invoke real asynchronous
- commands, set up exec_cleanups, and continuations.
- (mi_exec_asynch_cli_cmd_continuation): New function. Continuation
- for all the MI execution commands except 'target-select'.
- (mi_execute_command): Handle null commands by exiting gdb, instead
- of core dumping.
-
- * mi-cmds.c (mi_cmds): Hook up -target-select operation to new mi
- function.
-
- * mi-cmds.h (mi_cmd_target_select): Add extern declaration.
-
-Thu Jul 15 10:31:39 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (struct mi_console_file): Add field ``prefix''.
- (mi_console_file_new): Add argument prefix. Initialize prefix
- field.
- (mi_console_file_flush): Use ``prefix'' instead of "~" as the
- prefix string.
- (mi_command_loop): Update stream output prefixes. gdb_stdout ==
- "~", gdb_stderr / gdb_stdlog == "&", gdb_stdtarg == "@".
-
-1999-07-13 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (ui_out_data): New field first_header. Fix output when
- no breakpoints are found.
- (mi_table_begin, mi_table_body, mi_table_header): Test for
- first_header.
- (mi_table_end): Test for supress_field_separator.
- (mi_message): Remove messages from MI output.
-
-1999-06-30 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-cmds.c (mi_cmds[]): Delete gdb-cli operation.
- * mi-main.c (parse): Remove ifdefs for cli commands parsing.
- (mi-execute-command): Ditto.
-
-Mon Jun 28 13:06:52 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-out.h: New file.
- (mi_out_new, mi_out_put): Move mi specific delcarations to here.
- * ui-out.h: From here.
-
- * mi-main.c: Include "mi-out.h".
-
-1999-06-25 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * top.c (print_gdb_version): Add the word HEADLESS when output
- follows headless format.
- (print_command_lines): Fix typo.
-
-1999-06-25 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * event-loop.h: Export input_fd.
- * mi-main.c (mi_command_loop): Use the event loop if running
- asynchronously.
- (mi_execute_command_wrapper): New function.
- (_initialize_mi-main): Set things up for running asynchronously.
-
-1999-06-18 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-cmds.c (mi_lookup): Deleted.
- (lookup_table): New function. Replaces old mi_lookup() for local
- use.
- (mi_lookup): New function. External interface for command table
- searchs.
- (build_table): New definition.
- (mi_cmds[]): Add several command implementations and the gdb-cli
- special operation.
- (mi_cmd_execute): Deleted.
- * mi-cmds.h: Add type definition for command implementation
- function pointers, add declaration for new implementation
- functions and a declaration for mi_lookup().
- * mi-main.c (mi_execute_asynch_cli_command): New
- function. Captures code that was repeated for all asynch
- operations.
- (mi_cmd_exec_*): Use the above new function.
- (mi_gdb_cmd_exit): Fix the output, printing something appropriate.
- (mi_cmd_exec_finish): New operation implementation function.
- (mi_cmd_exec_return): Ditto.
- (parse): Prepare to remove cli commands.
- (mi_execute_command): Fix the output and change the way mi-cmds is
- used.
-
-1999-06-18 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-out.c (mi_table_begin): Add missing field separator call.
-
-Thu Jun 17 21:05:40 1999 Fernando Nasser <fnasser@tofu.to.cygnus.com>
-
- * breakpoint.c (breakpoint_1): Remove space in breakpoint table
- id.
- (mention): Use ui_out for last new line (forgotten).
-
-1999-06-16 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c (mi_console_file_flush): Prevent prefix printing when
- buffer empty; change prefix to '~'.
- (mi_cmd_exec_*): Prefix normal output with '^' instead of
- ','; remove unwanted new lines before "stopped".
-
-1999-06-16 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-cmds.c (struct mi_cmds): Updated entries for -exec-continue
- and exec-next operations.
- (mi_cmd_execute): New text for error messages.
- * mi-cmds.h: Add declaration for mi_cmd_exec_next and
- mi_cmd_exec_continue.
- * mi-main.c (mi_cmd_exec_next): New function. Implements exec-next
- operation.
- (mi_cmd_exec_continue): New function. Implements exec-continue
- operation.
- (mi_execute_comand): Add missing space to prompt.
- (mi_cmd_exec_run): Ditto.
- (mi_cmd_exec_step): Ditto.
- * mi-out.c (mi_out_new): Add flags argument to ui_out_new call.
- (ui_list_end): Reset supress_field_separator flag.
-
-Sat Jun 12 11:49:10 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmds.h. mi-cmds.c (exec step): Command implemented by
- mi_cmd_exec_step instead of cli call.
- * mi-main.c (mi_cmd_exec_step): New function.
-
- * mi-cmds.h. mi-cmds.c (exec run): Command implemented by
- mi_cmd_exec_run instead of cli call.
- * mi-main.c (mi_cmd_exec_run): New function.
-
- * mi-cmds.h. mi-cmds.c (gdb exit): Command implemented by
- mi_cmd_gdb_exit instead of quit_force.
- * mi-main.c (mi_cmd_gdb_exit): New function.
-
-Sat Jun 12 11:33:23 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_command_loop): Pass mi_input to
- simplified_command_loop.
- (mi_input): New function. Calls gdb_readline with no prompt.
-
-Sat Jun 12 11:19:02 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_console_file_fputs): Re-implement. Use a buffer
- to accumulate output.
-
- * mi-main.c (struct mi_console_file): Add a buffer.
- (mi_console_file_new): Create a buffer.
- (mi_console_file_flush): New function.
-
-Sat Jun 12 10:59:39 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-cmds.h (raw_stdout): Declare. Will be moved later.
- * mi-cmds.c (mi_cmd_execute): Send error messages to RAW stdout.
- (mi_cmds): Sort by class.
-
- * mi-main.c (raw_stdout): Make global.
- * mi-main.c: Remove #ifdef UI_OUT. File assumes UI_OUT is
- present.
- * mi-main.c: Include "gdb_string.h".
- (mi_out_put): Delete declaration.
-
-1999-06-11 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-main.c: Add pre-processor test for UI_OUT.
- (mi_execute_command): Add pre-processor test for UI_OUT.
-
-Fri Jun 11 23:11:41 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (raw_stdout): New variable.
- (mi_execute_command): Write mi-out direct to raw_stdout.
- (mi_command_loop): Create raw_stdout. Attach gdb_stdout to the
- console.
- (mi_console_file_fputs, mi_console_file_delete,
- mi_console_file_new): New functions.
- (struct mi_console_file): Declare.
-
-Fri Jun 11 18:34:33 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c (mi_execute_command): Call mi_out_put to display the
- result.
- * mi-out.c (mi_out_put): New function.
- * ui-out.h (mi_out_put): Add declare. Will move later.
- * Makefile.in (mi-cmds.o, mi-main.o): Add dependency on ui-out.h.
-
- * mi-out.c (mi_field_string, mi_field_fmt, mi_message, mi_flush,
- out_field_fmt, list_open, list_close): Replace gdb_stdout with
- data->buffer.
- (field_separator, list_open, list_close): Add uiout parameter.
- (mi_table_begin, mi_table_body, mi_table_end, mi_list_begin,
- mi_list_end, mi_field_string, mi_field_fmt, out_field_fmt,
- out_field_fmt): Update.
-
- * mi-out.c (mi_out_new): Initialize supress_field_separator.
- (supress_field_separator): Move into mi-out local data object.
- (mi_table_begin, mi_list_begin, field_separator): Update.
-
-Fri Jun 11 16:08:37 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-out.c (mi_out_new): New function, replace init_mi_out.
- * mi-main.c (mi_command_loop): Call mi_out_new().
-
- * ui-out.h (mi_out_new): Add declaration. Will move later.
- (mi_ui_out_impl): Delete.
-
-Wed Jun 9 16:42:16 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-main.c: Include "ui-hooks.h".
- (mi_init_ui, mi_command_loop): New functions.
- (_initialize_mi_main): Install ``mi'' as the interpreter when
- selected.
-
-Mon Jun 7 18:43:43 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- From Fernando Nasser <fnasser@totem.to.cygnus.com>
- * mi-cmds.c (build_table): Clean up error message.
- * mi-cmds.c (mi_cmd_execute), mi-main.c (mi_execute_command): Only
- print debug information when mi_debug_p.
- * mi-cmds.h (mi_debug_p), mi-main.c: Global, control debug messages.
-
-Thu Jun 3 00:44:52 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- From Fernando Nasser <fnasser@totem.to.cygnus.com>:
- * mi-cmds.c: Add CLI definitions for "exec-arguments",
- "exec-next", "gdb-exit", "break-list", "break-info", "exec-step"
- and "stack-list-frames" to mi_cmds.
- (struct mi_command): Add ``from_tty'' argument to func.
- * mi-cmds.h (quit_force): Declare.
-
-1999-05-31 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-out.c (mi_table_end): Remove unwanted "\n".
-
-Thu May 27 14:59:06 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * top.c: Include "ui-hooks.h".
- (call_interp_loop): Tempoary. Pass mi_execute_command to
- simplified_command_loop. Initialize gdb_stdout & gdb_stderr to
- stdio gdb_file streams. Force all hooks to null.
-
- * mi-cmds.h, mi-main.c, mi-cmds.c: New files.
- * Makefile.in (SFILES): Add mi-main.c, mi-cmds.c
- (COMMON_OBS): Add mi-main.o, mi-cmds.o.
- (mi_cmds_h): Define.
-
-Wed May 26 12:39:49 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * top.c (call_interp_loop): Hack. Add extern declaration for
- mi_ui_out_impl.
-
-1999-05-25 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-out.c: New table syntax.
-
-Mon May 24 16:16:29 1999 Andrew Cagney <cagney@amy.cygnus.com>
-
- mi-out.c (_initialize_mi_out): Add external declaration.
-
-1999-05-21 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-out.c (mi_table_begin): Added missing parameter.
-
-1999-05-21 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-out.c: Changed table markers and added table id.
-
-1999-05-21 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * mi-out.c: New file. Implements low-level ui-out primitives for
- CLI-based interaction.
-
-
-Local Variables:
-mode: change-log
-left-margin: 8
-fill-column: 74
-version-control: never
-End:
diff --git a/gdb/mi/mi-cmd-env.c b/gdb/mi/mi-cmd-env.c
index ec0fa350c84..439c71912bd 100644
--- a/gdb/mi/mi-cmd-env.c
+++ b/gdb/mi/mi-cmd-env.c
@@ -1,6 +1,6 @@
/* MI Command Set - environment commands.
- Copyright 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Red Hat Inc.
@@ -37,7 +37,6 @@
#include "gdb_string.h"
#include "gdb_stat.h"
-static void env_cli_command (const char *cli, const char *args);
static void env_mod_path (char *dirname, char **which_path);
extern void _initialize_mi_cmd_env (void);
diff --git a/gdb/mi/mi-cmd-stack.c b/gdb/mi/mi-cmd-stack.c
index 6330cda473c..7db9ffbea63 100644
--- a/gdb/mi/mi-cmd-stack.c
+++ b/gdb/mi/mi-cmd-stack.c
@@ -1,5 +1,5 @@
/* MI Command Set - stack commands.
- Copyright 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Cygnus Solutions (a Red Hat company).
This file is part of GDB.
@@ -29,6 +29,7 @@
#include "block.h"
#include "stack.h"
#include "dictionary.h"
+#include "gdb_string.h"
static void list_args_or_locals (int locals, int values, struct frame_info *fi);
@@ -137,10 +138,26 @@ mi_cmd_stack_info_depth (char *command, char **argv, int argc)
enum mi_cmd_result
mi_cmd_stack_list_locals (char *command, char **argv, int argc)
{
+ struct frame_info *frame;
+ enum print_values print_values;
+
if (argc != 1)
error ("mi_cmd_stack_list_locals: Usage: PRINT_VALUES");
- list_args_or_locals (1, atoi (argv[0]), deprecated_selected_frame);
+ frame = get_selected_frame ();
+
+ if (strcmp (argv[0], "0") == 0
+ || strcmp (argv[0], "--no-values") == 0)
+ print_values = PRINT_NO_VALUES;
+ else if (strcmp (argv[0], "1") == 0
+ || strcmp (argv[0], "--all-values") == 0)
+ print_values = PRINT_ALL_VALUES;
+ else if (strcmp (argv[0], "2") == 0
+ || strcmp (argv[0], "--simple-values") == 0)
+ print_values = PRINT_SIMPLE_VALUES;
+ else
+ error ("Unknown value for PRINT_VALUES: must be: 0 or \"--no-values\", 1 or \"--all-values\", 2 or \"--simple-values\"");
+ list_args_or_locals (1, print_values, frame);
return MI_CMD_DONE;
}
@@ -218,6 +235,7 @@ list_args_or_locals (int locals, int values, struct frame_info *fi)
int nsyms;
struct cleanup *cleanup_list;
static struct ui_stream *stb = NULL;
+ struct type *type;
stb = ui_out_stream_new (uiout);
@@ -268,24 +286,39 @@ list_args_or_locals (int locals, int values, struct frame_info *fi)
if (print_me)
{
struct cleanup *cleanup_tuple = NULL;
- if (values)
- cleanup_tuple =
+ struct symbol *sym2;
+ if (values != PRINT_NO_VALUES)
+ cleanup_tuple =
make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
- ui_out_field_string (uiout, "name", DEPRECATED_SYMBOL_NAME (sym));
+ ui_out_field_string (uiout, "name", SYMBOL_PRINT_NAME (sym));
- if (values)
- {
- struct symbol *sym2;
- if (!locals)
- sym2 = lookup_symbol (DEPRECATED_SYMBOL_NAME (sym),
- block, VAR_DOMAIN,
- (int *) NULL,
- (struct symtab **) NULL);
- else
+ if (!locals)
+ sym2 = lookup_symbol (SYMBOL_NATURAL_NAME (sym),
+ block, VAR_DOMAIN,
+ (int *) NULL,
+ (struct symtab **) NULL);
+ else
sym2 = sym;
+ switch (values)
+ {
+ case PRINT_SIMPLE_VALUES:
+ type = check_typedef (sym2->type);
+ type_print (sym2->type, "", stb->stream, -1);
+ ui_out_field_stream (uiout, "type", stb);
+ if (TYPE_CODE (type) != TYPE_CODE_ARRAY
+ && TYPE_CODE (type) != TYPE_CODE_STRUCT
+ && TYPE_CODE (type) != TYPE_CODE_UNION)
+ {
+ print_variable_value (sym2, fi, stb->stream);
+ ui_out_field_stream (uiout, "value", stb);
+ }
+ do_cleanups (cleanup_tuple);
+ break;
+ case PRINT_ALL_VALUES:
print_variable_value (sym2, fi, stb->stream);
ui_out_field_stream (uiout, "value", stb);
do_cleanups (cleanup_tuple);
+ break;
}
}
}
diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c
index 114531cdcfa..709ed301052 100644
--- a/gdb/mi/mi-cmd-var.c
+++ b/gdb/mi/mi-cmd-var.c
@@ -1,6 +1,6 @@
/* MI Command Set - varobj commands.
- Copyright 2000, 2002 Free Software Foundation, Inc.
+ Copyright 2000, 2002, 2004 Free Software Foundation, Inc.
Contributed by Cygnus Solutions (a Red Hat company).
@@ -257,17 +257,29 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
struct cleanup *cleanup_children;
int numchild;
char *type;
+ enum print_values print_values;
- if (argc != 1)
- error ("mi_cmd_var_list_children: Usage: NAME.");
+ if (argc != 1 && argc != 2)
+ error ("mi_cmd_var_list_children: Usage: [PRINT_VALUES] NAME");
/* Get varobj handle, if a valid var obj name was specified */
- var = varobj_get_handle (argv[0]);
+ if (argc == 1) var = varobj_get_handle (argv[0]);
+ else var = varobj_get_handle (argv[1]);
if (var == NULL)
- error ("mi_cmd_var_list_children: Variable object not found");
+ error ("Variable object not found");
numchild = varobj_list_children (var, &childlist);
ui_out_field_int (uiout, "numchild", numchild);
+ if (argc == 2)
+ if (strcmp (argv[0], "0") == 0
+ || strcmp (argv[0], "--no-values") == 0)
+ print_values = PRINT_NO_VALUES;
+ else if (strcmp (argv[0], "1") == 0
+ || strcmp (argv[0], "--all-values") == 0)
+ print_values = PRINT_ALL_VALUES;
+ else
+ error ("Unknown value for PRINT_VALUES: must be: 0 or \"--no-values\", 1 or \"--all-values\"");
+ else print_values = PRINT_NO_VALUES;
if (numchild <= 0)
return MI_CMD_DONE;
@@ -284,6 +296,8 @@ mi_cmd_var_list_children (char *command, char **argv, int argc)
ui_out_field_string (uiout, "name", varobj_get_objname (*cc));
ui_out_field_string (uiout, "exp", varobj_get_expression (*cc));
ui_out_field_int (uiout, "numchild", varobj_get_num_children (*cc));
+ if (print_values)
+ ui_out_field_string (uiout, "value", varobj_get_value (*cc));
type = varobj_get_type (*cc);
/* C++ pseudo-variables (public, private, protected) do not have a type */
if (type)
diff --git a/gdb/mi/mi-cmds.h b/gdb/mi/mi-cmds.h
index efcf0b5ca0a..545305986c6 100644
--- a/gdb/mi/mi-cmds.h
+++ b/gdb/mi/mi-cmds.h
@@ -1,6 +1,6 @@
/* MI Command Set for GDB, the GNU debugger.
- Copyright 2000, 2003 Free Software Foundation, Inc.
+ Copyright 2000, 2003, 2004 Free Software Foundation, Inc.
Contributed by Cygnus Solutions (a Red Hat company).
@@ -48,6 +48,12 @@ enum mi_cmd_result
MI_CMD_QUIET
};
+enum print_values {
+ PRINT_NO_VALUES,
+ PRINT_ALL_VALUES,
+ PRINT_SIMPLE_VALUES
+};
+
typedef enum mi_cmd_result (mi_cmd_argv_ftype) (char *command, char **argv, int argc);
/* Older MI commands have this interface. Retained until all old
diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c
index b72d7ef0bc2..08201ca5bb2 100644
--- a/gdb/mi/mi-interp.c
+++ b/gdb/mi/mi-interp.c
@@ -1,6 +1,6 @@
/* MI Interpreter Definitions and Commands for GDB, the GNU debugger.
- Copyright 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2002, 2003, 2003 Free Software Foundation, Inc.
This file is part of GDB.
@@ -57,8 +57,6 @@ static char *mi_input (char *);
so we can report interesting things that happened "behind the mi's
back" in this command */
static int mi_interp_query_hook (const char *ctlstr, va_list ap);
-static char *mi_interp_read_one_line_hook (char *prompt, int repeat,
- char *anno);
static void mi3_command_loop (void);
static void mi2_command_loop (void);
@@ -299,25 +297,6 @@ mi_interp_query_hook (const char *ctlstr, va_list ap)
return 1;
}
-static char *
-mi_interp_read_one_line_hook (char *prompt, int repeat, char *anno)
-{
- static char buff[256];
- printf_unfiltered ("=read-one-line,prompt=\"%s\"\n", prompt);
- gdb_flush (gdb_stdout);
- (void) fgets (buff, sizeof (buff), stdin);
- buff[(strlen (buff) - 1)] = 0;
- return buff;
-}
-
-static void
-output_control_change_notification (char *notification)
-{
- printf_unfiltered ("^");
- printf_unfiltered ("%s\n", notification);
- gdb_flush (gdb_stdout);
-}
-
static void
mi_execute_command_wrapper (char *cmd)
{
diff --git a/gdb/mi/mi-out.c b/gdb/mi/mi-out.c
index 637ceb42ca1..2be9d17b357 100644
--- a/gdb/mi/mi-out.c
+++ b/gdb/mi/mi-out.c
@@ -1,6 +1,6 @@
/* MI Command Set - output generating routines.
- Copyright 2000, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Cygnus Solutions (a Red Hat company).
@@ -98,9 +98,6 @@ static void mi_open (struct ui_out *uiout, const char *name,
enum ui_out_type type);
static void mi_close (struct ui_out *uiout, enum ui_out_type type);
-static void out_field_fmt (struct ui_out *uiout, int fldno, char *fldname,
- char *format,...);
-
/* Mark beginning of a table */
void
@@ -290,31 +287,6 @@ mi_flush (struct ui_out *uiout)
/* local functions */
-/* Like mi_field_fmt, but takes a variable number of args
- and makes a va_list and does not insert a separator */
-
-/* VARARGS */
-static void
-out_field_fmt (struct ui_out *uiout, int fldno, char *fldname,
- char *format,...)
-{
- mi_out_data *data = ui_out_data (uiout);
- va_list args;
-
- field_separator (uiout);
- if (fldname)
- fprintf_unfiltered (data->buffer, "%s=\"", fldname);
- else
- fputs_unfiltered ("\"", data->buffer);
-
- va_start (args, format);
- vfprintf_unfiltered (data->buffer, format, args);
-
- fputs_unfiltered ("\"", data->buffer);
-
- va_end (args);
-}
-
/* access to ui_out format private members */
static void
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
index 2c3e8c27090..41bfc7c1dc1 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -1,7 +1,8 @@
/* Target-dependent code for the MIPS architecture, for GDB, the GNU Debugger.
Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
Contributed by Alessandro Forin(af@cs.cmu.edu) at CMU
and by Per Bothner(bothner@cs.wisc.edu) at U.Wisconsin.
@@ -80,10 +81,10 @@ static const char *mips_abi_strings[] = {
};
struct frame_extra_info
- {
- mips_extra_func_info_t proc_desc;
- int num_args;
- };
+{
+ mips_extra_func_info_t proc_desc;
+ int num_args;
+};
/* Various MIPS ISA options (related to stack analysis) can be
overridden dynamically. Establish an enum/array for managing
@@ -105,11 +106,11 @@ static const char *size_enums[] = {
FP_REGISTER_DOUBLE. */
enum mips_fpu_type
- {
- MIPS_FPU_DOUBLE, /* Full double precision floating point. */
- MIPS_FPU_SINGLE, /* Single precision floating point (R4650). */
- MIPS_FPU_NONE /* No floating point. */
- };
+{
+ MIPS_FPU_DOUBLE, /* Full double precision floating point. */
+ MIPS_FPU_SINGLE, /* Single precision floating point (R4650). */
+ MIPS_FPU_NONE /* No floating point. */
+};
#ifndef MIPS_DEFAULT_FPU_TYPE
#define MIPS_DEFAULT_FPU_TYPE MIPS_FPU_DOUBLE
@@ -121,30 +122,30 @@ static int mips_debug = 0;
/* MIPS specific per-architecture information */
struct gdbarch_tdep
- {
- /* from the elf header */
- int elf_flags;
-
- /* mips options */
- enum mips_abi mips_abi;
- enum mips_abi found_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_default_stack_argsize;
- int default_mask_address_p;
- /* Is the target using 64-bit raw integer registers but only
- storing a left-aligned 32-bit value in each? */
- int mips64_transfers_32bit_regs_p;
- /* Indexes for various registers. IRIX and embedded have
- different values. This contains the "public" fields. Don't
- add any that do not need to be public. */
- const struct mips_regnum *regnum;
- /* Register names table for the current register set. */
- const char **mips_processor_reg_names;
- };
+{
+ /* from the elf header */
+ int elf_flags;
+
+ /* mips options */
+ enum mips_abi mips_abi;
+ enum mips_abi found_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_default_stack_argsize;
+ int default_mask_address_p;
+ /* Is the target using 64-bit raw integer registers but only
+ storing a left-aligned 32-bit value in each? */
+ int mips64_transfers_32bit_regs_p;
+ /* Indexes for various registers. IRIX and embedded have
+ different values. This contains the "public" fields. Don't
+ add any that do not need to be public. */
+ const struct mips_regnum *regnum;
+ /* Register names table for the current register set. */
+ const char **mips_processor_reg_names;
+};
const struct mips_regnum *
mips_regnum (struct gdbarch *gdbarch)
@@ -167,14 +168,6 @@ mips_fpa0_regnum (struct gdbarch *gdbarch)
#define MIPS_FPU_TYPE (gdbarch_tdep (current_gdbarch)->mips_fpu_type)
-/* Return the currently configured (or set) saved register size. */
-
-#define MIPS_DEFAULT_SAVED_REGSIZE (gdbarch_tdep (current_gdbarch)->mips_default_saved_regsize)
-
-static const char *mips_saved_regsize_string = size_auto;
-
-#define MIPS_SAVED_REGSIZE (mips_saved_regsize())
-
/* MIPS16 function addresses are odd (bit 0 is set). Here are some
functions to test, set, or clear bit 0 of addresses. */
@@ -203,7 +196,8 @@ read_signed_register (int regnum)
{
void *buf = alloca (register_size (current_gdbarch, regnum));
deprecated_read_register_gen (regnum, buf);
- return (extract_signed_integer (buf, register_size (current_gdbarch, regnum)));
+ return (extract_signed_integer
+ (buf, register_size (current_gdbarch, regnum)));
}
static LONGEST
@@ -240,14 +234,18 @@ mips_regsize (struct gdbarch *gdbarch)
/ gdbarch_bfd_arch_info (gdbarch)->bits_per_byte);
}
+/* Return the currently configured (or set) saved register size. */
+
+static const char *mips_saved_regsize_string = size_auto;
+
static unsigned int
-mips_saved_regsize (void)
+mips_saved_regsize (struct gdbarch_tdep *tdep)
{
if (mips_saved_regsize_string == size_auto)
- return MIPS_DEFAULT_SAVED_REGSIZE;
+ return tdep->mips_default_saved_regsize;
else if (mips_saved_regsize_string == size_64)
return 8;
- else /* if (mips_saved_regsize_string == size_32) */
+ else /* if (mips_saved_regsize_string == size_32) */
return 4;
}
@@ -262,14 +260,14 @@ mips_saved_regsize (void)
MSYMBOL_IS_SPECIAL tests the "special" bit in a minimal symbol */
static void
-mips_elf_make_msymbol_special (asymbol *sym, struct minimal_symbol *msym)
-{
- if (((elf_symbol_type *)(sym))->internal_elf_sym.st_other == STO_MIPS16)
- {
- MSYMBOL_INFO (msym) = (char *)
- (((long) MSYMBOL_INFO (msym)) | 0x80000000);
- SYMBOL_VALUE_ADDRESS (msym) |= 1;
- }
+mips_elf_make_msymbol_special (asymbol * sym, struct minimal_symbol *msym)
+{
+ if (((elf_symbol_type *) (sym))->internal_elf_sym.st_other == STO_MIPS16)
+ {
+ MSYMBOL_INFO (msym) = (char *)
+ (((long) MSYMBOL_INFO (msym)) | 0x80000000);
+ SYMBOL_VALUE_ADDRESS (msym) |= 1;
+ }
}
static int
@@ -285,8 +283,8 @@ msymbol_is_special (struct minimal_symbol *msym)
static void
mips_xfer_register (struct regcache *regcache, int reg_num, int length,
- enum bfd_endian endian, bfd_byte *in, const bfd_byte *out,
- int buf_offset)
+ enum bfd_endian endian, bfd_byte * in,
+ const bfd_byte * out, int buf_offset)
{
bfd_byte reg[MAX_REGISTER_SIZE];
int reg_offset = 0;
@@ -301,7 +299,7 @@ mips_xfer_register (struct regcache *regcache, int reg_num, int length,
case BFD_ENDIAN_LITTLE:
reg_offset = 0;
break;
- case BFD_ENDIAN_UNKNOWN: /* Indicates no alignment. */
+ case BFD_ENDIAN_UNKNOWN: /* Indicates no alignment. */
reg_offset = 0;
break;
default:
@@ -319,9 +317,11 @@ mips_xfer_register (struct regcache *regcache, int reg_num, int length,
fprintf_unfiltered (gdb_stdlog, "%02x", out[buf_offset + i]);
}
if (in != NULL)
- regcache_cooked_read_part (regcache, reg_num, reg_offset, length, in + buf_offset);
+ regcache_cooked_read_part (regcache, reg_num, reg_offset, length,
+ in + buf_offset);
if (out != NULL)
- regcache_cooked_write_part (regcache, reg_num, reg_offset, length, out + buf_offset);
+ regcache_cooked_write_part (regcache, reg_num, reg_offset, length,
+ out + buf_offset);
if (mips_debug && in != NULL)
{
int i;
@@ -342,7 +342,8 @@ mips2_fp_compat (void)
{
/* MIPS1 and MIPS2 have only 32 bit FPRs, and the FR bit is not
meaningful. */
- if (register_size (current_gdbarch, mips_regnum (current_gdbarch)->fp0) == 4)
+ if (register_size (current_gdbarch, mips_regnum (current_gdbarch)->fp0) ==
+ 4)
return 0;
#if 0
@@ -367,25 +368,19 @@ mips2_fp_compat (void)
different to MIPS_SAVED_REGSIZE as it determines the alignment of
data allocated after the registers have run out. */
-#define MIPS_DEFAULT_STACK_ARGSIZE (gdbarch_tdep (current_gdbarch)->mips_default_stack_argsize)
-
-#define MIPS_STACK_ARGSIZE (mips_stack_argsize ())
-
static const char *mips_stack_argsize_string = size_auto;
static unsigned int
-mips_stack_argsize (void)
+mips_stack_argsize (struct gdbarch_tdep *tdep)
{
if (mips_stack_argsize_string == size_auto)
- return MIPS_DEFAULT_STACK_ARGSIZE;
+ return tdep->mips_default_stack_argsize;
else if (mips_stack_argsize_string == size_64)
return 8;
- else /* if (mips_stack_argsize_string == size_32) */
+ else /* if (mips_stack_argsize_string == size_32) */
return 4;
}
-#define MIPS_DEFAULT_MASK_ADDRESS_P (gdbarch_tdep (current_gdbarch)->default_mask_address_p)
-
#define VM_MIN_ADDRESS (CORE_ADDR)0x400000
static mips_extra_func_info_t heuristic_proc_desc (CORE_ADDR, CORE_ADDR,
@@ -416,54 +411,55 @@ static struct cmd_list_element *showmipscmdlist = NULL;
mips_register_name(). Processor specific registers 32 and above
are listed in the followign tables. */
-enum { NUM_MIPS_PROCESSOR_REGS = (90 - 32) };
+enum
+{ NUM_MIPS_PROCESSOR_REGS = (90 - 32) };
/* Generic MIPS. */
static const char *mips_generic_reg_names[NUM_MIPS_PROCESSOR_REGS] = {
- "sr", "lo", "hi", "bad", "cause","pc",
- "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",
- "fsr", "fir", ""/*"fp"*/, "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
+ "sr", "lo", "hi", "bad", "cause", "pc",
+ "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",
+ "fsr", "fir", "" /*"fp" */ , "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
};
/* Names of IDT R3041 registers. */
static const char *mips_r3041_reg_names[] = {
- "sr", "lo", "hi", "bad", "cause","pc",
- "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",
- "fsr", "fir", "",/*"fp"*/ "",
- "", "", "bus", "ccfg", "", "", "", "",
- "", "", "port", "cmp", "", "", "epc", "prid",
+ "sr", "lo", "hi", "bad", "cause", "pc",
+ "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",
+ "fsr", "fir", "", /*"fp" */ "",
+ "", "", "bus", "ccfg", "", "", "", "",
+ "", "", "port", "cmp", "", "", "epc", "prid",
};
/* Names of tx39 registers. */
static const char *mips_tx39_reg_names[NUM_MIPS_PROCESSOR_REGS] = {
- "sr", "lo", "hi", "bad", "cause","pc",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "", "",
- "", "", "", "", "", "", "", "",
- "", "", "config", "cache", "debug", "depc", "epc", ""
+ "sr", "lo", "hi", "bad", "cause", "pc",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "", "",
+ "", "", "", "", "", "", "", "",
+ "", "", "config", "cache", "debug", "depc", "epc", ""
};
/* Names of IRIX registers. */
static const char *mips_irix_reg_names[NUM_MIPS_PROCESSOR_REGS] = {
- "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",
- "pc", "cause", "bad", "hi", "lo", "fsr", "fir"
+ "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",
+ "pc", "cause", "bad", "hi", "lo", "fsr", "fir"
};
@@ -474,18 +470,18 @@ mips_register_name (int regno)
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
/* GPR names for all ABIs other than n32/n64. */
static char *mips_gpr_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",
- "t8", "t9", "k0", "k1", "gp", "sp", "s8", "ra",
+ "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
+ "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7",
+ "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
+ "t8", "t9", "k0", "k1", "gp", "sp", "s8", "ra",
};
/* GPR names for n32 and n64 ABIs. */
static char *mips_n32_n64_gpr_names[] = {
- "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
- "a4", "a5", "a6", "a7", "t0", "t1", "t2", "t3",
- "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
- "t8", "t9", "k0", "k1", "gp", "sp", "s8", "ra"
+ "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
+ "a4", "a5", "a6", "a7", "t0", "t1", "t2", "t3",
+ "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
+ "t8", "t9", "k0", "k1", "gp", "sp", "s8", "ra"
};
enum mips_abi abi = mips_abi (current_gdbarch);
@@ -534,8 +530,7 @@ mips_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
/* FIXME: cagney/2003-04-13: Can't yet use gdbarch_num_regs
(gdbarch), as not all architectures are multi-arch. */
raw_p = rawnum < NUM_REGS;
- if (REGISTER_NAME (regnum) == NULL
- || REGISTER_NAME (regnum)[0] == '\0')
+ if (REGISTER_NAME (regnum) == NULL || REGISTER_NAME (regnum)[0] == '\0')
return 0;
if (reggroup == float_reggroup)
return float_p && pseudo;
@@ -551,7 +546,7 @@ mips_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
/* Restore the same pseudo register. */
if (reggroup == restore_reggroup)
return raw_p && pseudo;
- return 0;
+ return 0;
}
/* Map the symbol table registers which live in the range [1 *
@@ -565,8 +560,9 @@ mips_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
int rawnum = cookednum % NUM_REGS;
gdb_assert (cookednum >= NUM_REGS && cookednum < 2 * NUM_REGS);
if (register_size (gdbarch, rawnum) == register_size (gdbarch, cookednum))
- return regcache_raw_read (regcache, rawnum, buf);
- else if (register_size (gdbarch, rawnum) > register_size (gdbarch, cookednum))
+ regcache_raw_read (regcache, rawnum, buf);
+ else if (register_size (gdbarch, rawnum) >
+ register_size (gdbarch, cookednum))
{
if (gdbarch_tdep (gdbarch)->mips64_transfers_32bit_regs_p
|| TARGET_BYTE_ORDER == BFD_ENDIAN_LITTLE)
@@ -579,14 +575,16 @@ mips_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
}
static void
-mips_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
- int cookednum, const void *buf)
+mips_pseudo_register_write (struct gdbarch *gdbarch,
+ struct regcache *regcache, int cookednum,
+ const void *buf)
{
int rawnum = cookednum % NUM_REGS;
gdb_assert (cookednum >= NUM_REGS && cookednum < 2 * NUM_REGS);
if (register_size (gdbarch, rawnum) == register_size (gdbarch, cookednum))
- return regcache_raw_write (regcache, rawnum, buf);
- else if (register_size (gdbarch, rawnum) > register_size (gdbarch, cookednum))
+ regcache_raw_write (regcache, rawnum, buf);
+ else if (register_size (gdbarch, rawnum) >
+ register_size (gdbarch, cookednum))
{
if (gdbarch_tdep (gdbarch)->mips64_transfers_32bit_regs_p
|| TARGET_BYTE_ORDER == BFD_ENDIAN_LITTLE)
@@ -599,8 +597,7 @@ mips_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
}
/* Table to translate MIPS16 register field to actual register number. */
-static int mips16_to_32_reg[8] =
-{16, 17, 2, 3, 4, 5, 6, 7};
+static int mips16_to_32_reg[8] = { 16, 17, 2, 3, 4, 5, 6, 7 };
/* 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
@@ -626,10 +623,10 @@ static unsigned int heuristic_fence_post = 0;
#define SET_PROC_DESC_IS_DUMMY(proc) ((proc)->pdr.isym = _PROC_MAGIC_)
struct linked_proc_info
- {
- struct mips_extra_func_info info;
- struct linked_proc_info *next;
- }
+{
+ struct mips_extra_func_info info;
+ struct linked_proc_info *next;
+}
*linked_proc_desc_table = NULL;
/* Number of bytes of storage in the actual machine representation for
@@ -661,9 +658,9 @@ mips_convert_register_p (int regnum, struct type *type)
{
return (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
&& register_size (current_gdbarch, regnum) == 4
- && (regnum) >= mips_regnum (current_gdbarch)->fp0 && (regnum) < mips_regnum (current_gdbarch)->fp0 + 32
- && TYPE_CODE(type) == TYPE_CODE_FLT
- && TYPE_LENGTH(type) == 8);
+ && (regnum % NUM_REGS) >= mips_regnum (current_gdbarch)->fp0
+ && (regnum % NUM_REGS) < mips_regnum (current_gdbarch)->fp0 + 32
+ && TYPE_CODE (type) == TYPE_CODE_FLT && TYPE_LENGTH (type) == 8);
}
static void
@@ -711,7 +708,8 @@ mips_register_type (struct gdbarch *gdbarch, int regnum)
internal_error (__FILE__, __LINE__, "bad switch");
}
}
- else if (regnum >= (NUM_REGS + mips_regnum (current_gdbarch)->fp_control_status)
+ else if (regnum >=
+ (NUM_REGS + mips_regnum (current_gdbarch)->fp_control_status)
&& regnum <= NUM_REGS + LAST_EMBED_REGNUM)
/* The pseudo/cooked view of the embedded registers is always
32-bit. The raw view is handled below. */
@@ -742,7 +740,7 @@ mips_read_sp (void)
enum auto_boolean mask_address_var = AUTO_BOOLEAN_AUTO;
static int
-mips_mask_address_p (void)
+mips_mask_address_p (struct gdbarch_tdep *tdep)
{
switch (mask_address_var)
{
@@ -752,10 +750,9 @@ mips_mask_address_p (void)
return 0;
break;
case AUTO_BOOLEAN_AUTO:
- return MIPS_DEFAULT_MASK_ADDRESS_P;
+ return tdep->default_mask_address_p;
default:
- internal_error (__FILE__, __LINE__,
- "mips_mask_address_p: bad switch");
+ internal_error (__FILE__, __LINE__, "mips_mask_address_p: bad switch");
return -1;
}
}
@@ -763,6 +760,7 @@ mips_mask_address_p (void)
static void
show_mask_address (char *cmd, int from_tty, struct cmd_list_element *c)
{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
switch (mask_address_var)
{
case AUTO_BOOLEAN_TRUE:
@@ -772,52 +770,16 @@ show_mask_address (char *cmd, int from_tty, struct cmd_list_element *c)
printf_filtered ("The 32 bit mips address mask is disabled\n");
break;
case AUTO_BOOLEAN_AUTO:
- printf_filtered ("The 32 bit address mask is set automatically. Currently %s\n",
- mips_mask_address_p () ? "enabled" : "disabled");
+ printf_filtered
+ ("The 32 bit address mask is set automatically. Currently %s\n",
+ mips_mask_address_p (tdep) ? "enabled" : "disabled");
break;
default:
- internal_error (__FILE__, __LINE__,
- "show_mask_address: bad switch");
+ internal_error (__FILE__, __LINE__, "show_mask_address: bad switch");
break;
}
}
-/* Should call_function allocate stack space for a struct return? */
-
-static int
-mips_eabi_use_struct_convention (int gcc_p, struct type *type)
-{
- return (TYPE_LENGTH (type) > 2 * MIPS_SAVED_REGSIZE);
-}
-
-/* Should call_function pass struct by reference?
- For each architecture, structs are passed either by
- value or by reference, depending on their size. */
-
-static int
-mips_eabi_reg_struct_has_addr (int gcc_p, struct type *type)
-{
- enum type_code typecode = TYPE_CODE (check_typedef (type));
- int len = TYPE_LENGTH (check_typedef (type));
-
- if (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)
- return (len > MIPS_SAVED_REGSIZE);
-
- return 0;
-}
-
-static int
-mips_n32n64_reg_struct_has_addr (int gcc_p, struct type *type)
-{
- return 0; /* Assumption: N32/N64 never passes struct by ref. */
-}
-
-static int
-mips_o32_reg_struct_has_addr (int gcc_p, struct type *type)
-{
- return 0; /* Assumption: O32/O64 never passes struct by ref. */
-}
-
/* Tell if the program counter value in MEMADDR is in a MIPS16 function. */
static int
@@ -845,15 +807,20 @@ pc_is_mips16 (bfd_vma memaddr)
static CORE_ADDR
mips_read_pc (ptid_t ptid)
{
- return read_signed_register_pid (PC_REGNUM, ptid);
+ return read_signed_register_pid (mips_regnum (current_gdbarch)->pc, ptid);
+}
+
+static void
+mips_write_pc (CORE_ADDR pc, ptid_t ptid)
+{
+ write_register_pid (mips_regnum (current_gdbarch)->pc, pc, ptid);
}
/* This returns the PC of the first inst after the prologue. If we can't
find the prologue, then return 0. */
static CORE_ADDR
-after_prologue (CORE_ADDR pc,
- mips_extra_func_info_t proc_desc)
+after_prologue (CORE_ADDR pc, mips_extra_func_info_t proc_desc)
{
struct symtab_and_line sal;
CORE_ADDR func_addr, func_end;
@@ -900,7 +867,7 @@ mips32_decode_reg_save (t_inst inst, unsigned long *gen_mask,
{
int reg;
- if ((inst & 0xffe00000) == 0xafa00000 /* sw reg,n($sp) */
+ if ((inst & 0xffe00000) == 0xafa00000 /* sw reg,n($sp) */
|| (inst & 0xffe00000) == 0xafc00000 /* sw reg,n($r30) */
|| (inst & 0xffe00000) == 0xffa00000) /* sd reg,n($sp) */
{
@@ -913,7 +880,7 @@ mips32_decode_reg_save (t_inst inst, unsigned long *gen_mask,
*gen_mask |= (1 << reg);
}
else if ((inst & 0xffe00000) == 0xe7a00000 /* swc1 freg,n($sp) */
- || (inst & 0xffe00000) == 0xe7c00000 /* swc1 freg,n($r30) */
+ || (inst & 0xffe00000) == 0xe7c00000 /* swc1 freg,n($r30) */
|| (inst & 0xffe00000) == 0xf7a00000) /* sdc1 freg,n($sp) */
{
@@ -1011,7 +978,7 @@ mips32_next_pc (CORE_ADDR pc)
if ((inst & 0xe0000000) != 0) /* Not a special, jump or branch instruction */
{
if (itype_op (inst) >> 2 == 5)
- /* BEQL, BNEL, BLEZL, BGTZL: bits 0101xx */
+ /* BEQL, BNEL, BLEZL, BGTZL: bits 0101xx */
{
op = (itype_op (inst) & 0x03);
switch (op)
@@ -1029,11 +996,13 @@ mips32_next_pc (CORE_ADDR pc)
}
}
else if (itype_op (inst) == 17 && itype_rs (inst) == 8)
- /* BC1F, BC1FL, BC1T, BC1TL: 010001 01000 */
+ /* BC1F, BC1FL, BC1T, BC1TL: 010001 01000 */
{
int tf = itype_rt (inst) & 0x01;
int cnum = itype_rt (inst) >> 2;
- int fcrcs = read_signed_register (mips_regnum (current_gdbarch)->fp_control_status);
+ int fcrcs =
+ read_signed_register (mips_regnum (current_gdbarch)->
+ fp_control_status);
int cond = ((fcrcs >> 24) & 0x0e) | ((fcrcs >> 23) & 0x01);
if (((cond >> cnum) & 0x01) == tf)
@@ -1063,7 +1032,7 @@ mips32_next_pc (CORE_ADDR pc)
pc += 4;
}
- break; /* end SPECIAL */
+ break; /* end SPECIAL */
case 1: /* REGIMM */
{
op = itype_rt (inst); /* branch condition */
@@ -1083,7 +1052,6 @@ mips32_next_pc (CORE_ADDR pc)
case 3: /* BGEZL */
case 17: /* BGEZAL */
case 19: /* BGEZALL */
- greater_equal_branch:
if (read_signed_register (itype_rs (inst)) >= 0)
pc += mips32_relative_offset (inst) + 4;
else
@@ -1094,7 +1062,7 @@ mips32_next_pc (CORE_ADDR pc)
pc += 4;
}
}
- break; /* end REGIMM */
+ break; /* end REGIMM */
case 2: /* J */
case 3: /* JAL */
{
@@ -1129,7 +1097,6 @@ mips32_next_pc (CORE_ADDR pc)
pc += 8;
break;
case 6: /* BLEZ, BLEZL */
- less_zero_branch:
if (read_signed_register (itype_rs (inst) <= 0))
pc += mips32_relative_offset (inst) + 4;
else
@@ -1187,11 +1154,11 @@ enum mips16_inst_fmts
/* I am heaping all the fields of the formats into one structure and
then, only the fields which are involved in instruction extension */
struct upk_mips16
- {
- CORE_ADDR offset;
- unsigned int regx; /* Function in i8 type */
- unsigned int regy;
- };
+{
+ CORE_ADDR offset;
+ unsigned int regx; /* Function in i8 type */
+ unsigned int regy;
+};
/* The EXT-I, EXT-ri nad EXT-I8 instructions all have the same format
@@ -1231,8 +1198,7 @@ static void
unpack_mips16 (CORE_ADDR pc,
unsigned int extension,
unsigned int inst,
- enum mips16_inst_fmts insn_format,
- struct upk_mips16 *upk)
+ enum mips16_inst_fmts insn_format, struct upk_mips16 *upk)
{
CORE_ADDR offset;
int regx;
@@ -1246,7 +1212,7 @@ unpack_mips16 (CORE_ADDR pc,
{
value = extended_offset (extension);
value = value << 11; /* rom for the original value */
- value |= inst & 0x7ff; /* eleven bits from instruction */
+ value |= inst & 0x7ff; /* eleven bits from instruction */
}
else
{
@@ -1305,8 +1271,7 @@ unpack_mips16 (CORE_ADDR pc,
break;
}
default:
- internal_error (__FILE__, __LINE__,
- "bad switch");
+ internal_error (__FILE__, __LINE__, "bad switch");
}
upk->offset = offset;
upk->regx = regx;
@@ -1322,13 +1287,12 @@ add_offset_16 (CORE_ADDR pc, int offset)
static CORE_ADDR
extended_mips16_next_pc (CORE_ADDR pc,
- unsigned int extension,
- unsigned int insn)
+ unsigned int extension, unsigned int insn)
{
int op = (insn >> 11);
switch (op)
{
- case 2: /* Branch */
+ case 2: /* Branch */
{
CORE_ADDR offset;
struct upk_mips16 upk;
@@ -1342,7 +1306,7 @@ extended_mips16_next_pc (CORE_ADDR pc,
pc += (offset << 1) + 2;
break;
}
- case 3: /* JAL , JALX - Watch out, these are 32 bit instruction */
+ case 3: /* JAL , JALX - Watch out, these are 32 bit instruction */
{
struct upk_mips16 upk;
unpack_mips16 (pc, extension, insn, jalxtype, &upk);
@@ -1353,7 +1317,7 @@ extended_mips16_next_pc (CORE_ADDR pc,
pc |= 0x01;
break;
}
- case 4: /* beqz */
+ case 4: /* beqz */
{
struct upk_mips16 upk;
int reg;
@@ -1365,7 +1329,7 @@ extended_mips16_next_pc (CORE_ADDR pc,
pc += 2;
break;
}
- case 5: /* bnez */
+ case 5: /* bnez */
{
struct upk_mips16 upk;
int reg;
@@ -1377,7 +1341,7 @@ extended_mips16_next_pc (CORE_ADDR pc,
pc += 2;
break;
}
- case 12: /* I8 Formats btez btnez */
+ case 12: /* I8 Formats btez btnez */
{
struct upk_mips16 upk;
int reg;
@@ -1392,7 +1356,7 @@ extended_mips16_next_pc (CORE_ADDR pc,
pc += 2;
break;
}
- case 29: /* RR Formats JR, JALR, JALR-RA */
+ case 29: /* RR Formats JR, JALR, JALR-RA */
{
struct upk_mips16 upk;
/* upk.fmt = rrtype; */
@@ -1409,13 +1373,13 @@ extended_mips16_next_pc (CORE_ADDR pc,
break;
case 1:
reg = 31;
- break; /* Function return instruction */
+ break; /* Function return instruction */
case 2:
reg = upk.regx;
break;
default:
reg = 31;
- break; /* BOGUS Guess */
+ break; /* BOGUS Guess */
}
pc = read_signed_register (reg);
}
@@ -1481,6 +1445,7 @@ mips_find_saved_regs (struct frame_info *fci)
mips_extra_func_info_t proc_desc;
t_inst inst;
CORE_ADDR *saved_regs;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
if (deprecated_get_frame_saved_regs (fci) != NULL)
return;
@@ -1504,8 +1469,9 @@ mips_find_saved_regs (struct frame_info *fci)
{
for (ireg = 0; ireg < MIPS_NUMREGS; ireg++)
{
- CORE_ADDR reg_position = (get_frame_base (fci) + SIGFRAME_REGSAVE_OFF
- + ireg * mips_regsize (current_gdbarch));
+ CORE_ADDR reg_position =
+ (get_frame_base (fci) + SIGFRAME_REGSAVE_OFF +
+ ireg * mips_regsize (current_gdbarch));
set_reg_offset (saved_regs, ireg, reg_position);
}
for (ireg = 0; ireg < MIPS_NUMREGS; ireg++)
@@ -1513,10 +1479,13 @@ mips_find_saved_regs (struct frame_info *fci)
CORE_ADDR reg_position = (get_frame_base (fci)
+ SIGFRAME_FPREGSAVE_OFF
+ ireg * mips_regsize (current_gdbarch));
- set_reg_offset (saved_regs, mips_regnum (current_gdbarch)->fp0 + ireg, reg_position);
+ set_reg_offset (saved_regs,
+ mips_regnum (current_gdbarch)->fp0 + ireg,
+ reg_position);
}
- set_reg_offset (saved_regs, PC_REGNUM, get_frame_base (fci) + SIGFRAME_PC_OFF);
+ set_reg_offset (saved_regs, mips_regnum (current_gdbarch)->pc,
+ get_frame_base (fci) + SIGFRAME_PC_OFF);
/* SP_REGNUM, contains the value and not the address. */
set_reg_offset (saved_regs, SP_REGNUM, get_frame_base (fci));
return;
@@ -1533,25 +1502,21 @@ mips_find_saved_regs (struct frame_info *fci)
gen_mask = kernel_trap ? 0xFFFFFFFF : PROC_REG_MASK (proc_desc);
float_mask = kernel_trap ? 0xFFFFFFFF : PROC_FREG_MASK (proc_desc);
- if (/* In any frame other than the innermost or a frame interrupted
- by a signal, we assume that all registers have been saved.
- This assumes that all register saves in a function happen
- before the first function call. */
+ if ( /* In any frame other than the innermost or a frame interrupted
+ by a signal, we assume that all registers have been saved.
+ This assumes that all register saves in a function happen
+ before the first function call. */
(get_next_frame (fci) == NULL
|| (get_frame_type (get_next_frame (fci)) == SIGTRAMP_FRAME))
-
/* In a dummy frame we know exactly where things are saved. */
&& !PROC_DESC_IS_DUMMY (proc_desc)
-
/* Don't bother unless we are inside a function prologue.
- Outside the prologue, we know where everything is. */
-
+ Outside the prologue, we know where everything is. */
&& in_prologue (get_frame_pc (fci), PROC_LOW_ADDR (proc_desc))
-
/* Not sure exactly what kernel_trap means, but if it means the
- kernel saves the registers without a prologue doing it, we
- better not examine the prologue to see whether registers
- have been saved yet. */
+ kernel saves the registers without a prologue doing it, we
+ better not examine the prologue to see whether registers
+ have been saved yet. */
&& !kernel_trap)
{
/* We need to figure out whether the registers that the
@@ -1592,7 +1557,7 @@ mips_find_saved_regs (struct frame_info *fci)
if (gen_mask & 0x80000000)
{
set_reg_offset (saved_regs, ireg, reg_position);
- reg_position -= MIPS_SAVED_REGSIZE;
+ reg_position -= mips_saved_regsize (tdep);
}
}
@@ -1613,14 +1578,14 @@ mips_find_saved_regs (struct frame_info *fci)
CORE_ADDR reg_position = (get_frame_base (fci)
+ PROC_REG_OFFSET (proc_desc));
if (inst & 0x20)
- reg_position -= MIPS_SAVED_REGSIZE;
+ reg_position -= mips_saved_regsize (tdep);
/* Check if the s0 and s1 registers were pushed on the
- stack. */
+ stack. */
for (reg = 16; reg < sreg_count + 16; reg++)
{
set_reg_offset (saved_regs, reg, reg_position);
- reg_position -= MIPS_SAVED_REGSIZE;
+ reg_position -= mips_saved_regsize (tdep);
}
}
}
@@ -1636,43 +1601,49 @@ mips_find_saved_regs (struct frame_info *fci)
for (ireg = MIPS_NUMREGS - 1; float_mask; --ireg, float_mask <<= 1)
if (float_mask & 0x80000000)
{
- if (MIPS_SAVED_REGSIZE == 4 && TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+ if (mips_saved_regsize (tdep) == 4
+ && TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
/* On a big endian 32 bit ABI, floating point registers
- are paired to form doubles such that the most
- significant part is in $f[N+1] and the least
- significant in $f[N] vis: $f[N+1] ||| $f[N]. The
- registers are also spilled as a pair and stored as a
- double.
+ are paired to form doubles such that the most
+ significant part is in $f[N+1] and the least
+ significant in $f[N] vis: $f[N+1] ||| $f[N]. The
+ registers are also spilled as a pair and stored as a
+ double.
When little-endian the least significant part is
stored first leading to the memory order $f[N] and
then $f[N+1].
- Unfortunately, when big-endian the most significant
- part of the double is stored first, and the least
- significant is stored second. This leads to the
- registers being ordered in memory as firt $f[N+1] and
- then $f[N].
-
- For the big-endian case make certain that the
- addresses point at the correct (swapped) locations
- $f[N] and $f[N+1] pair (keep in mind that
- reg_position is decremented each time through the
- loop). */
+ Unfortunately, when big-endian the most significant
+ part of the double is stored first, and the least
+ significant is stored second. This leads to the
+ registers being ordered in memory as firt $f[N+1] and
+ then $f[N].
+
+ For the big-endian case make certain that the
+ addresses point at the correct (swapped) locations
+ $f[N] and $f[N+1] pair (keep in mind that
+ reg_position is decremented each time through the
+ loop). */
if ((ireg & 1))
- set_reg_offset (saved_regs, mips_regnum (current_gdbarch)->fp0 + ireg,
- reg_position - MIPS_SAVED_REGSIZE);
+ set_reg_offset (saved_regs,
+ mips_regnum (current_gdbarch)->fp0 + ireg,
+ reg_position - mips_saved_regsize (tdep));
else
- set_reg_offset (saved_regs, mips_regnum (current_gdbarch)->fp0 + ireg,
- reg_position + MIPS_SAVED_REGSIZE);
+ set_reg_offset (saved_regs,
+ mips_regnum (current_gdbarch)->fp0 + ireg,
+ reg_position + mips_saved_regsize (tdep));
}
else
- set_reg_offset (saved_regs, mips_regnum (current_gdbarch)->fp0 + ireg, reg_position);
- reg_position -= MIPS_SAVED_REGSIZE;
+ set_reg_offset (saved_regs,
+ mips_regnum (current_gdbarch)->fp0 + ireg,
+ reg_position);
+ reg_position -= mips_saved_regsize (tdep);
}
- set_reg_offset (saved_regs, PC_REGNUM, saved_regs[RA_REGNUM]);
+ set_reg_offset (saved_regs, mips_regnum (current_gdbarch)->pc,
+ saved_regs[RA_REGNUM]);
}
/* SP_REGNUM, contains the value and not the address. */
@@ -1706,8 +1677,8 @@ read_next_frame_reg (struct frame_info *fi, int regno)
static CORE_ADDR
mips_addr_bits_remove (CORE_ADDR addr)
{
- if (mips_mask_address_p ()
- && (((ULONGEST) addr) >> 32 == 0xffffffffUL))
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ if (mips_mask_address_p (tdep) && (((ULONGEST) addr) >> 32 == 0xffffffffUL))
/* This hack is a work-around for existing boards using PMON, the
simulator, and any other 64-bit targets that doesn't have true
64-bit addressing. On these targets, the upper 32 bits of
@@ -1746,7 +1717,7 @@ mips_software_single_step (enum target_signal sig, int insert_breakpoints_p)
if (insert_breakpoints_p)
{
- pc = read_register (PC_REGNUM);
+ pc = read_register (mips_regnum (current_gdbarch)->pc);
next_pc = mips_next_pc (pc);
target_insert_breakpoint (next_pc, break_mem);
@@ -1763,8 +1734,7 @@ mips_init_frame_pc_first (int fromleaf, struct frame_info *prev)
pc = ((fromleaf)
? DEPRECATED_SAVED_PC_AFTER_CALL (get_next_frame (prev))
: get_next_frame (prev)
- ? DEPRECATED_FRAME_SAVED_PC (get_next_frame (prev))
- : read_pc ());
+ ? DEPRECATED_FRAME_SAVED_PC (get_next_frame (prev)) : read_pc ());
tmp = SKIP_TRAMPOLINE_CODE (pc);
return tmp ? tmp : pc;
}
@@ -1774,23 +1744,27 @@ static CORE_ADDR
mips_frame_saved_pc (struct frame_info *frame)
{
CORE_ADDR saved_pc;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), 0, 0))
{
/* Always unwind the cooked PC register value. */
- saved_pc = frame_unwind_register_signed (frame, NUM_REGS + PC_REGNUM);
+ saved_pc = frame_unwind_register_signed (frame, NUM_REGS + mips_regnum (current_gdbarch)->pc);
}
else
{
mips_extra_func_info_t proc_desc
= get_frame_extra_info (frame)->proc_desc;
if (proc_desc && PROC_DESC_IS_DUMMY (proc_desc))
- saved_pc = read_memory_integer (get_frame_base (frame) - MIPS_SAVED_REGSIZE, MIPS_SAVED_REGSIZE);
+ saved_pc = read_memory_integer ((get_frame_base (frame)
+ - mips_saved_regsize (tdep)),
+ mips_saved_regsize (tdep));
else
{
/* We have to get the saved pc from the sigcontext if it is
a signal handler frame. */
- int pcreg = (get_frame_type (frame) == SIGTRAMP_FRAME ? PC_REGNUM
+ int pcreg = (get_frame_type (frame) == SIGTRAMP_FRAME
+ ? mips_regnum (current_gdbarch)->pc
: proc_desc ? PROC_PC_REG (proc_desc) : RA_REGNUM);
saved_pc = read_next_frame_reg (frame, NUM_REGS + pcreg);
}
@@ -1866,8 +1840,7 @@ heuristic_proc_start (CORE_ADDR pc)
if (start_pc == 0)
return 0;
- if (heuristic_fence_post == UINT_MAX
- || fence < VM_MIN_ADDRESS)
+ if (heuristic_fence_post == UINT_MAX || fence < VM_MIN_ADDRESS)
fence = VM_MIN_ADDRESS;
instlen = pc_is_mips16 (pc) ? MIPS16_INSTLEN : MIPS_INSTLEN;
@@ -1884,8 +1857,9 @@ heuristic_proc_start (CORE_ADDR pc)
{
static int blurb_printed = 0;
- warning ("Warning: GDB can't find the start of the function at 0x%s.",
- paddr_nz (pc));
+ warning
+ ("Warning: GDB can't find the start of the function at 0x%s.",
+ paddr_nz (pc));
if (!blurb_printed)
{
@@ -1905,8 +1879,7 @@ stack pointer.\n\
However, if you think GDB should simply search farther back\n\
from 0x%s for code which looks like the beginning of a\n\
function, you can increase the range of the search using the `set\n\
-heuristic-fence-post' command.\n",
- paddr_nz (pc), paddr_nz (pc));
+heuristic-fence-post' command.\n", paddr_nz (pc), paddr_nz (pc));
blurb_printed = 1;
}
}
@@ -1952,9 +1925,9 @@ heuristic-fence-post' command.\n",
static int
mips16_get_imm (unsigned short prev_inst, /* previous instruction */
unsigned short inst, /* current instruction */
- int nbits, /* number of bits in imm field */
- int scale, /* scale factor to be applied to imm */
- int is_signed) /* is the imm field signed? */
+ int nbits, /* number of bits in imm field */
+ int scale, /* scale factor to be applied to imm */
+ int is_signed) /* is the imm field signed? */
{
int offset;
@@ -1992,6 +1965,7 @@ mips16_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc,
unsigned inst = 0; /* current instruction */
unsigned entry_inst = 0; /* the entry instruction */
int reg, offset;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
PROC_FRAME_OFFSET (&temp_proc_desc) = 0; /* size of stack frame */
PROC_FRAME_ADJUST (&temp_proc_desc) = 0; /* offset of FP from SP */
@@ -2005,7 +1979,7 @@ mips16_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc,
/* Fetch and decode the instruction. */
inst = (unsigned short) mips_fetch_instruction (cur_pc);
if ((inst & 0xff00) == 0x6300 /* addiu sp */
- || (inst & 0xff00) == 0xfb00) /* daddiu sp */
+ || (inst & 0xff00) == 0xfb00) /* daddiu sp */
{
offset = mips16_get_imm (prev_inst, inst, 8, 8, 1);
if (offset < 0) /* negative stack adjustment? */
@@ -2097,7 +2071,7 @@ mips16_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc,
{
PROC_REG_MASK (&temp_proc_desc) |= 1 << reg;
set_reg_offset (temp_saved_regs, reg, sp + offset);
- offset += MIPS_SAVED_REGSIZE;
+ offset += mips_saved_regsize (tdep);
}
/* Check if the ra register was pushed on the stack. */
@@ -2106,7 +2080,7 @@ mips16_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc,
{
PROC_REG_MASK (&temp_proc_desc) |= 1 << RA_REGNUM;
set_reg_offset (temp_saved_regs, RA_REGNUM, sp + offset);
- offset -= MIPS_SAVED_REGSIZE;
+ offset -= mips_saved_regsize (tdep);
}
/* Check if the s0 and s1 registers were pushed on the stack. */
@@ -2114,7 +2088,7 @@ mips16_heuristic_proc_desc (CORE_ADDR start_pc, CORE_ADDR limit_pc,
{
PROC_REG_MASK (&temp_proc_desc) |= 1 << reg;
set_reg_offset (temp_saved_regs, reg, sp + offset);
- offset -= MIPS_SAVED_REGSIZE;
+ offset -= mips_saved_regsize (tdep);
}
}
}
@@ -2166,7 +2140,8 @@ restart:
but the register size used is only 32 bits. Make the address
for the saved register point to the lower 32 bits. */
PROC_REG_MASK (&temp_proc_desc) |= 1 << reg;
- set_reg_offset (temp_saved_regs, reg, sp + low_word + 8 - mips_regsize (current_gdbarch));
+ set_reg_offset (temp_saved_regs, reg,
+ sp + low_word + 8 - mips_regsize (current_gdbarch));
}
else if (high_word == 0x27be) /* addiu $30,$sp,size */
{
@@ -2299,7 +2274,7 @@ non_heuristic_proc_desc (CORE_ADDR pc, CORE_ADDR *addrptr)
priv = (struct mips_objfile_private *) sec->objfile->obj_private;
/* Search the ".pdr" section generated by GAS. This includes most of
- the information normally found in ECOFF PDRs. */
+ the information normally found in ECOFF PDRs. */
the_bfd = sec->objfile->obfd;
if (priv == NULL
@@ -2311,7 +2286,7 @@ non_heuristic_proc_desc (CORE_ADDR pc, CORE_ADDR *addrptr)
This means that we should not bother with this method on 64-bit
targets (until that is fixed). */
- priv = obstack_alloc (& sec->objfile->psymbol_obstack,
+ priv = obstack_alloc (&sec->objfile->psymbol_obstack,
sizeof (struct mips_objfile_private));
priv->size = 0;
sec->objfile->obj_private = priv;
@@ -2320,23 +2295,24 @@ non_heuristic_proc_desc (CORE_ADDR pc, CORE_ADDR *addrptr)
{
asection *bfdsec;
- priv = obstack_alloc (& sec->objfile->psymbol_obstack,
+ priv = obstack_alloc (&sec->objfile->psymbol_obstack,
sizeof (struct mips_objfile_private));
bfdsec = bfd_get_section_by_name (sec->objfile->obfd, ".pdr");
if (bfdsec != NULL)
{
priv->size = bfd_section_size (sec->objfile->obfd, bfdsec);
- priv->contents = obstack_alloc (& sec->objfile->psymbol_obstack,
+ priv->contents = obstack_alloc (&sec->objfile->psymbol_obstack,
priv->size);
bfd_get_section_contents (sec->objfile->obfd, bfdsec,
priv->contents, 0, priv->size);
/* In general, the .pdr section is sorted. However, in the
- presence of multiple code sections (and other corner cases)
- it can become unsorted. Sort it so that we can use a faster
- binary search. */
- qsort (priv->contents, priv->size / 32, 32, compare_pdr_entries);
+ presence of multiple code sections (and other corner cases)
+ it can become unsorted. Sort it so that we can use a faster
+ binary search. */
+ qsort (priv->contents, priv->size / 32, 32,
+ compare_pdr_entries);
}
else
priv->size = 0;
@@ -2413,8 +2389,8 @@ non_heuristic_proc_desc (CORE_ADDR pc, CORE_ADDR *addrptr)
if (startaddr > BLOCK_START (b))
{
/* This is the "pathological" case referred to in a comment in
- print_frame_info. It might be better to move this check into
- symbol reading. */
+ print_frame_info. It might be better to move this check into
+ symbol reading. */
return NULL;
}
@@ -2460,8 +2436,7 @@ find_proc_desc (CORE_ADDR pc, struct frame_info *next_frame, int cur_frame)
if (proc_symbol)
{
val = find_pc_line (BLOCK_START
- (SYMBOL_BLOCK_VALUE (proc_symbol)),
- 0);
+ (SYMBOL_BLOCK_VALUE (proc_symbol)), 0);
val.pc = val.end ? val.end : pc;
}
if (!proc_symbol || pc < val.pc)
@@ -2491,19 +2466,16 @@ find_proc_desc (CORE_ADDR pc, struct frame_info *next_frame, int cur_frame)
if (startaddr == 0)
startaddr = heuristic_proc_start (pc);
- proc_desc =
- heuristic_proc_desc (startaddr, pc, next_frame, cur_frame);
+ proc_desc = heuristic_proc_desc (startaddr, pc, next_frame, cur_frame);
}
return proc_desc;
}
static CORE_ADDR
-get_frame_pointer (struct frame_info *frame,
- mips_extra_func_info_t proc_desc)
+get_frame_pointer (struct frame_info *frame, mips_extra_func_info_t proc_desc)
{
return (read_next_frame_reg (frame, NUM_REGS + PROC_FRAME_REG (proc_desc))
- + PROC_FRAME_OFFSET (proc_desc)
- - PROC_FRAME_ADJUST (proc_desc));
+ + PROC_FRAME_OFFSET (proc_desc) - PROC_FRAME_ADJUST (proc_desc));
}
static mips_extra_func_info_t cached_proc_desc;
@@ -2541,7 +2513,7 @@ mips_frame_chain (struct frame_info *frame)
if (PROC_FRAME_REG (proc_desc) == SP_REGNUM
&& PROC_FRAME_OFFSET (proc_desc) == 0
/* The previous frame from a sigtramp frame might be frameless
- and have frame size zero. */
+ and have frame size zero. */
&& !(get_frame_type (frame) == SIGTRAMP_FRAME)
/* For a generic dummy frame, let get_frame_pointer() unwind a
register value saved as part of the dummy frame call. */
@@ -2568,7 +2540,7 @@ mips_init_extra_frame_info (int fromleaf, struct frame_info *fci)
get_next_frame (fci)
? cached_proc_desc
: find_proc_desc (get_frame_pc (fci),
- NULL /* i.e, get_next_frame (fci) */,
+ NULL /* i.e, get_next_frame (fci) */ ,
1);
frame_extra_info_zalloc (fci, sizeof (struct frame_extra_info));
@@ -2583,17 +2555,24 @@ mips_init_extra_frame_info (int fromleaf, struct frame_info *fci)
interrupted by a signal at it's very start. */
if (get_frame_pc (fci) == PROC_LOW_ADDR (proc_desc)
&& !PROC_DESC_IS_DUMMY (proc_desc))
- deprecated_update_frame_base_hack (fci, read_next_frame_reg (get_next_frame (fci), NUM_REGS + SP_REGNUM));
+ deprecated_update_frame_base_hack (fci,
+ read_next_frame_reg (get_next_frame
+ (fci),
+ NUM_REGS +
+ SP_REGNUM));
else if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (fci), 0, 0))
/* Do not ``fix'' fci->frame. It will have the value of the
- generic dummy frame's top-of-stack (since the draft
- fci->frame is obtained by returning the unwound stack
- pointer) and that is what we want. That way the fci->frame
- value will match the top-of-stack value that was saved as
- part of the dummy frames data. */
- /* Do nothing. */;
+ generic dummy frame's top-of-stack (since the draft
+ fci->frame is obtained by returning the unwound stack
+ pointer) and that is what we want. That way the fci->frame
+ value will match the top-of-stack value that was saved as
+ part of the dummy frames data. */
+ /* Do nothing. */ ;
else
- deprecated_update_frame_base_hack (fci, get_frame_pointer (get_next_frame (fci), proc_desc));
+ deprecated_update_frame_base_hack (fci,
+ get_frame_pointer (get_next_frame
+ (fci),
+ proc_desc));
if (proc_desc == &temp_proc_desc)
{
@@ -2604,8 +2583,8 @@ mips_init_extra_frame_info (int fromleaf, struct frame_info *fci)
use (get_frame_type (fci) == SIGTRAMP_FRAME), it is not
yet set. */
/* FIXME: cagney/2002-11-18: This problem will go away once
- frame.c:get_prev_frame() is modified to set the frame's
- type before calling functions like this. */
+ frame.c:get_prev_frame() is modified to set the frame's
+ type before calling functions like this. */
find_pc_partial_function (get_frame_pc (fci), &name,
(CORE_ADDR *) NULL, (CORE_ADDR *) NULL);
if (!PC_IN_SIGTRAMP (get_frame_pc (fci), name))
@@ -2619,7 +2598,7 @@ mips_init_extra_frame_info (int fromleaf, struct frame_info *fci)
may be found. */
set_reg_offset (temp_saved_regs, SP_REGNUM,
get_frame_base (fci));
- set_reg_offset (temp_saved_regs, PC_REGNUM,
+ set_reg_offset (temp_saved_regs, mips_regnum (current_gdbarch)->pc,
temp_saved_regs[RA_REGNUM]);
memcpy (deprecated_get_frame_saved_regs (fci), temp_saved_regs,
SIZEOF_FRAME_SAVED_REGS);
@@ -2675,7 +2654,8 @@ fp_register_arg_p (enum type_code typecode, struct type *arg_type)
{
return ((typecode == TYPE_CODE_FLT
|| (MIPS_EABI
- && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)
+ && (typecode == TYPE_CODE_STRUCT
+ || typecode == TYPE_CODE_UNION)
&& TYPE_NFIELDS (arg_type) == 1
&& TYPE_CODE (TYPE_FIELD_TYPE (arg_type, 0)) == TYPE_CODE_FLT))
&& MIPS_FPU_TYPE != MIPS_FPU_NONE);
@@ -2718,17 +2698,157 @@ mips_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
return align_down (addr, 16);
}
+/* Determine how a return value is stored within the MIPS register
+ file, given the return type `valtype'. */
+
+struct return_value_word
+{
+ int len;
+ int reg;
+ int reg_offset;
+ int buf_offset;
+};
+
+static void
+return_value_location (struct type *valtype,
+ struct return_value_word *hi,
+ struct return_value_word *lo)
+{
+ int len = TYPE_LENGTH (valtype);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+
+ if (TYPE_CODE (valtype) == TYPE_CODE_FLT
+ && ((MIPS_FPU_TYPE == MIPS_FPU_DOUBLE && (len == 4 || len == 8))
+ || (MIPS_FPU_TYPE == MIPS_FPU_SINGLE && len == 4)))
+ {
+ if (!FP_REGISTER_DOUBLE && len == 8)
+ {
+ /* We need to break a 64bit float in two 32 bit halves and
+ spread them across a floating-point register pair. */
+ lo->buf_offset = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? 4 : 0;
+ hi->buf_offset = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? 0 : 4;
+ lo->reg_offset = ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
+ && register_size (current_gdbarch,
+ mips_regnum (current_gdbarch)->
+ fp0) == 8) ? 4 : 0);
+ hi->reg_offset = lo->reg_offset;
+ lo->reg = mips_regnum (current_gdbarch)->fp0 + 0;
+ hi->reg = mips_regnum (current_gdbarch)->fp0 + 1;
+ lo->len = 4;
+ hi->len = 4;
+ }
+ else
+ {
+ /* The floating point value fits in a single floating-point
+ register. */
+ lo->reg_offset = ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
+ && register_size (current_gdbarch,
+ mips_regnum (current_gdbarch)->
+ fp0) == 8
+ && len == 4) ? 4 : 0);
+ lo->reg = mips_regnum (current_gdbarch)->fp0;
+ lo->len = len;
+ lo->buf_offset = 0;
+ hi->len = 0;
+ hi->reg_offset = 0;
+ hi->buf_offset = 0;
+ hi->reg = 0;
+ }
+ }
+ else
+ {
+ /* Locate a result possibly spread across two registers. */
+ int regnum = 2;
+ lo->reg = regnum + 0;
+ hi->reg = regnum + 1;
+ if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
+ && len < mips_saved_regsize (tdep))
+ {
+ /* "un-left-justify" the value in the low register */
+ lo->reg_offset = mips_saved_regsize (tdep) - len;
+ lo->len = len;
+ hi->reg_offset = 0;
+ hi->len = 0;
+ }
+ else if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG && len > mips_saved_regsize (tdep) /* odd-size structs */
+ && len < mips_saved_regsize (tdep) * 2
+ && (TYPE_CODE (valtype) == TYPE_CODE_STRUCT ||
+ TYPE_CODE (valtype) == TYPE_CODE_UNION))
+ {
+ /* "un-left-justify" the value spread across two registers. */
+ lo->reg_offset = 2 * mips_saved_regsize (tdep) - len;
+ lo->len = mips_saved_regsize (tdep) - lo->reg_offset;
+ hi->reg_offset = 0;
+ hi->len = len - lo->len;
+ }
+ else
+ {
+ /* Only perform a partial copy of the second register. */
+ lo->reg_offset = 0;
+ hi->reg_offset = 0;
+ if (len > mips_saved_regsize (tdep))
+ {
+ lo->len = mips_saved_regsize (tdep);
+ hi->len = len - mips_saved_regsize (tdep);
+ }
+ else
+ {
+ lo->len = len;
+ hi->len = 0;
+ }
+ }
+ if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
+ && register_size (current_gdbarch, regnum) == 8
+ && mips_saved_regsize (tdep) == 4)
+ {
+ /* Account for the fact that only the least-signficant part
+ of the register is being used */
+ lo->reg_offset += 4;
+ hi->reg_offset += 4;
+ }
+ lo->buf_offset = 0;
+ hi->buf_offset = lo->len;
+ }
+}
+
+/* Should call_function allocate stack space for a struct return? */
+
+static int
+mips_eabi_use_struct_convention (int gcc_p, struct type *type)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ return (TYPE_LENGTH (type) > 2 * mips_saved_regsize (tdep));
+}
+
+/* Should call_function pass struct by reference?
+ For each architecture, structs are passed either by
+ value or by reference, depending on their size. */
+
+static int
+mips_eabi_reg_struct_has_addr (int gcc_p, struct type *type)
+{
+ enum type_code typecode = TYPE_CODE (check_typedef (type));
+ int len = TYPE_LENGTH (check_typedef (type));
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+
+ if (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)
+ return (len > mips_saved_regsize (tdep));
+
+ return 0;
+}
+
static CORE_ADDR
mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
- struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
- struct value **args, CORE_ADDR sp, int struct_return,
- CORE_ADDR struct_addr)
+ struct regcache *regcache, CORE_ADDR bp_addr,
+ int nargs, struct value **args, CORE_ADDR sp,
+ int struct_return, CORE_ADDR struct_addr)
{
int argreg;
int float_argreg;
int argnum;
int len = 0;
int stack_offset = 0;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
/* For shared libraries, "t9" needs to point at the function
address. */
@@ -2751,12 +2871,12 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
than necessary for EABI, because the first few arguments are
passed in registers, but that's OK. */
for (argnum = 0; argnum < nargs; argnum++)
- len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])),
- MIPS_STACK_ARGSIZE);
+ len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])),
+ mips_stack_argsize (tdep));
sp -= align_up (len, 16);
if (mips_debug)
- fprintf_unfiltered (gdb_stdlog,
+ fprintf_unfiltered (gdb_stdlog,
"mips_eabi_push_dummy_call: sp=0x%s allocated %ld\n",
paddr_nz (sp), (long) align_up (len, 16));
@@ -2793,12 +2913,13 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
/* The EABI passes structures that do not fit in a register by
reference. */
- if (len > MIPS_SAVED_REGSIZE
+ if (len > mips_saved_regsize (tdep)
&& (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION))
{
- store_unsigned_integer (valbuf, MIPS_SAVED_REGSIZE, VALUE_ADDRESS (arg));
+ store_unsigned_integer (valbuf, mips_saved_regsize (tdep),
+ VALUE_ADDRESS (arg));
typecode = TYPE_CODE_PTR;
- len = MIPS_SAVED_REGSIZE;
+ len = mips_saved_regsize (tdep);
val = valbuf;
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " push");
@@ -2811,8 +2932,7 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
up before the check to see if there are any FP registers
left. Non MIPS_EABI targets also pass the FP in the integer
registers so also round up normal registers. */
- if (!FP_REGISTER_DOUBLE
- && fp_register_arg_p (typecode, arg_type))
+ if (!FP_REGISTER_DOUBLE && fp_register_arg_p (typecode, arg_type))
{
if ((float_argreg & 1))
float_argreg++;
@@ -2857,7 +2977,7 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
/* This is a floating point value that fits entirely
in a single register. */
/* On 32 bit ABI's the float_argreg is further adjusted
- above to ensure that it is even register aligned. */
+ above to ensure that it is even register aligned. */
LONGEST regval = extract_unsigned_integer (val, len);
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " - fpreg=%d val=%s",
@@ -2875,17 +2995,17 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
in registers where gcc sometimes puts them on the stack.
For maximum compatibility, we will put them in both
places. */
- int odd_sized_struct = ((len > MIPS_SAVED_REGSIZE) &&
- (len % MIPS_SAVED_REGSIZE != 0));
+ int odd_sized_struct = ((len > mips_saved_regsize (tdep))
+ && (len % mips_saved_regsize (tdep) != 0));
/* Note: Floating-point values that didn't fit into an FP
- register are only written to memory. */
+ register are only written to memory. */
while (len > 0)
{
/* Remember if the argument was written to the stack. */
int stack_used_p = 0;
- int partial_len =
- len < MIPS_SAVED_REGSIZE ? len : MIPS_SAVED_REGSIZE;
+ int partial_len = (len < mips_saved_regsize (tdep)
+ ? len : mips_saved_regsize (tdep));
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " -- partial=%d",
@@ -2903,15 +3023,16 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
stack_used_p = 1;
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
- if (MIPS_STACK_ARGSIZE == 8 &&
- (typecode == TYPE_CODE_INT ||
- typecode == TYPE_CODE_PTR ||
- typecode == TYPE_CODE_FLT) && len <= 4)
- longword_offset = MIPS_STACK_ARGSIZE - len;
- else if ((typecode == TYPE_CODE_STRUCT ||
- typecode == TYPE_CODE_UNION) &&
- TYPE_LENGTH (arg_type) < MIPS_STACK_ARGSIZE)
- longword_offset = MIPS_STACK_ARGSIZE - len;
+ if (mips_stack_argsize (tdep) == 8
+ && (typecode == TYPE_CODE_INT
+ || typecode == TYPE_CODE_PTR
+ || typecode == TYPE_CODE_FLT) && len <= 4)
+ longword_offset = mips_stack_argsize (tdep) - len;
+ else if ((typecode == TYPE_CODE_STRUCT
+ || typecode == TYPE_CODE_UNION)
+ && (TYPE_LENGTH (arg_type)
+ < mips_stack_argsize (tdep)))
+ longword_offset = mips_stack_argsize (tdep) - len;
}
if (mips_debug)
@@ -2927,11 +3048,11 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
if (mips_debug)
{
int i;
- fprintf_unfiltered (gdb_stdlog, " @0x%s ",
+ fprintf_unfiltered (gdb_stdlog, " @0x%s ",
paddr_nz (addr));
for (i = 0; i < partial_len; i++)
{
- fprintf_unfiltered (gdb_stdlog, "%02x",
+ fprintf_unfiltered (gdb_stdlog, "%02x",
val[i] & 0xff);
}
}
@@ -2942,16 +3063,18 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
structs may go thru BOTH paths. Floating point
arguments will not. */
/* Write this portion of the argument to a general
- purpose register. */
+ purpose register. */
if (argreg <= MIPS_LAST_ARG_REGNUM
&& !fp_register_arg_p (typecode, arg_type))
{
- LONGEST regval = extract_unsigned_integer (val, partial_len);
+ LONGEST regval =
+ extract_unsigned_integer (val, partial_len);
if (mips_debug)
fprintf_filtered (gdb_stdlog, " - reg=%d val=%s",
argreg,
- phex (regval, MIPS_SAVED_REGSIZE));
+ phex (regval,
+ mips_saved_regsize (tdep)));
write_register (argreg, regval);
argreg++;
}
@@ -2960,13 +3083,14 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
val += partial_len;
/* Compute the the offset into the stack at which we
- will copy the next parameter.
+ will copy the next parameter.
In the new EABI (and the NABI32), the stack_offset
only needs to be adjusted when it has been used. */
if (stack_used_p)
- stack_offset += align_up (partial_len, MIPS_STACK_ARGSIZE);
+ stack_offset += align_up (partial_len,
+ mips_stack_argsize (tdep));
}
}
if (mips_debug)
@@ -2979,19 +3103,69 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
return sp;
}
-/* N32/N64 version of push_dummy_call. */
+/* Given a return value in `regbuf' with a type `valtype', extract and
+ copy its value into `valbuf'. */
+
+static void
+mips_eabi_extract_return_value (struct type *valtype,
+ char regbuf[], char *valbuf)
+{
+ struct return_value_word lo;
+ struct return_value_word hi;
+ return_value_location (valtype, &hi, &lo);
+
+ memcpy (valbuf + lo.buf_offset,
+ regbuf + DEPRECATED_REGISTER_BYTE (NUM_REGS + lo.reg) +
+ lo.reg_offset, lo.len);
+
+ if (hi.len > 0)
+ memcpy (valbuf + hi.buf_offset,
+ regbuf + DEPRECATED_REGISTER_BYTE (NUM_REGS + hi.reg) +
+ hi.reg_offset, hi.len);
+}
+
+/* Given a return value in `valbuf' with a type `valtype', write it's
+ value into the appropriate register. */
+
+static void
+mips_eabi_store_return_value (struct type *valtype, char *valbuf)
+{
+ char raw_buffer[MAX_REGISTER_SIZE];
+ struct return_value_word lo;
+ struct return_value_word hi;
+ return_value_location (valtype, &hi, &lo);
+
+ memset (raw_buffer, 0, sizeof (raw_buffer));
+ memcpy (raw_buffer + lo.reg_offset, valbuf + lo.buf_offset, lo.len);
+ deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (lo.reg),
+ raw_buffer, register_size (current_gdbarch,
+ lo.reg));
+
+ if (hi.len > 0)
+ {
+ memset (raw_buffer, 0, sizeof (raw_buffer));
+ memcpy (raw_buffer + hi.reg_offset, valbuf + hi.buf_offset, hi.len);
+ deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (hi.reg),
+ raw_buffer,
+ register_size (current_gdbarch,
+ hi.reg));
+ }
+}
+
+/* N32/N64 ABI stuff. */
static CORE_ADDR
mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
- struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
- struct value **args, CORE_ADDR sp, int struct_return,
- CORE_ADDR struct_addr)
+ struct regcache *regcache, CORE_ADDR bp_addr,
+ int nargs, struct value **args, CORE_ADDR sp,
+ int struct_return, CORE_ADDR struct_addr)
{
int argreg;
int float_argreg;
int argnum;
int len = 0;
int stack_offset = 0;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
/* For shared libraries, "t9" needs to point at the function
address. */
@@ -3012,12 +3186,12 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
/* Now make space on the stack for the args. */
for (argnum = 0; argnum < nargs; argnum++)
- len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])),
- MIPS_STACK_ARGSIZE);
+ len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])),
+ mips_stack_argsize (tdep));
sp -= align_up (len, 16);
if (mips_debug)
- fprintf_unfiltered (gdb_stdlog,
+ fprintf_unfiltered (gdb_stdlog,
"mips_n32n64_push_dummy_call: sp=0x%s allocated %ld\n",
paddr_nz (sp), (long) align_up (len, 16));
@@ -3083,16 +3257,16 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
in registers where gcc sometimes puts them on the stack.
For maximum compatibility, we will put them in both
places. */
- int odd_sized_struct = ((len > MIPS_SAVED_REGSIZE) &&
- (len % MIPS_SAVED_REGSIZE != 0));
+ int odd_sized_struct = ((len > mips_saved_regsize (tdep))
+ && (len % mips_saved_regsize (tdep) != 0));
/* Note: Floating-point values that didn't fit into an FP
- register are only written to memory. */
+ register are only written to memory. */
while (len > 0)
{
/* Rememer if the argument was written to the stack. */
int stack_used_p = 0;
- int partial_len = len < MIPS_SAVED_REGSIZE ?
- len : MIPS_SAVED_REGSIZE;
+ int partial_len = (len < mips_saved_regsize (tdep)
+ ? len : mips_saved_regsize (tdep));
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " -- partial=%d",
@@ -3110,11 +3284,11 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
stack_used_p = 1;
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
- if (MIPS_STACK_ARGSIZE == 8 &&
- (typecode == TYPE_CODE_INT ||
- typecode == TYPE_CODE_PTR ||
- typecode == TYPE_CODE_FLT) && len <= 4)
- longword_offset = MIPS_STACK_ARGSIZE - len;
+ if (mips_stack_argsize (tdep) == 8
+ && (typecode == TYPE_CODE_INT
+ || typecode == TYPE_CODE_PTR
+ || typecode == TYPE_CODE_FLT) && len <= 4)
+ longword_offset = mips_stack_argsize (tdep) - len;
}
if (mips_debug)
@@ -3130,11 +3304,11 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
if (mips_debug)
{
int i;
- fprintf_unfiltered (gdb_stdlog, " @0x%s ",
+ fprintf_unfiltered (gdb_stdlog, " @0x%s ",
paddr_nz (addr));
for (i = 0; i < partial_len; i++)
{
- fprintf_unfiltered (gdb_stdlog, "%02x",
+ fprintf_unfiltered (gdb_stdlog, "%02x",
val[i] & 0xff);
}
}
@@ -3145,11 +3319,12 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
structs may go thru BOTH paths. Floating point
arguments will not. */
/* Write this portion of the argument to a general
- purpose register. */
+ purpose register. */
if (argreg <= MIPS_LAST_ARG_REGNUM
&& !fp_register_arg_p (typecode, arg_type))
{
- LONGEST regval = extract_unsigned_integer (val, partial_len);
+ LONGEST regval =
+ extract_unsigned_integer (val, partial_len);
/* A non-floating-point argument being passed in a
general register. If a struct or union, and if
@@ -3162,28 +3337,30 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
cagney/2001-07-23: gdb/179: Also, GCC, when
outputting LE O32 with sizeof (struct) <
- MIPS_SAVED_REGSIZE, generates a left shift as
+ mips_saved_regsize(), generates a left shift as
part of storing the argument in a register a
register (the left shift isn't generated when
- sizeof (struct) >= MIPS_SAVED_REGSIZE). Since it
- is quite possible that this is GCC contradicting
- the LE/O32 ABI, GDB has not been adjusted to
- accommodate this. Either someone needs to
- demonstrate that the LE/O32 ABI specifies such a
- left shift OR this new ABI gets identified as
- such and GDB gets tweaked accordingly. */
+ sizeof (struct) >= mips_saved_regsize()). Since
+ it is quite possible that this is GCC
+ contradicting the LE/O32 ABI, GDB has not been
+ adjusted to accommodate this. Either someone
+ needs to demonstrate that the LE/O32 ABI
+ specifies such a left shift OR this new ABI gets
+ identified as such and GDB gets tweaked
+ accordingly. */
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
- && partial_len < MIPS_SAVED_REGSIZE
+ && partial_len < mips_saved_regsize (tdep)
&& (typecode == TYPE_CODE_STRUCT ||
typecode == TYPE_CODE_UNION))
- regval <<= ((MIPS_SAVED_REGSIZE - partial_len) *
+ regval <<= ((mips_saved_regsize (tdep) - partial_len) *
TARGET_CHAR_BIT);
if (mips_debug)
fprintf_filtered (gdb_stdlog, " - reg=%d val=%s",
argreg,
- phex (regval, MIPS_SAVED_REGSIZE));
+ phex (regval,
+ mips_saved_regsize (tdep)));
write_register (argreg, regval);
argreg++;
}
@@ -3192,13 +3369,14 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
val += partial_len;
/* Compute the the offset into the stack at which we
- will copy the next parameter.
+ will copy the next parameter.
In N32 (N64?), the stack_offset only needs to be
adjusted when it has been used. */
if (stack_used_p)
- stack_offset += align_up (partial_len, MIPS_STACK_ARGSIZE);
+ stack_offset += align_up (partial_len,
+ mips_stack_argsize (tdep));
}
}
if (mips_debug)
@@ -3211,19 +3389,124 @@ mips_n32n64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
return sp;
}
-/* O32 version of push_dummy_call. */
+static enum return_value_convention
+mips_n32n64_return_value (struct gdbarch *gdbarch,
+ struct type *type, struct regcache *regcache,
+ void *readbuf, const void *writebuf)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ if (TYPE_CODE (type) == TYPE_CODE_STRUCT
+ || TYPE_CODE (type) == TYPE_CODE_UNION
+ || TYPE_CODE (type) == TYPE_CODE_ARRAY
+ || TYPE_LENGTH (type) > 2 * mips_saved_regsize (tdep))
+ return RETURN_VALUE_STRUCT_CONVENTION;
+ else if (TYPE_CODE (type) == TYPE_CODE_FLT
+ && tdep->mips_fpu_type != MIPS_FPU_NONE)
+ {
+ /* A floating-point value belongs in the least significant part
+ of FP0. */
+ if (mips_debug)
+ fprintf_unfiltered (gdb_stderr, "Return float in $fp0\n");
+ mips_xfer_register (regcache,
+ NUM_REGS + mips_regnum (current_gdbarch)->fp0,
+ TYPE_LENGTH (type),
+ TARGET_BYTE_ORDER, readbuf, writebuf, 0);
+ return RETURN_VALUE_REGISTER_CONVENTION;
+ }
+ else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
+ && TYPE_NFIELDS (type) <= 2
+ && TYPE_NFIELDS (type) >= 1
+ && ((TYPE_NFIELDS (type) == 1
+ && (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
+ == TYPE_CODE_FLT))
+ || (TYPE_NFIELDS (type) == 2
+ && (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
+ == TYPE_CODE_FLT)
+ && (TYPE_CODE (TYPE_FIELD_TYPE (type, 1))
+ == TYPE_CODE_FLT)))
+ && tdep->mips_fpu_type != MIPS_FPU_NONE)
+ {
+ /* A struct that contains one or two floats. Each value is part
+ in the least significant part of their floating point
+ register.. */
+ bfd_byte reg[MAX_REGISTER_SIZE];
+ int regnum;
+ int field;
+ for (field = 0, regnum = mips_regnum (current_gdbarch)->fp0;
+ field < TYPE_NFIELDS (type); field++, regnum += 2)
+ {
+ int offset = (FIELD_BITPOS (TYPE_FIELDS (type)[field])
+ / TARGET_CHAR_BIT);
+ if (mips_debug)
+ fprintf_unfiltered (gdb_stderr, "Return float struct+%d\n",
+ offset);
+ mips_xfer_register (regcache, NUM_REGS + regnum,
+ TYPE_LENGTH (TYPE_FIELD_TYPE (type, field)),
+ TARGET_BYTE_ORDER, readbuf, writebuf, offset);
+ }
+ return RETURN_VALUE_REGISTER_CONVENTION;
+ }
+ else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
+ || TYPE_CODE (type) == TYPE_CODE_UNION)
+ {
+ /* A structure or union. Extract the left justified value,
+ regardless of the byte order. I.e. DO NOT USE
+ mips_xfer_lower. */
+ int offset;
+ int regnum;
+ for (offset = 0, regnum = V0_REGNUM;
+ offset < TYPE_LENGTH (type);
+ offset += register_size (current_gdbarch, regnum), regnum++)
+ {
+ int xfer = register_size (current_gdbarch, regnum);
+ if (offset + xfer > TYPE_LENGTH (type))
+ xfer = TYPE_LENGTH (type) - offset;
+ if (mips_debug)
+ fprintf_unfiltered (gdb_stderr, "Return struct+%d:%d in $%d\n",
+ offset, xfer, regnum);
+ mips_xfer_register (regcache, NUM_REGS + regnum, xfer,
+ BFD_ENDIAN_UNKNOWN, readbuf, writebuf, offset);
+ }
+ return RETURN_VALUE_REGISTER_CONVENTION;
+ }
+ else
+ {
+ /* A scalar extract each part but least-significant-byte
+ justified. */
+ int offset;
+ int regnum;
+ for (offset = 0, regnum = V0_REGNUM;
+ offset < TYPE_LENGTH (type);
+ offset += register_size (current_gdbarch, regnum), regnum++)
+ {
+ int xfer = register_size (current_gdbarch, regnum);
+ int pos = 0;
+ if (offset + xfer > TYPE_LENGTH (type))
+ xfer = TYPE_LENGTH (type) - offset;
+ if (mips_debug)
+ fprintf_unfiltered (gdb_stderr, "Return scalar+%d:%d in $%d\n",
+ offset, xfer, regnum);
+ mips_xfer_register (regcache, NUM_REGS + regnum, xfer,
+ TARGET_BYTE_ORDER, readbuf, writebuf, offset);
+ }
+ return RETURN_VALUE_REGISTER_CONVENTION;
+ }
+}
+
+/* O32 ABI stuff. */
static CORE_ADDR
mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
- struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
- struct value **args, CORE_ADDR sp, int struct_return,
- CORE_ADDR struct_addr)
+ struct regcache *regcache, CORE_ADDR bp_addr,
+ int nargs, struct value **args, CORE_ADDR sp,
+ int struct_return, CORE_ADDR struct_addr)
{
int argreg;
int float_argreg;
int argnum;
int len = 0;
int stack_offset = 0;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
/* For shared libraries, "t9" needs to point at the function
address. */
@@ -3244,12 +3527,12 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
/* Now make space on the stack for the args. */
for (argnum = 0; argnum < nargs; argnum++)
- len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])),
- MIPS_STACK_ARGSIZE);
+ len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])),
+ mips_stack_argsize (tdep));
sp -= align_up (len, 16);
if (mips_debug)
- fprintf_unfiltered (gdb_stdlog,
+ fprintf_unfiltered (gdb_stdlog,
"mips_o32_push_dummy_call: sp=0x%s allocated %ld\n",
paddr_nz (sp), (long) align_up (len, 16));
@@ -3265,7 +3548,7 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
"mips_o32_push_dummy_call: struct_return reg=%d 0x%s\n",
argreg, paddr_nz (struct_addr));
write_register (argreg++, struct_addr);
- stack_offset += MIPS_STACK_ARGSIZE;
+ stack_offset += mips_stack_argsize (tdep);
}
/* Now load as many as possible of the first arguments into
@@ -3292,8 +3575,7 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
up before the check to see if there are any FP registers
left. O32/O64 targets also pass the FP in the integer
registers so also round up normal registers. */
- if (!FP_REGISTER_DOUBLE
- && fp_register_arg_p (typecode, arg_type))
+ if (!FP_REGISTER_DOUBLE && fp_register_arg_p (typecode, arg_type))
{
if ((float_argreg & 1))
float_argreg++;
@@ -3345,16 +3627,16 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
/* This is a floating point value that fits entirely
in a single register. */
/* On 32 bit ABI's the float_argreg is further adjusted
- above to ensure that it is even register aligned. */
+ above to ensure that it is even register aligned. */
LONGEST regval = extract_unsigned_integer (val, len);
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " - fpreg=%d val=%s",
float_argreg, phex (regval, len));
write_register (float_argreg++, regval);
/* CAGNEY: 32 bit MIPS ABI's always reserve two FP
- registers for each argument. The below is (my
- guess) to ensure that the corresponding integer
- register has reserved the same space. */
+ registers for each argument. The below is (my
+ guess) to ensure that the corresponding integer
+ register has reserved the same space. */
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " - reg=%d val=%s",
argreg, phex (regval, len));
@@ -3362,7 +3644,7 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
argreg += FP_REGISTER_DOUBLE ? 1 : 2;
}
/* Reserve space for the FP register. */
- stack_offset += align_up (len, MIPS_STACK_ARGSIZE);
+ stack_offset += align_up (len, mips_stack_argsize (tdep));
}
else
{
@@ -3374,24 +3656,24 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
in registers where gcc sometimes puts them on the stack.
For maximum compatibility, we will put them in both
places. */
- int odd_sized_struct = ((len > MIPS_SAVED_REGSIZE) &&
- (len % MIPS_SAVED_REGSIZE != 0));
+ int odd_sized_struct = ((len > mips_saved_regsize (tdep))
+ && (len % mips_saved_regsize (tdep) != 0));
/* Structures should be aligned to eight bytes (even arg registers)
on MIPS_ABI_O32, if their first member has double precision. */
- if (MIPS_SAVED_REGSIZE < 8
+ if (mips_saved_regsize (tdep) < 8
&& mips_type_needs_double_align (arg_type))
{
if ((argreg & 1))
- argreg++;
+ argreg++;
}
/* Note: Floating-point values that didn't fit into an FP
- register are only written to memory. */
+ register are only written to memory. */
while (len > 0)
{
/* Remember if the argument was written to the stack. */
int stack_used_p = 0;
- int partial_len =
- len < MIPS_SAVED_REGSIZE ? len : MIPS_SAVED_REGSIZE;
+ int partial_len = (len < mips_saved_regsize (tdep)
+ ? len : mips_saved_regsize (tdep));
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " -- partial=%d",
@@ -3409,11 +3691,11 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
stack_used_p = 1;
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
- if (MIPS_STACK_ARGSIZE == 8 &&
- (typecode == TYPE_CODE_INT ||
- typecode == TYPE_CODE_PTR ||
- typecode == TYPE_CODE_FLT) && len <= 4)
- longword_offset = MIPS_STACK_ARGSIZE - len;
+ if (mips_stack_argsize (tdep) == 8
+ && (typecode == TYPE_CODE_INT
+ || typecode == TYPE_CODE_PTR
+ || typecode == TYPE_CODE_FLT) && len <= 4)
+ longword_offset = mips_stack_argsize (tdep) - len;
}
if (mips_debug)
@@ -3429,11 +3711,11 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
if (mips_debug)
{
int i;
- fprintf_unfiltered (gdb_stdlog, " @0x%s ",
+ fprintf_unfiltered (gdb_stdlog, " @0x%s ",
paddr_nz (addr));
for (i = 0; i < partial_len; i++)
{
- fprintf_unfiltered (gdb_stdlog, "%02x",
+ fprintf_unfiltered (gdb_stdlog, "%02x",
val[i] & 0xff);
}
}
@@ -3444,13 +3726,13 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
structs may go thru BOTH paths. Floating point
arguments will not. */
/* Write this portion of the argument to a general
- purpose register. */
+ purpose register. */
if (argreg <= MIPS_LAST_ARG_REGNUM
&& !fp_register_arg_p (typecode, arg_type))
{
LONGEST regval = extract_signed_integer (val, partial_len);
/* Value may need to be sign extended, because
- mips_regsize() != MIPS_SAVED_REGSIZE. */
+ mips_regsize() != mips_saved_regsize(). */
/* A non-floating-point argument being passed in a
general register. If a struct or union, and if
@@ -3465,29 +3747,31 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
cagney/2001-07-23: gdb/179: Also, GCC, when
outputting LE O32 with sizeof (struct) <
- MIPS_SAVED_REGSIZE, generates a left shift as
+ mips_saved_regsize(), generates a left shift as
part of storing the argument in a register a
register (the left shift isn't generated when
- sizeof (struct) >= MIPS_SAVED_REGSIZE). Since it
- is quite possible that this is GCC contradicting
- the LE/O32 ABI, GDB has not been adjusted to
- accommodate this. Either someone needs to
- demonstrate that the LE/O32 ABI specifies such a
- left shift OR this new ABI gets identified as
- such and GDB gets tweaked accordingly. */
-
- if (MIPS_SAVED_REGSIZE < 8
+ sizeof (struct) >= mips_saved_regsize()). Since
+ it is quite possible that this is GCC
+ contradicting the LE/O32 ABI, GDB has not been
+ adjusted to accommodate this. Either someone
+ needs to demonstrate that the LE/O32 ABI
+ specifies such a left shift OR this new ABI gets
+ identified as such and GDB gets tweaked
+ accordingly. */
+
+ if (mips_saved_regsize (tdep) < 8
&& TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
- && partial_len < MIPS_SAVED_REGSIZE
+ && partial_len < mips_saved_regsize (tdep)
&& (typecode == TYPE_CODE_STRUCT ||
typecode == TYPE_CODE_UNION))
- regval <<= ((MIPS_SAVED_REGSIZE - partial_len) *
+ regval <<= ((mips_saved_regsize (tdep) - partial_len) *
TARGET_CHAR_BIT);
if (mips_debug)
fprintf_filtered (gdb_stdlog, " - reg=%d val=%s",
argreg,
- phex (regval, MIPS_SAVED_REGSIZE));
+ phex (regval,
+ mips_saved_regsize (tdep)));
write_register (argreg, regval);
argreg++;
@@ -3500,14 +3784,15 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
val += partial_len;
/* Compute the the offset into the stack at which we
- will copy the next parameter.
+ will copy the next parameter.
- In older ABIs, the caller reserved space for
- registers that contained arguments. This was loosely
- refered to as their "home". Consequently, space is
- always allocated. */
+ In older ABIs, the caller reserved space for
+ registers that contained arguments. This was loosely
+ refered to as their "home". Consequently, space is
+ always allocated. */
- stack_offset += align_up (partial_len, MIPS_STACK_ARGSIZE);
+ stack_offset += align_up (partial_len,
+ mips_stack_argsize (tdep));
}
}
if (mips_debug)
@@ -3520,19 +3805,162 @@ mips_o32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
return sp;
}
-/* O64 version of push_dummy_call. */
+static enum return_value_convention
+mips_o32_return_value (struct gdbarch *gdbarch, struct type *type,
+ struct regcache *regcache,
+ void *readbuf, const void *writebuf)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+
+ if (TYPE_CODE (type) == TYPE_CODE_STRUCT
+ || TYPE_CODE (type) == TYPE_CODE_UNION
+ || TYPE_CODE (type) == TYPE_CODE_ARRAY)
+ return RETURN_VALUE_STRUCT_CONVENTION;
+ else if (TYPE_CODE (type) == TYPE_CODE_FLT
+ && TYPE_LENGTH (type) == 4 && tdep->mips_fpu_type != MIPS_FPU_NONE)
+ {
+ /* A single-precision floating-point value. It fits in the
+ least significant part of FP0. */
+ if (mips_debug)
+ fprintf_unfiltered (gdb_stderr, "Return float in $fp0\n");
+ mips_xfer_register (regcache,
+ NUM_REGS + mips_regnum (current_gdbarch)->fp0,
+ TYPE_LENGTH (type),
+ TARGET_BYTE_ORDER, readbuf, writebuf, 0);
+ return RETURN_VALUE_REGISTER_CONVENTION;
+ }
+ else if (TYPE_CODE (type) == TYPE_CODE_FLT
+ && TYPE_LENGTH (type) == 8 && tdep->mips_fpu_type != MIPS_FPU_NONE)
+ {
+ /* A double-precision floating-point value. The most
+ significant part goes in FP1, and the least significant in
+ FP0. */
+ if (mips_debug)
+ fprintf_unfiltered (gdb_stderr, "Return float in $fp1/$fp0\n");
+ switch (TARGET_BYTE_ORDER)
+ {
+ case BFD_ENDIAN_LITTLE:
+ mips_xfer_register (regcache,
+ NUM_REGS + mips_regnum (current_gdbarch)->fp0 +
+ 0, 4, TARGET_BYTE_ORDER, readbuf, writebuf, 0);
+ mips_xfer_register (regcache,
+ NUM_REGS + mips_regnum (current_gdbarch)->fp0 +
+ 1, 4, TARGET_BYTE_ORDER, readbuf, writebuf, 4);
+ break;
+ case BFD_ENDIAN_BIG:
+ mips_xfer_register (regcache,
+ NUM_REGS + mips_regnum (current_gdbarch)->fp0 +
+ 1, 4, TARGET_BYTE_ORDER, readbuf, writebuf, 0);
+ mips_xfer_register (regcache,
+ NUM_REGS + mips_regnum (current_gdbarch)->fp0 +
+ 0, 4, TARGET_BYTE_ORDER, readbuf, writebuf, 4);
+ break;
+ default:
+ internal_error (__FILE__, __LINE__, "bad switch");
+ }
+ return RETURN_VALUE_REGISTER_CONVENTION;
+ }
+#if 0
+ else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
+ && TYPE_NFIELDS (type) <= 2
+ && TYPE_NFIELDS (type) >= 1
+ && ((TYPE_NFIELDS (type) == 1
+ && (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
+ == TYPE_CODE_FLT))
+ || (TYPE_NFIELDS (type) == 2
+ && (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
+ == TYPE_CODE_FLT)
+ && (TYPE_CODE (TYPE_FIELD_TYPE (type, 1))
+ == TYPE_CODE_FLT)))
+ && tdep->mips_fpu_type != MIPS_FPU_NONE)
+ {
+ /* A struct that contains one or two floats. Each value is part
+ in the least significant part of their floating point
+ register.. */
+ bfd_byte reg[MAX_REGISTER_SIZE];
+ int regnum;
+ int field;
+ for (field = 0, regnum = mips_regnum (current_gdbarch)->fp0;
+ field < TYPE_NFIELDS (type); field++, regnum += 2)
+ {
+ int offset = (FIELD_BITPOS (TYPE_FIELDS (type)[field])
+ / TARGET_CHAR_BIT);
+ if (mips_debug)
+ fprintf_unfiltered (gdb_stderr, "Return float struct+%d\n",
+ offset);
+ mips_xfer_register (regcache, NUM_REGS + regnum,
+ TYPE_LENGTH (TYPE_FIELD_TYPE (type, field)),
+ TARGET_BYTE_ORDER, readbuf, writebuf, offset);
+ }
+ return RETURN_VALUE_REGISTER_CONVENTION;
+ }
+#endif
+#if 0
+ else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
+ || TYPE_CODE (type) == TYPE_CODE_UNION)
+ {
+ /* A structure or union. Extract the left justified value,
+ regardless of the byte order. I.e. DO NOT USE
+ mips_xfer_lower. */
+ int offset;
+ int regnum;
+ for (offset = 0, regnum = V0_REGNUM;
+ offset < TYPE_LENGTH (type);
+ offset += register_size (current_gdbarch, regnum), regnum++)
+ {
+ int xfer = register_size (current_gdbarch, regnum);
+ if (offset + xfer > TYPE_LENGTH (type))
+ xfer = TYPE_LENGTH (type) - offset;
+ if (mips_debug)
+ fprintf_unfiltered (gdb_stderr, "Return struct+%d:%d in $%d\n",
+ offset, xfer, regnum);
+ mips_xfer_register (regcache, NUM_REGS + regnum, xfer,
+ BFD_ENDIAN_UNKNOWN, readbuf, writebuf, offset);
+ }
+ return RETURN_VALUE_REGISTER_CONVENTION;
+ }
+#endif
+ else
+ {
+ /* A scalar extract each part but least-significant-byte
+ justified. o32 thinks registers are 4 byte, regardless of
+ the ISA. mips_stack_argsize controls this. */
+ int offset;
+ int regnum;
+ for (offset = 0, regnum = V0_REGNUM;
+ offset < TYPE_LENGTH (type);
+ offset += mips_stack_argsize (tdep), regnum++)
+ {
+ int xfer = mips_stack_argsize (tdep);
+ int pos = 0;
+ if (offset + xfer > TYPE_LENGTH (type))
+ xfer = TYPE_LENGTH (type) - offset;
+ if (mips_debug)
+ fprintf_unfiltered (gdb_stderr, "Return scalar+%d:%d in $%d\n",
+ offset, xfer, regnum);
+ mips_xfer_register (regcache, NUM_REGS + regnum, xfer,
+ TARGET_BYTE_ORDER, readbuf, writebuf, offset);
+ }
+ return RETURN_VALUE_REGISTER_CONVENTION;
+ }
+}
+
+/* O64 ABI. This is a hacked up kind of 64-bit version of the o32
+ ABI. */
static CORE_ADDR
mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
- struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
- struct value **args, CORE_ADDR sp, int struct_return,
- CORE_ADDR struct_addr)
+ struct regcache *regcache, CORE_ADDR bp_addr,
+ int nargs,
+ struct value **args, CORE_ADDR sp,
+ int struct_return, CORE_ADDR struct_addr)
{
int argreg;
int float_argreg;
int argnum;
int len = 0;
int stack_offset = 0;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
/* For shared libraries, "t9" needs to point at the function
address. */
@@ -3553,12 +3981,12 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
/* Now make space on the stack for the args. */
for (argnum = 0; argnum < nargs; argnum++)
- len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])),
- MIPS_STACK_ARGSIZE);
+ len += align_up (TYPE_LENGTH (VALUE_TYPE (args[argnum])),
+ mips_stack_argsize (tdep));
sp -= align_up (len, 16);
if (mips_debug)
- fprintf_unfiltered (gdb_stdlog,
+ fprintf_unfiltered (gdb_stdlog,
"mips_o64_push_dummy_call: sp=0x%s allocated %ld\n",
paddr_nz (sp), (long) align_up (len, 16));
@@ -3574,7 +4002,7 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
"mips_o64_push_dummy_call: struct_return reg=%d 0x%s\n",
argreg, paddr_nz (struct_addr));
write_register (argreg++, struct_addr);
- stack_offset += MIPS_STACK_ARGSIZE;
+ stack_offset += mips_stack_argsize (tdep);
}
/* Now load as many as possible of the first arguments into
@@ -3601,8 +4029,7 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
up before the check to see if there are any FP registers
left. O32/O64 targets also pass the FP in the integer
registers so also round up normal registers. */
- if (!FP_REGISTER_DOUBLE
- && fp_register_arg_p (typecode, arg_type))
+ if (!FP_REGISTER_DOUBLE && fp_register_arg_p (typecode, arg_type))
{
if ((float_argreg & 1))
float_argreg++;
@@ -3654,16 +4081,16 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
/* This is a floating point value that fits entirely
in a single register. */
/* On 32 bit ABI's the float_argreg is further adjusted
- above to ensure that it is even register aligned. */
+ above to ensure that it is even register aligned. */
LONGEST regval = extract_unsigned_integer (val, len);
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " - fpreg=%d val=%s",
float_argreg, phex (regval, len));
write_register (float_argreg++, regval);
/* CAGNEY: 32 bit MIPS ABI's always reserve two FP
- registers for each argument. The below is (my
- guess) to ensure that the corresponding integer
- register has reserved the same space. */
+ registers for each argument. The below is (my
+ guess) to ensure that the corresponding integer
+ register has reserved the same space. */
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " - reg=%d val=%s",
argreg, phex (regval, len));
@@ -3671,7 +4098,7 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
argreg += FP_REGISTER_DOUBLE ? 1 : 2;
}
/* Reserve space for the FP register. */
- stack_offset += align_up (len, MIPS_STACK_ARGSIZE);
+ stack_offset += align_up (len, mips_stack_argsize (tdep));
}
else
{
@@ -3683,24 +4110,24 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
in registers where gcc sometimes puts them on the stack.
For maximum compatibility, we will put them in both
places. */
- int odd_sized_struct = ((len > MIPS_SAVED_REGSIZE) &&
- (len % MIPS_SAVED_REGSIZE != 0));
+ int odd_sized_struct = ((len > mips_saved_regsize (tdep))
+ && (len % mips_saved_regsize (tdep) != 0));
/* Structures should be aligned to eight bytes (even arg registers)
on MIPS_ABI_O32, if their first member has double precision. */
- if (MIPS_SAVED_REGSIZE < 8
+ if (mips_saved_regsize (tdep) < 8
&& mips_type_needs_double_align (arg_type))
{
if ((argreg & 1))
- argreg++;
+ argreg++;
}
/* Note: Floating-point values that didn't fit into an FP
- register are only written to memory. */
+ register are only written to memory. */
while (len > 0)
{
/* Remember if the argument was written to the stack. */
int stack_used_p = 0;
- int partial_len =
- len < MIPS_SAVED_REGSIZE ? len : MIPS_SAVED_REGSIZE;
+ int partial_len = (len < mips_saved_regsize (tdep)
+ ? len : mips_saved_regsize (tdep));
if (mips_debug)
fprintf_unfiltered (gdb_stdlog, " -- partial=%d",
@@ -3718,11 +4145,11 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
stack_used_p = 1;
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
- if (MIPS_STACK_ARGSIZE == 8 &&
- (typecode == TYPE_CODE_INT ||
- typecode == TYPE_CODE_PTR ||
- typecode == TYPE_CODE_FLT) && len <= 4)
- longword_offset = MIPS_STACK_ARGSIZE - len;
+ if (mips_stack_argsize (tdep) == 8
+ && (typecode == TYPE_CODE_INT
+ || typecode == TYPE_CODE_PTR
+ || typecode == TYPE_CODE_FLT) && len <= 4)
+ longword_offset = mips_stack_argsize (tdep) - len;
}
if (mips_debug)
@@ -3738,11 +4165,11 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
if (mips_debug)
{
int i;
- fprintf_unfiltered (gdb_stdlog, " @0x%s ",
+ fprintf_unfiltered (gdb_stdlog, " @0x%s ",
paddr_nz (addr));
for (i = 0; i < partial_len; i++)
{
- fprintf_unfiltered (gdb_stdlog, "%02x",
+ fprintf_unfiltered (gdb_stdlog, "%02x",
val[i] & 0xff);
}
}
@@ -3753,13 +4180,13 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
structs may go thru BOTH paths. Floating point
arguments will not. */
/* Write this portion of the argument to a general
- purpose register. */
+ purpose register. */
if (argreg <= MIPS_LAST_ARG_REGNUM
&& !fp_register_arg_p (typecode, arg_type))
{
LONGEST regval = extract_signed_integer (val, partial_len);
/* Value may need to be sign extended, because
- mips_regsize() != MIPS_SAVED_REGSIZE. */
+ mips_regsize() != mips_saved_regsize(). */
/* A non-floating-point argument being passed in a
general register. If a struct or union, and if
@@ -3774,29 +4201,31 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
cagney/2001-07-23: gdb/179: Also, GCC, when
outputting LE O32 with sizeof (struct) <
- MIPS_SAVED_REGSIZE, generates a left shift as
+ mips_saved_regsize(), generates a left shift as
part of storing the argument in a register a
register (the left shift isn't generated when
- sizeof (struct) >= MIPS_SAVED_REGSIZE). Since it
- is quite possible that this is GCC contradicting
- the LE/O32 ABI, GDB has not been adjusted to
- accommodate this. Either someone needs to
- demonstrate that the LE/O32 ABI specifies such a
- left shift OR this new ABI gets identified as
- such and GDB gets tweaked accordingly. */
-
- if (MIPS_SAVED_REGSIZE < 8
+ sizeof (struct) >= mips_saved_regsize()). Since
+ it is quite possible that this is GCC
+ contradicting the LE/O32 ABI, GDB has not been
+ adjusted to accommodate this. Either someone
+ needs to demonstrate that the LE/O32 ABI
+ specifies such a left shift OR this new ABI gets
+ identified as such and GDB gets tweaked
+ accordingly. */
+
+ if (mips_saved_regsize (tdep) < 8
&& TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
- && partial_len < MIPS_SAVED_REGSIZE
+ && partial_len < mips_saved_regsize (tdep)
&& (typecode == TYPE_CODE_STRUCT ||
typecode == TYPE_CODE_UNION))
- regval <<= ((MIPS_SAVED_REGSIZE - partial_len) *
+ regval <<= ((mips_saved_regsize (tdep) - partial_len) *
TARGET_CHAR_BIT);
if (mips_debug)
fprintf_filtered (gdb_stdlog, " - reg=%d val=%s",
argreg,
- phex (regval, MIPS_SAVED_REGSIZE));
+ phex (regval,
+ mips_saved_regsize (tdep)));
write_register (argreg, regval);
argreg++;
@@ -3809,14 +4238,15 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
val += partial_len;
/* Compute the the offset into the stack at which we
- will copy the next parameter.
+ will copy the next parameter.
- In older ABIs, the caller reserved space for
- registers that contained arguments. This was loosely
- refered to as their "home". Consequently, space is
- always allocated. */
+ In older ABIs, the caller reserved space for
+ registers that contained arguments. This was loosely
+ refered to as their "home". Consequently, space is
+ always allocated. */
- stack_offset += align_up (partial_len, MIPS_STACK_ARGSIZE);
+ stack_offset += align_up (partial_len,
+ mips_stack_argsize (tdep));
}
}
if (mips_debug)
@@ -3830,12 +4260,56 @@ mips_o64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
}
static void
+mips_o64_extract_return_value (struct type *valtype,
+ char regbuf[], char *valbuf)
+{
+ struct return_value_word lo;
+ struct return_value_word hi;
+ return_value_location (valtype, &hi, &lo);
+
+ memcpy (valbuf + lo.buf_offset,
+ regbuf + DEPRECATED_REGISTER_BYTE (NUM_REGS + lo.reg) +
+ lo.reg_offset, lo.len);
+
+ if (hi.len > 0)
+ memcpy (valbuf + hi.buf_offset,
+ regbuf + DEPRECATED_REGISTER_BYTE (NUM_REGS + hi.reg) +
+ hi.reg_offset, hi.len);
+}
+
+static void
+mips_o64_store_return_value (struct type *valtype, char *valbuf)
+{
+ char raw_buffer[MAX_REGISTER_SIZE];
+ struct return_value_word lo;
+ struct return_value_word hi;
+ return_value_location (valtype, &hi, &lo);
+
+ memset (raw_buffer, 0, sizeof (raw_buffer));
+ memcpy (raw_buffer + lo.reg_offset, valbuf + lo.buf_offset, lo.len);
+ deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (lo.reg),
+ raw_buffer, register_size (current_gdbarch,
+ lo.reg));
+
+ if (hi.len > 0)
+ {
+ memset (raw_buffer, 0, sizeof (raw_buffer));
+ memcpy (raw_buffer + hi.reg_offset, valbuf + hi.buf_offset, hi.len);
+ deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (hi.reg),
+ raw_buffer,
+ register_size (current_gdbarch,
+ hi.reg));
+ }
+}
+
+static void
mips_pop_frame (void)
{
int regnum;
struct frame_info *frame = get_current_frame ();
CORE_ADDR new_sp = get_frame_base (frame);
mips_extra_func_info_t proc_desc;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
if (DEPRECATED_PC_IN_CALL_DUMMY (get_frame_pc (frame), 0, 0))
{
@@ -3845,23 +4319,27 @@ mips_pop_frame (void)
}
proc_desc = get_frame_extra_info (frame)->proc_desc;
- write_register (PC_REGNUM, DEPRECATED_FRAME_SAVED_PC (frame));
+ write_register (mips_regnum (current_gdbarch)->pc,
+ DEPRECATED_FRAME_SAVED_PC (frame));
mips_find_saved_regs (frame);
for (regnum = 0; regnum < NUM_REGS; regnum++)
- if (regnum != SP_REGNUM && regnum != PC_REGNUM
+ if (regnum != SP_REGNUM && regnum != mips_regnum (current_gdbarch)->pc
&& deprecated_get_frame_saved_regs (frame)[regnum])
{
- /* Floating point registers must not be sign extended,
- in case MIPS_SAVED_REGSIZE = 4 but sizeof (FP0_REGNUM) == 8. */
+ /* Floating point registers must not be sign extended, in case
+ mips_saved_regsize() = 4 but sizeof (FP0_REGNUM) == 8. */
- if (mips_regnum (current_gdbarch)->fp0 <= regnum && regnum < mips_regnum (current_gdbarch)->fp0 + 32)
+ if (mips_regnum (current_gdbarch)->fp0 <= regnum
+ && regnum < mips_regnum (current_gdbarch)->fp0 + 32)
write_register (regnum,
- read_memory_unsigned_integer (deprecated_get_frame_saved_regs (frame)[regnum],
- MIPS_SAVED_REGSIZE));
+ read_memory_unsigned_integer
+ (deprecated_get_frame_saved_regs (frame)[regnum],
+ mips_saved_regsize (tdep)));
else
write_register (regnum,
- read_memory_integer (deprecated_get_frame_saved_regs (frame)[regnum],
- MIPS_SAVED_REGSIZE));
+ read_memory_integer (deprecated_get_frame_saved_regs
+ (frame)[regnum],
+ mips_saved_regsize (tdep)));
}
write_register (SP_REGNUM, new_sp);
@@ -3872,8 +4350,7 @@ mips_pop_frame (void)
struct linked_proc_info *pi_ptr, *prev_ptr;
for (pi_ptr = linked_proc_desc_table, prev_ptr = NULL;
- pi_ptr != NULL;
- prev_ptr = pi_ptr, pi_ptr = pi_ptr->next)
+ pi_ptr != NULL; prev_ptr = pi_ptr, pi_ptr = pi_ptr->next)
{
if (&pi_ptr->info == proc_desc)
break;
@@ -3890,15 +4367,19 @@ mips_pop_frame (void)
xfree (pi_ptr);
write_register (mips_regnum (current_gdbarch)->hi,
- read_memory_integer (new_sp - 2 * MIPS_SAVED_REGSIZE,
- MIPS_SAVED_REGSIZE));
+ read_memory_integer ((new_sp
+ - 2 * mips_saved_regsize (tdep)),
+ mips_saved_regsize (tdep)));
write_register (mips_regnum (current_gdbarch)->lo,
- read_memory_integer (new_sp - 3 * MIPS_SAVED_REGSIZE,
- MIPS_SAVED_REGSIZE));
+ read_memory_integer ((new_sp
+ - 3 * mips_saved_regsize (tdep)),
+ mips_saved_regsize (tdep)));
if (MIPS_FPU_TYPE != MIPS_FPU_NONE)
write_register (mips_regnum (current_gdbarch)->fp_control_status,
- read_memory_integer (new_sp - 4 * MIPS_SAVED_REGSIZE,
- MIPS_SAVED_REGSIZE));
+ read_memory_integer ((new_sp
+ -
+ 4 * mips_saved_regsize (tdep)),
+ mips_saved_regsize (tdep)));
}
}
@@ -3965,7 +4446,7 @@ mips_read_fp_register_single (struct frame_info *frame, int regno,
if (raw_size == 8)
{
/* We have a 64-bit value for this register. Find the low-order
- 32 bits. */
+ 32 bits. */
int offset;
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
@@ -3994,7 +4475,7 @@ mips_read_fp_register_double (struct frame_info *frame, int regno,
if (raw_size == 8 && !mips2_fp_compat ())
{
/* We have a 64-bit value for this register, and we should use
- all 64 bits. */
+ all 64 bits. */
if (!frame_register_read (frame, regno, rare_buffer))
error ("can't read register %d (%s)", regno, REGISTER_NAME (regno));
}
@@ -4006,7 +4487,7 @@ mips_read_fp_register_double (struct frame_info *frame, int regno,
"odd-numbered FP register");
/* mips_read_fp_register_single will find the correct 32 bits from
- each register. */
+ each register. */
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
mips_read_fp_register_single (frame, regno, rare_buffer + 4);
@@ -4028,7 +4509,10 @@ mips_print_fp_register (struct ui_file *file, struct frame_info *frame,
double doub, flt1, flt2; /* doubles extracted from raw hex data */
int inv1, inv2, namelen;
- raw_buffer = (char *) alloca (2 * register_size (current_gdbarch, mips_regnum (current_gdbarch)->fp0));
+ raw_buffer =
+ (char *) alloca (2 *
+ register_size (current_gdbarch,
+ mips_regnum (current_gdbarch)->fp0));
fprintf_filtered (file, "%s:", REGISTER_NAME (regnum));
fprintf_filtered (file, "%*s", 4 - (int) strlen (REGISTER_NAME (regnum)),
@@ -4041,7 +4525,8 @@ mips_print_fp_register (struct ui_file *file, struct frame_info *frame,
mips_read_fp_register_single (frame, regnum, raw_buffer);
flt1 = unpack_double (mips_float_register_type (), raw_buffer, &inv1);
- print_scalar_formatted (raw_buffer, builtin_type_uint32, 'x', 'w', file);
+ print_scalar_formatted (raw_buffer, builtin_type_uint32, 'x', 'w',
+ file);
fprintf_filtered (file, " flt: ");
if (inv1)
@@ -4053,7 +4538,7 @@ mips_print_fp_register (struct ui_file *file, struct frame_info *frame,
{
mips_read_fp_register_double (frame, regnum, raw_buffer);
doub = unpack_double (mips_double_register_type (), raw_buffer,
- &inv2);
+ &inv2);
fprintf_filtered (file, " dbl: ");
if (inv2)
@@ -4072,7 +4557,8 @@ mips_print_fp_register (struct ui_file *file, struct frame_info *frame,
doub = unpack_double (mips_double_register_type (), raw_buffer, &inv2);
- print_scalar_formatted (raw_buffer, builtin_type_uint64, 'x', 'g', file);
+ print_scalar_formatted (raw_buffer, builtin_type_uint64, 'x', 'g',
+ file);
fprintf_filtered (file, " flt: ");
if (inv1)
@@ -4121,12 +4607,15 @@ mips_print_register (struct ui_file *file, struct frame_info *frame,
fprintf_filtered (file, ": ");
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
- offset = register_size (current_gdbarch, regnum) - register_size (current_gdbarch, regnum);
+ offset =
+ register_size (current_gdbarch,
+ regnum) - register_size (current_gdbarch, regnum);
else
offset = 0;
- print_scalar_formatted (raw_buffer + offset, gdbarch_register_type (gdbarch, regnum),
- 'x', 0, file);
+ print_scalar_formatted (raw_buffer + offset,
+ gdbarch_register_type (gdbarch, regnum), 'x', 0,
+ file);
}
/* Replacement for generic do_registers_info.
@@ -4159,14 +4648,15 @@ print_gp_register_row (struct ui_file *file, struct frame_info *frame,
/* For GP registers, we print a separate row of names above the vals */
fprintf_filtered (file, " ");
for (col = 0, regnum = start_regnum;
- col < ncols && regnum < NUM_REGS + NUM_PSEUDO_REGS;
- regnum++)
+ col < ncols && regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
{
if (*REGISTER_NAME (regnum) == '\0')
continue; /* unused register */
- if (TYPE_CODE (gdbarch_register_type (gdbarch, regnum)) == TYPE_CODE_FLT)
+ if (TYPE_CODE (gdbarch_register_type (gdbarch, regnum)) ==
+ TYPE_CODE_FLT)
break; /* end the row: reached FP register */
- fprintf_filtered (file, mips_regsize (current_gdbarch) == 8 ? "%17s" : "%9s",
+ fprintf_filtered (file,
+ mips_regsize (current_gdbarch) == 8 ? "%17s" : "%9s",
REGISTER_NAME (regnum));
col++;
}
@@ -4178,12 +4668,12 @@ print_gp_register_row (struct ui_file *file, struct frame_info *frame,
/* now print the values in hex, 4 or 8 to the row */
for (col = 0, regnum = start_regnum;
- col < ncols && regnum < NUM_REGS + NUM_PSEUDO_REGS;
- regnum++)
+ col < ncols && regnum < NUM_REGS + NUM_PSEUDO_REGS; regnum++)
{
if (*REGISTER_NAME (regnum) == '\0')
continue; /* unused register */
- if (TYPE_CODE (gdbarch_register_type (gdbarch, regnum)) == TYPE_CODE_FLT)
+ if (TYPE_CODE (gdbarch_register_type (gdbarch, regnum)) ==
+ TYPE_CODE_FLT)
break; /* end row: reached FP register */
/* OK: get the data in raw format. */
if (!frame_register_read (frame, regnum, raw_buffer))
@@ -4191,19 +4681,18 @@ print_gp_register_row (struct ui_file *file, struct frame_info *frame,
/* pad small registers */
for (byte = 0;
byte < (mips_regsize (current_gdbarch)
- - register_size (current_gdbarch, regnum));
- byte++)
+ - register_size (current_gdbarch, regnum)); byte++)
printf_filtered (" ");
/* Now print the register value in hex, endian order. */
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
- for (byte = register_size (current_gdbarch, regnum) - register_size (current_gdbarch, regnum);
- byte < register_size (current_gdbarch, regnum);
- byte++)
+ for (byte =
+ register_size (current_gdbarch,
+ regnum) - register_size (current_gdbarch, regnum);
+ byte < register_size (current_gdbarch, regnum); byte++)
fprintf_filtered (file, "%02x", (unsigned char) raw_buffer[byte]);
else
for (byte = register_size (current_gdbarch, regnum) - 1;
- byte >= 0;
- byte--)
+ byte >= 0; byte--)
fprintf_filtered (file, "%02x", (unsigned char) raw_buffer[byte]);
fprintf_filtered (file, " ");
col++;
@@ -4235,7 +4724,8 @@ mips_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file,
regnum = NUM_REGS;
while (regnum < NUM_REGS + NUM_PSEUDO_REGS)
{
- if (TYPE_CODE (gdbarch_register_type (gdbarch, regnum)) == TYPE_CODE_FLT)
+ if (TYPE_CODE (gdbarch_register_type (gdbarch, regnum)) ==
+ TYPE_CODE_FLT)
{
if (all) /* true for "INFO ALL-REGISTERS" command */
regnum = print_fp_register_row (file, frame, regnum);
@@ -4278,7 +4768,8 @@ mips_step_skips_delay (CORE_ADDR pc)
if (target_read_memory (pc, buf, MIPS_INSTLEN) != 0)
/* If error reading memory, guess that it is not a delayed branch. */
return 0;
- return is_delayed ((unsigned long) extract_unsigned_integer (buf, MIPS_INSTLEN));
+ return is_delayed ((unsigned long)
+ extract_unsigned_integer (buf, MIPS_INSTLEN));
}
@@ -4321,7 +4812,7 @@ skip_prologue_using_sal (CORE_ADDR func_addr)
if (sal.line == 0)
break;
/* Assume that a consecutive SAL for the same (or larger)
- line mark the prologue -> body transition. */
+ line mark the prologue -> body transition. */
if (sal.line >= prologue_sal.line)
break;
/* The case in which compiler's optimizer/scheduler has
@@ -4351,7 +4842,7 @@ mips32_skip_prologue (CORE_ADDR pc)
/* Find an upper bound on the prologue. */
end_pc = skip_prologue_using_sal (pc);
if (end_pc == 0)
- end_pc = pc + 100; /* Magic. */
+ end_pc = pc + 100; /* Magic. */
/* Skip the typical prologue instructions. These are the stack adjustment
instruction and the instructions that save registers on the stack
@@ -4411,7 +4902,7 @@ mips32_skip_prologue (CORE_ADDR pc)
else if (high_word == 0x3421 || /* ori $at,$at,n */
high_word == 0x3508 || /* ori $t0,$t0,n */
high_word == 0x3401 || /* ori $at,$zero,n */
- high_word == 0x3408) /* ori $t0,$zero,n */
+ high_word == 0x3408) /* ori $t0,$zero,n */
{
load_immediate_bytes += MIPS_INSTLEN; /* FIXME!! */
continue;
@@ -4443,65 +4934,53 @@ mips16_skip_prologue (CORE_ADDR pc)
/* Table of instructions likely to be found in a function prologue. */
static struct
- {
- unsigned short inst;
- unsigned short mask;
- }
+ {
+ unsigned short inst;
+ unsigned short mask;
+ }
table[] =
{
{
- 0x6300, 0xff00
- }
+ 0x6300, 0xff00}
, /* addiu $sp,offset */
{
- 0xfb00, 0xff00
- }
+ 0xfb00, 0xff00}
, /* daddiu $sp,offset */
{
- 0xd000, 0xf800
- }
+ 0xd000, 0xf800}
, /* sw reg,n($sp) */
{
- 0xf900, 0xff00
- }
+ 0xf900, 0xff00}
, /* sd reg,n($sp) */
{
- 0x6200, 0xff00
- }
+ 0x6200, 0xff00}
, /* sw $ra,n($sp) */
{
- 0xfa00, 0xff00
- }
+ 0xfa00, 0xff00}
, /* sd $ra,n($sp) */
{
- 0x673d, 0xffff
- }
+ 0x673d, 0xffff}
, /* move $s1,sp */
{
- 0xd980, 0xff80
- }
+ 0xd980, 0xff80}
, /* sw $a0-$a3,n($s1) */
{
- 0x6704, 0xff1c
- }
+ 0x6704, 0xff1c}
, /* move reg,$a0-$a3 */
{
- 0xe809, 0xf81f
- }
+ 0xe809, 0xf81f}
, /* entry pseudo-op */
{
- 0x0100, 0xff00
- }
+ 0x0100, 0xff00}
, /* addiu $s1,$sp,n */
{
- 0, 0
- } /* end of table marker */
+ 0, 0} /* end of table marker */
};
/* Find an upper bound on the prologue. */
end_pc = skip_prologue_using_sal (pc);
if (end_pc == 0)
- end_pc = pc + 100; /* Magic. */
+ end_pc = pc + 100; /* Magic. */
/* Skip the typical prologue instructions. These are the stack adjustment
instruction and the instructions that save registers on the stack
@@ -4572,467 +5051,6 @@ mips_skip_prologue (CORE_ADDR pc)
return mips32_skip_prologue (pc);
}
-/* Determine how a return value is stored within the MIPS register
- file, given the return type `valtype'. */
-
-struct return_value_word
-{
- int len;
- int reg;
- int reg_offset;
- int buf_offset;
-};
-
-static void
-return_value_location (struct type *valtype,
- struct return_value_word *hi,
- struct return_value_word *lo)
-{
- int len = TYPE_LENGTH (valtype);
-
- if (TYPE_CODE (valtype) == TYPE_CODE_FLT
- && ((MIPS_FPU_TYPE == MIPS_FPU_DOUBLE && (len == 4 || len == 8))
- || (MIPS_FPU_TYPE == MIPS_FPU_SINGLE && len == 4)))
- {
- if (!FP_REGISTER_DOUBLE && len == 8)
- {
- /* We need to break a 64bit float in two 32 bit halves and
- spread them across a floating-point register pair. */
- lo->buf_offset = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? 4 : 0;
- hi->buf_offset = TARGET_BYTE_ORDER == BFD_ENDIAN_BIG ? 0 : 4;
- lo->reg_offset = ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
- && register_size (current_gdbarch, mips_regnum (current_gdbarch)->fp0) == 8)
- ? 4 : 0);
- hi->reg_offset = lo->reg_offset;
- lo->reg = mips_regnum (current_gdbarch)->fp0 + 0;
- hi->reg = mips_regnum (current_gdbarch)->fp0 + 1;
- lo->len = 4;
- hi->len = 4;
- }
- else
- {
- /* The floating point value fits in a single floating-point
- register. */
- lo->reg_offset = ((TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
- && register_size (current_gdbarch, mips_regnum (current_gdbarch)->fp0) == 8
- && len == 4)
- ? 4 : 0);
- lo->reg = mips_regnum (current_gdbarch)->fp0;
- lo->len = len;
- lo->buf_offset = 0;
- hi->len = 0;
- hi->reg_offset = 0;
- hi->buf_offset = 0;
- hi->reg = 0;
- }
- }
- else
- {
- /* Locate a result possibly spread across two registers. */
- int regnum = 2;
- lo->reg = regnum + 0;
- hi->reg = regnum + 1;
- if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
- && len < MIPS_SAVED_REGSIZE)
- {
- /* "un-left-justify" the value in the low register */
- lo->reg_offset = MIPS_SAVED_REGSIZE - len;
- lo->len = len;
- hi->reg_offset = 0;
- hi->len = 0;
- }
- else if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
- && len > MIPS_SAVED_REGSIZE /* odd-size structs */
- && len < MIPS_SAVED_REGSIZE * 2
- && (TYPE_CODE (valtype) == TYPE_CODE_STRUCT ||
- TYPE_CODE (valtype) == TYPE_CODE_UNION))
- {
- /* "un-left-justify" the value spread across two registers. */
- lo->reg_offset = 2 * MIPS_SAVED_REGSIZE - len;
- lo->len = MIPS_SAVED_REGSIZE - lo->reg_offset;
- hi->reg_offset = 0;
- hi->len = len - lo->len;
- }
- else
- {
- /* Only perform a partial copy of the second register. */
- lo->reg_offset = 0;
- hi->reg_offset = 0;
- if (len > MIPS_SAVED_REGSIZE)
- {
- lo->len = MIPS_SAVED_REGSIZE;
- hi->len = len - MIPS_SAVED_REGSIZE;
- }
- else
- {
- lo->len = len;
- hi->len = 0;
- }
- }
- if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG
- && register_size (current_gdbarch, regnum) == 8
- && MIPS_SAVED_REGSIZE == 4)
- {
- /* Account for the fact that only the least-signficant part
- of the register is being used */
- lo->reg_offset += 4;
- hi->reg_offset += 4;
- }
- lo->buf_offset = 0;
- hi->buf_offset = lo->len;
- }
-}
-
-/* Given a return value in `regbuf' with a type `valtype', extract and
- copy its value into `valbuf'. */
-
-static void
-mips_eabi_extract_return_value (struct type *valtype,
- char regbuf[],
- char *valbuf)
-{
- struct return_value_word lo;
- struct return_value_word hi;
- return_value_location (valtype, &hi, &lo);
-
- memcpy (valbuf + lo.buf_offset,
- regbuf + DEPRECATED_REGISTER_BYTE (NUM_REGS + lo.reg) + lo.reg_offset,
- lo.len);
-
- if (hi.len > 0)
- memcpy (valbuf + hi.buf_offset,
- regbuf + DEPRECATED_REGISTER_BYTE (NUM_REGS + hi.reg) + hi.reg_offset,
- hi.len);
-}
-
-static void
-mips_o64_extract_return_value (struct type *valtype,
- char regbuf[],
- char *valbuf)
-{
- struct return_value_word lo;
- struct return_value_word hi;
- return_value_location (valtype, &hi, &lo);
-
- memcpy (valbuf + lo.buf_offset,
- regbuf + DEPRECATED_REGISTER_BYTE (NUM_REGS + lo.reg) + lo.reg_offset,
- lo.len);
-
- if (hi.len > 0)
- memcpy (valbuf + hi.buf_offset,
- regbuf + DEPRECATED_REGISTER_BYTE (NUM_REGS + hi.reg) + hi.reg_offset,
- hi.len);
-}
-
-/* Given a return value in `valbuf' with a type `valtype', write it's
- value into the appropriate register. */
-
-static void
-mips_eabi_store_return_value (struct type *valtype, char *valbuf)
-{
- char raw_buffer[MAX_REGISTER_SIZE];
- struct return_value_word lo;
- struct return_value_word hi;
- return_value_location (valtype, &hi, &lo);
-
- memset (raw_buffer, 0, sizeof (raw_buffer));
- memcpy (raw_buffer + lo.reg_offset, valbuf + lo.buf_offset, lo.len);
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (lo.reg), raw_buffer,
- register_size (current_gdbarch, lo.reg));
-
- if (hi.len > 0)
- {
- memset (raw_buffer, 0, sizeof (raw_buffer));
- memcpy (raw_buffer + hi.reg_offset, valbuf + hi.buf_offset, hi.len);
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (hi.reg), raw_buffer,
- register_size (current_gdbarch, hi.reg));
- }
-}
-
-static void
-mips_o64_store_return_value (struct type *valtype, char *valbuf)
-{
- char raw_buffer[MAX_REGISTER_SIZE];
- struct return_value_word lo;
- struct return_value_word hi;
- return_value_location (valtype, &hi, &lo);
-
- memset (raw_buffer, 0, sizeof (raw_buffer));
- memcpy (raw_buffer + lo.reg_offset, valbuf + lo.buf_offset, lo.len);
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (lo.reg), raw_buffer,
- register_size (current_gdbarch, lo.reg));
-
- if (hi.len > 0)
- {
- memset (raw_buffer, 0, sizeof (raw_buffer));
- memcpy (raw_buffer + hi.reg_offset, valbuf + hi.buf_offset, hi.len);
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (hi.reg), raw_buffer,
- register_size (current_gdbarch, hi.reg));
- }
-}
-
-/* O32 ABI stuff. */
-
-static enum return_value_convention
-mips_o32_return_value (struct gdbarch *gdbarch, struct type *type,
- struct regcache *regcache,
- void *readbuf, const void *writebuf)
-{
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
-
- if (TYPE_CODE (type)== TYPE_CODE_STRUCT
- || TYPE_CODE (type)== TYPE_CODE_UNION
- || TYPE_CODE (type)== TYPE_CODE_ARRAY)
- return RETURN_VALUE_STRUCT_CONVENTION;
- else if (TYPE_CODE (type) == TYPE_CODE_FLT
- && TYPE_LENGTH (type) == 4
- && tdep->mips_fpu_type != MIPS_FPU_NONE)
- {
- /* A single-precision floating-point value. It fits in the
- least significant part of FP0. */
- if (mips_debug)
- fprintf_unfiltered (gdb_stderr, "Return float in $fp0\n");
- mips_xfer_register (regcache,
- NUM_REGS + mips_regnum (current_gdbarch)->fp0,
- TYPE_LENGTH (type),
- TARGET_BYTE_ORDER, readbuf, writebuf, 0);
- return RETURN_VALUE_REGISTER_CONVENTION;
- }
- else if (TYPE_CODE (type) == TYPE_CODE_FLT
- && TYPE_LENGTH (type) == 8
- && tdep->mips_fpu_type != MIPS_FPU_NONE)
- {
- /* A double-precision floating-point value. The most
- significant part goes in FP1, and the least significant in
- FP0. */
- if (mips_debug)
- fprintf_unfiltered (gdb_stderr, "Return float in $fp1/$fp0\n");
- switch (TARGET_BYTE_ORDER)
- {
- case BFD_ENDIAN_LITTLE:
- mips_xfer_register (regcache,
- NUM_REGS + mips_regnum (current_gdbarch)->fp0 + 0,
- 4, TARGET_BYTE_ORDER, readbuf, writebuf, 0);
- mips_xfer_register (regcache,
- NUM_REGS + mips_regnum (current_gdbarch)->fp0 + 1,
- 4, TARGET_BYTE_ORDER, readbuf, writebuf, 4);
- break;
- case BFD_ENDIAN_BIG:
- mips_xfer_register (regcache,
- NUM_REGS + mips_regnum (current_gdbarch)->fp0 + 1,
- 4, TARGET_BYTE_ORDER, readbuf, writebuf, 0);
- mips_xfer_register (regcache,
- NUM_REGS + mips_regnum (current_gdbarch)->fp0 + 0,
- 4, TARGET_BYTE_ORDER, readbuf, writebuf, 4);
- break;
- default:
- internal_error (__FILE__, __LINE__, "bad switch");
- }
- return RETURN_VALUE_REGISTER_CONVENTION;
- }
-#if 0
- else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
- && TYPE_NFIELDS (type) <= 2
- && TYPE_NFIELDS (type) >= 1
- && ((TYPE_NFIELDS (type) == 1
- && (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
- == TYPE_CODE_FLT))
- || (TYPE_NFIELDS (type) == 2
- && (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
- == TYPE_CODE_FLT)
- && (TYPE_CODE (TYPE_FIELD_TYPE (type, 1))
- == TYPE_CODE_FLT)))
- && tdep->mips_fpu_type != MIPS_FPU_NONE)
- {
- /* A struct that contains one or two floats. Each value is part
- in the least significant part of their floating point
- register.. */
- bfd_byte reg[MAX_REGISTER_SIZE];
- int regnum;
- int field;
- for (field = 0, regnum = mips_regnum (current_gdbarch)->fp0;
- field < TYPE_NFIELDS (type);
- field++, regnum += 2)
- {
- int offset = (FIELD_BITPOS (TYPE_FIELDS (type)[field])
- / TARGET_CHAR_BIT);
- if (mips_debug)
- fprintf_unfiltered (gdb_stderr, "Return float struct+%d\n", offset);
- mips_xfer_register (regcache, NUM_REGS + regnum,
- TYPE_LENGTH (TYPE_FIELD_TYPE (type, field)),
- TARGET_BYTE_ORDER, readbuf, writebuf, offset);
- }
- return RETURN_VALUE_REGISTER_CONVENTION;
- }
-#endif
-#if 0
- else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
- || TYPE_CODE (type) == TYPE_CODE_UNION)
- {
- /* A structure or union. Extract the left justified value,
- regardless of the byte order. I.e. DO NOT USE
- mips_xfer_lower. */
- int offset;
- int regnum;
- for (offset = 0, regnum = V0_REGNUM;
- offset < TYPE_LENGTH (type);
- offset += register_size (current_gdbarch, regnum), regnum++)
- {
- int xfer = register_size (current_gdbarch, regnum);
- if (offset + xfer > TYPE_LENGTH (type))
- xfer = TYPE_LENGTH (type) - offset;
- if (mips_debug)
- fprintf_unfiltered (gdb_stderr, "Return struct+%d:%d in $%d\n",
- offset, xfer, regnum);
- mips_xfer_register (regcache, NUM_REGS + regnum, xfer,
- BFD_ENDIAN_UNKNOWN, readbuf, writebuf, offset);
- }
- return RETURN_VALUE_REGISTER_CONVENTION;
- }
-#endif
- else
- {
- /* A scalar extract each part but least-significant-byte
- justified. o32 thinks registers are 4 byte, regardless of
- the ISA. mips_stack_argsize controls this. */
- int offset;
- int regnum;
- for (offset = 0, regnum = V0_REGNUM;
- offset < TYPE_LENGTH (type);
- offset += mips_stack_argsize (), regnum++)
- {
- int xfer = mips_stack_argsize ();
- int pos = 0;
- if (offset + xfer > TYPE_LENGTH (type))
- xfer = TYPE_LENGTH (type) - offset;
- if (mips_debug)
- fprintf_unfiltered (gdb_stderr, "Return scalar+%d:%d in $%d\n",
- offset, xfer, regnum);
- mips_xfer_register (regcache, NUM_REGS + regnum, xfer,
- TARGET_BYTE_ORDER, readbuf, writebuf, offset);
- }
- return RETURN_VALUE_REGISTER_CONVENTION;
- }
-}
-
-/* N32/N44 ABI stuff. */
-
-static enum return_value_convention
-mips_n32n64_return_value (struct gdbarch *gdbarch,
- struct type *type, struct regcache *regcache,
- void *readbuf, const void *writebuf)
-{
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
- if (TYPE_CODE (type)== TYPE_CODE_STRUCT
- || TYPE_CODE (type)== TYPE_CODE_UNION
- || TYPE_CODE (type)== TYPE_CODE_ARRAY
- || TYPE_LENGTH (type) > 2 * MIPS_SAVED_REGSIZE)
- return RETURN_VALUE_STRUCT_CONVENTION;
- else if (TYPE_CODE (type) == TYPE_CODE_FLT
- && tdep->mips_fpu_type != MIPS_FPU_NONE)
- {
- /* A floating-point value belongs in the least significant part
- of FP0. */
- if (mips_debug)
- fprintf_unfiltered (gdb_stderr, "Return float in $fp0\n");
- mips_xfer_register (regcache,
- NUM_REGS + mips_regnum (current_gdbarch)->fp0,
- TYPE_LENGTH (type),
- TARGET_BYTE_ORDER, readbuf, writebuf, 0);
- return RETURN_VALUE_REGISTER_CONVENTION;
- }
- else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
- && TYPE_NFIELDS (type) <= 2
- && TYPE_NFIELDS (type) >= 1
- && ((TYPE_NFIELDS (type) == 1
- && (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
- == TYPE_CODE_FLT))
- || (TYPE_NFIELDS (type) == 2
- && (TYPE_CODE (TYPE_FIELD_TYPE (type, 0))
- == TYPE_CODE_FLT)
- && (TYPE_CODE (TYPE_FIELD_TYPE (type, 1))
- == TYPE_CODE_FLT)))
- && tdep->mips_fpu_type != MIPS_FPU_NONE)
- {
- /* A struct that contains one or two floats. Each value is part
- in the least significant part of their floating point
- register.. */
- bfd_byte reg[MAX_REGISTER_SIZE];
- int regnum;
- int field;
- for (field = 0, regnum = mips_regnum (current_gdbarch)->fp0;
- field < TYPE_NFIELDS (type);
- field++, regnum += 2)
- {
- int offset = (FIELD_BITPOS (TYPE_FIELDS (type)[field])
- / TARGET_CHAR_BIT);
- if (mips_debug)
- fprintf_unfiltered (gdb_stderr, "Return float struct+%d\n", offset);
- mips_xfer_register (regcache, NUM_REGS + regnum,
- TYPE_LENGTH (TYPE_FIELD_TYPE (type, field)),
- TARGET_BYTE_ORDER, readbuf, writebuf, offset);
- }
- return RETURN_VALUE_REGISTER_CONVENTION;
- }
- else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
- || TYPE_CODE (type) == TYPE_CODE_UNION)
- {
- /* A structure or union. Extract the left justified value,
- regardless of the byte order. I.e. DO NOT USE
- mips_xfer_lower. */
- int offset;
- int regnum;
- for (offset = 0, regnum = V0_REGNUM;
- offset < TYPE_LENGTH (type);
- offset += register_size (current_gdbarch, regnum), regnum++)
- {
- int xfer = register_size (current_gdbarch, regnum);
- if (offset + xfer > TYPE_LENGTH (type))
- xfer = TYPE_LENGTH (type) - offset;
- if (mips_debug)
- fprintf_unfiltered (gdb_stderr, "Return struct+%d:%d in $%d\n",
- offset, xfer, regnum);
- mips_xfer_register (regcache, NUM_REGS + regnum, xfer,
- BFD_ENDIAN_UNKNOWN, readbuf, writebuf, offset);
- }
- return RETURN_VALUE_REGISTER_CONVENTION;
- }
- else
- {
- /* A scalar extract each part but least-significant-byte
- justified. */
- int offset;
- int regnum;
- for (offset = 0, regnum = V0_REGNUM;
- offset < TYPE_LENGTH (type);
- offset += register_size (current_gdbarch, regnum), regnum++)
- {
- int xfer = register_size (current_gdbarch, regnum);
- int pos = 0;
- if (offset + xfer > TYPE_LENGTH (type))
- xfer = TYPE_LENGTH (type) - offset;
- if (mips_debug)
- fprintf_unfiltered (gdb_stderr, "Return scalar+%d:%d in $%d\n",
- offset, xfer, regnum);
- mips_xfer_register (regcache, NUM_REGS + regnum, xfer,
- TARGET_BYTE_ORDER, readbuf, writebuf, offset);
- }
- return RETURN_VALUE_REGISTER_CONVENTION;
- }
-}
-
-static CORE_ADDR
-mips_extract_struct_value_address (struct regcache *regcache)
-{
- /* FIXME: This will only work at random. The caller passes the
- struct_return address in V0, but it is not preserved. It may
- still be there, or this may be a random value. */
- LONGEST val;
-
- regcache_cooked_read_signed (regcache, V0_REGNUM, &val);
- return val;
-}
-
/* Exported procedure: Is PC in the signal trampoline code */
static int
@@ -5055,7 +5073,8 @@ show_mips_command (char *args, int from_tty)
static void
set_mips_command (char *args, int from_tty)
{
- printf_unfiltered ("\"set mips\" must be followed by an appropriate subcommand.\n");
+ printf_unfiltered
+ ("\"set mips\" must be followed by an appropriate subcommand.\n");
help_list (setmipscmdlist, "set mips ", all_commands, gdb_stdout);
}
@@ -5080,43 +5099,63 @@ show_mipsfpu_command (char *args, int from_tty)
internal_error (__FILE__, __LINE__, "bad switch");
}
if (mips_fpu_type_auto)
- printf_unfiltered ("The MIPS floating-point coprocessor is set automatically (currently %s)\n",
- fpu);
+ printf_unfiltered
+ ("The MIPS floating-point coprocessor is set automatically (currently %s)\n",
+ fpu);
else
- printf_unfiltered ("The MIPS floating-point coprocessor is assumed to be %s\n",
- fpu);
+ printf_unfiltered
+ ("The MIPS floating-point coprocessor is assumed to be %s\n", fpu);
}
static void
set_mipsfpu_command (char *args, int from_tty)
{
- printf_unfiltered ("\"set mipsfpu\" must be followed by \"double\", \"single\",\"none\" or \"auto\".\n");
+ printf_unfiltered
+ ("\"set mipsfpu\" must be followed by \"double\", \"single\",\"none\" or \"auto\".\n");
show_mipsfpu_command (args, from_tty);
}
static void
set_mipsfpu_single_command (char *args, int from_tty)
{
+ struct gdbarch_info info;
+ gdbarch_info_init (&info);
mips_fpu_type = MIPS_FPU_SINGLE;
mips_fpu_type_auto = 0;
- gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_SINGLE;
+ /* FIXME: cagney/2003-11-15: Should be setting a field in "info"
+ instead of relying on globals. Doing that would let generic code
+ handle the search for this specific architecture. */
+ if (!gdbarch_update_p (info))
+ internal_error (__FILE__, __LINE__, "set mipsfpu failed");
}
static void
set_mipsfpu_double_command (char *args, int from_tty)
{
+ struct gdbarch_info info;
+ gdbarch_info_init (&info);
mips_fpu_type = MIPS_FPU_DOUBLE;
mips_fpu_type_auto = 0;
- gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_DOUBLE;
+ /* FIXME: cagney/2003-11-15: Should be setting a field in "info"
+ instead of relying on globals. Doing that would let generic code
+ handle the search for this specific architecture. */
+ if (!gdbarch_update_p (info))
+ internal_error (__FILE__, __LINE__, "set mipsfpu failed");
}
static void
set_mipsfpu_none_command (char *args, int from_tty)
{
+ struct gdbarch_info info;
+ gdbarch_info_init (&info);
mips_fpu_type = MIPS_FPU_NONE;
mips_fpu_type_auto = 0;
- gdbarch_tdep (current_gdbarch)->mips_fpu_type = MIPS_FPU_NONE;
+ /* FIXME: cagney/2003-11-15: Should be setting a field in "info"
+ instead of relying on globals. Doing that would let generic code
+ handle the search for this specific architecture. */
+ if (!gdbarch_update_p (info))
+ internal_error (__FILE__, __LINE__, "set mipsfpu failed");
}
static void
@@ -5178,23 +5217,22 @@ gdb_print_insn_mips (bfd_vma memaddr, struct disassemble_info *info)
if (proc_desc)
{
if (pc_is_mips16 (PROC_LOW_ADDR (proc_desc)))
- info->mach = bfd_mach_mips16;
+ info->mach = bfd_mach_mips16;
}
else
{
if (pc_is_mips16 (memaddr))
- info->mach = bfd_mach_mips16;
- }
+ info->mach = bfd_mach_mips16;
+ }
/* Round down the instruction address to the appropriate boundary. */
memaddr &= (info->mach == bfd_mach_mips16 ? ~1 : ~3);
/* Set the disassembler options. */
- if (tdep->mips_abi == MIPS_ABI_N32
- || tdep->mips_abi == MIPS_ABI_N64)
+ if (tdep->mips_abi == MIPS_ABI_N32 || tdep->mips_abi == MIPS_ABI_N64)
{
/* Set up the disassembler info, so that we get the right
- register names from libopcodes. */
+ register names from libopcodes. */
if (tdep->mips_abi == MIPS_ABI_N32)
info->disassembler_options = "gpr-names=n32";
else
@@ -5224,13 +5262,13 @@ gdb_print_insn_mips (bfd_vma memaddr, struct disassemble_info *info)
breakpoint should be inserted. */
static const unsigned char *
-mips_breakpoint_from_pc (CORE_ADDR * pcptr, int *lenptr)
+mips_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
{
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
if (pc_is_mips16 (*pcptr))
{
- static unsigned char mips16_big_breakpoint[] = {0xe8, 0xa5};
+ static unsigned char mips16_big_breakpoint[] = { 0xe8, 0xa5 };
*pcptr = unmake_mips16_addr (*pcptr);
*lenptr = sizeof (mips16_big_breakpoint);
return mips16_big_breakpoint;
@@ -5240,9 +5278,9 @@ mips_breakpoint_from_pc (CORE_ADDR * pcptr, int *lenptr)
/* The IDT board uses an unusual breakpoint value, and
sometimes gets confused when it sees the usual MIPS
breakpoint instruction. */
- static unsigned char big_breakpoint[] = {0, 0x5, 0, 0xd};
- static unsigned char pmon_big_breakpoint[] = {0, 0, 0, 0xd};
- static unsigned char idt_big_breakpoint[] = {0, 0, 0x0a, 0xd};
+ static unsigned char big_breakpoint[] = { 0, 0x5, 0, 0xd };
+ static unsigned char pmon_big_breakpoint[] = { 0, 0, 0, 0xd };
+ static unsigned char idt_big_breakpoint[] = { 0, 0, 0x0a, 0xd };
*lenptr = sizeof (big_breakpoint);
@@ -5260,16 +5298,16 @@ mips_breakpoint_from_pc (CORE_ADDR * pcptr, int *lenptr)
{
if (pc_is_mips16 (*pcptr))
{
- static unsigned char mips16_little_breakpoint[] = {0xa5, 0xe8};
+ static unsigned char mips16_little_breakpoint[] = { 0xa5, 0xe8 };
*pcptr = unmake_mips16_addr (*pcptr);
*lenptr = sizeof (mips16_little_breakpoint);
return mips16_little_breakpoint;
}
else
{
- static unsigned char little_breakpoint[] = {0xd, 0, 0x5, 0};
- static unsigned char pmon_little_breakpoint[] = {0xd, 0, 0, 0};
- static unsigned char idt_little_breakpoint[] = {0xd, 0x0a, 0, 0};
+ static unsigned char little_breakpoint[] = { 0xd, 0, 0x5, 0 };
+ static unsigned char pmon_little_breakpoint[] = { 0xd, 0, 0, 0 };
+ static unsigned char idt_little_breakpoint[] = { 0xd, 0x0a, 0, 0 };
*lenptr = sizeof (little_breakpoint);
@@ -5352,7 +5390,8 @@ mips_skip_stub (CORE_ADDR pc)
int i;
/* See if the name of the target function is __fn_stub_*. */
- if (find_pc_partial_function (target_pc, &name, NULL, NULL) == 0)
+ if (find_pc_partial_function (target_pc, &name, NULL, NULL) ==
+ 0)
return target_pc;
if (strncmp (name, "__fn_stub_", 10) != 0
&& strcmp (name, "etext") != 0
@@ -5394,7 +5433,8 @@ mips_in_call_stub (CORE_ADDR pc, char *name)
/* Find the starting address of the function containing the PC. If the
caller didn't give us a name, look it up at the same time. */
- if (find_pc_partial_function (pc, name ? NULL : &name, &start_addr, NULL) == 0)
+ if (find_pc_partial_function (pc, name ? NULL : &name, &start_addr, NULL) ==
+ 0)
return 0;
if (strncmp (name, "__mips16_call_stub_", 19) == 0)
@@ -5432,8 +5472,7 @@ mips_in_return_stub (CORE_ADDR pc, char *name)
/* If the PC is in __mips16_call_stub_{s,d}f_{0..10} but not at the start,
i.e. after the jal instruction, this is effectively a return stub. */
if (strncmp (name, "__mips16_call_stub_", 19) == 0
- && (name[19] == 's' || name[19] == 'd')
- && pc != start_addr)
+ && (name[19] == 's' || name[19] == 'd') && pc != start_addr)
return 1;
return 0; /* not a stub */
@@ -5473,8 +5512,7 @@ mips_get_saved_register (char *raw_buffer,
int *optimizedp,
CORE_ADDR *addrp,
struct frame_info *frame,
- int regnum,
- enum lval_type *lvalp)
+ int regnum, enum lval_type *lvalp)
{
CORE_ADDR addrx;
enum lval_type lvalx;
@@ -5576,7 +5614,7 @@ mips_register_sim_regno (int regnum)
&& REGISTER_NAME (NUM_REGS + regnum)[0] != '\0')
return regnum;
else
- return LEGACY_SIM_REGNO_IGNORE;
+ return LEGACY_SIM_REGNO_IGNORE;
}
@@ -5631,74 +5669,75 @@ global_mips_abi (void)
if (mips_abi_strings[i] == mips_abi_string)
return (enum mips_abi) i;
- internal_error (__FILE__, __LINE__,
- "unknown ABI string");
+ internal_error (__FILE__, __LINE__, "unknown ABI string");
}
static struct gdbarch *
-mips_gdbarch_init (struct gdbarch_info info,
- struct gdbarch_list *arches)
+mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
{
struct gdbarch *gdbarch;
struct gdbarch_tdep *tdep;
int elf_flags;
enum mips_abi mips_abi, found_abi, wanted_abi;
int num_regs;
+ enum mips_fpu_type fpu_type;
- elf_flags = 0;
-
- if (info.abfd)
- {
- /* First of all, extract the elf_flags, if available. */
- if (bfd_get_flavour (info.abfd) == bfd_target_elf_flavour)
- elf_flags = elf_elfheader (info.abfd)->e_flags;
- }
+ /* First of all, extract the elf_flags, if available. */
+ if (info.abfd && bfd_get_flavour (info.abfd) == bfd_target_elf_flavour)
+ elf_flags = elf_elfheader (info.abfd)->e_flags;
+ else if (arches != NULL)
+ elf_flags = gdbarch_tdep (arches->gdbarch)->elf_flags;
+ else
+ elf_flags = 0;
+ if (gdbarch_debug)
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: elf_flags = 0x%08x\n", elf_flags);
/* Check ELF_FLAGS to see if it specifies the ABI being used. */
switch ((elf_flags & EF_MIPS_ABI))
{
case E_MIPS_ABI_O32:
- mips_abi = MIPS_ABI_O32;
+ found_abi = MIPS_ABI_O32;
break;
case E_MIPS_ABI_O64:
- mips_abi = MIPS_ABI_O64;
+ found_abi = MIPS_ABI_O64;
break;
case E_MIPS_ABI_EABI32:
- mips_abi = MIPS_ABI_EABI32;
+ found_abi = MIPS_ABI_EABI32;
break;
case E_MIPS_ABI_EABI64:
- mips_abi = MIPS_ABI_EABI64;
+ found_abi = MIPS_ABI_EABI64;
break;
default:
if ((elf_flags & EF_MIPS_ABI2))
- mips_abi = MIPS_ABI_N32;
+ found_abi = MIPS_ABI_N32;
else
- mips_abi = MIPS_ABI_UNKNOWN;
+ found_abi = MIPS_ABI_UNKNOWN;
break;
}
/* GCC creates a pseudo-section whose name describes the ABI. */
- if (mips_abi == MIPS_ABI_UNKNOWN && info.abfd != NULL)
- bfd_map_over_sections (info.abfd, mips_find_abi_section, &mips_abi);
+ if (found_abi == MIPS_ABI_UNKNOWN && info.abfd != NULL)
+ bfd_map_over_sections (info.abfd, mips_find_abi_section, &found_abi);
- /* If we have no bfd, then mips_abi will still be MIPS_ABI_UNKNOWN.
- Use the ABI from the last architecture if there is one. */
- if (info.abfd == NULL && arches != NULL)
- mips_abi = gdbarch_tdep (arches->gdbarch)->found_abi;
+ /* If we have no usefu BFD information, use the ABI from the last
+ MIPS architecture (if there is one). */
+ if (found_abi == MIPS_ABI_UNKNOWN && info.abfd == NULL && arches != NULL)
+ found_abi = gdbarch_tdep (arches->gdbarch)->found_abi;
/* Try the architecture for any hint of the correct ABI. */
- if (mips_abi == MIPS_ABI_UNKNOWN
+ if (found_abi == MIPS_ABI_UNKNOWN
&& info.bfd_arch_info != NULL
&& info.bfd_arch_info->arch == bfd_arch_mips)
{
switch (info.bfd_arch_info->mach)
{
case bfd_mach_mips3900:
- mips_abi = MIPS_ABI_EABI32;
+ found_abi = MIPS_ABI_EABI32;
break;
case bfd_mach_mips4100:
case bfd_mach_mips5000:
- mips_abi = MIPS_ABI_EABI64;
+ found_abi = MIPS_ABI_EABI64;
break;
case bfd_mach_mips8000:
case bfd_mach_mips10000:
@@ -5707,35 +5746,67 @@ mips_gdbarch_init (struct gdbarch_info info,
on IRIX. (Even for executables created by gcc.) */
if (bfd_get_flavour (info.abfd) == bfd_target_elf_flavour
&& elf_elfheader (info.abfd)->e_ident[EI_CLASS] == ELFCLASS64)
- mips_abi = MIPS_ABI_N64;
+ found_abi = MIPS_ABI_N64;
else
- mips_abi = MIPS_ABI_N32;
+ found_abi = MIPS_ABI_N32;
break;
}
}
- if (mips_abi == MIPS_ABI_UNKNOWN)
- mips_abi = MIPS_ABI_O32;
+ if (gdbarch_debug)
+ fprintf_unfiltered (gdb_stdlog, "mips_gdbarch_init: found_abi = %d\n",
+ found_abi);
+
+ /* What has the user specified from the command line? */
+ wanted_abi = global_mips_abi ();
+ if (gdbarch_debug)
+ fprintf_unfiltered (gdb_stdlog, "mips_gdbarch_init: wanted_abi = %d\n",
+ wanted_abi);
/* Now that we have found what the ABI for this binary would be,
check whether the user is overriding it. */
- found_abi = mips_abi;
- wanted_abi = global_mips_abi ();
if (wanted_abi != MIPS_ABI_UNKNOWN)
mips_abi = wanted_abi;
+ else if (found_abi != MIPS_ABI_UNKNOWN)
+ mips_abi = found_abi;
+ else
+ mips_abi = MIPS_ABI_O32;
+ if (gdbarch_debug)
+ fprintf_unfiltered (gdb_stdlog, "mips_gdbarch_init: mips_abi = %d\n",
+ mips_abi);
+ /* Also used when doing an architecture lookup. */
if (gdbarch_debug)
- {
- fprintf_unfiltered (gdb_stdlog,
- "mips_gdbarch_init: elf_flags = 0x%08x\n",
- elf_flags);
- fprintf_unfiltered (gdb_stdlog,
- "mips_gdbarch_init: mips_abi = %d\n",
- mips_abi);
- fprintf_unfiltered (gdb_stdlog,
- "mips_gdbarch_init: found_mips_abi = %d\n",
- found_abi);
- }
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: mips64_transfers_32bit_regs_p = %d\n",
+ mips64_transfers_32bit_regs_p);
+
+ /* Determine the MIPS FPU type. */
+ if (!mips_fpu_type_auto)
+ fpu_type = mips_fpu_type;
+ else if (info.bfd_arch_info != NULL
+ && info.bfd_arch_info->arch == bfd_arch_mips)
+ switch (info.bfd_arch_info->mach)
+ {
+ case bfd_mach_mips3900:
+ case bfd_mach_mips4100:
+ case bfd_mach_mips4111:
+ fpu_type = MIPS_FPU_NONE;
+ break;
+ case bfd_mach_mips4650:
+ fpu_type = MIPS_FPU_SINGLE;
+ break;
+ default:
+ fpu_type = MIPS_FPU_DOUBLE;
+ break;
+ }
+ else if (arches != NULL)
+ fpu_type = gdbarch_tdep (arches->gdbarch)->mips_fpu_type;
+ else
+ fpu_type = MIPS_FPU_DOUBLE;
+ if (gdbarch_debug)
+ fprintf_unfiltered (gdb_stdlog,
+ "mips_gdbarch_init: fpu_type = %d\n", fpu_type);
/* try to find a pre-existing architecture */
for (arches = gdbarch_list_lookup_by_info (arches, &info);
@@ -5753,6 +5824,9 @@ mips_gdbarch_init (struct gdbarch_info info,
if (gdbarch_tdep (arches->gdbarch)->mips64_transfers_32bit_regs_p
!= mips64_transfers_32bit_regs_p)
continue;
+ /* Be pedantic about which FPU is selected. */
+ if (gdbarch_tdep (arches->gdbarch)->mips_fpu_type != fpu_type)
+ continue;
return arches->gdbarch;
}
@@ -5761,6 +5835,9 @@ mips_gdbarch_init (struct gdbarch_info info,
gdbarch = gdbarch_alloc (&info, tdep);
tdep->elf_flags = elf_flags;
tdep->mips64_transfers_32bit_regs_p = mips64_transfers_32bit_regs_p;
+ tdep->found_abi = found_abi;
+ tdep->mips_abi = mips_abi;
+ tdep->mips_fpu_type = fpu_type;
/* Initially set everything according to the default ABI/ISA. */
set_gdbarch_short_bit (gdbarch, 16);
@@ -5771,17 +5848,15 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_register_reggroup_p (gdbarch, mips_register_reggroup_p);
set_gdbarch_pseudo_register_read (gdbarch, mips_pseudo_register_read);
set_gdbarch_pseudo_register_write (gdbarch, mips_pseudo_register_write);
- tdep->found_abi = found_abi;
- tdep->mips_abi = mips_abi;
- set_gdbarch_elf_make_msymbol_special (gdbarch,
+ set_gdbarch_elf_make_msymbol_special (gdbarch,
mips_elf_make_msymbol_special);
- /* Fill in the OS dependant register numbers. */
+ /* Fill in the OS dependant register numbers and names. */
{
+ const char **reg_names;
struct mips_regnum *regnum = GDBARCH_OBSTACK_ZALLOC (gdbarch,
struct mips_regnum);
- tdep->regnum = regnum;
if (info.osabi == GDB_OSABI_IRIX)
{
regnum->fp0 = 32;
@@ -5793,6 +5868,7 @@ mips_gdbarch_init (struct gdbarch_info info,
regnum->fp_control_status = 69;
regnum->fp_implementation_revision = 70;
num_regs = 71;
+ reg_names = mips_irix_reg_names;
}
else
{
@@ -5805,6 +5881,11 @@ mips_gdbarch_init (struct gdbarch_info info,
regnum->fp_control_status = 70;
regnum->fp_implementation_revision = 71;
num_regs = 90;
+ if (info.bfd_arch_info != NULL
+ && info.bfd_arch_info->mach == bfd_mach_mips3900)
+ reg_names = mips_tx39_reg_names;
+ else
+ reg_names = mips_generic_reg_names;
}
/* FIXME: cagney/2003-11-15: For MIPS, hasn't PC_REGNUM been
replaced by read_pc? */
@@ -5812,6 +5893,9 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_fp0_regnum (gdbarch, regnum->fp0);
set_gdbarch_num_regs (gdbarch, num_regs);
set_gdbarch_num_pseudo_regs (gdbarch, num_regs);
+ set_gdbarch_register_name (gdbarch, mips_register_name);
+ tdep->mips_processor_reg_names = reg_names;
+ tdep->regnum = regnum;
}
switch (mips_abi)
@@ -5828,13 +5912,13 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_long_bit (gdbarch, 32);
set_gdbarch_ptr_bit (gdbarch, 32);
set_gdbarch_long_long_bit (gdbarch, 64);
- set_gdbarch_deprecated_reg_struct_has_addr
- (gdbarch, mips_o32_reg_struct_has_addr);
break;
case MIPS_ABI_O64:
set_gdbarch_push_dummy_call (gdbarch, mips_o64_push_dummy_call);
- set_gdbarch_deprecated_store_return_value (gdbarch, mips_o64_store_return_value);
- set_gdbarch_deprecated_extract_return_value (gdbarch, mips_o64_extract_return_value);
+ set_gdbarch_deprecated_store_return_value (gdbarch,
+ mips_o64_store_return_value);
+ set_gdbarch_deprecated_extract_return_value (gdbarch,
+ mips_o64_extract_return_value);
tdep->mips_default_saved_regsize = 8;
tdep->mips_default_stack_argsize = 8;
tdep->mips_fp_register_double = 1;
@@ -5844,14 +5928,15 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_long_bit (gdbarch, 32);
set_gdbarch_ptr_bit (gdbarch, 32);
set_gdbarch_long_long_bit (gdbarch, 64);
- set_gdbarch_deprecated_reg_struct_has_addr
- (gdbarch, mips_o32_reg_struct_has_addr);
- set_gdbarch_use_struct_convention (gdbarch, always_use_struct_convention);
+ set_gdbarch_use_struct_convention (gdbarch,
+ always_use_struct_convention);
break;
case MIPS_ABI_EABI32:
set_gdbarch_push_dummy_call (gdbarch, mips_eabi_push_dummy_call);
- set_gdbarch_deprecated_store_return_value (gdbarch, mips_eabi_store_return_value);
- set_gdbarch_deprecated_extract_return_value (gdbarch, mips_eabi_extract_return_value);
+ set_gdbarch_deprecated_store_return_value (gdbarch,
+ mips_eabi_store_return_value);
+ set_gdbarch_deprecated_extract_return_value (gdbarch,
+ mips_eabi_extract_return_value);
tdep->mips_default_saved_regsize = 4;
tdep->mips_default_stack_argsize = 4;
tdep->mips_fp_register_double = 0;
@@ -5863,13 +5948,15 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_long_long_bit (gdbarch, 64);
set_gdbarch_deprecated_reg_struct_has_addr
(gdbarch, mips_eabi_reg_struct_has_addr);
- set_gdbarch_use_struct_convention (gdbarch,
+ set_gdbarch_use_struct_convention (gdbarch,
mips_eabi_use_struct_convention);
break;
case MIPS_ABI_EABI64:
set_gdbarch_push_dummy_call (gdbarch, mips_eabi_push_dummy_call);
- set_gdbarch_deprecated_store_return_value (gdbarch, mips_eabi_store_return_value);
- set_gdbarch_deprecated_extract_return_value (gdbarch, mips_eabi_extract_return_value);
+ set_gdbarch_deprecated_store_return_value (gdbarch,
+ mips_eabi_store_return_value);
+ set_gdbarch_deprecated_extract_return_value (gdbarch,
+ mips_eabi_extract_return_value);
tdep->mips_default_saved_regsize = 8;
tdep->mips_default_stack_argsize = 8;
tdep->mips_fp_register_double = 1;
@@ -5881,7 +5968,7 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_long_long_bit (gdbarch, 64);
set_gdbarch_deprecated_reg_struct_has_addr
(gdbarch, mips_eabi_reg_struct_has_addr);
- set_gdbarch_use_struct_convention (gdbarch,
+ set_gdbarch_use_struct_convention (gdbarch,
mips_eabi_use_struct_convention);
break;
case MIPS_ABI_N32:
@@ -5896,8 +5983,6 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_long_bit (gdbarch, 32);
set_gdbarch_ptr_bit (gdbarch, 32);
set_gdbarch_long_long_bit (gdbarch, 64);
- set_gdbarch_deprecated_reg_struct_has_addr
- (gdbarch, mips_n32n64_reg_struct_has_addr);
break;
case MIPS_ABI_N64:
set_gdbarch_push_dummy_call (gdbarch, mips_n32n64_push_dummy_call);
@@ -5911,12 +5996,9 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_long_bit (gdbarch, 64);
set_gdbarch_ptr_bit (gdbarch, 64);
set_gdbarch_long_long_bit (gdbarch, 64);
- set_gdbarch_deprecated_reg_struct_has_addr
- (gdbarch, mips_n32n64_reg_struct_has_addr);
break;
default:
- internal_error (__FILE__, __LINE__,
- "unknown ABI in switch");
+ internal_error (__FILE__, __LINE__, "unknown ABI in switch");
}
/* FIXME: jlarmour/2000-04-07: There *is* a flag EF_MIPS_32BIT_MODE
@@ -5940,39 +6022,9 @@ mips_gdbarch_init (struct gdbarch_info info,
the current gcc - it would make GDB treat these 64-bit programs
as 32-bit programs by default. */
- /* enable/disable the MIPS FPU */
- if (!mips_fpu_type_auto)
- tdep->mips_fpu_type = mips_fpu_type;
- else if (info.bfd_arch_info != NULL
- && info.bfd_arch_info->arch == bfd_arch_mips)
- switch (info.bfd_arch_info->mach)
- {
- case bfd_mach_mips3900:
- case bfd_mach_mips4100:
- case bfd_mach_mips4111:
- tdep->mips_fpu_type = MIPS_FPU_NONE;
- break;
- case bfd_mach_mips4650:
- tdep->mips_fpu_type = MIPS_FPU_SINGLE;
- break;
- default:
- tdep->mips_fpu_type = MIPS_FPU_DOUBLE;
- break;
- }
- else
- tdep->mips_fpu_type = MIPS_FPU_DOUBLE;
-
- /* MIPS version of register names. */
- set_gdbarch_register_name (gdbarch, mips_register_name);
- if (info.osabi == GDB_OSABI_IRIX)
- tdep->mips_processor_reg_names = mips_irix_reg_names;
- else if (info.bfd_arch_info != NULL && info.bfd_arch_info->mach == bfd_mach_mips3900)
- tdep->mips_processor_reg_names = mips_tx39_reg_names;
- else
- tdep->mips_processor_reg_names = mips_generic_reg_names;
set_gdbarch_read_pc (gdbarch, mips_read_pc);
- set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
- set_gdbarch_deprecated_target_read_fp (gdbarch, mips_read_sp); /* Draft FRAME base. */
+ set_gdbarch_write_pc (gdbarch, mips_write_pc);
+ set_gdbarch_deprecated_target_read_fp (gdbarch, mips_read_sp); /* Draft FRAME base. */
set_gdbarch_read_sp (gdbarch, mips_read_sp);
/* Add/remove bits from an address. The MIPS needs be careful to
@@ -5981,18 +6033,24 @@ mips_gdbarch_init (struct gdbarch_info info,
/* There's a mess in stack frame creation. See comments in
blockframe.c near reference to DEPRECATED_INIT_FRAME_PC_FIRST. */
- set_gdbarch_deprecated_init_frame_pc_first (gdbarch, mips_init_frame_pc_first);
+ set_gdbarch_deprecated_init_frame_pc_first (gdbarch,
+ mips_init_frame_pc_first);
/* Map debug register numbers onto internal register numbers. */
set_gdbarch_stab_reg_to_regnum (gdbarch, mips_stab_reg_to_regnum);
- set_gdbarch_ecoff_reg_to_regnum (gdbarch, mips_dwarf_dwarf2_ecoff_reg_to_regnum);
- set_gdbarch_dwarf_reg_to_regnum (gdbarch, mips_dwarf_dwarf2_ecoff_reg_to_regnum);
- set_gdbarch_dwarf2_reg_to_regnum (gdbarch, mips_dwarf_dwarf2_ecoff_reg_to_regnum);
+ set_gdbarch_ecoff_reg_to_regnum (gdbarch,
+ mips_dwarf_dwarf2_ecoff_reg_to_regnum);
+ set_gdbarch_dwarf_reg_to_regnum (gdbarch,
+ mips_dwarf_dwarf2_ecoff_reg_to_regnum);
+ set_gdbarch_dwarf2_reg_to_regnum (gdbarch,
+ mips_dwarf_dwarf2_ecoff_reg_to_regnum);
set_gdbarch_register_sim_regno (gdbarch, mips_register_sim_regno);
/* Initialize a frame */
- set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, mips_find_saved_regs);
- set_gdbarch_deprecated_init_extra_frame_info (gdbarch, mips_init_extra_frame_info);
+ set_gdbarch_deprecated_frame_init_saved_regs (gdbarch,
+ mips_find_saved_regs);
+ set_gdbarch_deprecated_init_extra_frame_info (gdbarch,
+ mips_init_extra_frame_info);
/* MIPS version of CALL_DUMMY */
@@ -6002,29 +6060,33 @@ mips_gdbarch_init (struct gdbarch_info info,
set_gdbarch_call_dummy_location (gdbarch, AT_SYMBOL);
set_gdbarch_deprecated_pop_frame (gdbarch, mips_pop_frame);
set_gdbarch_frame_align (gdbarch, mips_frame_align);
- set_gdbarch_deprecated_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos);
+ set_gdbarch_deprecated_save_dummy_frame_tos (gdbarch,
+ generic_save_dummy_frame_tos);
+
+ set_gdbarch_convert_register_p (gdbarch, mips_convert_register_p);
+ set_gdbarch_register_to_value (gdbarch, mips_register_to_value);
+ set_gdbarch_value_to_register (gdbarch, mips_value_to_register);
set_gdbarch_deprecated_frame_chain (gdbarch, mips_frame_chain);
- set_gdbarch_frameless_function_invocation (gdbarch,
+ set_gdbarch_frameless_function_invocation (gdbarch,
generic_frameless_function_invocation_not);
set_gdbarch_deprecated_frame_saved_pc (gdbarch, mips_frame_saved_pc);
set_gdbarch_frame_args_skip (gdbarch, 0);
- set_gdbarch_deprecated_get_saved_register (gdbarch, mips_get_saved_register);
+ set_gdbarch_deprecated_get_saved_register (gdbarch,
+ mips_get_saved_register);
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
set_gdbarch_breakpoint_from_pc (gdbarch, mips_breakpoint_from_pc);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
set_gdbarch_skip_prologue (gdbarch, mips_skip_prologue);
- set_gdbarch_deprecated_saved_pc_after_call (gdbarch, mips_saved_pc_after_call);
+ set_gdbarch_deprecated_saved_pc_after_call (gdbarch,
+ mips_saved_pc_after_call);
set_gdbarch_pointer_to_address (gdbarch, signed_pointer_to_address);
set_gdbarch_address_to_pointer (gdbarch, address_to_signed_pointer);
set_gdbarch_integer_to_address (gdbarch, mips_integer_to_address);
- set_gdbarch_function_start_offset (gdbarch, 0);
-
set_gdbarch_register_type (gdbarch, mips_register_type);
set_gdbarch_print_registers_info (gdbarch, mips_print_registers_info);
@@ -6043,9 +6105,6 @@ mips_gdbarch_init (struct gdbarch_info info,
/* Hook in OS ABI-specific overrides, if they have been registered. */
gdbarch_init_osabi (info, gdbarch);
- set_gdbarch_extract_struct_value_address (gdbarch,
- mips_extract_struct_value_address);
-
set_gdbarch_skip_trampoline_code (gdbarch, mips_skip_stub);
set_gdbarch_in_solib_call_trampoline (gdbarch, mips_in_call_stub);
@@ -6055,8 +6114,7 @@ mips_gdbarch_init (struct gdbarch_info info,
}
static void
-mips_abi_update (char *ignore_args, int from_tty,
- struct cmd_list_element *c)
+mips_abi_update (char *ignore_args, int from_tty, struct cmd_list_element *c)
{
struct gdbarch_info info;
@@ -6072,8 +6130,8 @@ static void
show_mips_abi (char *ignore_args, int from_tty)
{
if (gdbarch_bfd_arch_info (current_gdbarch)->arch != bfd_arch_mips)
- printf_filtered (
- "The MIPS ABI is unknown because the current architecture is not MIPS.\n");
+ printf_filtered
+ ("The MIPS ABI is unknown because the current architecture is not MIPS.\n");
else
{
enum mips_abi global_abi = global_mips_abi ();
@@ -6081,19 +6139,19 @@ show_mips_abi (char *ignore_args, int from_tty)
const char *actual_abi_str = mips_abi_strings[actual_abi];
if (global_abi == MIPS_ABI_UNKNOWN)
- printf_filtered ("The MIPS ABI is set automatically (currently \"%s\").\n",
- actual_abi_str);
+ printf_filtered
+ ("The MIPS ABI is set automatically (currently \"%s\").\n",
+ actual_abi_str);
else if (global_abi == actual_abi)
- printf_filtered (
- "The MIPS ABI is assumed to be \"%s\" (due to user setting).\n",
- actual_abi_str);
+ printf_filtered
+ ("The MIPS ABI is assumed to be \"%s\" (due to user setting).\n",
+ actual_abi_str);
else
{
/* Probably shouldn't happen... */
- printf_filtered (
- "The (auto detected) MIPS ABI \"%s\" is in use even though the user setting was \"%s\".\n",
- actual_abi_str,
- mips_abi_strings[global_abi]);
+ printf_filtered
+ ("The (auto detected) MIPS ABI \"%s\" is in use even though the user setting was \"%s\".\n",
+ actual_abi_str, mips_abi_strings[global_abi]);
}
}
}
@@ -6138,11 +6196,10 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
ef_mips_arch);
fprintf_unfiltered (file,
"mips_dump_tdep: tdep->mips_abi = %d (%s)\n",
- tdep->mips_abi,
- mips_abi_strings[tdep->mips_abi]);
+ tdep->mips_abi, mips_abi_strings[tdep->mips_abi]);
fprintf_unfiltered (file,
"mips_dump_tdep: mips_mask_address_p() %d (default %d)\n",
- mips_mask_address_p (),
+ mips_mask_address_p (tdep),
tdep->default_mask_address_p);
}
fprintf_unfiltered (file,
@@ -6155,9 +6212,7 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
: MIPS_DEFAULT_FPU_TYPE == MIPS_FPU_SINGLE ? "single"
: MIPS_DEFAULT_FPU_TYPE == MIPS_FPU_DOUBLE ? "double"
: "???"));
- fprintf_unfiltered (file,
- "mips_dump_tdep: MIPS_EABI = %d\n",
- MIPS_EABI);
+ fprintf_unfiltered (file, "mips_dump_tdep: MIPS_EABI = %d\n", MIPS_EABI);
fprintf_unfiltered (file,
"mips_dump_tdep: MIPS_FPU_TYPE = %d (%s)\n",
MIPS_FPU_TYPE,
@@ -6166,23 +6221,15 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
: MIPS_FPU_TYPE == MIPS_FPU_DOUBLE ? "double"
: "???"));
fprintf_unfiltered (file,
- "mips_dump_tdep: MIPS_DEFAULT_SAVED_REGSIZE = %d\n",
- MIPS_DEFAULT_SAVED_REGSIZE);
- fprintf_unfiltered (file,
"mips_dump_tdep: FP_REGISTER_DOUBLE = %d\n",
FP_REGISTER_DOUBLE);
fprintf_unfiltered (file,
- "mips_dump_tdep: MIPS_DEFAULT_STACK_ARGSIZE = %d\n",
- MIPS_DEFAULT_STACK_ARGSIZE);
- fprintf_unfiltered (file,
- "mips_dump_tdep: MIPS_STACK_ARGSIZE = %d\n",
- MIPS_STACK_ARGSIZE);
- fprintf_unfiltered (file,
- "mips_dump_tdep: A0_REGNUM = %d\n",
- A0_REGNUM);
+ "mips_dump_tdep: mips_stack_argsize() = %d\n",
+ mips_stack_argsize (tdep));
+ fprintf_unfiltered (file, "mips_dump_tdep: A0_REGNUM = %d\n", A0_REGNUM);
fprintf_unfiltered (file,
"mips_dump_tdep: ADDR_BITS_REMOVE # %s\n",
- XSTRING (ADDR_BITS_REMOVE(ADDR)));
+ XSTRING (ADDR_BITS_REMOVE (ADDR)));
fprintf_unfiltered (file,
"mips_dump_tdep: ATTACH_DETACH # %s\n",
XSTRING (ATTACH_DETACH));
@@ -6225,70 +6272,48 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
fprintf_unfiltered (file,
"mips_dump_tdep: MIPS16_INSTLEN = %d\n",
MIPS16_INSTLEN);
- fprintf_unfiltered (file,
- "mips_dump_tdep: MIPS_DEFAULT_ABI = FIXME!\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: MIPS_DEFAULT_ABI = FIXME!\n");
fprintf_unfiltered (file,
"mips_dump_tdep: MIPS_EFI_SYMBOL_NAME = multi-arch!!\n");
fprintf_unfiltered (file,
- "mips_dump_tdep: MIPS_INSTLEN = %d\n",
- MIPS_INSTLEN);
+ "mips_dump_tdep: MIPS_INSTLEN = %d\n", MIPS_INSTLEN);
fprintf_unfiltered (file,
"mips_dump_tdep: MIPS_LAST_ARG_REGNUM = %d (%d regs)\n",
MIPS_LAST_ARG_REGNUM,
MIPS_LAST_ARG_REGNUM - A0_REGNUM + 1);
fprintf_unfiltered (file,
- "mips_dump_tdep: MIPS_NUMREGS = %d\n",
- MIPS_NUMREGS);
+ "mips_dump_tdep: MIPS_NUMREGS = %d\n", MIPS_NUMREGS);
fprintf_unfiltered (file,
- "mips_dump_tdep: MIPS_SAVED_REGSIZE = %d\n",
- MIPS_SAVED_REGSIZE);
+ "mips_dump_tdep: mips_saved_regsize() = %d\n",
+ mips_saved_regsize (tdep));
fprintf_unfiltered (file,
- "mips_dump_tdep: PRID_REGNUM = %d\n",
- PRID_REGNUM);
+ "mips_dump_tdep: PRID_REGNUM = %d\n", PRID_REGNUM);
fprintf_unfiltered (file,
"mips_dump_tdep: PROC_DESC_IS_DUMMY = function?\n");
fprintf_unfiltered (file,
"mips_dump_tdep: PROC_FRAME_ADJUST = function?\n");
fprintf_unfiltered (file,
"mips_dump_tdep: PROC_FRAME_OFFSET = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PROC_FRAME_REG = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PROC_FREG_MASK = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PROC_FREG_OFFSET = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PROC_HIGH_ADDR = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PROC_LOW_ADDR = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PROC_PC_REG = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PROC_REG_MASK = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PROC_REG_OFFSET = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PROC_SYMBOL = function?\n");
- fprintf_unfiltered (file,
- "mips_dump_tdep: PS_REGNUM = %d\n",
- PS_REGNUM);
- fprintf_unfiltered (file,
- "mips_dump_tdep: RA_REGNUM = %d\n",
- RA_REGNUM);
+ fprintf_unfiltered (file, "mips_dump_tdep: PROC_FRAME_REG = function?\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: PROC_FREG_MASK = function?\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: PROC_FREG_OFFSET = function?\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: PROC_HIGH_ADDR = function?\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: PROC_LOW_ADDR = function?\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: PROC_PC_REG = function?\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: PROC_REG_MASK = function?\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: PROC_REG_OFFSET = function?\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: PROC_SYMBOL = function?\n");
+ fprintf_unfiltered (file, "mips_dump_tdep: PS_REGNUM = %d\n", PS_REGNUM);
+ fprintf_unfiltered (file, "mips_dump_tdep: RA_REGNUM = %d\n", RA_REGNUM);
#ifdef SAVED_BYTES
fprintf_unfiltered (file,
- "mips_dump_tdep: SAVED_BYTES = %d\n",
- SAVED_BYTES);
+ "mips_dump_tdep: SAVED_BYTES = %d\n", SAVED_BYTES);
#endif
#ifdef SAVED_FP
- fprintf_unfiltered (file,
- "mips_dump_tdep: SAVED_FP = %d\n",
- SAVED_FP);
+ fprintf_unfiltered (file, "mips_dump_tdep: SAVED_FP = %d\n", SAVED_FP);
#endif
#ifdef SAVED_PC
- fprintf_unfiltered (file,
- "mips_dump_tdep: SAVED_PC = %d\n",
- SAVED_PC);
+ fprintf_unfiltered (file, "mips_dump_tdep: SAVED_PC = %d\n", SAVED_PC);
#endif
fprintf_unfiltered (file,
"mips_dump_tdep: SETUP_ARBITRARY_FRAME # %s\n",
@@ -6296,8 +6321,7 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
fprintf_unfiltered (file,
"mips_dump_tdep: SET_PROC_DESC_IS_DUMMY = function?\n");
fprintf_unfiltered (file,
- "mips_dump_tdep: SIGFRAME_BASE = %d\n",
- SIGFRAME_BASE);
+ "mips_dump_tdep: SIGFRAME_BASE = %d\n", SIGFRAME_BASE);
fprintf_unfiltered (file,
"mips_dump_tdep: SIGFRAME_FPREGSAVE_OFF = %d\n",
SIGFRAME_FPREGSAVE_OFF);
@@ -6333,14 +6357,13 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
fprintf_unfiltered (file,
"mips_dump_tdep: STOPPED_BY_WATCHPOINT # %s\n",
XSTRING (STOPPED_BY_WATCHPOINT (WS)));
- fprintf_unfiltered (file,
- "mips_dump_tdep: T9_REGNUM = %d\n",
- T9_REGNUM);
+ fprintf_unfiltered (file, "mips_dump_tdep: T9_REGNUM = %d\n", T9_REGNUM);
fprintf_unfiltered (file,
"mips_dump_tdep: TABULAR_REGISTER_OUTPUT = used?\n");
fprintf_unfiltered (file,
"mips_dump_tdep: TARGET_CAN_USE_HARDWARE_WATCHPOINT # %s\n",
- XSTRING (TARGET_CAN_USE_HARDWARE_WATCHPOINT (TYPE,CNT,OTHERTYPE)));
+ XSTRING (TARGET_CAN_USE_HARDWARE_WATCHPOINT
+ (TYPE, CNT, OTHERTYPE)));
fprintf_unfiltered (file,
"mips_dump_tdep: TARGET_HAS_HARDWARE_WATCHPOINTS # %s\n",
XSTRING (TARGET_HAS_HARDWARE_WATCHPOINTS));
@@ -6351,8 +6374,7 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
#endif
#ifdef TRACE_FLAVOR
fprintf_unfiltered (file,
- "mips_dump_tdep: TRACE_FLAVOR = %d\n",
- TRACE_FLAVOR);
+ "mips_dump_tdep: TRACE_FLAVOR = %d\n", TRACE_FLAVOR);
#endif
#ifdef TRACE_FLAVOR_SIZE
fprintf_unfiltered (file,
@@ -6362,28 +6384,23 @@ mips_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
#ifdef TRACE_SET
fprintf_unfiltered (file,
"mips_dump_tdep: TRACE_SET # %s\n",
- XSTRING (TRACE_SET (X,STATE)));
+ XSTRING (TRACE_SET (X, STATE)));
#endif
#ifdef UNUSED_REGNUM
fprintf_unfiltered (file,
- "mips_dump_tdep: UNUSED_REGNUM = %d\n",
- UNUSED_REGNUM);
+ "mips_dump_tdep: UNUSED_REGNUM = %d\n", UNUSED_REGNUM);
#endif
- fprintf_unfiltered (file,
- "mips_dump_tdep: V0_REGNUM = %d\n",
- V0_REGNUM);
+ fprintf_unfiltered (file, "mips_dump_tdep: V0_REGNUM = %d\n", V0_REGNUM);
fprintf_unfiltered (file,
"mips_dump_tdep: VM_MIN_ADDRESS = %ld\n",
(long) VM_MIN_ADDRESS);
fprintf_unfiltered (file,
- "mips_dump_tdep: ZERO_REGNUM = %d\n",
- ZERO_REGNUM);
+ "mips_dump_tdep: ZERO_REGNUM = %d\n", ZERO_REGNUM);
fprintf_unfiltered (file,
- "mips_dump_tdep: _PROC_MAGIC_ = %d\n",
- _PROC_MAGIC_);
+ "mips_dump_tdep: _PROC_MAGIC_ = %d\n", _PROC_MAGIC_);
}
-extern initialize_file_ftype _initialize_mips_tdep; /* -Wmissing-prototypes */
+extern initialize_file_ftype _initialize_mips_tdep; /* -Wmissing-prototypes */
void
_initialize_mips_tdep (void)
@@ -6391,7 +6408,7 @@ _initialize_mips_tdep (void)
static struct cmd_list_element *mipsfpulist = NULL;
struct cmd_list_element *c;
- mips_abi_string = mips_abi_strings [MIPS_ABI_UNKNOWN];
+ mips_abi_string = mips_abi_strings[MIPS_ABI_UNKNOWN];
if (MIPS_ABI_LAST + 1
!= sizeof (mips_abi_strings) / sizeof (mips_abi_strings[0]))
internal_error (__FILE__, __LINE__, "mips_abi_strings out of sync");
@@ -6418,9 +6435,7 @@ This option can be set to one of:\n\
64 - Force GDB to treat saved GP registers as 64-bit\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),
- &showmipscmdlist);
+ (default: auto)", &setmipscmdlist), &showmipscmdlist);
/* Allow the user to override the argument stack size. */
add_show_from_set (add_set_enum_cmd ("stack-arg-size",
@@ -6432,9 +6447,7 @@ 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);
+ target and executable (default)", &setmipscmdlist), &showmipscmdlist);
/* Allow the user to override the ABI. */
c = add_set_enum_cmd
@@ -6443,15 +6456,10 @@ This option can be set to one of:\n\
"This option can be set to one of:\n"
" auto - the default ABI associated with the current binary\n"
" o32\n"
- " o64\n"
- " n32\n"
- " n64\n"
- " eabi32\n"
- " eabi64",
- &setmipscmdlist);
+ " o64\n" " n32\n" " n64\n" " eabi32\n" " eabi64", &setmipscmdlist);
set_cmd_sfunc (c, mips_abi_update);
add_cmd ("abi", class_obscure, show_mips_abi,
- "Show ABI in use by MIPS target", &showmipscmdlist);
+ "Show ABI in use by MIPS target", &showmipscmdlist);
/* Let the user turn off floating point and set the fence post for
heuristic_proc_start. */
@@ -6469,8 +6477,7 @@ This option can be set to one of:\n\
add_alias_cmd ("yes", "double", class_support, 1, &mipsfpulist);
add_alias_cmd ("1", "double", class_support, 1, &mipsfpulist);
add_cmd ("none", class_support, set_mipsfpu_none_command,
- "Select no MIPS floating-point coprocessor.",
- &mipsfpulist);
+ "Select no MIPS floating-point coprocessor.", &mipsfpulist);
add_alias_cmd ("off", "none", class_support, 1, &mipsfpulist);
add_alias_cmd ("no", "none", class_support, 1, &mipsfpulist);
add_alias_cmd ("0", "none", class_support, 1, &mipsfpulist);
@@ -6485,13 +6492,11 @@ This option can be set to one of:\n\
command.c doesn't deal with that. So make it a var_zinteger
because the user can always use "999999" or some such for unlimited. */
c = add_set_cmd ("heuristic-fence-post", class_support, var_zinteger,
- (char *) &heuristic_fence_post,
- "\
+ (char *) &heuristic_fence_post, "\
Set the distance searched for the start of a function.\n\
If you are debugging a stripped executable, GDB needs to search through the\n\
program for the start of a function. This command sets the distance of the\n\
-search. The only need to set it is when debugging a stripped executable.",
- &setlist);
+search. The only need to set it is when debugging a stripped executable.", &setlist);
/* We need to throw away the frame cache when we set this, since it
might change our ability to get backtraces. */
set_cmd_sfunc (c, reinit_frame_cache_sfunc);
@@ -6504,8 +6509,7 @@ Set zeroing of upper 32 bits of 64-bit addresses.\n\
Use \"on\" to enable the masking, \"off\" to disable it and \"auto\" to \n\
allow GDB to determine the correct value.\n", "\
Show zeroing of upper 32 bits of 64-bit addresses.",
- NULL, show_mask_address,
- &setmipscmdlist, &showmipscmdlist);
+ NULL, show_mask_address, &setmipscmdlist, &showmipscmdlist);
/* Allow the user to control the size of 32 bit registers within the
raw remote packet. */
@@ -6514,17 +6518,14 @@ Show zeroing of upper 32 bits of 64-bit addresses.",
Set compatibility with 64-bit MIPS targets that transfer 32-bit quantities.\n\
Use \"on\" to enable backward compatibility with older MIPS 64 GDB+target\n\
that would transfer 32 bits for some registers (e.g. SR, FSR) and\n\
-64 bits for others. Use \"off\" to disable compatibility mode", "\
+64 bits for others. Use \"off\" to disable compatibility mode", "\
Show compatibility with 64-bit MIPS targets that transfer 32-bit quantities.\n\
Use \"on\" to enable backward compatibility with older MIPS 64 GDB+target\n\
that would transfer 32 bits for some registers (e.g. SR, FSR) and\n\
-64 bits for others. Use \"off\" to disable compatibility mode",
- set_mips64_transfers_32bit_regs, NULL,
- &setlist, &showlist);
+64 bits for others. Use \"off\" to disable compatibility mode", set_mips64_transfers_32bit_regs, NULL, &setlist, &showlist);
/* Debug this files internals. */
add_show_from_set (add_set_cmd ("mips", class_maintenance, var_zinteger,
&mips_debug, "Set mips debugging.\n\
-When non-zero, mips specific debugging is enabled.", &setdebuglist),
- &showdebuglist);
+When non-zero, mips specific debugging is enabled.", &setdebuglist), &showdebuglist);
}
diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c
index fdc353031f6..a6ef1ca4a63 100644
--- a/gdb/mn10300-tdep.c
+++ b/gdb/mn10300-tdep.c
@@ -1,7 +1,7 @@
/* Target-dependent code for the Matsushita MN10300 for GDB, the GNU debugger.
- Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
- Foundation, Inc.
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
@@ -130,13 +130,6 @@ mn10300_extract_return_value (struct type *type, char *regbuf, char *valbuf)
memcpy (valbuf, regbuf + DEPRECATED_REGISTER_BYTE (0), TYPE_LENGTH (type));
}
-static CORE_ADDR
-mn10300_extract_struct_value_address (char *regbuf)
-{
- return extract_unsigned_integer (regbuf + DEPRECATED_REGISTER_BYTE (4),
- DEPRECATED_REGISTER_RAW_SIZE (4));
-}
-
static void
mn10300_store_return_value (struct type *type, char *valbuf)
{
@@ -1173,8 +1166,6 @@ mn10300_gdbarch_init (struct gdbarch_info info,
/* Breakpoints. */
set_gdbarch_breakpoint_from_pc (gdbarch, mn10300_breakpoint_from_pc);
- set_gdbarch_function_start_offset (gdbarch, 0);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
/* Stack unwinding. */
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
@@ -1184,8 +1175,6 @@ mn10300_gdbarch_init (struct gdbarch_info info,
set_gdbarch_deprecated_frame_chain (gdbarch, mn10300_frame_chain);
set_gdbarch_deprecated_frame_saved_pc (gdbarch, mn10300_frame_saved_pc);
set_gdbarch_deprecated_extract_return_value (gdbarch, mn10300_extract_return_value);
- set_gdbarch_deprecated_extract_struct_value_address
- (gdbarch, mn10300_extract_struct_value_address);
set_gdbarch_deprecated_store_return_value (gdbarch, mn10300_store_return_value);
set_gdbarch_deprecated_store_struct_return (gdbarch, mn10300_store_struct_return);
set_gdbarch_deprecated_pop_frame (gdbarch, mn10300_pop_frame);
@@ -1219,6 +1208,5 @@ void
_initialize_mn10300_tdep (void)
{
/* printf("_initialize_mn10300_tdep\n"); */
-
- register_gdbarch_init (bfd_arch_mn10300, mn10300_gdbarch_init);
+ gdbarch_register (bfd_arch_mn10300, mn10300_gdbarch_init, mn10300_dump_tdep);
}
diff --git a/gdb/monitor.c b/gdb/monitor.c
index 198155f443f..cd4f045375e 100644
--- a/gdb/monitor.c
+++ b/gdb/monitor.c
@@ -1516,33 +1516,6 @@ monitor_write_memory (CORE_ADDR memaddr, char *myaddr, int len)
static int
-monitor_write_even_block (CORE_ADDR memaddr, char *myaddr, int len)
-{
- unsigned int val;
- int written = 0;;
- /* Enter the sub mode */
- monitor_printf (current_monitor->setmem.cmdl, memaddr);
- monitor_expect_prompt (NULL, 0);
-
- while (len)
- {
- val = extract_unsigned_integer (myaddr, 4); /* REALLY */
- monitor_printf ("%x\r", val);
- myaddr += 4;
- memaddr += 4;
- written += 4;
- monitor_debug (" @ %s\n", paddr (memaddr));
- /* If we wanted to, here we could validate the address */
- monitor_expect_prompt (NULL, 0);
- }
- /* Now exit the sub mode */
- monitor_printf (current_monitor->getreg.term_cmd);
- monitor_expect_prompt (NULL, 0);
- return written;
-}
-
-
-static int
monitor_write_memory_bytes (CORE_ADDR memaddr, char *myaddr, int len)
{
unsigned char val;
@@ -1694,17 +1667,6 @@ monitor_write_memory_block (CORE_ADDR memaddr, char *myaddr, int len)
return monitor_write_memory_longlongs (memaddr, myaddr, len);
}
#endif
-#if 0
- if (len > 4)
- {
- int sublen;
- written = monitor_write_even_block (memaddr, myaddr, len);
- /* Adjust calling parameters by written amount */
- memaddr += written;
- myaddr += written;
- len -= written;
- }
-#endif
written = monitor_write_memory_bytes (memaddr, myaddr, len);
return written;
}
diff --git a/gdb/ns32k-tdep.c b/gdb/ns32k-tdep.c
index d426113f222..6726c8cc5f1 100644
--- a/gdb/ns32k-tdep.c
+++ b/gdb/ns32k-tdep.c
@@ -1,6 +1,7 @@
/* Target dependent code for the NS32000, for GDB.
- Copyright 1986, 1988, 1991, 1992, 1994, 1995, 1998, 1999, 2000, 2001,
- 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright 1986, 1988, 1991, 1992, 1994, 1995, 1998, 1999, 2000,
+ 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -495,12 +496,6 @@ ns32k_store_return_value (struct type *valtype, char *valbuf)
TYPE_LENGTH (valtype));
}
-static CORE_ADDR
-ns32k_extract_struct_value_address (char *regbuf)
-{
- return (extract_unsigned_integer (regbuf + DEPRECATED_REGISTER_BYTE (0), DEPRECATED_REGISTER_RAW_SIZE (0)));
-}
-
void
ns32k_gdbarch_init_32082 (struct gdbarch *gdbarch)
{
@@ -582,8 +577,6 @@ ns32k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_store_struct_return (gdbarch, ns32k_store_struct_return);
set_gdbarch_deprecated_extract_return_value (gdbarch, ns32k_extract_return_value);
set_gdbarch_deprecated_store_return_value (gdbarch, ns32k_store_return_value);
- set_gdbarch_deprecated_extract_struct_value_address (gdbarch,
- ns32k_extract_struct_value_address);
/* Call dummy info */
set_gdbarch_deprecated_push_dummy_frame (gdbarch, ns32k_push_dummy_frame);
@@ -598,12 +591,8 @@ ns32k_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_on_stack);
/* Breakpoint info */
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
set_gdbarch_breakpoint_from_pc (gdbarch, ns32k_breakpoint_from_pc);
- /* Misc info */
- set_gdbarch_function_start_offset (gdbarch, 0);
-
/* Should be using push_dummy_call. */
set_gdbarch_deprecated_dummy_write_sp (gdbarch, deprecated_write_sp);
diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c
index 657b563dc4a..2dcb45c02e5 100644
--- a/gdb/objc-lang.c
+++ b/gdb/objc-lang.c
@@ -1,6 +1,6 @@
/* Objective-C language support routines for GDB, the GNU debugger.
- Copyright 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Apple Computer, Inc.
Written by Michael Snyder.
@@ -672,6 +672,7 @@ const struct language_defn objc_language_defn = {
objc_skip_trampoline, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
objc_demangle, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 923d59b2c10..fab1c99bf8b 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -48,18 +48,6 @@
/* Prototypes for local functions */
-#if defined(USE_MMALLOC) && defined(HAVE_MMAP)
-
-#include "mmalloc.h"
-
-static int open_existing_mapped_file (char *, long, int);
-
-static int open_mapped_file (char *filename, long mtime, int flags);
-
-static void *map_to_file (int);
-
-#endif /* defined(USE_MMALLOC) && defined(HAVE_MMAP) */
-
static void objfile_alloc_data (struct objfile *objfile);
static void objfile_free_data (struct objfile *objfile);
@@ -71,8 +59,6 @@ struct objfile *current_objfile; /* For symbol file being read in */
struct objfile *symfile_objfile; /* Main symbol table loaded from */
struct objfile *rt_common_objfile; /* For runtime common symbols */
-int mapped_symbol_files; /* Try to use mapped symbol files */
-
/* Locate all mappable sections of a BFD file.
objfile_p_char is a char * to get it through
bfd_map_over_sections; we cast it back to its proper type. */
@@ -150,10 +136,8 @@ build_objfile_section_table (struct objfile *objfile)
new objfile struct.
The FLAGS word contains various bits (OBJF_*) that can be taken as
- requests for specific operations, like trying to open a mapped
- version of the objfile (OBJF_MAPPED). Other bits like
- OBJF_SHARED are simply copied through to the new objfile flags
- member. */
+ requests for specific operations. Other bits like OBJF_SHARED are
+ simply copied through to the new objfile flags member. */
/* NOTE: carlton/2003-02-04: This function is called with args NULL, 0
by jv-lang.c, to create an artificial objfile used to hold
@@ -170,119 +154,6 @@ allocate_objfile (bfd *abfd, int flags)
struct objfile *objfile = NULL;
struct objfile *last_one = NULL;
- if (mapped_symbol_files)
- flags |= OBJF_MAPPED;
-
-#if defined(USE_MMALLOC) && defined(HAVE_MMAP)
- if (abfd != NULL)
- {
-
- /* If we can support mapped symbol files, try to open/reopen the
- mapped file that corresponds to the file from which we wish to
- read symbols. If the objfile is to be mapped, we must malloc
- the structure itself using the mmap version, and arrange that
- all memory allocation for the objfile uses the mmap routines.
- If we are reusing an existing mapped file, from which we get
- our objfile pointer, we have to make sure that we update the
- pointers to the alloc/free functions in the obstack, in case
- these functions have moved within the current gdb. */
-
- int fd;
-
- fd = open_mapped_file (bfd_get_filename (abfd), bfd_get_mtime (abfd),
- flags);
- if (fd >= 0)
- {
- void *md;
-
- if ((md = map_to_file (fd)) == NULL)
- {
- close (fd);
- }
- else if ((objfile = (struct objfile *) mmalloc_getkey (md, 0)) != NULL)
- {
- /* Update memory corruption handler function addresses. */
- init_malloc (md);
- objfile->md = md;
- objfile->mmfd = fd;
- /* Update pointers to functions to *our* copies */
- if (objfile->demangled_names_hash)
- htab_set_functions_ex
- (objfile->demangled_names_hash, htab_hash_string,
- (int (*) (const void *, const void *)) streq, NULL,
- objfile->md, xmcalloc, xmfree);
- obstack_chunkfun (&objfile->psymbol_cache.cache, xmmalloc);
- obstack_freefun (&objfile->psymbol_cache.cache, xmfree);
- obstack_chunkfun (&objfile->macro_cache.cache, xmmalloc);
- obstack_freefun (&objfile->macro_cache.cache, xmfree);
- obstack_chunkfun (&objfile->psymbol_obstack, xmmalloc);
- obstack_freefun (&objfile->psymbol_obstack, xmfree);
- obstack_chunkfun (&objfile->symbol_obstack, xmmalloc);
- obstack_freefun (&objfile->symbol_obstack, xmfree);
- obstack_chunkfun (&objfile->type_obstack, xmmalloc);
- obstack_freefun (&objfile->type_obstack, xmfree);
- /* If already in objfile list, unlink it. */
- unlink_objfile (objfile);
- /* Forget things specific to a particular gdb, may have changed. */
- objfile->sf = NULL;
- }
- else
- {
-
- /* Set up to detect internal memory corruption. MUST be
- done before the first malloc. See comments in
- init_malloc() and mmcheck(). */
-
- init_malloc (md);
-
- objfile = (struct objfile *)
- xmmalloc (md, sizeof (struct objfile));
- memset (objfile, 0, sizeof (struct objfile));
- objfile->md = md;
- objfile->mmfd = fd;
- objfile->flags |= OBJF_MAPPED;
- mmalloc_setkey (objfile->md, 0, objfile);
- obstack_specify_allocation_with_arg (&objfile->psymbol_cache.cache,
- 0, 0, xmmalloc, xmfree,
- objfile->md);
- obstack_specify_allocation_with_arg (&objfile->macro_cache.cache,
- 0, 0, xmmalloc, xmfree,
- objfile->md);
- obstack_specify_allocation_with_arg (&objfile->psymbol_obstack,
- 0, 0, xmmalloc, xmfree,
- objfile->md);
- obstack_specify_allocation_with_arg (&objfile->symbol_obstack,
- 0, 0, xmmalloc, xmfree,
- objfile->md);
- obstack_specify_allocation_with_arg (&objfile->type_obstack,
- 0, 0, xmmalloc, xmfree,
- objfile->md);
- }
- }
-
- if ((flags & OBJF_MAPPED) && (objfile == NULL))
- {
- warning ("symbol table for '%s' will not be mapped",
- bfd_get_filename (abfd));
- flags &= ~OBJF_MAPPED;
- }
- }
-#else /* !defined(USE_MMALLOC) || !defined(HAVE_MMAP) */
-
- if (flags & OBJF_MAPPED)
- {
- warning ("mapped symbol tables are not supported on this machine; missing or broken mmap().");
-
- /* Turn off the global flag so we don't try to do mapped symbol tables
- any more, which shuts up gdb unless the user specifically gives the
- "mapped" keyword again. */
-
- mapped_symbol_files = 0;
- flags &= ~OBJF_MAPPED;
- }
-
-#endif /* defined(USE_MMALLOC) && defined(HAVE_MMAP) */
-
/* If we don't support mapped symbol files, didn't ask for the file to be
mapped, or failed to open the mapped file for some reason, then revert
back to an unmapped objfile. */
@@ -300,7 +171,6 @@ allocate_objfile (bfd *abfd, int flags)
xfree);
obstack_specify_allocation (&objfile->type_obstack, 0, 0, xmalloc,
xfree);
- flags &= ~OBJF_MAPPED;
terminate_minimal_symbol_table (objfile);
}
@@ -545,52 +415,27 @@ free_objfile (struct objfile *objfile)
to call this here. */
clear_pc_function_cache ();
- /* The last thing we do is free the objfile struct itself for the
- non-reusable case, or detach from the mapped file for the
- reusable case. Note that the mmalloc_detach or the xmfree() is
- the last thing we can do with this objfile. */
-
-#if defined(USE_MMALLOC) && defined(HAVE_MMAP)
-
- if (objfile->flags & OBJF_MAPPED)
- {
- /* Remember the fd so we can close it. We can't close it before
- doing the detach, and after the detach the objfile is gone. */
- int mmfd;
-
- mmfd = objfile->mmfd;
- mmalloc_detach (objfile->md);
- objfile = NULL;
- close (mmfd);
- }
-
-#endif /* defined(USE_MMALLOC) && defined(HAVE_MMAP) */
+ /* The last thing we do is free the objfile struct itself. */
- /* If we still have an objfile, then either we don't support reusable
- objfiles or this one was not reusable. So free it normally. */
-
- if (objfile != NULL)
+ objfile_free_data (objfile);
+ if (objfile->name != NULL)
{
- objfile_free_data (objfile);
- if (objfile->name != NULL)
- {
- xmfree (objfile->md, objfile->name);
- }
- if (objfile->global_psymbols.list)
- xmfree (objfile->md, objfile->global_psymbols.list);
- if (objfile->static_psymbols.list)
- xmfree (objfile->md, objfile->static_psymbols.list);
- /* Free the obstacks for non-reusable objfiles */
- bcache_xfree (objfile->psymbol_cache);
- bcache_xfree (objfile->macro_cache);
- if (objfile->demangled_names_hash)
- htab_delete (objfile->demangled_names_hash);
- obstack_free (&objfile->psymbol_obstack, 0);
- obstack_free (&objfile->symbol_obstack, 0);
- obstack_free (&objfile->type_obstack, 0);
- xmfree (objfile->md, objfile);
- objfile = NULL;
+ xmfree (objfile->md, objfile->name);
}
+ if (objfile->global_psymbols.list)
+ xmfree (objfile->md, objfile->global_psymbols.list);
+ if (objfile->static_psymbols.list)
+ xmfree (objfile->md, objfile->static_psymbols.list);
+ /* Free the obstacks for non-reusable objfiles */
+ bcache_xfree (objfile->psymbol_cache);
+ bcache_xfree (objfile->macro_cache);
+ if (objfile->demangled_names_hash)
+ htab_delete (objfile->demangled_names_hash);
+ obstack_free (&objfile->psymbol_obstack, 0);
+ obstack_free (&objfile->symbol_obstack, 0);
+ obstack_free (&objfile->type_obstack, 0);
+ xmfree (objfile->md, objfile);
+ objfile = NULL;
}
static void
@@ -882,168 +727,6 @@ have_minimal_symbols (void)
return 0;
}
-#if defined(USE_MMALLOC) && defined(HAVE_MMAP)
-
-/* Given the name of a mapped symbol file in SYMSFILENAME, and the timestamp
- of the corresponding symbol file in MTIME, try to open an existing file
- with the name SYMSFILENAME and verify it is more recent than the base
- file by checking it's timestamp against MTIME.
-
- If SYMSFILENAME does not exist (or can't be stat'd), simply returns -1.
-
- If SYMSFILENAME does exist, but is out of date, we check to see if the
- user has specified creation of a mapped file. If so, we don't issue
- any warning message because we will be creating a new mapped file anyway,
- overwriting the old one. If not, then we issue a warning message so that
- the user will know why we aren't using this existing mapped symbol file.
- In either case, we return -1.
-
- If SYMSFILENAME does exist and is not out of date, but can't be opened for
- some reason, then prints an appropriate system error message and returns -1.
-
- Otherwise, returns the open file descriptor. */
-
-static int
-open_existing_mapped_file (char *symsfilename, long mtime, int flags)
-{
- int fd = -1;
- struct stat sbuf;
-
- if (stat (symsfilename, &sbuf) == 0)
- {
- if (sbuf.st_mtime < mtime)
- {
- if (!(flags & OBJF_MAPPED))
- {
- warning ("mapped symbol file `%s' is out of date, ignored it",
- symsfilename);
- }
- }
- else if ((fd = open (symsfilename, O_RDWR)) < 0)
- {
- if (error_pre_print)
- {
- printf_unfiltered (error_pre_print);
- }
- print_sys_errmsg (symsfilename, errno);
- }
- }
- return (fd);
-}
-
-/* Look for a mapped symbol file that corresponds to FILENAME and is more
- recent than MTIME. If MAPPED is nonzero, the user has asked that gdb
- use a mapped symbol file for this file, so create a new one if one does
- not currently exist.
-
- If found, then return an open file descriptor for the file, otherwise
- return -1.
-
- This routine is responsible for implementing the policy that generates
- the name of the mapped symbol file from the name of a file containing
- symbols that gdb would like to read. Currently this policy is to append
- ".syms" to the name of the file.
-
- This routine is also responsible for implementing the policy that
- determines where the mapped symbol file is found (the search path).
- This policy is that when reading an existing mapped file, a file of
- the correct name in the current directory takes precedence over a
- file of the correct name in the same directory as the symbol file.
- When creating a new mapped file, it is always created in the current
- directory. This helps to minimize the chances of a user unknowingly
- creating big mapped files in places like /bin and /usr/local/bin, and
- allows a local copy to override a manually installed global copy (in
- /bin for example). */
-
-static int
-open_mapped_file (char *filename, long mtime, int flags)
-{
- int fd;
- char *symsfilename;
-
- /* First try to open an existing file in the current directory, and
- then try the directory where the symbol file is located. */
-
- symsfilename = concat ("./", lbasename (filename), ".syms", (char *) NULL);
- if ((fd = open_existing_mapped_file (symsfilename, mtime, flags)) < 0)
- {
- xfree (symsfilename);
- symsfilename = concat (filename, ".syms", (char *) NULL);
- fd = open_existing_mapped_file (symsfilename, mtime, flags);
- }
-
- /* If we don't have an open file by now, then either the file does not
- already exist, or the base file has changed since it was created. In
- either case, if the user has specified use of a mapped file, then
- create a new mapped file, truncating any existing one. If we can't
- create one, print a system error message saying why we can't.
-
- By default the file is rw for everyone, with the user's umask taking
- care of turning off the permissions the user wants off. */
-
- if ((fd < 0) && (flags & OBJF_MAPPED))
- {
- xfree (symsfilename);
- symsfilename = concat ("./", lbasename (filename), ".syms",
- (char *) NULL);
- if ((fd = open (symsfilename, O_RDWR | O_CREAT | O_TRUNC, 0666)) < 0)
- {
- if (error_pre_print)
- {
- printf_unfiltered (error_pre_print);
- }
- print_sys_errmsg (symsfilename, errno);
- }
- }
-
- xfree (symsfilename);
- return (fd);
-}
-
-static void *
-map_to_file (int fd)
-{
- void *md;
- CORE_ADDR mapto;
-
- md = mmalloc_attach (fd, 0);
- if (md != NULL)
- {
- mapto = (CORE_ADDR) mmalloc_getkey (md, 1);
- md = mmalloc_detach (md);
- if (md != NULL)
- {
- /* FIXME: should figure out why detach failed */
- md = NULL;
- }
- else if (mapto != (CORE_ADDR) NULL)
- {
- /* This mapping file needs to be remapped at "mapto" */
- md = mmalloc_attach (fd, mapto);
- }
- else
- {
- /* This is a freshly created mapping file. */
- mapto = (CORE_ADDR) mmalloc_findbase (20 * 1024 * 1024);
- if (mapto != 0)
- {
- /* To avoid reusing the freshly created mapping file, at the
- address selected by mmap, we must truncate it before trying
- to do an attach at the address we want. */
- ftruncate (fd, 0);
- md = mmalloc_attach (fd, mapto);
- if (md != NULL)
- {
- mmalloc_setkey (md, 1, mapto);
- }
- }
- }
- }
- return (md);
-}
-
-#endif /* defined(USE_MMALLOC) && defined(HAVE_MMAP) */
-
/* Returns a section whose range includes PC and SECTION, or NULL if
none found. Note the distinction between the return type, struct
obj_section (which is defined in gdb), and the input type "struct
diff --git a/gdb/objfiles.h b/gdb/objfiles.h
index ebc10b36828..732af4d3d01 100644
--- a/gdb/objfiles.h
+++ b/gdb/objfiles.h
@@ -470,15 +470,6 @@ struct objfile
/* Defines for the objfile flag word. */
-/* Gdb can arrange to allocate storage for all objects related to a
- particular objfile in a designated section of its address space,
- managed at a low level by mmap() and using a special version of
- malloc that handles malloc/free/realloc on top of the mmap() interface.
- This allows the "internal gdb state" for a particular objfile to be
- dumped to a gdb state file and subsequently reloaded at a later time. */
-
-#define OBJF_MAPPED (1 << 0) /* Objfile data is mmap'd */
-
/* When using mapped/remapped predigested gdb symbol information, we need
a flag that indicates that we have previously done an initial symbol
table read from this particular objfile. We can't just look for the
diff --git a/gdb/ocd.c b/gdb/ocd.c
index 4155d735405..c53db89f530 100644
--- a/gdb/ocd.c
+++ b/gdb/ocd.c
@@ -1,7 +1,7 @@
/* Target communications support for Macraigor Systems' On-Chip Debugging
- Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software
- Foundation, Inc.
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
@@ -46,14 +46,6 @@ static int ocd_start_remote (void *dummy);
static int readchar (int timeout);
-static void reset_packet (void);
-
-static void output_packet (void);
-
-static int get_quoted_char (int timeout);
-
-static void put_quoted_char (int c);
-
static void ocd_interrupt (int signo);
static void ocd_interrupt_twice (int signo);
@@ -70,17 +62,6 @@ static struct target_ops *current_ops = NULL;
static int last_run_status;
-/* This was 5 seconds, which is a long time to sit and wait.
- Unless this is going though some terminal server or multiplexer or
- other form of hairy serial connection, I would think 2 seconds would
- be plenty. */
-
-#if 0
-/* FIXME: Change to allow option to set timeout value on a per target
- basis. */
-static int remote_timeout = 2;
-#endif
-
/* Descriptor for I/O to remote machine. Initialize it to NULL so that
ocd_open knows that we don't have a file open when the program
starts. */
@@ -210,19 +191,11 @@ ocd_start_remote (void *dummy)
printf_unfiltered ("[Wiggler version %x.%x, capability 0x%x]\n",
p[0], p[1], (p[2] << 16) | p[3]);
-#if 0
- /* Reset the target */
-
- ocd_do_command (OCD_RESET_RUN, &status, &pktlen);
-/* ocd_do_command (OCD_RESET, &status, &pktlen); */
-#endif
-
/* If processor is still running, stop it. */
if (!(status & OCD_FLAG_BDM))
ocd_stop ();
-#if 1
/* When using a target box, we want to asynchronously return status when
target stops. The OCD_SET_CTL_FLAGS command is ignored by Wigglers.dll
when using a parallel Wiggler */
@@ -241,7 +214,6 @@ ocd_start_remote (void *dummy)
if (error_code != 0)
ocd_error ("OCD_SET_CTL_FLAGS:", error_code);
-#endif
immediate_quit--;
@@ -780,112 +752,6 @@ readchar (int timeout)
}
}
-#if 0
-/* Read a character from the data stream, dequoting as necessary. SYN is
- treated special. Any SYNs appearing in the data stream are returned as the
- distinct value RAW_SYN (which has a value > 8 bits and therefore cannot be
- mistaken for real data). */
-
-static int
-get_quoted_char (int timeout)
-{
- int ch;
-
- ch = readchar (timeout);
-
- switch (ch)
- {
- case SERIAL_TIMEOUT:
- error ("Timeout in mid-packet, aborting");
- case SYN:
- return RAW_SYN;
- case DLE:
- ch = readchar (timeout);
- if (ch == SYN)
- return RAW_SYN;
- return ch & ~0100;
- default:
- return ch;
- }
-}
-
-static unsigned char pkt[256 * 2 + 10], *pktp; /* Worst case */
-
-static void
-reset_packet (void)
-{
- pktp = pkt;
-}
-
-static void
-output_packet (void)
-{
- if (serial_write (ocd_desc, pkt, pktp - pkt))
- perror_with_name ("output_packet: write failed");
-
- reset_packet ();
-}
-
-/* Output a quoted character. SYNs and DLEs are quoted. Everything else goes
- through untouched. */
-
-static void
-put_quoted_char (int c)
-{
- switch (c)
- {
- case SYN:
- case DLE:
- *pktp++ = DLE;
- c |= 0100;
- }
-
- *pktp++ = c;
-}
-
-/* Send a packet to the OCD device. The packet framed by a SYN character,
- a byte count and a checksum. The byte count only counts the number of
- bytes between the count and the checksum. A count of zero actually
- means 256. Any SYNs within the packet (including the checksum and
- count) must be quoted. The quote character must be quoted as well.
- Quoting is done by replacing the character with the two-character sequence
- DLE, {char} | 0100. Note that the quoting mechanism has no effect on the
- byte count. */
-
-static void
-stu_put_packet (unsigned char *buf, int len)
-{
- unsigned char checksum;
- unsigned char c;
-
- if (len == 0 || len > 256)
- internal_error (__FILE__, __LINE__, "failed internal consistency check"); /* Can't represent 0 length packet */
-
- reset_packet ();
-
- checksum = 0;
-
- put_quoted_char (RAW_SYN);
-
- c = len;
-
- do
- {
- checksum += c;
-
- put_quoted_char (c);
-
- c = *buf++;
- }
- while (len-- > 0);
-
- put_quoted_char (-checksum & 0xff);
-
- output_packet ();
-}
-
-#else
-
/* Send a packet to the OCD device. The packet framed by a SYN character,
a byte count and a checksum. The byte count only counts the number of
bytes between the count and the checksum. A count of zero actually
@@ -921,71 +787,6 @@ ocd_put_packet (unsigned char *buf, int len)
if (serial_write (ocd_desc, packet, packet_ptr - packet))
perror_with_name ("output_packet: write failed");
}
-#endif
-
-#if 0
-/* Get a packet from the OCD device. Timeout is only enforced for the
- first byte of the packet. Subsequent bytes are expected to arrive in
- time <= remote_timeout. Returns a pointer to a static buffer containing
- the payload of the packet. *LENP contains the length of the packet.
- */
-
-static unsigned char *
-stu_get_packet (unsigned char cmd, int *lenp, int timeout)
-{
- int ch;
- int len;
- static unsigned char buf[256 + 10], *p;
- unsigned char checksum;
-
-find_packet:
-
- ch = get_quoted_char (timeout);
-
- if (ch < 0)
- error ("get_packet (readchar): %d", ch);
-
- if (ch != RAW_SYN)
- goto find_packet;
-
-found_syn: /* Found the start of a packet */
-
- p = buf;
- checksum = 0;
-
- len = get_quoted_char (remote_timeout);
-
- if (len == RAW_SYN)
- goto found_syn;
-
- checksum += len;
-
- if (len == 0)
- len = 256;
-
- len++; /* Include checksum */
-
- while (len-- > 0)
- {
- ch = get_quoted_char (remote_timeout);
- if (ch == RAW_SYN)
- goto found_syn;
-
- *p++ = ch;
- checksum += ch;
- }
-
- if (checksum != 0)
- goto find_packet;
-
- if (cmd != buf[0])
- error ("Response phase error. Got 0x%x, expected 0x%x", buf[0], cmd);
-
- *lenp = p - buf - 1;
- return buf;
-}
-
-#else
/* Get a packet from the OCD device. Timeout is only enforced for the
first byte of the packet. Subsequent bytes are expected to arrive in
@@ -1135,7 +936,6 @@ ocd_get_packet (int cmd, int *lenp, int timeout)
*lenp = packet_ptr - packet - 1; /* Subtract checksum byte */
return packet;
}
-#endif
/* Execute a simple (one-byte) command. Returns a pointer to the data
following the error code. */
@@ -1244,9 +1044,6 @@ ocd_load (char *args, int from_tty)
not yet supported fully */
#define BDM_BREAKPOINT {0x0,0x0,0x0,0x0} /* For ppc 8xx */
-#if 0
-#define BDM_BREAKPOINT {0x4a,0xfa} /* BGND insn used for CPU32 */
-#endif
/* BDM (at least on CPU32) uses a different breakpoint */
@@ -1349,19 +1146,6 @@ bdm_update_flash_command (char *args, int from_tty)
/* discard_cleanups (old_chain); */
}
-
-static void
-bdm_read_register_command (char *args, int from_tty)
-{
- /* XXX repeat should go on to the next register */
-
- if (!ocd_desc)
- error ("Not connected to OCD device.");
-
- if (!args)
- error ("Must specify BDM register number.");
-
-}
extern initialize_file_ftype _initialize_remote_ocd; /* -Wmissing-prototypes */
@@ -1382,5 +1166,4 @@ _initialize_remote_ocd (void)
add_cmd ("reset", class_obscure, bdm_reset_command, "", &ocd_cmd_list);
add_cmd ("restart", class_obscure, bdm_restart_command, "", &ocd_cmd_list);
add_cmd ("update-flash", class_obscure, bdm_update_flash_command, "", &ocd_cmd_list);
- /* add_cmd ("read-register", class_obscure, bdm_read_register_command, "", &ocd_cmd_list); */
}
diff --git a/gdb/op50-rom.c b/gdb/op50-rom.c
deleted file mode 100644
index a256c91455b..00000000000
--- a/gdb/op50-rom.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* Remote target glue for the Oki op50n based eval board.
-
- Copyright 1995, 1998, 1999, 2000 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "defs.h"
-#include "gdbcore.h"
-#include "target.h"
-#include "monitor.h"
-#include "serial.h"
-
-static void op50n_open (char *args, int from_tty);
-
-/*
- * this array of registers need to match the indexes used by GDB. The
- * whole reason this exists is cause the various ROM monitors use
- * different strings than GDB does, and doesn't support all the
- * registers either. So, typing "info reg sp" becomes a "r30".
- */
-
-static char *op50n_regnames[NUM_REGS] =
-{
- "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
- "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
- "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
- "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31",
- "cr11", "p", NULL, NULL, NULL, "cr15", "cr19", "cr20",
- "cr21", "cr22", NULL, NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, "cr0", "cr8", "cr9", "cr10", "cr12",
- "cr13", "cr24", "cr25", "cr26",
-};
-
-/*
- * Define the monitor command strings. Since these are passed directly
- * through to a printf style function, we need can include formatting
- * strings. We also need a CR or LF on the end.
- */
-
-static struct target_ops op50n_ops;
-
-static char *op50n_inits[] =
-{".\r", NULL};
-
-static struct monitor_ops op50n_cmds;
-
-static void
-init_op50n_cmds (void)
-{
- op50n_cmds.flags = MO_CLR_BREAK_USES_ADDR /*| MO_GETMEM_READ_SINGLE */ ; /* flags */
- op50n_cmds.init = op50n_inits; /* Init strings */
- op50n_cmds.cont = "g\r"; /* continue command */
- op50n_cmds.step = "t\r"; /* single step */
- op50n_cmds.stop = "\003.\r"; /* Interrupt char */
- op50n_cmds.set_break = "b %x\r"; /* set a breakpoint */
- op50n_cmds.clr_break = "b %x;0\r"; /* clear breakpoint at addr */
- op50n_cmds.clr_all_break = "bx\r"; /* clear all breakpoints */
- op50n_cmds.fill = "fx %x s%x %x\r"; /* memory fill cmd (addr, len, val) */
- op50n_cmds.setmem.cmdb = "sx %x %x\r"; /* setmem.cmdb (addr, value) */
- op50n_cmds.setmem.cmdw = "sh %x %x\r"; /* setmem.cmdw (addr, value) */
- op50n_cmds.setmem.cmdl = "s %x %x\r"; /* setmem.cmdl (addr, value) */
- op50n_cmds.setmem.cmdll = NULL; /* setmem.cmdll (addr, value) */
- op50n_cmds.setmem.resp_delim = NULL; /* setmem.resp_delim */
- op50n_cmds.setmem.term = NULL; /* setmem.term */
- op50n_cmds.setmem.term_cmd = NULL; /* setmem.term_cmd */
-#if 0
- {
- "sx %x\r", /* getmem.cmdb (addr, len) */
- "sh %x\r", /* getmem.cmdw (addr, len) */
- "s %x\r", /* getmem.cmdl (addr, len) */
- NULL, /* getmem.cmdll (addr, len) */
- " : ", /* getmem.resp_delim */
- " ", /* getmem.term */
- ".\r", /* getmem.term_cmd */
- };
-#else
- op50n_cmds.getmem.cmdb = "dx %x s%x\r"; /* getmem.cmdb (addr, len) */
- op50n_cmds.getmem.cmdw = NULL; /* getmem.cmdw (addr, len) */
- op50n_cmds.getmem.cmdl = NULL; /* getmem.cmdl (addr, len) */
- op50n_cmds.getmem.cmdll = NULL; /* getmem.cmdll (addr, len) */
- op50n_cmds.getmem.resp_delim = " : "; /* getmem.resp_delim */
- op50n_cmds.getmem.term = NULL; /* getmem.term */
- op50n_cmds.getmem.term_cmd = NULL; /* getmem.term_cmd */
-#endif
- op50n_cmds.setreg.cmd = "x %s %x\r"; /* setreg.cmd (name, value) */
- op50n_cmds.setreg.resp_delim = NULL; /* setreg.resp_delim */
- op50n_cmds.setreg.term = NULL; /* setreg.term */
- op50n_cmds.setreg.term_cmd = NULL; /* setreg.term_cmd */
- op50n_cmds.getreg.cmd = "x %s\r"; /* getreg.cmd (name) */
- op50n_cmds.getreg.resp_delim = "="; /* getreg.resp_delim */
- op50n_cmds.getreg.term = " "; /* getreg.term */
- op50n_cmds.getreg.term_cmd = ".\r"; /* getreg.term_cmd */
- op50n_cmds.dump_registers = NULL; /* dump_registers */
- op50n_cmds.register_pattern = NULL; /* register_pattern */
- op50n_cmds.supply_register = NULL; /* supply_register */
- op50n_cmds.load_routine = NULL; /* load routine */
- op50n_cmds.load = "r 0\r"; /* download command */
- op50n_cmds.loadresp = NULL; /* load response */
- op50n_cmds.prompt = "\n#"; /* monitor command prompt */
- op50n_cmds.line_term = "\r"; /* end-of-command delimitor */
- op50n_cmds.cmd_end = NULL; /* optional command terminator */
- op50n_cmds.target = &op50n_ops; /* target operations */
- op50n_cmds.stopbits = SERIAL_1_STOPBITS; /* number of stop bits */
- op50n_cmds.regnames = op50n_regnames; /* register names */
- op50n_cmds.magic = MONITOR_OPS_MAGIC; /* magic */
-};
-
-static void
-op50n_open (char *args, int from_tty)
-{
- monitor_open (args, &op50n_cmds, from_tty);
-}
-
-void
-_initialize_op50n (void)
-{
- init_op50n_cmds ();
- init_monitor_ops (&op50n_ops);
-
- op50n_ops.to_shortname = "op50n";
- op50n_ops.to_longname = "Oki's debug monitor for the Op50n Eval board";
- op50n_ops.to_doc = "Debug on a Oki OP50N eval board.\n\
-Specify the serial device it is connected to (e.g. /dev/ttya).";
- op50n_ops.to_open = op50n_open;
-
- add_target (&op50n_ops);
-}
diff --git a/gdb/osabi.c b/gdb/osabi.c
index 4c94c5e698a..3acfc703648 100644
--- a/gdb/osabi.c
+++ b/gdb/osabi.c
@@ -60,6 +60,7 @@ static const char * const gdb_osabi_names[] =
"FreeBSD ELF",
"NetBSD a.out",
"NetBSD ELF",
+ "OpenBSD ELF",
"Windows CE",
"DJGPP",
"NetWare",
@@ -354,119 +355,137 @@ gdbarch_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch)
info.bfd_arch_info->printable_name);
}
+/* Limit on the amount of data to be read. */
+#define MAX_NOTESZ 128
+
+/* Return non-zero if NOTE matches NAME, DESCSZ and TYPE. */
+
+static int
+check_note (bfd *abfd, asection *sect, const char *note,
+ const char *name, unsigned long descsz, unsigned long type)
+{
+ unsigned long notesz;
+
+ /* Calculate the size of this note. */
+ notesz = strlen (name) + 1;
+ notesz = ((notesz + 3) & ~3);
+ notesz += descsz;
+ notesz = ((notesz + 3) & ~3);
+
+ /* If this assertion triggers, increase MAX_NOTESZ. */
+ gdb_assert (notesz <= MAX_NOTESZ);
+
+ /* Check whether SECT is big enough to comtain the complete note. */
+ if (notesz > bfd_section_size (abfd, sect))
+ return 0;
+
+ /* Check the note name. */
+ if (bfd_h_get_32 (abfd, note) != (strlen (name) + 1)
+ || strcmp (note + 12, name) != 0)
+ return 0;
+
+ /* Check the descriptor size. */
+ if (bfd_h_get_32 (abfd, note + 4) != descsz)
+ return 0;
+
+ /* Check the note type. */
+ if (bfd_h_get_32 (abfd, note + 8) != type)
+ return 0;
+
+ return 1;
+}
/* Generic sniffer for ELF flavoured files. */
void
generic_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect, void *obj)
{
- enum gdb_osabi *os_ident_ptr = obj;
+ enum gdb_osabi *osabi = obj;
const char *name;
unsigned int sectsize;
+ char *note;
name = bfd_get_section_name (abfd, sect);
sectsize = bfd_section_size (abfd, sect);
- /* .note.ABI-tag notes, used by GNU/Linux and FreeBSD. */
- if (strcmp (name, ".note.ABI-tag") == 0 && sectsize > 0)
- {
- unsigned int name_length, data_length, note_type;
- char *note;
-
- /* If the section is larger than this, it's probably not what we are
- looking for. */
- if (sectsize > 128)
- sectsize = 128;
+ /* Limit the amount of data to read. */
+ if (sectsize > MAX_NOTESZ)
+ sectsize = MAX_NOTESZ;
- note = alloca (sectsize);
+ note = alloca (sectsize);
+ bfd_get_section_contents (abfd, sect, note, 0, 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 == NT_GNU_ABI_TAG
- && strcmp (note + 12, "GNU") == 0)
+ /* .note.ABI-tag notes, used by GNU/Linux and FreeBSD. */
+ if (strcmp (name, ".note.ABI-tag") == 0)
+ {
+ /* GNU. */
+ if (check_note (abfd, sect, note, "GNU", 16, NT_GNU_ABI_TAG))
{
- int os_number = bfd_h_get_32 (abfd, note + 16);
+ unsigned int abi_tag = bfd_h_get_32 (abfd, note + 16);
- switch (os_number)
+ switch (abi_tag)
{
case GNU_ABI_TAG_LINUX:
- *os_ident_ptr = GDB_OSABI_LINUX;
+ *osabi = GDB_OSABI_LINUX;
break;
case GNU_ABI_TAG_HURD:
- *os_ident_ptr = GDB_OSABI_HURD;
+ *osabi = GDB_OSABI_HURD;
break;
case GNU_ABI_TAG_SOLARIS:
- *os_ident_ptr = GDB_OSABI_SOLARIS;
+ *osabi = GDB_OSABI_SOLARIS;
break;
case GNU_ABI_TAG_FREEBSD:
- *os_ident_ptr = GDB_OSABI_FREEBSD_ELF;
+ *osabi = GDB_OSABI_FREEBSD_ELF;
break;
-
+
case GNU_ABI_TAG_NETBSD:
- *os_ident_ptr = GDB_OSABI_NETBSD_ELF;
+ *osabi = GDB_OSABI_NETBSD_ELF;
break;
-
+
default:
- internal_error
- (__FILE__, __LINE__,
- "generic_elf_osabi_sniff_abi_tag_sections: unknown OS number %d",
- os_number);
+ internal_error (__FILE__, __LINE__, "\
+generic_elf_osabi_sniff_abi_tag_sections: unknown OS number %d",
+ abi_tag);
}
return;
}
- else if (name_length == 8 && data_length == 4
- && note_type == NT_FREEBSD_ABI_TAG
- && strcmp (note + 12, "FreeBSD") == 0)
+
+ /* FreeBSD. */
+ if (check_note (abfd, sect, note, "FreeBSD", 4, NT_FREEBSD_ABI_TAG))
{
- /* XXX Should we check the version here? Probably not
- necessary yet. */
- *os_ident_ptr = GDB_OSABI_FREEBSD_ELF;
+ /* There is no need to check the version yet. */
+ *osabi = GDB_OSABI_FREEBSD_ELF;
+ return;
}
+
return;
}
-
+
/* .note.netbsd.ident notes, used by NetBSD. */
- if (strcmp (name, ".note.netbsd.ident") == 0 && sectsize > 0)
+ if (strcmp (name, ".note.netbsd.ident") == 0
+ && check_note (abfd, sect, note, "NetBSD", 4, NT_NETBSD_IDENT))
{
- unsigned int name_length, data_length, note_type;
- char *note;
-
- /* If the section is larger than this, it's probably not what we are
- looking for. */
- if (sectsize > 128)
- sectsize = 128;
-
- 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);
+ /* There is no need to check the version yet. */
+ *osabi = GDB_OSABI_NETBSD_ELF;
+ return;
+ }
- if (name_length == 7 && data_length == 4 && note_type == NT_NETBSD_IDENT
- && strcmp (note + 12, "NetBSD") == 0)
- {
- /* XXX Should we check the version here? Probably not
- necessary yet. */
- *os_ident_ptr = GDB_OSABI_NETBSD_ELF;
- }
+ /* .note.openbsd.ident notes, used by OpenBSD. */
+ if (strcmp (name, ".note.openbsd.ident") == 0
+ && check_note (abfd, sect, note, "OpenBSD", 4, NT_OPENBSD_IDENT))
+ {
+ /* There is no need to check the version yet. */
+ *osabi = GDB_OSABI_OPENBSD_ELF;
return;
}
/* .note.netbsdcore.procinfo notes, used by NetBSD. */
- if (strcmp (name, ".note.netbsdcore.procinfo") == 0 && sectsize > 0)
+ if (strcmp (name, ".note.netbsdcore.procinfo") == 0)
{
- *os_ident_ptr = GDB_OSABI_NETBSD_ELF;
+ *osabi = GDB_OSABI_NETBSD_ELF;
return;
}
}
diff --git a/gdb/p-lang.c b/gdb/p-lang.c
index 3ebb433d1a5..a4025322ca7 100644
--- a/gdb/p-lang.c
+++ b/gdb/p-lang.c
@@ -1,5 +1,5 @@
/* Pascal language support routines for GDB, the GNU debugger.
- Copyright 2000, 2002 Free Software Foundation, Inc.
+ Copyright 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -464,6 +464,7 @@ const struct language_defn pascal_language_defn =
NULL, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
{"", "%", "b", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index 3f992e83a35..c2b4d15fc4e 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -1357,7 +1357,7 @@ display_command (char *exp, int from_tty)
/* NOTE: cagney/2003-02-13 The `tui_active' was previously
`tui_version'. */
if (tui_active && *exp == '$')
- display_it = (tui_set_layout (exp) == TUI_FAILURE);
+ display_it = (tui_set_layout_for_display_command (exp) == TUI_FAILURE);
#endif
if (display_it)
diff --git a/gdb/procfs.c b/gdb/procfs.c
index 72ad202a2e8..090cf73c7b2 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -3703,11 +3703,10 @@ procfs_fetch_registers (int regno)
if (FP0_REGNUM >= 0) /* need floating point? */
{
- if ((regno >= 0 && regno < FP0_REGNUM) ||
- regno == PC_REGNUM ||
- (DEPRECATED_NPC_REGNUM >= 0 && regno == DEPRECATED_NPC_REGNUM) ||
- regno == DEPRECATED_FP_REGNUM ||
- regno == SP_REGNUM)
+ if ((regno >= 0 && regno < FP0_REGNUM)
+ || regno == PC_REGNUM
+ || regno == DEPRECATED_FP_REGNUM
+ || regno == SP_REGNUM)
return; /* not a floating point register */
if ((fpregs = proc_get_fpregs (pi)) == NULL)
@@ -3777,11 +3776,10 @@ procfs_store_registers (int regno)
if (FP0_REGNUM >= 0) /* need floating point? */
{
- if ((regno >= 0 && regno < FP0_REGNUM) ||
- regno == PC_REGNUM ||
- (DEPRECATED_NPC_REGNUM >= 0 && regno == DEPRECATED_NPC_REGNUM) ||
- regno == DEPRECATED_FP_REGNUM ||
- regno == SP_REGNUM)
+ if ((regno >= 0 && regno < FP0_REGNUM)
+ || regno == PC_REGNUM
+ || regno == DEPRECATED_FP_REGNUM
+ || regno == SP_REGNUM)
return; /* not a floating point register */
if ((fpregs = proc_get_fpregs (pi)) == NULL)
diff --git a/gdb/regcache.c b/gdb/regcache.c
index 62c0de516f0..504196df3e6 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
@@ -1351,15 +1351,11 @@ read_pc (void)
void
generic_target_write_pc (CORE_ADDR pc, ptid_t ptid)
{
-#ifdef PC_REGNUM
if (PC_REGNUM >= 0)
write_register_pid (PC_REGNUM, pc, ptid);
- if (DEPRECATED_NPC_REGNUM >= 0)
- write_register_pid (DEPRECATED_NPC_REGNUM, pc + 4, ptid);
-#else
- internal_error (__FILE__, __LINE__,
- "generic_target_write_pc");
-#endif
+ else
+ internal_error (__FILE__, __LINE__,
+ "generic_target_write_pc");
}
void
diff --git a/gdb/regformats/reg-x86-64.dat b/gdb/regformats/reg-x86-64.dat
index 59ebbf5267e..dd1f78fa71b 100644
--- a/gdb/regformats/reg-x86-64.dat
+++ b/gdb/regformats/reg-x86-64.dat
@@ -18,6 +18,8 @@ expedite:rbp,rsp,rip
64:r15
64:rip
32:eflags
+32:cs
+32:ss
32:ds
32:es
32:fs
diff --git a/gdb/remote-fileio.c b/gdb/remote-fileio.c
index fd57617acd5..ead40f04783 100644
--- a/gdb/remote-fileio.c
+++ b/gdb/remote-fileio.c
@@ -411,7 +411,16 @@ remote_fileio_to_fio_stat (struct stat *st, struct fio_stat *fst)
remote_fileio_to_fio_uint ((long) st->st_rdev, fst->fst_rdev);
remote_fileio_to_fio_ulong ((LONGEST) st->st_size, fst->fst_size);
remote_fileio_to_fio_ulong ((LONGEST) st->st_blksize, fst->fst_blksize);
+#if HAVE_STRUCT_STAT_ST_BLOCKS
remote_fileio_to_fio_ulong ((LONGEST) st->st_blocks, fst->fst_blocks);
+#else
+ /* FIXME: This is correct for DJGPP, but other systems that don't
+ have st_blocks, if any, might prefer 512 instead of st_blksize.
+ (eliz, 30-12-2003) */
+ remote_fileio_to_fio_ulong (((LONGEST) st->st_size + st->st_blksize - 1)
+ / (LONGEST) st->st_blksize,
+ fst->fst_blocks);
+#endif
remote_fileio_to_fio_time (st->st_atime, fst->fst_atime);
remote_fileio_to_fio_time (st->st_mtime, fst->fst_mtime);
remote_fileio_to_fio_time (st->st_ctime, fst->fst_ctime);
@@ -1131,7 +1140,9 @@ remote_fileio_func_fstat (char *buf)
st.st_rdev = 0;
st.st_size = 0;
st.st_blksize = 512;
+#if HAVE_STRUCT_STAT_ST_BLOCKS
st.st_blocks = 0;
+#endif
if (!gettimeofday (&tv, NULL))
st.st_atime = st.st_mtime = st.st_ctime = tv.tv_sec;
else
diff --git a/gdb/remote-mips.c b/gdb/remote-mips.c
index 71e2befaeff..c75768406b9 100644
--- a/gdb/remote-mips.c
+++ b/gdb/remote-mips.c
@@ -599,35 +599,6 @@ mips_expect (const char *string)
return mips_expect_timeout (string, remote_timeout);
}
-/* Read the required number of characters into the given buffer (which
- is assumed to be large enough). The only failure is a timeout. */
-static int
-mips_getstring (char *string, int n)
-{
- char *p = string;
- int c;
-
- immediate_quit++;
- while (n > 0)
- {
- c = serial_readchar (mips_desc, remote_timeout);
-
- if (c == SERIAL_TIMEOUT)
- {
- fprintf_unfiltered (gdb_stderr,
- "Failed to read %d characters from target (TIMEOUT)\n", n);
- immediate_quit--;
- return 0;
- }
-
- *p++ = c;
- n--;
- }
-
- immediate_quit--;
- return 1;
-}
-
/* Read a character from the remote, aborting on error. Returns
SERIAL_TIMEOUT on timeout (since that's what serial_readchar()
returns). FIXME: If we see the string mips_monitor_prompt from the
@@ -2270,129 +2241,6 @@ mips_remove_breakpoint (CORE_ADDR addr, char *contents_cache)
return memory_remove_breakpoint (addr, contents_cache);
}
-#if 0 /* currently not used */
-/* PMON does not currently provide support for the debug mode 'b'
- commands to manipulate breakpoints. However, if we wanted to use
- the monitor breakpoints (rather than the GDB BREAK_INSN version)
- then this code performs the work needed to leave debug mode,
- set/clear the breakpoint, and then return to debug mode. */
-
-#define PMON_MAX_BP (33) /* 32 SW, 1 HW */
-static CORE_ADDR mips_pmon_bp_info[PMON_MAX_BP];
-/* NOTE: The code relies on this vector being zero-initialised by the system */
-
-static int
-pmon_insert_breakpoint (CORE_ADDR addr, char *contents_cache)
-{
- int status;
-
- if (monitor_supports_breakpoints)
- {
- char tbuff[12]; /* space for breakpoint command */
- int bpnum;
- CORE_ADDR bpaddr;
-
- /* PMON does not support debug level breakpoint set/remove: */
- if (mips_exit_debug ())
- mips_error ("Failed to exit debug mode");
-
- sprintf (tbuff, "b %08x\r", addr);
- mips_send_command (tbuff, 0);
-
- mips_expect ("Bpt ");
-
- if (!mips_getstring (tbuff, remote_timeout))
- return 1;
- tbuff[2] = '\0'; /* terminate the string */
- if (sscanf (tbuff, "%d", &bpnum) != 1)
- {
- fprintf_unfiltered (gdb_stderr,
- "Invalid decimal breakpoint number from target: %s\n", tbuff);
- return 1;
- }
-
- mips_expect (" = ");
-
- /* Lead in the hex number we are expecting: */
- tbuff[0] = '0';
- tbuff[1] = 'x';
-
- /* FIXME!! only 8 bytes! need to expand for Bfd64;
- which targets return 64-bit addresses? PMON returns only 32! */
- if (!mips_getstring (&tbuff[2], 8))
- return 1;
- tbuff[10] = '\0'; /* terminate the string */
-
- if (sscanf (tbuff, "0x%08x", &bpaddr) != 1)
- {
- fprintf_unfiltered (gdb_stderr,
- "Invalid hex address from target: %s\n", tbuff);
- return 1;
- }
-
- if (bpnum >= PMON_MAX_BP)
- {
- fprintf_unfiltered (gdb_stderr,
- "Error: Returned breakpoint number %d outside acceptable range (0..%d)\n",
- bpnum, PMON_MAX_BP - 1);
- return 1;
- }
-
- if (bpaddr != addr)
- fprintf_unfiltered (gdb_stderr, "Warning: Breakpoint addresses do not match: 0x%x != 0x%x\n", addr, bpaddr);
-
- mips_pmon_bp_info[bpnum] = bpaddr;
-
- mips_expect ("\r\n");
- mips_expect (mips_monitor_prompt);
-
- mips_enter_debug ();
-
- return 0;
- }
-
- return mips_store_word (addr, BREAK_INSN, contents_cache);
-}
-
-static int
-pmon_remove_breakpoint (CORE_ADDR addr, char *contents_cache)
-{
- if (monitor_supports_breakpoints)
- {
- int bpnum;
- char tbuff[7]; /* enough for delete breakpoint command */
-
- for (bpnum = 0; bpnum < PMON_MAX_BP; bpnum++)
- if (mips_pmon_bp_info[bpnum] == addr)
- break;
-
- if (bpnum >= PMON_MAX_BP)
- {
- fprintf_unfiltered (gdb_stderr,
- "pmon_remove_breakpoint: Failed to find breakpoint at address 0x%s\n",
- paddr_nz (addr));
- return 1;
- }
-
- if (mips_exit_debug ())
- mips_error ("Failed to exit debug mode");
-
- sprintf (tbuff, "db %02d\r", bpnum);
-
- mips_send_command (tbuff, -1);
- /* NOTE: If the breakpoint does not exist then a "Bpt <dd> not
- set" message will be returned. */
-
- mips_enter_debug ();
-
- return 0;
- }
-
- return target_write_memory (addr, contents_cache, BREAK_INSN_SIZE);
-}
-#endif
-
-
/* Tell whether this target can support a hardware breakpoint. CNT
is the number of hardware breakpoints already installed. This
implements the TARGET_CAN_USE_HARDWARE_WATCHPOINT macro. */
@@ -2427,31 +2275,6 @@ calculate_mask (CORE_ADDR addr, int len)
}
-/* Insert a hardware breakpoint. This works only on LSI targets, which
- implement ordinary breakpoints using hardware facilities. */
-
-static int
-remote_mips_insert_hw_breakpoint (CORE_ADDR addr, char *contents_cache)
-{
- if (strcmp (target_shortname, "lsi") == 0)
- return mips_insert_breakpoint (addr, contents_cache);
- else
- return -1;
-}
-
-
-/* Remove a hardware breakpoint. This works only on LSI targets, which
- implement ordinary breakpoints using hardware facilities. */
-
-static int
-remote_mips_remove_hw_breakpoint (CORE_ADDR addr, char *contents_cache)
-{
- if (strcmp (target_shortname, "lsi") == 0)
- return mips_remove_breakpoint (addr, contents_cache);
- else
- return -1;
-}
-
/* Set a data watchpoint. ADDR and LEN should be obvious. TYPE is 0
for a write watchpoint, 1 for a read watchpoint, or 2 for a read/write
watchpoint. */
diff --git a/gdb/remote-rdi.c b/gdb/remote-rdi.c
index bd208c11645..aa005a7f52b 100644
--- a/gdb/remote-rdi.c
+++ b/gdb/remote-rdi.c
@@ -76,10 +76,6 @@ static void arm_rdi_close (int quitting);
static void arm_rdi_store_registers (int regno);
-static void arm_rdi_mourn (void);
-
-static void arm_rdi_send (char *buf);
-
static ptid_t arm_rdi_wait (ptid_t ptid, struct target_waitstatus *status);
static void arm_rdi_kill (void);
diff --git a/gdb/remote-sds.c b/gdb/remote-sds.c
index c920997f0ba..d74fd7db242 100644
--- a/gdb/remote-sds.c
+++ b/gdb/remote-sds.c
@@ -1,6 +1,6 @@
/* Remote target communications for serial-line targets using SDS' protocol.
- Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2004 Free Software
Foundation, Inc.
This file is part of GDB.
@@ -92,8 +92,6 @@ static ptid_t sds_wait (ptid_t, struct target_waitstatus *);
static void sds_kill (void);
-static int tohex (int);
-
static int fromhex (int);
static void sds_detach (char *, int);
@@ -278,17 +276,6 @@ fromhex (int a)
error ("Reply contains invalid hex digit %d", a);
}
-/* Convert number NIB to a hex digit. */
-
-static int
-tohex (int nib)
-{
- if (nib < 10)
- return '0' + nib;
- else
- return 'a' + nib - 10;
-}
-
static int
tob64 (unsigned char *inbuf, char *outbuf, int len)
{
diff --git a/gdb/remote-vxsparc.c b/gdb/remote-vxsparc.c
index d313c8f133b..118e5173e13 100644
--- a/gdb/remote-vxsparc.c
+++ b/gdb/remote-vxsparc.c
@@ -1,5 +1,4 @@
-/* sparc-dependent portions of the RPC protocol
- used with a VxWorks target
+/* SPARC-specific portions of the RPC protocol for VxWorks.
Contributed by Wind River Systems.
@@ -20,179 +19,110 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#include <stdio.h>
#include "defs.h"
-
-#include "vx-share/regPacket.h"
-#include "frame.h"
-#include "inferior.h"
-#include "target.h"
-#include "gdbcore.h"
-#include "command.h"
-#include "symtab.h"
-#include "symfile.h"
#include "regcache.h"
#include "gdb_string.h"
-#include <errno.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-
-#ifdef _AIX /* IBM claims "void *malloc()" not char * */
-#define malloc bogon_malloc
-#endif
-
-#include <rpc/rpc.h>
-#include <sys/time.h> /* UTek's <rpc/rpc.h> doesn't #incl this */
-#include <netdb.h>
-#include "vx-share/ptrace.h"
-#include "vx-share/xdr_ptrace.h"
-#include "vx-share/xdr_ld.h"
-#include "vx-share/xdr_rdb.h"
-#include "vx-share/dbgRpcLib.h"
-/* get rid of value.h if possible */
-#include <value.h>
-#include <symtab.h>
+#include "sparc-tdep.h"
-/* Flag set if target has fpu */
+#include "vx-share/ptrace.h"
+#include "vx-share/regPacket.h"
-extern int target_has_fp;
+#define SPARC_R_G1 (SPARC_R_G0 + SPARC_GREG_SIZE)
-/* sparc floating point format descriptor, from "sparc-tdep.c." */
+const struct sparc_gregset vxsparc_gregset =
+{
+ SPARC_R_PSR, /* %psr */
+ SPARC_R_PC, /* %pc */
+ SPARC_R_NPC, /* %npc */
+ SPARC_R_Y, /* %y */
+ SPARC_R_WIM, /* %wim */
+ SPARC_R_TBR, /* %tbr */
+ SPARC_R_G1, /* %g1 */
+ SPARC_R_I0 /* %l0 */
+};
+
+/* Flag set if target has an FPU. */
-extern struct ext_format ext_format_sparc;
+extern int target_has_fp;
/* Generic register read/write routines in remote-vx.c. */
extern void net_read_registers ();
extern void net_write_registers ();
-/* Read a register or registers from the VxWorks target.
- REGNO is the register to read, or -1 for all; currently,
- it is ignored. FIXME look at regno to improve efficiency. */
+/* Read a register or registers from the VxWorks target. REGNUM is
+ the register to read, or -1 for all; currently, it is ignored.
+ FIXME: Look at REGNUM to improve efficiency. */
void
-vx_read_register (int regno)
+vx_read_register (int regnum)
{
- char sparc_greg_packet[SPARC_GREG_PLEN];
- char sparc_fpreg_packet[SPARC_FPREG_PLEN];
+ struct regcache *regcache = current_regcache;
+ char gregs[SPARC_GREG_PLEN];
+ char fpregs[SPARC_FPREG_PLEN];
CORE_ADDR sp;
- /* Get general-purpose registers. When copying values into
- registers [], don't assume that a location in registers []
- is properly aligned for the target data type. */
-
- net_read_registers (sparc_greg_packet, SPARC_GREG_PLEN, PTRACE_GETREGS);
-
- /* Now copy the register values into registers[].
- Note that this code depends on the ordering of the REGNUMs
- as defined in "tm-sparc.h". */
-
- bcopy (&sparc_greg_packet[SPARC_R_G0],
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (G0_REGNUM)],
- 32 * SPARC_GREG_SIZE);
- bcopy (&sparc_greg_packet[SPARC_R_Y],
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)], 6 * SPARC_GREG_SIZE);
-
- /* Now write the local and in registers to the register window spill
- area in the frame. VxWorks does not do this for the active frame
- automatically; it greatly simplifies debugging. */
-
- sp = extract_unsigned_integer (&deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)],
- DEPRECATED_REGISTER_RAW_SIZE (SP_REGNUM));
- write_memory (sp, &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)],
- 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM));
-
- /* If the target has floating point registers, fetch them.
- Otherwise, zero the floating point register values in
- registers[] for good measure, even though we might not
- need to. */
+ /* Get the general-purpose registers. */
+ net_read_registers (gregs, SPARC_GREG_PLEN, PTRACE_GETREGS);
+ sparc32_supply_gregset (&vxsparc_gregset, regcache, -1, gregs);
+ /* If the target has floating-point registers, fetch them.
+ Otherwise, zero the floating-point register values in GDB's
+ register cache for good measure, even though we might not need
+ to. */
if (target_has_fp)
- {
- net_read_registers (sparc_fpreg_packet, SPARC_FPREG_PLEN,
- PTRACE_GETFPREGS);
- bcopy (&sparc_fpreg_packet[SPARC_R_FP0],
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)],
- 32 * SPARC_FPREG_SIZE);
- bcopy (&sparc_fpreg_packet[SPARC_R_FSR],
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)],
- 1 * SPARC_FPREG_SIZE);
- }
+ net_read_registers (fpregs, SPARC_FPREG_PLEN, PTRACE_GETFPREGS);
else
- {
- memset (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)],
- 0, 32 * SPARC_FPREG_SIZE);
- memset (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)],
- 0, 1 * SPARC_FPREG_SIZE);
- }
-
- /* Mark the register cache valid. */
-
- deprecated_registers_fetched ();
+ memset (fpregs, 0, SPARC_FPREG_PLEN);
+ sparc32_supply_fpregset (regcache, -1, fpregs);
}
-/* Store a register or registers into the VxWorks target.
- REGNO is the register to store, or -1 for all; currently,
- it is ignored. FIXME look at regno to improve efficiency. */
+/* Store a register or registers into the VxWorks target. REGNUM is
+ the register to store, or -1 for all; currently, it is ignored.
+ FIXME: Look at REGNUM to improve efficiency. */
void
-vx_write_register (int regno)
+vx_write_register (int regnum)
{
- char sparc_greg_packet[SPARC_GREG_PLEN];
- char sparc_fpreg_packet[SPARC_FPREG_PLEN];
- int in_gp_regs;
- int in_fp_regs;
+ struct regcache *regcache = current_regcache;
+ char gregs[SPARC_GREG_PLEN];
+ char fpregs[SPARC_FPREG_PLEN];
+ int gregs_p = 1;
+ int fpregs_p = 1;
CORE_ADDR sp;
- /* Store general purpose registers. When copying values from
- registers [], don't assume that a location in registers []
- is properly aligned for the target data type. */
-
- in_gp_regs = 1;
- in_fp_regs = 1;
- if (regno >= 0)
+ if (regnum != -1)
{
- if ((G0_REGNUM <= regno && regno <= I7_REGNUM)
- || (Y_REGNUM <= regno && regno <= DEPRECATED_NPC_REGNUM))
- in_fp_regs = 0;
+ if ((SPARC_G0_REGNUM <= regnum && regnum <= SPARC_I7_REGNUM)
+ || (SPARC32_Y_REGNUM <= regnum && regnum <= SPARC32_NPC_REGNUM))
+ fpregs_p = 0;
else
- in_gp_regs = 0;
+ gregs_p = 0;
}
- if (in_gp_regs)
- {
- bcopy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (G0_REGNUM)],
- &sparc_greg_packet[SPARC_R_G0], 32 * SPARC_GREG_SIZE);
- bcopy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)],
- &sparc_greg_packet[SPARC_R_Y], 6 * SPARC_GREG_SIZE);
-
- net_write_registers (sparc_greg_packet, SPARC_GREG_PLEN, PTRACE_SETREGS);
- /* If this is a local or in register, or we're storing all
- registers, update the register window spill area. */
+ /* Store the general-purpose registers. */
+ if (gregs_p)
+ {
+ sparc32_collect_gregset (&vxsparc_gregset, regcache, -1, gregs);
+ net_write_registers (gregs, SPARC_GREG_PLEN, PTRACE_SETREGS);
- if (regno < 0 || (L0_REGNUM <= regno && regno <= I7_REGNUM))
+ /* Deal with the stack regs. */
+ if (regnum == -1 || regnum == SPARC_SP_REGNUM
+ || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM))
{
- sp = extract_unsigned_integer (&deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)],
- DEPRECATED_REGISTER_RAW_SIZE (SP_REGNUM));
- write_memory (sp, &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)],
- 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM));
+ ULONGEST sp;
+
+ regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp);
+ sparc_collect_rwindow (regcache, sp, regnum);
}
}
- /* Store floating point registers if the target has them. */
-
- if (in_fp_regs && target_has_fp)
+ /* Store the floating-point registers if the target has them. */
+ if (fpregs_p && target_has_fp)
{
- bcopy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)],
- &sparc_fpreg_packet[SPARC_R_FP0], 32 * SPARC_FPREG_SIZE);
- bcopy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)],
- &sparc_fpreg_packet[SPARC_R_FSR], 1 * SPARC_FPREG_SIZE);
-
- net_write_registers (sparc_fpreg_packet, SPARC_FPREG_PLEN,
- PTRACE_SETFPREGS);
+ sparc32_collect_fpregset (regcache, -1, fpregs);
+ net_write_registers (fpregs, SPARC_FPREG_PLEN, PTRACE_SETFPREGS);
}
}
diff --git a/gdb/remote.c b/gdb/remote.c
index 29ab0112760..f107e9bdd6b 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -1,7 +1,8 @@
/* Remote target communications for serial-line targets in custom GDB protocol
Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ Free Software Foundation, Inc.
This file is part of GDB.
@@ -1161,10 +1162,6 @@ static int remote_unpack_thread_info_response (char *pkt,
static int remote_get_threadinfo (threadref * threadid, int fieldset, /*TAG mask */
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 (char *pkt, int startflag,
int threadcount,
threadref * nextthread);
@@ -1576,19 +1573,6 @@ remote_get_threadinfo (threadref *threadid, int fieldset, /* TAG mask */
return result;
}
-/* Unfortunately, 61 bit thread-ids are bigger than the internal
- representation of a threadid. */
-
-static int
-adapt_remote_get_threadinfo (gdb_threadref *ref, int selection,
- struct gdb_ext_thread_info *info)
-{
- threadref lclref;
-
- int_to_threadref (&lclref, *ref);
- return remote_get_threadinfo (&lclref, selection, info);
-}
-
/* Format: i'Q':8,i"L":8,initflag:8,batchsize:16,lastthreadid:32 */
static char *
@@ -2586,7 +2570,7 @@ remote_vcont_resume (ptid_t ptid, int step, enum target_signal siggnal)
{
struct remote_state *rs = get_remote_state ();
int pid = PIDGET (ptid);
- char *buf = NULL;
+ char *buf = NULL, *outbuf;
struct cleanup *old_cleanup;
buf = xmalloc (rs->remote_packet_size);
@@ -2611,40 +2595,45 @@ remote_vcont_resume (ptid_t ptid, int step, enum target_signal siggnal)
don't have any PID numbers the inferior will understand. Make sure
to only send forms that do not specify a PID. */
if (step && siggnal != TARGET_SIGNAL_0)
- sprintf (buf, "vCont;S%02x", siggnal);
+ outbuf = xstrprintf ("vCont;S%02x", siggnal);
else if (step)
- sprintf (buf, "vCont;s");
+ outbuf = xstrprintf ("vCont;s");
else if (siggnal != TARGET_SIGNAL_0)
- sprintf (buf, "vCont;C%02x", siggnal);
+ outbuf = xstrprintf ("vCont;C%02x", siggnal);
else
- sprintf (buf, "vCont;c");
+ outbuf = xstrprintf ("vCont;c");
}
else if (pid == -1)
{
/* Resume all threads, with preference for INFERIOR_PTID. */
if (step && siggnal != TARGET_SIGNAL_0)
- sprintf (buf, "vCont;S%02x:%x;c", siggnal, PIDGET (inferior_ptid));
+ outbuf = xstrprintf ("vCont;S%02x:%x;c", siggnal,
+ PIDGET (inferior_ptid));
else if (step)
- sprintf (buf, "vCont;s:%x;c", PIDGET (inferior_ptid));
+ outbuf = xstrprintf ("vCont;s:%x;c", PIDGET (inferior_ptid));
else if (siggnal != TARGET_SIGNAL_0)
- sprintf (buf, "vCont;C%02x:%x;c", siggnal, PIDGET (inferior_ptid));
+ outbuf = xstrprintf ("vCont;C%02x:%x;c", siggnal,
+ PIDGET (inferior_ptid));
else
- sprintf (buf, "vCont;c");
+ outbuf = xstrprintf ("vCont;c");
}
else
{
/* Scheduler locking; resume only PTID. */
if (step && siggnal != TARGET_SIGNAL_0)
- sprintf (buf, "vCont;S%02x:%x", siggnal, pid);
+ outbuf = xstrprintf ("vCont;S%02x:%x", siggnal, pid);
else if (step)
- sprintf (buf, "vCont;s:%x", pid);
+ outbuf = xstrprintf ("vCont;s:%x", pid);
else if (siggnal != TARGET_SIGNAL_0)
- sprintf (buf, "vCont;C%02x:%x", siggnal, pid);
+ outbuf = xstrprintf ("vCont;C%02x:%x", siggnal, pid);
else
- sprintf (buf, "vCont;c:%x", pid);
+ outbuf = xstrprintf ("vCont;c:%x", pid);
}
- putpkt (buf);
+ gdb_assert (outbuf && strlen (outbuf) < rs->remote_packet_size);
+ make_cleanup (xfree, outbuf);
+
+ putpkt (outbuf);
do_cleanups (old_cleanup);
diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c
index 78789842608..3d6c07c3dda 100644
--- a/gdb/rs6000-nat.c
+++ b/gdb/rs6000-nat.c
@@ -1,8 +1,8 @@
/* IBM RS/6000 native-dependent code for GDB, the GNU debugger.
Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
- 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
This file is part of GDB.
@@ -1002,6 +1002,7 @@ set_host_arch (int pid)
gdbarch_info_init (&info);
info.bfd_arch_info = bfd_get_arch_info (&abfd);
+ info.abfd = exec_bfd;
if (!gdbarch_update_p (info))
{
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index b3a322d0411..57fe902feeb 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -1,7 +1,8 @@
/* Target-dependent code for GDB, the GNU debugger.
- Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+
+ Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996,
+ 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
+ Foundation, Inc.
This file is part of GDB.
@@ -1247,6 +1248,14 @@ ran_out_of_registers_for_arguments:
space = (space + 15) & -16;
sp -= space;
+ /* This is another instance we need to be concerned about
+ securing our stack space. If we write anything underneath %sp
+ (r1), we might conflict with the kernel who thinks he is free
+ to use this area. So, update %sp first before doing anything
+ else. */
+
+ regcache_raw_write_signed (regcache, SP_REGNUM, sp);
+
/* If the last argument copied into the registers didn't fit there
completely, push the rest of it into stack. */
@@ -1288,16 +1297,18 @@ ran_out_of_registers_for_arguments:
}
}
- /* set back chain properly */
- store_unsigned_integer (tmp_buffer, 4, saved_sp);
- write_memory (sp, tmp_buffer, 4);
-
/* Set the stack pointer. According to the ABI, the SP is meant to
- be set _before_ the corresponding stack space is used. No need
- for that here though - the target has been completely stopped -
- it isn't possible for an exception handler to stomp on the stack. */
+ be set _before_ the corresponding stack space is used. On AIX,
+ this even applies when the target has been completely stopped!
+ Not doing this can lead to conflicts with the kernel which thinks
+ that it still has control over this not-yet-allocated stack
+ region. */
regcache_raw_write_signed (regcache, SP_REGNUM, sp);
+ /* Set back chain properly. */
+ store_unsigned_integer (tmp_buffer, 4, saved_sp);
+ write_memory (sp, tmp_buffer, 4);
+
/* Point the inferior function call's return address at the dummy's
breakpoint. */
regcache_raw_write_signed (regcache, tdep->ppc_lr_regnum, bp_addr);
@@ -2886,8 +2897,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_skip_prologue (gdbarch, rs6000_skip_prologue);
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_breakpoint_from_pc (gdbarch, rs6000_breakpoint_from_pc);
/* Handle the 64-bit SVR4 minimal-symbol convention of using "FN"
diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c
index eb4a62ef3c4..0e5265288fc 100644
--- a/gdb/s390-tdep.c
+++ b/gdb/s390-tdep.c
@@ -2597,9 +2597,6 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_pop_frame (gdbarch, s390_pop_frame);
/* Stack grows downward. */
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- /* Offset from address of function to start of its code.
- Zero on most machines. */
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_deprecated_max_register_raw_size (gdbarch, 8);
set_gdbarch_deprecated_max_register_virtual_size (gdbarch, 8);
set_gdbarch_breakpoint_from_pc (gdbarch, s390_breakpoint_from_pc);
diff --git a/gdb/scm-lang.c b/gdb/scm-lang.c
index 7e2ad8fac6f..872dcaf89fc 100644
--- a/gdb/scm-lang.c
+++ b/gdb/scm-lang.c
@@ -1,6 +1,6 @@
/* Scheme/Guile language support routines for GDB, the GNU debugger.
- Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003 Free Software
+ Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This file is part of GDB.
@@ -263,6 +263,7 @@ const struct language_defn scm_language_defn =
NULL, /* Language specific skip_trampoline */
value_of_this, /* value_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
+ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
{"", "", "", ""}, /* Binary format info */
{"#o%lo", "#o", "o", ""}, /* Octal format info */
diff --git a/gdb/ser-pipe.c b/gdb/ser-pipe.c
index 38f8e78949a..3e04973f854 100644
--- a/gdb/ser-pipe.c
+++ b/gdb/ser-pipe.c
@@ -98,7 +98,7 @@ pipe_open (struct serial *scb, const char *name)
for (old = pidlist; old; old = old->next)
close (fileno (old->fp)); /* don't allow a flush */
#endif
- execl ("/bin/sh", "sh", "-c", name, NULL);
+ execl ("/bin/sh", "sh", "-c", name, (char *) 0);
_exit (127);
}
diff --git a/gdb/ser-unix.c b/gdb/ser-unix.c
index e7a5d93cef5..38b6716d2ee 100644
--- a/gdb/ser-unix.c
+++ b/gdb/ser-unix.c
@@ -1,6 +1,7 @@
/* Serial interface for local (hardwired) serial ports on Un*x like systems
- Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
- Free Software Foundation, Inc.
+
+ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+ 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -1324,7 +1325,7 @@ ser_unix_async (struct serial *scb,
case FD_SCHEDULED:
delete_file_handler (scb->fd);
break;
- NOTHING_SCHEDULED:
+ case NOTHING_SCHEDULED:
break;
default: /* TIMER SCHEDULED */
delete_timer (scb->async_state);
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
index a14c0d9c3ec..8c7408b015c 100644
--- a/gdb/sh-tdep.c
+++ b/gdb/sh-tdep.c
@@ -2244,8 +2244,6 @@ sh_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_skip_prologue (gdbarch, sh_skip_prologue);
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_push_dummy_call (gdbarch, sh_push_dummy_call_nofpu);
diff --git a/gdb/sh64-tdep.c b/gdb/sh64-tdep.c
index ac080ac767e..56063c11318 100644
--- a/gdb/sh64-tdep.c
+++ b/gdb/sh64-tdep.c
@@ -1,6 +1,7 @@
/* Target-dependent code for Renesas Super-H, for GDB.
- Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+
+ Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -831,12 +832,6 @@ is_media_pseudo (int rn)
}
static int
-sh64_get_gdb_regnum (int gcc_regnum, CORE_ADDR pc)
-{
- return translate_insn_rn (gcc_regnum, pc_is_isa32 (pc));
-}
-
-static int
sh64_media_reg_base_num (int reg_nr)
{
int base_regnum = -1;
@@ -1347,11 +1342,14 @@ sh64_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp,
}
static CORE_ADDR
-sh64_extract_struct_value_address (char *regbuf)
+sh64_extract_struct_value_address (struct regcache *regcache)
{
- return (extract_unsigned_integer ((regbuf + DEPRECATED_REGISTER_BYTE (STRUCT_RETURN_REGNUM)),
- register_size (current_gdbarch,
- STRUCT_RETURN_REGNUM)));
+ /* FIXME: cagney/2004-01-17: Does the ABI guarantee that the return
+ address regster is preserved across function calls? Probably
+ not, making this function wrong. */
+ ULONGEST val;
+ regcache_raw_read_unsigned (regcache, STRUCT_RETURN_REGNUM, &val);
+ return val;
}
static CORE_ADDR
@@ -2848,8 +2846,6 @@ sh64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_skip_prologue (gdbarch, sh_skip_prologue);
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- set_gdbarch_function_start_offset (gdbarch, 0);
set_gdbarch_frame_args_skip (gdbarch, 0);
set_gdbarch_frameless_function_invocation (gdbarch, frameless_look_for_prologue);
@@ -2891,7 +2887,7 @@ sh64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_push_return_address (gdbarch, sh64_push_return_address);
set_gdbarch_deprecated_dummy_write_sp (gdbarch, deprecated_write_sp);
set_gdbarch_deprecated_store_struct_return (gdbarch, sh64_store_struct_return);
- set_gdbarch_deprecated_extract_struct_value_address (gdbarch, sh64_extract_struct_value_address);
+ set_gdbarch_extract_struct_value_address (gdbarch, sh64_extract_struct_value_address);
set_gdbarch_use_struct_convention (gdbarch, sh64_use_struct_convention);
set_gdbarch_deprecated_pop_frame (gdbarch, sh64_pop_frame);
set_gdbarch_elf_make_msymbol_special (gdbarch,
diff --git a/gdb/solib.h b/gdb/solib.h
index 01971f412e7..cb4ba2d382a 100644
--- a/gdb/solib.h
+++ b/gdb/solib.h
@@ -57,100 +57,6 @@ extern void solib_add (char *, int, struct target_ops *, int);
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
- library file (or any library file, if filename is NULL) is loaded.
-
- Presently, this functionality is not implemented.
- */
-#define SOLIB_CREATE_CATCH_LOAD_HOOK(pid,tempflag,filename,cond_string) \
- error("catch of library loads/unloads not yet implemented on this platform")
-
-/* This function is called by the "catch unload" command. It allows
- the debugger to be notified by the dynamic linker when a specified
- library file (or any library file, if filename is NULL) is unloaded.
-
- Presently, this functionality is not implemented.
- */
-#define SOLIB_CREATE_CATCH_UNLOAD_HOOK(pid,tempflag,filename,cond_string) \
- error("catch of library loads/unloads not yet implemented on this platform")
-
-/* This function returns TRUE if the dynamic linker has just reported
- a load of a library.
-
- This function must be used only when the inferior has stopped in
- the dynamic linker hook, or undefined results are guaranteed.
-
- Presently, this functionality is not implemented.
- */
-
-/*
- #define SOLIB_HAVE_LOAD_EVENT(pid) \
- error("catch of library loads/unloads not yet implemented on this platform")
- */
-
-#define SOLIB_HAVE_LOAD_EVENT(pid) \
-(0)
-
-/* This function returns a pointer to the string representation of the
- pathname of the dynamically-linked library that has just been loaded.
-
- This function must be used only when SOLIB_HAVE_LOAD_EVENT is TRUE,
- or undefined results are guaranteed.
-
- This string's contents are only valid immediately after the inferior
- has stopped in the dynamic linker hook, and becomes invalid as soon
- as the inferior is continued. Clients should make a copy of this
- string if they wish to continue the inferior and then access the string.
-
- Presently, this functionality is not implemented.
- */
-
-/*
- #define SOLIB_LOADED_LIBRARY_PATHNAME(pid) \
- error("catch of library loads/unloads not yet implemented on this platform")
- */
-
-#define SOLIB_LOADED_LIBRARY_PATHNAME(pid) \
-""
-
-/* This function returns TRUE if the dynamic linker has just reported
- an unload of a library.
-
- This function must be used only when the inferior has stopped in
- the dynamic linker hook, or undefined results are guaranteed.
-
- Presently, this functionality is not implemented.
- */
-/*
- #define SOLIB_HAVE_UNLOAD_EVENT(pid) \
- error("catch of library loads/unloads not yet implemented on this platform")
- */
-
-#define SOLIB_HAVE_UNLOAD_EVENT(pid) \
-(0)
-
-/* This function returns a pointer to the string representation of the
- pathname of the dynamically-linked library that has just been unloaded.
-
- This function must be used only when SOLIB_HAVE_UNLOAD_EVENT is TRUE,
- or undefined results are guaranteed.
-
- This string's contents are only valid immediately after the inferior
- has stopped in the dynamic linker hook, and becomes invalid as soon
- as the inferior is continued. Clients should make a copy of this
- string if they wish to continue the inferior and then access the string.
-
- Presently, this functionality is not implemented.
- */
-/*
- #define SOLIB_UNLOADED_LIBRARY_PATHNAME(pid) \
- error("catch of library loads/unloads not yet implemented on this platform")
- */
-
-#define SOLIB_UNLOADED_LIBRARY_PATHNAME(pid) \
-""
-
/* 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
itself).
diff --git a/gdb/source.c b/gdb/source.c
index 2b8d3a387fd..218a9d4d169 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -1232,22 +1232,6 @@ print_source_lines (struct symtab *s, int line, int stopline, int noerror)
print_source_lines_base (s, line, stopline, noerror);
}
-/* Print a list of files and line numbers which a user may choose from
- in order to list a function which was specified ambiguously (as with
- `list classname::overloadedfuncname', or 'list objectiveCSelector:).
- The vector in SALS provides the filenames and line numbers.
- NOTE: some of the SALS may have no filename or line information! */
-
-static void
-ambiguous_line_spec (struct symtabs_and_lines *sals)
-{
- int i;
-
- for (i = 0; i < sals->nelts; ++i)
- printf_filtered ("file: \"%s\", line number: %d\n",
- sals->sals[i].symtab->filename, sals->sals[i].line);
-}
-
/* Print info on range of pc's in a specified line. */
static void
diff --git a/gdb/sparc-linux-nat.c b/gdb/sparc-linux-nat.c
deleted file mode 100644
index f43cb593b20..00000000000
--- a/gdb/sparc-linux-nat.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Native-dependent code for GNU/Linux SPARC.
-
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "defs.h"
-#include "regcache.h"
-#include "sparc-tdep.h"
-
-#include <sys/procfs.h>
-
-/* Prototypes for supply_gregset etc. */
-#include "gregset.h"
-
-void
-supply_gregset (elf_gregset_t *gregsetp)
-{
- elf_greg_t *regp = (elf_greg_t *) gregsetp;
- int i;
-
- for (i = G0_REGNUM; i <= I7_REGNUM; i++)
- supply_register (i, (char *) (regp + (i - G0_REGNUM)));
-
- supply_register (PS_REGNUM, (char *) (regp + 32));
-
- supply_register (PC_REGNUM, (char *) (regp + 33));
- supply_register (DEPRECATED_NPC_REGNUM, (char *) (regp + 34));
- supply_register (Y_REGNUM, (char *) (regp + 35));
-
- supply_register (WIM_REGNUM, (char *) (regp + 36));
- supply_register (TBR_REGNUM, (char *) (regp + 37));
-
- /* Fill inaccessible registers with zero. */
- supply_register (CPS_REGNUM, NULL);
-}
-
-void
-fill_gregset (elf_gregset_t *gregsetp, int regno)
-{
- elf_greg_t *regp = (elf_greg_t *) gregsetp;
- int i;
-
- for (i = G0_REGNUM; i <= I7_REGNUM; i++)
- if (regno == -1 || regno == i)
- regcache_collect (i, regp + (i - G0_REGNUM));
-
- if (regno == -1 || regno == PS_REGNUM)
- regcache_collect (PS_REGNUM, regp + 32);
-
- if (regno == -1 || regno == PC_REGNUM)
- regcache_collect (PC_REGNUM, regp + 33);
- if (regno == -1 || regno == DEPRECATED_NPC_REGNUM)
- regcache_collect (DEPRECATED_NPC_REGNUM, regp + 34);
- if (regno == -1 || regno == Y_REGNUM)
- regcache_collect (Y_REGNUM, regp + 35);
-
- if (regno == -1 || regno == WIM_REGNUM)
- regcache_collect (WIM_REGNUM, regp + 36);
- if (regno == -1 || regno == TBR_REGNUM)
- regcache_collect (TBR_REGNUM, regp + 37);
-}
-
-void
-supply_fpregset (elf_fpregset_t *fpregsetp)
-{
- int i;
-
- for (i = FP0_REGNUM; i < FP0_REGNUM + 32; i++)
- supply_register (i, (char *) &fpregsetp->pr_fr.pr_regs[i - FP0_REGNUM]);
-
- supply_register (FPS_REGNUM, (char *) &fpregsetp->pr_fsr);
-}
-
-void
-fill_fpregset (elf_fpregset_t *fpregsetp, int regno)
-{
- int i;
-
- for (i = FP0_REGNUM; i < FP0_REGNUM + 32; i++)
- if (regno == -1 || regno == i)
- regcache_collect (i, &fpregsetp->pr_fr.pr_regs[i - FP0_REGNUM]);
-
- if (regno == -1 || regno == FPS_REGNUM)
- regcache_collect (FPS_REGNUM, &fpregsetp->pr_fsr);
-}
diff --git a/gdb/sparc-nat.c b/gdb/sparc-nat.c
index a76d0e546ee..3ab21f0e160 100644
--- a/gdb/sparc-nat.c
+++ b/gdb/sparc-nat.c
@@ -1,7 +1,6 @@
-/* Functions specific to running gdb native on a SPARC running SunOS4.
+/* Native-dependent code for SPARC.
- Copyright 1989, 1992, 1993, 1994, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -22,46 +21,121 @@
#include "defs.h"
#include "inferior.h"
-#include "target.h"
-#include "gdbcore.h"
#include "regcache.h"
-#include "sparc-tdep.h"
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
#include <signal.h>
+#include "gdb_string.h"
#include <sys/ptrace.h>
#include "gdb_wait.h"
-#ifdef __linux__
-#include <asm/reg.h>
-#else
+#ifdef HAVE_MACHINE_REG_H
#include <machine/reg.h>
#endif
-#include <sys/user.h>
-/* We don't store all registers immediately when requested, since they
- get sent over in large chunks anyway. Instead, we accumulate most
- of the changes and send them over once. "deferred_stores" keeps
- track of which sets of registers we have locally-changed copies of,
- so we only need send the groups that have changed. */
+#include "sparc-tdep.h"
+#include "sparc-nat.h"
+
+/* With some trickery we can use the code in this file for most (if
+ not all) ptrace(2) based SPARC systems, which includes SunOS 4,
+ GNU/Linux and the various SPARC BSD's.
+
+ First, we need a data structure for use with ptrace(2). SunOS has
+ `struct regs' and `struct fp_status' in <machine/reg.h>. BSD's
+ have `struct reg' and `struct fpreg' in <machine/reg.h>. GNU/Linux
+ has the same structures as SunOS 4, but they're in <asm/reg.h>,
+ which is a kernel header. As a general rule we avoid including
+ GNU/Linux kernel headers. Fortunately GNU/Linux has a `gregset_t'
+ and a `fpregset_t' that are equivalent to `struct regs' and `struct
+ fp_status' in <sys/ucontext.h>, which is automatically included by
+ <signal.h>. Settling on using the `gregset_t' and `fpregset_t'
+ typedefs, providing them for the other systems, therefore solves
+ the puzzle. */
+
+#ifdef HAVE_MACHINE_REG_H
+#ifdef HAVE_STRUCT_REG
+typedef struct reg gregset_t;
+typedef struct fpreg fpregset_t;
+#else
+typedef struct regs gregset_t;
+typedef struct fp_status fpregset_t;
+#endif
+#endif
+
+/* Second, we need to remap the BSD ptrace(2) requests to their SunOS
+ equivalents. GNU/Linux already follows SunOS here. */
-#define INT_REGS 1
-#define STACK_REGS 2
-#define FP_REGS 4
+#ifndef PTRACE_GETREGS
+#define PTRACE_GETREGS PT_GETREGS
+#endif
+
+#ifndef PTRACE_SETREGS
+#define PTRACE_SETREGS PT_SETREGS
+#endif
-/* Fetch one or more registers from the inferior. REGNO == -1 to get
- them all. We actually fetch more than requested, when convenient,
- marking them as valid so we won't fetch them again. */
+#ifndef PTRACE_GETFPREGS
+#define PTRACE_GETFPREGS PT_GETFPREGS
+#endif
+
+#ifndef PTRACE_SETFPREGS
+#define PTRACE_SETFPREGS PT_SETFPREGS
+#endif
+
+/* Register set description. */
+const struct sparc_gregset *sparc_gregset;
+void (*sparc_supply_gregset) (const struct sparc_gregset *,
+ struct regcache *, int , const void *);
+void (*sparc_collect_gregset) (const struct sparc_gregset *,
+ const struct regcache *, int, void *);
+void (*sparc_supply_fpregset) (struct regcache *, int , const void *);
+void (*sparc_collect_fpregset) (const struct regcache *, int , void *);
+int (*sparc_gregset_supplies_p) (int);
+int (*sparc_fpregset_supplies_p) (int);
+
+/* Determine whether `gregset_t' contains register REGNUM. */
+
+int
+sparc32_gregset_supplies_p (int regnum)
+{
+ /* Integer registers. */
+ if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_G7_REGNUM)
+ || (regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
+ || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_L7_REGNUM)
+ || (regnum >= SPARC_I0_REGNUM && regnum <= SPARC_I7_REGNUM))
+ return 1;
+
+ /* Control registers. */
+ if (regnum == SPARC32_PC_REGNUM
+ || regnum == SPARC32_NPC_REGNUM
+ || regnum == SPARC32_PSR_REGNUM
+ || regnum == SPARC32_Y_REGNUM)
+ return 1;
+
+ return 0;
+}
+
+/* Determine whether `fpregset_t' contains register REGNUM. */
+
+int
+sparc32_fpregset_supplies_p (int regnum)
+{
+ /* Floating-point registers. */
+ if (regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM)
+ return 1;
+
+ /* Control registers. */
+ if (regnum == SPARC32_FSR_REGNUM)
+ return 1;
+
+ return 0;
+}
+
+/* Fetch register REGNUM from the inferior. If REGNUM is -1, do this
+ for all registers (including the floating-point registers). */
void
-fetch_inferior_registers (int regno)
+fetch_inferior_registers (int regnum)
{
- struct regs inferior_registers;
- struct fp_status inferior_fp_registers;
- int i;
- int fetch_pid;
+ struct regcache *regcache = current_regcache;
+ int pid;
/* NOTE: cagney/2002-12-03: This code assumes that the currently
selected light weight processes' registers can be written
@@ -76,309 +150,123 @@ fetch_inferior_registers (int regno)
These functions should instead be paramaterized with an explicit
object (struct regcache, struct thread_info?) into which the LWPs
registers can be written. */
+ pid = TIDGET (inferior_ptid);
+ if (pid == 0)
+ pid = PIDGET (inferior_ptid);
- fetch_pid = TIDGET (inferior_ptid);
- if (fetch_pid == 0)
- fetch_pid = PIDGET (inferior_ptid);
-
- /* We should never be called with deferred stores, because a prerequisite
- for writing regs is to have fetched them all (PREPARE_TO_STORE), sigh. */
- if (deferred_stores)
- internal_error (__FILE__, __LINE__, "failed internal consistency check");
-
- DO_DEFERRED_STORES;
-
- /* Global and Out regs are fetched directly, as well as the control
- registers. If we're getting one of the in or local regs,
- and the stack pointer has not yet been fetched,
- we have to do that first, since they're found in memory relative
- to the stack pointer. */
- if (regno < O7_REGNUM /* including -1 */
- || regno >= Y_REGNUM
- || (!deprecated_register_valid[SP_REGNUM] && regno < I7_REGNUM))
+ if (regnum == SPARC_G0_REGNUM)
{
- if (0 != ptrace (PTRACE_GETREGS, fetch_pid,
- (PTRACE_ARG3_TYPE) & inferior_registers, 0))
- perror ("ptrace_getregs");
-
- deprecated_registers[DEPRECATED_REGISTER_BYTE (0)] = 0;
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (1)],
- &inferior_registers.r_g1, 15 * DEPRECATED_REGISTER_RAW_SIZE (G0_REGNUM));
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PS_REGNUM)]
- = inferior_registers.r_ps;
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PC_REGNUM)]
- = inferior_registers.r_pc;
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (DEPRECATED_NPC_REGNUM)]
- = inferior_registers.r_npc;
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)] = inferior_registers.r_y;
-
- for (i = G0_REGNUM; i <= O7_REGNUM; i++)
- deprecated_register_valid[i] = 1;
- deprecated_register_valid[Y_REGNUM] = 1;
- deprecated_register_valid[PS_REGNUM] = 1;
- deprecated_register_valid[PC_REGNUM] = 1;
- deprecated_register_valid[DEPRECATED_NPC_REGNUM] = 1;
- /* If we don't set these valid, read_register_bytes() rereads
- all the regs every time it is called! FIXME. */
- deprecated_register_valid[WIM_REGNUM] = 1; /* Not true yet, FIXME */
- deprecated_register_valid[TBR_REGNUM] = 1; /* Not true yet, FIXME */
- deprecated_register_valid[CPS_REGNUM] = 1; /* Not true yet, FIXME */
+ regcache_raw_supply (regcache, SPARC_G0_REGNUM, NULL);
+ return;
}
- /* Floating point registers */
- if (regno == -1 ||
- regno == FPS_REGNUM ||
- (regno >= FP0_REGNUM && regno <= FP0_REGNUM + 31))
+ if (regnum == -1 || sparc_gregset_supplies_p (regnum))
{
- if (0 != ptrace (PTRACE_GETFPREGS, fetch_pid,
- (PTRACE_ARG3_TYPE) & inferior_fp_registers,
- 0))
- perror ("ptrace_getfpregs");
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)],
- &inferior_fp_registers, sizeof inferior_fp_registers.fpu_fr);
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)],
- &inferior_fp_registers.Fpu_fsr, sizeof (FPU_FSR_TYPE));
- for (i = FP0_REGNUM; i <= FP0_REGNUM + 31; i++)
- deprecated_register_valid[i] = 1;
- deprecated_register_valid[FPS_REGNUM] = 1;
- }
+ gregset_t regs;
- /* These regs are saved on the stack by the kernel. Only read them
- all (16 ptrace calls!) if we really need them. */
- if (regno == -1)
- {
- CORE_ADDR sp = *(unsigned int *) & deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)];
- target_read_memory (sp, &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)],
- 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM));
- for (i = L0_REGNUM; i <= I7_REGNUM; i++)
- deprecated_register_valid[i] = 1;
+ if (ptrace (PTRACE_GETREGS, pid, (PTRACE_ARG3_TYPE) &regs, 0) == -1)
+ perror_with_name ("Couldn't get registers");
+
+ sparc_supply_gregset (sparc_gregset, regcache, -1, &regs);
+ if (regnum != -1)
+ return;
}
- else if (regno >= L0_REGNUM && regno <= I7_REGNUM)
+
+ if (regnum == -1 || sparc_fpregset_supplies_p (regnum))
{
- CORE_ADDR sp = *(unsigned int *) & deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)];
- i = DEPRECATED_REGISTER_BYTE (regno);
- if (deprecated_register_valid[regno])
- printf_unfiltered ("register %d valid and read\n", regno);
- target_read_memory (sp + i - DEPRECATED_REGISTER_BYTE (L0_REGNUM),
- &deprecated_registers[i], DEPRECATED_REGISTER_RAW_SIZE (regno));
- deprecated_register_valid[regno] = 1;
+ fpregset_t fpregs;
+
+ if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
+ perror_with_name ("Couldn't get floating point status");
+
+ sparc_supply_fpregset (regcache, -1, &fpregs);
}
}
-/* Store our register values back into the inferior.
- If REGNO is -1, do this for all registers.
- Otherwise, REGNO specifies which register (so we can save time). */
-
void
-store_inferior_registers (int regno)
+store_inferior_registers (int regnum)
{
- struct regs inferior_registers;
- struct fp_status inferior_fp_registers;
- int wanna_store = INT_REGS + STACK_REGS + FP_REGS;
- int store_pid;
+ struct regcache *regcache = current_regcache;
+ int pid;
/* NOTE: cagney/2002-12-02: See comment in fetch_inferior_registers
about threaded assumptions. */
- store_pid = TIDGET (inferior_ptid);
- if (store_pid == 0)
- store_pid = PIDGET (inferior_ptid);
+ pid = TIDGET (inferior_ptid);
+ if (pid == 0)
+ pid = PIDGET (inferior_ptid);
- /* First decide which pieces of machine-state we need to modify.
- Default for regno == -1 case is all pieces. */
- if (regno >= 0)
+ if (regnum == -1 || sparc_gregset_supplies_p (regnum))
{
- if (FP0_REGNUM <= regno && regno < FP0_REGNUM + 32)
- {
- wanna_store = FP_REGS;
- }
- else
- {
- if (regno == SP_REGNUM)
- wanna_store = INT_REGS + STACK_REGS;
- else if (regno < L0_REGNUM || regno > I7_REGNUM)
- wanna_store = INT_REGS;
- else if (regno == FPS_REGNUM)
- wanna_store = FP_REGS;
- else
- wanna_store = STACK_REGS;
- }
- }
+ gregset_t regs;
- /* See if we're forcing the stores to happen now, or deferring. */
- if (regno == -2)
- {
- wanna_store = deferred_stores;
- deferred_stores = 0;
- }
- else
- {
- if (wanna_store == STACK_REGS)
- {
- /* Fall through and just store one stack reg. If we deferred
- it, we'd have to store them all, or remember more info. */
- }
- else
- {
- deferred_stores |= wanna_store;
- return;
- }
- }
+ if (ptrace (PTRACE_GETREGS, pid, (PTRACE_ARG3_TYPE) &regs, 0) == -1)
+ perror_with_name ("Couldn't get registers");
- if (wanna_store & STACK_REGS)
- {
- CORE_ADDR sp = *(unsigned int *) & deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)];
+ sparc_collect_gregset (sparc_gregset, regcache, regnum, &regs);
- if (regno < 0 || regno == SP_REGNUM)
- {
- if (!deprecated_register_valid[L0_REGNUM + 5])
- internal_error (__FILE__, __LINE__, "failed internal consistency check");
- target_write_memory (sp,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)],
- 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM));
- }
- else
- {
- if (!deprecated_register_valid[regno])
- internal_error (__FILE__, __LINE__, "failed internal consistency check");
- target_write_memory (sp + DEPRECATED_REGISTER_BYTE (regno) - DEPRECATED_REGISTER_BYTE (L0_REGNUM),
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (regno)],
- DEPRECATED_REGISTER_RAW_SIZE (regno));
- }
+ if (ptrace (PTRACE_SETREGS, pid, (PTRACE_ARG3_TYPE) &regs, 0) == -1)
+ perror_with_name ("Couldn't write registers");
- }
+ /* Deal with the stack regs. */
+ if (regnum == -1 || regnum == SPARC_SP_REGNUM
+ || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM))
+ {
+ ULONGEST sp;
- if (wanna_store & INT_REGS)
- {
- if (!deprecated_register_valid[G1_REGNUM])
- internal_error (__FILE__, __LINE__, "failed internal consistency check");
-
- memcpy (&inferior_registers.r_g1,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (G1_REGNUM)],
- 15 * DEPRECATED_REGISTER_RAW_SIZE (G1_REGNUM));
-
- inferior_registers.r_ps =
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PS_REGNUM)];
- inferior_registers.r_pc =
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PC_REGNUM)];
- inferior_registers.r_npc =
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (DEPRECATED_NPC_REGNUM)];
- inferior_registers.r_y =
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)];
-
- if (0 != ptrace (PTRACE_SETREGS, store_pid,
- (PTRACE_ARG3_TYPE) & inferior_registers, 0))
- perror ("ptrace_setregs");
- }
+ regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp);
+ sparc_collect_rwindow (regcache, sp, regnum);
+ }
- if (wanna_store & FP_REGS)
- {
- if (!deprecated_register_valid[FP0_REGNUM + 9])
- internal_error (__FILE__, __LINE__, "failed internal consistency check");
- memcpy (&inferior_fp_registers,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)],
- sizeof inferior_fp_registers.fpu_fr);
- memcpy (&inferior_fp_registers.Fpu_fsr,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)],
- sizeof (FPU_FSR_TYPE));
- if (0 !=
- ptrace (PTRACE_SETFPREGS, store_pid,
- (PTRACE_ARG3_TYPE) & inferior_fp_registers, 0))
- perror ("ptrace_setfpregs");
+ if (regnum != -1)
+ return;
}
-}
-
-/* Provide registers to GDB from a core file.
-
- CORE_REG_SECT points to an array of bytes, which are the contents
- of a `note' from a core file which BFD thinks might contain
- register contents. CORE_REG_SIZE is its size.
-
- WHICH says which register set corelow suspects this is:
- 0 --- the general-purpose register set
- 2 --- the floating-point register set
-
- IGNORE is unused. */
-
-static void
-fetch_core_registers (char *core_reg_sect, unsigned core_reg_size,
- int which, CORE_ADDR ignore)
-{
- if (which == 0)
+ if (regnum == -1 || sparc_fpregset_supplies_p (regnum))
{
+ fpregset_t fpregs, saved_fpregs;
- /* Integer registers */
-
-#define gregs ((struct regs *)core_reg_sect)
- /* G0 *always* holds 0. */
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (0)] = 0;
-
- /* The globals and output registers. */
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (G1_REGNUM)], &gregs->r_g1,
- 15 * DEPRECATED_REGISTER_RAW_SIZE (G1_REGNUM));
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PS_REGNUM)] = gregs->r_ps;
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (PC_REGNUM)] = gregs->r_pc;
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (DEPRECATED_NPC_REGNUM)] = gregs->r_npc;
- *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (Y_REGNUM)] = gregs->r_y;
-
- /* My best guess at where to get the locals and input
- registers is exactly where they usually are, right above
- the stack pointer. If the core dump was caused by a bus error
- from blowing away the stack pointer (as is possible) then this
- won't work, but it's worth the try. */
- {
- int sp;
-
- sp = *(int *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (SP_REGNUM)];
- if (0 != target_read_memory (sp,
- &deprecated_registers[DEPRECATED_REGISTER_BYTE (L0_REGNUM)],
- 16 * DEPRECATED_REGISTER_RAW_SIZE (L0_REGNUM)))
- {
- /* fprintf_unfiltered so user can still use gdb */
- fprintf_unfiltered (gdb_stderr,
- "Couldn't read input and local registers from core file\n");
- }
- }
- }
- else if (which == 2)
- {
+ if (ptrace (PTRACE_GETFPREGS, pid, (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
+ perror_with_name ("Couldn't get floating-point registers");
- /* Floating point registers */
+ memcpy (&saved_fpregs, &fpregs, sizeof (fpregs));
+ sparc_collect_fpregset (regcache, regnum, &fpregs);
-#define fpuregs ((struct fpu *) core_reg_sect)
- if (core_reg_size >= sizeof (struct fpu))
+ /* Writing the floating-point registers will fail on NetBSD with
+ EINVAL if the inferior process doesn't have an FPU state
+ (i.e. if it didn't use the FPU yet). Therefore we don't try
+ to write the registers if nothing changed. */
+ if (memcmp (&saved_fpregs, &fpregs, sizeof (fpregs)) != 0)
{
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)],
- fpuregs->fpu_regs, sizeof (fpuregs->fpu_regs));
- memcpy (&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)],
- &fpuregs->fpu_fsr, sizeof (FPU_FSR_TYPE));
+ if (ptrace (PTRACE_SETFPREGS, pid,
+ (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
+ perror_with_name ("Couldn't write floating-point registers");
}
- else
- fprintf_unfiltered (gdb_stderr, "Couldn't read float regs from core file\n");
- }
-}
-int
-kernel_u_size (void)
-{
- return (sizeof (struct user));
+ if (regnum != -1)
+ return;
+ }
}
-/* Register that we are able to handle sparc core file formats.
- FIXME: is this really bfd_target_unknown_flavour? */
-
-static struct core_fns sparc_core_fns =
-{
- bfd_target_unknown_flavour, /* core_flavour */
- default_check_format, /* check_format */
- default_core_sniffer, /* core_sniffer */
- fetch_core_registers, /* core_read_registers */
- NULL /* next */
-};
+/* Provide a prototype to silence -Wmissing-prototypes. */
+void _initialize_sparc_nat (void);
void
-_initialize_core_sparc (void)
+_initialize_sparc_nat (void)
{
- add_core_fns (&sparc_core_fns);
+ /* Deafult to using SunOS 4 register sets. */
+ if (sparc_gregset == NULL)
+ sparc_gregset = &sparc32_sunos4_gregset;
+ if (sparc_supply_gregset == NULL)
+ sparc_supply_gregset = sparc32_supply_gregset;
+ if (sparc_collect_gregset == NULL)
+ sparc_collect_gregset = sparc32_collect_gregset;
+ if (sparc_supply_fpregset == NULL)
+ sparc_supply_fpregset = sparc32_supply_fpregset;
+ if (sparc_collect_fpregset == NULL)
+ sparc_collect_fpregset = sparc32_collect_fpregset;
+ if (sparc_gregset_supplies_p == NULL)
+ sparc_gregset_supplies_p = sparc32_gregset_supplies_p;
+ if (sparc_fpregset_supplies_p == NULL)
+ sparc_fpregset_supplies_p = sparc32_fpregset_supplies_p;
}
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
index d3b24186769..ed4888044f7 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
@@ -1,8 +1,6 @@
-/* Target-dependent code for the SPARC for GDB, the GNU debugger.
+/* Target-dependent code for SPARC.
- Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -21,108 +19,61 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-/* ??? Support for calling functions from gdb in sparc64 is unfinished. */
-
#include "defs.h"
#include "arch-utils.h"
+#include "dis-asm.h"
+#include "floatformat.h"
#include "frame.h"
+#include "frame-base.h"
+#include "frame-unwind.h"
+#include "gdbcore.h"
+#include "gdbtypes.h"
#include "inferior.h"
+#include "symtab.h"
+#include "objfiles.h"
+#include "osabi.h"
+#include "regcache.h"
#include "target.h"
#include "value.h"
-#include "bfd.h"
-#include "gdb_string.h"
-#include "regcache.h"
-#include "osabi.h"
-#include "dis-asm.h"
-
-#include "sparc-tdep.h"
-#ifdef USE_PROC_FS
-#include <sys/procfs.h>
-/* Prototypes for supply_gregset etc. */
-#include "gregset.h"
-#endif
-
-#include "gdbcore.h"
#include "gdb_assert.h"
+#include "gdb_string.h"
-#include "symfile.h" /* for 'entry_point_address' */
-
-/*
- * Some local macros that have multi-arch and non-multi-arch versions:
- */
-
-#define SPARC_HAS_FPU 1
-/* Number of bytes devoted to Floating Point registers: */
-#define FP_REGISTER_BYTES (gdbarch_tdep (current_gdbarch)->fp_register_bytes)
-/* Highest numbered Floating Point register. */
-#define FP_MAX_REGNUM (gdbarch_tdep (current_gdbarch)->fp_max_regnum)
-/* Size of a general (integer) register: */
-#define SPARC_INTREG_SIZE (gdbarch_tdep (current_gdbarch)->intreg_size)
-/* Offset within the call dummy stack of the saved registers. */
-#define DUMMY_REG_SAVE_OFFSET (gdbarch_tdep (current_gdbarch)->reg_save_offset)
-
-struct gdbarch_tdep
- {
- int fp_register_bytes;
- int y_regnum;
- int fp_max_regnum;
- int intreg_size;
- int reg_save_offset;
- int call_dummy_call_offset;
- int print_insn_mach;
- };
-
-/* Now make GDB_TARGET_IS_SPARC64 a runtime test. */
-/* FIXME MVS: or try testing bfd_arch_info.arch and bfd_arch_info.mach ...
- * define GDB_TARGET_IS_SPARC64 \
- * (TARGET_ARCHITECTURE->arch == bfd_arch_sparc && \
- * (TARGET_ARCHITECTURE->mach == bfd_mach_sparc_v9 || \
- * TARGET_ARCHITECTURE->mach == bfd_mach_sparc_v9a))
- */
-
-/* We don't store all registers immediately when requested, since they
- get sent over in large chunks anyway. Instead, we accumulate most
- of the changes and send them over once. "deferred_stores" keeps
- track of which sets of registers we have locally-changed copies of,
- so we only need send the groups that have changed. */
-
-int deferred_stores = 0; /* Accumulated stores we want to do eventually. */
-
-
-const unsigned char *
-sparc_breakpoint_from_pc (CORE_ADDR *pc, int *len)
-{
- static const char breakpoint[] = {0x91, 0xd0, 0x20, 0x01};
- (*len) = sizeof (breakpoint);
- return breakpoint;
-}
-
-/* Fetch a single instruction. Even on bi-endian machines
- such as sparc86x, instructions are always big-endian. */
-
-static unsigned long
-fetch_instruction (CORE_ADDR pc)
-{
- unsigned long retval;
- int i;
- unsigned char buf[4];
-
- read_memory (pc, buf, sizeof (buf));
-
- /* Start at the most significant end of the integer, and work towards
- the least significant. */
- retval = 0;
- for (i = 0; i < sizeof (buf); ++i)
- retval = (retval << 8) | buf[i];
- return retval;
-}
-
-
-/* Branches with prediction are treated like their non-predicting cousins. */
-/* FIXME: What about floating point branches? */
+#include "sparc-tdep.h"
-/* Macros to extract fields from sparc instructions. */
+struct regset;
+
+/* This file implements the The SPARC 32-bit ABI as defined by the
+ section "Low-Level System Information" of the SPARC Compliance
+ Definition (SCD) 2.4.1, which is the 32-bit System V psABI for
+ SPARC. The SCD lists changes with respect to the origional 32-bit
+ psABI as defined in the "System V ABI, SPARC Processor
+ Supplement".
+
+ Note that if we talk about SunOS, we mean SunOS 4.x, which was
+ BSD-based, which is sometimes (retroactively?) referred to as
+ Solaris 1.x. If we talk about Solaris we mean Solaris 2.x and
+ above (Solaris 7, 8 and 9 are nothing but Solaris 2.7, 2.8 and 2.9
+ suffering from severe version number inflation). Solaris 2.x is
+ also known as SunOS 5.x, since that's what uname(1) says. Solaris
+ 2.x is SVR4-based. */
+
+/* Please use the sparc32_-prefix for 32-bit specific code, the
+ sparc64_-prefix for 64-bit specific code and the sparc_-prefix for
+ code that can handle both. The 64-bit specific code lives in
+ sparc64-tdep.c; don't add any here. */
+
+/* The SPARC Floating-Point Quad-Precision format is similar to
+ big-endian IA-64 Quad-recision format. */
+#define floatformat_sparc_quad floatformat_ia64_quad_big
+
+/* The stack pointer is offset from the stack frame by a BIAS of 2047
+ (0x7ff) for 64-bit code. BIAS is likely to be defined on SPARC
+ hosts, so undefine it first. */
+#undef BIAS
+#define BIAS 2047
+
+/* Macros to extract fields from SPARC instructions. */
#define X_OP(i) (((i) >> 30) & 0x3)
#define X_RD(i) (((i) >> 25) & 0x1f)
#define X_A(i) (((i) >> 29) & 1)
@@ -130,3235 +81,1315 @@ fetch_instruction (CORE_ADDR pc)
#define X_OP2(i) (((i) >> 22) & 0x7)
#define X_IMM22(i) ((i) & 0x3fffff)
#define X_OP3(i) (((i) >> 19) & 0x3f)
-#define X_RS1(i) (((i) >> 14) & 0x1f)
#define X_I(i) (((i) >> 13) & 1)
-#define X_IMM13(i) ((i) & 0x1fff)
/* Sign extension macros. */
-#define X_SIMM13(i) ((X_IMM13 (i) ^ 0x1000) - 0x1000)
#define X_DISP22(i) ((X_IMM22 (i) ^ 0x200000) - 0x200000)
-#define X_CC(i) (((i) >> 20) & 3)
-#define X_P(i) (((i) >> 19) & 1)
#define X_DISP19(i) ((((i) & 0x7ffff) ^ 0x40000) - 0x40000)
-#define X_RCOND(i) (((i) >> 25) & 7)
-#define X_DISP16(i) ((((((i) >> 6) && 0xc000) | ((i) & 0x3fff)) ^ 0x8000) - 0x8000)
-#define X_FCN(i) (((i) >> 25) & 31)
-
-typedef enum
-{
- 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). */
-
-/* npc4 and next_pc describe the situation at the time that the
- step-breakpoint was set, not necessary the current value of DEPRECATED_NPC_REGNUM. */
-static CORE_ADDR next_pc, npc4, target;
-static int brknpc4, brktrg;
-typedef char binsn_quantum[BREAKPOINT_MAX];
-static binsn_quantum break_mem[3];
-
-static 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
- support (as on all SPARCs). We find all the possible targets of the
- coming instruction and breakpoint them.
- single_step is also called just after the inferior stops. If we had
- set up a simulated single-step, we undo our damage. */
+/* Fetch the instruction at PC. Instructions are always big-endian
+ even if the processor operates in little-endian mode. */
-void
-sparc_software_single_step (enum target_signal ignore, /* pid, but we don't need it */
- int insert_breakpoints_p)
+unsigned long
+sparc_fetch_instruction (CORE_ADDR pc)
{
- branch_type br;
- CORE_ADDR pc;
- long pc_instruction;
-
- if (insert_breakpoints_p)
- {
- /* Always set breakpoint for NPC. */
- next_pc = read_register (DEPRECATED_NPC_REGNUM);
- npc4 = next_pc + 4; /* branch not taken */
-
- target_insert_breakpoint (next_pc, break_mem[0]);
- /* printf_unfiltered ("set break at %x\n",next_pc); */
+ unsigned char buf[4];
+ unsigned long insn;
+ int i;
- pc = read_register (PC_REGNUM);
- pc_instruction = fetch_instruction (pc);
- br = isbranch (pc_instruction, pc, &target);
- brknpc4 = brktrg = 0;
+ /* If we can't read the instruction at PC, return zero. */
+ if (target_read_memory (pc, buf, sizeof (buf)))
+ return 0;
- if (br == bicca)
- {
- /* Conditional annulled branch will either end up at
- npc (if taken) or at npc+4 (if not taken).
- Trap npc+4. */
- brknpc4 = 1;
- target_insert_breakpoint (npc4, break_mem[1]);
- }
- else if (br == baa && target != next_pc)
- {
- /* Unconditional annulled branch will always end up at
- the target. */
- brktrg = 1;
- target_insert_breakpoint (target, break_mem[2]);
- }
- else if (GDB_TARGET_IS_SPARC64 && br == done_retry)
- {
- brktrg = 1;
- target_insert_breakpoint (target, break_mem[2]);
- }
- }
- else
- {
- /* Remove breakpoints */
- target_remove_breakpoint (next_pc, break_mem[0]);
+ insn = 0;
+ for (i = 0; i < sizeof (buf); i++)
+ insn = (insn << 8) | buf[i];
+ return insn;
+}
+
+/* Return the contents if register REGNUM as an address. */
- if (brknpc4)
- target_remove_breakpoint (npc4, break_mem[1]);
+static CORE_ADDR
+sparc_address_from_register (int regnum)
+{
+ ULONGEST addr;
- if (brktrg)
- target_remove_breakpoint (target, break_mem[2]);
- }
+ regcache_cooked_read_unsigned (current_regcache, regnum, &addr);
+ return addr;
}
-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. */
+/* The functions on this page are intended to be used to classify
+ function arguments. */
-void
-sparc_init_extra_frame_info (int fromleaf, struct frame_info *fi)
-{
- char *name;
- CORE_ADDR prologue_start, prologue_end;
- int insn;
-
- frame_extra_info_zalloc (fi, sizeof (struct frame_extra_info));
- frame_saved_regs_zalloc (fi);
-
- get_frame_extra_info (fi)->bottom =
- (get_next_frame (fi)
- ? (get_frame_base (fi) == get_frame_base (get_next_frame (fi))
- ? get_frame_extra_info (get_next_frame (fi))->bottom
- : get_frame_base (get_next_frame (fi)))
- : read_sp ());
-
- /* If fi->next is NULL, then we already set ->frame by passing
- deprecated_read_fp() to create_new_frame. */
- if (get_next_frame (fi))
- {
- char buf[MAX_REGISTER_SIZE];
-
- /* Compute ->frame as if not flat. If it is flat, we'll change
- it later. */
- if (get_next_frame (get_next_frame (fi)) != NULL
- && ((get_frame_type (get_next_frame (get_next_frame (fi))) == SIGTRAMP_FRAME)
- || deprecated_frame_in_dummy (get_next_frame (get_next_frame (fi))))
- && frameless_look_for_prologue (get_next_frame (fi)))
- {
- /* A frameless function interrupted by a signal did not change
- the frame pointer, fix up frame pointer accordingly. */
- deprecated_update_frame_base_hack (fi, get_frame_base (get_next_frame (fi)));
- get_frame_extra_info (fi)->bottom =
- get_frame_extra_info (get_next_frame (fi))->bottom;
- }
- else
- {
- /* Should we adjust for stack bias here? */
- ULONGEST tmp;
- tmp = get_frame_register_unsigned (fi, DEPRECATED_FP_REGNUM);
- deprecated_update_frame_base_hack (fi, tmp);
- if (GDB_TARGET_IS_SPARC64 && (get_frame_base (fi) & 1))
- deprecated_update_frame_base_hack (fi, get_frame_base (fi) + 2047);
- }
- }
+/* Check whether TYPE is "Integral or Pointer". */
- /* Decide whether this is a function with a ``flat register window''
- frame. For such functions, the frame pointer is actually in %i7. */
- get_frame_extra_info (fi)->flat = 0;
- get_frame_extra_info (fi)->in_prologue = 0;
- if (find_pc_partial_function (get_frame_pc (fi), &name, &prologue_start, &prologue_end))
- {
- /* See if the function starts with an add (which will be of a
- negative number if a flat frame) to the sp. FIXME: Does not
- handle large frames which will need more than one instruction
- to adjust the sp. */
- insn = fetch_instruction (prologue_start);
- if (X_OP (insn) == 2 && X_RD (insn) == 14 && X_OP3 (insn) == 0
- && X_I (insn) && X_SIMM13 (insn) < 0)
- {
- int offset = X_SIMM13 (insn);
-
- /* Then look for a save of %i7 into the frame. */
- insn = fetch_instruction (prologue_start + 4);
- if (X_OP (insn) == 3
- && X_RD (insn) == 31
- && X_OP3 (insn) == 4
- && X_RS1 (insn) == 14)
- {
- char buf[MAX_REGISTER_SIZE];
-
- /* We definitely have a flat frame now. */
- get_frame_extra_info (fi)->flat = 1;
-
- get_frame_extra_info (fi)->sp_offset = offset;
-
- /* Overwrite the frame's address with the value in %i7. */
- {
- ULONGEST tmp;
- tmp = get_frame_register_unsigned (fi, I7_REGNUM);
- deprecated_update_frame_base_hack (fi, tmp);
- }
-
- if (GDB_TARGET_IS_SPARC64 && (get_frame_base (fi) & 1))
- deprecated_update_frame_base_hack (fi, get_frame_base (fi) + 2047);
-
- /* Record where the fp got saved. */
- get_frame_extra_info (fi)->fp_addr =
- get_frame_base (fi) + get_frame_extra_info (fi)->sp_offset + X_SIMM13 (insn);
-
- /* Also try to collect where the pc got saved to. */
- get_frame_extra_info (fi)->pc_addr = 0;
- insn = fetch_instruction (prologue_start + 12);
- if (X_OP (insn) == 3
- && X_RD (insn) == 15
- && X_OP3 (insn) == 4
- && X_RS1 (insn) == 14)
- get_frame_extra_info (fi)->pc_addr =
- get_frame_base (fi) + get_frame_extra_info (fi)->sp_offset + X_SIMM13 (insn);
- }
- }
- else
- {
- /* Check if the PC is in the function prologue before a SAVE
- instruction has been executed yet. If so, set the frame
- to the current value of the stack pointer and set
- the in_prologue flag. */
- CORE_ADDR addr;
- struct symtab_and_line sal;
-
- sal = find_pc_line (prologue_start, 0);
- if (sal.line == 0) /* no line info, use PC */
- prologue_end = get_frame_pc (fi);
- else if (sal.end < prologue_end)
- prologue_end = sal.end;
- if (get_frame_pc (fi) < prologue_end)
- {
- for (addr = prologue_start; addr < get_frame_pc (fi); addr += 4)
- {
- insn = read_memory_integer (addr, 4);
- if (X_OP (insn) == 2 && X_OP3 (insn) == 0x3c)
- break; /* SAVE seen, stop searching */
- }
- if (addr >= get_frame_pc (fi))
- {
- get_frame_extra_info (fi)->in_prologue = 1;
- deprecated_update_frame_base_hack (fi, read_register (SP_REGNUM));
- }
- }
- }
- }
- if (get_next_frame (fi) && get_frame_base (fi) == 0)
+static int
+sparc_integral_or_pointer_p (const struct type *type)
+{
+ switch (TYPE_CODE (type))
{
- /* Kludge to cause init_prev_frame_info to destroy the new frame. */
- deprecated_update_frame_base_hack (fi, get_frame_base (get_next_frame (fi)));
- deprecated_update_frame_pc_hack (fi, get_frame_pc (get_next_frame (fi)));
+ case TYPE_CODE_INT:
+ case TYPE_CODE_BOOL:
+ case TYPE_CODE_CHAR:
+ case TYPE_CODE_ENUM:
+ case TYPE_CODE_RANGE:
+ {
+ /* We have byte, half-word, word and extended-word/doubleword
+ integral types. The doubleword is an extension to the
+ origional 32-bit ABI by the SCD 2.4.x. */
+ int len = TYPE_LENGTH (type);
+ return (len == 1 || len == 2 || len == 4 || len == 8);
+ }
+ return 1;
+ case TYPE_CODE_PTR:
+ case TYPE_CODE_REF:
+ {
+ /* Allow either 32-bit or 64-bit pointers. */
+ int len = TYPE_LENGTH (type);
+ return (len == 4 || len == 8);
+ }
+ return 1;
+ default:
+ break;
}
-}
-CORE_ADDR
-sparc_frame_chain (struct frame_info *frame)
-{
- /* Value that will cause DEPRECATED_FRAME_CHAIN_VALID to not worry
- about the chain value. If it really is zero, we detect it later
- in sparc_init_prev_frame.
-
- Note: kevinb/2003-02-18: The constant 1 used to be returned here,
- but, after some recent changes to legacy_frame_chain_valid(),
- this value is no longer suitable for causing
- legacy_frame_chain_valid() to "not worry about the chain value."
- The constant ~0 (i.e, 0xfff...) causes the failing test in
- legacy_frame_chain_valid() to succeed thus preserving the "not
- worry" property. I had considered using something like
- ``get_frame_base (frame) + 1''. However, I think a constant
- value is better, because when debugging this problem, I knew that
- something funny was going on as soon as I saw the constant 1
- being used as the frame chain elsewhere in GDB. */
-
- return ~ (CORE_ADDR) 0;
+ return 0;
}
-/* Find the pc saved in frame FRAME. */
+/* Check whether TYPE is "Floating". */
-CORE_ADDR
-sparc_frame_saved_pc (struct frame_info *frame)
+static int
+sparc_floating_p (const struct type *type)
{
- char buf[MAX_REGISTER_SIZE];
- CORE_ADDR addr;
-
- if ((get_frame_type (frame) == SIGTRAMP_FRAME))
+ switch (TYPE_CODE (type))
{
- /* This is the signal trampoline frame.
- Get the saved PC from the sigcontext structure. */
-
-#ifndef SIGCONTEXT_PC_OFFSET
-#define SIGCONTEXT_PC_OFFSET 12
-#endif
-
- CORE_ADDR sigcontext_addr;
- 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 (get_frame_pc (frame), &name,
- (CORE_ADDR *) NULL, (CORE_ADDR *) NULL);
- if (name && DEPRECATED_STREQ (name, "ucbsigvechandler"))
- saved_pc_offset = 12;
-
- /* The sigcontext address is contained in register O2. */
+ case TYPE_CODE_FLT:
{
- ULONGEST tmp;
- tmp = get_frame_register_unsigned (frame, O0_REGNUM + 2);
- sigcontext_addr = tmp;
+ int len = TYPE_LENGTH (type);
+ return (len == 4 || len == 8 || len == 16);
}
-
- /* Don't cause a memory_error when accessing sigcontext in case the
- stack layout has changed or the stack is corrupt. */
- target_read_memory (sigcontext_addr + saved_pc_offset,
- scbuf, sizeof (scbuf));
- return extract_unsigned_integer (scbuf, sizeof (scbuf));
- }
- else if (get_frame_extra_info (frame)->in_prologue ||
- (get_next_frame (frame) != NULL &&
- ((get_frame_type (get_next_frame (frame)) == SIGTRAMP_FRAME) ||
- deprecated_frame_in_dummy (get_next_frame (frame))) &&
- frameless_look_for_prologue (frame)))
- {
- /* A frameless function interrupted by a signal did not save
- the PC, it is still in %o7. */
- ULONGEST tmp;
- tmp = get_frame_register_unsigned (frame, O7_REGNUM);
- return PC_ADJUST (tmp);
+ default:
+ break;
}
- if (get_frame_extra_info (frame)->flat)
- addr = get_frame_extra_info (frame)->pc_addr;
- else
- addr = get_frame_extra_info (frame)->bottom + FRAME_SAVED_I0 +
- SPARC_INTREG_SIZE * (I7_REGNUM - I0_REGNUM);
- if (addr == 0)
- /* A flat frame leaf function might not save the PC anywhere,
- just leave it in %o7. */
- return PC_ADJUST (read_register (O7_REGNUM));
-
- read_memory (addr, buf, SPARC_INTREG_SIZE);
- return PC_ADJUST (extract_unsigned_integer (buf, SPARC_INTREG_SIZE));
+ return 0;
}
-/* Since an individual frame in the frame cache is defined by two
- arguments (a frame pointer and a stack pointer), we need two
- arguments to get info for an arbitrary stack frame. This routine
- takes two arguments and makes the cached frames look as if these
- two arguments defined a frame on the cache. This allows the rest
- of info frame to extract the important arguments without
- difficulty. */
+/* Check whether TYPE is "Structure or Union". */
-struct frame_info *
-setup_arbitrary_frame (int argc, CORE_ADDR *argv)
+static int
+sparc_structure_or_union_p (const struct type *type)
{
- struct frame_info *frame;
-
- if (argc != 2)
- error ("Sparc frame specifications require two arguments: fp and sp");
+ switch (TYPE_CODE (type))
+ {
+ case TYPE_CODE_STRUCT:
+ case TYPE_CODE_UNION:
+ return 1;
+ default:
+ break;
+ }
- frame = create_new_frame (argv[0], 0);
+ return 0;
+}
- if (!frame)
- internal_error (__FILE__, __LINE__,
- "create_new_frame returned invalid frame");
+/* Register information. */
- get_frame_extra_info (frame)->bottom = argv[1];
- deprecated_update_frame_pc_hack (frame, DEPRECATED_FRAME_SAVED_PC (frame));
- return frame;
-}
+static const char *sparc32_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",
-/* Given a pc value, skip it forward past the function prologue by
- disassembling instructions that appear to be a prologue.
+ "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",
- If FRAMELESS_P is set, we are only testing to see if the function
- is frameless. This allows a quicker answer.
+ "y", "psr", "wim", "tbr", "pc", "npc", "fsr", "csr"
+};
- This routine should be more specific in its actions; making sure
- that it uses the same register in the initial prologue section. */
+/* Total number of registers. */
+#define SPARC32_NUM_REGS ARRAY_SIZE (sparc32_register_names)
-static CORE_ADDR examine_prologue (CORE_ADDR, int, struct frame_info *,
- CORE_ADDR *);
+/* We provide the aliases %d0..%d30 for the floating registers as
+ "psuedo" registers. */
-static CORE_ADDR
-examine_prologue (CORE_ADDR start_pc, int frameless_p, struct frame_info *fi,
- CORE_ADDR *saved_regs)
+static const char *sparc32_pseudo_register_names[] =
{
- int insn;
- int dest = -1;
- CORE_ADDR pc = start_pc;
- int is_flat = 0;
-
- insn = fetch_instruction (pc);
+ "d0", "d2", "d4", "d6", "d8", "d10", "d12", "d14",
+ "d16", "d18", "d20", "d22", "d24", "d26", "d28", "d30"
+};
- /* Recognize the `sethi' insn and record its destination. */
- if (X_OP (insn) == 0 && X_OP2 (insn) == 4)
- {
- dest = X_RD (insn);
- pc += 4;
- insn = fetch_instruction (pc);
- }
+/* Total number of pseudo registers. */
+#define SPARC32_NUM_PSEUDO_REGS ARRAY_SIZE (sparc32_pseudo_register_names)
- /* Recognize an add immediate value to register to either %g1 or
- the destination register recorded above. Actually, this might
- well recognize several different arithmetic operations.
- It doesn't check that rs1 == rd because in theory "sub %g0, 5, %g1"
- followed by "save %sp, %g1, %sp" is a valid prologue (Not that
- I imagine any compiler really does that, however). */
- if (X_OP (insn) == 2
- && X_I (insn)
- && (X_RD (insn) == 1 || X_RD (insn) == dest))
- {
- pc += 4;
- insn = fetch_instruction (pc);
- }
+/* Return the name of register REGNUM. */
- /* Recognize any SAVE insn. */
- if (X_OP (insn) == 2 && X_OP3 (insn) == 60)
- {
- pc += 4;
- if (frameless_p) /* If the save is all we care about, */
- return pc; /* return before doing more work */
- insn = fetch_instruction (pc);
- }
- /* Recognize add to %sp. */
- else if (X_OP (insn) == 2 && X_RD (insn) == 14 && X_OP3 (insn) == 0)
- {
- pc += 4;
- if (frameless_p) /* If the add is all we care about, */
- return pc; /* return before doing more work */
- is_flat = 1;
- insn = fetch_instruction (pc);
- /* Recognize store of frame pointer (i7). */
- if (X_OP (insn) == 3
- && X_RD (insn) == 31
- && X_OP3 (insn) == 4
- && X_RS1 (insn) == 14)
- {
- pc += 4;
- insn = fetch_instruction (pc);
-
- /* Recognize sub %sp, <anything>, %i7. */
- if (X_OP (insn) == 2
- && X_OP3 (insn) == 4
- && X_RS1 (insn) == 14
- && X_RD (insn) == 31)
- {
- pc += 4;
- insn = fetch_instruction (pc);
- }
- else
- return pc;
- }
- else
- return pc;
- }
- else
- /* Without a save or add instruction, it's not a prologue. */
- return start_pc;
+static const char *
+sparc32_register_name (int regnum)
+{
+ if (regnum >= 0 && regnum < SPARC32_NUM_REGS)
+ return sparc32_register_names[regnum];
- while (1)
- {
- /* Recognize stores into the frame from the input registers.
- This recognizes all non alternate stores of an input register,
- into a location offset from the frame pointer between
- +68 and +92. */
-
- /* The above will fail for arguments that are promoted
- (eg. shorts to ints or floats to doubles), because the compiler
- will pass them in positive-offset frame space, but the prologue
- will save them (after conversion) in negative frame space at an
- unpredictable offset. Therefore I am going to remove the
- restriction on the target-address of the save, on the theory
- that any unbroken sequence of saves from input registers must
- be part of the prologue. In un-optimized code (at least), I'm
- fairly sure that the compiler would emit SOME other instruction
- (eg. a move or add) before emitting another save that is actually
- a part of the function body.
-
- Besides, the reserved stack space is different for SPARC64 anyway.
-
- MVS 4/23/2000 */
-
- if (X_OP (insn) == 3
- && (X_OP3 (insn) & 0x3c) == 4 /* Store, non-alternate. */
- && (X_RD (insn) & 0x18) == 0x18 /* Input register. */
- && X_I (insn) /* Immediate mode. */
- && X_RS1 (insn) == 30) /* Off of frame pointer. */
- ; /* empty statement -- fall thru to end of loop */
- else if (GDB_TARGET_IS_SPARC64
- && X_OP (insn) == 3
- && (X_OP3 (insn) & 0x3c) == 12 /* store, extended (64-bit) */
- && (X_RD (insn) & 0x18) == 0x18 /* input register */
- && X_I (insn) /* immediate mode */
- && X_RS1 (insn) == 30) /* off of frame pointer */
- ; /* empty statement -- fall thru to end of loop */
- else if (X_OP (insn) == 3
- && (X_OP3 (insn) & 0x3c) == 36 /* store, floating-point */
- && X_I (insn) /* immediate mode */
- && X_RS1 (insn) == 30) /* off of frame pointer */
- ; /* empty statement -- fall thru to end of loop */
- else if (is_flat
- && X_OP (insn) == 3
- && X_OP3 (insn) == 4 /* store? */
- && X_RS1 (insn) == 14) /* off of frame pointer */
- {
- if (saved_regs && X_I (insn))
- saved_regs[X_RD (insn)] =
- get_frame_base (fi) + get_frame_extra_info (fi)->sp_offset + X_SIMM13 (insn);
- }
- else
- break;
- pc += 4;
- insn = fetch_instruction (pc);
- }
+ if (regnum < SPARC32_NUM_REGS + SPARC32_NUM_PSEUDO_REGS)
+ return sparc32_pseudo_register_names[regnum - SPARC32_NUM_REGS];
- return pc;
+ return NULL;
}
-/* Advance PC across any function entry prologue instructions to reach
- some "real" code. */
+/* Return the GDB type object for the "standard" data type of data in
+ register REGNUM. */
-CORE_ADDR
-sparc_skip_prologue (CORE_ADDR start_pc)
+static struct type *
+sparc32_register_type (struct gdbarch *gdbarch, int regnum)
{
- struct symtab_and_line sal;
- CORE_ADDR func_start, func_end;
-
- /* This is the preferred method, find the end of the prologue by
- using the debugging information. */
- if (find_pc_partial_function (start_pc, NULL, &func_start, &func_end))
- {
- sal = find_pc_line (func_start, 0);
+ if (regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM)
+ return builtin_type_float;
- if (sal.end < func_end
- && start_pc <= sal.end)
- return sal.end;
- }
+ if (regnum >= SPARC32_D0_REGNUM && regnum <= SPARC32_D30_REGNUM)
+ return builtin_type_double;
- /* Oh well, examine the code by hand. */
- return examine_prologue (start_pc, 0, NULL, NULL);
-}
+ if (regnum == SPARC_SP_REGNUM || regnum == SPARC_FP_REGNUM)
+ return builtin_type_void_data_ptr;
-/* Is the prologue at IP frameless? */
+ if (regnum == SPARC32_PC_REGNUM || regnum == SPARC32_NPC_REGNUM)
+ return builtin_type_void_func_ptr;
-int
-sparc_prologue_frameless_p (CORE_ADDR ip)
-{
- return ip == examine_prologue (ip, 1, NULL, NULL);
+ return builtin_type_int32;
}
-/* Check instruction at ADDR to see if it is a branch.
- All non-annulled instructions will go to NPC or will trap.
- Set *TARGET if we find a candidate branch; set to zero if not.
+static void
+sparc32_pseudo_register_read (struct gdbarch *gdbarch,
+ struct regcache *regcache,
+ int regnum, void *buf)
+{
+ gdb_assert (regnum >= SPARC32_D0_REGNUM && regnum <= SPARC32_D30_REGNUM);
- This isn't static as it's used by remote-sa.sparc.c. */
+ regnum = SPARC_F0_REGNUM + 2 * (regnum - SPARC32_D0_REGNUM);
+ regcache_raw_read (regcache, regnum, buf);
+ regcache_raw_read (regcache, regnum + 1, ((char *)buf) + 4);
+}
-static branch_type
-isbranch (long instruction, CORE_ADDR addr, CORE_ADDR *target)
+static void
+sparc32_pseudo_register_write (struct gdbarch *gdbarch,
+ struct regcache *regcache,
+ int regnum, const void *buf)
{
- branch_type val = not_branch;
- long int offset = 0; /* Must be signed for sign-extend. */
-
- *target = 0;
-
- if (X_OP (instruction) == 0
- && (X_OP2 (instruction) == 2
- || X_OP2 (instruction) == 6
- || X_OP2 (instruction) == 1
- || X_OP2 (instruction) == 3
- || X_OP2 (instruction) == 5
- || (GDB_TARGET_IS_SPARC64 && X_OP2 (instruction) == 7)))
- {
- if (X_COND (instruction) == 8)
- val = X_A (instruction) ? baa : ba;
- else
- val = X_A (instruction) ? bicca : bicc;
- switch (X_OP2 (instruction))
- {
- case 7:
- if (!GDB_TARGET_IS_SPARC64)
- break;
- /* else fall thru */
- case 2:
- case 6:
- offset = 4 * X_DISP22 (instruction);
- break;
- case 1:
- case 5:
- offset = 4 * X_DISP19 (instruction);
- break;
- case 3:
- offset = 4 * X_DISP16 (instruction);
- break;
- }
- *target = addr + offset;
- }
- else if (GDB_TARGET_IS_SPARC64
- && X_OP (instruction) == 2
- && X_OP3 (instruction) == 62)
- {
- if (X_FCN (instruction) == 0)
- {
- /* done */
- *target = read_register (TNPC_REGNUM);
- val = done_retry;
- }
- else if (X_FCN (instruction) == 1)
- {
- /* retry */
- *target = read_register (TPC_REGNUM);
- val = done_retry;
- }
- }
+ gdb_assert (regnum >= SPARC32_D0_REGNUM && regnum <= SPARC32_D30_REGNUM);
- return val;
+ regnum = SPARC_F0_REGNUM + 2 * (regnum - SPARC32_D0_REGNUM);
+ regcache_raw_write (regcache, regnum, buf);
+ regcache_raw_write (regcache, regnum + 1, ((const char *)buf) + 4);
}
-/* Find register number REGNUM relative to FRAME and put its
- (raw) contents in *RAW_BUFFER. Set *OPTIMIZED if the variable
- was optimized out (and thus can't be fetched). If the variable
- was fetched from memory, set *ADDRP to where it was fetched from,
- otherwise it was fetched from a register.
- The argument RAW_BUFFER must point to aligned memory. */
-
-void
-sparc_get_saved_register (char *raw_buffer, int *optimized, CORE_ADDR *addrp,
- struct frame_info *frame, int regnum,
- enum lval_type *lval)
+static CORE_ADDR
+sparc32_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp,
+ CORE_ADDR funcaddr, int using_gcc,
+ struct value **args, int nargs,
+ struct type *value_type,
+ CORE_ADDR *real_pc, CORE_ADDR *bp_addr)
{
- struct frame_info *frame1;
- CORE_ADDR addr;
-
- if (!target_has_registers)
- error ("No registers.");
+ *bp_addr = sp - 4;
+ *real_pc = funcaddr;
- if (optimized)
- *optimized = 0;
-
- addr = 0;
-
- /* FIXME This code extracted from infcmd.c; should put elsewhere! */
- if (frame == NULL)
+ if (using_struct_return (value_type, using_gcc))
{
- /* error ("No selected frame."); */
- if (!target_has_registers)
- error ("The program has no registers now.");
- if (deprecated_selected_frame == NULL)
- error ("No selected frame.");
- /* Try to use selected frame */
- frame = get_prev_frame (deprecated_selected_frame);
- if (frame == 0)
- error ("Cmd not meaningful in the outermost frame.");
- }
+ char buf[4];
+ /* This is an UNIMP instruction. */
+ store_unsigned_integer (buf, 4, TYPE_LENGTH (value_type) & 0x1fff);
+ write_memory (sp - 8, buf, 4);
+ return sp - 8;
+ }
- frame1 = get_next_frame (frame);
+ return sp - 4;
+}
- /* Get saved PC from the frame info if not in innermost frame. */
- if (regnum == PC_REGNUM && frame1 != NULL)
- {
- if (lval != NULL)
- *lval = not_lval;
- if (raw_buffer != NULL)
- {
- /* Put it back in target format. */
- store_unsigned_integer (raw_buffer, DEPRECATED_REGISTER_RAW_SIZE (regnum), get_frame_pc (frame));
- }
- if (addrp != NULL)
- *addrp = 0;
- return;
- }
+static CORE_ADDR
+sparc32_store_arguments (struct regcache *regcache, int nargs,
+ struct value **args, CORE_ADDR sp,
+ int struct_return, CORE_ADDR struct_addr)
+{
+ /* Number of words in the "parameter array". */
+ int num_elements = 0;
+ int element = 0;
+ int i;
- while (frame1 != NULL)
+ for (i = 0; i < nargs; i++)
{
- /* FIXME MVS: wrong test for dummy frame at entry. */
+ struct type *type = VALUE_TYPE (args[i]);
+ int len = TYPE_LENGTH (type);
- if (get_frame_pc (frame1) >= (get_frame_extra_info (frame1)->bottom
- ? get_frame_extra_info (frame1)->bottom
- : read_sp ())
- && get_frame_pc (frame1) <= get_frame_base (frame1))
- {
- /* Dummy frame. All but the window regs are in there somewhere.
- The window registers are saved on the stack, just like in a
- normal frame. */
- if (regnum >= G1_REGNUM && regnum < G1_REGNUM + 7)
- addr = get_frame_base (frame1) + (regnum - G0_REGNUM) * SPARC_INTREG_SIZE
- - (FP_REGISTER_BYTES + 8 * SPARC_INTREG_SIZE);
- else if (regnum >= I0_REGNUM && regnum < I0_REGNUM + 8)
- /* NOTE: cagney/2002-05-04: The call to get_prev_frame()
- is safe/cheap - there will always be a prev frame.
- This is because frame1 is initialized to frame->next
- (frame1->prev == frame) and is then advanced towards
- the innermost (next) frame. */
- addr = (get_frame_extra_info (get_prev_frame (frame1))->bottom
- + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE
- + FRAME_SAVED_I0);
- else if (regnum >= L0_REGNUM && regnum < L0_REGNUM + 8)
- /* NOTE: cagney/2002-05-04: The call to get_prev_frame()
- is safe/cheap - there will always be a prev frame.
- This is because frame1 is initialized to frame->next
- (frame1->prev == frame) and is then advanced towards
- the innermost (next) frame. */
- addr = (get_frame_extra_info (get_prev_frame (frame1))->bottom
- + (regnum - L0_REGNUM) * SPARC_INTREG_SIZE
- + FRAME_SAVED_L0);
- else if (regnum >= O0_REGNUM && regnum < O0_REGNUM + 8)
- addr = get_frame_base (frame1) + (regnum - O0_REGNUM) * SPARC_INTREG_SIZE
- - (FP_REGISTER_BYTES + 16 * SPARC_INTREG_SIZE);
- else if (SPARC_HAS_FPU &&
- regnum >= FP0_REGNUM && regnum < FP0_REGNUM + 32)
- addr = get_frame_base (frame1) + (regnum - FP0_REGNUM) * 4
- - (FP_REGISTER_BYTES);
- else if (GDB_TARGET_IS_SPARC64 && SPARC_HAS_FPU &&
- regnum >= FP0_REGNUM + 32 && regnum < FP_MAX_REGNUM)
- addr = get_frame_base (frame1) + 32 * 4 + (regnum - FP0_REGNUM - 32) * 8
- - (FP_REGISTER_BYTES);
- else if (regnum >= Y_REGNUM && regnum < NUM_REGS)
- addr = get_frame_base (frame1) + (regnum - Y_REGNUM) * SPARC_INTREG_SIZE
- - (FP_REGISTER_BYTES + 24 * SPARC_INTREG_SIZE);
- }
- else if (get_frame_extra_info (frame1)->flat)
+ if (sparc_structure_or_union_p (type)
+ || (sparc_floating_p (type) && len == 16))
{
+ /* Structure, Union and Quad-Precision Arguments. */
+ sp -= len;
- if (regnum == RP_REGNUM)
- addr = get_frame_extra_info (frame1)->pc_addr;
- else if (regnum == I7_REGNUM)
- addr = get_frame_extra_info (frame1)->fp_addr;
- else
- {
- CORE_ADDR func_start;
- CORE_ADDR *regs;
-
- regs = alloca (NUM_REGS * sizeof (CORE_ADDR));
- memset (regs, 0, NUM_REGS * sizeof (CORE_ADDR));
+ /* Use doubleword alignment for these values. That's always
+ correct, and wasting a few bytes shouldn't be a problem. */
+ sp &= ~0x7;
- find_pc_partial_function (get_frame_pc (frame1), NULL, &func_start, NULL);
- examine_prologue (func_start, 0, frame1, regs);
- addr = regs[regnum];
- }
+ write_memory (sp, VALUE_CONTENTS (args[i]), len);
+ args[i] = value_from_pointer (lookup_pointer_type (type), sp);
+ num_elements++;
}
- else
+ else if (sparc_floating_p (type))
{
- /* Normal frame. Local and In registers are saved on stack. */
- if (regnum >= I0_REGNUM && regnum < I0_REGNUM + 8)
- addr = (get_frame_extra_info (get_prev_frame (frame1))->bottom
- + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE
- + FRAME_SAVED_I0);
- else if (regnum >= L0_REGNUM && regnum < L0_REGNUM + 8)
- addr = (get_frame_extra_info (get_prev_frame (frame1))->bottom
- + (regnum - L0_REGNUM) * SPARC_INTREG_SIZE
- + FRAME_SAVED_L0);
- else if (regnum >= O0_REGNUM && regnum < O0_REGNUM + 8)
- {
- /* Outs become ins. */
- int realnum;
- frame_register (frame1, (regnum - O0_REGNUM + I0_REGNUM),
- optimized, lval, addrp, &realnum, raw_buffer);
- return;
- }
+ /* Floating arguments. */
+ gdb_assert (len == 4 || len == 8);
+ num_elements += (len / 4);
}
- if (addr != 0)
- break;
- frame1 = get_next_frame (frame1);
- }
- if (addr != 0)
- {
- if (lval != NULL)
- *lval = lval_memory;
- if (regnum == SP_REGNUM)
+ else
{
- if (raw_buffer != NULL)
- {
- /* Put it back in target format. */
- store_unsigned_integer (raw_buffer, DEPRECATED_REGISTER_RAW_SIZE (regnum), addr);
- }
- if (addrp != NULL)
- *addrp = 0;
- return;
+ /* Integral and pointer arguments. */
+ gdb_assert (sparc_integral_or_pointer_p (type));
+
+ if (len < 4)
+ args[i] = value_cast (builtin_type_int32, args[i]);
+ num_elements += ((len + 3) / 4);
}
- if (raw_buffer != NULL)
- read_memory (addr, raw_buffer, DEPRECATED_REGISTER_RAW_SIZE (regnum));
- }
- else
- {
- if (lval != NULL)
- *lval = lval_register;
- addr = DEPRECATED_REGISTER_BYTE (regnum);
- if (raw_buffer != NULL)
- deprecated_read_register_gen (regnum, raw_buffer);
}
- if (addrp != NULL)
- *addrp = addr;
-}
-
-/* Push an empty stack frame, and record in it the current PC, regs, etc.
- We save the non-windowed registers and the ins. The locals and outs
- are new; they don't need to be saved. The i's and l's of
- the last frame were already saved on the stack. */
+ /* Always allocate at least six words. */
+ sp -= max (6, num_elements) * 4;
-/* Definitely see tm-sparc.h for more doc of the frame format here. */
-
-/* See tm-sparc.h for how this is calculated. */
-
-#define DUMMY_STACK_REG_BUF_SIZE \
- (((8+8+8) * SPARC_INTREG_SIZE) + FP_REGISTER_BYTES)
-#define DUMMY_STACK_SIZE \
- (DUMMY_STACK_REG_BUF_SIZE + DUMMY_REG_SAVE_OFFSET)
-
-void
-sparc_push_dummy_frame (void)
-{
- CORE_ADDR sp, old_sp;
- char *register_temp;
-
- register_temp = alloca (DUMMY_STACK_SIZE);
+ /* The psABI says that "Software convention requires space for the
+ struct/union return value pointer, even if the word is unused." */
+ sp -= 4;
- old_sp = sp = read_sp ();
+ /* The psABI says that "Although software convention and the
+ operating system require every stack frame to be doubleword
+ aligned." */
+ sp &= ~0x7;
- if (GDB_TARGET_IS_SPARC64)
- {
- /* PC, NPC, CCR, FSR, FPRS, Y, ASI */
- deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (PC_REGNUM),
- &register_temp[0],
- DEPRECATED_REGISTER_RAW_SIZE (PC_REGNUM) * 7);
- deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (PSTATE_REGNUM),
- &register_temp[7 * SPARC_INTREG_SIZE],
- DEPRECATED_REGISTER_RAW_SIZE (PSTATE_REGNUM));
- /* FIXME: not sure what needs to be saved here. */
- }
- else
+ for (i = 0; i < nargs; i++)
{
- /* Y, PS, WIM, TBR, PC, NPC, FPS, CPS regs */
- deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (Y_REGNUM),
- &register_temp[0],
- DEPRECATED_REGISTER_RAW_SIZE (Y_REGNUM) * 8);
- }
-
- deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (O0_REGNUM),
- &register_temp[8 * SPARC_INTREG_SIZE],
- SPARC_INTREG_SIZE * 8);
+ char *valbuf = VALUE_CONTENTS (args[i]);
+ struct type *type = VALUE_TYPE (args[i]);
+ int len = TYPE_LENGTH (type);
- deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (G0_REGNUM),
- &register_temp[16 * SPARC_INTREG_SIZE],
- SPARC_INTREG_SIZE * 8);
+ gdb_assert (len == 4 || len == 8);
- if (SPARC_HAS_FPU)
- deprecated_read_register_bytes (DEPRECATED_REGISTER_BYTE (FP0_REGNUM),
- &register_temp[24 * SPARC_INTREG_SIZE],
- FP_REGISTER_BYTES);
+ if (element < 6)
+ {
+ int regnum = SPARC_O0_REGNUM + element;
- sp -= DUMMY_STACK_SIZE;
+ regcache_cooked_write (regcache, regnum, valbuf);
+ if (len > 4 && element < 5)
+ regcache_cooked_write (regcache, regnum + 1, valbuf + 4);
+ }
- DEPRECATED_DUMMY_WRITE_SP (sp);
+ /* Always store the argument in memory. */
+ write_memory (sp + 4 + element * 4, valbuf, len);
+ element += len / 4;
+ }
- write_memory (sp + DUMMY_REG_SAVE_OFFSET, &register_temp[0],
- DUMMY_STACK_REG_BUF_SIZE);
+ gdb_assert (element == num_elements);
- if (strcmp (target_shortname, "sim") != 0)
- {
- /* NOTE: cagney/2002-04-04: The code below originally contained
- GDB's _only_ call to write_fp(). That call was eliminated by
- inlining the corresponding code. For the 64 bit case, the
- old function (sparc64_write_fp) did the below although I'm
- not clear why. The same goes for why this is only done when
- the underlying target is a simulator. */
- if (GDB_TARGET_IS_SPARC64)
- {
- /* Target is a 64 bit SPARC. */
- CORE_ADDR oldfp = read_register (DEPRECATED_FP_REGNUM);
- if (oldfp & 1)
- write_register (DEPRECATED_FP_REGNUM, old_sp - 2047);
- else
- write_register (DEPRECATED_FP_REGNUM, old_sp);
- }
- else
- {
- /* Target is a 32 bit SPARC. */
- write_register (DEPRECATED_FP_REGNUM, old_sp);
- }
- /* Set return address register for the call dummy to the current PC. */
- write_register (I7_REGNUM, read_pc () - 8);
- }
- else
+ if (struct_return)
{
- /* The call dummy will write this value to FP before executing
- the 'save'. This ensures that register window flushes work
- correctly in the simulator. */
- write_register (G0_REGNUM + 1, read_register (DEPRECATED_FP_REGNUM));
-
- /* The call dummy will write this value to FP after executing
- the 'save'. */
- write_register (G0_REGNUM + 2, old_sp);
-
- /* The call dummy will write this value to the return address (%i7) after
- executing the 'save'. */
- write_register (G0_REGNUM + 3, read_pc () - 8);
-
- /* Set the FP that the call dummy will be using after the 'save'.
- This makes backtraces from an inferior function call work properly. */
- write_register (DEPRECATED_FP_REGNUM, old_sp);
+ char buf[4];
+
+ store_unsigned_integer (buf, 4, struct_addr);
+ write_memory (sp, buf, 4);
}
-}
-/* sparc_frame_find_saved_regs (). This function is here only because
- pop_frame uses it. Note there is an interesting corner case which
- I think few ports of GDB get right--if you are popping a frame
- which does not save some register that *is* saved by a more inner
- frame (such a frame will never be a dummy frame because dummy
- frames save all registers).
+ return sp;
+}
- NOTE: cagney/2003-03-12: Since pop_frame has been rewritten to use
- frame_unwind_register() the need for this function is questionable.
+static CORE_ADDR
+sparc32_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
+ struct regcache *regcache, CORE_ADDR bp_addr,
+ int nargs, struct value **args, CORE_ADDR sp,
+ int struct_return, CORE_ADDR struct_addr)
+{
+ CORE_ADDR call_pc = (struct_return ? (bp_addr - 12) : (bp_addr - 8));
- Stores, into an array of CORE_ADDR,
- the addresses of the saved registers of frame described by FRAME_INFO.
- This includes special registers such as pc and fp saved in special
- ways in the stack frame. sp is even more special:
- the address we return for it IS the sp for the next frame.
+ /* Set return address. */
+ regcache_cooked_write_unsigned (regcache, SPARC_O7_REGNUM, call_pc);
- Note that on register window machines, we are currently making the
- assumption that window registers are being saved somewhere in the
- frame in which they are being used. If they are stored in an
- inferior frame, find_saved_register will break.
+ /* Set up function arguments. */
+ sp = sparc32_store_arguments (regcache, nargs, args, sp,
+ struct_return, struct_addr);
- On the Sun 4, the only time all registers are saved is when
- a dummy frame is involved. Otherwise, the only saved registers
- are the LOCAL and IN registers which are saved as a result
- of the "save/restore" opcodes. This condition is determined
- by address rather than by value.
+ /* Allocate the 16-word window save area. */
+ sp -= 16 * 4;
- The "pc" is not stored in a frame on the SPARC. (What is stored
- is a return address minus 8.) sparc_pop_frame knows how to
- deal with that. Other routines might or might not.
+ /* Stack should be doubleword aligned at this point. */
+ gdb_assert (sp % 8 == 0);
- See tm-sparc.h (PUSH_DUMMY_FRAME and friends) for CRITICAL information
- about how this works. */
+ /* Finally, update the stack pointer. */
+ regcache_cooked_write_unsigned (regcache, SPARC_SP_REGNUM, sp);
-static void sparc_frame_find_saved_regs (struct frame_info *, CORE_ADDR *);
+ return sp;
+}
+
-static void
-sparc_frame_find_saved_regs (struct frame_info *fi, CORE_ADDR *saved_regs_addr)
+/* Use the program counter to determine the contents and size of a
+ breakpoint instruction. Return a pointer to a string of bytes that
+ encode a breakpoint instruction, store the length of the string in
+ *LEN and optionally adjust *PC to point to the correct memory
+ location for inserting the breakpoint. */
+
+static const unsigned char *
+sparc_breakpoint_from_pc (CORE_ADDR *pc, int *len)
{
- int regnum;
- CORE_ADDR frame_addr = get_frame_base (fi);
-
- gdb_assert (fi != NULL);
+ static unsigned char break_insn[] = { 0x91, 0xd0, 0x20, 0x01 };
- memset (saved_regs_addr, 0, NUM_REGS * sizeof (CORE_ADDR));
-
- if (get_frame_pc (fi) >= (get_frame_extra_info (fi)->bottom
- ? get_frame_extra_info (fi)->bottom
- : read_sp ())
- && get_frame_pc (fi) <= get_frame_base (fi))
- {
- /* Dummy frame. All but the window regs are in there somewhere. */
- for (regnum = G1_REGNUM; regnum < G1_REGNUM + 7; regnum++)
- saved_regs_addr[regnum] =
- frame_addr + (regnum - G0_REGNUM) * SPARC_INTREG_SIZE
- - DUMMY_STACK_REG_BUF_SIZE + 16 * SPARC_INTREG_SIZE;
-
- for (regnum = I0_REGNUM; regnum < I0_REGNUM + 8; regnum++)
- saved_regs_addr[regnum] =
- frame_addr + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE
- - DUMMY_STACK_REG_BUF_SIZE + 8 * SPARC_INTREG_SIZE;
-
- if (SPARC_HAS_FPU)
- for (regnum = FP0_REGNUM; regnum < FP_MAX_REGNUM; regnum++)
- saved_regs_addr[regnum] = frame_addr + (regnum - FP0_REGNUM) * 4
- - DUMMY_STACK_REG_BUF_SIZE + 24 * SPARC_INTREG_SIZE;
-
- if (GDB_TARGET_IS_SPARC64)
- {
- for (regnum = PC_REGNUM; regnum < PC_REGNUM + 7; regnum++)
- {
- saved_regs_addr[regnum] =
- frame_addr + (regnum - PC_REGNUM) * SPARC_INTREG_SIZE
- - DUMMY_STACK_REG_BUF_SIZE;
- }
- saved_regs_addr[PSTATE_REGNUM] =
- frame_addr + 8 * SPARC_INTREG_SIZE - DUMMY_STACK_REG_BUF_SIZE;
- }
- else
- for (regnum = Y_REGNUM; regnum < NUM_REGS; regnum++)
- saved_regs_addr[regnum] =
- frame_addr + (regnum - Y_REGNUM) * SPARC_INTREG_SIZE
- - DUMMY_STACK_REG_BUF_SIZE;
-
- frame_addr = (get_frame_extra_info (fi)->bottom
- ? get_frame_extra_info (fi)->bottom
- : read_sp ());
- }
- else if (get_frame_extra_info (fi)->flat)
- {
- CORE_ADDR func_start;
- find_pc_partial_function (get_frame_pc (fi), NULL, &func_start, NULL);
- examine_prologue (func_start, 0, fi, saved_regs_addr);
-
- /* Flat register window frame. */
- saved_regs_addr[RP_REGNUM] = get_frame_extra_info (fi)->pc_addr;
- saved_regs_addr[I7_REGNUM] = get_frame_extra_info (fi)->fp_addr;
- }
- else
- {
- /* Normal frame. Just Local and In registers */
- frame_addr = (get_frame_extra_info (fi)->bottom
- ? get_frame_extra_info (fi)->bottom
- : read_sp ());
- for (regnum = L0_REGNUM; regnum < L0_REGNUM + 8; regnum++)
- saved_regs_addr[regnum] =
- (frame_addr + (regnum - L0_REGNUM) * SPARC_INTREG_SIZE
- + FRAME_SAVED_L0);
- for (regnum = I0_REGNUM; regnum < I0_REGNUM + 8; regnum++)
- saved_regs_addr[regnum] =
- (frame_addr + (regnum - I0_REGNUM) * SPARC_INTREG_SIZE
- + FRAME_SAVED_I0);
- }
- if (get_next_frame (fi))
- {
- if (get_frame_extra_info (fi)->flat)
- {
- saved_regs_addr[O7_REGNUM] = get_frame_extra_info (fi)->pc_addr;
- }
- else
- {
- /* Pull off either the next frame pointer or the stack pointer */
- CORE_ADDR next_next_frame_addr =
- (get_frame_extra_info (get_next_frame (fi))->bottom
- ? get_frame_extra_info (get_next_frame (fi))->bottom
- : read_sp ());
- for (regnum = O0_REGNUM; regnum < O0_REGNUM + 8; regnum++)
- saved_regs_addr[regnum] =
- (next_next_frame_addr
- + (regnum - O0_REGNUM) * SPARC_INTREG_SIZE
- + FRAME_SAVED_I0);
- }
- }
- /* Otherwise, whatever we would get from ptrace(GETREGS) is accurate */
- /* FIXME -- should this adjust for the sparc64 offset? */
- saved_regs_addr[SP_REGNUM] = get_frame_base (fi);
+ *len = sizeof (break_insn);
+ return break_insn;
}
+
-/* Discard from the stack the innermost frame, restoring all saved registers.
-
- Note that the values stored in fsr by
- deprecated_get_frame_saved_regs are *in the context of the called
- frame*. What this means is that the i regs of fsr must be restored
- into the o regs of the (calling) frame that we pop into. We don't
- care about the output regs of the calling frame, since unless it's
- a dummy frame, it won't have any output regs in it.
-
- We never have to bother with %l (local) regs, since the called routine's
- locals get tossed, and the calling routine's locals are already saved
- on its stack. */
-
-/* Definitely see tm-sparc.h for more doc of the frame format here. */
+/* Allocate and initialize a frame cache. */
-void
-sparc_pop_frame (void)
+static struct sparc_frame_cache *
+sparc_alloc_frame_cache (void)
{
- struct frame_info *frame = get_current_frame ();
- CORE_ADDR pc;
- CORE_ADDR *fsr;
- char *raw_buffer;
- int regnum;
-
- fsr = alloca (NUM_REGS * sizeof (CORE_ADDR));
- raw_buffer = alloca (DEPRECATED_REGISTER_BYTES);
- sparc_frame_find_saved_regs (frame, &fsr[0]);
- if (SPARC_HAS_FPU)
- {
- if (fsr[FP0_REGNUM])
- {
- read_memory (fsr[FP0_REGNUM], raw_buffer, FP_REGISTER_BYTES);
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (FP0_REGNUM),
- raw_buffer, FP_REGISTER_BYTES);
- }
- if (!(GDB_TARGET_IS_SPARC64))
- {
- if (fsr[FPS_REGNUM])
- {
- read_memory (fsr[FPS_REGNUM], raw_buffer, SPARC_INTREG_SIZE);
- deprecated_write_register_gen (FPS_REGNUM, raw_buffer);
- }
- if (fsr[CPS_REGNUM])
- {
- read_memory (fsr[CPS_REGNUM], raw_buffer, SPARC_INTREG_SIZE);
- deprecated_write_register_gen (CPS_REGNUM, raw_buffer);
- }
- }
- }
- if (fsr[G1_REGNUM])
- {
- read_memory (fsr[G1_REGNUM], raw_buffer, 7 * SPARC_INTREG_SIZE);
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (G1_REGNUM), raw_buffer,
- 7 * SPARC_INTREG_SIZE);
- }
-
- if (get_frame_extra_info (frame)->flat)
- {
- /* Each register might or might not have been saved, need to test
- individually. */
- for (regnum = L0_REGNUM; regnum < L0_REGNUM + 8; ++regnum)
- if (fsr[regnum])
- write_register (regnum, read_memory_integer (fsr[regnum],
- SPARC_INTREG_SIZE));
- for (regnum = I0_REGNUM; regnum < I0_REGNUM + 8; ++regnum)
- if (fsr[regnum])
- write_register (regnum, read_memory_integer (fsr[regnum],
- SPARC_INTREG_SIZE));
-
- /* Handle all outs except stack pointer (o0-o5; o7). */
- for (regnum = O0_REGNUM; regnum < O0_REGNUM + 6; ++regnum)
- if (fsr[regnum])
- write_register (regnum, read_memory_integer (fsr[regnum],
- SPARC_INTREG_SIZE));
- if (fsr[O0_REGNUM + 7])
- write_register (O0_REGNUM + 7,
- read_memory_integer (fsr[O0_REGNUM + 7],
- SPARC_INTREG_SIZE));
-
- DEPRECATED_DUMMY_WRITE_SP (get_frame_base (frame));
- }
- else if (fsr[I0_REGNUM])
- {
- CORE_ADDR sp;
-
- char *reg_temp;
-
- reg_temp = alloca (SPARC_INTREG_SIZE * 16);
-
- 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[SP_REGNUM];
-
- if (GDB_TARGET_IS_SPARC64 && (sp & 1))
- sp += 2047;
+ struct sparc_frame_cache *cache;
+ int i;
- read_memory (sp, reg_temp, SPARC_INTREG_SIZE * 16);
+ cache = FRAME_OBSTACK_ZALLOC (struct sparc_frame_cache);
- /* Restore the out registers.
- Among other things this writes the new stack pointer. */
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (O0_REGNUM), raw_buffer,
- SPARC_INTREG_SIZE * 8);
+ /* Base address. */
+ cache->base = 0;
+ cache->pc = 0;
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (L0_REGNUM), reg_temp,
- SPARC_INTREG_SIZE * 16);
- }
+ /* Frameless until proven otherwise. */
+ cache->frameless_p = 1;
- if (!(GDB_TARGET_IS_SPARC64))
- if (fsr[PS_REGNUM])
- write_register (PS_REGNUM,
- read_memory_integer (fsr[PS_REGNUM],
- DEPRECATED_REGISTER_RAW_SIZE (PS_REGNUM)));
-
- if (fsr[Y_REGNUM])
- write_register (Y_REGNUM,
- read_memory_integer (fsr[Y_REGNUM],
- DEPRECATED_REGISTER_RAW_SIZE (Y_REGNUM)));
- if (fsr[PC_REGNUM])
- {
- /* Explicitly specified PC (and maybe NPC) -- just restore them. */
- write_register (PC_REGNUM,
- read_memory_integer (fsr[PC_REGNUM],
- DEPRECATED_REGISTER_RAW_SIZE (PC_REGNUM)));
- if (fsr[DEPRECATED_NPC_REGNUM])
- write_register (DEPRECATED_NPC_REGNUM,
- read_memory_integer (fsr[DEPRECATED_NPC_REGNUM],
- DEPRECATED_REGISTER_RAW_SIZE (DEPRECATED_NPC_REGNUM)));
- }
- else if (get_frame_extra_info (frame)->flat)
- {
- if (get_frame_extra_info (frame)->pc_addr)
- pc = PC_ADJUST ((CORE_ADDR)
- read_memory_integer (get_frame_extra_info (frame)->pc_addr,
- DEPRECATED_REGISTER_RAW_SIZE (PC_REGNUM)));
- else
- {
- /* I think this happens only in the innermost frame, if so then
- it is a complicated way of saying
- "pc = read_register (O7_REGNUM);". */
- ULONGEST tmp;
- tmp = get_frame_register_unsigned (frame, O7_REGNUM);
- pc = PC_ADJUST (tmp);
- }
+ cache->struct_return_p = 0;
- write_register (PC_REGNUM, pc);
- write_register (DEPRECATED_NPC_REGNUM, pc + 4);
- }
- 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[I7_REGNUM],
- SPARC_INTREG_SIZE));
- write_register (PC_REGNUM, pc);
- write_register (DEPRECATED_NPC_REGNUM, pc + 4);
- }
- flush_cached_frames ();
+ return cache;
}
-/* On the Sun 4 under SunOS, the compile will leave a fake insn which
- encodes the structure size being returned. If we detect such
- a fake insn, step past it. */
-
CORE_ADDR
-sparc_pc_adjust (CORE_ADDR pc)
+sparc_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc,
+ struct sparc_frame_cache *cache)
{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
unsigned long insn;
- char buf[4];
- int err;
+ int offset = 0;
+ int dest = -1;
- err = target_read_memory (pc + 8, buf, 4);
- insn = extract_unsigned_integer (buf, 4);
- if ((err == 0) && (insn & 0xffc00000) == 0)
- return pc + 12;
- else
- return pc + 8;
-}
+ if (current_pc <= pc)
+ return current_pc;
-/* If pc is in a shared library trampoline, return its target.
- The SunOs 4.x linker rewrites the jump table entries for PIC
- compiled modules in the main executable to bypass the dynamic linker
- with jumps of the form
- sethi %hi(addr),%g1
- jmp %g1+%lo(addr)
- and removes the corresponding jump table relocation entry in the
- dynamic relocations.
- find_solib_trampoline_target relies on the presence of the jump
- table relocation entry, so we have to detect these jump instructions
- by hand. */
+ /* We have to handle to "Procedure Linkage Table" (PLT) special. On
+ SPARC the linker usually defines a symbol (typically
+ _PROCEDURE_LINKAGE_TABLE_) at the start of the .plt section.
+ This symbol makes us end up here with PC pointing at the start of
+ the PLT and CURRENT_PC probably pointing at a PLT entry. If we
+ would do our normal prologue analysis, we would probably conclude
+ that we've got a frame when in reality we don't, since the
+ dynamic linker patches up the first PLT with some code that
+ starts with a SAVE instruction. Patch up PC such that it points
+ at the start of our PLT entry. */
+ if (tdep->plt_entry_size > 0 && in_plt_section (current_pc, NULL))
+ pc = current_pc - ((current_pc - pc) % tdep->plt_entry_size);
-CORE_ADDR
-sunos4_skip_trampoline_code (CORE_ADDR pc)
-{
- unsigned long insn1;
- char buf[4];
- int err;
+ insn = sparc_fetch_instruction (pc);
- err = target_read_memory (pc, buf, 4);
- insn1 = extract_unsigned_integer (buf, 4);
- if (err == 0 && (insn1 & 0xffc00000) == 0x03000000)
+ /* Recognize a SETHI insn and record its destination. */
+ if (X_OP (insn) == 0 && X_OP2 (insn) == 0x04)
{
- unsigned long insn2;
-
- err = target_read_memory (pc + 4, buf, 4);
- insn2 = extract_unsigned_integer (buf, 4);
- if (err == 0 && (insn2 & 0xffffe000) == 0x81c06000)
- {
- CORE_ADDR target_pc = (insn1 & 0x3fffff) << 10;
- int delta = insn2 & 0x1fff;
-
- /* Sign extend the displacement. */
- if (delta & 0x1000)
- delta |= ~0x1fff;
- return target_pc + delta;
- }
- }
- return find_solib_trampoline_target (pc);
-}
-
-#ifdef USE_PROC_FS /* Target dependent support for /proc */
-/* *INDENT-OFF* */
-/* The /proc interface divides the target machine's register set up into
- two different sets, the general register set (gregset) and the floating
- point register set (fpregset). For each set, there is an ioctl to get
- the current register set and another ioctl to set the current values.
-
- The actual structure passed through the ioctl interface is, of course,
- naturally machine dependent, and is different for each set of registers.
- For the sparc for example, the general register set is typically defined
- by:
-
- typedef int gregset_t[38];
-
- #define R_G0 0
- ...
- #define R_TBR 37
-
- and the floating point set by:
-
- typedef struct prfpregset {
- union {
- u_long pr_regs[32];
- double pr_dregs[16];
- } pr_fr;
- void * pr_filler;
- u_long pr_fsr;
- u_char pr_qcnt;
- u_char pr_q_entrysize;
- u_char pr_en;
- u_long pr_q[64];
- } prfpregset_t;
-
- These routines provide the packing and unpacking of gregset_t and
- fpregset_t formatted data.
-
- */
-/* *INDENT-ON* */
-
-/* Given a pointer to a general register set in /proc format (gregset_t *),
- unpack the register contents and supply them as gdb's idea of the current
- register values. */
+ dest = X_RD (insn);
+ offset += 4;
-void
-supply_gregset (gdb_gregset_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;
-
- /* 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)) + offset);
+ insn = sparc_fetch_instruction (pc + 4);
}
- /* These require a bit more care. */
- supply_register (PC_REGNUM, ((char *) (regp + R_PC)) + offset);
- supply_register (DEPRECATED_NPC_REGNUM, ((char *) (regp + R_nPC)) + offset);
- supply_register (Y_REGNUM, ((char *) (regp + R_Y)) + offset);
-
- 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 */
+ /* Allow for an arithmetic operation on DEST or %g1. */
+ if (X_OP (insn) == 2 && X_I (insn)
+ && (X_RD (insn) == 1 || X_RD (insn) == dest))
{
-#ifdef R_PS
- supply_register (PS_REGNUM, ((char *) (regp + R_PS)) + offset);
-#else
- supply_register (PS_REGNUM, NULL);
-#endif
+ offset += 4;
- /* 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
+ insn = sparc_fetch_instruction (pc + 8);
}
- /* Fill inaccessible registers with zero. */
- if (GDB_TARGET_IS_SPARC64)
- {
- /*
- * don't know how to get value of any of the following:
- */
- supply_register (VER_REGNUM, NULL);
- supply_register (TICK_REGNUM, NULL);
- supply_register (PIL_REGNUM, NULL);
- supply_register (PSTATE_REGNUM, NULL);
- supply_register (TSTATE_REGNUM, NULL);
- supply_register (TBA_REGNUM, NULL);
- supply_register (TL_REGNUM, NULL);
- supply_register (TT_REGNUM, NULL);
- supply_register (TPC_REGNUM, NULL);
- supply_register (TNPC_REGNUM, NULL);
- supply_register (WSTATE_REGNUM, NULL);
- supply_register (CWP_REGNUM, NULL);
- supply_register (CANSAVE_REGNUM, NULL);
- supply_register (CANRESTORE_REGNUM, NULL);
- supply_register (CLEANWIN_REGNUM, NULL);
- supply_register (OTHERWIN_REGNUM, NULL);
- supply_register (ASR16_REGNUM, NULL);
- supply_register (ASR17_REGNUM, NULL);
- supply_register (ASR18_REGNUM, NULL);
- supply_register (ASR19_REGNUM, NULL);
- supply_register (ASR20_REGNUM, NULL);
- supply_register (ASR21_REGNUM, NULL);
- supply_register (ASR22_REGNUM, NULL);
- supply_register (ASR23_REGNUM, NULL);
- supply_register (ASR24_REGNUM, NULL);
- supply_register (ASR25_REGNUM, NULL);
- supply_register (ASR26_REGNUM, NULL);
- supply_register (ASR27_REGNUM, NULL);
- supply_register (ASR28_REGNUM, NULL);
- supply_register (ASR29_REGNUM, NULL);
- supply_register (ASR30_REGNUM, NULL);
- supply_register (ASR31_REGNUM, NULL);
- supply_register (ICC_REGNUM, NULL);
- supply_register (XCC_REGNUM, NULL);
- }
- else
+ /* Check for the SAVE instruction that sets up the frame. */
+ if (X_OP (insn) == 2 && X_OP3 (insn) == 0x3c)
{
- supply_register (CPS_REGNUM, NULL);
+ cache->frameless_p = 0;
+ return pc + offset + 4;
}
+
+ return pc;
}
-void
-fill_gregset (gdb_gregset_t *gregsetp, int regno)
+static CORE_ADDR
+sparc_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
{
- prgreg_t *regp = (prgreg_t *) gregsetp;
- int regi, offset = 0;
-
- /* If the host is 64-bit sparc, but the target is 32-bit sparc,
- then the gregset may contain 64-bit ints while supply_register
- is expecting 32-bit ints. Compensate. */
- if (sizeof (regp[0]) == 8 && SPARC_INTREG_SIZE == 4)
- offset = 4;
-
- for (regi = 0; regi <= R_I7; regi++)
- if ((regno == -1) || (regno == regi))
- deprecated_read_register_gen (regi, (char *) (regp + regi) + offset);
-
- if ((regno == -1) || (regno == PC_REGNUM))
- deprecated_read_register_gen (PC_REGNUM, (char *) (regp + R_PC) + offset);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+ return frame_unwind_register_unsigned (next_frame, tdep->pc_regnum);
+}
- if ((regno == -1) || (regno == DEPRECATED_NPC_REGNUM))
- deprecated_read_register_gen (DEPRECATED_NPC_REGNUM, (char *) (regp + R_nPC) + offset);
+/* Return PC of first real instruction of the function starting at
+ START_PC. */
- if ((regno == -1) || (regno == Y_REGNUM))
- deprecated_read_register_gen (Y_REGNUM, (char *) (regp + R_Y) + offset);
+static CORE_ADDR
+sparc32_skip_prologue (CORE_ADDR start_pc)
+{
+ struct symtab_and_line sal;
+ CORE_ADDR func_start, func_end;
+ struct sparc_frame_cache cache;
- if (GDB_TARGET_IS_SPARC64)
- {
-#ifdef R_CCR
- if (regno == -1 || regno == CCR_REGNUM)
- deprecated_read_register_gen (CCR_REGNUM, ((char *) (regp + R_CCR)) + offset);
-#endif
-#ifdef R_FPRS
- if (regno == -1 || regno == FPRS_REGNUM)
- deprecated_read_register_gen (FPRS_REGNUM, ((char *) (regp + R_FPRS)) + offset);
-#endif
-#ifdef R_ASI
- if (regno == -1 || regno == ASI_REGNUM)
- deprecated_read_register_gen (ASI_REGNUM, ((char *) (regp + R_ASI)) + offset);
-#endif
- }
- else /* sparc32 */
+ /* This is the preferred method, find the end of the prologue by
+ using the debugging information. */
+ if (find_pc_partial_function (start_pc, NULL, &func_start, &func_end))
{
-#ifdef R_PS
- if (regno == -1 || regno == PS_REGNUM)
- deprecated_read_register_gen (PS_REGNUM, ((char *) (regp + R_PS)) + offset);
-#endif
+ sal = find_pc_line (func_start, 0);
- /* 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 (sal.end < func_end
+ && start_pc <= sal.end)
+ return sal.end;
+ }
-#if !defined (R_WIM) && defined (R_ASI)
-#define R_WIM R_ASI
-#endif
+ return sparc_analyze_prologue (start_pc, 0xffffffffUL, &cache);
+}
-#if !defined (R_TBR) && defined (R_FPRS)
-#define R_TBR R_FPRS
-#endif
+/* Normal frames. */
-#if defined (R_WIM)
- if (regno == -1 || regno == WIM_REGNUM)
- deprecated_read_register_gen (WIM_REGNUM, ((char *) (regp + R_WIM)) + offset);
-#else
- if (regno == -1 || regno == WIM_REGNUM)
- deprecated_read_register_gen (WIM_REGNUM, NULL);
-#endif
+struct sparc_frame_cache *
+sparc_frame_cache (struct frame_info *next_frame, void **this_cache)
+{
+ struct sparc_frame_cache *cache;
-#if defined (R_TBR)
- if (regno == -1 || regno == TBR_REGNUM)
- deprecated_read_register_gen (TBR_REGNUM, ((char *) (regp + R_TBR)) + offset);
-#else
- if (regno == -1 || regno == TBR_REGNUM)
- deprecated_read_register_gen (TBR_REGNUM, NULL);
-#endif
- }
-}
+ if (*this_cache)
+ return *this_cache;
-/* 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. */
+ cache = sparc_alloc_frame_cache ();
+ *this_cache = cache;
-void
-supply_fpregset (gdb_fpregset_t *fpregsetp)
-{
- int regi;
- char *from;
+ /* In priciple, for normal frames, %fp (%i6) holds the frame
+ pointer, which holds the base address for the current stack
+ frame. */
- if (!SPARC_HAS_FPU)
- return;
+ cache->base = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM);
+ if (cache->base == 0)
+ return cache;
- for (regi = FP0_REGNUM; regi < FP_MAX_REGNUM; regi++)
+ cache->pc = frame_func_unwind (next_frame);
+ if (cache->pc != 0)
{
- from = (char *) &fpregsetp->pr_fr.pr_regs[regi - FP0_REGNUM];
- supply_register (regi, from);
+ CORE_ADDR addr_in_block = frame_unwind_address_in_block (next_frame);
+ sparc_analyze_prologue (cache->pc, addr_in_block, cache);
}
- if (GDB_TARGET_IS_SPARC64)
+ if (cache->frameless_p)
{
- /*
- * 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 */
+ /* We didn't find a valid frame, which means that CACHE->base
+ currently holds the frame pointer for our calling frame. */
+ cache->base = frame_unwind_register_unsigned (next_frame,
+ SPARC_SP_REGNUM);
}
- 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. */
+ return cache;
+}
-void
-fill_fpregset (gdb_fpregset_t *fpregsetp, int regno)
+struct sparc_frame_cache *
+sparc32_frame_cache (struct frame_info *next_frame, void **this_cache)
{
- int regi;
- char *to;
- char *from;
+ struct sparc_frame_cache *cache;
+ struct symbol *sym;
- if (!SPARC_HAS_FPU)
- return;
+ if (*this_cache)
+ return *this_cache;
- for (regi = FP0_REGNUM; regi < FP_MAX_REGNUM; regi++)
+ cache = sparc_frame_cache (next_frame, this_cache);
+
+ sym = find_pc_function (cache->pc);
+ if (sym)
{
- if ((regno == -1) || (regno == regi))
+ struct type *type = check_typedef (SYMBOL_TYPE (sym));
+ enum type_code code = TYPE_CODE (type);
+
+ if (code == TYPE_CODE_FUNC || code == TYPE_CODE_METHOD)
{
- from = (char *) &deprecated_registers[DEPRECATED_REGISTER_BYTE (regi)];
- to = (char *) &fpregsetp->pr_fr.pr_regs[regi - FP0_REGNUM];
- memcpy (to, from, DEPRECATED_REGISTER_RAW_SIZE (regi));
+ type = check_typedef (TYPE_TARGET_TYPE (type));
+ if (sparc_structure_or_union_p (type)
+ || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16))
+ cache->struct_return_p = 1;
}
}
- if (!(GDB_TARGET_IS_SPARC64)) /* FIXME: does Sparc64 have this register? */
- if ((regno == -1) || (regno == FPS_REGNUM))
- {
- from = (char *)&deprecated_registers[DEPRECATED_REGISTER_BYTE (FPS_REGNUM)];
- to = (char *) &fpregsetp->pr_fsr;
- memcpy (to, from, DEPRECATED_REGISTER_RAW_SIZE (FPS_REGNUM));
- }
+ return cache;
}
-#endif /* USE_PROC_FS */
-
-/* Because of Multi-arch, GET_LONGJMP_TARGET is always defined. So test
- for a definition of JB_PC. */
-#ifdef JB_PC
-
-/* 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 */
-
-int
-get_longjmp_target (CORE_ADDR *pc)
+static void
+sparc32_frame_this_id (struct frame_info *next_frame, void **this_cache,
+ struct frame_id *this_id)
{
- CORE_ADDR jb_addr;
-#define LONGJMP_TARGET_SIZE 4
- char buf[LONGJMP_TARGET_SIZE];
+ struct sparc_frame_cache *cache =
+ sparc32_frame_cache (next_frame, this_cache);
- jb_addr = read_register (O0_REGNUM);
-
- if (target_read_memory (jb_addr + JB_PC * JB_ELEMENT_SIZE, buf,
- LONGJMP_TARGET_SIZE))
- return 0;
-
- *pc = extract_unsigned_integer (buf, LONGJMP_TARGET_SIZE);
-
- return 1;
-}
-#endif /* GET_LONGJMP_TARGET */
-
-#ifdef STATIC_TRANSFORM_NAME
-/* SunPRO (3.0 at least), encodes the static variables. This is not
- related to C++ mangling, it is done for C too. */
+ /* This marks the outermost frame. */
+ if (cache->base == 0)
+ return;
-char *
-sunpro_static_transform_name (char *name)
-{
- char *p;
- if (name[0] == '$')
- {
- /* For file-local statics there will be a dollar sign, a bunch
- of junk (the contents of which match a string given in the
- N_OPT), a period and the name. For function-local statics
- there will be a bunch of junk (which seems to change the
- second character from 'A' to 'B'), a period, the name of the
- function, and the name. So just skip everything before the
- last period. */
- p = strrchr (name, '.');
- if (p != NULL)
- name = p + 1;
- }
- return name;
+ (*this_id) = frame_id_build (cache->base, cache->pc);
}
-#endif /* STATIC_TRANSFORM_NAME */
-
-
-/* Utilities for printing registers.
- Page numbers refer to the SPARC Architecture Manual. */
-
-static void dump_ccreg (char *, int);
static void
-dump_ccreg (char *reg, int val)
+sparc32_frame_prev_register (struct frame_info *next_frame, void **this_cache,
+ int regnum, int *optimizedp,
+ enum lval_type *lvalp, CORE_ADDR *addrp,
+ int *realnump, void *valuep)
{
- /* page 41 */
- printf_unfiltered ("%s:%s,%s,%s,%s", reg,
- val & 8 ? "N" : "NN",
- val & 4 ? "Z" : "NZ",
- val & 2 ? "O" : "NO",
- val & 1 ? "C" : "NC");
-}
+ struct sparc_frame_cache *cache =
+ sparc32_frame_cache (next_frame, this_cache);
-static char *
-decode_asi (int val)
-{
- /* page 72 */
- switch (val)
+ if (regnum == SPARC32_PC_REGNUM || regnum == SPARC32_NPC_REGNUM)
{
- case 4:
- return "ASI_NUCLEUS";
- case 0x0c:
- return "ASI_NUCLEUS_LITTLE";
- case 0x10:
- return "ASI_AS_IF_USER_PRIMARY";
- case 0x11:
- return "ASI_AS_IF_USER_SECONDARY";
- case 0x18:
- return "ASI_AS_IF_USER_PRIMARY_LITTLE";
- case 0x19:
- return "ASI_AS_IF_USER_SECONDARY_LITTLE";
- case 0x80:
- return "ASI_PRIMARY";
- case 0x81:
- return "ASI_SECONDARY";
- case 0x82:
- return "ASI_PRIMARY_NOFAULT";
- case 0x83:
- return "ASI_SECONDARY_NOFAULT";
- case 0x88:
- return "ASI_PRIMARY_LITTLE";
- case 0x89:
- return "ASI_SECONDARY_LITTLE";
- case 0x8a:
- return "ASI_PRIMARY_NOFAULT_LITTLE";
- case 0x8b:
- return "ASI_SECONDARY_NOFAULT_LITTLE";
- default:
- return NULL;
- }
-}
+ *optimizedp = 0;
+ *lvalp = not_lval;
+ *addrp = 0;
+ *realnump = -1;
+ if (valuep)
+ {
+ CORE_ADDR pc = (regnum == SPARC32_NPC_REGNUM) ? 4 : 0;
-/* Pretty print various registers. */
-/* FIXME: Would be nice if this did some fancy things for 32 bit sparc. */
+ /* If this functions has a Structure, Union or
+ Quad-Precision return value, we have to skip the UNIMP
+ instruction that encodes the size of the structure. */
+ if (cache->struct_return_p)
+ pc += 4;
-static void
-sparc_print_register_hook (int regno)
-{
- ULONGEST val;
-
- /* Handle double/quad versions of lower 32 fp regs. */
- if (regno >= FP0_REGNUM && regno < FP0_REGNUM + 32
- && (regno & 1) == 0)
- {
- char value[16];
-
- if (frame_register_read (deprecated_selected_frame, regno, value)
- && frame_register_read (deprecated_selected_frame, regno + 1, value + 4))
- {
- printf_unfiltered ("\t");
- print_floating (value, builtin_type_double, gdb_stdout);
- }
-#if 0 /* FIXME: gdb doesn't handle long doubles */
- if ((regno & 3) == 0)
- {
- if (frame_register_read (deprecated_selected_frame, regno + 2, value + 8)
- && frame_register_read (deprecated_selected_frame, regno + 3, value + 12))
- {
- printf_unfiltered ("\t");
- print_floating (value, builtin_type_long_double, gdb_stdout);
- }
+ regnum = cache->frameless_p ? SPARC_O7_REGNUM : SPARC_I7_REGNUM;
+ pc += frame_unwind_register_unsigned (next_frame, regnum) + 8;
+ store_unsigned_integer (valuep, 4, pc);
}
-#endif
return;
}
-#if 0 /* FIXME: gdb doesn't handle long doubles */
- /* Print upper fp regs as long double if appropriate. */
- if (regno >= FP0_REGNUM + 32 && regno < FP_MAX_REGNUM
- /* We test for even numbered regs and not a multiple of 4 because
- the upper fp regs are recorded as doubles. */
- && (regno & 1) == 0)
+ /* The previous frame's `local' and `in' registers have been saved
+ in the register save area. */
+ if (!cache->frameless_p
+ && regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM)
{
- char value[16];
-
- if (frame_register_read (deprecated_selected_frame, regno, value)
- && frame_register_read (deprecated_selected_frame, regno + 1, value + 8))
+ *optimizedp = 0;
+ *lvalp = lval_memory;
+ *addrp = cache->base + (regnum - SPARC_L0_REGNUM) * 4;
+ *realnump = -1;
+ if (valuep)
{
- printf_unfiltered ("\t");
- print_floating (value, builtin_type_long_double, gdb_stdout);
+ struct gdbarch *gdbarch = get_frame_arch (next_frame);
+
+ /* Read the value in from memory. */
+ read_memory (*addrp, valuep, register_size (gdbarch, regnum));
}
return;
}
-#endif
-
- /* FIXME: Some of these are priviledged registers.
- Not sure how they should be handled. */
-
-#define BITS(n, mask) ((int) (((val) >> (n)) & (mask)))
-
- val = read_register (regno);
- /* pages 40 - 60 */
- if (GDB_TARGET_IS_SPARC64)
- switch (regno)
- {
- case CCR_REGNUM:
- printf_unfiltered ("\t");
- dump_ccreg ("xcc", val >> 4);
- printf_unfiltered (", ");
- dump_ccreg ("icc", val & 15);
- break;
- case FPRS_REGNUM:
- printf ("\tfef:%d, du:%d, dl:%d",
- BITS (2, 1), BITS (1, 1), BITS (0, 1));
- break;
- case FSR_REGNUM:
- {
- static char *fcc[4] =
- {"=", "<", ">", "?"};
- static char *rd[4] =
- {"N", "0", "+", "-"};
- /* Long, but I'd rather leave it as is and use a wide screen. */
- printf_filtered ("\t0:%s, 1:%s, 2:%s, 3:%s, rd:%s, tem:%d, ",
- fcc[BITS (10, 3)], fcc[BITS (32, 3)],
- fcc[BITS (34, 3)], fcc[BITS (36, 3)],
- rd[BITS (30, 3)], BITS (23, 31));
- printf_filtered ("ns:%d, ver:%d, ftt:%d, qne:%d, aexc:%d, cexc:%d",
- BITS (22, 1), BITS (17, 7), BITS (14, 7),
- BITS (13, 1), BITS (5, 31), BITS (0, 31));
- break;
- }
- case ASI_REGNUM:
- {
- char *asi = decode_asi (val);
- if (asi != NULL)
- printf ("\t%s", asi);
- break;
- }
- case VER_REGNUM:
- printf ("\tmanuf:%d, impl:%d, mask:%d, maxtl:%d, maxwin:%d",
- BITS (48, 0xffff), BITS (32, 0xffff),
- BITS (24, 0xff), BITS (8, 0xff), BITS (0, 31));
- break;
- case PSTATE_REGNUM:
- {
- static char *mm[4] =
- {"tso", "pso", "rso", "?"};
- printf_filtered ("\tcle:%d, tle:%d, mm:%s, red:%d, ",
- BITS (9, 1), BITS (8, 1),
- mm[BITS (6, 3)], BITS (5, 1));
- printf_filtered ("pef:%d, am:%d, priv:%d, ie:%d, ag:%d",
- BITS (4, 1), BITS (3, 1), BITS (2, 1),
- BITS (1, 1), BITS (0, 1));
- break;
- }
- case TSTATE_REGNUM:
- /* FIXME: print all 4? */
- break;
- case TT_REGNUM:
- /* FIXME: print all 4? */
- break;
- case TPC_REGNUM:
- /* FIXME: print all 4? */
- break;
- case TNPC_REGNUM:
- /* FIXME: print all 4? */
- break;
- case WSTATE_REGNUM:
- printf ("\tother:%d, normal:%d", BITS (3, 7), BITS (0, 7));
- break;
- case CWP_REGNUM:
- printf ("\t%d", BITS (0, 31));
- break;
- case CANSAVE_REGNUM:
- printf ("\t%-2d before spill", BITS (0, 31));
- break;
- case CANRESTORE_REGNUM:
- printf ("\t%-2d before fill", BITS (0, 31));
- break;
- case CLEANWIN_REGNUM:
- printf ("\t%-2d before clean", BITS (0, 31));
- break;
- case OTHERWIN_REGNUM:
- printf ("\t%d", BITS (0, 31));
- break;
- }
- else /* Sparc32 */
- switch (regno)
- {
- case PS_REGNUM:
- printf ("\ticc:%c%c%c%c, pil:%d, s:%d, ps:%d, et:%d, cwp:%d",
- BITS (23, 1) ? 'N' : '-', BITS (22, 1) ? 'Z' : '-',
- BITS (21, 1) ? 'V' : '-', BITS (20, 1) ? 'C' : '-',
- BITS (8, 15), BITS (7, 1), BITS (6, 1), BITS (5, 1),
- BITS (0, 31));
- break;
- case FPS_REGNUM:
- {
- static char *fcc[4] =
- {"=", "<", ">", "?"};
- static char *rd[4] =
- {"N", "0", "+", "-"};
- /* Long, but I'd rather leave it as is and use a wide screen. */
- printf ("\trd:%s, tem:%d, ns:%d, ver:%d, ftt:%d, qne:%d, "
- "fcc:%s, aexc:%d, cexc:%d",
- rd[BITS (30, 3)], BITS (23, 31), BITS (22, 1), BITS (17, 7),
- BITS (14, 7), BITS (13, 1), fcc[BITS (10, 3)], BITS (5, 31),
- BITS (0, 31));
- break;
- }
- }
+ /* The previous frame's `out' registers are accessable as the
+ current frame's `in' registers. */
+ if (!cache->frameless_p
+ && regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
+ regnum += (SPARC_I0_REGNUM - SPARC_O0_REGNUM);
-#undef BITS
+ frame_register_unwind (next_frame, regnum,
+ optimizedp, lvalp, addrp, realnump, valuep);
}
-static void
-sparc_print_registers (struct gdbarch *gdbarch,
- struct ui_file *file,
- struct frame_info *frame,
- int regnum, int print_all,
- void (*print_register_hook) (int))
+static const struct frame_unwind sparc32_frame_unwind =
{
- int i;
- const int numregs = NUM_REGS + NUM_PSEUDO_REGS;
- char raw_buffer[MAX_REGISTER_SIZE];
- char virtual_buffer[MAX_REGISTER_SIZE];
-
- for (i = 0; i < numregs; i++)
- {
- /* Decide between printing all regs, non-float / vector regs, or
- specific reg. */
- if (regnum == -1)
- {
- if (!print_all)
- {
- if (TYPE_CODE (DEPRECATED_REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
- continue;
- if (TYPE_VECTOR (DEPRECATED_REGISTER_VIRTUAL_TYPE (i)))
- continue;
- }
- }
- else
- {
- if (i != regnum)
- continue;
- }
-
- /* If the register name is empty, it is undefined for this
- processor, so don't display anything. */
- if (REGISTER_NAME (i) == NULL || *(REGISTER_NAME (i)) == '\0')
- continue;
-
- fputs_filtered (REGISTER_NAME (i), file);
- print_spaces_filtered (15 - strlen (REGISTER_NAME (i)), file);
-
- /* Get the data in raw format. */
- if (! frame_register_read (frame, i, raw_buffer))
- {
- fprintf_filtered (file, "*value not available*\n");
- continue;
- }
-
- memcpy (virtual_buffer, raw_buffer, DEPRECATED_REGISTER_VIRTUAL_SIZE (i));
-
- /* If virtual format is floating, print it that way, and in raw
- hex. */
- if (TYPE_CODE (DEPRECATED_REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
- {
- int j;
-
- val_print (DEPRECATED_REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
- file, 0, 1, 0, Val_pretty_default);
+ NORMAL_FRAME,
+ sparc32_frame_this_id,
+ sparc32_frame_prev_register
+};
- fprintf_filtered (file, "\t(raw 0x");
- for (j = 0; j < DEPRECATED_REGISTER_RAW_SIZE (i); j++)
- {
- int idx;
- if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
- idx = j;
- else
- idx = DEPRECATED_REGISTER_RAW_SIZE (i) - 1 - j;
- fprintf_filtered (file, "%02x", (unsigned char) raw_buffer[idx]);
- }
- fprintf_filtered (file, ")");
- }
- else
- {
- /* Print the register in hex. */
- val_print (DEPRECATED_REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
- file, 'x', 1, 0, Val_pretty_default);
- /* If not a vector register, print it also according to its
- natural format. */
- if (TYPE_VECTOR (DEPRECATED_REGISTER_VIRTUAL_TYPE (i)) == 0)
- {
- fprintf_filtered (file, "\t");
- val_print (DEPRECATED_REGISTER_VIRTUAL_TYPE (i), virtual_buffer, 0, 0,
- file, 0, 1, 0, Val_pretty_default);
- }
- }
+static const struct frame_unwind *
+sparc32_frame_sniffer (struct frame_info *next_frame)
+{
+ return &sparc32_frame_unwind;
+}
+
- /* Some sparc specific info. */
- if (print_register_hook != NULL)
- print_register_hook (i);
+static CORE_ADDR
+sparc32_frame_base_address (struct frame_info *next_frame, void **this_cache)
+{
+ struct sparc_frame_cache *cache =
+ sparc32_frame_cache (next_frame, this_cache);
- fprintf_filtered (file, "\n");
- }
+ return cache->base;
}
-static void
-sparc_print_registers_info (struct gdbarch *gdbarch,
- struct ui_file *file,
- struct frame_info *frame,
- int regnum, int print_all)
+static const struct frame_base sparc32_frame_base =
{
- sparc_print_registers (gdbarch, file, frame, regnum, print_all,
- sparc_print_register_hook);
-}
+ &sparc32_frame_unwind,
+ sparc32_frame_base_address,
+ sparc32_frame_base_address,
+ sparc32_frame_base_address
+};
-void
-sparc_do_registers_info (int regnum, int all)
+static struct frame_id
+sparc_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
{
- sparc_print_registers_info (current_gdbarch, gdb_stdout, deprecated_selected_frame,
- regnum, all);
-}
+ CORE_ADDR sp;
-#define SPARC_F0_REGNUM FP0_REGNUM /* %f0 */
-#define SPARC_F1_REGNUM (FP0_REGNUM + 1)/* %f1 */
-#define SPARC_O0_REGNUM O0_REGNUM /* %o0 */
-#define SPARC_O1_REGNUM O1_REGNUM /* %o1 */
+ sp = frame_unwind_register_unsigned (next_frame, SPARC_SP_REGNUM);
+ return frame_id_build (sp, frame_pc_unwind (next_frame));
+}
+
-/* Push the arguments onto the stack and into the appropriate registers. */
+/* Extract from an array REGBUF containing the (raw) register state, a
+ function return value of TYPE, and copy that into VALBUF. */
-static CORE_ADDR
-sparc32_do_push_arguments (struct regcache *regcache, int nargs,
- struct value **args, CORE_ADDR sp)
+static void
+sparc32_extract_return_value (struct type *type, struct regcache *regcache,
+ void *valbuf)
{
- CORE_ADDR *addr;
- int size = 0;
- int i;
+ int len = TYPE_LENGTH (type);
+ char buf[8];
- /* Structure, union and quad-precision arguments are passed by
- reference. We allocate space for these arguments on the stack
- and record their addresses in an array. Array elements for
- arguments that are passed by value will be set to zero.*/
- addr = alloca (nargs * sizeof (CORE_ADDR));
+ gdb_assert (!sparc_structure_or_union_p (type));
+ gdb_assert (!(sparc_floating_p (type) && len == 16));
- for (i = nargs - 1; i >= 0; i--)
+ if (sparc_floating_p (type))
{
- struct type *type = VALUE_ENCLOSING_TYPE (args[i]);
- enum type_code code = TYPE_CODE (type);
- int len = TYPE_LENGTH (type);
+ /* Floating return values. */
+ regcache_cooked_read (regcache, SPARC_F0_REGNUM, buf);
+ if (len > 4)
+ regcache_cooked_read (regcache, SPARC_F1_REGNUM, buf + 4);
+ memcpy (valbuf, buf, len);
+ }
+ else
+ {
+ /* Integral and pointer return values. */
+ gdb_assert (sparc_integral_or_pointer_p (type));
- /* Push the contents of structure, union and quad-precision
- arguments on the stack. */
- if (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION || len > 8)
+ regcache_cooked_read (regcache, SPARC_O0_REGNUM, buf);
+ if (len > 4)
{
- /* Keep the stack doubleword aligned. */
- sp -= (len + 7) & ~7;
- write_memory (sp, VALUE_CONTENTS_ALL (args[i]), len);
- addr[i] = sp;
- size += 4;
+ regcache_cooked_read (regcache, SPARC_O1_REGNUM, buf + 4);
+ gdb_assert (len == 8);
+ memcpy (valbuf, buf, 8);
}
else
{
- addr[i] = 0;
- size += (len > 4) ? 8 : 4;
+ /* Just stripping off any unused bytes should preserve the
+ signed-ness just fine. */
+ memcpy (valbuf, buf + 4 - len, len);
}
}
+}
- /* The needed space for outgoing arguments should be a multiple of 4. */
- gdb_assert (size % 4 == 0);
+/* Write into the appropriate registers a function return value stored
+ in VALBUF of type TYPE. */
- /* Make sure we reserve space for the first six words of arguments
- in the stack frame, even if we don't need them. */
- if (size < 24)
- sp -= (24 - size);
+static void
+sparc32_store_return_value (struct type *type, struct regcache *regcache,
+ const void *valbuf)
+{
+ int len = TYPE_LENGTH (type);
+ char buf[8];
- /* Make sure we end up with a doubleword aligned stack in the end.
- Reserve an extra word if necessary in order to accomplish this. */
- if ((sp - size) % 8 == 0)
- sp -= 4;
+ gdb_assert (!sparc_structure_or_union_p (type));
+ gdb_assert (!(sparc_floating_p (type) && len == 16));
- /* Now push the arguments onto the stack. */
- for (i = nargs - 1; i >=0; i--)
+ if (sparc_floating_p (type))
+ {
+ /* Floating return values. */
+ memcpy (buf, valbuf, len);
+ regcache_cooked_write (regcache, SPARC_F0_REGNUM, buf);
+ if (len > 4)
+ regcache_cooked_write (regcache, SPARC_F1_REGNUM, buf + 4);
+ }
+ else
{
- char buf[8];
- int len;
+ /* Integral and pointer return values. */
+ gdb_assert (sparc_integral_or_pointer_p (type));
- if (addr[i])
+ if (len > 4)
{
- store_unsigned_integer (buf, 4, addr[i]);
- len = 4;
+ gdb_assert (len == 8);
+ memcpy (buf, valbuf, 8);
+ regcache_cooked_write (regcache, SPARC_O1_REGNUM, buf + 4);
}
else
{
- struct value *arg = args[i];
-
- len = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (arg));
-
- /* Expand signed and unsigned bytes and halfwords as needed. */
- if (len < 4)
- {
- arg = value_cast (builtin_type_long, arg);
- len = 4;
- }
- else if (len > 4 && len < 8)
- {
- arg = value_cast (builtin_type_long_long, arg);
- len = 4;
- }
-
- gdb_assert (len == 4 || len == 8);
- memcpy (buf, VALUE_CONTENTS_ALL (arg), len);
- }
-
- /* We always write the argument word on the stack. */
- sp -= len;
- write_memory (sp, buf, len);
-
- /* If this argument occupies one of the first 6 words, write it
- into the appropriate register too. */
- size -= len;
- if (size < 24)
- {
- int regnum = SPARC_O0_REGNUM + (size / 4);
-
- regcache_cooked_write (regcache, regnum, buf);
- if (len == 8 && size < 20)
- regcache_cooked_write (regcache, regnum + 1, buf + 4);
+ /* ??? Do we need to do any sign-extension here? */
+ memcpy (buf + 4 - len, valbuf, len);
}
+ regcache_cooked_write (regcache, SPARC_O0_REGNUM, buf);
}
+}
- /* Reserve space for the struct/union return value pointer. */
- sp -= 4;
+static enum return_value_convention
+sparc32_return_value (struct gdbarch *gdbarch, struct type *type,
+ struct regcache *regcache, void *readbuf,
+ const void *writebuf)
+{
+ if (sparc_structure_or_union_p (type)
+ || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16))
+ return RETURN_VALUE_STRUCT_CONVENTION;
- /* Stack should be doubleword aligned at this point. */
- gdb_assert (sp % 8 == 0);
+ if (readbuf)
+ sparc32_extract_return_value (type, regcache, readbuf);
+ if (writebuf)
+ sparc32_store_return_value (type, regcache, writebuf);
- /* Return the adjusted stack pointer. */
- return sp;
+ return RETURN_VALUE_REGISTER_CONVENTION;
}
-/* The SPARC passes the arguments on the stack; arguments smaller
- than an int are promoted to an int. The first 6 words worth of
- args are also passed in registers o0 - o5. */
-
-CORE_ADDR
-sparc32_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
- int struct_return, CORE_ADDR struct_addr)
-{
- sp = sparc32_do_push_arguments (current_regcache, nargs, args, sp);
-
- /* FIXME: kettenis/20030525: We don't let this function set the
- struct/union return pointer just yet. */
#if 0
- if (struct_return)
- {
- char buf[4];
+/* NOTE: cagney/2004-01-17: For the moment disable this method. The
+ architecture and CORE-gdb will need new code (and a replacement for
+ EXTRACT_STRUCT_VALUE_ADDRESS) before this can be made to work
+ robustly. Here is a possible function signature: */
+/* NOTE: cagney/2004-01-17: So far only the 32-bit SPARC ABI has been
+ identifed as having a way to robustly recover the address of a
+ struct-convention return-value (after the function has returned).
+ For all other ABIs so far examined, the calling convention makes no
+ guarenteed that the register containing the return-value will be
+ preserved and hence that the return-value's address can be
+ recovered. */
+/* Extract from REGCACHE, which contains the (raw) register state, the
+ address in which a function should return its structure value, as a
+ CORE_ADDR. */
- /* The space for the struct/union return value pointer has
- already been reserved. */
- store_unsigned_integer (buf, 4, struct_addr);
- write (sp, buf, 4);
- }
+static CORE_ADDR
+sparc32_extract_struct_value_address (struct regcache *regcache)
+{
+ ULONGEST sp;
- return sp;
-#else
- return sp + 4;
-#endif
+ regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp);
+ return read_memory_unsigned_integer (sp + 64, 4);
}
+#endif
-/* Extract from REGCACHE a function return value of type TYPE and copy
- that into VALBUF.
+static int
+sparc32_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type)
+{
+ return (sparc_structure_or_union_p (type)
+ || (sparc_floating_p (type) && TYPE_LENGTH (type) == 16));
+}
- Note that REGCACHE specifies the register values for the frame of
- the calling function. This means that we need to fetch the value
- form %o0 and %o1, which correspond to %i0 and %i1 in the frame of
- the called function. */
+
+/* The SPARC Architecture doesn't have hardware single-step support,
+ and most operating systems don't implement it either, so we provide
+ software single-step mechanism. */
-void
-sparc32_extract_return_value (struct type *type, struct regcache *regcache,
- void *valbuf)
+static CORE_ADDR
+sparc_analyze_control_transfer (CORE_ADDR pc, CORE_ADDR *npc)
{
- int len = TYPE_LENGTH (type);
- char buf[8];
+ unsigned long insn = sparc_fetch_instruction (pc);
+ int conditional_p = X_COND (insn) & 0x7;
+ int branch_p = 0;
+ long offset = 0; /* Must be signed for sign-extend. */
- if (TYPE_CODE (type) == TYPE_CODE_FLT && SPARC_HAS_FPU)
+ if (X_OP (insn) == 0 && X_OP2 (insn) == 3 && (insn & 0x1000000) == 0)
{
- if (len == 4 || len == 8)
- {
- regcache_cooked_read (regcache, SPARC_F0_REGNUM, buf);
- regcache_cooked_read (regcache, SPARC_F1_REGNUM, buf + 4);
- memcpy (valbuf, buf, len);
- return;
- }
- else
- internal_error (__FILE__, __LINE__, "\
-Cannot extract floating-point return value of %d bytes long.", len);
+ /* Branch on Integer Register with Prediction (BPr). */
+ branch_p = 1;
+ conditional_p = 1;
}
-
- if (len <= 4)
+ else if (X_OP (insn) == 0 && X_OP2 (insn) == 6)
{
- regcache_cooked_read (regcache, SPARC_O0_REGNUM, buf);
- memcpy (valbuf, buf + 4 - len, len);
+ /* Branch on Floating-Point Condition Codes (FBfcc). */
+ branch_p = 1;
+ offset = 4 * X_DISP22 (insn);
}
- else if (len <= 8)
+ else if (X_OP (insn) == 0 && X_OP2 (insn) == 5)
{
- regcache_cooked_read (regcache, SPARC_O0_REGNUM, buf);
- regcache_cooked_read (regcache, SPARC_O1_REGNUM, buf + 4);
- memcpy (valbuf, buf + 8 - len, len);
+ /* Branch on Floating-Point Condition Codes with Prediction
+ (FBPfcc). */
+ branch_p = 1;
+ offset = 4 * X_DISP19 (insn);
+ }
+ else if (X_OP (insn) == 0 && X_OP2 (insn) == 2)
+ {
+ /* Branch on Integer Condition Codes (Bicc). */
+ branch_p = 1;
+ offset = 4 * X_DISP22 (insn);
+ }
+ else if (X_OP (insn) == 0 && X_OP2 (insn) == 1)
+ {
+ /* Branch on Integer Condition Codes with Prediction (BPcc). */
+ branch_p = 1;
+ offset = 4 * X_DISP19 (insn);
}
- else
- internal_error (__FILE__, __LINE__,
- "Cannot extract return value of %d bytes long.", len);
-}
-/* Write into REGBUF a function return value VALBUF of type TYPE. */
+ /* FIXME: Handle DONE and RETRY instructions. */
-void
-sparc32_store_return_value (struct type *type, struct regcache *regcache,
- const void *valbuf)
-{
- int len = TYPE_LENGTH (type);
- char buf[8];
+ /* FIXME: Handle the Trap instruction. */
- if (TYPE_CODE (type) == TYPE_CODE_FLT && SPARC_HAS_FPU)
+ if (branch_p)
{
- const char *buf = valbuf;
-
- if (len == 4)
+ if (conditional_p)
{
- regcache_cooked_write (regcache, SPARC_F0_REGNUM, buf);
- return;
+ /* For conditional branches, return nPC + 4 iff the annul
+ bit is 1. */
+ return (X_A (insn) ? *npc + 4 : 0);
}
- else if (len == 8)
+ else
{
- regcache_cooked_write (regcache, SPARC_F0_REGNUM, buf);
- regcache_cooked_write (regcache, SPARC_F1_REGNUM, buf + 4);
- return;
+ /* For unconditional branches, return the target if its
+ specified condition is "always" and return nPC + 4 if the
+ condition is "never". If the annul bit is 1, set *NPC to
+ zero. */
+ if (X_COND (insn) == 0x0)
+ pc = *npc, offset = 4;
+ if (X_A (insn))
+ *npc = 0;
+
+ gdb_assert (offset != 0);
+ return pc + offset;
}
- else
- internal_error (__FILE__, __LINE__, "\
-Cannot extract floating-point return value of %d bytes long.", len);
}
- /* Add leading zeros to the value. */
- memset (buf, 0, sizeof buf);
-
- if (len <= 4)
- {
- memcpy (buf + 4 - len, valbuf, len);
- regcache_cooked_write (regcache, SPARC_O0_REGNUM, buf);
- }
- else if (len <= 8)
- {
- memcpy (buf + 8 - len, valbuf, len);
- regcache_cooked_write (regcache, SPARC_O0_REGNUM, buf);
- regcache_cooked_write (regcache, SPARC_O1_REGNUM, buf);
- }
- else
- internal_error (__FILE__, __LINE__,
- "Cannot extract return value of %d bytes long.", len);
+ return 0;
}
-/* Extract from REGCACHE the address in which a function should return
- its structure value. */
-
-CORE_ADDR
-sparc_extract_struct_value_address (struct regcache *regcache)
+void
+sparc_software_single_step (enum target_signal sig, int insert_breakpoints_p)
{
- ULONGEST addr;
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ static CORE_ADDR npc, nnpc;
+ static char npc_save[4], nnpc_save[4];
- regcache_cooked_read_unsigned (regcache, SPARC_O0_REGNUM, &addr);
- return addr;
-}
+ if (insert_breakpoints_p)
+ {
+ CORE_ADDR pc;
-/* FIXME: kettenis/2003/05/24: Still used for sparc64. */
+ pc = sparc_address_from_register (tdep->pc_regnum);
+ npc = sparc_address_from_register (tdep->npc_regnum);
-static void
-sparc_store_return_value (struct type *type, char *valbuf)
-{
- int regno;
- char buffer[MAX_REGISTER_SIZE];
+ /* Analyze the instruction at PC. */
+ nnpc = sparc_analyze_control_transfer (pc, &npc);
+ if (npc != 0)
+ target_insert_breakpoint (npc, npc_save);
+ if (nnpc != 0)
+ target_insert_breakpoint (nnpc, nnpc_save);
- if (TYPE_CODE (type) == TYPE_CODE_FLT && SPARC_HAS_FPU)
- /* Floating-point values are returned in the register pair */
- /* formed by %f0 and %f1 (doubles are, anyway). */
- regno = FP0_REGNUM;
+ /* Assert that we have set at least one breakpoint, and that
+ they're not set at the same spot. */
+ gdb_assert (npc != 0 || nnpc != 0);
+ gdb_assert (nnpc != npc);
+ }
else
- /* Other values are returned in register %o0. */
- regno = O0_REGNUM;
-
- /* Add leading zeros to the value. */
- if (TYPE_LENGTH (type) < DEPRECATED_REGISTER_RAW_SIZE (regno))
{
- memset (buffer, 0, DEPRECATED_REGISTER_RAW_SIZE (regno));
- memcpy (buffer + DEPRECATED_REGISTER_RAW_SIZE (regno) - TYPE_LENGTH (type), valbuf,
- TYPE_LENGTH (type));
- deprecated_write_register_gen (regno, buffer);
+ if (npc != 0)
+ target_remove_breakpoint (npc, npc_save);
+ if (nnpc != 0)
+ target_remove_breakpoint (nnpc, nnpc_save);
}
- else
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (regno), valbuf,
- TYPE_LENGTH (type));
}
-#ifndef CALL_DUMMY_CALL_OFFSET
-#define CALL_DUMMY_CALL_OFFSET \
- (gdbarch_tdep (current_gdbarch)->call_dummy_call_offset)
-#endif /* CALL_DUMMY_CALL_OFFSET */
-
-/* Insert the function address into a call dummy instruction sequence
- stored at DUMMY.
+static void
+sparc_write_pc (CORE_ADDR pc, ptid_t ptid)
+{
+ struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
- For structs and unions, if the function was compiled with Sun cc,
- it expects 'unimp' after the call. But gcc doesn't use that
- (twisted) convention. So leave a nop there for gcc
- (DEPRECATED_FIX_CALL_DUMMY can assume it is operating on a pristine
- CALL_DUMMY, not one that has already been customized for a
- different function). */
+ write_register_pid (tdep->pc_regnum, pc, ptid);
+ write_register_pid (tdep->npc_regnum, pc + 4, ptid);
+}
+
+/* Unglobalize NAME. */
-void
-sparc_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun,
- struct type *value_type, int using_gcc)
-{
- int i;
+char *
+sparc_stabs_unglobalize_name (char *name)
+{
+ /* The Sun compilers (Sun ONE Studio, Forte Developer, Sun WorkShop,
+ SunPRO) convert file static variables into global values, a
+ process known as globalization. In order to do this, the
+ compiler will create a unique prefix and prepend it to each file
+ static variable. For static variables within a function, this
+ globalization prefix is followed by the function name (nested
+ static variables within a function are supposed to generate a
+ warning message, and are left alone). The procedure is
+ documented in the Stabs Interface Manual, which is distrubuted
+ with the compilers, although version 4.0 of the manual seems to
+ be incorrect in some places, at least for SPARC. The
+ globalization prefix is encoded into an N_OPT stab, with the form
+ "G=<prefix>". The globalization prefix always seems to start
+ with a dollar sign '$'; a dot '.' is used as a seperator. So we
+ simply strip everything up until the last dot. */
- /* Store the relative adddress of the target function into the
- 'call' instruction. */
- store_unsigned_integer (dummy + CALL_DUMMY_CALL_OFFSET, 4,
- (0x40000000
- | (((fun - (pc + CALL_DUMMY_CALL_OFFSET)) >> 2)
- & 0x3fffffff)));
-
- /* If the called function returns an aggregate value, fill in the UNIMP
- instruction containing the size of the returned aggregate return value,
- which follows the call instruction.
- For details see the SPARC Architecture Manual Version 8, Appendix D.3.
-
- Adjust the call_dummy_breakpoint_offset for the bp_call_dummy breakpoint
- to the proper address in the call dummy, so that `finish' after a stop
- in a call dummy works.
-
- Tweeking current_gdbarch is not an optimal solution, but the call
- to sparc_fix_call_dummy is immediately followed by a call to
- call_function_by_hand, which is the only function where
- dummy_breakpoint_offset is actually used, if it is non-zero. */
- if (TYPE_CODE (value_type) == TYPE_CODE_STRUCT
- || TYPE_CODE (value_type) == TYPE_CODE_UNION)
+ if (name[0] == '$')
{
- store_unsigned_integer (dummy + CALL_DUMMY_CALL_OFFSET + 8, 4,
- TYPE_LENGTH (value_type) & 0x1fff);
- set_gdbarch_deprecated_call_dummy_breakpoint_offset (current_gdbarch, 0x30);
+ char *p = strrchr (name, '.');
+ if (p)
+ return p + 1;
}
- else
- set_gdbarch_deprecated_call_dummy_breakpoint_offset (current_gdbarch, 0x2c);
- if (!(GDB_TARGET_IS_SPARC64))
- {
- /* If this is not a simulator target, change the first four
- instructions of the call dummy to NOPs. Those instructions
- include a 'save' instruction and are designed to work around
- problems with register window flushing in the simulator. */
-
- if (strcmp (target_shortname, "sim") != 0)
- {
- for (i = 0; i < 4; i++)
- store_unsigned_integer (dummy + (i * 4), 4, 0x01000000);
- }
- }
+ return name;
}
+
-/*
- * Module "constructor" function.
- */
-
-static struct gdbarch * sparc_gdbarch_init (struct gdbarch_info info,
- struct gdbarch_list *arches);
-static void sparc_dump_tdep (struct gdbarch *, struct ui_file *);
-
-extern initialize_file_ftype _initialize_sparc_tdep; /* -Wmissing-prototypes */
+/* Return the appropriate register set for the core section identified
+ by SECT_NAME and SECT_SIZE. */
-void
-_initialize_sparc_tdep (void)
+const struct regset *
+sparc_regset_from_core_section (struct gdbarch *gdbarch,
+ const char *sect_name, size_t sect_size)
{
- /* Hook us into the gdbarch mechanism. */
- gdbarch_register (bfd_arch_sparc, sparc_gdbarch_init, sparc_dump_tdep);
-}
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-/* Compensate for stack bias. Note that we currently don't handle
- mixed 32/64 bit code. */
+ if (strcmp (sect_name, ".reg") == 0 && sect_size >= tdep->sizeof_gregset)
+ return tdep->gregset;
-static CORE_ADDR
-sparc64_read_sp (void)
-{
- CORE_ADDR sp = read_register (SP_REGNUM);
+ if (strcmp (sect_name, ".reg2") == 0 && sect_size >= tdep->sizeof_fpregset)
+ return tdep->fpregset;
- if (sp & 1)
- sp += 2047;
- return sp;
+ return NULL;
}
+
-static CORE_ADDR
-sparc64_read_fp (void)
+static struct gdbarch *
+sparc32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
{
- CORE_ADDR fp = read_register (DEPRECATED_FP_REGNUM);
+ struct gdbarch_tdep *tdep;
+ struct gdbarch *gdbarch;
- if (fp & 1)
- fp += 2047;
- return fp;
-}
+ /* If there is already a candidate, use it. */
+ arches = gdbarch_list_lookup_by_info (arches, &info);
+ if (arches != NULL)
+ return arches->gdbarch;
-static void
-sparc64_write_sp (CORE_ADDR val)
-{
- CORE_ADDR oldsp = read_register (SP_REGNUM);
- if (oldsp & 1)
- write_register (SP_REGNUM, val - 2047);
- else
- write_register (SP_REGNUM, val);
-}
+ /* Allocate space for the new architecture. */
+ tdep = XMALLOC (struct gdbarch_tdep);
+ gdbarch = gdbarch_alloc (&info, tdep);
-/* 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.
+ tdep->pc_regnum = SPARC32_PC_REGNUM;
+ tdep->npc_regnum = SPARC32_NPC_REGNUM;
+ tdep->gregset = NULL;
+ tdep->sizeof_gregset = 0;
+ tdep->fpregset = NULL;
+ tdep->sizeof_fpregset = 0;
+ tdep->plt_entry_size = 0;
+
+ set_gdbarch_long_double_bit (gdbarch, 128);
+ set_gdbarch_long_double_format (gdbarch, &floatformat_sparc_quad);
+
+ set_gdbarch_num_regs (gdbarch, SPARC32_NUM_REGS);
+ set_gdbarch_register_name (gdbarch, sparc32_register_name);
+ set_gdbarch_register_type (gdbarch, sparc32_register_type);
+ set_gdbarch_num_pseudo_regs (gdbarch, SPARC32_NUM_PSEUDO_REGS);
+ set_gdbarch_pseudo_register_read (gdbarch, sparc32_pseudo_register_read);
+ set_gdbarch_pseudo_register_write (gdbarch, sparc32_pseudo_register_write);
+
+ /* Register numbers of various important registers. */
+ set_gdbarch_sp_regnum (gdbarch, SPARC_SP_REGNUM); /* %sp */
+ set_gdbarch_pc_regnum (gdbarch, SPARC32_PC_REGNUM); /* %pc */
+ set_gdbarch_fp0_regnum (gdbarch, SPARC_F0_REGNUM); /* %f0 */
+
+ /* Call dummy code. */
+ set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
+ set_gdbarch_push_dummy_code (gdbarch, sparc32_push_dummy_code);
+ set_gdbarch_push_dummy_call (gdbarch, sparc32_push_dummy_call);
+
+ set_gdbarch_return_value (gdbarch, sparc32_return_value);
+ set_gdbarch_stabs_argument_has_addr
+ (gdbarch, sparc32_stabs_argument_has_addr);
+
+ set_gdbarch_skip_prologue (gdbarch, sparc32_skip_prologue);
+
+ /* Stack grows downward. */
+ set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- FIXME: Handle small structs (less than 16 bytes containing floats).
+ set_gdbarch_breakpoint_from_pc (gdbarch, sparc_breakpoint_from_pc);
- 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. */
+ set_gdbarch_frame_args_skip (gdbarch, 8);
-static CORE_ADDR
-sparc64_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
- int struct_return, CORE_ADDR struct_retaddr)
-{
- int i, j, register_counter = 0;
- CORE_ADDR tempsp;
- struct type *sparc_intreg_type =
- TYPE_LENGTH (builtin_type_long) == SPARC_INTREG_SIZE ?
- builtin_type_long : builtin_type_long_long;
+ set_gdbarch_print_insn (gdbarch, print_insn_sparc);
- sp = (sp & ~(((unsigned long) SPARC_INTREG_SIZE) - 1UL));
+ set_gdbarch_software_single_step (gdbarch, sparc_software_single_step);
+ set_gdbarch_write_pc (gdbarch, sparc_write_pc);
- /* Figure out how much space we'll need. */
- for (i = nargs - 1; i >= 0; i--)
- {
- int len = TYPE_LENGTH (check_typedef (VALUE_TYPE (args[i])));
- struct value *copyarg = args[i];
- int copylen = len;
+ set_gdbarch_unwind_dummy_id (gdbarch, sparc_unwind_dummy_id);
- if (copylen < SPARC_INTREG_SIZE)
- {
- copyarg = value_cast (sparc_intreg_type, copyarg);
- copylen = SPARC_INTREG_SIZE;
- }
- sp -= copylen;
- }
+ set_gdbarch_unwind_pc (gdbarch, sparc_unwind_pc);
- /* Round down. */
- sp = sp & ~7;
- tempsp = sp;
+ frame_base_set_default (gdbarch, &sparc32_frame_base);
- /* if STRUCT_RETURN, then first argument is the struct return location. */
- if (struct_return)
- write_register (O0_REGNUM + register_counter++, struct_retaddr);
+ /* Hook in ABI-specific overrides, if they have been registered. */
+ gdbarch_init_osabi (info, gdbarch);
- /* Now write the arguments onto the stack, while writing FP
- arguments into the FP registers, and other arguments into the
- first six 'O' registers. */
+ frame_unwind_append_sniffer (gdbarch, sparc32_frame_sniffer);
- for (i = 0; i < nargs; i++)
- {
- int len = TYPE_LENGTH (check_typedef (VALUE_TYPE (args[i])));
- struct value *copyarg = args[i];
- enum type_code typecode = TYPE_CODE (VALUE_TYPE (args[i]));
- int copylen = len;
-
- if (typecode == TYPE_CODE_INT ||
- typecode == TYPE_CODE_BOOL ||
- typecode == TYPE_CODE_CHAR ||
- typecode == TYPE_CODE_RANGE ||
- typecode == TYPE_CODE_ENUM)
- if (len < SPARC_INTREG_SIZE)
- {
- /* Small ints will all take up the size of one intreg on
- the stack. */
- copyarg = value_cast (sparc_intreg_type, copyarg);
- copylen = SPARC_INTREG_SIZE;
- }
-
- write_memory (tempsp, VALUE_CONTENTS (copyarg), copylen);
- tempsp += copylen;
-
- /* Corner case: Structs consisting of a single float member are floats.
- * FIXME! I don't know about structs containing multiple floats!
- * Structs containing mixed floats and ints are even more weird.
- */
-
-
-
- /* Separate float args from all other args. */
- if (typecode == TYPE_CODE_FLT && SPARC_HAS_FPU)
- {
- if (register_counter < 16)
- {
- /* This arg gets copied into a FP register. */
- int fpreg;
-
- switch (len) {
- case 4: /* Single-precision (float) */
- fpreg = FP0_REGNUM + 2 * register_counter + 1;
- register_counter += 1;
- break;
- case 8: /* Double-precision (double) */
- fpreg = FP0_REGNUM + 2 * register_counter;
- register_counter += 1;
- break;
- case 16: /* Quad-precision (long double) */
- fpreg = FP0_REGNUM + 2 * register_counter;
- register_counter += 2;
- break;
- default:
- internal_error (__FILE__, __LINE__, "bad switch");
- }
- deprecated_write_register_bytes (DEPRECATED_REGISTER_BYTE (fpreg),
- VALUE_CONTENTS (args[i]),
- len);
- }
- }
- else /* all other args go into the first six 'o' registers */
- {
- for (j = 0;
- j < len && register_counter < 6;
- j += SPARC_INTREG_SIZE)
- {
- int oreg = O0_REGNUM + register_counter;
+ /* If we have register sets, enable the generic core file support. */
+ if (tdep->gregset)
+ set_gdbarch_regset_from_core_section (gdbarch,
+ sparc_regset_from_core_section);
- deprecated_write_register_gen (oreg, VALUE_CONTENTS (copyarg) + j);
- register_counter += 1;
- }
- }
- }
- return sp;
+ return gdbarch;
}
+
+/* Helper functions for dealing with register windows. */
-/* Values <= 32 bytes are returned in o0-o3 (floating-point values are
- returned in f0-f3). */
-
-static void
-sp64_extract_return_value (struct type *type, char *regbuf, char *valbuf,
- int bitoffset)
+void
+sparc_supply_rwindow (struct regcache *regcache, CORE_ADDR sp, int regnum)
{
- int typelen = TYPE_LENGTH (type);
- int regsize = DEPRECATED_REGISTER_RAW_SIZE (O0_REGNUM);
+ int offset = 0;
+ char buf[8];
+ int i;
- if (TYPE_CODE (type) == TYPE_CODE_FLT && SPARC_HAS_FPU)
+ if (sp & 1)
{
- memcpy (valbuf, &regbuf[DEPRECATED_REGISTER_BYTE (FP0_REGNUM)], typelen);
- return;
- }
+ /* Registers are 64-bit. */
+ sp += BIAS;
- if (TYPE_CODE (type) != TYPE_CODE_STRUCT
- || (TYPE_LENGTH (type) > 32))
- {
- memcpy (valbuf,
- &regbuf[O0_REGNUM * regsize +
- (typelen >= regsize ? 0 : regsize - typelen)],
- typelen);
- return;
+ for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ {
+ if (regnum == i || regnum == -1)
+ {
+ target_read_memory (sp + ((i - SPARC_L0_REGNUM) * 8), buf, 8);
+ regcache_raw_supply (regcache, i, buf);
+ }
+ }
}
else
{
- char *o0 = &regbuf[O0_REGNUM * regsize];
- char *f0 = &regbuf[FP0_REGNUM * regsize];
- int x;
+ /* Registers are 32-bit. Toss any sign-extension of the stack
+ pointer. */
+ sp &= 0xffffffffUL;
- for (x = 0; x < TYPE_NFIELDS (type); x++)
+ /* Clear out the top half of the temporary buffer, and put the
+ register value in the bottom half if we're in 64-bit mode. */
+ if (gdbarch_ptr_bit (current_gdbarch) == 64)
{
- struct field *f = &TYPE_FIELDS (type)[x];
- /* FIXME: We may need to handle static fields here. */
- int whichreg = (f->loc.bitpos + bitoffset) / 32;
- int remainder = ((f->loc.bitpos + bitoffset) % 32) / 8;
- int where = (f->loc.bitpos + bitoffset) / 8;
- int size = TYPE_LENGTH (f->type);
- int typecode = TYPE_CODE (f->type);
-
- if (typecode == TYPE_CODE_STRUCT)
- {
- sp64_extract_return_value (f->type,
- regbuf,
- valbuf,
- bitoffset + f->loc.bitpos);
- }
- else if (typecode == TYPE_CODE_FLT && SPARC_HAS_FPU)
- {
- memcpy (valbuf + where, &f0[whichreg * 4] + remainder, size);
- }
- else
+ memset (buf, 0, 4);
+ offset = 4;
+ }
+
+ for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ {
+ if (regnum == i || regnum == -1)
{
- memcpy (valbuf + where, &o0[whichreg * 4] + remainder, size);
+ target_read_memory (sp + ((i - SPARC_L0_REGNUM) * 4),
+ buf + offset, 4);
+ regcache_raw_supply (regcache, i, buf);
}
}
}
}
-static void
-sparc64_extract_return_value (struct type *type, char *regbuf, char *valbuf)
-{
- sp64_extract_return_value (type, regbuf, valbuf, 0);
-}
-
-extern CORE_ADDR
-sparc32_stack_align (CORE_ADDR addr)
-{
- return ((addr + 7) & -8);
-}
-
-static CORE_ADDR
-sparc64_stack_align (CORE_ADDR addr)
-{
- return ((addr + 15) & -16);
-}
-
-extern void
-sparc_print_extra_frame_info (struct frame_info *fi)
+void
+sparc_collect_rwindow (const struct regcache *regcache,
+ CORE_ADDR sp, int regnum)
{
- if (fi && get_frame_extra_info (fi) && get_frame_extra_info (fi)->flat)
- printf_filtered (" flat, pc saved at 0x%s, fp saved at 0x%s\n",
- paddr_nz (get_frame_extra_info (fi)->pc_addr),
- paddr_nz (get_frame_extra_info (fi)->fp_addr));
-}
+ int offset = 0;
+ char buf[8];
+ int i;
-static const char *
-sparc32_register_name (int regno)
-{
- static char *register_names[] =
- { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7",
- "o0", "o1", "o2", "o3", "o4", "o5", "sp", "o7",
- "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",
- "i0", "i1", "i2", "i3", "i4", "i5", "fp", "i7",
-
- "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
- "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
- "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
- "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31",
-
- "y", "psr", "wim", "tbr", "pc", "npc", "fpsr", "cpsr"
- };
-
- if (regno < 0 ||
- regno >= (sizeof (register_names) / sizeof (register_names[0])))
- return NULL;
- else
- return register_names[regno];
-}
+ if (sp & 1)
+ {
+ /* Registers are 64-bit. */
+ sp += BIAS;
-static const 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;
+ for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ {
+ if (regnum == -1 || regnum == SPARC_SP_REGNUM || regnum == i)
+ {
+ regcache_raw_collect (regcache, i, buf);
+ target_write_memory (sp + ((i - SPARC_L0_REGNUM) * 8), buf, 8);
+ }
+ }
+ }
else
- return register_names[regno];
-}
-
-static 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.
+ /* Registers are 32-bit. Toss any sign-extension of the stack
+ pointer. */
+ sp &= 0xffffffffUL;
- 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. */
+ /* Only use the bottom half if we're in 64-bit mode. */
+ if (gdbarch_ptr_bit (current_gdbarch) == 64)
+ offset = 4;
- if (DEPRECATED_CALL_DUMMY_ADDRESS_P ())
- write_register (O7_REGNUM, DEPRECATED_CALL_DUMMY_ADDRESS () - 8);
- else
- write_register (O7_REGNUM, entry_point_address () - 8);
+ for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ {
+ if (regnum == -1 || regnum == SPARC_SP_REGNUM || regnum == i)
+ {
+ regcache_raw_collect (regcache, i, buf);
+ target_write_memory (sp + ((i - SPARC_L0_REGNUM) * 4),
+ buf + offset, 4);
+ }
+ }
}
-
- return sp;
}
-/* Should call_function allocate stack space for a struct return? */
+/* Helper functions for dealing with register sets. */
-static int
-sparc64_use_struct_convention (int gcc_p, struct type *type)
+void
+sparc32_supply_gregset (const struct sparc_gregset *gregset,
+ struct regcache *regcache,
+ int regnum, const void *gregs)
{
- return (TYPE_LENGTH (type) > 32);
-}
+ const char *regs = gregs;
+ int i;
-/* 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"?
+ if (regnum == SPARC32_PSR_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC32_PSR_REGNUM,
+ regs + gregset->r_psr_offset);
- MVS: That's the offset from where the sp is now, to where the
- subroutine is gonna expect to find the struct return address. */
+ if (regnum == SPARC32_PC_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC32_PC_REGNUM,
+ regs + gregset->r_pc_offset);
-static void
-sparc32_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
-{
- char *val;
- CORE_ADDR o7;
+ if (regnum == SPARC32_NPC_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC32_NPC_REGNUM,
+ regs + gregset->r_npc_offset);
- 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 (regnum == SPARC32_Y_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC32_Y_REGNUM,
+ regs + gregset->r_y_offset);
- 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. */
+ if (regnum == SPARC_G0_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC_G0_REGNUM, NULL);
- 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)
+ if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1)
{
- /* 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. */
+ int offset = gregset->r_g1_offset;
- write_register (O7_REGNUM, read_register (O7_REGNUM) - 4);
+ for (i = SPARC_G1_REGNUM; i <= SPARC_O7_REGNUM; i++)
+ {
+ if (regnum == i || regnum == -1)
+ regcache_raw_supply (regcache, i, regs + offset);
+ offset += 4;
+ }
}
-#endif
-}
-/* Default target data type for register REGNO. */
-
-static struct type *
-sparc32_register_virtual_type (int regno)
-{
- if (regno == PC_REGNUM ||
- regno == DEPRECATED_FP_REGNUM ||
- regno == SP_REGNUM)
- return builtin_type_unsigned_int;
- if (regno < 32)
- return builtin_type_int;
- if (regno < 64)
- return builtin_type_float;
- return builtin_type_int;
-}
-
-static struct type *
-sparc64_register_virtual_type (int regno)
-{
- if (regno == PC_REGNUM ||
- regno == DEPRECATED_FP_REGNUM ||
- regno == SP_REGNUM)
- return builtin_type_unsigned_long_long;
- if (regno < 32)
- return builtin_type_long_long;
- if (regno < 64)
- return builtin_type_float;
- if (regno < 80)
- return builtin_type_double;
- return builtin_type_long_long;
-}
-
-/* Number of bytes of storage in the actual machine representation for
- register REGNO. */
-
-static int
-sparc32_register_size (int regno)
-{
- return 4;
-}
-
-static int
-sparc64_register_size (int regno)
-{
- return (regno < 32 ? 8 : regno < 64 ? 4 : 8);
-}
-
-/* Index within the `registers' buffer of the first byte of the space
- for register REGNO. */
-
-static int
-sparc32_register_byte (int regno)
-{
- return (regno * 4);
-}
-
-static int
-sparc64_register_byte (int regno)
-{
- if (regno < 32)
- return regno * 8;
- else if (regno < 64)
- return 32 * 8 + (regno - 32) * 4;
- else if (regno < 80)
- return 32 * 8 + 32 * 4 + (regno - 64) * 8;
- else
- return 64 * 8 + (regno - 80) * 8;
-}
-
-/* Immediately after a function call, return the saved pc.
- Can't go through the frames for this because on some machines
- the new frame is not set up until the new function executes
- some instructions. */
-
-static CORE_ADDR
-sparc_saved_pc_after_call (struct frame_info *fi)
-{
- return sparc_pc_adjust (read_register (RP_REGNUM));
-}
+ if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1)
+ {
+ /* Not all of the register set variants include Locals and
+ Inputs. For those that don't, we read them off the stack. */
+ if (gregset->r_l0_offset == -1)
+ {
+ ULONGEST sp;
-/* Init saved regs: nothing to do, just a place-holder function. */
+ regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp);
+ sparc_supply_rwindow (regcache, sp, regnum);
+ }
+ else
+ {
+ int offset = gregset->r_l0_offset;
-static void
-sparc_frame_init_saved_regs (struct frame_info *fi_ignored)
-{ /* no-op */
+ for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ {
+ if (regnum == i || regnum == -1)
+ regcache_raw_supply (regcache, i, regs + offset);
+ offset += 4;
+ }
+ }
+ }
}
-/* 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)
+void
+sparc32_collect_gregset (const struct sparc_gregset *gregset,
+ const struct regcache *regcache,
+ int regnum, void *gregs)
{
- if (CALL_DUMMY_LOCATION == ON_STACK)
- sparc_fix_call_dummy (dummy, pc, fun, type, gcc_p);
-}
+ char *regs = gregs;
+ int i;
-/* DEPRECATED_CALL_DUMMY_ADDRESS: fetch the breakpoint address for a
- call dummy. */
+ if (regnum == SPARC32_PSR_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC32_PSR_REGNUM,
+ regs + gregset->r_psr_offset);
-static CORE_ADDR
-sparc_call_dummy_address (void)
-{
- return (DEPRECATED_CALL_DUMMY_START_OFFSET) + DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET;
-}
+ if (regnum == SPARC32_PC_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC32_PC_REGNUM,
+ regs + gregset->r_pc_offset);
-/* Supply the Y register number to those that need it. */
+ if (regnum == SPARC32_NPC_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC32_NPC_REGNUM,
+ regs + gregset->r_npc_offset);
-int
-sparc_y_regnum (void)
-{
- return gdbarch_tdep (current_gdbarch)->y_regnum;
-}
+ if (regnum == SPARC32_Y_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC32_Y_REGNUM,
+ regs + gregset->r_y_offset);
-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);
-}
+ if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1)
+ {
+ int offset = gregset->r_g1_offset;
-int
-sparc_intreg_size (void)
-{
- return SPARC_INTREG_SIZE;
-}
+ /* %g0 is always zero. */
+ for (i = SPARC_G1_REGNUM; i <= SPARC_O7_REGNUM; i++)
+ {
+ if (regnum == i || regnum == -1)
+ regcache_raw_collect (regcache, i, regs + offset);
+ offset += 4;
+ }
+ }
-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;
-}
+ if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1)
+ {
+ /* Not all of the register set variants include Locals and
+ Inputs. For those that don't, we read them off the stack. */
+ if (gregset->r_l0_offset != -1)
+ {
+ int offset = gregset->r_l0_offset;
-/* Get the ith function argument for the current function. */
-static CORE_ADDR
-sparc_fetch_pointer_argument (struct frame_info *frame, int argi,
- struct type *type)
-{
- CORE_ADDR addr;
- get_frame_register (frame, O0_REGNUM + argi, &addr);
- return addr;
+ for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ {
+ if (regnum == i || regnum == -1)
+ regcache_raw_collect (regcache, i, regs + offset);
+ offset += 4;
+ }
+ }
+ }
}
-/*
- * 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)
+void
+sparc32_supply_fpregset (struct regcache *regcache,
+ int regnum, const void *fpregs)
{
- struct gdbarch *gdbarch;
- struct gdbarch_tdep *tdep;
+ const char *regs = fpregs;
+ int i;
- static LONGEST call_dummy_32[] =
- { 0xbc100001, 0x9de38000, 0xbc100002, 0xbe100003,
- 0xda03a058, 0xd803a054, 0xd603a050, 0xd403a04c,
- 0xd203a048, 0x40000000, 0xd003a044, 0x01000000,
- 0x91d02001, 0x01000000
- };
- static LONGEST call_dummy_64[] =
- { 0x9de3bec0fd3fa7f7LL, 0xf93fa7eff53fa7e7LL,
- 0xf13fa7dfed3fa7d7LL, 0xe93fa7cfe53fa7c7LL,
- 0xe13fa7bfdd3fa7b7LL, 0xd93fa7afd53fa7a7LL,
- 0xd13fa79fcd3fa797LL, 0xc93fa78fc53fa787LL,
- 0xc13fa77fcc3fa777LL, 0xc83fa76fc43fa767LL,
- 0xc03fa75ffc3fa757LL, 0xf83fa74ff43fa747LL,
- 0xf03fa73f01000000LL, 0x0100000001000000LL,
- 0x0100000091580000LL, 0xd027a72b93500000LL,
- 0xd027a72791480000LL, 0xd027a72391400000LL,
- 0xd027a71fda5ba8a7LL, 0xd85ba89fd65ba897LL,
- 0xd45ba88fd25ba887LL, 0x9fc02000d05ba87fLL,
- 0x0100000091d02001LL, 0x0100000001000000LL
- };
- static LONGEST call_dummy_nil[] = {0};
-
- /* Try to determine the OS ABI of the object we are loading. */
-
- if (info.abfd != NULL
- && info.osabi == GDB_OSABI_UNKNOWN)
+ for (i = 0; i < 32; i++)
{
- /* If it's an ELF file, assume it's Solaris. */
- if (bfd_get_flavour (info.abfd) == bfd_target_elf_flavour)
- info.osabi = GDB_OSABI_SOLARIS;
+ if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1)
+ regcache_raw_supply (regcache, SPARC_F0_REGNUM + i, regs + (i * 4));
}
- /* First see if there is already a gdbarch that can satisfy the request. */
- arches = gdbarch_list_lookup_by_info (arches, &info);
- if (arches != NULL)
- return arches->gdbarch;
-
- /* None found: is the request for a sparc architecture? */
- if (info.bfd_arch_info->arch != bfd_arch_sparc)
- return NULL; /* No; then it's not for us. */
-
- /* Yes: create a new gdbarch for the specified machine type. */
- tdep = (struct gdbarch_tdep *) xmalloc (sizeof (struct gdbarch_tdep));
- gdbarch = gdbarch_alloc (&info, tdep);
-
- /* First set settings that are common for all sparc architectures. */
- set_gdbarch_believe_pcc_promotion (gdbarch, 1);
- set_gdbarch_breakpoint_from_pc (gdbarch, sparc_breakpoint_from_pc);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- set_gdbarch_double_bit (gdbarch, 8 * TARGET_CHAR_BIT);
- set_gdbarch_extract_struct_value_address (gdbarch,
- sparc_extract_struct_value_address);
- set_gdbarch_deprecated_fix_call_dummy (gdbarch, sparc_gdbarch_fix_call_dummy);
- set_gdbarch_float_bit (gdbarch, 4 * TARGET_CHAR_BIT);
- set_gdbarch_deprecated_fp_regnum (gdbarch, SPARC_FP_REGNUM);
- set_gdbarch_fp0_regnum (gdbarch, SPARC_FP0_REGNUM);
- set_gdbarch_deprecated_frame_chain (gdbarch, sparc_frame_chain);
- set_gdbarch_deprecated_frame_init_saved_regs (gdbarch, sparc_frame_init_saved_regs);
- set_gdbarch_deprecated_frame_saved_pc (gdbarch, sparc_frame_saved_pc);
- set_gdbarch_frameless_function_invocation (gdbarch,
- frameless_look_for_prologue);
- set_gdbarch_deprecated_get_saved_register (gdbarch, sparc_get_saved_register);
- set_gdbarch_deprecated_init_extra_frame_info (gdbarch, sparc_init_extra_frame_info);
- set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- set_gdbarch_int_bit (gdbarch, 4 * TARGET_CHAR_BIT);
- set_gdbarch_long_double_bit (gdbarch, 16 * TARGET_CHAR_BIT);
- set_gdbarch_long_long_bit (gdbarch, 8 * TARGET_CHAR_BIT);
- set_gdbarch_deprecated_max_register_raw_size (gdbarch, 8);
- set_gdbarch_deprecated_max_register_virtual_size (gdbarch, 8);
- set_gdbarch_deprecated_pop_frame (gdbarch, sparc_pop_frame);
- set_gdbarch_deprecated_push_return_address (gdbarch, sparc_push_return_address);
- set_gdbarch_deprecated_push_dummy_frame (gdbarch, sparc_push_dummy_frame);
- set_gdbarch_deprecated_reg_struct_has_addr
- (gdbarch, sparc_reg_struct_has_addr);
- set_gdbarch_return_value_on_stack (gdbarch, sparc_return_value_on_stack);
- set_gdbarch_deprecated_saved_pc_after_call (gdbarch, sparc_saved_pc_after_call);
- set_gdbarch_prologue_frameless_p (gdbarch, sparc_prologue_frameless_p);
- set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
- set_gdbarch_skip_prologue (gdbarch, sparc_skip_prologue);
- set_gdbarch_sp_regnum (gdbarch, SPARC_SP_REGNUM);
- set_gdbarch_deprecated_use_generic_dummy_frames (gdbarch, 0);
- set_gdbarch_write_pc (gdbarch, generic_target_write_pc);
-
- /* Helper for function argument information. */
- set_gdbarch_fetch_pointer_argument (gdbarch, sparc_fetch_pointer_argument);
-
- /*
- * Settings that depend only on 32/64 bit word size
- */
-
- switch (info.bfd_arch_info->mach)
- {
- case bfd_mach_sparc:
- case bfd_mach_sparc_v8plus:
- case bfd_mach_sparc_v8plusa:
- /* 32-bit machine types: */
-
-#ifdef SPARC32_CALL_DUMMY_ON_STACK
- set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_on_stack);
- set_gdbarch_deprecated_call_dummy_address (gdbarch, sparc_call_dummy_address);
- set_gdbarch_deprecated_call_dummy_breakpoint_offset (gdbarch, 0x30);
- set_gdbarch_deprecated_call_dummy_length (gdbarch, 0x38);
-
- /* NOTE: cagney/2003-05-01: Using the just added push_dummy_code
- architecture method, it is now possible to implement a
- generic dummy frames based inferior function call that stores
- the breakpoint (and struct info) on the stack. Further, by
- treating a SIGSEG at a breakpoint as equivalent to a SIGTRAP
- it is even possible to make this work when the stack is
- no-execute.
-
- NOTE: cagney/2002-04-26: Based from info posted by Peter
- Schauer around Oct '99. Briefly, due to aspects of the SPARC
- ABI, it isn't possible to use ON_STACK with a strictly
- compliant compiler.
-
- Peter Schauer writes ...
-
- No, any call from GDB to a user function returning a
- struct/union will fail miserably. Try this:
-
- *NOINDENT*
- struct x
- {
- int a[4];
- };
-
- struct x gx;
-
- struct x
- sret ()
- {
- return gx;
- }
-
- main ()
- {
- int i;
- for (i = 0; i < 4; i++)
- gx.a[i] = i + 1;
- gx = sret ();
- }
- *INDENT*
-
- Set a breakpoint at the gx = sret () statement, run to it and
- issue a `print sret()'. It will not succed with your
- approach, and I doubt that continuing the program will work
- as well.
-
- For details of the ABI see the Sparc Architecture Manual. I
- have Version 8 (Prentice Hall ISBN 0-13-825001-4) and the
- calling conventions for functions returning aggregate values
- are explained in Appendix D.3. */
-
- set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
- set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_32);
-#else
- set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_at_entry_point);
- set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_nil);
-#endif
- set_gdbarch_deprecated_call_dummy_stack_adjust (gdbarch, 68);
- set_gdbarch_frame_args_skip (gdbarch, 68);
- set_gdbarch_function_start_offset (gdbarch, 0);
- set_gdbarch_long_bit (gdbarch, 4 * TARGET_CHAR_BIT);
- set_gdbarch_deprecated_npc_regnum (gdbarch, SPARC32_NPC_REGNUM);
- set_gdbarch_pc_regnum (gdbarch, SPARC32_PC_REGNUM);
- set_gdbarch_ptr_bit (gdbarch, 4 * TARGET_CHAR_BIT);
- set_gdbarch_deprecated_push_arguments (gdbarch, sparc32_push_arguments);
-
- set_gdbarch_deprecated_register_byte (gdbarch, sparc32_register_byte);
- set_gdbarch_deprecated_register_raw_size (gdbarch, sparc32_register_size);
- set_gdbarch_deprecated_register_size (gdbarch, 4);
- set_gdbarch_deprecated_register_virtual_size (gdbarch, sparc32_register_size);
- set_gdbarch_deprecated_register_virtual_type (gdbarch, sparc32_register_virtual_type);
-#ifdef SPARC32_CALL_DUMMY_ON_STACK
- set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, sizeof (call_dummy_32));
-#else
- set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, 0);
-#endif
- set_gdbarch_deprecated_stack_align (gdbarch, sparc32_stack_align);
- set_gdbarch_deprecated_extra_stack_alignment_needed (gdbarch, 1);
- set_gdbarch_deprecated_store_struct_return (gdbarch, sparc32_store_struct_return);
- set_gdbarch_use_struct_convention (gdbarch,
- generic_use_struct_convention);
- set_gdbarch_deprecated_dummy_write_sp (gdbarch, deprecated_write_sp);
- tdep->y_regnum = SPARC32_Y_REGNUM;
- tdep->fp_max_regnum = SPARC_FP0_REGNUM + 32;
- tdep->intreg_size = 4;
- tdep->reg_save_offset = 0x60;
- tdep->call_dummy_call_offset = 0x24;
- break;
-
- case bfd_mach_sparc_v9:
- case bfd_mach_sparc_v9a:
- /* 64-bit machine types: */
- default: /* Any new machine type is likely to be 64-bit. */
-
-#ifdef SPARC64_CALL_DUMMY_ON_STACK
- set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_on_stack);
- set_gdbarch_deprecated_call_dummy_address (gdbarch, sparc_call_dummy_address);
- set_gdbarch_deprecated_call_dummy_breakpoint_offset (gdbarch, 8 * 4);
- set_gdbarch_deprecated_call_dummy_length (gdbarch, 192);
- set_gdbarch_call_dummy_location (gdbarch, ON_STACK);
- set_gdbarch_deprecated_call_dummy_start_offset (gdbarch, 148);
- set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_64);
-#else
- set_gdbarch_deprecated_pc_in_call_dummy (gdbarch, deprecated_pc_in_call_dummy_at_entry_point);
- set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_nil);
-#endif
- set_gdbarch_deprecated_call_dummy_stack_adjust (gdbarch, 128);
- set_gdbarch_frame_args_skip (gdbarch, 136);
- set_gdbarch_function_start_offset (gdbarch, 0);
- set_gdbarch_long_bit (gdbarch, 8 * TARGET_CHAR_BIT);
- set_gdbarch_deprecated_npc_regnum (gdbarch, SPARC64_NPC_REGNUM);
- set_gdbarch_pc_regnum (gdbarch, SPARC64_PC_REGNUM);
- set_gdbarch_ptr_bit (gdbarch, 8 * TARGET_CHAR_BIT);
- set_gdbarch_deprecated_push_arguments (gdbarch, sparc64_push_arguments);
- /* NOTE different for at_entry */
- set_gdbarch_deprecated_target_read_fp (gdbarch, sparc64_read_fp);
- set_gdbarch_read_sp (gdbarch, sparc64_read_sp);
- /* Some of the registers aren't 64 bits, but it's a lot simpler just
- to assume they all are (since most of them are). */
- set_gdbarch_deprecated_register_byte (gdbarch, sparc64_register_byte);
- set_gdbarch_deprecated_register_raw_size (gdbarch, sparc64_register_size);
- set_gdbarch_deprecated_register_size (gdbarch, 8);
- set_gdbarch_deprecated_register_virtual_size (gdbarch, sparc64_register_size);
- set_gdbarch_deprecated_register_virtual_type (gdbarch, sparc64_register_virtual_type);
-#ifdef SPARC64_CALL_DUMMY_ON_STACK
- set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, sizeof (call_dummy_64));
-#else
- set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, 0);
-#endif
- set_gdbarch_deprecated_stack_align (gdbarch, sparc64_stack_align);
- set_gdbarch_deprecated_extra_stack_alignment_needed (gdbarch, 1);
- set_gdbarch_deprecated_store_struct_return (gdbarch, sparc64_store_struct_return);
- set_gdbarch_use_struct_convention (gdbarch,
- sparc64_use_struct_convention);
- set_gdbarch_deprecated_dummy_write_sp (gdbarch, sparc64_write_sp);
- tdep->y_regnum = SPARC64_Y_REGNUM;
- tdep->fp_max_regnum = SPARC_FP0_REGNUM + 48;
- tdep->intreg_size = 8;
- tdep->reg_save_offset = 0x90;
- tdep->call_dummy_call_offset = 148 + 4 * 5;
- break;
- }
+ if (regnum == SPARC32_FSR_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC32_FSR_REGNUM, regs + (32 * 4) + 4);
+}
- /*
- * Settings that vary per-architecture:
- */
+void
+sparc32_collect_fpregset (const struct regcache *regcache,
+ int regnum, void *fpregs)
+{
+ char *regs = fpregs;
+ int i;
- switch (info.bfd_arch_info->mach)
+ for (i = 0; i < 32; i++)
{
- case bfd_mach_sparc:
- set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value);
- set_gdbarch_store_return_value (gdbarch, sparc32_store_return_value);
- set_gdbarch_num_regs (gdbarch, 72);
- set_gdbarch_deprecated_register_bytes (gdbarch, 32*4 + 32*4 + 8*4);
- set_gdbarch_register_name (gdbarch, sparc32_register_name);
- tdep->fp_register_bytes = 32 * 4;
- tdep->print_insn_mach = bfd_mach_sparc;
- break;
- case bfd_mach_sparc_v8plus:
- set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value);
- set_gdbarch_store_return_value (gdbarch, sparc32_store_return_value);
- set_gdbarch_num_regs (gdbarch, 72);
- set_gdbarch_deprecated_register_bytes (gdbarch, 32*4 + 32*4 + 8*4);
- set_gdbarch_register_name (gdbarch, sparc32_register_name);
- tdep->print_insn_mach = bfd_mach_sparc;
- tdep->fp_register_bytes = 32 * 4;
- break;
- case bfd_mach_sparc_v8plusa:
- set_gdbarch_extract_return_value (gdbarch, sparc32_extract_return_value);
- set_gdbarch_store_return_value (gdbarch, sparc32_store_return_value);
- set_gdbarch_num_regs (gdbarch, 72);
- set_gdbarch_deprecated_register_bytes (gdbarch, 32*4 + 32*4 + 8*4);
- set_gdbarch_register_name (gdbarch, sparc32_register_name);
- tdep->fp_register_bytes = 32 * 4;
- tdep->print_insn_mach = bfd_mach_sparc;
- break;
- case bfd_mach_sparc_v9:
- set_gdbarch_deprecated_extract_return_value (gdbarch, sparc64_extract_return_value);
- set_gdbarch_num_regs (gdbarch, 125);
- set_gdbarch_deprecated_register_bytes (gdbarch, 32*8 + 32*8 + 45*8);
- set_gdbarch_register_name (gdbarch, sparc64_register_name);
- set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value);
- tdep->fp_register_bytes = 64 * 4;
- tdep->print_insn_mach = bfd_mach_sparc_v9a;
- break;
- case bfd_mach_sparc_v9a:
- set_gdbarch_deprecated_extract_return_value (gdbarch, sparc64_extract_return_value);
- set_gdbarch_num_regs (gdbarch, 125);
- set_gdbarch_deprecated_register_bytes (gdbarch, 32*8 + 32*8 + 45*8);
- set_gdbarch_register_name (gdbarch, sparc64_register_name);
- set_gdbarch_deprecated_store_return_value (gdbarch, sparc_store_return_value);
- tdep->fp_register_bytes = 64 * 4;
- tdep->print_insn_mach = bfd_mach_sparc_v9a;
- break;
+ if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1)
+ regcache_raw_collect (regcache, SPARC_F0_REGNUM + i, regs + (i * 4));
}
- set_gdbarch_print_insn (gdbarch, print_insn_sparc);
-
- /* Hook in OS ABI-specific overrides, if they have been registered. */
- gdbarch_init_osabi (info, gdbarch);
-
- return gdbarch;
+ if (regnum == SPARC32_FSR_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC32_FSR_REGNUM, regs + (32 * 4) + 4);
}
+
-static void
-sparc_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
+/* SunOS 4. */
+
+/* From <machine/reg.h>. */
+const struct sparc_gregset sparc32_sunos4_gregset =
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
+ 0 * 4, /* %psr */
+ 1 * 4, /* %pc */
+ 2 * 4, /* %npc */
+ 3 * 4, /* %y */
+ -1, /* %wim */
+ -1, /* %tbr */
+ 4 * 4, /* %g1 */
+ -1 /* %l0 */
+};
+
- if (tdep == NULL)
- return;
+/* Provide a prototype to silence -Wmissing-prototypes. */
+void _initialize_sparc_tdep (void);
- fprintf_unfiltered (file, "sparc_dump_tdep: fp_register_bytes = %d\n",
- tdep->fp_register_bytes);
- fprintf_unfiltered (file, "sparc_dump_tdep: y_regnum = %d\n",
- tdep->y_regnum);
- fprintf_unfiltered (file, "sparc_dump_tdep: fp_max_regnum = %d\n",
- tdep->fp_max_regnum);
- fprintf_unfiltered (file, "sparc_dump_tdep: intreg_size = %d\n",
- tdep->intreg_size);
- fprintf_unfiltered (file, "sparc_dump_tdep: reg_save_offset = %d\n",
- tdep->reg_save_offset);
- fprintf_unfiltered (file, "sparc_dump_tdep: call_dummy_call_offset = %d\n",
- tdep->call_dummy_call_offset);
- fprintf_unfiltered (file, "sparc_dump_tdep: print_insn_match = %d\n",
- tdep->print_insn_mach);
+void
+_initialize_sparc_tdep (void)
+{
+ register_gdbarch_init (bfd_arch_sparc, sparc32_gdbarch_init);
}
diff --git a/gdb/sparc-tdep.h b/gdb/sparc-tdep.h
index 7c119b407ab..00c41360df0 100644
--- a/gdb/sparc-tdep.h
+++ b/gdb/sparc-tdep.h
@@ -1,6 +1,6 @@
-/* Target-dependent code for the SPARC for GDB, the GNU debugger.
+/* Target-dependent code for SPARC.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -19,4 +19,183 @@
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-extern int sparc_y_regnum (void);
+#ifndef SPARC_TDEP_H
+#define SPARC_TDEP_H 1
+
+struct frame_info;
+struct gdbarch;
+struct regcache;
+struct regset;
+struct trad_frame_saved_reg;
+
+/* Register offsets for the general-purpose register set. */
+
+struct sparc_gregset
+{
+ int r_psr_offset;
+ int r_pc_offset;
+ int r_npc_offset;
+ int r_y_offset;
+ int r_wim_offset;
+ int r_tbr_offset;
+ int r_g1_offset;
+ int r_l0_offset;
+ int r_y_size;
+};
+
+/* SPARC architecture-specific information. */
+
+struct gdbarch_tdep
+{
+ /* Register numbers for the PN and nPC registers. The definitions
+ for (64-bit) UltraSPARC differ from the (32-bit) SPARC
+ definitions. */
+ int pc_regnum;
+ int npc_regnum;
+
+ /* Register sets. */
+ struct regset *gregset;
+ size_t sizeof_gregset;
+ struct regset *fpregset;
+ size_t sizeof_fpregset;
+
+ /* Offset of saved PC in jmp_buf. */
+ int jb_pc_offset;
+
+ /* Size of an Procedure Linkage Table (PLT) entry, 0 if we shouldn't
+ treat the PLT special when doing prologue analysis. */
+ size_t plt_entry_size;
+};
+
+/* Register numbers of various important registers. */
+
+enum sparc_regnum
+{
+ SPARC_G0_REGNUM, /* %g0 */
+ SPARC_G1_REGNUM,
+ SPARC_G2_REGNUM,
+ SPARC_G3_REGNUM,
+ SPARC_G4_REGNUM,
+ SPARC_G5_REGNUM,
+ SPARC_G6_REGNUM,
+ SPARC_G7_REGNUM, /* %g7 */
+ SPARC_O0_REGNUM, /* %o0 */
+ SPARC_O1_REGNUM,
+ SPARC_O2_REGNUM,
+ SPARC_O3_REGNUM,
+ SPARC_O4_REGNUM,
+ SPARC_O5_REGNUM,
+ SPARC_SP_REGNUM, /* %sp (%o6) */
+ SPARC_O7_REGNUM, /* %o7 */
+ SPARC_L0_REGNUM, /* %l0 */
+ SPARC_L1_REGNUM,
+ SPARC_L2_REGNUM,
+ SPARC_L3_REGNUM,
+ SPARC_L4_REGNUM,
+ SPARC_L5_REGNUM,
+ SPARC_L6_REGNUM,
+ SPARC_L7_REGNUM, /* %l7 */
+ SPARC_I0_REGNUM, /* %i0 */
+ SPARC_I1_REGNUM,
+ SPARC_I2_REGNUM,
+ SPARC_I3_REGNUM,
+ SPARC_I4_REGNUM,
+ SPARC_I5_REGNUM,
+ SPARC_FP_REGNUM, /* %fp (%i6) */
+ SPARC_I7_REGNUM, /* %i7 */
+ SPARC_F0_REGNUM, /* %f0 */
+ SPARC_F1_REGNUM,
+ SPARC_F31_REGNUM /* %f31 */
+ = SPARC_F0_REGNUM + 31
+};
+
+enum sparc32_regnum
+{
+ SPARC32_Y_REGNUM /* %y */
+ = SPARC_F31_REGNUM + 1,
+ SPARC32_PSR_REGNUM, /* %psr */
+ SPARC32_WIM_REGNUM, /* %wim */
+ SPARC32_TBR_REGNUM, /* %tbr */
+ SPARC32_PC_REGNUM, /* %pc */
+ SPARC32_NPC_REGNUM, /* %npc */
+ SPARC32_FSR_REGNUM, /* %fsr */
+ SPARC32_CSR_REGNUM, /* %csr */
+
+ /* Pseudo registers. */
+ SPARC32_D0_REGNUM, /* %d0 */
+ SPARC32_D30_REGNUM /* %d30 */
+ = SPARC32_D0_REGNUM + 15
+};
+
+
+struct sparc_frame_cache
+{
+ /* Base address. */
+ CORE_ADDR base;
+ CORE_ADDR pc;
+
+ /* Do we have a frame? */
+ int frameless_p;
+
+ /* Do we have a Structure, Union or Quad-Precision return value?. */
+ int struct_return_p;
+
+ /* Table of saved registers. */
+ struct trad_frame_saved_reg *saved_regs;
+};
+
+/* Fetch the instruction at PC. */
+extern unsigned long sparc_fetch_instruction (CORE_ADDR pc);
+
+extern CORE_ADDR sparc_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc,
+ struct sparc_frame_cache *cache);
+
+extern struct sparc_frame_cache *
+ sparc_frame_cache (struct frame_info *next_frame, void **this_cache);
+
+extern struct sparc_frame_cache *
+ sparc32_frame_cache (struct frame_info *next_frame, void **this_cache);
+
+
+
+extern void sparc_software_single_step (enum target_signal sig,
+ int insert_breakpoints_p);
+
+extern void sparc_supply_rwindow (struct regcache *regcache,
+ CORE_ADDR sp, int regnum);
+extern void sparc_collect_rwindow (const struct regcache *regcache,
+ CORE_ADDR sp, int regnum);
+
+/* Register offsets for SunOS 4. */
+extern const struct sparc_gregset sparc32_sunos4_gregset;
+
+extern void sparc32_supply_gregset (const struct sparc_gregset *gregset,
+ struct regcache *regcache,
+ int regnum, const void *gregs);
+extern void sparc32_collect_gregset (const struct sparc_gregset *gregset,
+ const struct regcache *regcache,
+ int regnum, void *gregs);
+extern void sparc32_supply_fpregset (struct regcache *regcache,
+ int regnum, const void *fpregs);
+extern void sparc32_collect_fpregset (const struct regcache *regcache,
+ int regnum, void *fpregs);
+
+/* Functions and variables exported from sparc-sol2-tdep.c. */
+
+/* Register offsets for Solaris 2. */
+extern const struct sparc_gregset sparc32_sol2_gregset;
+
+extern int sparc_sol2_pc_in_sigtramp (CORE_ADDR pc, char *name);
+
+extern void sparc32_sol2_init_abi (struct gdbarch_info info,
+ struct gdbarch *gdbarch);
+
+/* Functions and variables exported from sparcnbsd-tdep.c. */
+
+/* Register offsets for NetBSD. */
+extern const struct sparc_gregset sparc32nbsd_gregset;
+
+extern struct trad_frame_saved_reg *
+ sparc32nbsd_sigcontext_saved_regs (struct frame_info *next_frame);
+
+#endif /* sparc-tdep.h */
diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c
index b605a1d1862..8aad619eeae 100644
--- a/gdb/sparc64-tdep.c
+++ b/gdb/sparc64-tdep.c
@@ -1,6 +1,6 @@
/* Target-dependent code for UltraSPARC.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -27,6 +27,9 @@
#include "frame-unwind.h"
#include "gdbcore.h"
#include "gdbtypes.h"
+#include "inferior.h"
+#include "symtab.h"
+#include "objfiles.h"
#include "osabi.h"
#include "regcache.h"
#include "target.h"
@@ -45,41 +48,6 @@
/* Please use the sparc32_-prefix for 32-bit specific code, the
sparc64_-prefix for 64-bit specific code and the sparc_-prefix for
code can handle both. */
-
-/* The stack pointer is offset from the stack frame by a BIAS of 2047
- (0x7ff) for 64-bit code. BIAS is likely to be defined on SPARC
- hosts, so undefine it first. */
-#undef BIAS
-#define BIAS 2047
-
-/* Macros to extract fields from SPARC instructions. */
-#define X_OP(i) (((i) >> 30) & 0x3)
-#define X_A(i) (((i) >> 29) & 1)
-#define X_COND(i) (((i) >> 25) & 0xf)
-#define X_OP2(i) (((i) >> 22) & 0x7)
-#define X_IMM22(i) ((i) & 0x3fffff)
-#define X_OP3(i) (((i) >> 19) & 0x3f)
-/* Sign extension macros. */
-#define X_DISP22(i) ((X_IMM22 (i) ^ 0x200000) - 0x200000)
-#define X_DISP19(i) ((((i) & 0x7ffff) ^ 0x40000) - 0x40000)
-
-/* Fetch the instruction at PC. Instructions are always big-endian
- even if the processor operates in little-endian mode. */
-
-static unsigned long
-sparc_fetch_instruction (CORE_ADDR pc)
-{
- unsigned char buf[4];
- unsigned long insn;
- int i;
-
- read_memory (pc, buf, sizeof (buf));
-
- insn = 0;
- for (i = 0; i < sizeof (buf); i++)
- insn = (insn << 8) | buf[i];
- return insn;
-}
/* The functions on this page are intended to be used to classify
function arguments. */
@@ -163,14 +131,6 @@ sparc64_structure_or_union_p (const struct type *type)
return 0;
}
-/* UltraSPARC architecture specific information. */
-
-struct gdbarch_tdep
-{
- /* Offset of saved PC in jmp_buf. */
- int jb_pc_offset;
-};
-
/* Register information. */
struct sparc64_register_info
@@ -283,8 +243,7 @@ static struct sparc64_register_info sparc64_register_info[] =
};
/* Total number of registers. */
-#define SPARC64_NUM_REGS \
- (sizeof (sparc64_register_info) / sizeof (sparc64_register_info[0]))
+#define SPARC64_NUM_REGS ARRAY_SIZE (sparc64_register_info)
/* We provide the aliases %d0..%d62 and %q0..%q60 for the floating
registers as "psuedo" registers. */
@@ -348,9 +307,7 @@ static struct sparc64_register_info sparc64_pseudo_register_info[] =
};
/* Total number of pseudo registers. */
-#define SPARC64_NUM_PSEUDO_REGS \
- (sizeof (sparc64_pseudo_register_info) \
- / sizeof (sparc64_pseudo_register_info[0]))
+#define SPARC64_NUM_PSEUDO_REGS ARRAY_SIZE (sparc64_pseudo_register_info)
/* Return the name of register REGNUM. */
@@ -499,79 +456,8 @@ sparc64_pseudo_register_write (struct gdbarch *gdbarch,
regcache_raw_write_unsigned (regcache, SPARC64_STATE_REGNUM, state);
}
}
-
-/* Use the program counter to determine the contents and size of a
- breakpoint instruction. Return a pointer to a string of bytes that
- encode a breakpoint instruction, store the length of the string in
- *LEN and optionally adjust *PC to point to the correct memory
- location for inserting the breakpoint. */
-
-static const unsigned char *
-sparc_breakpoint_from_pc (CORE_ADDR *pc, int *len)
-{
- static unsigned char break_insn[] = { 0x91, 0xd0, 0x20, 0x01 };
-
- *len = sizeof (break_insn);
- return break_insn;
-}
-struct sparc64_frame_cache
-{
- /* Base address. */
- CORE_ADDR base;
- CORE_ADDR pc;
-
- /* Do we have a frame? */
- int frameless_p;
-};
-
-/* Allocate and initialize a frame cache. */
-
-static struct sparc64_frame_cache *
-sparc64_alloc_frame_cache (void)
-{
- struct sparc64_frame_cache *cache;
- int i;
-
- cache = FRAME_OBSTACK_ZALLOC (struct sparc64_frame_cache);
-
- /* Base address. */
- cache->base = 0;
- cache->pc = 0;
-
- /* Frameless until proven otherwise. */
- cache->frameless_p = 1;
-
- return cache;
-}
-
-static CORE_ADDR
-sparc64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc,
- struct sparc64_frame_cache *cache)
-{
- unsigned long insn;
-
- if (current_pc <= pc)
- return current_pc;
-
- /* Check whether the function starts with a SAVE instruction. */
- insn = sparc_fetch_instruction (pc);
- if (X_OP (insn) == 2 && X_OP3 (insn) == 0x3c)
- {
- cache->frameless_p = 0;
- return pc + 4;
- }
-
- return pc;
-}
-
-static CORE_ADDR
-sparc64_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
-{
- return frame_unwind_register_unsigned (next_frame, SPARC64_PC_REGNUM);
-}
-
/* Return PC of first real instruction of the function starting at
START_PC. */
@@ -580,7 +466,7 @@ sparc64_skip_prologue (CORE_ADDR start_pc)
{
struct symtab_and_line sal;
CORE_ADDR func_start, func_end;
- struct sparc64_frame_cache cache;
+ struct sparc_frame_cache cache;
/* This is the preferred method, find the end of the prologue by
using the debugging information. */
@@ -593,50 +479,22 @@ sparc64_skip_prologue (CORE_ADDR start_pc)
return sal.end;
}
- return sparc64_analyze_prologue (start_pc, 0xffffffffffffffffUL, &cache);
+ return sparc_analyze_prologue (start_pc, 0xffffffffffffffffULL, &cache);
}
/* Normal frames. */
-static struct sparc64_frame_cache *
+static struct sparc_frame_cache *
sparc64_frame_cache (struct frame_info *next_frame, void **this_cache)
{
- struct sparc64_frame_cache *cache;
-
- if (*this_cache)
- return *this_cache;
-
- cache = sparc64_alloc_frame_cache ();
- *this_cache = cache;
-
- /* In priciple, for normal frames, %fp (%i6) holds the frame
- pointer, which holds the base address for the current stack
- frame. */
-
- cache->base = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM);
- if (cache->base == 0)
- return cache;
-
- cache->pc = frame_func_unwind (next_frame);
- if (cache->pc != 0)
- sparc64_analyze_prologue (cache->pc, frame_pc_unwind (next_frame), cache);
-
- if (cache->frameless_p)
- {
- /* We didn't find a valid frame, which means that CACHE->base
- currently holds the frame pointer for our calling frame. */
- cache->base = frame_unwind_register_unsigned (next_frame,
- SPARC_SP_REGNUM);
- }
-
- return cache;
+ return sparc_frame_cache (next_frame, this_cache);
}
static void
sparc64_frame_this_id (struct frame_info *next_frame, void **this_cache,
struct frame_id *this_id)
{
- struct sparc64_frame_cache *cache =
+ struct sparc_frame_cache *cache =
sparc64_frame_cache (next_frame, this_cache);
/* This marks the outermost frame. */
@@ -652,7 +510,7 @@ sparc64_frame_prev_register (struct frame_info *next_frame, void **this_cache,
enum lval_type *lvalp, CORE_ADDR *addrp,
int *realnump, void *valuep)
{
- struct sparc64_frame_cache *cache =
+ struct sparc_frame_cache *cache =
sparc64_frame_cache (next_frame, this_cache);
if (regnum == SPARC64_PC_REGNUM || regnum == SPARC64_NPC_REGNUM)
@@ -718,7 +576,7 @@ sparc64_frame_sniffer (struct frame_info *next_frame)
static CORE_ADDR
sparc64_frame_base_address (struct frame_info *next_frame, void **this_cache)
{
- struct sparc64_frame_cache *cache =
+ struct sparc_frame_cache *cache =
sparc64_frame_cache (next_frame, this_cache);
/* ??? Should we take BIAS into account here? */
@@ -732,15 +590,6 @@ static const struct frame_base sparc64_frame_base =
sparc64_frame_base_address,
sparc64_frame_base_address
};
-
-static struct frame_id
-sparc_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
-{
- CORE_ADDR sp;
-
- sp = frame_unwind_register_unsigned (next_frame, SPARC_SP_REGNUM);
- return frame_id_build (sp, frame_pc_unwind (next_frame));
-}
/* Check whether TYPE must be 16-byte aligned. */
@@ -755,8 +604,12 @@ sparc64_16_byte_align_p (struct type *type)
int i;
for (i = 0; i < TYPE_NFIELDS (type); i++)
- if (sparc64_16_byte_align_p (TYPE_FIELD_TYPE (type, i)))
- return 1;
+ {
+ struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i));
+
+ if (sparc64_16_byte_align_p (subtype))
+ return 1;
+ }
}
return 0;
@@ -808,9 +661,30 @@ sparc64_store_floating_fields (struct regcache *regcache, struct type *type,
int i;
for (i = 0; i < TYPE_NFIELDS (type); i++)
- sparc64_store_floating_fields (regcache, TYPE_FIELD_TYPE (type, i),
- valbuf, element,
- bitpos + TYPE_FIELD_BITPOS (type, i));
+ {
+ struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i));
+ int subpos = bitpos + TYPE_FIELD_BITPOS (type, i);
+
+ sparc64_store_floating_fields (regcache, subtype, valbuf,
+ element, subpos);
+ }
+
+ /* GCC has an interesting bug. If TYPE is a structure that has
+ a single `float' member, GCC doesn't treat it as a structure
+ at all, but rather as an ordinary `float' argument. This
+ argument will be stored in %f1, as required by the psABI.
+ However, as a member of a structure the psABI requires it to
+ be stored in %f0. This bug is present in GCC 3.3.2, but
+ probably in older releases to. To appease GCC, if a
+ structure has only a single `float' member, we store its
+ value in %f1 too (we already have stored in %f0). */
+ if (TYPE_NFIELDS (type) == 1)
+ {
+ struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, 0));
+
+ if (sparc64_floating_p (subtype) && TYPE_LENGTH (subtype) == 4)
+ regcache_cooked_write (regcache, SPARC_F1_REGNUM, valbuf);
+ }
}
}
@@ -856,9 +730,12 @@ sparc64_extract_floating_fields (struct regcache *regcache, struct type *type,
int i;
for (i = 0; i < TYPE_NFIELDS (type); i++)
- sparc64_extract_floating_fields (regcache, TYPE_FIELD_TYPE (type, i),
- valbuf,
- bitpos + TYPE_FIELD_BITPOS (type, i));
+ {
+ struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i));
+ int subpos = bitpos + TYPE_FIELD_BITPOS (type, i);
+
+ sparc64_extract_floating_fields (regcache, subtype, valbuf, subpos);
+ }
}
}
@@ -1034,10 +911,11 @@ sparc64_store_arguments (struct regcache *regcache, int nargs,
undefined." Even though the psABI says that "the
left half is undefined", set it to zero here. */
memset (buf, 0, 4);
- valbuf = memcpy (buf + 4, valbuf, 4);
+ memcpy (buf + 4, valbuf, 4);
+ valbuf = buf;
len = 8;
if (element < 16)
- regnum = SPARC64_D0_REGNUM;
+ regnum = SPARC64_D0_REGNUM + element;
}
}
else
@@ -1170,7 +1048,7 @@ sparc64_store_return_value (struct type *type, struct regcache *regcache,
memset (buf, 0, sizeof (buf));
memcpy (buf, valbuf, len);
for (i = 0; i < ((len + 7) / 8); i++)
- regcache_cooked_write (regcache, SPARC_O0_REGNUM + i, buf + i * 4);
+ regcache_cooked_write (regcache, SPARC_O0_REGNUM + i, buf + i * 8);
if (TYPE_CODE (type) != TYPE_CODE_UNION)
sparc64_store_floating_fields (regcache, type, buf, 0, 0);
}
@@ -1193,158 +1071,35 @@ sparc64_store_return_value (struct type *type, struct regcache *regcache,
}
}
-/* Extract from REGCACHE, which contains the (raw) register state, the
- address in which a function should return its structure value, as a
- CORE_ADDR. */
-
-static CORE_ADDR
-sparc_extract_struct_value_address (struct regcache *regcache)
+static enum return_value_convention
+sparc64_return_value (struct gdbarch *gdbarch, struct type *type,
+ struct regcache *regcache, void *readbuf,
+ const void *writebuf)
{
- ULONGEST addr;
+ if (TYPE_LENGTH (type) > 32)
+ return RETURN_VALUE_STRUCT_CONVENTION;
- regcache_cooked_read_unsigned (regcache, SPARC_O0_REGNUM, &addr);
- return addr;
-}
+ if (readbuf)
+ sparc64_extract_return_value (type, regcache, readbuf);
+ if (writebuf)
+ sparc64_store_return_value (type, regcache, writebuf);
-static int
-sparc64_use_struct_convention (int gcc_p, struct type *type)
-{
- /* Structure and union types up to 32 bytes in size are returned in
- registers. */
- return (TYPE_LENGTH (type) > 32);
+ return RETURN_VALUE_REGISTER_CONVENTION;
}
-
-/* The SPARC Architecture doesn't have hardware single-step support,
- and most operating systems don't implement it either, so we provide
- software single-step mechanism. */
-
-static CORE_ADDR
-sparc_analyze_control_transfer (CORE_ADDR pc, CORE_ADDR *npc)
-{
- unsigned long insn = sparc_fetch_instruction (pc);
- int conditional_p = X_COND (insn) & 0x7;
- int branch_p = 0;
- long offset = 0; /* Must be signed for sign-extend. */
-
- if (X_OP (insn) == 0 && X_OP2 (insn) == 3 && (insn & 0x1000000) == 0)
- {
- /* Branch on Integer Register with Prediction (BPr). */
- branch_p = 1;
- conditional_p = 1;
- }
- else if (X_OP (insn) == 0 && X_OP2 (insn) == 6)
- {
- /* Branch on Floating-Point Condition Codes (FBfcc). */
- branch_p = 1;
- offset = 4 * X_DISP22 (insn);
- }
- else if (X_OP (insn) == 0 && X_OP2 (insn) == 5)
- {
- /* Branch on Floating-Point Condition Codes with Prediction
- (FBPfcc). */
- branch_p = 1;
- offset = 4 * X_DISP19 (insn);
- }
- else if (X_OP (insn) == 0 && X_OP2 (insn) == 2)
- {
- /* Branch on Integer Condition Codes (Bicc). */
- branch_p = 1;
- offset = 4 * X_DISP22 (insn);
- }
- else if (X_OP (insn) == 0 && X_OP2 (insn) == 1)
- {
- /* Branch on Integer Condition Codes with Prediction (BPcc). */
- branch_p = 1;
- offset = 4 * X_DISP19 (insn);
- }
-
- /* FIXME: Handle DONE and RETRY instructions. */
-
- /* FIXME: Handle the Trap instruction. */
-
- if (branch_p)
- {
- if (conditional_p)
- {
- /* For conditional branches, return nPC + 4 iff the annul
- bit is 1. */
- return (X_A (insn) ? *npc + 4 : 0);
- }
- else
- {
- /* For unconditional branches, return the target if its
- specified condition is "always" and return nPC + 4 if the
- condition is "never". If the annul bit is 1, set *NPC to
- zero. */
- if (X_COND (insn) == 0x0)
- pc = *npc, offset = 4;
- if (X_A (insn))
- *npc = 0;
-
- gdb_assert (offset != 0);
- return pc + offset;
- }
- }
-
- return 0;
-}
void
-sparc_software_single_step (enum target_signal sig, int insert_breakpoints_p)
+sparc64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
- static CORE_ADDR npc, nnpc;
- static char npc_save[4], nnpc_save[4];
-
- if (insert_breakpoints_p)
- {
- CORE_ADDR pc;
-
- pc = sparc_address_from_register (SPARC64_PC_REGNUM);
- npc = sparc_address_from_register (SPARC64_NPC_REGNUM);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- /* Analyze the instruction at PC. */
- nnpc = sparc_analyze_control_transfer (pc, &npc);
- if (npc != 0)
- target_insert_breakpoint (npc, npc_save);
- if (nnpc != 0)
- target_insert_breakpoint (nnpc, nnpc_save);
-
- /* Assert that we have set at least one breakpoint. */
- gdb_assert (npc != 0 || nnpc != 0);
- }
- else
- {
- if (npc != 0)
- target_remove_breakpoint (npc, npc_save);
- if (nnpc != 0)
- target_remove_breakpoint (nnpc, nnpc_save);
-
- npc = 0;
- nnpc = 0;
- }
-}
-
-
-static struct gdbarch *
-sparc64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
-{
- struct gdbarch_tdep *tdep;
- struct gdbarch *gdbarch;
-
- /* If there is already a candidate, use it. */
- arches = gdbarch_list_lookup_by_info (arches, &info);
- if (arches != NULL)
- return arches->gdbarch;
-
- /* Allocate space for the new architecture. */
- tdep = XMALLOC (struct gdbarch_tdep);
- gdbarch = gdbarch_alloc (&info, tdep);
+ tdep->pc_regnum = SPARC64_PC_REGNUM;
+ tdep->npc_regnum = SPARC64_NPC_REGNUM;
+ /* This is what all the fuss is about. */
set_gdbarch_long_bit (gdbarch, 64);
set_gdbarch_long_long_bit (gdbarch, 64);
set_gdbarch_ptr_bit (gdbarch, 64);
- set_gdbarch_long_double_bit (gdbarch, 128);
set_gdbarch_num_regs (gdbarch, SPARC64_NUM_REGS);
set_gdbarch_register_name (gdbarch, sparc64_register_name);
@@ -1354,147 +1109,325 @@ sparc64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_pseudo_register_write (gdbarch, sparc64_pseudo_register_write);
/* Register numbers of various important registers. */
- set_gdbarch_sp_regnum (gdbarch, SPARC_SP_REGNUM); /* %sp */
set_gdbarch_pc_regnum (gdbarch, SPARC64_PC_REGNUM); /* %pc */
- set_gdbarch_deprecated_npc_regnum (gdbarch, SPARC64_NPC_REGNUM);
- set_gdbarch_fp0_regnum (gdbarch, SPARC_F0_REGNUM); /* %f0 */
/* Call dummy code. */
+ set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT);
+ set_gdbarch_push_dummy_code (gdbarch, NULL);
set_gdbarch_push_dummy_call (gdbarch, sparc64_push_dummy_call);
- set_gdbarch_extract_return_value (gdbarch, sparc64_extract_return_value);
- set_gdbarch_store_return_value (gdbarch, sparc64_store_return_value);
- set_gdbarch_extract_struct_value_address
- (gdbarch, sparc_extract_struct_value_address);
- set_gdbarch_use_struct_convention (gdbarch, sparc64_use_struct_convention);
+ set_gdbarch_return_value (gdbarch, sparc64_return_value);
+ set_gdbarch_stabs_argument_has_addr
+ (gdbarch, default_stabs_argument_has_addr);
set_gdbarch_skip_prologue (gdbarch, sparc64_skip_prologue);
- /* Stack grows downward. */
- set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
-
- set_gdbarch_breakpoint_from_pc (gdbarch, sparc_breakpoint_from_pc);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- set_gdbarch_function_start_offset (gdbarch, 0);
-
- set_gdbarch_frame_args_skip (gdbarch, 8);
-
- set_gdbarch_print_insn (gdbarch, print_insn_sparc);
-
- set_gdbarch_software_single_step (gdbarch, sparc_software_single_step);
-
- set_gdbarch_unwind_dummy_id (gdbarch, sparc_unwind_dummy_id);
-
- set_gdbarch_unwind_pc (gdbarch, sparc64_unwind_pc);
-
+ frame_unwind_append_sniffer (gdbarch, sparc64_frame_sniffer);
frame_base_set_default (gdbarch, &sparc64_frame_base);
+}
+
- /* Hook in ABI-specific overrides, if they have been registered. */
- gdbarch_init_osabi (info, gdbarch);
+/* Helper functions for dealing with register sets. */
- frame_unwind_append_sniffer (gdbarch, sparc64_frame_sniffer);
+#define TSTATE_CWP 0x000000000000001fULL
+#define TSTATE_ICC 0x0000000f00000000ULL
+#define TSTATE_XCC 0x000000f000000000ULL
- return gdbarch;
-}
-
-/* Helper functions for dealing with register windows. */
+#define PSR_S 0x00000080
+#define PSR_ICC 0x00f00000
+#define PSR_VERS 0x0f000000
+#define PSR_IMPL 0xf0000000
+#define PSR_V8PLUS 0xff000000
+#define PSR_XCC 0x000f0000
void
-sparc_supply_rwindow (CORE_ADDR sp, int regnum)
+sparc64_supply_gregset (const struct sparc_gregset *gregset,
+ struct regcache *regcache,
+ int regnum, const void *gregs)
{
- int offset = 0;
- char buf[8];
+ int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+ const char *regs = gregs;
int i;
- if (sp & 1)
+ if (sparc32)
{
- /* Registers are 64-bit. */
- sp += BIAS;
+ if (regnum == SPARC32_PSR_REGNUM || regnum == -1)
+ {
+ int offset = gregset->r_tstate_offset;
+ ULONGEST tstate, psr;
+ char buf[4];
+
+ tstate = extract_unsigned_integer (regs + offset, 8);
+ psr = ((tstate & TSTATE_CWP) | PSR_S | ((tstate & TSTATE_ICC) >> 12)
+ | ((tstate & TSTATE_XCC) >> 20) | PSR_V8PLUS);
+ store_unsigned_integer (buf, 4, psr);
+ regcache_raw_supply (regcache, SPARC32_PSR_REGNUM, buf);
+ }
+
+ if (regnum == SPARC32_PC_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC32_PC_REGNUM,
+ regs + gregset->r_pc_offset + 4);
- for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ if (regnum == SPARC32_NPC_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC32_NPC_REGNUM,
+ regs + gregset->r_npc_offset + 4);
+
+ if (regnum == SPARC32_Y_REGNUM || regnum == -1)
{
- if (regnum == i || regnum == -1)
- {
- target_read_memory (sp + ((i - SPARC_L0_REGNUM) * 8), buf, 8);
- supply_register (i, buf);
- }
+ int offset = gregset->r_y_offset + 8 - gregset->r_y_size;
+ regcache_raw_supply (regcache, SPARC32_Y_REGNUM, regs + offset);
}
}
else
{
- /* Registers are 32-bit. Toss any sign-extension of the stack
- pointer. */
- sp &= 0xffffffffUL;
+ if (regnum == SPARC64_STATE_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC64_STATE_REGNUM,
+ regs + gregset->r_tstate_offset);
- /* Clear out the top half of the temporary buffer, and put the
- register value in the bottom half if we're in 64-bit mode. */
- if (gdbarch_ptr_bit (current_gdbarch) == 64)
+ if (regnum == SPARC64_PC_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC64_PC_REGNUM,
+ regs + gregset->r_pc_offset);
+
+ if (regnum == SPARC64_NPC_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC64_NPC_REGNUM,
+ regs + gregset->r_npc_offset);
+
+ if (regnum == SPARC64_Y_REGNUM || regnum == -1)
{
- memset (buf, 0, 4);
- offset = 4;
+ char buf[8];
+
+ memset (buf, 0, 8);
+ memcpy (buf + 8 - gregset->r_y_size,
+ regs + gregset->r_y_offset, gregset->r_y_size);
+ regcache_raw_supply (regcache, SPARC64_Y_REGNUM, buf);
}
- for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ if ((regnum == SPARC64_FPRS_REGNUM || regnum == -1)
+ && gregset->r_fprs_offset != -1)
+ regcache_raw_supply (regcache, SPARC64_FPRS_REGNUM,
+ regs + gregset->r_fprs_offset);
+ }
+
+ if (regnum == SPARC_G0_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC_G0_REGNUM, NULL);
+
+ if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1)
+ {
+ int offset = gregset->r_g1_offset;
+
+ if (sparc32)
+ offset += 4;
+
+ for (i = SPARC_G1_REGNUM; i <= SPARC_O7_REGNUM; i++)
{
if (regnum == i || regnum == -1)
+ regcache_raw_supply (regcache, i, regs + offset);
+ offset += 8;
+ }
+ }
+
+ if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1)
+ {
+ /* Not all of the register set variants include Locals and
+ Inputs. For those that don't, we read them off the stack. */
+ if (gregset->r_l0_offset == -1)
+ {
+ ULONGEST sp;
+
+ regcache_cooked_read_unsigned (regcache, SPARC_SP_REGNUM, &sp);
+ sparc_supply_rwindow (regcache, sp, regnum);
+ }
+ else
+ {
+ int offset = gregset->r_l0_offset;
+
+ if (sparc32)
+ offset += 4;
+
+ for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
{
- target_read_memory (sp + ((i - SPARC_L0_REGNUM) * 4),
- buf + offset, 4);
- supply_register (i, buf);
+ if (regnum == i || regnum == -1)
+ regcache_raw_supply (regcache, i, regs + offset);
+ offset += 8;
}
}
}
}
void
-sparc_fill_rwindow (CORE_ADDR sp, int regnum)
+sparc64_collect_gregset (const struct sparc_gregset *gregset,
+ const struct regcache *regcache,
+ int regnum, void *gregs)
{
- int offset = 0;
- char buf[8];
+ int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+ char *regs = gregs;
int i;
- if (sp & 1)
+ if (sparc32)
{
- /* Registers are 64-bit. */
- sp += BIAS;
+ if (regnum == SPARC32_PSR_REGNUM || regnum == -1)
+ {
+ int offset = gregset->r_tstate_offset;
+ ULONGEST tstate, psr;
+ char buf[8];
+
+ tstate = extract_unsigned_integer (regs + offset, 8);
+ regcache_raw_collect (regcache, SPARC32_PSR_REGNUM, buf);
+ psr = extract_unsigned_integer (buf, 4);
+ tstate |= (psr & PSR_ICC) << 12;
+ if ((psr & (PSR_VERS | PSR_IMPL)) == PSR_V8PLUS)
+ tstate |= (psr & PSR_XCC) << 20;
+ store_unsigned_integer (buf, 8, tstate);
+ memcpy (regs + offset, buf, 8);
+ }
- for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ if (regnum == SPARC32_PC_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC32_PC_REGNUM,
+ regs + gregset->r_pc_offset + 4);
+
+ if (regnum == SPARC32_NPC_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC32_NPC_REGNUM,
+ regs + gregset->r_npc_offset + 4);
+
+ if (regnum == SPARC32_Y_REGNUM || regnum == -1)
{
- if (regnum == -1 || regnum == SPARC_SP_REGNUM || regnum == i)
- {
- regcache_collect (i, buf);
- target_write_memory (sp + ((i - SPARC_L0_REGNUM) * 8), buf, 8);
- }
+ int offset = gregset->r_y_offset + 8 - gregset->r_y_size;
+ regcache_raw_collect (regcache, SPARC32_Y_REGNUM, regs + offset);
}
}
else
{
- /* Registers are 32-bit. Toss any sign-extension of the stack
- pointer. */
- sp &= 0xffffffffUL;
+ if (regnum == SPARC64_STATE_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC64_STATE_REGNUM,
+ regs + gregset->r_tstate_offset);
- /* Only use the bottom half if we're in 64-bit mode. */
- if (gdbarch_ptr_bit (current_gdbarch) == 64)
- offset = 4;
+ if (regnum == SPARC64_PC_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC64_PC_REGNUM,
+ regs + gregset->r_pc_offset);
- for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
+ if (regnum == SPARC64_NPC_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC64_NPC_REGNUM,
+ regs + gregset->r_npc_offset);
+
+ if (regnum == SPARC64_Y_REGNUM || regnum == -1)
{
- if (regnum == -1 || regnum == SPARC_SP_REGNUM || regnum == i)
+ char buf[8];
+
+ regcache_raw_collect (regcache, SPARC64_Y_REGNUM, buf);
+ memcpy (regs + gregset->r_y_offset,
+ buf + 8 - gregset->r_y_size, gregset->r_y_size);
+ }
+
+ if ((regnum == SPARC64_FPRS_REGNUM || regnum == -1)
+ && gregset->r_fprs_offset != -1)
+ regcache_raw_collect (regcache, SPARC64_FPRS_REGNUM,
+ regs + gregset->r_fprs_offset);
+
+ }
+
+ if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1)
+ {
+ int offset = gregset->r_g1_offset;
+
+ if (sparc32)
+ offset += 4;
+
+ /* %g0 is always zero. */
+ for (i = SPARC_G1_REGNUM; i <= SPARC_O7_REGNUM; i++)
+ {
+ if (regnum == i || regnum == -1)
+ regcache_raw_collect (regcache, i, regs + offset);
+ offset += 8;
+ }
+ }
+
+ if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1)
+ {
+ /* Not all of the register set variants include Locals and
+ Inputs. For those that don't, we read them off the stack. */
+ if (gregset->r_l0_offset != -1)
+ {
+ int offset = gregset->r_l0_offset;
+
+ if (sparc32)
+ offset += 4;
+
+ for (i = SPARC_L0_REGNUM; i <= SPARC_I7_REGNUM; i++)
{
- regcache_collect (i, buf);
- target_write_memory (sp + ((i - SPARC_L0_REGNUM) * 4),
- buf + offset, 4);
+ if (regnum == i || regnum == -1)
+ regcache_raw_collect (regcache, i, regs + offset);
+ offset += 8;
}
}
}
}
-
-/* Provide a prototype to silence -Wmissing-prototypes. */
-void _initialize_sparc64_tdep (void);
+void
+sparc64_supply_fpregset (struct regcache *regcache,
+ int regnum, const void *fpregs)
+{
+ int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+ const char *regs = fpregs;
+ int i;
+
+ for (i = 0; i < 32; i++)
+ {
+ if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1)
+ regcache_raw_supply (regcache, SPARC_F0_REGNUM + i, regs + (i * 4));
+ }
+
+ if (sparc32)
+ {
+ if (regnum == SPARC32_FSR_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC32_FSR_REGNUM,
+ regs + (32 * 4) + (16 * 8) + 4);
+ }
+ else
+ {
+ for (i = 0; i < 16; i++)
+ {
+ if (regnum == (SPARC64_F32_REGNUM + i) || regnum == -1)
+ regcache_raw_supply (regcache, SPARC64_F32_REGNUM + i,
+ regs + (32 * 4) + (i * 8));
+ }
+
+ if (regnum == SPARC64_FSR_REGNUM || regnum == -1)
+ regcache_raw_supply (regcache, SPARC64_FSR_REGNUM,
+ regs + (32 * 4) + (16 * 8));
+ }
+}
void
-_initialize_sparc64_tdep (void)
+sparc64_collect_fpregset (const struct regcache *regcache,
+ int regnum, void *fpregs)
{
- register_gdbarch_init (bfd_arch_sparc, sparc64_gdbarch_init);
+ int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+ char *regs = fpregs;
+ int i;
+
+ for (i = 0; i < 32; i++)
+ {
+ if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1)
+ regcache_raw_collect (regcache, SPARC_F0_REGNUM + i, regs + (i * 4));
+ }
+
+ if (sparc32)
+ {
+ if (regnum == SPARC32_FSR_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC32_FSR_REGNUM,
+ regs + (32 * 4) + (16 * 8) + 4);
+ }
+ else
+ {
+ for (i = 0; i < 16; i++)
+ {
+ if (regnum == (SPARC64_F32_REGNUM + i) || regnum == -1)
+ regcache_raw_collect (regcache, SPARC64_F32_REGNUM + i,
+ regs + (32 * 4) + (i * 8));
+ }
+
+ if (regnum == SPARC64_FSR_REGNUM || regnum == -1)
+ regcache_raw_collect (regcache, SPARC64_FSR_REGNUM,
+ regs + (32 * 4) + (16 * 8));
+ }
}
diff --git a/gdb/sparc64-tdep.h b/gdb/sparc64-tdep.h
index e7b910d55fe..c3073b90b3a 100644
--- a/gdb/sparc64-tdep.h
+++ b/gdb/sparc64-tdep.h
@@ -1,6 +1,6 @@
/* Target-dependent code for UltraSPARC.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -20,84 +20,104 @@
Boston, MA 02111-1307, USA. */
#ifndef SPARC64_TDEP_H
-#define SPARC62_TDEP_H 1
+#define SPARC64_TDEP_H 1
-/* Register numbers of various important registers. */
+struct frame_info;
+struct gdbarch;
+struct regcache;
+struct sparc_gregset;
+struct trad_frame_saved_reg;
-enum sparc_regnum
-{
- SPARC_G0_REGNUM, /* %g0 */
- SPARC_G1_REGNUM,
- SPARC_G2_REGNUM,
- SPARC_G3_REGNUM,
- SPARC_G4_REGNUM,
- SPARC_G5_REGNUM,
- SPARC_G6_REGNUM,
- SPARC_G7_REGNUM, /* %g7 */
- SPARC_O0_REGNUM, /* %o0 */
- SPARC_O1_REGNUM,
- SPARC_O2_REGNUM,
- SPARC_O3_REGNUM,
- SPARC_O4_REGNUM,
- SPARC_O5_REGNUM,
- SPARC_SP_REGNUM, /* %sp (%o6) */
- SPARC_O7_REGNUM, /* %o7 */
- SPARC_L0_REGNUM, /* %l0 */
- SPARC_L1_REGNUM,
- SPARC_L2_REGNUM,
- SPARC_L3_REGNUM,
- SPARC_L4_REGNUM,
- SPARC_L5_REGNUM,
- SPARC_L6_REGNUM,
- SPARC_L7_REGNUM, /* %l7 */
- SPARC_I0_REGNUM, /* %i0 */
- SPARC_I1_REGNUM,
- SPARC_I2_REGNUM,
- SPARC_I3_REGNUM,
- SPARC_I4_REGNUM,
- SPARC_I5_REGNUM,
- SPARC_FP_REGNUM, /* %fp (%i6) */
- SPARC_I7_REGNUM, /* %i7 */
- SPARC_F0_REGNUM, /* %f0 */
- SPARC_F31_REGNUM = SPARC_F0_REGNUM + 31 /* %f31 */
-};
+#include "sparc-tdep.h"
+
+/* The stack pointer is offset from the stack frame by a BIAS of 2047
+ (0x7ff) for 64-bit code. BIAS is likely to be defined on SPARC
+ hosts, so undefine it first. */
+#undef BIAS
+#define BIAS 2047
+
+/* Register offsets for the general-purpose register set. */
+
+/* UltraSPARC doesn't have %psr. */
+#define r_tstate_offset r_psr_offset
+
+/* UltraSPARC doesn't have %wim either. */
+#define r_fprs_offset r_wim_offset
+
+/* Register numbers of various important registers. */
enum sparc64_regnum
{
- SPARC64_F32_REGNUM = SPARC_F0_REGNUM + 32, /* %f32 */
- SPARC64_F62_REGNUM = SPARC64_F32_REGNUM + 15, /* %f62 */
+ SPARC64_F32_REGNUM /* %f32 */
+ = SPARC_F0_REGNUM + 32,
+ SPARC64_F62_REGNUM /* %f62 */
+ = SPARC64_F32_REGNUM + 15,
SPARC64_PC_REGNUM, /* %pc */
SPARC64_NPC_REGNUM, /* %npc */
SPARC64_STATE_REGNUM,
SPARC64_FSR_REGNUM, /* %fsr */
SPARC64_FPRS_REGNUM, /* %fprs */
SPARC64_Y_REGNUM, /* %y */
-
+
/* Pseudo registers. */
SPARC64_CWP_REGNUM, /* %cwp */
SPARC64_PSTATE_REGNUM, /* %pstate */
SPARC64_ASI_REGNUM, /* %asi */
SPARC64_CCR_REGNUM, /* %ccr */
SPARC64_D0_REGNUM, /* %d0 */
- SPARC64_D10_REGNUM = SPARC64_D0_REGNUM + 5, /* %d10 */
- SPARC64_D30_REGNUM = SPARC64_D0_REGNUM + 15, /* %d30 */
- SPARC64_D32_REGNUM = SPARC64_D0_REGNUM + 16, /* %d32 */
- SPARC64_D62_REGNUM = SPARC64_D0_REGNUM + 31, /* %d62 */
+ SPARC64_D10_REGNUM /* %d10 */
+ = SPARC64_D0_REGNUM + 5,
+ SPARC64_D30_REGNUM /* %d30 */
+ = SPARC64_D0_REGNUM + 15,
+ SPARC64_D32_REGNUM /* %d32 */
+ = SPARC64_D0_REGNUM + 16,
+ SPARC64_D62_REGNUM /* %d62 */
+ = SPARC64_D0_REGNUM + 31,
SPARC64_Q0_REGNUM, /* %q0 */
- SPARC64_Q8_REGNUM = SPARC64_Q0_REGNUM + 2, /* %q8 */
- SPARC64_Q28_REGNUM = SPARC64_Q0_REGNUM + 7, /* %q28 */
- SPARC64_Q32_REGNUM = SPARC64_Q0_REGNUM + 8, /* %q32 */
- SPARC64_Q60_REGNUM = SPARC64_Q0_REGNUM + 15 /* %q60 */
+ SPARC64_Q8_REGNUM /* %q8 */
+ = SPARC64_Q0_REGNUM + 2,
+ SPARC64_Q28_REGNUM /* %q28 */
+ = SPARC64_Q0_REGNUM + 7,
+ SPARC64_Q32_REGNUM /* %q32 */
+ = SPARC64_Q0_REGNUM + 8,
+ SPARC64_Q60_REGNUM /* %q60 */
+ = SPARC64_Q0_REGNUM + 15
};
-extern void sparc_supply_rwindow (CORE_ADDR sp, int regnum);
-extern void sparc_fill_rwindow (CORE_ADDR sp, int regnum);
+extern void sparc64_init_abi (struct gdbarch_info info,
+ struct gdbarch *gdbarch);
+
+extern void sparc64_supply_gregset (const struct sparc_gregset *gregset,
+ struct regcache *regcache,
+ int regnum, const void *gregs);
+extern void sparc64_collect_gregset (const struct sparc_gregset *gregset,
+ const struct regcache *regcache,
+ int regnum, void *gregs);
+extern void sparc64_supply_fpregset (struct regcache *regcache,
+ int regnum, const void *fpregs);
+extern void sparc64_collect_fpregset (const struct regcache *regcache,
+ int regnum, void *fpregs);
+
+/* Functions and variables exported from sparc64-sol2-tdep.c. */
+
+/* Register offsets for Solaris 2. */
+extern const struct sparc_gregset sparc64_sol2_gregset;
+
+extern void sparc64_sol2_init_abi (struct gdbarch_info info,
+ struct gdbarch *gdbarch);
+
+/* Variables exported from sparc64fbsd-tdep.c. */
+
+/* Register offsets for FreeBSD/sparc64. */
+extern const struct sparc_gregset sparc64fbsd_gregset;
+
+/* Functions and variables exported from sparc64nbsd-tdep.c. */
-/* Functions exported from sparc64fbsd-tdep.c. */
+/* Register offsets for NetBSD/sparc64. */
+extern const struct sparc_gregset sparc64nbsd_gregset;
-extern void sparc64fbsd_supply_reg (const char *regs, int regnum);
-extern void sparc64fbsd_fill_reg (char *regs, int regnum);
-extern void sparc64fbsd_supply_fpreg (const char *regs, int regnum);
-extern void sparc64fbsd_fill_fpreg (char *regs, int regnum);
+extern struct trad_frame_saved_reg *
+ sparc64nbsd_sigcontext_saved_regs (CORE_ADDR sigcontext_addr,
+ struct frame_info *next_frame);
#endif /* sparc64-tdep.h */
diff --git a/gdb/sparc64fbsd-nat.c b/gdb/sparc64fbsd-nat.c
index 26c58d8d13b..09bf12a4c00 100644
--- a/gdb/sparc64fbsd-nat.c
+++ b/gdb/sparc64fbsd-nat.c
@@ -22,47 +22,7 @@
#include "defs.h"
#include "sparc64-tdep.h"
-#include "sparcbsd-nat.h"
-
-/* Determine whether `struct reg' contains register REGNUM. */
-
-static int
-sparc64fbsd_reg_supplies_p (int regnum)
-{
- /* Integer registers. */
- if ((regnum >= SPARC_G0_REGNUM && regnum <= SPARC_G7_REGNUM)
- || (regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
- || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_L7_REGNUM)
- || (regnum >= SPARC_I0_REGNUM && regnum <= SPARC_I7_REGNUM))
- return 1;
-
- /* Control registers. */
- if (regnum == SPARC64_PC_REGNUM
- || regnum == SPARC64_NPC_REGNUM
- || regnum == SPARC64_STATE_REGNUM
- || regnum == SPARC64_FPRS_REGNUM
- || regnum == SPARC64_Y_REGNUM)
- return 1;
-
- return 0;
-}
-
-/* Determine whether `struct fpreg' contains register REGNUM. */
-
-static int
-sparc64fbsd_fpreg_supplies_p (int regnum)
-{
- /* Floating-point registers. */
- if ((regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM)
- || (regnum >= SPARC64_F32_REGNUM && regnum <= SPARC64_F62_REGNUM))
- return 1;
-
- /* Control registers. */
- if (regnum == SPARC64_FSR_REGNUM)
- return 1;
-
- return 0;
-}
+#include "sparc-nat.h"
/* Provide a prototype to silence -Wmissing-prototypes. */
void _initialize_sparc64fbsd_nat (void);
@@ -70,11 +30,5 @@ void _initialize_sparc64fbsd_nat (void);
void
_initialize_sparc64fbsd_nat (void)
{
- sparcbsd_supply_reg = sparc64fbsd_supply_reg;
- sparcbsd_fill_reg = sparc64fbsd_fill_reg;
- sparcbsd_supply_fpreg = sparc64fbsd_supply_fpreg;
- sparcbsd_fill_fpreg = sparc64fbsd_fill_fpreg;
-
- sparcbsd_reg_supplies_p = sparc64fbsd_reg_supplies_p;
- sparcbsd_fpreg_supplies_p = sparc64fbsd_fpreg_supplies_p;
+ sparc_gregset = &sparc64fbsd_gregset;
}
diff --git a/gdb/sparc64fbsd-tdep.c b/gdb/sparc64fbsd-tdep.c
index 2b910c1b33d..3c1335df431 100644
--- a/gdb/sparc64fbsd-tdep.c
+++ b/gdb/sparc64fbsd-tdep.c
@@ -1,6 +1,6 @@
/* Target-dependent code for FreeBSD/sparc64.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -20,208 +20,198 @@
Boston, MA 02111-1307, USA. */
#include "defs.h"
+#include "frame.h"
+#include "frame-unwind.h"
#include "gdbcore.h"
#include "osabi.h"
#include "regcache.h"
+#include "regset.h"
#include "target.h"
+#include "trad-frame.h"
+#include "gdb_assert.h"
#include "gdb_string.h"
#include "sparc64-tdep.h"
/* From <machine/reg.h>. */
-
-/* Offset of registers in `struct reg'. */
-int sparc64fbsd_r_global_offset = (0 * 8);
-int sparc64fbsd_r_out_offset = (8 * 8);
-int sparc64fbsd_r_fprs_offset = (16 * 8);
-int sparc64fbsd_r_tnpc_offset = (24 * 8);
-int sparc64fbsd_r_tpc_offset = (25 * 8);
-int sparc64fbsd_r_tstate_offset = (26 * 8);
-int sparc64fbsd_r_y_offset = (28 * 8);
-
-/* Size of `struct reg' and `struct fpreg'. */
-int sparc64fbsd_sizeof_struct_reg = 256;
-int sparc64fbsd_sizeof_struct_fpreg = 272;
-
-void
-sparc64fbsd_supply_reg (const char *regs, int regnum)
+const struct sparc_gregset sparc64fbsd_gregset =
{
- char buf[8];
- int i;
-
- if (regnum == SPARC64_PC_REGNUM || regnum == -1)
- supply_register (SPARC64_PC_REGNUM, regs + sparc64fbsd_r_tpc_offset);
-
- if (regnum == SPARC64_NPC_REGNUM || regnum == -1)
- supply_register (SPARC64_NPC_REGNUM, regs + sparc64fbsd_r_tnpc_offset);
-
- if (regnum == SPARC64_STATE_REGNUM || regnum == -1)
- supply_register (SPARC64_STATE_REGNUM, regs + sparc64fbsd_r_tstate_offset);
-
- if (regnum == SPARC64_FPRS_REGNUM || regnum == -1)
- supply_register (SPARC64_FPRS_REGNUM, regs + sparc64fbsd_r_fprs_offset);
-
- if (regnum == SPARC64_Y_REGNUM || regnum == -1)
- supply_register (SPARC64_Y_REGNUM, regs + sparc64fbsd_r_y_offset);
-
- if ((regnum >= SPARC_G0_REGNUM && regnum <= SPARC_G7_REGNUM) || regnum == -1)
- {
- if (regnum == SPARC_G0_REGNUM || regnum == -1)
- supply_register (SPARC_G0_REGNUM, NULL); /* %g0 is always zero. */
- for (i = SPARC_G1_REGNUM; i <= SPARC_G7_REGNUM; i++)
- {
- if (regnum == i || regnum == -1)
- supply_register (i, (regs + sparc64fbsd_r_global_offset
- + ((i - SPARC_G0_REGNUM) * 8)));
- }
- }
-
- if ((regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1)
- {
- for (i = SPARC_O0_REGNUM; i <= SPARC_O7_REGNUM; i++)
- {
- if (regnum == i || regnum == -1)
- supply_register (i, (regs + sparc64fbsd_r_out_offset
- + ((i - SPARC_O0_REGNUM) * 8)));
- }
- }
-
- /* Inputs and Locals are stored onto the stack by by the kernel. */
- if ((regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM) || regnum == -1)
- {
- ULONGEST sp;
+ 26 * 8, /* "tstate" */
+ 25 * 8, /* %pc */
+ 24 * 8, /* %npc */
+ 28 * 8, /* %y */
+ 16 * 8, /* %fprs */
+ -1,
+ 1 * 8, /* %g1 */
+ -1, /* %l0 */
+ 8 /* sizeof (%y) */
+};
+
- regcache_cooked_read_unsigned (current_regcache, SPARC_SP_REGNUM, &sp);
- sparc_supply_rwindow (sp, regnum);
- }
+static void
+sparc64fbsd_supply_gregset (const struct regset *regset,
+ struct regcache *regcache,
+ int regnum, const void *gregs, size_t len)
+{
+ sparc64_supply_gregset (regset->descr, regcache, regnum, gregs);
}
-void
-sparc64fbsd_fill_reg (char *regs, int regnum)
+static void
+sparc64fbsd_supply_fpregset (const struct regset *regset,
+ struct regcache *regcache,
+ int regnum, const void *fpregs, size_t len)
{
- char buf[8];
- int i;
-
- if (regnum == SPARC64_PC_REGNUM || regnum == -1)
- regcache_collect (SPARC64_PC_REGNUM, regs + sparc64fbsd_r_tpc_offset);
-
- if (regnum == SPARC64_NPC_REGNUM || regnum == -1)
- regcache_collect (SPARC64_NPC_REGNUM, regs + sparc64fbsd_r_tnpc_offset);
-
- if (regnum == SPARC64_FPRS_REGNUM || regnum == -1)
- regcache_collect (SPARC64_FPRS_REGNUM, regs + sparc64fbsd_r_fprs_offset);
-
- if (regnum == SPARC64_Y_REGNUM || regnum == -1)
- regcache_collect (SPARC64_Y_REGNUM, regs + sparc64fbsd_r_y_offset);
-
- if ((regnum >= SPARC_G0_REGNUM && regnum <= SPARC_G7_REGNUM) || regnum == -1)
- {
- /* %g0 is always zero. */
- for (i = SPARC_G1_REGNUM; i <= SPARC_G7_REGNUM; i++)
- {
- if (regnum == i || regnum == -1)
- regcache_collect (i, (regs + sparc64fbsd_r_global_offset
- + ((i - SPARC_G0_REGNUM) * 8)));
- }
- }
+ sparc64_supply_fpregset (regcache, regnum, fpregs);
+}
+
- if ((regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM) || regnum == -1)
- {
- for (i = SPARC_O0_REGNUM; i <= SPARC_O7_REGNUM; i++)
- {
- if (regnum == i || regnum == -1)
- regcache_collect (i, (regs + sparc64fbsd_r_out_offset
- + ((i - SPARC_O0_REGNUM) * 8)));
- }
- }
+/* Signal trampolines. */
- /* Responsibility for the stack regs is pushed off onto the caller. */
+static int
+sparc64fbsd_pc_in_sigtramp (CORE_ADDR pc, char *name)
+{
+ return (name && strcmp (name, "__sigtramp") == 0);
}
-void
-sparc64fbsd_supply_fpreg (const char *fpregs, int regnum)
+static struct sparc_frame_cache *
+sparc64fbsd_sigtramp_frame_cache (struct frame_info *next_frame,
+ void **this_cache)
{
- int i;
-
- for (i = 0; i < 32; i++)
+ struct sparc_frame_cache *cache;
+ CORE_ADDR addr, mcontext_addr, sp;
+ LONGEST fprs;
+ int regnum;
+
+ if (*this_cache)
+ return *this_cache;
+
+ cache = sparc_frame_cache (next_frame, this_cache);
+ gdb_assert (cache == *this_cache);
+
+ cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
+
+ /* The third argument is a pointer to an instance of `ucontext_t',
+ which has a member `uc_mcontext' that contains the saved
+ registers. */
+ addr = frame_unwind_register_unsigned (next_frame, SPARC_O2_REGNUM);
+ mcontext_addr = addr + 64;
+
+ /* The following registers travel in the `mc_local' slots of
+ `mcontext_t'. */
+ addr = mcontext_addr + 16 * 8;
+ cache->saved_regs[SPARC64_FPRS_REGNUM].addr = addr + 0 * 8;
+ cache->saved_regs[SPARC64_FSR_REGNUM].addr = addr + 1 * 8;
+
+ /* The following registers travel in the `mc_in' slots of
+ `mcontext_t'. */
+ addr = mcontext_addr + 24 * 8;
+ cache->saved_regs[SPARC64_NPC_REGNUM].addr = addr + 0 * 8;
+ cache->saved_regs[SPARC64_PC_REGNUM].addr = addr + 1 * 8;
+ cache->saved_regs[SPARC64_STATE_REGNUM].addr = addr + 2 * 8;
+ cache->saved_regs[SPARC64_Y_REGNUM].addr = addr + 4 * 8;
+
+ /* The `global' and `out' registers travel in the `mc_global' and
+ `mc_out' slots of `mcontext_t', except for %g0. Since %g0 is
+ always zero, keep the identity encoding. */
+ for (regnum = SPARC_G1_REGNUM, addr = mcontext_addr + 8;
+ regnum <= SPARC_O7_REGNUM; regnum++, addr += 8)
+ cache->saved_regs[regnum].addr = addr;
+
+ /* The `local' and `in' registers have been saved in the register
+ save area. */
+ addr = cache->saved_regs[SPARC_SP_REGNUM].addr;
+ sp = get_frame_memory_unsigned (next_frame, addr, 8);
+ for (regnum = SPARC_L0_REGNUM, addr = sp + BIAS;
+ regnum <= SPARC_I7_REGNUM; regnum++, addr += 8)
+ cache->saved_regs[regnum].addr = addr;
+
+ /* The floating-point registers are only saved if the FEF bit in
+ %fprs has been set. */
+
+#define FPRS_FEF (1 << 2)
+
+ addr = cache->saved_regs[SPARC64_FPRS_REGNUM].addr;
+ fprs = get_frame_memory_unsigned (next_frame, addr, 8);
+ if (fprs & FPRS_FEF)
{
- if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1)
- supply_register (SPARC_F0_REGNUM + i, fpregs + (i * 4));
- }
+ for (regnum = SPARC_F0_REGNUM, addr = mcontext_addr + 32 * 8;
+ regnum <= SPARC_F31_REGNUM; regnum++, addr += 4)
+ cache->saved_regs[regnum].addr = addr;
- for (i = 0; i < 16; i++)
- {
- if (regnum == (SPARC64_F32_REGNUM + i) || regnum == -1)
- supply_register (SPARC64_F32_REGNUM + i, fpregs + (32 * 4) + (i * 8));
+ for (regnum = SPARC64_F32_REGNUM;
+ regnum <= SPARC64_F62_REGNUM; regnum++, addr += 8)
+ cache->saved_regs[regnum].addr = addr;
}
- if (regnum == SPARC64_FSR_REGNUM || regnum == -1)
- supply_register (SPARC64_FSR_REGNUM, fpregs + (32 * 4) + (16 * 8));
+ return cache;
}
-void
-sparc64fbsd_fill_fpreg (char *fpregs, int regnum)
+static void
+sparc64fbsd_sigtramp_frame_this_id (struct frame_info *next_frame,
+ void **this_cache,
+ struct frame_id *this_id)
{
- int i;
-
- for (i = 0; i < 32; i++)
- {
- if (regnum == (SPARC_F0_REGNUM + i) || regnum == -1)
- regcache_collect (SPARC_F0_REGNUM + i, fpregs + (i * 4));
- }
+ struct sparc_frame_cache *cache =
+ sparc64fbsd_sigtramp_frame_cache (next_frame, this_cache);
- for (i = 0; i < 16; i++)
- {
- if (regnum == (SPARC64_F32_REGNUM + i) || regnum == -1)
- regcache_collect (SPARC64_F32_REGNUM + i, fpregs + (32 * 4) + (i * 8));
- }
-
- if (regnum == SPARC64_FSR_REGNUM || regnum == -1)
- regcache_collect (SPARC64_FSR_REGNUM, fpregs + (32 * 4) + (16 * 8));
+ (*this_id) = frame_id_build (cache->base, cache->pc);
}
-
static void
-fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which,
- CORE_ADDR ignore)
+sparc64fbsd_sigtramp_frame_prev_register (struct frame_info *next_frame,
+ void **this_cache,
+ int regnum, int *optimizedp,
+ enum lval_type *lvalp,
+ CORE_ADDR *addrp,
+ int *realnump, void *valuep)
{
- switch (which)
- {
- case 0: /* Integer registers */
- if (core_reg_size != sparc64fbsd_sizeof_struct_reg)
- warning ("Wrong size register set in core file.");
- else
- sparc64fbsd_supply_reg (core_reg_sect, -1);
- break;
-
- case 2: /* Floating pointer registers */
- if (core_reg_size != sparc64fbsd_sizeof_struct_fpreg)
- warning ("Wrong size FP register set in core file.");
- else
- sparc64fbsd_supply_fpreg (core_reg_sect, -1);
- break;
-
- default:
- /* Don't know what kind of register request this is; just ignore it. */
- break;
- }
+ struct sparc_frame_cache *cache =
+ sparc64fbsd_sigtramp_frame_cache (next_frame, this_cache);
+
+ trad_frame_prev_register (next_frame, cache->saved_regs, regnum,
+ optimizedp, lvalp, addrp, realnump, valuep);
}
-static struct core_fns sparc64fbsd_core_fns =
+static const struct frame_unwind sparc64fbsd_sigtramp_frame_unwind =
{
- bfd_target_elf_flavour, /* core_flavour */
- default_check_format, /* check_format */
- default_core_sniffer, /* core_sniffer */
- fetch_core_registers, /* core_read_registers */
- NULL
+ SIGTRAMP_FRAME,
+ sparc64fbsd_sigtramp_frame_this_id,
+ sparc64fbsd_sigtramp_frame_prev_register
};
+
+static const struct frame_unwind *
+sparc64fbsd_sigtramp_frame_sniffer (struct frame_info *next_frame)
+{
+ CORE_ADDR pc = frame_pc_unwind (next_frame);
+ char *name;
+
+ find_pc_partial_function (pc, &name, NULL, NULL);
+ if (sparc64fbsd_pc_in_sigtramp (pc, name))
+ return &sparc64fbsd_sigtramp_frame_unwind;
+
+ return NULL;
+}
static void
sparc64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
- /* Nothing yet. */
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+
+ tdep->gregset = XMALLOC (struct regset);
+ tdep->gregset->descr = &sparc64fbsd_gregset;
+ tdep->gregset->supply_regset = sparc64fbsd_supply_gregset;
+ tdep->sizeof_gregset = 256;
+
+ tdep->fpregset = XMALLOC (struct regset);
+ tdep->fpregset->supply_regset = sparc64fbsd_supply_fpregset;
+ tdep->sizeof_fpregset = 272;
+
+ set_gdbarch_pc_in_sigtramp (gdbarch, sparc64fbsd_pc_in_sigtramp);
+ frame_unwind_append_sniffer (gdbarch, sparc64fbsd_sigtramp_frame_sniffer);
+
+ sparc64_init_abi (info, gdbarch);
}
/* Provide a prototype to silence -Wmissing-prototypes. */
@@ -232,6 +222,4 @@ _initialize_sparc64fbsd_tdep (void)
{
gdbarch_register_osabi (bfd_arch_sparc, bfd_mach_sparc_v9,
GDB_OSABI_FREEBSD_ELF, sparc64fbsd_init_abi);
-
- add_core_fns (&sparc64fbsd_core_fns);
}
diff --git a/gdb/sparc64nbsd-nat.c b/gdb/sparc64nbsd-nat.c
index c68b96b6a73..91577039eb3 100644
--- a/gdb/sparc64nbsd-nat.c
+++ b/gdb/sparc64nbsd-nat.c
@@ -1,6 +1,6 @@
-/* Native-dependent code for UltraSPARC systems running NetBSD.
- Copyright 2002, 2003 Free Software Foundation, Inc.
- Contributed by Wasabi Systems, Inc.
+/* Native-dependent code for NetBSD/sparc64.
+
+ Copyright 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -20,189 +20,120 @@
Boston, MA 02111-1307, USA. */
#include "defs.h"
-#include "inferior.h"
-#include "regcache.h"
-#include "sparc-tdep.h"
-#include "sparcnbsd-tdep.h"
+#include "sparc64-tdep.h"
+#include "sparc-nat.h"
-#include <sys/types.h>
-#include <sys/ptrace.h>
-#include <machine/reg.h>
+/* NetBSD is different from the other OSes that support both SPARC and
+ UltraSPARC in that the result of ptrace(2) depends on whether the
+ traced process is 32-bit or 64-bit. */
-/* NOTE: We don't bother with any of the deferred_store nonsense; it
- makes things a lot more complicated than they need to be. */
+static void
+sparc64nbsd_supply_gregset (const struct sparc_gregset *gregset,
+ struct regcache *regcache,
+ int regnum, const void *gregs)
+{
+ int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
-/* Determine if PT_GETREGS fetches this register. */
-static int
-getregs_supplies (int regno)
+ if (sparc32)
+ sparc32_supply_gregset (&sparc32nbsd_gregset, regcache, regnum, gregs);
+ else
+ sparc64_supply_gregset (&sparc64nbsd_gregset, regcache, regnum, gregs);
+}
+
+static void
+sparc64nbsd_collect_gregset (const struct sparc_gregset *gregset,
+ const struct regcache *regcache,
+ int regnum, void *gregs)
+{
+ int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+
+ if (sparc32)
+ sparc32_collect_gregset (&sparc32nbsd_gregset, regcache, regnum, gregs);
+ else
+ sparc64_collect_gregset (&sparc64nbsd_gregset, regcache, regnum, gregs);
+}
+
+static void
+sparc64nbsd_supply_fpregset (struct regcache *regcache,
+ int regnum, const void *fpregs)
+{
+ int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+
+ if (sparc32)
+ sparc32_supply_fpregset (regcache, regnum, fpregs);
+ else
+ sparc64_supply_fpregset (regcache, regnum, fpregs);
+}
+
+static void
+sparc64nbsd_collect_fpregset (const struct regcache *regcache,
+ int regnum, void *fpregs)
{
- /* FIXME: PS_REGNUM for 32-bit code. */
- return (regno == TSTATE_REGNUM
- || regno == PC_REGNUM
- || regno == DEPRECATED_NPC_REGNUM
- || regno == Y_REGNUM
- || (regno >= G0_REGNUM && regno <= G7_REGNUM)
- || (regno >= O0_REGNUM && regno <= O7_REGNUM)
- /* stack regs (handled by sparcnbsd_supply_reg) */
- || (regno >= L0_REGNUM && regno <= I7_REGNUM));
+ int sparc32 = (gdbarch_ptr_bit (current_gdbarch) == 32);
+
+ if (sparc32)
+ sparc32_collect_fpregset (regcache, regnum, fpregs);
+ else
+ sparc64_collect_fpregset (regcache, regnum, fpregs);
}
-/* Determine if PT_GETFPREGS fetches this register. */
+/* Determine whether `gregset_t' contains register REGNUM. */
+
static int
-getfpregs_supplies (int regno)
+sparc64nbsd_gregset_supplies_p (int regnum)
{
- return ((regno >= FP0_REGNUM && regno <= (FP0_REGNUM + 47))
- || regno == FPS_REGNUM);
+ if (gdbarch_ptr_bit (current_gdbarch) == 32)
+ return sparc32_gregset_supplies_p (regnum);
+
+ /* Integer registers. */
+ if ((regnum >= SPARC_G1_REGNUM && regnum <= SPARC_G7_REGNUM)
+ || (regnum >= SPARC_O0_REGNUM && regnum <= SPARC_O7_REGNUM)
+ || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_L7_REGNUM)
+ || (regnum >= SPARC_I0_REGNUM && regnum <= SPARC_I7_REGNUM))
+ return 1;
+
+ /* Control registers. */
+ if (regnum == SPARC64_PC_REGNUM
+ || regnum == SPARC64_NPC_REGNUM
+ || regnum == SPARC64_STATE_REGNUM
+ || regnum == SPARC64_Y_REGNUM)
+ return 1;
+
+ return 0;
}
-void
-fetch_inferior_registers (int regno)
+/* Determine whether `fpregset_t' contains register REGNUM. */
+
+static int
+sparc64nbsd_fpregset_supplies_p (int regnum)
{
- /* We don't use deferred stores. */
- if (deferred_stores)
- internal_error (__FILE__, __LINE__,
- "fetch_inferior_registers: deferred stores pending");
-
- if (regno == -1 || getregs_supplies (regno))
- {
- union {
- struct reg32 regs32;
- struct reg64 regs64;
- } regs;
-
- if (ptrace (PT_GETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &regs, 0) == -1)
- perror_with_name ("Couldn't get registers");
-
- if (gdbarch_ptr_bit (current_gdbarch) == 32)
- sparcnbsd_supply_reg32 ((char *) &regs.regs32, regno);
- else
- sparcnbsd_supply_reg64 ((char *) &regs.regs64, regno);
- if (regno != -1)
- return;
- }
-
- if (regno == -1 || getfpregs_supplies (regno))
- {
- union {
- struct fpreg32 fpregs32;
- struct fpreg64 fpregs64;
- } fpregs;
-
- if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
- perror_with_name ("Couldn't get floating point registers");
-
- if (gdbarch_ptr_bit (current_gdbarch) == 32)
- sparcnbsd_supply_fpreg32 ((char *) &fpregs.fpregs32, regno);
- else
- sparcnbsd_supply_fpreg64 ((char *) &fpregs.fpregs64, regno);
- if (regno != -1)
- return;
- }
+ if (gdbarch_ptr_bit (current_gdbarch) == 32)
+ return sparc32_fpregset_supplies_p (regnum);
+
+ /* Floating-point registers. */
+ if ((regnum >= SPARC_F0_REGNUM && regnum <= SPARC_F31_REGNUM)
+ || (regnum >= SPARC64_F32_REGNUM && regnum <= SPARC64_F62_REGNUM))
+ return 1;
+
+ /* Control registers. */
+ if (regnum == SPARC64_FSR_REGNUM)
+ return 1;
+
+ return 0;
}
+
+/* Provide a prototype to silence -Wmissing-prototypes. */
+void _initialize_sparcnbsd_nat (void);
+
void
-store_inferior_registers (int regno)
+_initialize_sparcnbsd_nat (void)
{
- /* We don't use deferred stores. */
- if (deferred_stores)
- internal_error (__FILE__, __LINE__,
- "store_inferior_registers: deferred stores pending");
-
- if (regno == -1 || getregs_supplies (regno))
- {
- union {
- struct reg32 regs32;
- struct reg64 regs64;
- } regs;
-
- if (ptrace (PT_GETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &regs, 0) == -1)
- perror_with_name ("Couldn't get registers");
-
- if (gdbarch_ptr_bit (current_gdbarch) == 32)
- sparcnbsd_fill_reg32 ((char *) &regs.regs32, regno);
- else
- sparcnbsd_fill_reg64 ((char *) &regs.regs64, regno);
-
- if (ptrace (PT_SETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &regs, 0) == -1)
- perror_with_name ("Couldn't write registers");
-
- /* Deal with the stack regs. */
- if (regno == -1 || regno == SP_REGNUM
- || (regno >= L0_REGNUM && regno <= I7_REGNUM))
- {
- CORE_ADDR sp = read_register (SP_REGNUM);
- int i;
- char buf[8];
-
- if (sp & 1)
- {
- /* Registers are 64-bit. */
- sp += 2047;
-
- for (i = L0_REGNUM; i <= I7_REGNUM; i++)
- {
- if (regno == -1 || regno == SP_REGNUM || regno == i)
- {
- regcache_collect (i, buf);
- target_write_memory (sp + ((i - L0_REGNUM) * 8),
- buf, sizeof (buf));
- }
- }
- }
- else
- {
- /* Registers are 32-bit. Toss any sign-extension of the stack
- pointer.
-
- FIXME: We don't currently handle 32-bit code in a binary
- that indicated LP64. Do we have to care about that? */
- if (gdbarch_ptr_bit (current_gdbarch) != 32)
- internal_error
- (__FILE__, __LINE__,
- "store_inferior_registers: 32-bit code in 64-bit inferior");
-
- sp &= 0xffffffffUL;
- for (i = L0_REGNUM; i <= I7_REGNUM; i++)
- {
- if (regno == -1 || regno == SP_REGNUM || regno == i)
- {
- regcache_collect (i, buf);
- target_write_memory (sp + ((i - L0_REGNUM) * 4), buf, 4);
- }
- }
- }
- }
-
- if (regno != -1)
- return;
- }
-
- if (regno == -1 || getfpregs_supplies (regno))
- {
- union {
- struct fpreg32 fpregs32;
- struct fpreg64 fpregs64;
- } fpregs;
-
- if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
- perror_with_name ("Couldn't get floating point registers");
-
- if (gdbarch_ptr_bit (current_gdbarch) == 32)
- sparcnbsd_fill_fpreg32 ((char *) &fpregs.fpregs32, regno);
- else
- sparcnbsd_fill_fpreg64 ((char *) &fpregs.fpregs64, regno);
-
- if (ptrace (PT_SETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
- perror_with_name ("Couldn't write floating point registers");
-
- if (regno != -1)
- return;
- }
+ sparc_supply_gregset = sparc64nbsd_supply_gregset;
+ sparc_collect_gregset = sparc64nbsd_collect_gregset;
+ sparc_supply_fpregset = sparc64nbsd_supply_fpregset;
+ sparc_collect_fpregset = sparc64nbsd_collect_fpregset;
+ sparc_gregset_supplies_p = sparc64nbsd_gregset_supplies_p;
+ sparc_fpregset_supplies_p = sparc64nbsd_fpregset_supplies_p;
}
diff --git a/gdb/sparcbsd-nat.c b/gdb/sparcbsd-nat.c
deleted file mode 100644
index 8ab95375d08..00000000000
--- a/gdb/sparcbsd-nat.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/* Native-dependent code for SPARC BSD's.
-
- Copyright 2002, 2003 Free Software Foundation, Inc.
- Based on code contributed by Wasabi Systems, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "defs.h"
-#include "inferior.h"
-#include "regcache.h"
-
-/* FIXME: Should be changed to sparc-tdep.h when the old code is gone. */
-#include "sparc64-tdep.h"
-#include "sparcbsd-nat.h"
-
-#include <sys/types.h>
-#include <sys/ptrace.h>
-#include <machine/reg.h>
-
-/* Functions translating between `struct reg' and `struct fpreg' and
- GDB's register cache. */
-void (*sparcbsd_supply_reg)(const char *, int);
-void (*sparcbsd_fill_reg)(char *, int);
-void (*sparcbsd_supply_fpreg)(const char *, int);
-void (*sparcbsd_fill_fpreg)(char *, int);
-
-/* Functions indication whether `struct reg' or `struct fpreg' provides
- a certain register. */
-int (*sparcbsd_reg_supplies_p)(int);
-int (*sparcbsd_fpreg_supplies_p)(int);
-
-void
-fetch_inferior_registers (int regnum)
-{
- if (regnum == -1 || sparcbsd_reg_supplies_p (regnum))
- {
- struct reg regs;
-
- if (ptrace (PT_GETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &regs, 0) == -1)
- perror_with_name ("Couldn't get registers");
-
- sparcbsd_supply_reg ((char *) &regs, regnum);
- if (regnum != -1)
- return;
- }
-
- if (regnum == -1 || sparcbsd_fpreg_supplies_p (regnum))
- {
- struct fpreg fpregs;
-
- if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
- perror_with_name ("Couldn't get floating-point registers");
-
- sparcbsd_supply_fpreg ((char *) &fpregs, regnum);
- if (regnum != -1)
- return;
- }
-}
-
-void
-store_inferior_registers (int regnum)
-{
- if (regnum == -1 || sparcbsd_reg_supplies_p (regnum))
- {
- struct reg regs;
-
- if (ptrace (PT_GETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &regs, 0) == -1)
- perror_with_name ("Couldn't get registers");
-
- sparcbsd_fill_reg ((char *) &regs, regnum);
-
- if (ptrace (PT_SETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &regs, 0) == -1)
- perror_with_name ("Couldn't write registers");
-
- /* Deal with the stack regs. */
- if (regnum == -1 || regnum == SPARC_SP_REGNUM
- || (regnum >= SPARC_L0_REGNUM && regnum <= SPARC_I7_REGNUM))
- {
- ULONGEST sp;
-
- regcache_cooked_read_unsigned (current_regcache,
- SPARC_SP_REGNUM, &sp);
- sparc_fill_rwindow (sp, regnum);
- }
-
- if (regnum != -1)
- return;
- }
-
- if (regnum == -1 || sparcbsd_fpreg_supplies_p (regnum))
- {
- struct fpreg fpregs;
-
- if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
- perror_with_name ("Couldn't get floating-point registers");
-
- sparcbsd_fill_fpreg ((char *) &fpregs, regnum);
-
- if (ptrace (PT_SETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
- perror_with_name ("Couldn't write floating-point registers");
-
- if (regnum != -1)
- return;
- }
-}
diff --git a/gdb/sparcbsd-nat.h b/gdb/sparcbsd-nat.h
deleted file mode 100644
index 326d669fe28..00000000000
--- a/gdb/sparcbsd-nat.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Native-dependent code for SPARC BSD's.
-
- Copyright 2003 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifndef SPARCBSD_NAT_H
-#define SPARCBSD_NAT_H
-
-/* Functions translating between `struct reg' and `struct fpreg' and
- GDB's register cache. */
-extern void (*sparcbsd_supply_reg)(const char *, int);
-extern void (*sparcbsd_fill_reg)(char *, int);
-extern void (*sparcbsd_supply_fpreg)(const char *, int);
-extern void (*sparcbsd_fill_fpreg)(char *, int);
-
-/* Functions indication whether `struct reg' or `struct fpreg' provides
- a certain register. */
-extern int (*sparcbsd_reg_supplies_p)(int);
-extern int (*sparcbsd_fpreg_supplies_p)(int);
-
-#endif /* sparcbsd-nat.h */
diff --git a/gdb/sparcnbsd-nat.c b/gdb/sparcnbsd-nat.c
index ef52746deae..9038ea334b6 100644
--- a/gdb/sparcnbsd-nat.c
+++ b/gdb/sparcnbsd-nat.c
@@ -1,6 +1,6 @@
-/* Native-dependent code for SPARC systems running NetBSD.
- Copyright 2002, 2003 Free Software Foundation, Inc.
- Contributed by Wasabi Systems, Inc.
+/* Native-dependent code for NetBSD/sparc.
+
+ Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -20,136 +20,15 @@
Boston, MA 02111-1307, USA. */
#include "defs.h"
-#include "inferior.h"
-#include "regcache.h"
#include "sparc-tdep.h"
-#include "sparcnbsd-tdep.h"
-
-#include <sys/types.h>
-#include <sys/ptrace.h>
-#include <machine/reg.h>
-
-/* NOTE: We don't bother with any of the deferred_store nonsense; it
- makes things a lot more complicated than they need to be. */
-
-/* Determine if PT_GETREGS fetches this register. */
-static int
-getregs_supplies (int regno)
-{
- return (regno == PS_REGNUM
- || regno == PC_REGNUM
- || regno == DEPRECATED_NPC_REGNUM
- || regno == Y_REGNUM
- || (regno >= G0_REGNUM && regno <= G7_REGNUM)
- || (regno >= O0_REGNUM && regno <= O7_REGNUM)
- /* stack regs (handled by sparcnbsd_supply_reg) */
- || (regno >= L0_REGNUM && regno <= I7_REGNUM));
-}
+#include "sparc-nat.h"
-/* Determine if PT_GETFPREGS fetches this register. */
-static int
-getfpregs_supplies (int regno)
-{
- return ((regno >= FP0_REGNUM && regno <= (FP0_REGNUM + 31))
- || regno == FPS_REGNUM);
-}
+/* Provide a prototype to silence -Wmissing-prototypes. */
+void _initialize_sparcnbsd_nat (void);
void
-fetch_inferior_registers (int regno)
+_initialize_sparcnbsd_nat (void)
{
- /* We don't use deferred stores. */
- if (deferred_stores)
- internal_error (__FILE__, __LINE__,
- "fetch_inferior_registers: deferred stores pending");
-
- if (regno == -1 || getregs_supplies (regno))
- {
- struct reg regs;
-
- if (ptrace (PT_GETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &regs, 0) == -1)
- perror_with_name ("Couldn't get registers");
-
- sparcnbsd_supply_reg32 ((char *) &regs, regno);
- if (regno != -1)
- return;
- }
-
- if (regno == -1 || getfpregs_supplies (regno))
- {
- struct fpreg fpregs;
-
- if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
- perror_with_name ("Couldn't get floating point registers");
-
- sparcnbsd_supply_fpreg32 ((char *) &fpregs, regno);
- if (regno != -1)
- return;
- }
-}
-
-void
-store_inferior_registers (int regno)
-{
- /* We don't use deferred stores. */
- if (deferred_stores)
- internal_error (__FILE__, __LINE__,
- "store_inferior_registers: deferred stores pending");
-
- if (regno == -1 || getregs_supplies (regno))
- {
- struct reg regs;
-
- if (ptrace (PT_GETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &regs, 0) == -1)
- perror_with_name ("Couldn't get registers");
-
- sparcnbsd_fill_reg32 ((char *) &regs, regno);
-
- if (ptrace (PT_SETREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &regs, 0) == -1)
- perror_with_name ("Couldn't write registers");
-
- /* Deal with the stack regs. */
- if (regno == -1 || regno == SP_REGNUM
- || (regno >= L0_REGNUM && regno <= I7_REGNUM))
- {
- CORE_ADDR sp = read_register (SP_REGNUM);
- int i;
- char buf[4];
-
- for (i = L0_REGNUM; i <= I7_REGNUM; i++)
- {
- if (regno == -1 || regno == SP_REGNUM || regno == i)
- {
- regcache_collect (i, buf);
- target_write_memory (sp + ((i - L0_REGNUM) * 4),
- buf, sizeof (buf));
- }
- }
- }
-
- if (regno != -1)
- return;
- }
-
- if (regno == -1 || getfpregs_supplies (regno))
- {
- struct fpreg fpregs;
-
- if (ptrace (PT_GETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
- perror_with_name ("Couldn't get floating point registers");
-
- sparcnbsd_fill_fpreg32 ((char *) &fpregs, regno);
-
- if (ptrace (PT_SETFPREGS, PIDGET (inferior_ptid),
- (PTRACE_ARG3_TYPE) &fpregs, 0) == -1)
- perror_with_name ("Couldn't write floating point registers");
-
- if (regno != -1)
- return;
- }
+ sparc_gregset = &sparc32nbsd_gregset;
}
diff --git a/gdb/sparcnbsd-tdep.c b/gdb/sparcnbsd-tdep.c
index f2595074048..7a23ff3134c 100644
--- a/gdb/sparcnbsd-tdep.c
+++ b/gdb/sparcnbsd-tdep.c
@@ -1,5 +1,6 @@
-/* Target-dependent code for SPARC systems running NetBSD.
- Copyright 2002, 2003 Free Software Foundation, Inc.
+/* Target-dependent code for NetBSD/sparc.
+
+ Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Wasabi Systems, Inc.
This file is part of GDB.
@@ -20,495 +21,274 @@
Boston, MA 02111-1307, USA. */
#include "defs.h"
+#include "floatformat.h"
+#include "frame.h"
+#include "frame-unwind.h"
#include "gdbcore.h"
-#include "regcache.h"
-#include "target.h"
-#include "value.h"
#include "osabi.h"
+#include "regcache.h"
+#include "regset.h"
+#include "solib-svr4.h"
+#include "symtab.h"
+#include "trad-frame.h"
+#include "gdb_assert.h"
#include "gdb_string.h"
#include "sparc-tdep.h"
-#include "sparcnbsd-tdep.h"
#include "nbsd-tdep.h"
-#include "solib-svr4.h"
-
-#define REG32_OFFSET_PSR (0 * 4)
-#define REG32_OFFSET_PC (1 * 4)
-#define REG32_OFFSET_NPC (2 * 4)
-#define REG32_OFFSET_Y (3 * 4)
-#define REG32_OFFSET_GLOBAL (4 * 4)
-#define REG32_OFFSET_OUT (12 * 4)
-
-#define REG64_OFFSET_TSTATE (0 * 8)
-#define REG64_OFFSET_PC (1 * 8)
-#define REG64_OFFSET_NPC (2 * 8)
-#define REG64_OFFSET_Y (3 * 8)
-#define REG64_OFFSET_GLOBAL (4 * 8)
-#define REG64_OFFSET_OUT (12 * 8)
-
-void
-sparcnbsd_supply_reg32 (char *regs, int regno)
+const struct sparc_gregset sparc32nbsd_gregset =
{
- int i;
-
- if (regno == PS_REGNUM || regno == -1)
- supply_register (PS_REGNUM, regs + REG32_OFFSET_PSR);
-
- if (regno == PC_REGNUM || regno == -1)
- supply_register (PC_REGNUM, regs + REG32_OFFSET_PC);
-
- if (regno == DEPRECATED_NPC_REGNUM || regno == -1)
- supply_register (DEPRECATED_NPC_REGNUM, regs + REG32_OFFSET_NPC);
-
- if (regno == Y_REGNUM || regno == -1)
- supply_register (Y_REGNUM, regs + REG32_OFFSET_Y);
-
- if ((regno >= G0_REGNUM && regno <= G7_REGNUM) || regno == -1)
- {
- if (regno == G0_REGNUM || regno == -1)
- supply_register (G0_REGNUM, NULL); /* %g0 is always zero */
- for (i = G1_REGNUM; i <= G7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- supply_register (i, regs + REG32_OFFSET_GLOBAL +
- ((i - G0_REGNUM) * 4));
- }
- }
-
- if ((regno >= O0_REGNUM && regno <= O7_REGNUM) || regno == -1)
- {
- for (i = O0_REGNUM; i <= O7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- supply_register (i, regs + REG32_OFFSET_OUT +
- ((i - O0_REGNUM) * 4));
- }
- }
+ 0 * 4, /* %psr */
+ 1 * 4, /* %pc */
+ 2 * 4, /* %npc */
+ 3 * 4, /* %y */
+ -1, /* %wim */
+ -1, /* %tbr */
+ 5 * 4, /* %g1 */
+ -1 /* %l0 */
+};
- /* Inputs and Locals are stored onto the stack by by the kernel. */
- if ((regno >= L0_REGNUM && regno <= I7_REGNUM) || regno == -1)
- {
- CORE_ADDR sp = read_register (SP_REGNUM);
- char buf[4];
-
- for (i = L0_REGNUM; i <= I7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- {
- target_read_memory (sp + ((i - L0_REGNUM) * 4),
- buf, sizeof (buf));
- supply_register (i, buf);
- }
- }
- }
+static void
+sparc32nbsd_supply_gregset (const struct regset *regset,
+ struct regcache *regcache,
+ int regnum, const void *gregs, size_t len)
+{
+ sparc32_supply_gregset (regset->descr, regcache, regnum, gregs);
- /* FIXME: If we don't set these valid, read_register_bytes() rereads
- all the regs every time it is called! */
- if (regno == WIM_REGNUM || regno == -1)
- supply_register (WIM_REGNUM, NULL);
- if (regno == TBR_REGNUM || regno == -1)
- supply_register (TBR_REGNUM, NULL);
- if (regno == CPS_REGNUM || regno == -1)
- supply_register (CPS_REGNUM, NULL);
+ /* Traditional NetBSD core files don't use multiple register sets.
+ Instead, the general-purpose and floating-point registers are
+ lumped together in a single section. */
+ if (len >= 212)
+ sparc32_supply_fpregset (regcache, regnum, (const char *) gregs + 80);
}
-void
-sparcnbsd_supply_reg64 (char *regs, int regno)
+static void
+sparc32nbsd_supply_fpregset (const struct regset *regset,
+ struct regcache *regcache,
+ int regnum, const void *fpregs, size_t len)
{
- int i;
- char buf[8];
-
- if (regno == TSTATE_REGNUM || regno == -1)
- supply_register (PS_REGNUM, regs + REG64_OFFSET_TSTATE);
+ sparc32_supply_fpregset (regcache, regnum, fpregs);
+}
- if (regno == PC_REGNUM || regno == -1)
- supply_register (PC_REGNUM, regs + REG64_OFFSET_PC);
+
+/* Signal trampolines. */
- if (regno == DEPRECATED_NPC_REGNUM || regno == -1)
- supply_register (DEPRECATED_NPC_REGNUM, regs + REG64_OFFSET_NPC);
+/* The following variables describe the location of an on-stack signal
+ trampoline. The current values correspond to the memory layout for
+ NetBSD 1.3 and up. These shouldn't be necessary for NetBSD 2.0 and
+ up, since NetBSD uses signal trampolines provided by libc now. */
- if (regno == Y_REGNUM || regno == -1)
- {
- memset (buf, 0, sizeof (buf));
- memcpy (&buf[4], regs + REG64_OFFSET_Y, 4);
- supply_register (Y_REGNUM, buf);
- }
+static const CORE_ADDR sparc32nbsd_sigtramp_start = 0xeffffef0;
+static const CORE_ADDR sparc32nbsd_sigtramp_end = 0xeffffff0;
- if ((regno >= G0_REGNUM && regno <= G7_REGNUM) || regno == -1)
- {
- if (regno == G0_REGNUM || regno == -1)
- supply_register (G0_REGNUM, NULL); /* %g0 is always zero */
- for (i = G1_REGNUM; i <= G7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- supply_register (i, regs + REG64_OFFSET_GLOBAL +
- ((i - G0_REGNUM) * 8));
- }
- }
-
- if ((regno >= O0_REGNUM && regno <= O7_REGNUM) || regno == -1)
- {
- for (i = O0_REGNUM; i <= O7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- supply_register (i, regs + REG64_OFFSET_OUT +
- ((i - O0_REGNUM) * 8));
- }
- }
-
- /* Inputs and Locals are stored onto the stack by by the kernel. */
- if ((regno >= L0_REGNUM && regno <= I7_REGNUM) || regno == -1)
- {
- CORE_ADDR sp = read_register (SP_REGNUM);
- char buf[8];
-
- if (sp & 1)
- {
- /* Registers are 64-bit. */
- sp += 2047;
-
- for (i = L0_REGNUM; i <= I7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- {
- target_read_memory (sp + ((i - L0_REGNUM) * 8),
- buf, sizeof (buf));
- supply_register (i, buf);
- }
- }
- }
- else
- {
- /* Registers are 32-bit. Toss any sign-extension of the stack
- pointer, clear out the top half of the temporary buffer, and
- put the register value in the bottom half. */
-
- sp &= 0xffffffffUL;
- memset (buf, 0, sizeof (buf));
- for (i = L0_REGNUM; i <= I7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- {
- target_read_memory (sp + ((i - L0_REGNUM) * 4),
- &buf[4], sizeof (buf));
- supply_register (i, buf);
- }
- }
- }
- }
+static int
+sparc32nbsd_pc_in_sigtramp (CORE_ADDR pc, char *name)
+{
+ if (pc >= sparc32nbsd_sigtramp_start && pc < sparc32nbsd_sigtramp_end)
+ return 1;
- /* FIXME: If we don't set these valid, read_register_bytes() rereads
- all the regs every time it is called! */
- if (regno == WIM_REGNUM || regno == -1)
- supply_register (WIM_REGNUM, NULL);
- if (regno == TBR_REGNUM || regno == -1)
- supply_register (TBR_REGNUM, NULL);
- if (regno == CPS_REGNUM || regno == -1)
- supply_register (CPS_REGNUM, NULL);
+ return nbsd_pc_in_sigtramp (pc, name);
}
-void
-sparcnbsd_fill_reg32 (char *regs, int regno)
+struct trad_frame_saved_reg *
+sparc32nbsd_sigcontext_saved_regs (struct frame_info *next_frame)
{
- int i;
-
- if (regno == PS_REGNUM || regno == -1)
- regcache_collect (PS_REGNUM, regs + REG32_OFFSET_PSR);
-
- if (regno == PC_REGNUM || regno == -1)
- regcache_collect (PC_REGNUM, regs + REG32_OFFSET_PC);
-
- if (regno == DEPRECATED_NPC_REGNUM || regno == -1)
- regcache_collect (DEPRECATED_NPC_REGNUM, regs + REG32_OFFSET_NPC);
-
- if (regno == Y_REGNUM || regno == -1)
- regcache_collect (Y_REGNUM, regs + REG32_OFFSET_Y);
-
- if ((regno >= G0_REGNUM && regno <= G7_REGNUM) || regno == -1)
+ struct trad_frame_saved_reg *saved_regs;
+ CORE_ADDR addr, sigcontext_addr;
+ int regnum, delta;
+ ULONGEST psr;
+
+ saved_regs = trad_frame_alloc_saved_regs (next_frame);
+
+ /* We find the appropriate instance of `struct sigcontext' at a
+ fixed offset in the signal frame. */
+ addr = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM);
+ sigcontext_addr = addr + 64 + 16;
+
+ /* The registers are saved in bits and pieces scattered all over the
+ place. The code below records their location on the assumption
+ that the part of the signal trampoline that saves the state has
+ been executed. */
+
+ saved_regs[SPARC_SP_REGNUM].addr = sigcontext_addr + 8;
+ saved_regs[SPARC32_PC_REGNUM].addr = sigcontext_addr + 12;
+ saved_regs[SPARC32_NPC_REGNUM].addr = sigcontext_addr + 16;
+ saved_regs[SPARC32_PSR_REGNUM].addr = sigcontext_addr + 20;
+ saved_regs[SPARC_G1_REGNUM].addr = sigcontext_addr + 24;
+ saved_regs[SPARC_O0_REGNUM].addr = sigcontext_addr + 28;
+
+ /* The remaining `global' registers and %y are saved in the `local'
+ registers. */
+ delta = SPARC_L0_REGNUM - SPARC_G0_REGNUM;
+ for (regnum = SPARC_G2_REGNUM; regnum <= SPARC_G7_REGNUM; regnum++)
+ saved_regs[regnum].realreg = regnum + delta;
+ saved_regs[SPARC32_Y_REGNUM].realreg = SPARC_L1_REGNUM;
+
+ /* The remaining `out' registers can be found in the current frame's
+ `in' registers. */
+ delta = SPARC_I0_REGNUM - SPARC_O0_REGNUM;
+ for (regnum = SPARC_O1_REGNUM; regnum <= SPARC_O5_REGNUM; regnum++)
+ saved_regs[regnum].realreg = regnum + delta;
+ saved_regs[SPARC_O7_REGNUM].realreg = SPARC_I7_REGNUM;
+
+ /* The `local' and `in' registers have been saved in the register
+ save area. */
+ addr = saved_regs[SPARC_SP_REGNUM].addr;
+ addr = get_frame_memory_unsigned (next_frame, addr, 4);
+ for (regnum = SPARC_L0_REGNUM;
+ regnum <= SPARC_I7_REGNUM; regnum++, addr += 4)
+ saved_regs[regnum].addr = addr;
+
+ /* The floating-point registers are only saved if the EF bit in %prs
+ has been set. */
+
+#define PSR_EF 0x00001000
+
+ addr = saved_regs[SPARC32_PSR_REGNUM].addr;
+ psr = get_frame_memory_unsigned (next_frame, addr, 4);
+ if (psr & PSR_EF)
{
- /* %g0 is always zero */
- for (i = G1_REGNUM; i <= G7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- regcache_collect (i, regs + REG32_OFFSET_GLOBAL +
- ((i - G0_REGNUM) * 4));
- }
- }
+ CORE_ADDR sp;
- if ((regno >= O0_REGNUM && regno <= O7_REGNUM) || regno == -1)
- {
- for (i = O0_REGNUM; i <= O7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- regcache_collect (i, regs + REG32_OFFSET_OUT +
- ((i - O0_REGNUM) * 4));
- }
+ sp = frame_unwind_register_unsigned (next_frame, SPARC_SP_REGNUM);
+ saved_regs[SPARC32_FSR_REGNUM].addr = sp + 96;
+ for (regnum = SPARC_F0_REGNUM, addr = sp + 96 + 8;
+ regnum <= SPARC_F31_REGNUM; regnum++, addr += 4)
+ saved_regs[regnum].addr = addr;
}
- /* Responsibility for the stack regs is pushed off onto the caller. */
+ return saved_regs;
}
-void
-sparcnbsd_fill_reg64 (char *regs, int regno)
+static struct sparc_frame_cache *
+sparc32nbsd_sigcontext_frame_cache (struct frame_info *next_frame,
+ void **this_cache)
{
- int i;
-
- if (regno == TSTATE_REGNUM || regno == -1)
- regcache_collect (TSTATE_REGNUM, regs + REG64_OFFSET_TSTATE);
-
- if (regno == PC_REGNUM || regno == -1)
- regcache_collect (PC_REGNUM, regs + REG64_OFFSET_PC);
+ struct sparc_frame_cache *cache;
+ CORE_ADDR addr;
- if (regno == DEPRECATED_NPC_REGNUM || regno == -1)
- regcache_collect (DEPRECATED_NPC_REGNUM, regs + REG64_OFFSET_NPC);
+ if (*this_cache)
+ return *this_cache;
- if (regno == Y_REGNUM || regno == -1)
- regcache_collect (Y_REGNUM, regs + REG64_OFFSET_Y);
+ cache = sparc_frame_cache (next_frame, this_cache);
+ gdb_assert (cache == *this_cache);
- if ((regno >= G0_REGNUM && regno <= G7_REGNUM) || regno == -1)
+ /* If we couldn't find the frame's function, we're probably dealing
+ with an on-stack signal trampoline. */
+ if (cache->pc == 0)
{
- /* %g0 is always zero */
- for (i = G1_REGNUM; i <= G7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- regcache_collect (i, regs + REG64_OFFSET_GLOBAL +
- ((i - G0_REGNUM) * 4));
- }
- }
+ cache->pc = sparc32nbsd_sigtramp_start;
- if ((regno >= O0_REGNUM && regno <= O7_REGNUM) || regno == -1)
- {
- for (i = O0_REGNUM; i <= O7_REGNUM; i++)
- {
- if (regno == i || regno == -1)
- regcache_collect (i, regs + REG64_OFFSET_OUT +
- ((i - O0_REGNUM) * 4));
- }
+ /* Since we couldn't find the frame's function, the cache was
+ initialized under the assumption that we're frameless. */
+ cache->frameless_p = 0;
+ addr = frame_unwind_register_unsigned (next_frame, SPARC_FP_REGNUM);
+ cache->base = addr;
}
- /* Responsibility for the stack regs is pushed off onto the caller. */
-}
+ cache->saved_regs = sparc32nbsd_sigcontext_saved_regs (next_frame);
-void
-sparcnbsd_supply_fpreg32 (char *fpregs, int regno)
-{
- int i;
-
- for (i = 0; i <= 31; i++)
- {
- if (regno == (FP0_REGNUM + i) || regno == -1)
- supply_register (FP0_REGNUM + i, fpregs + (i * 4));
- }
-
- if (regno == FPS_REGNUM || regno == -1)
- supply_register (FPS_REGNUM, fpregs + (32 * 4));
+ return cache;
}
-void
-sparcnbsd_supply_fpreg64 (char *fpregs, int regno)
+static void
+sparc32nbsd_sigcontext_frame_this_id (struct frame_info *next_frame,
+ void **this_cache,
+ struct frame_id *this_id)
{
- int i;
+ struct sparc_frame_cache *cache =
+ sparc32nbsd_sigcontext_frame_cache (next_frame, this_cache);
- for (i = 0; i <= 31; i++)
- {
- if (regno == (FP0_REGNUM + i) || regno == -1)
- supply_register (FP0_REGNUM + i, fpregs + (i * 4));
- }
-
- for (; i <= 47; i++)
- {
- if (regno == (FP0_REGNUM + i) || regno == -1)
- supply_register (FP0_REGNUM + i, fpregs + (32 * 4) + (i * 8));
- }
-
- if (regno == FPS_REGNUM || regno == -1)
- supply_register (FPS_REGNUM, fpregs + (32 * 4) + (16 * 8));
-
- /* XXX %gsr */
+ (*this_id) = frame_id_build (cache->base, cache->pc);
}
-void
-sparcnbsd_fill_fpreg32 (char *fpregs, int regno)
+static void
+sparc32nbsd_sigcontext_frame_prev_register (struct frame_info *next_frame,
+ void **this_cache,
+ int regnum, int *optimizedp,
+ enum lval_type *lvalp,
+ CORE_ADDR *addrp,
+ int *realnump, void *valuep)
{
- int i;
-
- for (i = 0; i <= 31; i++)
- {
- if (regno == (FP0_REGNUM + i) || regno == -1)
- regcache_collect (FP0_REGNUM + i, fpregs + (i * 4));
- }
+ struct sparc_frame_cache *cache =
+ sparc32nbsd_sigcontext_frame_cache (next_frame, this_cache);
- if (regno == FPS_REGNUM || regno == -1)
- regcache_collect (FPS_REGNUM, fpregs + (32 * 4));
+ trad_frame_prev_register (next_frame, cache->saved_regs, regnum,
+ optimizedp, lvalp, addrp, realnump, valuep);
}
-void
-sparcnbsd_fill_fpreg64 (char *fpregs, int regno)
+static const struct frame_unwind sparc32nbsd_sigcontext_frame_unwind =
{
- int i;
-
- for (i = 0; i <= 31; i++)
- {
- if (regno == (FP0_REGNUM + i) || regno == -1)
- regcache_collect (FP0_REGNUM + i, fpregs + (i * 4));
- }
-
- for (; i <= 47; i++)
- {
- if (regno == (FP0_REGNUM + i) || regno == -1)
- regcache_collect (FP0_REGNUM + i, fpregs + (32 * 4) + (i * 8));
- }
-
- if (regno == FPS_REGNUM || regno == -1)
- regcache_collect (FPS_REGNUM, fpregs + (32 * 4) + (16 * 8));
-
- /* XXX %gsr */
-}
+ SIGTRAMP_FRAME,
+ sparc32nbsd_sigcontext_frame_this_id,
+ sparc32nbsd_sigcontext_frame_prev_register
+};
-/* Unlike other NetBSD implementations, the SPARC port historically used
- .reg and .reg2 (see bfd/netbsd-core.c), and as such, we can share one
- routine for a.out and ELF core files. */
-static void
-fetch_core_registers (char *core_reg_sect, unsigned core_reg_size, int which,
- CORE_ADDR ignore)
+static const struct frame_unwind *
+sparc32nbsd_sigtramp_frame_sniffer (struct frame_info *next_frame)
{
- int reg_size, fpreg_size;
+ CORE_ADDR pc = frame_pc_unwind (next_frame);
+ char *name;
- if (gdbarch_ptr_bit (current_gdbarch) == 32)
+ find_pc_partial_function (pc, &name, NULL, NULL);
+ if (sparc32nbsd_pc_in_sigtramp (pc, name))
{
- reg_size = (20 * 4);
- fpreg_size = (33 * 4);
- }
- else
- {
- reg_size = (20 * 8);
- fpreg_size = (64 * 4)
- + 8 /* fsr */
- + 4 /* gsr */
- + 4; /* pad */
+ if (name == NULL || strncmp (name, "__sigtramp_sigcontext", 21))
+ return &sparc32nbsd_sigcontext_frame_unwind;
}
- switch (which)
- {
- case 0: /* Integer registers */
- if (core_reg_size != reg_size)
- warning ("Wrong size register set in core file.");
- else if (gdbarch_ptr_bit (current_gdbarch) == 32)
- sparcnbsd_supply_reg32 (core_reg_sect, -1);
- else
- sparcnbsd_supply_reg64 (core_reg_sect, -1);
- break;
-
- case 2: /* Floating pointer registers */
- if (core_reg_size != fpreg_size)
- warning ("Wrong size FP register set in core file.");
- else if (gdbarch_ptr_bit (current_gdbarch) == 32)
- sparcnbsd_supply_fpreg32 (core_reg_sect, -1);
- else
- sparcnbsd_supply_fpreg64 (core_reg_sect, -1);
- break;
-
- default:
- /* Don't know what kind of register request this is; just ignore it. */
- break;
- }
+ return NULL;
}
+
-static struct core_fns sparcnbsd_core_fns =
-{
- bfd_target_unknown_flavour, /* core_flavour */
- default_check_format, /* check_format */
- default_core_sniffer, /* core_sniffer */
- fetch_core_registers, /* core_read_registers */
- NULL
-};
-
-static struct core_fns sparcnbsd_elfcore_fns =
-{
- bfd_target_elf_flavour, /* core_flavour */
- default_check_format, /* check_format */
- default_core_sniffer, /* core_sniffer */
- fetch_core_registers, /* core_read_registers */
- NULL
-};
-
-/* FIXME: Need PC_IN_SIGTRAMP() support, but NetBSD/sparc signal trampolines
- aren't easily identified. */
+/* Return non-zero if we are in a shared library trampoline code stub. */
static int
-sparcnbsd_get_longjmp_target_32 (CORE_ADDR *pc)
+sparcnbsd_aout_in_solib_call_trampoline (CORE_ADDR pc, char *name)
{
- CORE_ADDR jb_addr;
- char buf[4];
-
- jb_addr = read_register (O0_REGNUM);
-
- if (target_read_memory (jb_addr + 12, buf, sizeof (buf)))
- return 0;
-
- *pc = extract_unsigned_integer (buf, sizeof (buf));
-
- return 1;
+ return (name && !strcmp (name, "_DYNAMIC"));
}
-static int
-sparcnbsd_get_longjmp_target_64 (CORE_ADDR *pc)
+static void
+sparc32nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
- CORE_ADDR jb_addr;
- char buf[8];
-
- jb_addr = read_register (O0_REGNUM);
+ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- if (target_read_memory (jb_addr + 16, buf, sizeof (buf)))
- return 0;
+ /* NetBSD doesn't support the 128-bit `long double' from the psABI. */
+ set_gdbarch_long_double_bit (gdbarch, 64);
+ set_gdbarch_long_double_format (gdbarch, &floatformat_ieee_double_big);
- *pc = extract_unsigned_integer (buf, sizeof (buf));
-
- return 1;
-}
+ tdep->gregset = XMALLOC (struct regset);
+ tdep->gregset->descr = &sparc32nbsd_gregset;
+ tdep->gregset->supply_regset = sparc32nbsd_supply_gregset;
+ tdep->sizeof_gregset = 20 * 4;
-static int
-sparcnbsd_aout_in_solib_call_trampoline (CORE_ADDR pc, char *name)
-{
- if (strcmp (name, "_DYNAMIC") == 0)
- return 1;
+ tdep->fpregset = XMALLOC (struct regset);
+ tdep->fpregset->supply_regset = sparc32nbsd_supply_fpregset;
+ tdep->sizeof_fpregset = 33 * 4;
- return 0;
+ set_gdbarch_pc_in_sigtramp (gdbarch, sparc32nbsd_pc_in_sigtramp);
+ frame_unwind_append_sniffer (gdbarch, sparc32nbsd_sigtramp_frame_sniffer);
}
static void
-sparcnbsd_init_abi_common (struct gdbarch_info info,
- struct gdbarch *gdbarch)
+sparc32nbsd_aout_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
- set_gdbarch_get_longjmp_target (gdbarch, gdbarch_ptr_bit (gdbarch) == 32 ?
- sparcnbsd_get_longjmp_target_32 :
- sparcnbsd_get_longjmp_target_64);
-}
-
-static void
-sparcnbsd_init_abi_aout (struct gdbarch_info info,
- struct gdbarch *gdbarch)
-{
- sparcnbsd_init_abi_common (info, gdbarch);
+ sparc32nbsd_init_abi (info, gdbarch);
- set_gdbarch_in_solib_call_trampoline (gdbarch,
- sparcnbsd_aout_in_solib_call_trampoline);
+ set_gdbarch_in_solib_call_trampoline
+ (gdbarch, sparcnbsd_aout_in_solib_call_trampoline);
}
static void
-sparcnbsd_init_abi_elf (struct gdbarch_info info,
- struct gdbarch *gdbarch)
+sparc32nbsd_elf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
- sparcnbsd_init_abi_common (info, gdbarch);
+ sparc32nbsd_init_abi (info, gdbarch);
- set_gdbarch_pc_in_sigtramp (gdbarch, nbsd_pc_in_sigtramp);
-
- set_solib_svr4_fetch_link_map_offsets (gdbarch,
- gdbarch_ptr_bit (gdbarch) == 32 ?
- nbsd_ilp32_solib_svr4_fetch_link_map_offsets :
- nbsd_lp64_solib_svr4_fetch_link_map_offsets);
+ set_solib_svr4_fetch_link_map_offsets
+ (gdbarch, nbsd_ilp32_solib_svr4_fetch_link_map_offsets);
}
static enum gdb_osabi
@@ -520,17 +300,45 @@ sparcnbsd_aout_osabi_sniffer (bfd *abfd)
return GDB_OSABI_UNKNOWN;
}
+/* OpenBSD uses the traditional NetBSD core file format, even for
+ ports that use ELF. Therefore, if the default OS ABI is OpenBSD
+ ELF, we return that instead of NetBSD a.out. This is mainly for
+ the benfit of OpenBSD/sparc64, which inherits the sniffer below
+ since we include this file for an OpenBSD/sparc64 target. For
+ OpenBSD/sparc, the NetBSD a.out OS ABI is probably similar enough
+ to both the OpenBSD a.out and the OpenBSD ELF OS ABI. */
+#if defined (GDB_OSABI_DEFAULT) && (GDB_OSABI_DEFAULT == GDB_OSABI_OPENBSD_ELF)
+#define GDB_OSABI_NETBSD_CORE GDB_OSABI_OPENBSD_ELF
+#else
+#define GDB_OSABI_NETBSD_CORE GDB_OSABI_NETBSD_AOUT
+#endif
+
+static enum gdb_osabi
+sparcnbsd_core_osabi_sniffer (bfd *abfd)
+{
+ if (strcmp (bfd_get_target (abfd), "netbsd-core") == 0)
+ return GDB_OSABI_NETBSD_CORE;
+
+ return GDB_OSABI_UNKNOWN;
+}
+
+
+/* Provide a prototype to silence -Wmissing-prototypes. */
+void _initialize_sparcnbsd_tdep (void);
+
void
_initialize_sparnbsd_tdep (void)
{
gdbarch_register_osabi_sniffer (bfd_arch_sparc, bfd_target_aout_flavour,
sparcnbsd_aout_osabi_sniffer);
+ /* BFD doesn't set the architecture for NetBSD style a.out core
+ files. */
+ gdbarch_register_osabi_sniffer (bfd_arch_unknown, bfd_target_unknown_flavour,
+ sparcnbsd_core_osabi_sniffer);
+
gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_NETBSD_AOUT,
- sparcnbsd_init_abi_aout);
+ sparc32nbsd_aout_init_abi);
gdbarch_register_osabi (bfd_arch_sparc, 0, GDB_OSABI_NETBSD_ELF,
- sparcnbsd_init_abi_elf);
-
- add_core_fns (&sparcnbsd_core_fns);
- add_core_fns (&sparcnbsd_elfcore_fns);
+ sparc32nbsd_elf_init_abi);
}
diff --git a/gdb/sparcnbsd-tdep.h b/gdb/sparcnbsd-tdep.h
deleted file mode 100644
index bad2d653c8e..00000000000
--- a/gdb/sparcnbsd-tdep.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Common target dependent code for GDB on SPARC systems running NetBSD.
- Copyright 2002 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#ifndef SPARCNBSD_TDEP_H
-#define SPARCNBSD_TDEP_H
-
-void sparcnbsd_supply_reg32 (char *, int);
-void sparcnbsd_supply_reg64 (char *, int);
-void sparcnbsd_fill_reg32 (char *, int);
-void sparcnbsd_fill_reg64 (char *, int);
-
-void sparcnbsd_supply_fpreg32 (char *, int);
-void sparcnbsd_supply_fpreg64 (char *, int);
-void sparcnbsd_fill_fpreg32 (char *, int);
-void sparcnbsd_fill_fpreg64 (char *, int);
-
-#endif /* SPARCNBSD_TDEP_H */
diff --git a/gdb/stabsread.c b/gdb/stabsread.c
index a4143e84b9a..35f97e65658 100644
--- a/gdb/stabsread.c
+++ b/gdb/stabsread.c
@@ -1,7 +1,8 @@
/* Support routines for decoding "stabs" debugging information format.
- Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+
+ Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
@@ -89,8 +90,6 @@ static void
read_one_struct_field (struct field_info *, char **, char *,
struct type *, struct objfile *);
-static char *get_substring (char **, int);
-
static struct type *dbx_alloc_type (int[2], struct objfile *);
static long read_huge_number (char **, int, int *);
@@ -158,8 +157,6 @@ static char *find_name_end (char *name);
static int process_reference (char **string);
-static CORE_ADDR ref_search_value (int refnum);
-
void stabsread_clear_cache (void);
static const char vptr_name[] = "_vptr$";
@@ -194,12 +191,6 @@ stabs_general_complaint (const char *arg1)
complaint (&symfile_complaints, "%s", arg1);
}
-static void
-lrs_general_complaint (const char *arg1)
-{
- complaint (&symfile_complaints, "%s", arg1);
-}
-
/* Make a list of forward references which haven't been defined. */
static struct type **undef_types;
@@ -533,16 +524,6 @@ ref_search (int refnum)
return ref_map[refnum].sym;
}
-/* Return value for the reference REFNUM. */
-
-static CORE_ADDR
-ref_search_value (int refnum)
-{
- if (refnum < 0 || refnum > ref_count)
- return 0;
- return ref_map[refnum].value;
-}
-
/* Parse a reference id in STRING and return the resulting
reference number. Move STRING beyond the reference id. */
@@ -1118,13 +1099,8 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
if (local_symbols
&& local_symbols->nsyms > 0
-#ifndef DEPRECATED_USE_REGISTER_NOT_ARG
- /* DEPRECATED_USE_REGISTER_NOT_ARG is only defined by
- the SPARC. */
&& gdbarch_stabs_argument_has_addr (current_gdbarch,
- SYMBOL_TYPE (sym))
-#endif
- )
+ SYMBOL_TYPE (sym)))
{
struct symbol *prev_sym;
prev_sym = local_symbols->symbol[local_symbols->nsyms - 1];
diff --git a/gdb/stack.c b/gdb/stack.c
index 28ff09dbc26..ea8a1c2b307 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -1,8 +1,8 @@
/* Print and select stack frames for GDB, the GNU debugger.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
- Foundation, Inc.
+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
@@ -968,10 +968,6 @@ frame_info (char *addr_exp, int from_tty)
printf_filtered (" source language %s.\n",
language_str (s->language));
-#ifdef DEPRECATED_PRINT_EXTRA_FRAME_INFO
- DEPRECATED_PRINT_EXTRA_FRAME_INFO (fi);
-#endif
-
{
/* Address of the argument list for this frame, or 0. */
CORE_ADDR arg_list = get_frame_args_address (fi);
diff --git a/gdb/symfile.c b/gdb/symfile.c
index d58a8ecb9ab..65e27c0f190 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
@@ -1,7 +1,7 @@
/* Generic symbol file reading for the GNU debugger, GDB.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Cygnus Support, using pieces from other GDB modules.
@@ -199,20 +199,6 @@ int auto_solib_add = 1;
int auto_solib_limit;
-/* Since this function is called from within qsort, in an ANSI environment
- it must conform to the prototype for qsort, which specifies that the
- comparison function takes two "void *" pointers. */
-
-static int
-compare_symbols (const void *s1p, const void *s2p)
-{
- struct symbol **s1, **s2;
-
- s1 = (struct symbol **) s1p;
- s2 = (struct symbol **) s2p;
- return (strcmp (SYMBOL_NATURAL_NAME (*s1), SYMBOL_NATURAL_NAME (*s2)));
-}
-
/* This compares two partial symbols by names, using strcmp_iw_ordered
for the comparison. */
@@ -861,43 +847,22 @@ symbol_file_add_with_addrs_or_offsets (char *name, int from_tty,
orig_addrs->other[i] = addrs->other[i];
}
- /* If the objfile uses a mapped symbol file, and we have a psymtab for
- it, then skip reading any symbols at this time. */
-
- if ((objfile->flags & OBJF_MAPPED) && (objfile->flags & OBJF_SYMS))
+ /* We either created a new mapped symbol table, mapped an existing
+ symbol table file which has not had initial symbol reading
+ performed, or need to read an unmapped symbol table. */
+ if (from_tty || info_verbose)
{
- /* We mapped in an existing symbol table file that already has had
- initial symbol reading performed, so we can skip that part. Notify
- the user that instead of reading the symbols, they have been mapped.
- */
- if (from_tty || info_verbose)
+ if (pre_add_symbol_hook)
+ pre_add_symbol_hook (name);
+ else
{
- printf_unfiltered ("Mapped symbols for %s...", name);
+ printf_unfiltered ("Reading symbols from %s...", name);
wrap_here ("");
gdb_flush (gdb_stdout);
}
- init_entry_point_info (objfile);
- find_sym_fns (objfile);
- }
- else
- {
- /* We either created a new mapped symbol table, mapped an existing
- symbol table file which has not had initial symbol reading
- performed, or need to read an unmapped symbol table. */
- if (from_tty || info_verbose)
- {
- if (pre_add_symbol_hook)
- pre_add_symbol_hook (name);
- else
- {
- printf_unfiltered ("Reading symbols from %s...", name);
- wrap_here ("");
- gdb_flush (gdb_stdout);
- }
- }
- syms_from_objfile (objfile, addrs, offsets, num_offsets,
- mainline, from_tty);
}
+ syms_from_objfile (objfile, addrs, offsets, num_offsets,
+ mainline, from_tty);
/* We now have at least a partial symbol table. Check to see if the
user requested that all symbols be read on initial access via either
@@ -1223,20 +1188,16 @@ symbol_file_command (char *args, int from_tty)
cleanups = make_cleanup_freeargv (argv);
while (*argv != NULL)
{
- if (strcmp (*argv, "-mapped") == 0)
- flags |= OBJF_MAPPED;
- else
- if (strcmp (*argv, "-readnow") == 0)
- flags |= OBJF_READNOW;
- else
- if (**argv == '-')
- error ("unknown option `%s'", *argv);
- else
- {
- name = *argv;
-
- symbol_file_add_main_1 (name, from_tty, flags);
- }
+ if (strcmp (*argv, "-readnow") == 0)
+ flags |= OBJF_READNOW;
+ else if (**argv == '-')
+ error ("unknown option `%s'", *argv);
+ else
+ {
+ name = *argv;
+
+ symbol_file_add_main_1 (name, from_tty, flags);
+ }
argv++;
}
@@ -1751,17 +1712,13 @@ add_symbol_file_command (char *args, int from_tty)
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)
- {
- expecting_sec_name = 1;
- expecting_sec_addr = 1;
- }
+ if (strcmp (arg, "-readnow") == 0)
+ flags |= OBJF_READNOW;
+ else if (strcmp (arg, "-s") == 0)
+ {
+ expecting_sec_name = 1;
+ expecting_sec_addr = 1;
+ }
}
else
{
@@ -1961,6 +1918,7 @@ reread_symbols (void)
objfile->symtabs = NULL;
objfile->psymtabs = NULL;
objfile->free_psymtabs = NULL;
+ objfile->cp_namespace_symtab = NULL;
objfile->msymbols = NULL;
objfile->sym_private = NULL;
objfile->minimal_symbol_count = 0;
@@ -2110,8 +2068,7 @@ reread_separate_symbols (struct objfile *objfile)
0, /* No addr table. */
objfile->section_offsets, objfile->num_sections,
0, /* Not mainline. See comments about this above. */
- objfile->flags & (OBJF_MAPPED | OBJF_REORDERED
- | OBJF_SHARED | OBJF_READNOW
+ objfile->flags & (OBJF_REORDERED | OBJF_SHARED | OBJF_READNOW
| OBJF_USERLOADED)));
objfile->separate_debug_objfile->separate_debug_objfile_backlink
= objfile;
diff --git a/gdb/symtab.c b/gdb/symtab.c
index f959970ad04..043b0a21fc8 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -1,7 +1,7 @@
/* Symbol table lookup for the GNU debugger, GDB.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -41,7 +41,6 @@
#include "source.h"
#include "filenames.h" /* for FILENAME_CMP */
#include "objc-lang.h"
-#include "dictionary.h"
#include "hashtab.h"
@@ -1527,48 +1526,23 @@ lookup_partial_symbol (struct partial_symtab *pst, const char *name,
}
/* Look up a type named NAME in the struct_domain. The type returned
- must not be opaque -- i.e., must have at least one field defined
-
- This code was modelled on lookup_symbol -- the parts not relevant to looking
- up types were just left out. In particular it's assumed here that types
- are available in struct_domain and only at file-static or global blocks. */
-
-/* FIXME: carlton/2002-10-25: This function duplicates too much of
- lookup_symbol_aux's code: it's a maintenance burden. That should
- be taken care of. Unfortunately, right now there's no clean fix
- for that. The obvious thing to do is to put in calls to
- lookup_symbol_aux_nonlocal; but, if I'm reading its caller, it
- seems like this is used when there are perhaps multiple definitions
- for NAME, in which case lookup_symbol_aux_nonlocal might find the
- wrong one. Something to keep in mind when we have iterators,
- though. */
-
-/* NOTE: carlton/2003-01-13: Callers for this should have the full
- name of the type in question, so this doesn't have to get any
- smarter about namespace stuff. */
-
-/* FIXME: carlton/2003-05-23: No, sometimes, unfortunately, the name
- is wrong. This function gets called when the the type in question
- is a declaration; in that situation, our type name deduction
- machinery doesn't work, so if the type is declared in a namespace
- and GCC isn't giving us namespace debug info, we're screwed. Sigh.
- There's nothing we can do to fix this in general, I think. */
+ must not be opaque -- i.e., must have at least one field
+ defined. */
struct type *
lookup_transparent_type (const char *name)
{
- struct type *retval = lookup_transparent_type_aux (name);
-
- if (retval != NULL)
- return retval;
- else
- /* See above FIXME comment: with proper debug info, this should
- never be necessary (or even desirable). */
- return lookup_transparent_type_namespace (name);
+ return current_language->la_lookup_transparent_type (name);
}
+/* The standard implementation of lookup_transparent_type. This code
+ was modeled on lookup_symbol -- the parts not relevant to looking
+ up types were just left out. In particular it's assumed here that
+ types are available in struct_domain and only at file-static or
+ global blocks. */
+
struct type *
-lookup_transparent_type_aux (const char *name)
+basic_lookup_transparent_type (const char *name)
{
struct symbol *sym;
struct symtab *s = NULL;
@@ -1612,7 +1586,9 @@ lookup_transparent_type_aux (const char *name)
block = BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK);
sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN);
if (!sym)
- error ("Internal: global symbol `%s' found in %s psymtab but not in symtab.\n%s may be an inlined function, or may be a template function\n(if a template, try specifying an instantiation: %s<type>).",
+ error ("Internal: global symbol `%s' found in %s psymtab but not in symtab.\n\
+%s may be an inlined function, or may be a template function\n\
+(if a template, try specifying an instantiation: %s<type>).",
name, ps->filename, name, name);
}
if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
@@ -1657,7 +1633,9 @@ lookup_transparent_type_aux (const char *name)
block = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
sym = lookup_block_symbol (block, name, NULL, STRUCT_DOMAIN);
if (!sym)
- error ("Internal: static symbol `%s' found in %s psymtab but not in symtab.\n%s may be an inlined function, or may be a template function\n(if a template, try specifying an instantiation: %s<type>).",
+ error ("Internal: static symbol `%s' found in %s psymtab but not in symtab.\n\
+%s may be an inlined function, or may be a template function\n\
+(if a template, try specifying an instantiation: %s<type>).",
name, ps->filename, name, name);
}
if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
@@ -1667,6 +1645,7 @@ lookup_transparent_type_aux (const char *name)
return (struct type *) 0;
}
+
/* Find the psymtab containing main(). */
/* FIXME: What about languages without main() or specially linked
executables that have no main() ? */
@@ -3935,7 +3914,7 @@ decode_line_spec (char *string, int funfirstline)
sals = decode_line_1 (&string, funfirstline,
cursal.symtab, cursal.line,
- (char ***) NULL);
+ (char ***) NULL, NULL);
if (*string)
error ("Junk at end of line specification: %s", string);
diff --git a/gdb/symtab.h b/gdb/symtab.h
index aa188e97921..a140d0e5fce 100644
--- a/gdb/symtab.h
+++ b/gdb/symtab.h
@@ -1,7 +1,7 @@
/* Symbol table definitions for GDB.
Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This file is part of GDB.
@@ -1122,6 +1122,7 @@ extern int find_pc_line_pc_range (CORE_ADDR, CORE_ADDR *, CORE_ADDR *);
extern void reread_symbols (void);
extern struct type *lookup_transparent_type (const char *);
+extern struct type *basic_lookup_transparent_type (const char *);
extern struct type *lookup_transparent_type_aux (const char *name);
diff --git a/gdb/target.c b/gdb/target.c
index 4c12bda3f8a..ff47ac13bf7 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -1,7 +1,7 @@
/* Select target systems and architectures at runtime for GDB.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Cygnus Support.
@@ -71,8 +71,6 @@ static struct target_ops *find_default_run_target (char *);
static void nosupport_runtime (void);
-static void normal_target_post_startup_inferior (ptid_t ptid);
-
static LONGEST default_xfer_partial (struct target_ops *ops,
enum target_object object,
const char *annex, void *readbuf,
@@ -709,8 +707,6 @@ unpush_target (struct target_ops *t)
struct target_ops **cur;
struct target_ops *tmp;
- target_close (t, 0);
-
/* Look for the specified target. Note that we assume that a target
can only occur once in the target stack. */
@@ -723,6 +719,14 @@ unpush_target (struct target_ops *t)
if ((*cur) == NULL)
return 0; /* Didn't find target_ops, quit now */
+ /* NOTE: cagney/2003-12-06: In '94 the close call was made
+ unconditional by moving it to before the above check that the
+ target was in the target stack (something about "Change the way
+ pushing and popping of targets work to support target overlays
+ and inheritance"). This doesn't make much sense - only open
+ targets should be closed. */
+ target_close (t, 0);
+
/* Unchain the target */
tmp = (*cur);
(*cur) = (*cur)->beneath;
@@ -1356,7 +1360,7 @@ find_default_create_inferior (char *exec_file, char *allargs, char **env)
static int
default_region_size_ok_for_hw_watchpoint (int byte_count)
{
- return (byte_count <= DEPRECATED_REGISTER_SIZE);
+ return (byte_count <= TYPE_LENGTH (builtin_type_void_data_ptr));
}
static int
@@ -1597,24 +1601,6 @@ normal_pid_to_str (ptid_t ptid)
return buf;
}
-/* Some targets (such as ttrace-based HPUX) don't allow us to request
- notification of inferior events such as fork and vork immediately
- after the inferior is created. (This because of how gdb gets an
- inferior created via invoking a shell to do it. In such a scenario,
- if the shell init file has commands in it, the shell will fork and
- exec for each of those commands, and we will see each such fork
- event. Very bad.)
-
- This function is used by all targets that allow us to request
- notification of forks, etc at inferior creation time; e.g., in
- target_acknowledge_forked_child.
- */
-static void
-normal_target_post_startup_inferior (ptid_t ptid)
-{
- /* This space intentionally left blank. */
-}
-
/* Error-catcher for target_find_memory_regions */
static int dummy_find_memory_regions (int (*ignore1) (), void *ignore2)
{
diff --git a/gdb/target.h b/gdb/target.h
index 21956df9dd9..8894ac6ab9a 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -1,7 +1,7 @@
/* Interface between GDB and target environments, including files and processes
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Cygnus Support. Written by John Gilmore.
@@ -1084,13 +1084,6 @@ extern void (*target_new_objfile_hook) (struct objfile *);
(*current_target.to_stopped_data_address) ()
#endif
-/* If defined, then we need to decr pc by this much after a hardware break-
- point. Presumably this overrides DECR_PC_AFTER_BREAK... */
-
-#ifndef DECR_PC_AFTER_HW_BREAK
-#define DECR_PC_AFTER_HW_BREAK 0
-#endif
-
/* Sometimes gdb may pick up what appears to be a valid target address
from a minimal symbol, but the value really means, essentially,
"This is an index into a table which is populated when the inferior
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index f7b3a3073b2..eff4187a95d 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,442 @@
+2004-01-24 Michael Chastain <mec.gnu@mindspring.com>
+
+ * lib/compiler.c: Add hp_cc_compiler and hp_aCC_compiler.
+ * lib/compiler.cc: Likewise.
+ * lib/gdb.exp (get_compiler_info): Always call gdb_compile to
+ get the right preprocessor. Eval the output directly. Remove
+ special tests for hp_cc_compiler and hp_aCC_compiler. Remove
+ hp_f77_compiler and hp_f90_compiler completely.
+ (gdb_preprocess): Delete.
+ (get_compiler): Delete.
+
+2004-01-24 Mark Kettenis <kettenis@gnu.org>
+
+ * gdb.base/charset.c, gdb.base/dump.c, gdb.base/huge.c: Include
+ <string.h>.
+
+2004-01-24 Nick Roberts <nick@nick.uklinux.net>
+
+ * gdb.mi/mi-stack.exp: Update copyright.
+
+2004-01-23 David Carlton <carlton@kealia.com>
+
+ * gdb.cp/rtti.exp: Don't include full path in ${srcfile}. Add
+ test for cp_lookup_transparent_type.
+ * gdb.cp/rtti1.cc: Update copyright. Add n2::func and refer_to;
+ call them.
+
+2004-01-23 Daniel Jacobowitz <drow@mvista.com>
+
+ * gdb.mi/mi-var-child.exp: Update copyright year. Move new test
+ after -var-update.
+
+2004-01-23 David Carlton <carlton@kealia.com>
+
+ * gdb.cp/namespace.cc (C::ensureRefs): New.
+ * gdb.cp/namespace1.cc (C::ensureOtherRefs): New.
+
+2004-01-20 Nick Roberts <nick@nick.uklinux.net>
+
+ * gdb.mi/mi-stack.exp (test_stack_locals_listing): Test for
+ case "-stack-list-locals 2".
+ * gdb.mi/mi-var-child.exp: Test for case
+ "-var-list-children --all-values NAME".
+
+2004-01-18 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/local.exp: Accept correct output for gcc v3 -gstabs+.
+
+2004-01-18 Mark Kettenis <kettenis@gnu.org>
+
+ * gdb.base/fileio.exp: Add "$gdb_prompt $" anchors to patterns
+ used with gdb_test_multiple.
+
+ * gdb.base/gdb1476.exp: Accept alternat pattern for failed memory
+ read at address 0. This fixes PR testsuite/1504.
+
+2004-01-18 Daniel Jacobowitz <drow@mvista.com>
+
+ * config/gdbserver.exp (gdbserver_gdb_load): Rename from gdb_load.
+ Remove downloading, guessing the host executable, the calls to
+ gdb_file_cmd and gdb_target_cmd, and "load" support.
+ (infer_host_exec): New function broken out from gdb_load.
+ (gdb_load): New wrapper for gdbserver_gdb_load.
+ * lib/mi-support.exp (mi_gdb_target_cmd): New function, based on
+ gdb_target_cmd. Use -target-select.
+ (mi_gdb_file_cmd): New function, broken out from mi_gdb_load.
+ Download binaries to the host. Clear last_mi_remote_file when
+ we load a new binary.
+ (mi_gdb_load): Call mi_gdb_file_cmd. If gdbserver.exp is loaded,
+ call gdbserver_gdb_load and mi_gdb_target_cmd.
+
+2004-01-17 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/templates.exp: Accept more spaces with "<foo, ?bar>"
+ type patterns.
+
+2004-01-17 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/templates.exp: Fix typo in test name of
+ "print Foo<volatile char*>::foo".
+
+2004-01-15 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/setvar.exp: Remove setup_xfail for hppa*-*-*11*.
+
+2004-01-16 Ben Elliston <bje@wasabisystems.com>
+
+ * gdb.arch/Makefile.in (MISCELLANEOUS): Remove.
+ (clean mostlyclean): Remove empty rm.
+
+2004-01-15 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/setvar.exp: Add copyright years.
+
+2004-01-14 David Carlton <carlton@bactrian.org>
+
+ * gdb.cp/rtti.exp: Update copyright. KFAIL test with repect to
+ PR c++/1511 and update coment.
+ * gdb.cp/templates.exp: Update patterns to match current output.
+ If changes involve something other than whitespace, KFAIL
+ w.r.t. PR c++/1512 or PR c++/931 as appropriate.
+
+2004-01-14 David Carlton <carlton@kealia.com>
+
+ * gdb.cp/namespace.exp: Add tests involving classes defined within
+ namespaces.
+ * gdb.cp/namespace.cc (C::CClass): New.
+ * gdb.cp/namespace1.cc (C::OtherFileClass): New.
+
+2004-01-14 Elena Zannoni <ezannoni@redhat.com>
+
+ * gdb.base/sepdebug.exp: Bail out of the test if we don't know
+ what debug info we have. Print a better message if something goes
+ wrong while producing the separate debug info file.
+
+2004-01-14 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/callfuncs.c: Remove explicit declaration of malloc.
+
+2004-01-14 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/callfuncs.c: Add copyright notice.
+
+2004-01-13 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/derivation.exp: Add XFAIL for bug with protected
+ inheritance. PR gdb/1498, PR gcc/13539.
+
+2004-01-13 Elena Zannoni <ezannoni@redhat.com>
+
+ * gdb.threads/gcore-thread.exp: Prefix name of binary with
+ test specific name.
+ * gdb.mi/gdb669.exp: Ditto.
+ * gdb.mi/mi-pthreads.exp: Ditto.
+ * gdb.mi/mi1-pthreads.exp: Ditto.
+ * gdb.mi/mi2-pthreads.exp: Ditto.
+
+2004-01-12 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/member-ptr.cc: Add copyright notice.
+
+2004-01-12 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/member-ptr.exp: Use gdb_test, gdb_test_multiple. Add
+ some patterns for recent versions of gcc and hpacc. Delete
+ calls to setup_xfail for hppa*-*-*. Delete redundant tests.
+ Delete tests that access a NULL pointer-to-member-data. This
+ script is still disabled for gcc.
+
+2004-01-12 Elena Zannoni <ezannoni@redhat.com>
+
+ * gdb.mi/mi2-basics.exp: Make sure that full pathnames are
+ escaped correctly.
+
+2004-01-12 Elena Zannoni <ezannoni@redhat.com>
+
+ * gdb.base/sepdebug.exp: New file.
+ * gdb.base/sepdebug.c: New file.
+ * lib/gdb.exp (separate_debug_filename): New procedure.
+ (gdb_gnu_strip_debug): New procedure.
+
+2004-01-12 Andrew Cagney <cagney@redhat.com>
+
+ * gdb.mi/ChangeLog: Delete file. Renamed to ...
+ * gdb.mi/ChangeLog-1999-2003: New file.
+
+2004-01-12 Andrew Cagney <cagney@redhat.com>
+
+ * gdb.base/fileio.exp: Update copyright year. On GNU/Linux, for
+ "Renaming a directory to a non-empty directory returns ENOTEMPTY
+ or EEXIST", treat EBUSY as an XFAIL.
+
+2004-01-11 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/scope.exp: Remove obsolete setup_xfail for
+ hp_cc_compiler.
+
+2004-01-10 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/classes.exp: Remove old "(obsolescent gcc or gdb)"
+ decorations.
+
+2004-01-10 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/virtfunc.exp: Remove old "(obsolescent gcc or gdb)"
+ and "(aCC)" decorations. Remove obsolete doco about old
+ test results.
+
+2004-01-09 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/exception.exp: Fix typo in doco.
+
+2004-01-09 Mark Kettenis <kettenis@gnu.org>
+
+ * gdb.base/gdb1476.exp: Fix typo.
+
+2004-01-09 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.hp/gdb.aCC/exception.exp: Re-create as a nearly empty
+ file.
+
+2004-01-09 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/exception.cc: Change <iostream.h> to <iostream>.
+ * gdb.cp/exception.exp: Use gdb test, gdb_test_multiple.
+ Use gdb_compile. Remove restriction on gcc. Add some patterns
+ for recent version of gdb. Delete second half, which was a copy
+ of the first half with different build flags. This test is
+ still disabled because it is still not ready for production.
+
+2004-01-08 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/exception.cc: Add copyright notice.
+ * gdb.cp/exception.exp: Add a notice that this file is broken
+ because of line number changes caused by addition of copyright
+ notice.
+
+2004-01-08 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/exception.cc: Renamed from gdb.hp/gdb.aCC/exception.cc.
+ * gdb.cp/exception.exp: Renamed from gdb.hp/gdb.aCC/exception.exp.
+
+2004-01-08 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/classes.exp: Accept gnu abi 2.
+ * gdb.cp/derivation.exp: Likewise.
+ * gdb.cp/overload.exp: Likewise.
+ * gdb.cp/virtfunc.exp: Likewise.
+
+2004-01-08 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.mi/pthreads.c (done_making_threads): Remove extraneous
+ semicolon after end of function.
+
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/bs15503.cc: Include <iostream>, not <iostream.h>.
+ * gdb.cp/bs15503.exp: Remove hp-only restriction. Use modern
+ boilerplate code for compiling and running the program under
+ test. Add some string method tests.
+
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/bs15503.cc: Add copyright notice.
+ * gdb.cp/bs15503.exp: Adjust line number.
+
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.hp/gdb.defects/bs15503.exp: Renamed to gdb.cp/bs15503.exp.
+ * gdb.hp/gdb.defects/bs15503.cc: Renamed to gdb.cp/bs15503.cc.
+
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/funcargs.exp: Remove obsolete setup_xfail for
+ hp_cc_compiler.
+
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/cttiadd.c: Add a marker for gdb_get_line_number.
+ * gdb.cp/ctti.exp: Use the marker instead of "next".
+ With gcc, run further before bailing.
+
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/cttiadd.cc: Add copyright notice.
+ * gdb.cp/cttiadd1.cc: Likewise.
+ * gdb.cp/cttiadd2.cc: Likewise.
+ * gdb.cp/cttiadd3.cc: Likewise.
+
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/ctti.exp: Partial rewrite. Call gdb_compile properly.
+ Use gdb_test, gdb_test_multiple. Use floating-point values that
+ have exact representations in IEEE-ish formats.
+
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/constvars.exp: Do not force lang=c++ if using HP
+ compilers. Delete duplicate call to get_compiler_info.
+ (local_compiler_xfail_check): setup_xfail if $hp_cc_compiler.
+ * gdb.base/volatile.exp: Likewise.
+
+2004-01-07 Mark Kettenis <kettenis@gnu.org>
+
+ * gdb.base/gdb1476.exp: Only run the tests if we can't read the
+ memory at address 0.
+
+2004-01-07 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.stabs/weird.exp: Use hp_cc_compiler and hp_aCC_compiler
+ to test for hp-ux assembler. Fix copyright years.
+
+2004-01-07 Andrew Cagney <cagney@redhat.com>
+
+ * gdb.base/fileio.c (strerrno): Add "EBUSY".
+
+2004-01-07 Andrew Cagney <cagney@redhat.com>
+
+ * gdb.base/fileio.c (test_open): Do not pass S_IWUSR to "open"
+ when creating the read-only file. From analysis by Roland McGrath
+ and Elena Zannoni.
+
+2004-01-06 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/namespace.exp: Call get_compiler_info with "c++".
+
+2004-01-06 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/cvexpr.c: Be type-safe with function pointers and
+ data pointers.
+
+2004-01-06 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/m-static.exp: Compile one source file at a time.
+ Delete unused call to get_compiler_info.
+
+2004-01-06 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/call-ar-st.exp: Delete explicit reference to ${binfile}.ci.
+ * gdb.base/call-rt-st.exp: Likewise.
+ * gdb.base/nodebug.exp: Likewise.
+ * gdb.base/volatile.exp: Likewise.
+ * gdb.cp/ref-types.exp: Likewise.
+ * gdb.cp/templates.exp: Likewise.
+
+2004-01-05 Mark Kettenis <kettenis@gnu.org>
+
+ * gdb.base/gdb1476.exp, gdb.base/gdb1476.c: New files.
+
+2004-01-05 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/funcargs.exp: Delete special timeout of 240 seconds for
+ hppa*-hp-hpux*.
+
+2004-01-04 Mark Kettenis <kettenis@gnu.org>
+
+ * gdb.base/structs.exp: Add patterns to kfail PR gdb/1447 for
+ x86_64-*-*.
+
+ * gdb.base/structs.exp: Add patterns to kfail PR gdb/1447 for
+ sparc64-*-* and sparc*-solaris2*.
+
+2004-01-04 Mark Kettenis <kettenis@gnu.org>
+
+ * gdb.base/structs.exp: Remove ${testfile} from "zed L<n> for
+ return ${tests}" test. The ${tests} already mentions the
+ filename.
+
+2004-01-02 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/local.exp: Accept gcc abi 2.
+
+2004-01-02 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/templates.exp: Accept gcc abi 2.
+
+2004-01-02 Michael Chastain <mec.gnu@mindspring.com>
+
+ * lib/compiler.cc: Remove supports_template_debugging.
+ * gdb.cp/templates.exp: Do not test supports_template_debugging.
+
+2004-01-01 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/namespace.exp: Accept gcc abi 2.
+
+2004-01-01 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/method.exp: Accept gcc abi 2.
+
+2004-01-01 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/classes.exp: Generate identical results as old version.
+ * gdb.cp/derivation.exp: Likewise.
+ * gdb.cp/overload.exp: Likewise.
+ * gdb.cp/virtfunc.exp: Likewise.
+
+2004-01-01 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/virtfunc.exp: Modify some patterns to avoid a
+ mysterious bug with sourceware version of expect.
+
+2004-01-01 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/overload.exp: Rewrite. Clean up patterns to match
+ current versions of gcc, including gcc abi 2. Remove gratuitous
+ restart of test program. Use gdb_test_multiple and gdb_test for
+ all tests. Add patterns to xfail missing "const" in "const char *"
+ and kfail PR gdb/1155.
+
+2004-01-01 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/derivation.exp: Rewrite. Clean up patterns to match
+ current versions of gcc, including gcc abi 2. Remove gratuitous
+ restart of test program. Use gdb_test_multiple and gdb_test for
+ all tests. Add patterns to kfail PR gdb/1498.
+
+2003-12-31 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/virtfunc.exp: Rewrite. Clean up patterns to match
+ current versions of gcc, including gcc abi 2. Use "breakpoint"
+ and "continue" instead of restarting the target program. Use
+ gdb_test_multiple and gdb_test for all tests.
+
+2004-01-01 Mark Kettenis <kettenis@gnu.org>
+
+ * gdb.asm/asm-source.exp: Update copyright year. Link statically
+ for *-*-solaris2*.
+
+2003-12-31 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.cp/classes.exp: Rewrite. Clean up patterns to match
+ current versions of gcc, including gcc abi 2. Use "breakpoint"
+ and "continue" instead of restarting the target program several
+ times. Use gdb_test_multiple and gdb_test for all tests.
+
+2003-12-18 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/sect-cmd.exp: Handle compiling test case from multiple
+ source files.
+
+2003-12-16 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/environ.exp: Handle compiling test case from multiple
+ source files.
+
+2003-12-16 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/structs.exp: Call gdb_exit as well as gdb_start.
+
+2003-12-17 Jim Blandy <jimb@redhat.com>
+
+ * gdb.base/freebpcmd.c: Add copyright notice.
+
+ * gdb.base/freebpcmd.exp: Mark the interesting failure as known.
+
+2003-12-16 Michael Chastain <mec.gnu@mindspring.com>
+
+ * gdb.base/maint.exp: Add generic FAIL patterns to prevent timeouts.
+
2003-12-13 Jim Blandy <jimb@redhat.com>
* gdb.base/freebpcmd.exp, gdb.base/freebpcmd.c: New test.
@@ -11203,6 +11642,8 @@ Sun Feb 21 10:55:55 1993 Mike Werner (mtw@poseidon.cygnus.com)
of dejagnu. The modifications to these testcases, etc., which
will allow them to work with the new version of dejagnu will be
made in a future update.
+
+For additional changes see gdb.mi/ChangeLog-1999-2003.
Local Variables:
mode: change-log
diff --git a/gdb/testsuite/config/gdbserver.exp b/gdb/testsuite/config/gdbserver.exp
index 475acd42073..bb5b246a050 100644
--- a/gdb/testsuite/config/gdbserver.exp
+++ b/gdb/testsuite/config/gdbserver.exp
@@ -2,7 +2,7 @@
# ie. a debug agent running as a native process on the same or
# a different host.
-# Copyright 2000, 2002 Free Software Foundation, Inc.
+# Copyright 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -89,12 +89,8 @@ global server_exec;
global portnum;
set portnum "2345";
-proc gdb_load { arg } {
- global host_exec;
- global server_exec;
- global portnum;
- global verbose;
- global gdb_prompt;
+proc gdbserver_gdb_load { server_exec } {
+ global portnum
# Port id -- either specified in baseboard file, or managed here.
if [target_info exists gdb,socketport] {
@@ -134,35 +130,6 @@ proc gdb_load { arg } {
# Export the host:port pair.
set gdbport $debughost$portnum;
- # Remember new exec file.
- if { $arg == "" } {
- if { ! [info exists host_exec] } {
- send_gdb "info files\n";
- gdb_expect 30 {
- -re "Symbols from \"(\[^\"\]+)\"" {
- set host_exec $expect_out(1,string);
- exp_continue;
- }
- -re "Local exec file:\[\r\n\]+\[ \t\]*`(\[^'\]+)'," {
- set host_exec $expect_out(1,string);
- exp_continue;
- }
- -re "$gdb_prompt $" { }
- }
- }
- } else {
- set host_exec $arg
- if [info exists server_exec] { unset server_exec }
- }
-
- if { ! [info exists server_exec] } {
- if [is_remote target] {
- set server_exec [remote_download target $host_exec]
- } else {
- set server_exec $host_exec
- }
- }
-
# Fire off the debug agent
if [target_info exists gdb_server_args] {
# This flavour of gdbserver takes as arguments those specified
@@ -175,52 +142,77 @@ proc gdb_load { arg } {
# and the name of the executable file to be debugged.
set server_spawn_id [remote_spawn target \
"$gdbserver $sockethost$portnum $server_exec"]
- }
+ }
- # We can't call close, because if gdbserver is local then that means
- # that it will get a SIGHUP.
- ## close -i $server_spawn_id
- wait -nowait -i $server_spawn_id
+ # Wait for the server to produce at least one character of output.
+ expect {
+ -i $server_spawn_id
+ -notransfer
+ -re . { }
+ }
- # Give it a little time to establish
- sleep 1
+ # We can't just call close, because if gdbserver is local then that means
+ # that it will get a SIGHUP. Doing it this way could also allow us to
+ # get at the inferior's input or output if necessary, and means that we
+ # don't need to redirect output.
+ expect_background {
+ -i $server_spawn_id
+ -re "." { }
+ eof {
+ # The spawn ID is already closed now (but not yet waited for).
+ wait -i $expect_out(spawn_id)
+ }
+ }
- # tell gdb what file we are debugging
- if { $arg != "" } {
- if [gdb_file_cmd $arg] {
- return -1;
+ return [list $protocol $gdbport];
+}
+
+proc infer_host_exec { } {
+ set host_exec ""
+
+ send_gdb "info files\n";
+ gdb_expect 30 {
+ -re "Symbols from \"(\[^\"\]+)\"" {
+ set host_exec $expect_out(1,string);
+ exp_continue;
+ }
+ -re "Local exec file:\[\r\n\]+\[ \t\]*`(\[^'\]+)'," {
+ set host_exec $expect_out(1,string);
+ exp_continue;
}
+ -re "$gdb_prompt $" { }
+ }
+
+ return $host_exec
+}
+
+proc gdb_load { arg } {
+ global host_exec
+ global server_exec
+
+ if { $arg == "" && $host_exec == "" } {
+ set host_exec [infer_host_exec]
+ } elseif { $arg != "" } {
+ set host_exec $arg
+ if [info exists server_exec] { unset server_exec }
}
- # attach to the "serial port"
- gdb_target_cmd $protocol $gdbport;
-
- # do the real load if needed
- if [target_info exists gdb_server_do_load] {
- send_gdb "load\n"
- set timeout 2400
- verbose "Timeout is now $timeout seconds" 2
- gdb_expect {
- -re ".*$gdb_prompt $" {
- if $verbose>1 then {
- send_user "Loaded $arg into $GDB\n"
- }
- set timeout 30
- verbose "Timeout is now $timeout seconds" 2
- return 1
- }
- -re "$gdb_prompt $" {
- if $verbose>1 then {
- perror "GDB couldn't load."
- }
- }
- timeout {
- if $verbose>1 then {
- perror "Timed out trying to load $arg."
- }
- }
- }
+ if { ! [info exists server_exec] } {
+ if [is_remote target] {
+ set server_exec [remote_download target $host_exec]
+ } else {
+ set server_exec $host_exec
+ }
}
- return 0;
+ set res [gdbserver_gdb_load $host_exec]
+ set protocol [lindex $res 0]
+ set gdbport [lindex $res 1]
+
+ if { $arg != "" } {
+ if [gdb_file_cmd $arg] {
+ return -1
+ }
+ }
+ gdb_target_cmd $protocol $gdbport
}
diff --git a/gdb/testsuite/gdb.arch/Makefile.in b/gdb/testsuite/gdb.arch/Makefile.in
index 2b6f494158c..4c472724f1f 100644
--- a/gdb/testsuite/gdb.arch/Makefile.in
+++ b/gdb/testsuite/gdb.arch/Makefile.in
@@ -3,15 +3,12 @@ srcdir = @srcdir@
EXECUTABLES = altivec-abi altivec-regs
-MISCELLANEOUS =
-
all info install-info dvi install uninstall installcheck check:
@echo "Nothing to be done for $@..."
clean mostlyclean:
-rm -f *~ *.o a.out *.x *.ci *.tmp
-rm -f core core.coremaker coremaker.core corefile $(EXECUTABLES)
- -rm -f $(MISCELLANEOUS)
distclean maintainer-clean realclean: clean
-rm -f *~ core
diff --git a/gdb/testsuite/gdb.asm/asm-source.exp b/gdb/testsuite/gdb.asm/asm-source.exp
index e41bfec1a4d..301b778a0e9 100644
--- a/gdb/testsuite/gdb.asm/asm-source.exp
+++ b/gdb/testsuite/gdb.asm/asm-source.exp
@@ -1,4 +1,4 @@
-# Copyright 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1998, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -118,13 +118,17 @@ if { "${asm-arch}" == "" } {
gdb_suppress_entire_file "Assembly source test -- not implemented for this target."
}
-# On FreeBSD and NetBSD, crt1.o the final link will fail because of
+# On FreeBSD and NetBSD, the final link will fail because of
# unresolved symbols. It turns out that libc.so references symbols
# that are normally provided by crt1.o, which isn't linked in since we
# specify -nostartfiles. Using -nostdlib doesn't help since
# target_compile automatically adds -lm. Linking statically avoids
# this mess.
-if {[istarget "*-*-freebsd*"] || [istarget "*-*-netbsd*"]} then {
+#
+# On Solaris, linking dynamically results in a binary that dumps core.
+#
+if {[istarget "*-*-freebsd*"] || [istarget "*-*-netbsd*"]
+ || [istarget "*-*-solaris2*"]} then {
append link-flags " -static"
}
diff --git a/gdb/testsuite/gdb.base/call-ar-st.exp b/gdb/testsuite/gdb.base/call-ar-st.exp
index a7ea5cf56aa..1431bc56f8f 100644
--- a/gdb/testsuite/gdb.base/call-ar-st.exp
+++ b/gdb/testsuite/gdb.base/call-ar-st.exp
@@ -1,4 +1,4 @@
-# Copyright 1998, 1999, 2000, 2001
+# Copyright 1998, 1999, 2000, 2001, 2004
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
@@ -89,8 +89,6 @@ proc set_lang_c {} {
}
}
-source ${binfile}.ci
-
# Start with a fresh gdb.
gdb_exit
diff --git a/gdb/testsuite/gdb.base/call-rt-st.exp b/gdb/testsuite/gdb.base/call-rt-st.exp
index 39242fd5b9f..4a912fcdc29 100644
--- a/gdb/testsuite/gdb.base/call-rt-st.exp
+++ b/gdb/testsuite/gdb.base/call-rt-st.exp
@@ -1,4 +1,5 @@
-# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -91,11 +92,6 @@ proc set_lang_c {} {
}
}
-
-
-source ${binfile}.ci
-
-
# Start with a fresh gdb.
gdb_exit
diff --git a/gdb/testsuite/gdb.base/callfuncs.c b/gdb/testsuite/gdb.base/callfuncs.c
index 9917e788d0a..a52b2b138f9 100644
--- a/gdb/testsuite/gdb.base/callfuncs.c
+++ b/gdb/testsuite/gdb.base/callfuncs.c
@@ -1,3 +1,25 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2004
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ 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 */
+
/* Support program for testing gdb's ability to call functions
in the inferior, pass appropriate arguments to those functions,
and get the returned result. */
@@ -357,7 +379,7 @@ int a, b;
/* Gotta have a main to be able to generate a linked, runnable
executable, and also provide a useful place to set a breakpoint. */
-extern void * malloc() ;
+
int main ()
{
#ifdef usestubs
diff --git a/gdb/testsuite/gdb.base/charset.c b/gdb/testsuite/gdb.base/charset.c
index ece684a1ef9..a7b71238c5f 100644
--- a/gdb/testsuite/gdb.base/charset.c
+++ b/gdb/testsuite/gdb.base/charset.c
@@ -2,6 +2,7 @@
Jim Blandy <jimb@cygnus.com> --- December 2001 */
#include <stdio.h>
+#include <string.h>
/* X_string is a null-terminated string in the X charset whose
diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp
index 9f5435dff81..ccf00cf31af 100644
--- a/gdb/testsuite/gdb.base/completion.exp
+++ b/gdb/testsuite/gdb.base/completion.exp
@@ -1,4 +1,4 @@
-# Copyright 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -710,10 +710,10 @@ gdb_expect {
send_gdb "set follow-fork-mode \t\t"
sleep 1
gdb_expect {
- -re "ask.*child.*parent.*$gdb_prompt set follow-fork-mode $"\
+ -re "child.*parent.*$gdb_prompt set follow-fork-mode $"\
{ send_gdb "\n"
gdb_expect {
- -re "Requires an argument.*ask.*child.*parent.*$gdb_prompt $"\
+ -re "Requires an argument.*child.*parent.*$gdb_prompt $"\
{ pass "complete 'set follow-fork-mode'"}
-re "Ambiguous item \"\"\\..*$gdb_prompt $"\
{ pass "complete 'set follow-fork-mode'"}
diff --git a/gdb/testsuite/gdb.base/constvars.exp b/gdb/testsuite/gdb.base/constvars.exp
index 9008624a936..68732867d50 100644
--- a/gdb/testsuite/gdb.base/constvars.exp
+++ b/gdb/testsuite/gdb.base/constvars.exp
@@ -1,4 +1,4 @@
-# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
@@ -48,23 +48,10 @@ if [get_compiler_info ${binfile}] {
return -1;
}
-if {$hp_aCC_compiler || $hp_cc_compiler} {
- set lang "c++"
-} else {
- set lang ""
-}
-
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug $lang]] != "" } {
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable debug ] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-
-if [get_compiler_info ${binfile}] {
- return -1;
-}
-
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
@@ -88,6 +75,11 @@ proc local_compiler_xfail_check { } {
setup_xfail "*-*-*"
}
}
+
+ global hp_cc_compiler
+ if { $hp_cc_compiler } {
+ setup_xfail "hppa*-*-hpux*"
+ }
}
send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $"
diff --git a/gdb/testsuite/gdb.base/cvexpr.c b/gdb/testsuite/gdb.base/cvexpr.c
index 587120928e4..afbcd3172c3 100644
--- a/gdb/testsuite/gdb.base/cvexpr.c
+++ b/gdb/testsuite/gdb.base/cvexpr.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -409,26 +409,26 @@ int main ()
use (&v_boolean2);
use (&v_misordered);
- use (v_char_func);
- use (v_signed_char_func);
- use (v_unsigned_char_func);
+ use (&v_char_func);
+ use (&v_signed_char_func);
+ use (&v_unsigned_char_func);
- use (v_short_func);
- use (v_signed_short_func);
- use (v_unsigned_short_func);
+ use (&v_short_func);
+ use (&v_signed_short_func);
+ use (&v_unsigned_short_func);
- use (v_int_func);
- use (v_signed_int_func);
- use (v_unsigned_int_func);
+ use (&v_int_func);
+ use (&v_signed_int_func);
+ use (&v_unsigned_int_func);
- use (v_long_func);
- use (v_signed_long_func);
- use (v_unsigned_long_func);
+ use (&v_long_func);
+ use (&v_signed_long_func);
+ use (&v_unsigned_long_func);
- use (v_long_long_func);
- use (v_signed_long_long_func);
- use (v_unsigned_long_long_func);
+ use (&v_long_long_func);
+ use (&v_signed_long_long_func);
+ use (&v_unsigned_long_long_func);
- use (v_float_func);
- use (v_double_func);
+ use (&v_float_func);
+ use (&v_double_func);
}
diff --git a/gdb/testsuite/gdb.base/dump.c b/gdb/testsuite/gdb.base/dump.c
index 784edf6ac8b..bc68778ee7a 100644
--- a/gdb/testsuite/gdb.base/dump.c
+++ b/gdb/testsuite/gdb.base/dump.c
@@ -1,3 +1,5 @@
+#include <string.h>
+
#define ARRSIZE 32
int intarray[ARRSIZE], intarray2[ARRSIZE];
diff --git a/gdb/testsuite/gdb.base/environ.exp b/gdb/testsuite/gdb.base/environ.exp
index 55ff0a0b779..b00052ba00d 100644
--- a/gdb/testsuite/gdb.base/environ.exp
+++ b/gdb/testsuite/gdb.base/environ.exp
@@ -1,5 +1,4 @@
-# Copyright 1997, 1998, 1999 Free Software Foundation, Inc.
-
+# Copyright 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -39,11 +38,19 @@ if ![istarget "hppa*-*-hpux*"] then {
set testfile "break"
set srcfile ${testfile}.c
+set srcfile1 ${testfile}1.c
set binfile ${objdir}/${subdir}/${testfile}
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}0.o" object {debug additional_flags=-w}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile}1.o" object {debug additional_flags=-w}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
-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."
+if { [gdb_compile "${binfile}0.o ${binfile}1.o" "${binfile}" executable {debug additional_flags=-w}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
gdb_exit
diff --git a/gdb/testsuite/gdb.base/fileio.c b/gdb/testsuite/gdb.base/fileio.c
index 591b3b67588..4fda0fd80a3 100644
--- a/gdb/testsuite/gdb.base/fileio.c
+++ b/gdb/testsuite/gdb.base/fileio.c
@@ -103,7 +103,7 @@ test_open ()
close (ret);
/* Open for write but no write permission */
errno = 0;
- ret = open (NOWRITE, O_CREAT | O_RDONLY, S_IRUSR | S_IWUSR);
+ ret = open (NOWRITE, O_CREAT | O_RDONLY, S_IRUSR);
if (ret >= 0)
{
close (ret);
@@ -479,6 +479,9 @@ strerrno (int err)
#ifdef ENOTEMPTY
case ENOTEMPTY: return "ENOTEMPTY";
#endif
+#ifdef EBUSY
+ case EBUSY: return "EBUSY";
+#endif
default: return "E??";
}
}
diff --git a/gdb/testsuite/gdb.base/fileio.exp b/gdb/testsuite/gdb.base/fileio.exp
index 128cbb608f4..2a717bff182 100644
--- a/gdb/testsuite/gdb.base/fileio.exp
+++ b/gdb/testsuite/gdb.base/fileio.exp
@@ -1,4 +1,4 @@
-# Copyright 2002, 2003
+# Copyright 2002, 2003, 2004
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
@@ -216,9 +216,19 @@ gdb_test continue \
"Renaming a file to existing directory returns EISDIR"
send_gdb "tbreak 388\n" ; gdb_expect -re "$gdb_prompt $"
-gdb_test continue \
- "Continuing\\..*rename 3:.*(ENOTEMPTY|EEXIST).*test_rename \\(\\) at.*$srcfile:388.*" \
-"Renaming a directory to a non-empty directory returns ENOTEMPTY or EEXIST"
+set test "Renaming a directory to a non-empty directory returns ENOTEMPTY or EEXIST"
+gdb_test_multiple continue "${test}" {
+ -re "Continuing\\..*rename 3:.*(ENOTEMPTY|EEXIST).*test_rename \\(\\) at.*$srcfile:388.*$gdb_prompt $" {
+ pass "${test}"
+ }
+ -re "Continuing\\..*rename 3:.*EBUSY.*test_rename \\(\\) at.*$srcfile:388.*$gdb_prompt $" {
+ # At least version <= 2.6/2004-01-08 of the Linux Kernel gets
+ # this wrong (reporting EBUSY) when the file system is NFS
+ # mounted.
+ setup_xfail *-*-*linux* gdb/1502
+ fail "${test}"
+ }
+}
send_gdb "tbreak 393\n" ; gdb_expect -re "$gdb_prompt $"
gdb_test continue \
diff --git a/gdb/testsuite/gdb.base/freebpcmd.c b/gdb/testsuite/gdb.base/freebpcmd.c
index 52d9f30c2b1..765e12d2ca8 100644
--- a/gdb/testsuite/gdb.base/freebpcmd.c
+++ b/gdb/testsuite/gdb.base/freebpcmd.c
@@ -1,3 +1,23 @@
+/* Test program for GDB crashes while doing bp commands that continue inferior.
+ Copyright 2003 Free Software Foundation, Inc.
+
+ This file is part of the gdb testsuite.
+
+ 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. */
+
int
main (int argc, char **argv)
{
diff --git a/gdb/testsuite/gdb.base/freebpcmd.exp b/gdb/testsuite/gdb.base/freebpcmd.exp
index f9521398893..fed067f1d8d 100644
--- a/gdb/testsuite/gdb.base/freebpcmd.exp
+++ b/gdb/testsuite/gdb.base/freebpcmd.exp
@@ -110,12 +110,12 @@ if {$i >= [llength $lines]} {
gdb_run_cmd
gdb_test_multiple "" "run program with breakpoint commands" {
-re "warning: Invalid control type in command structure" {
- fail "run program with breakpoint commands"
+ kfail "gdb/1489" "run program with breakpoint commands"
}
-re "$gdb_prompt $" {
pass "run program with breakpoint commands"
}
eof {
- fail "run program with breakpoint commands (GDB died)"
+ kfail "gdb/1489" "run program with breakpoint commands (GDB died)"
}
}
diff --git a/gdb/testsuite/gdb.base/funcargs.exp b/gdb/testsuite/gdb.base/funcargs.exp
index 38949f1599c..f3284c01b95 100644
--- a/gdb/testsuite/gdb.base/funcargs.exp
+++ b/gdb/testsuite/gdb.base/funcargs.exp
@@ -1,5 +1,5 @@
-# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003
-# Free Software Foundation, Inc.
+# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003,
+# 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -162,7 +162,6 @@ proc float_and_integral_args {} {
global gdb_prompt
global det_file
global gcc_compiled
- global hp_cc_compiler
delete_breakpoints
@@ -178,8 +177,6 @@ proc float_and_integral_args {} {
# Run; should stop at call2a and print actual arguments.
if {!$gcc_compiled} then { setup_xfail "rs6000-*-*" "mips-sgi-irix5*" }
- # The debug info. for "f" is not correct. It's a known bug.
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
gdb_run_cmd
gdb_expect {
-re ".* call2a \\(c=97 'a', f1=4, s=1, d1=5, i=2, f2=4, l=3, d2=5\\) .*$gdb_prompt $" { pass "run to call2a" }
@@ -190,55 +187,46 @@ proc float_and_integral_args {} {
# Print each arg as a double check to see if we can print
gdb_test "print c" ".* = 97 'a'" "print c after run to call2a"
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
gdb_test "print f1" ".* = 4" "print f1 after run to call2a"
gdb_test "print s" ".* = 1" "print s after run to call2a"
gdb_test "print d1" ".* = 5" "print d1 after run to call2a"
gdb_test "print i" ".* = 2" "print i after run to call2a"
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
gdb_test "print f2" ".* = 4" "print f2 after run to call2a"
gdb_test "print l" ".* = 3" "print l after run to call2a"
gdb_test "print d2" ".* = 5" "print d2 after run to call2a"
setup_xfail "rs6000-*-*"
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
if {!$gcc_compiled} then { setup_xfail "mips-sgi-irix*" }
# Continue; should stop at call2b and print actual arguments.
if [gdb_test "cont" ".* call2b \\(f1=4, s=1, d1=5, i=2, f2=4, l=3, d2=5, c=97 'a'\\) .*" "continue to call2b"] {
gdb_suppress_tests;
}
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
# Continue; should stop at call2c and print actual arguments.
if [gdb_test "cont" ".* call2c \\(s=1, d1=5, i=2, f2=4, l=3, d2=5, c=97 'a', f1=4\\) .*" "continue to call2c"] {
gdb_suppress_tests;
}
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
# Continue; should stop at call2d and print actual arguments.
if [gdb_test "cont" ".* call2d \\(d1=5, i=2, f2=4, l=3, d2=5, c=97 'a', f1=4, s=1\\) .*" "continue to call2d"] {
gdb_suppress_tests;
}
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
# Continue; should stop at call2e and print actual arguments.
if [gdb_test "cont" ".* call2e \\(i=2, f2=4, l=3, d2=5, c=97 'a', f1=4, s=1, d1=5\\) .*" "continue to call2e"] {
gdb_suppress_tests;
}
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
# Continue; should stop at call2f and print actual arguments.
if [gdb_test "cont" ".* call2f \\(f2=4, l=3, d2=5, c=97 'a', f1=4, s=1, d1=5, i=2\\) .*" "continue to call2f"] {
gdb_suppress_tests;
}
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
# Continue; should stop at call2g and print actual arguments.
if [gdb_test "cont" ".* call2g \\(l=3, d2=5, c=97 'a', f1=4, s=1, d1=5, i=2, f2=4\\) .*" "continue to call2g"] {
gdb_suppress_tests;
}
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
# Continue; should stop at call2h and print actual arguments.
if [gdb_test "cont" ".* call2h \\(d2=5, c=97 'a', f1=4, s=1, d1=5, i=2, f2=4, l=3\\) .*" "continue to call2h"] {
gdb_suppress_tests;
@@ -249,7 +237,6 @@ proc float_and_integral_args {} {
delete_breakpoints
gdb_breakpoint call2i
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
# Continue; should stop at call2i and print actual arguments.
if [gdb_test "cont" ".* call2i \\(c1=97 'a', f1=4, c2=97 'a', c3=97 'a', d1=5, c4=97 'a', c5=97 'a', c6=97 'a', f2=4, s=1, c7=97 'a', d2=5\\) .*" "continue to call2i"] {
gdb_suppress_tests;
@@ -445,7 +432,6 @@ proc discard_and_shuffle {} {
global decimal
global det_file
global gcc_compiled
- global hp_cc_compiler
delete_breakpoints
@@ -474,8 +460,6 @@ proc discard_and_shuffle {} {
setup_xfail "mips-sgi-irix5*"
}
- # The debug info. for "f" is not correct. It's a known bug.
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
gdb_expect {
-re "backtrace 100\[\r\n\]+
@@ -505,7 +489,6 @@ $gdb_prompt $" {
gdb_continue call6b
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6b" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6b \\(s=1, i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\\) "
@@ -520,7 +503,6 @@ $gdb_prompt $" {
gdb_continue call6c
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6c" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6c \\(i=2, l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\\) "
@@ -535,7 +517,6 @@ $gdb_prompt $" {
gdb_continue call6d
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6d" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6d \\(l=3, f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\\) "
@@ -552,7 +533,6 @@ $gdb_prompt $" {
gdb_continue call6e
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6e" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6e \\(f=4, d=5, uc=98 'b', us=6, ui=7, ul=8\\) "
@@ -570,7 +550,6 @@ $gdb_prompt $" {
gdb_continue call6f
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6f" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6f \\(d=5, uc=98 'b', us=6, ui=7, ul=8\\) "
@@ -589,7 +568,6 @@ $gdb_prompt $" {
gdb_continue call6g
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6g" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6g \\(uc=98 'b', us=6, ui=7, ul=8\\) "
@@ -609,7 +587,6 @@ $gdb_prompt $" {
gdb_continue call6h
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6h" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6h \\(us=6, ui=7, ul=8\\) "
@@ -637,7 +614,6 @@ $gdb_prompt $" {
gdb_continue call6i
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6i" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6i \\(ui=7, ul=8\\) "
@@ -659,7 +635,6 @@ $gdb_prompt $" {
gdb_continue call6j
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6j" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6j \\(ul=8\\) "
@@ -681,7 +656,6 @@ $gdb_prompt $" {
# Print backtrace.
gdb_continue call6k
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
if [gdb_expect_list "backtrace from call6k" ".*$gdb_prompt $" {
".*\[\r\n\]#0 .* call6k \\(\\) "
@@ -713,7 +687,6 @@ proc shuffle_round_robin {} {
global decimal
global det_file
global gcc_compiled
- global hp_cc_compiler
delete_breakpoints
@@ -739,8 +712,6 @@ proc shuffle_round_robin {} {
}
if {!$gcc_compiled} then { setup_xfail "rs6000-*-*" "mips-sgi-irix5*" }
- # The debug info. for "f" is not correct. It's a known bug.
- if {$hp_cc_compiler} {setup_xfail hppa2.0w-*-*}
send_gdb "backtrace 100\n"
gdb_expect {
-re "backtrace 100\[\r\n\]+
@@ -1183,8 +1154,6 @@ gdb_load ${binfile}
if [istarget "mips*tx39-*"] {
set timeout 300
-} elseif [istarget "hppa*-hp-hpux*"] then {
- set timeout 240
} else {
set timeout 60
}
diff --git a/gdb/testsuite/gdb.base/huge.c b/gdb/testsuite/gdb.base/huge.c
index 419b92cc5b7..446bb180371 100644
--- a/gdb/testsuite/gdb.base/huge.c
+++ b/gdb/testsuite/gdb.base/huge.c
@@ -2,6 +2,8 @@
* Test GDB's ability to read a very large data object from target memory.
*/
+#include <string.h>
+
/* A value that will produce a target data object large enough to
crash GDB. 0x200000 is big enough on GNU/Linux, other systems may
need a larger number. */
diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp
index 48641642e18..3e98c0007c2 100644
--- a/gdb/testsuite/gdb.base/maint.exp
+++ b/gdb/testsuite/gdb.base/maint.exp
@@ -400,6 +400,7 @@ gdb_expect {
-re ".*bss.*$gdb_prompt $" { fail "maint info sections .text" }
-re ".*data.*$gdb_prompt $" { fail "maint info sections .text" }
-re ".* .text .*$gdb_prompt $" { pass "maint info sections .text" }
+ -re ".*$gdb_prompt $" { fail "maint info sections .text" }
timeout { fail "(timeout) maint info sections .text" }
}
@@ -409,6 +410,7 @@ send_gdb "maint info sections CODE\n"
gdb_expect {
-re ".* .data .*$gdb_prompt $" { fail "maint info sections CODE" }
-re ".* .text .*$gdb_prompt $" { pass "maint info sections CODE" }
+ -re ".*$gdb_prompt $" { fail "maint info sections CODE" }
timeout { fail "(timeout) maint info sections CODE" }
}
@@ -418,6 +420,7 @@ send_gdb "maint info sections DATA\n"
gdb_expect {
-re ".* .text .*$gdb_prompt $" { fail "maint info sections DATA" }
-re ".* .data .*$gdb_prompt $" { pass "maint info sections DATA" }
+ -re ".*$gdb_prompt $" { fail "maint info sections DATA" }
timeout { fail "(timeout) maint info sections DATA" }
}
diff --git a/gdb/testsuite/gdb.base/nodebug.exp b/gdb/testsuite/gdb.base/nodebug.exp
index 836ff8637e1..fc96074d8d0 100644
--- a/gdb/testsuite/gdb.base/nodebug.exp
+++ b/gdb/testsuite/gdb.base/nodebug.exp
@@ -1,4 +1,4 @@
-# Copyright 1997, 1999 Free Software Foundation, Inc.
+# Copyright 1997, 1999, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -39,8 +39,6 @@ if [get_compiler_info ${binfile}] {
return -1;
}
-source ${binfile}.ci
-
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
diff --git a/gdb/testsuite/gdb.base/scope.exp b/gdb/testsuite/gdb.base/scope.exp
index 266e0e31224..3749d2348b8 100644
--- a/gdb/testsuite/gdb.base/scope.exp
+++ b/gdb/testsuite/gdb.base/scope.exp
@@ -1,5 +1,5 @@
-# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003
-# Free Software Foundation, Inc.
+# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003,
+# 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -112,7 +112,6 @@ proc test_at_main {} {
# Print scope1.c::filelocal, which is 2
if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
- if {$hp_cc_compiler} then { setup_xfail "hppa2.0w-*-*" 11747CLLbs}
if [gdb_test "print 'scope1.c'::filelocal" "\\\$$decimal = 2" "print 'scope1.c'::filelocal" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal"] {
gdb_suppress_tests ;
}
@@ -121,7 +120,6 @@ proc test_at_main {} {
# Print scope1.c::filelocal_bss, which is 102
if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
- if {$hp_cc_compiler} then { setup_xfail "hppa2.0w-*-*" 11747CLLbs}
if [gdb_test "print 'scope1.c'::filelocal_bss" "\\\$$decimal = 102" "print 'scope1.c'::filelocal_bss" "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_bss"] {
gdb_suppress_tests ;
}
diff --git a/gdb/testsuite/gdb.base/sect-cmd.exp b/gdb/testsuite/gdb.base/sect-cmd.exp
index 10c0e74959a..0b86b79a90d 100644
--- a/gdb/testsuite/gdb.base/sect-cmd.exp
+++ b/gdb/testsuite/gdb.base/sect-cmd.exp
@@ -1,4 +1,4 @@
-# Copyright 1997, 1998, 1999 Free Software Foundation, Inc.
+# Copyright 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -40,9 +40,19 @@ if ![istarget "hppa*-*-hpux*"] then {
set testfile "break"
set srcfile ${testfile}.c
+set srcfile1 ${testfile}1.c
set binfile ${objdir}/${subdir}/${testfile}
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
- gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}0.o" object {debug additional_flags=-w}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile}1.o" object {debug additional_flags=-w}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+if { [gdb_compile "${binfile}0.o ${binfile}1.o" "${binfile}" executable {debug additional_flags=-w}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
gdb_exit
diff --git a/gdb/testsuite/gdb.base/setvar.exp b/gdb/testsuite/gdb.base/setvar.exp
index e14ed5d948e..5f3b02c4391 100644
--- a/gdb/testsuite/gdb.base/setvar.exp
+++ b/gdb/testsuite/gdb.base/setvar.exp
@@ -1,4 +1,5 @@
-# Copyright 1997, 1999, 2000 Free Software Foundation, Inc.
+# Copyright 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2004
+# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -329,12 +330,8 @@ gdb_test "print *(v_signed_short_pointer+1)" ".\[0-9\]*.*=.*-456"
gdb_test "set v_unsigned_short_pointer=v_unsigned_short_array" ""
gdb_test "set variable *(v_unsigned_short_pointer)=123" ""
gdb_test "set variable *(v_unsigned_short_pointer+1)=-456" ""
-# DTS 10060CLLbs - bad type info from cc
-if {$hp_cc_compiler} {setup_xfail hppa*-*-*11* 10060CLLbs}
gdb_test "print v_unsigned_short_array" ".\[0-9\]* =.*\\{123,.*65080\\}" \
"set variable unsigned short pointer"
-# DTS 10060CLLbs - bad type info from cc
-if {$hp_cc_compiler} {setup_xfail hppa*-*-*11* 10060CLLbs}
gdb_test "print *(v_unsigned_short_pointer+1)" ".\[0-9\]* = 65080"
#
# test "set variable" for type "int *"
diff --git a/gdb/testsuite/gdb.base/structs.exp b/gdb/testsuite/gdb.base/structs.exp
index 7ff54c9057c..4d282d2e58d 100644
--- a/gdb/testsuite/gdb.base/structs.exp
+++ b/gdb/testsuite/gdb.base/structs.exp
@@ -1,6 +1,6 @@
# This testcase is part of GDB, the GNU debugger.
-# Copyright 1996, 1997, 1999, 2003 Free Software Foundation, Inc.
+# Copyright 1996, 1997, 1999, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -81,6 +81,7 @@ proc start_structs_test { types } {
}
# Start with a fresh gdb.
+ gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
@@ -218,6 +219,9 @@ proc test_struct_calls { n } {
# Call fun${n}, checking the printed return-value.
setup_kfails structs-*tld* i*86-*-* gdb/1447
+ setup_kfails structs-*tld* sparc64-*-* gdb/1447
+ setup_kfails structs-*tld* sparc*-*-solaris2* gdb/1447
+ setup_kfails structs-*tld* x86_64-*-* gdb/1447
setup_compiler_kfails structs-tc-* gcc-3-3 "DWARF 2" i*86-*-* gdb/1455
gdb_test "p/c fun${n}()" "[foo ${n}]" "p/c fun<n>(); ${tests}"
@@ -230,6 +234,9 @@ proc test_struct_calls { n } {
gdb_test "call Fun${n}(foo${n})" "" "call Fun<n>(foo<n>); ${tests}"
setup_kfails structs-*tld* i*86-*-* gdb/1447
+ setup_kfails structs-*tld* sparc64-*-* gdb/1447
+ setup_kfails structs-*tld* sparc*-*-solaris2* gdb/1447
+ setup_kfails structs-*tld* x86_64-*-* gdb/1447
setup_compiler_kfails structs-tc-* gcc-3-3 "DWARF 2" i*86-*-* gdb/1455
gdb_test "p/c L${n}" [foo ${n}] "p/c L<n>; ${tests}"
}
@@ -284,7 +291,10 @@ proc test_struct_returns { n } {
# Check that the program invalidated the relevant global.
setup_kfails structs-tld i*86-*-* gdb/1447
- gdb_test "p/c L${n}" " = [zed $n]" "zed L<n> for return; ${tests} .${testfile}."
+ setup_kfails structs-tld sparc64-*-* gdb/1447
+ setup_kfails structs-tld sparc*-*-solaris2* gdb/1447
+ setup_kfails structs-tld x86_64-*-* gdb/1447
+ gdb_test "p/c L${n}" " = [zed $n]" "zed L<n> for return; ${tests}"
# Force the "return". This checks that the return is always
# performed, and that GDB correctly reported this to the user.
@@ -333,6 +343,9 @@ proc test_struct_returns { n } {
set test "value foo<n> returned; ${tests}"
setup_kfails structs-*tld* i*86-*-* gdb/1447
+ setup_kfails structs-*tld* sparc64-*-* gdb/1447
+ setup_kfails structs-*tld* sparc*-*-solaris2* gdb/1447
+ setup_kfails structs-*tld* x86_64-*-* gdb/1447
gdb_test_multiple "p/c L${n}" "${test}" {
-re " = [foo ${n}].*${gdb_prompt} $" {
if $return_value_unknown {
@@ -384,6 +397,9 @@ proc test_struct_returns { n } {
# Check that the program invalidated the relevant global.
setup_kfails structs-tld i*86-*-* gdb/1447
+ setup_kfails structs-tld sparc64-*-* gdb/1447
+ setup_kfails structs-tld sparc*-*-solaris2* gdb/1447
+ setup_kfails structs-tld x86_64-*-* gdb/1447
gdb_test "p/c L${n}" " = [zed $n]" "zed L<n> for finish; ${tests}"
# Finish the function, set 'finish_value_unknown" to non-empty if the
@@ -406,6 +422,9 @@ proc test_struct_returns { n } {
# check that the variable was cleared, is printed.
set test "value foo<n> finished; ${tests}"
setup_kfails structs-*tld* i*86-*-* gdb/1447
+ setup_kfails structs-*tld* sparc64-*-* gdb/1447
+ setup_kfails structs-*tld* sparc*-*-solaris2* gdb/1447
+ setup_kfails structs-*tld* x86_64-*-* gdb/1447
gdb_test_multiple "p/c" "${test}" {
-re "[foo ${n}]\[\r\n\]+${gdb_prompt} $" {
if $finish_value_unknown {
diff --git a/gdb/testsuite/gdb.base/volatile.exp b/gdb/testsuite/gdb.base/volatile.exp
index faf62b9847b..c12e3d88eae 100644
--- a/gdb/testsuite/gdb.base/volatile.exp
+++ b/gdb/testsuite/gdb.base/volatile.exp
@@ -1,4 +1,4 @@
-# Copyright 1997, 1998, 1999, 2003 Free Software Foundation, Inc.
+# Copyright 1997, 1998, 1999, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -55,28 +55,15 @@ if [get_compiler_info ${binfile}] {
return -1;
}
-if {$hp_aCC_compiler || $hp_cc_compiler} {
- set lang "c++"
-} else {
- set lang ""
-}
-
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug $lang]] != "" } {
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable debug ] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
-remote_exec build "rm -f ${binfile}.ci"
-if [get_compiler_info ${binfile}] {
- return -1
-}
-
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-source ${binfile}.ci
-
#
# set it up at a breakpoint so we can play with the variable values
#
@@ -94,6 +81,11 @@ proc local_compiler_xfail_check { } {
setup_xfail "*-*-*"
}
}
+
+ global hp_cc_compiler
+ if { $hp_cc_compiler } {
+ setup_xfail "hppa*-*-hpux*"
+ }
}
send_gdb "break marker1\n" ; gdb_expect -re ".*$gdb_prompt $"
diff --git a/gdb/testsuite/gdb.cp/classes.exp b/gdb/testsuite/gdb.cp/classes.exp
index 60f5ab75dc4..16a4c3b3f67 100644
--- a/gdb/testsuite/gdb.cp/classes.exp
+++ b/gdb/testsuite/gdb.cp/classes.exp
@@ -1,5 +1,5 @@
# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003 Free Software Foundation, Inc.
+# 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -19,12 +19,13 @@
# bug-gdb@prep.ai.mit.edu
# This file was written by Fred Fish. (fnf@cygnus.com)
+# And rewritten by Michael Chastain <mec.gnu@mindspring.com>.
set ws "\[\r\n\t \]+"
set nl "\[\r\n\]+"
if $tracelevel then {
- strace $tracelevel
+ strace $tracelevel
}
if { [skip_cplus_tests] } { continue }
@@ -33,559 +34,571 @@ set testfile "misc"
set srcfile ${testfile}.cc
set binfile ${objdir}/${subdir}/${testfile}
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-
-if [get_compiler_info ${binfile} "c++"] {
- return -1
-}
-
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
-#
# Test ptype of class objects.
#
+# This code accepts the output of gcc v2 and v3, dwarf-2 and stabs+.
+# It could use some expansion with other compilers such as hp-ux ac++.
+#
+# There are lots of variations in the output:
+#
+# . gcc -stabs+ emits debug info for implicit member functions:
+# operator=, copy ctor, ctor. gcc -gdwarf-2 does not.
+#
+# . gcc with abi version 1 puts the implicit member functions
+# at the beginning of the member function list; with abi version 2,
+# the implicit member functions are at the end of the member function
+# list. This appears as an output difference with -gstabs+.
+# gcc 3.3.X defaults to abi version 1, and gcc 3.4 will default
+# to abi version 2.
+#
+# . gcc v2 shows data members for virtual base pointers.
+# gcc v3 does not.
+#
+# . gdb always prints "class" for both "class" and "struct".
+# In the future, I should accept "struct" in case gdb improves.
proc test_ptype_class_objects {} {
global gdb_prompt
global ws
global nl
- # Note that struct members are public by default, so we don't print
- # "public:" for the public members of structs.
- # Accept it if gdb just fails to distinguish between
- # class and struct, and everything else is OK.
+ # Simple type.
- send_gdb "ptype struct default_public_struct\n"
- gdb_expect {
- -re "type = struct default_public_struct \{${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype struct default_public_struct" "ptype struct default_public_struct" {
+ -re "type = class default_public_struct \{${ws}public:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype struct default_public_struct"
}
- -re "type = class default_public_struct \{$nl.*int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ -re "type = class default_public_struct \{${ws}public:${ws}int a;${ws}int b;${ws}default_public_struct ?& ?operator ?=\\(default_public_struct const ?&\\);${ws}default_public_struct\\(default_public_struct const ?&\\);${ws}default_public_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "ptype struct default_public_struct"
}
- -re ".*$gdb_prompt $" { fail "ptype struct default_public_struct" }
- timeout { fail "ptype struct default_public_struct (timeout)" ; return }
}
- # Note that struct members are public by default, so we don't print
- # "public:" for the public members of structs.
- # Accept it if gdb just fails to distinguish between
- # class and struct, and everything else is OK.
+ # Same test, slightly different type.
- send_gdb "ptype struct explicit_public_struct\n"
- gdb_expect {
- -re "type = struct explicit_public_struct \{${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype struct explicit_public_struct" "ptype struct explicit_public_struct" {
+ -re "type = class explicit_public_struct \{${ws}public:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype struct explicit_public_struct"
}
- -re "type = class explicit_public_struct \{$nl.*int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ -re "type = class explicit_public_struct \{${ws}public:${ws}int a;${ws}int b;${ws}explicit_public_struct ?& ?operator ?=\\(explicit_public_struct const ?&\\);${ws}explicit_public_struct\\(explicit_public_struct const ?&\\);${ws}explicit_public_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "ptype struct explicit_public_struct"
}
- -re ".*$gdb_prompt $" { fail "ptype struct explicit_public_struct" }
- timeout { fail "ptype struct explicit_public_struct (timeout)" ; return }
}
- # Accept it if gdb just fails to distinguish between
- # class and struct, and everything else is OK.
+ # Same test, slightly different type.
- send_gdb "ptype struct protected_struct\n"
- gdb_expect {
- -re "type = struct protected_struct \{${ws}protected:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype struct protected_struct" "ptype struct protected_struct" {
+ -re "type = class protected_struct \{${ws}protected:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype struct protected_struct"
}
- -re "type = class protected_struct \{${ws}protected:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ -re "type = class protected_struct \{${ws}protected:${ws}int a;${ws}int b;${ws}public:${ws}protected_struct ?& ?operator ?=\\(protected_struct const ?&\\);${ws}protected_struct\\(protected_struct const ?&\\);${ws}protected_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "ptype struct protected_struct"
}
- -re ".*$gdb_prompt $" { fail "ptype struct protected_struct" }
- timeout { fail "ptype struct protected_struct (timeout)" ; return }
}
- # Accept it if gdb just fails to distinguish between
- # class and struct, and everything else is OK.
+ # Same test, slightly different type.
- send_gdb "ptype struct private_struct\n"
- gdb_expect {
- -re "type = struct private_struct \{${ws}private:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype struct private_struct" "ptype struct private_struct" {
+ -re "type = class private_struct \{${ws}private:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype struct private_struct"
}
- -re "type = class private_struct \{${ws}private:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ -re "type = class private_struct \{${ws}private:${ws}int a;${ws}int b;${ws}public:${ws}private_struct ?& ?operator ?=\\(private_struct const ?&\\);${ws}private_struct\\(private_struct const ?&\\);${ws}private_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "ptype struct private_struct"
}
- -re ".*$gdb_prompt $" { fail "ptype struct private_struct" }
- timeout { fail "ptype struct private_struct (timeout)" ; return }
}
- # Accept it if gdb just fails to distinguish between
- # class and struct, and everything else is OK.
+ # Similar test, bigger type.
- send_gdb "ptype struct mixed_protection_struct\n"
- gdb_expect {
- -re "type = struct mixed_protection_struct \{${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype struct mixed_protection_struct" "ptype struct mixed_protection_struct" {
+ -re "type = class mixed_protection_struct \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype struct mixed_protection_struct"
}
- -re "type = struct mixed_protection_struct \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl.*\}$nl$gdb_prompt $" {
- pass "ptype struct mixed_protection_struct (extra public)"
- }
- -re "type = class mixed_protection_struct \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl.*\}$nl$gdb_prompt $" {
+ -re "type = class mixed_protection_struct \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;${ws}public:${ws}mixed_protection_struct ?& ?operator ?=\\(mixed_protection_struct const ?&\\);${ws}mixed_protection_struct\\(mixed_protection_struct const ?&\\);${ws}mixed_protection_struct\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "ptype struct mixed_protection_struct"
}
- -re ".*$gdb_prompt $" { fail "ptype struct mixed_protection_struct" }
- timeout { fail "ptype struct mixed_protection_struct (timeout)" ; return }
}
- # Accept it if gdb just fails to distinguish between
- # class and struct, and everything else is OK.
+ # All that again with "class" instead of "struct".
+ # gdb does not care about the difference anyways.
- send_gdb "ptype class public_class\n"
- gdb_expect {
- -re "type = class public_class \{${ws}public:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype class public_class" "ptype class public_class" {
+ -re "type = class public_class \{${ws}public:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class public_class"
}
- -re "type = struct public_class \{${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ -re "type = class public_class \{${ws}public:${ws}int a;${ws}int b;${ws}public_class ?& ?operator ?=\\(public_class const ?&\\);${ws}public_class\\(public_class const ?&\\);${ws}public_class\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "ptype class public_class"
}
- -re ".*$gdb_prompt $" { fail "ptype class public_class" }
- timeout { fail "ptype class public_class (timeout)" ; return }
}
- send_gdb "ptype class protected_class\n"
- gdb_expect {
- -re "type = class protected_class \{${ws}protected:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ # Same test, slightly different type.
+
+ gdb_test_multiple "ptype class protected_class" "ptype class protected_class" {
+ -re "type = class protected_class \{${ws}protected:${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class protected_class"
}
- -re "type = struct protected_class \{${ws}int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
- fail "ptype class protected_class"
+ -re "type = class protected_class \{${ws}protected:${ws}int a;${ws}int b;${ws}public:${ws}protected_class ?& ?operator ?=\\(protected_class const ?&\\);${ws}protected_class\\(protected_class const ?&\\);${ws}protected_class\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class protected_class"
}
- -re ".*$gdb_prompt $" { fail "ptype class protected_class" }
- timeout { fail "ptype class protected_class (timeout)" ; return }
}
- # Accept it if gdb just emits a superflous "private:"
- # attribute, since classes default to private and for consistency with
- # structs (where we don't print the "public:" attribute) we don't print
- # the "private:" attribute.
+ # Same test, slightly different type.
+ # The 'private' is optional but gdb always prints it.
- send_gdb "ptype class default_private_class\n"
- gdb_expect {
- -re "type = class default_private_class \{${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype class default_private_class" "ptype class default_private_class" {
+ -re "type = class default_private_class \{${ws}(private:${ws}|)int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class default_private_class"
}
- -re "type = class default_private_class \{${ws}private:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ -re "type = class default_private_class \{${ws}(private:${ws}|)int a;${ws}int b;${ws}public:${ws}default_private_class ?& ?operator ?=\\(default_private_class const ?&\\);${ws}default_private_class\\(default_private_class const ?&\\);${ws}default_private_class\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "ptype class default_private_class"
}
- -re ".*$gdb_prompt $" { fail "ptype class default_private_class" }
- timeout { fail "ptype class default_private_class (timeout)" ; return }
}
- send_gdb "ptype class explicit_private_class\n"
- gdb_expect {
- -re "type = class explicit_private_class \{${ws}private:${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
+ # Same test, slightly different type.
+
+ gdb_test_multiple "ptype class explicit_private_class" "ptype class explicit_private_class" {
+ -re "type = class explicit_private_class \{${ws}(private:${ws}|)int a;${ws}int b;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class explicit_private_class"
}
- -re "type = class explicit_private_class \{${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
- pass "ptype class explicit_private_class"
- }
- -re "type = struct explicit_private_class \{${ws}int a;${ws}int b;$nl.*\}$nl$gdb_prompt $" {
- fail "ptype class explicit_private_class"
+ -re "type = class explicit_private_class \{${ws}(private:${ws}|)int a;${ws}int b;${ws}public:${ws}explicit_private_class ?& ?operator ?=\\(explicit_private_class const ?&\\);${ws}explicit_private_class\\(explicit_private_class const ?&\\);${ws}explicit_private_class\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class explicit_private_class"
}
- -re ".*$gdb_prompt $" { fail "ptype class explicit_private_class" }
- timeout { fail "ptype class explicit_private_class (timeout)" ; return }
}
- send_gdb "ptype class mixed_protection_class\n"
- gdb_expect {
- -re "type = class mixed_protection_class \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl.*\}$nl$gdb_prompt $" {
+ # Similar test, bigger type.
+
+ gdb_test_multiple "ptype class mixed_protection_class" "ptype struct mixed_protection_class" {
+ -re "type = class mixed_protection_class \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class mixed_protection_class"
}
- -re "type = struct mixed_protection_class \{${ws}int a;${ws}int b;${ws}int c;${ws}int d;${ws}int e;${ws}int f;${ws}int g;${ws}int h;${ws}int i;$nl.*\}$nl$gdb_prompt $" {
- fail "ptype class mixed_protection_class"
+ -re "type = class mixed_protection_class \{${ws}public:${ws}int a;${ws}int b;${ws}private:${ws}int c;${ws}int d;${ws}protected:${ws}int e;${ws}int f;${ws}public:${ws}int g;${ws}private:${ws}int h;${ws}protected:${ws}int i;${ws}public:${ws}mixed_protection_class ?& ?operator ?=\\(mixed_protection_class const ?&\\);${ws}mixed_protection_class\\(mixed_protection_class const ?&\\);${ws}mixed_protection_class\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class mixed_protection_class"
}
- -re ".*$gdb_prompt $" { fail "ptype class mixed_protection_class" }
- timeout { fail "ptype class mixed_protection_class (timeout)" ; return }
}
- # This class does not use any C++-specific features, so it's fine for
- # it to print as "struct".
- send_gdb "ptype class A\n"
- gdb_expect {
- -re "type = (class|struct) A \{(${ws}public:|)${ws}int a;${ws}int x;((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\((A const|const A) ?&\\);)|(${ws}A\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
+ # Here are some classes with inheritance.
+
+ # Base class.
+
+ gdb_test_multiple "ptype class A" "ptype class A" {
+ -re "type = class A \{${ws}public:${ws}int a;${ws}int x;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class A"
}
- -re ".*$gdb_prompt $" {
- fail "ptype class A"
- }
- timeout {
- fail "ptype class A (timeout)"
- return
+ -re "type = class A \{${ws}public:${ws}int a;${ws}int x;${ws}A ?& ?operator ?=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class A"
}
}
- send_gdb "ptype class B\n"
- gdb_expect {
- -re "type = class B : public A \{${ws}public:${ws}int b;${ws}int x;${ws}B & operator=\\(B const ?&\\);${ws}B\\((B const|const B) ?&\\);${ws}B\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
+ # Derived class.
+
+ gdb_test_multiple "ptype class B" "ptype class B" {
+ -re "type = class B : public A \{${ws}public:${ws}int b;${ws}int x;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class B"
}
- -re "type = class B : public A \{${ws}public:${ws}int b;${ws}int x;((${ws}B & operator=\\(B const ?&\\);)|(${ws}B\\(B const ?&\\);)|(${ws}B\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype class B (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class B"
- }
- timeout {
- fail "ptype class B (timeout)"
- return
+ -re "type = class B : public A \{${ws}public:${ws}int b;${ws}int x;${ws}B ?& ?operator ?=\\(B const ?&\\);${ws}B\\(B const ?&\\);${ws}B\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class B"
}
}
- send_gdb "ptype class C\n"
- gdb_expect {
- -re "type = class C : public A \{${ws}public:${ws}int c;${ws}int x;${ws}C & operator=\\(C const ?&\\);${ws}C\\((C const|const C) ?&\\);${ws}C\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
+ # Derived class.
+
+ gdb_test_multiple "ptype class C" "ptype class C" {
+ -re "type = class C : public A \{${ws}public:${ws}int c;${ws}int x;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class C"
}
- -re "type = class C : public A \{${ws}public:${ws}int c;${ws}int x;((${ws}C & operator=\\(C const ?&\\);)|(${ws}C\\(C const ?&\\);)|(${ws}C\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype class C (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class C"
- }
- timeout {
- fail "ptype class C (timeout)"
- return
+ -re "type = class C : public A \{${ws}public:${ws}int c;${ws}int x;${ws}C ?& ?operator ?=\\(C const ?&\\);${ws}C\\(C const ?&\\);${ws}C\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class C"
}
}
- send_gdb "ptype class D\n"
- gdb_expect {
- -re "type = class D : public B, public C \{${ws}public:${ws}int d;${ws}int x;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
+ # Derived class, multiple inheritance.
+
+ gdb_test_multiple "ptype class D" "ptype class D" {
+ -re "type = class D : public B, public C \{${ws}public:${ws}int d;${ws}int x;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class D"
}
- -re "type = class D : public B, public C \{${ws}public:${ws}int d;${ws}int x;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(D const ?&\\);)|(${ws}D\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype class D (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class D"
- }
- timeout {
- fail "ptype class D (timeout)"
- return
+ -re "type = class D : public B, public C \{${ws}public:${ws}int d;${ws}int x;${ws}D ?& ?operator ?=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class D"
}
}
- send_gdb "ptype class E\n"
- gdb_expect {
- -re "type = class E : public D \{${ws}public:${ws}int e;${ws}int x;${ws}E & operator=\\(E const ?&\\);${ws}E\\((E const|const E) ?&\\);${ws}E\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
+ # Derived class.
+
+ gdb_test_multiple "ptype class E" "ptype class E" {
+ -re "type = class E : public D \{${ws}public:${ws}int e;${ws}int x;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class E"
}
- -re "type = class E : public D \{${ws}public:${ws}int e;${ws}int x;((${ws}E & operator=\\(E const ?&\\);)|(${ws}E\\((E const|const E) ?&\\);)|(${ws}E\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
+ -re "type = class E : public D \{${ws}public:${ws}int e;${ws}int x;${ws}E ?& ?operator ?=\\(E const ?&\\);${ws}E\\(E const ?&\\);${ws}E\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "ptype class E"
}
- -re ".*$gdb_prompt $" {
- fail "ptype class E"
- }
- timeout {
- fail "ptype class E (timeout)"
- return
- }
}
- # With g++ 2.x and stabs debug info, we misinterpret static methods
- # whose name matches their argument mangling.
- send_gdb "ptype class Static\n"
- gdb_expect {
- -re "type = (class|struct) Static \{(${ws}public:|)${ws}Static & operator=\\(Static const ?&\\);${ws}Static\\((Static const|const Static) ?&\\);${ws}Static\\((void|)\\);${ws}static void ii\\(int, int\\);${ws}\}$nl$gdb_prompt $" {
+ # This is a break from inheritance tests.
+ #
+ # gcc 2.X with stabs (stabs or stabs+?) used to have a problem with
+ # static methods whose name is the same as their argument mangling.
+
+ gdb_test_multiple "ptype class Static" "ptype class Static" {
+ -re "type = class Static \{${ws}public:${ws}static void ii\\(int, int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class Static"
}
- -re "type = (class|struct) Static \{(${ws}public:|)${ws}static void ii\\(int, int\\);${ws}\}$nl$gdb_prompt $" {
+ -re "type = class Static \{${ws}public:${ws}Static ?& ?operator ?=\\(Static const ?&\\);${ws}Static\\(Static const ?&\\);${ws}Static\\((void|)\\);${ws}static void ii\\(int, int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
pass "ptype class Static"
}
- -re ".*$gdb_prompt $" {
- fail "ptype class Static"
- }
- timeout {
- fail "ptype class Static (timeout)"
- return
+ -re "type = class Static \{${ws}public:${ws}static void ii\\(int, int\\);${ws}Static ?& ?operator ?=\\(Static const ?&\\);${ws}Static\\(Static const ?&\\);${ws}Static\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class Static"
}
}
- send_gdb "ptype class vA\n"
- gdb_expect {
- -re "type = (class|struct) vA \{(${ws}public:|)${ws}int va;${ws}int vx;${ws}\}$nl$gdb_prompt $" {
+ # Here are some virtual inheritance tests.
+
+ gdb_test_multiple "ptype class vA" "ptype class vA" {
+ -re "type = class vA \{${ws}public:${ws}int va;${ws}int vx;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class vA"
}
- -re "type = (class|struct) vA \{(${ws}public:|)${ws}int va;${ws}int vx;${ws}vA & operator=\\(vA const ?&\\);${ws}vA\\((vA const|const vA) ?&\\);${ws}vA\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
+ -re "type = class vA \{${ws}public:${ws}int va;${ws}int vx;${ws}vA ?& ?operator ?=\\(vA const ?&\\);${ws}vA\\(vA const ?&\\);${ws}vA\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
pass "ptype class vA"
}
- -re "type = (class|struct) vA \{(${ws}public:|)${ws}int va;${ws}int vx;((${ws}vA & operator=\\(vA const ?&\\);)|(${ws}vA\\(vA const ?&\\);)|(${ws}vA\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype class vA (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class vA"
- }
- timeout {
- fail "ptype class vA (timeout)"
- return
- }
}
- # Accept the form with embedded GNU style mangled virtual table constructs
- # for now, but with a FIXME. At some future point, gdb should use a
- # portable representation for the virtual table constructs.
-
- # The format of a g++ virtual base pointer.
- set vbptr "(_vb\[$.\]|__vb_)\[0-9\]?"
+ # With gcc 2, gdb prints the virtual base pointer.
+ # With gcc 3, gdb does not print the virtual base pointer.
+ # drow considers it a gdb bug if gdb prints the vbptr.
- send_gdb "ptype class vB\n"
- gdb_expect {
- -re "type = class vB : public virtual vA \{${ws}public:${ws}int vb;${ws}int vx;${ws}vB & operator=\\(vB const ?&\\);${ws}vB\\((vB const|const vB) ?&\\);${ws}vB\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype class vB" "ptype class vB" {
+ -re "type = class vB : public virtual vA \{${ws}private:${ws}vA ?\\* ?_vb.2vA;${ws}public:${ws}int vb;${ws}int vx;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # TODO: kfail this
+ fail "ptype class vB"
+ }
+ -re "type = class vB : public virtual vA \{${ws}public:${ws}int vb;${ws}int vx;$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class vB"
}
- -re "type = class vB : public virtual vA \{${ws}private:${ws}vA \\*${vbptr}vA;${ws}public:${ws}int vb;${ws}int vx;${ws}vB & operator=\\(vB const ?&\\);${ws}vB\\(int, vB const ?&\\);${ws}vB\\(int\\);${ws}\}$nl$gdb_prompt $" {
+ -re "type = class vB : public virtual vA \{${ws}private:${ws}vA ?\\* ?_vb.vA;${ws}public:${ws}int vb;${ws}int vx;${ws}vB ?& ?operator ?=\\(vB const ?&\\);${ws}vB\\(int, ?vB const ?&\\);${ws}vB\\(int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # See the hidden "in-charge" ctor parameter!
+ # TODO: kfail this
setup_xfail "*-*-*"
fail "ptype class vB (FIXME: non-portable virtual table constructs)"
}
- -re "type = class vB : public virtual vA \{${ws}public:${ws}int vb;${ws}int vx;${ws}\}$nl$gdb_prompt $" {
- pass "ptype class vB"
- }
- -re "type = class vB : public virtual vA \{${ws}private:${ws}vA \\*_vb.vA;${ws}public:${ws}int vb;${ws}int vx;((${ws}vB & operator=\\(vB const ?&\\);)|(${ws}vB\\(int, vB const ?&\\);)|(${ws}vB\\(int\\);))*${ws}\}$nl$gdb_prompt $" {
- setup_xfail "*-*-*"
- fail "ptype class vB (FIXME) (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class vB"
- }
- timeout {
- fail "ptype class vB (timeout)"
- return
+ -re "type = class vB : public virtual vA \{${ws}public:${ws}int vb;${ws}int vx;${ws}vB ?& ?operator ?=\\(vB const ?&\\);${ws}vB\\(vB const ?&\\);${ws}vB\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class vB"
}
}
- # Accept the form with embedded GNU style mangled virtual table constructs
- # for now, but with a FIXME. At some future point, gdb should use a
- # portable representation for the virtual table constructs.
+ # Another class with a virtual base.
- send_gdb "ptype class vC\n"
- gdb_expect {
- -re "type = class vC : public virtual vA \{${ws}public:${ws}int vc;${ws}int vx;${ws}vC & operator=\\(vC const ?&\\);${ws}vC\\((vC const|const vC) ?&\\);${ws}vC\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype class vC" "ptype class vC" {
+ -re "type = class vC : public virtual vA \{${ws}private:${ws}vA ?\\* ?_vb.2vA;${ws}public:${ws}int vc;${ws}int vx;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # TODO: kfail
+ fail "ptype class vC"
+ }
+ -re "type = class vC : public virtual vA \{${ws}public:${ws}int vc;${ws}int vx;$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class vC"
}
- -re "type = class vC : public virtual vA \{${ws}private:${ws}vA \\*${vbptr}vA;${ws}public:${ws}int vc;${ws}int vx;${ws}vC & operator=\\(vC const ?&\\);${ws}vC\\(int, vC const ?&\\);${ws}vC\\(int\\);${ws}\}$nl$gdb_prompt $" {
+ -re "type = class vC : public virtual vA \{${ws}private:${ws}vA ?\\* ?_vb.vA;${ws}public:${ws}int vc;${ws}int vx;${ws}vC ?& ?operator ?=\\(vC const ?&\\);${ws}vC\\(int, ?vC const ?&\\);${ws}vC\\(int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # See the hidden "in-charge" ctor parameter!
+ # TODO: kfail
setup_xfail "*-*-*"
fail "ptype class vC (FIXME: non-portable virtual table constructs)"
}
- -re "type = class vC : public virtual vA \{${ws}public:${ws}int vc;${ws}int vx;${ws}\}$nl$gdb_prompt $" {
- pass "ptype class vC"
- }
- -re "type = class vC : public virtual vA \{${ws}private:${ws}vA \\*_vb.vA;${ws}public:${ws}int vc;${ws}int vx;((${ws}vC & operator=\\(vC const ?&\\);)|(${ws}vC\\(int, vC const ?&\\);)|(${ws}vC\\(int\\);))*${ws}\}$nl$gdb_prompt $" {
- setup_xfail "*-*-*"
- fail "ptype class vC (FIXME) (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class vC"
- }
- timeout {
- fail "ptype class vC (timeout)"
- return
+ -re "type = class vC : public virtual vA \{${ws}public:${ws}int vc;${ws}int vx;${ws}vC ?& ?operator ?=\\(vC const ?&\\);${ws}vC\\(vC const ?&\\);${ws}vC\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class vC"
}
}
- # Accept the form with embedded GNU style mangled virtual table constructs
- # for now, but with a FIXME. At some future point, gdb should use a
- # portable representation for the virtual table constructs.
+ # The classic diamond inheritance.
- send_gdb "ptype class vD\n"
- gdb_expect {
- -re "type = class vD : public virtual vB, public virtual vC \{${ws}public:${ws}int vd;${ws}int vx;${ws}vD & operator=\\(vD const ?&\\);${ws}vD\\((vD const|const vD) ?&\\);${ws}vD\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype class vD" "ptype class vD" {
+ -re "type = class vD : public virtual vB, public virtual vC \{${ws}private:${ws}vC ?\\* ?_vb.2vC;${ws}vB ?\\* ?_vb.2vB;${ws}public:${ws}int vd;${ws}int vx;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # TODO: kfail
+ fail "ptype class vD"
+ }
+ -re "type = class vD : public virtual vB, public virtual vC \{${ws}public:${ws}int vd;${ws}int vx;$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class vD"
}
- -re "type = class vD : public virtual vB, public virtual vC \{${ws}private:${ws}vC \\*${vbptr}vC;${ws}vB \\*${vbptr}vB;${ws}public:${ws}int vd;${ws}int vx;${ws}vD & operator=\\(vD const ?&\\);${ws}vD\\(int, vD const ?&\\);${ws}vD\\(int\\);${ws}\}$nl$gdb_prompt $" {
+ -re "type = class vD : public virtual vB, public virtual vC \{${ws}private:${ws}vC ?\\* ?_vb.vC;${ws}vB ?\\* ?_vb.vB;${ws}public:${ws}int vd;${ws}int vx;${ws}vD ?& ?operator ?=\\(vD const ?&\\);${ws}vD\\(int, ?vD const ?&\\);${ws}vD\\(int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # See the hidden "in-charge" ctor parameter!
+ # TODO: kfail
setup_xfail "*-*-*"
fail "ptype class vD (FIXME: non-portable virtual table constructs)"
}
- -re "type = class vD : public virtual vB, public virtual vC \{${ws}public:${ws}int vd;${ws}int vx;${ws}\}$nl$gdb_prompt $" {
- pass "ptype class vD"
- }
- -re "type = class vD : public virtual vB, public virtual vC \{${ws}private:${ws}vC \\*_vb.vC;${ws}vB \\*_vb.vB;${ws}public:${ws}int vd;${ws}int vx;((${ws}vD & operator=\\(vD const ?&\\);)|(${ws}vD\\(int, vD const ?&\\);)|(${ws}vD\\(int\\);))*${ws}\}$nl$gdb_prompt $" {
- setup_xfail "*-*-*"
- fail "ptype class vD (FIXME) (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class vD"
- }
- timeout {
- fail "ptype class vD (timeout)"
- return
+ -re "type = class vD : public virtual vB, public virtual vC \{${ws}public:${ws}int vd;${ws}int vx;${ws}vD ?& ?operator ?=\\(vD const ?&\\);${ws}vD\\(vD const ?&\\);${ws}vD\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class vD"
}
}
- # Accept the form with embedded GNU style mangled virtual table constructs
- # for now, but with a FIXME. At some future point, gdb should use a
- # portable representation for the virtual table constructs.
+ # One more case of virtual derivation.
- send_gdb "ptype class vE\n"
- gdb_expect {
- -re "type = class vE : public virtual vD \{${ws}public:${ws}int ve;${ws}int vx;${ws}vE & operator=\\(vE const ?&\\);${ws}vE\\((vE const|const vE) ?&\\);${ws}vE\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
+ gdb_test_multiple "ptype class vE" "ptype class vE" {
+ -re "type = class vE : public virtual vD \{${ws}private:${ws}vD ?\\* ?_vb.2vD;${ws}public:${ws}int ve;${ws}int vx;$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # TODO: kfail
+ fail "ptype class vE"
+ }
+ -re "type = class vE : public virtual vD \{${ws}public:${ws}int ve;${ws}int vx;$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class vE"
}
- -re "type = class vE : public virtual vD \{${ws}private:${ws}vD \\*${vbptr}vD;${ws}public:${ws}int ve;${ws}int vx;${ws}vE & operator=\\(vE const ?&\\);${ws}vE\\(int, vE const ?&\\);${ws}vE\\(int\\);${ws}\}$nl$gdb_prompt $" {
+ -re "type = class vE : public virtual vD \{${ws}private:${ws}vD ?\\* ?_vb.vD;${ws}public:${ws}int ve;${ws}int vx;${ws}vE ?& ?operator ?=\\(vE const ?&\\);${ws}vE\\(int, ?vE const ?&\\);${ws}vE\\(int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # See the hidden "in-charge" ctor parameter!
+ # TODO: kfail
setup_xfail "*-*-*"
fail "ptype class vE (FIXME: non-portable virtual table constructs)"
}
- -re "type = class vE : public virtual vD \{${ws}public:${ws}int ve;${ws}int vx;${ws}\}$nl$gdb_prompt $" {
- pass "ptype class vE"
- }
- -re "type = class vE : public virtual vD \{${ws}private:${ws}vD \\*_vb.vD;${ws}public:${ws}int ve;${ws}int vx;((${ws}vE & operator=\\(vE const ?&\\);)|(${ws}vE\\(int, vE const ?&\\);)|(${ws}vE\\(int\\);))*${ws}\}$nl$gdb_prompt $" {
- setup_xfail "*-*-*"
- fail "ptype class vE (FIXME) (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class vE"
- }
- timeout {
- fail "ptype class vE (timeout)"
- return
+ -re "type = class vE : public virtual vD \{${ws}public:${ws}int ve;${ws}int vx;${ws}vE ?& ?operator ?=\\(vE const ?&\\);${ws}vE\\(vE const ?&\\);${ws}vE\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class vE"
}
}
- send_gdb "ptype class Base1\n"
- gdb_expect {
- -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1 & operator=\\(Base1 const ?&\\);${ws}Base1\\(((Base1 const)|(const Base1)) ?&\\);${ws}Base1\\(int\\);${ws}\}$nl$gdb_prompt $" {
+ # Another inheritance series.
+
+ gdb_test_multiple "ptype class Base1" "ptype class Base1" {
+ -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1\\(int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class Base1"
}
- -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1\\(int\\);${ws}\}$nl$gdb_prompt $" {
+ -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1 ?& ?operator ?=\\(Base1 const ?&\\);${ws}Base1\\(Base1 const ?&\\);${ws}Base1\\(int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
pass "ptype class Base1"
}
- -re "type = class Base1 \{${ws}public:${ws}int x;((${ws}Base1 & operator=\\(Base1 const ?&\\);)|(${ws}Base1\\(Base1 const ?&\\);)|(${ws}Base1\\(int\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype class Base1 (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class Base1"
- }
- timeout {
- fail "ptype class Base1 (timeout)"
- return
+ -re "type = class Base1 \{${ws}public:${ws}int x;${ws}Base1\\(int\\);${ws}Base1 ?& ?operator ?=\\(Base1 const ?&\\);${ws}Base1\\(Base1 const ?&\\);$nl\}$nl$gdb_prompt $" {
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class Base1"
}
}
- send_gdb "ptype class Foo\n"
- gdb_expect {
- -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;\r\n${ws}Foo\\(int, int\\);${ws}int operator!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);$nl\}$nl$gdb_prompt $" {
- pass "ptype class Foo"
- }
- -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo & operator=\\(Foo const ?&\\);${ws}Foo\\((Foo const|const Foo) ?&\\);${ws}Foo\\(int, int\\);${ws}int operator!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);${ws}\}$nl$gdb_prompt $" {
+ # The second base class.
+
+ gdb_test_multiple "ptype class Foo" "ptype class Foo" {
+ -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo\\(int, int\\);${ws}int operator ?!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class Foo"
}
- -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;((${ws}Foo & operator=\\(Foo const ?&\\);)|(${ws}Foo\\(Foo const ?&\\);)|(${ws}Foo\\(int, int\\);)|(${ws}int operator!\\((void|)\\);)|(${ws}int operator int\\((void|)\\);)|(${ws}int times\\(int\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype class Foo (obsolescent gcc or gdb)"
+ -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo ?& ?operator ?=\\(Foo const ?&\\);${ws}Foo\\(Foo const ?&\\);${ws}Foo\\(int, int\\);${ws}int operator ?!\\((void|)\\);${ws}int operator int\\((void|)\\);${ws}int times\\(int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # TODO: "int operator int()" is a bug
+ # kfail "gdb/1497" "ptype class Foo"
+ pass "ptype class Foo"
}
- -re ".*$gdb_prompt $" {
- fail "ptype class Foo"
+ -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo ?& ?operator ?=\\(Foo const ?&\\);${ws}Foo\\(Foo const ?&\\);${ws}Foo\\(int, int\\);${ws}int operator ?!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gstabs+
+ pass "ptype class Foo"
}
- timeout {
- fail "ptype class Foo (timeout)"
- return
+ -re "type = class Foo \{${ws}public:${ws}int x;${ws}int y;${ws}static int st;${ws}Foo\\(int, int\\);${ws}int operator ?!\\((void|)\\);${ws}operator int\\((void|)\\);${ws}int times\\(int\\);${ws}Foo ?& ?operator ?=\\(Foo const ?&\\);${ws}Foo\\(Foo const ?&\\);$nl\}$nl$gdb_prompt $" {
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class Foo"
}
}
- send_gdb "ptype class Bar\n"
- gdb_expect {
- -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;${ws}Bar & operator=\\(Bar const ?&\\);${ws}Bar\\((Bar const|const Bar) ?&\\);${ws}Bar\\(int, int, int\\);${ws}\}$nl$gdb_prompt $" {
+ # A multiple inheritance derived class.
+
+ gdb_test_multiple "ptype class Bar" "ptype class Bar" {
+ -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;${ws}Bar\\(int, int, int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
pass "ptype class Bar"
}
- -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;((${ws}Bar & operator=\\(Bar const ?&\\);)|(${ws}Bar\\(Bar const ?&\\);)|(${ws}Bar\\(int, int, int\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype class Bar (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype class Bar"
+ -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;${ws}Bar ?& ?operator ?=\\(Bar const ?&\\);${ws}Bar\\(Bar const ?&\\);${ws}Bar\\(int, int, int\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ pass "ptype class Bar"
}
- timeout {
- fail "ptype class Bar (timeout)"
- return
+ -re "type = class Bar : public Base1, public Foo \{${ws}public:${ws}int z;${ws}Bar\\(int, int, int\\);${ws}Bar ?& ?operator ?=\\(Bar const ?&\\);${ws}Bar\\(Bar const ?&\\);$nl\}$nl$gdb_prompt $" {
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype class Bar"
}
}
}
-#
# Test simple access to class members.
-#
+# TODO: these test names are gross!
+# Just let the test name default.
proc test_non_inherited_member_access {} {
global gdb_prompt
# Print non-inherited members of g_A.
-
gdb_test "print g_A.a" ".* = 1" "g_A.a incorrect"
-
gdb_test "print g_A.x" ".* = 2" "g_A.x incorrect"
# Print non-inherited members of g_B.
-
gdb_test "print g_B.b" ".* = 5" "g_B.b incorrect"
-
gdb_test "print g_B.x" ".* = 6" "g_B.x incorrect"
# Print non-inherited members of g_C.
-
gdb_test "print g_C.c" ".* = 9" "g_C.c incorrect"
-
gdb_test "print g_C.x" ".* = 10" "g_C.x incorrect"
# Print non-inherited members of g_D.
-
gdb_test "print g_D.d" ".* = 19" "g_D.d incorrect"
-
gdb_test "print g_D.x" ".* = 20" "g_D.x incorrect"
# Print non-inherited members of g_E.
-
gdb_test "print g_E.e" ".* = 31" "g_E.e incorrect"
-
gdb_test "print g_E.x" ".* = 32" "g_E.x incorrect"
}
-#
-# Try access to non-members that are members of another class.
-# Should give errors.
-#
+# Test access to members of other classes.
+# gdb should refuse to print them.
+# (I feel old -- I remember when this was legal in C -- chastain).
+# TODO: Again, change the silly test names.
proc test_wrong_class_members {} {
global gdb_prompt
gdb_test "print g_A.b" "There is no member( or method|) named b." "print g_A.b should be error"
-
gdb_test "print g_B.c" "There is no member( or method|) named c." "print g_B.c should be error"
-
gdb_test "print g_B.d" "There is no member( or method|) named d." "print g_B.d should be error"
-
gdb_test "print g_C.b" "There is no member( or method|) named b." "print g_C.b should be error"
-
gdb_test "print g_C.d" "There is no member( or method|) named d." "print g_C.d should be error"
-
gdb_test "print g_D.e" "There is no member( or method|) named e." "print g_D.e should be error"
}
-#
-# Try access to non-members that are not members of any class.
-# Should give errors.
-#
+# Test access to names that are not members of any class.
+# TODO: test names again.
proc test_nonexistent_members {} {
global gdb_prompt
gdb_test "print g_A.y" "There is no member( or method|) named y." "print g_A.y should be error"
-
gdb_test "print g_B.z" "There is no member( or method|) named z." "print g_B.z should be error"
-
gdb_test "print g_C.q" "There is no member( or method|) named q." "print g_C.q should be error"
-
gdb_test "print g_D.p" "There is no member( or method|) named p." "print g_D.p should be error"
}
-#
# Call a method that expects a base class parameter with base, inherited,
# and unrelated class arguments.
-#
proc test_method_param_class {} {
gdb_test "call class_param.Aptr_a (&g_A)" ".* = 1" "base class param->a"
@@ -606,62 +619,70 @@ proc test_method_param_class {} {
gdb_test "call class_param.Aval_a (foo)" "Cannot resolve .*" "unrelated class param"
}
-#
# Examine a class with an enum field.
-#
proc test_enums {} {
global gdb_prompt
- global hp_aCC_compiler
+ global nl
+ global ws
# print the object
- send_gdb "print obj_with_enum\n"
- gdb_expect {
- -re "\\$\[0-9\]* = \\{priv_enum = red, x = 0\\}.*$gdb_prompt $" { pass "print obj_with_enum (1)" }
- -re "$gdb_prompt $" { fail "print obj_with_enum (1)" }
- timeout { fail "(timeout) print obj_with_enum (1)" }
- }
- send_gdb "next\n"
- gdb_expect {
- -re "$gdb_prompt $" { pass "next" }
- timeout { fail "(timeout) next" }
- }
+ gdb_test "print obj_with_enum" \
+ "\\$\[0-9\]+ = \{priv_enum = red, x = 0\}" \
+ "print obj_with_enum (1)"
+
+ # advance one line
+
+ gdb_test "next" ""
+
+ # TODO: with gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2,
+ # gdb says that obj_with_enum is out of scope here and the
+ # tests after this FAIL. This needs investigation.
+ # -- chastain 2003-12-30
# print the object again
- send_gdb "print obj_with_enum\n"
- gdb_expect {
- -re "\\$\[0-9\]* = \\{priv_enum = green, x = 0\\}.*$gdb_prompt $" { pass "print obj_with_enum (2)" }
- -re "$gdb_prompt $" { fail "print obj_with_enum (2)" }
- timeout { fail "(timeout) print obj_with_enum (2)" }
- }
- # print out the enum member
- send_gdb "print obj_with_enum.priv_enum\n"
- gdb_expect {
- -re "\\$\[0-9\]* = green.*$gdb_prompt $" { pass "print obj_with_enum.priv_enum" }
- -re "$gdb_prompt $" { fail "print obj_with_enum.priv_enum" }
- timeout { fail "(timeout) print obj_with_enum.priv_enum" }
- }
+ gdb_test "print obj_with_enum" \
+ "\\$\[0-9\]+ = \{priv_enum = green, x = 0\}" \
+ "print obj_with_enum (2)"
+
+ # print the enum member
+
+ gdb_test "print obj_with_enum.priv_enum" "\\$\[0-9\]+ = green"
# ptype on the enum member
- # The third success case is a little dubious, but it's not clear what
- # ought to be required of a ptype on a private enum... -sts 19990324
- send_gdb "ptype obj_with_enum.priv_enum\n"
- gdb_expect {
- -re "type = enum ClassWithEnum::PrivEnum \\{red, green, blue, yellow = 42\\}.*$gdb_prompt $" { pass "ptype obj_with_enum.priv_enum" }
- -re "type = enum PrivEnum \\{red, green, blue, yellow = 42\\}.*$gdb_prompt $" { pass "ptype obj_with_enum.priv_enum" }
- -re "type = enum \\{red, green, blue, yellow = 42\\}.*$gdb_prompt $" { pass "ptype obj_with_enum.priv_enum" }
- -re "$gdb_prompt $" { fail "ptype obj_with_enum.priv_enum" }
- timeout { fail "(timeout) ptype obj_with_enum.priv_enum" }
+
+ gdb_test_multiple "ptype obj_with_enum.priv_enum" "ptype obj_with_enum.priv_enum" {
+ -re "type = enum ClassWithEnum::PrivEnum \{ ?red, green, blue, yellow = 42 ?\}$nl$gdb_prompt $" {
+ pass "ptype obj_with_enum.priv_enum"
+ }
+ -re "type = enum PrivEnum \{ ?red, green, blue, yellow = 42 ?\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ pass "ptype obj_with_enum.priv_enum"
+ }
+ -re "type = enum \{ ?red, green, blue, yellow = 42 ?\}$nl$gdb_prompt $" {
+ # This case case is a little dubious, but it's not clear what
+ # ought to be required of a ptype on a private enum...
+ # -sts 19990324
+ #
+ # It bugs me that this happens with gcc 3.
+ # -- chastain 2003-12-30
+ #
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "ptype obj_with_enum.priv_enum"
+ }
}
# ptype on the object
- send_gdb "ptype obj_with_enum\n"
- gdb_expect {
- -re "type = class ClassWithEnum \\{\r\n\[ \t\]*public:\r\n\[ \t\]*(enum |)ClassWithEnum::PrivEnum priv_enum;\r\n\[ \t\]*int x;\r\n\\}\r\n$gdb_prompt $" { pass "ptype obj_with_enum" }
- -re "type = class ClassWithEnum \\{\r\n\[ \t\]*public:\r\n\[ \t\]*(enum |)PrivEnum priv_enum;\r\n\[ \t\]*int x;.*\\}\r\n$gdb_prompt $"
- {
+ gdb_test_multiple "ptype obj_with_enum" "ptype obj_with_enum" {
+ -re "type = class ClassWithEnum \{${ws}public:${ws}(enum |)ClassWithEnum::PrivEnum priv_enum;${ws}int x;$nl\}$nl$gdb_prompt $" {
+ pass "ptype obj_with_enum"
+ }
+ -re "type = class ClassWithEnum \{${ws}public:${ws}(enum |)PrivEnum priv_enum;${ws}int x;$nl\}$nl$gdb_prompt $" {
# NOTE: carlton/2003-02-28: One could certainly argue that
# this output is acceptable: PrivEnum is a member of
# ClassWithEnum, so there's no need to explicitly qualify
@@ -670,150 +691,85 @@ proc test_enums {} {
# of ClassWithEnum, so we do that output for a bad reason
# instead of a good reason. Under stabs, we probably
# can't get this right; under DWARF-2, we can.
+ #
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ kfail "gdb/57" "ptype obj_with_enum"
+ }
+ -re "type = class ClassWithEnum \{${ws}public:${ws}(enum |)PrivEnum priv_enum;${ws}int x;${ws}ClassWithEnum ?& ?operator ?=\\(ClassWithEnum const ?&\\);${ws}ClassWithEnum\\(ClassWithEnum const ?&\\);${ws}ClassWithEnum\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
kfail "gdb/57" "ptype obj_with_enum"
}
- -re "$gdb_prompt $" { fail "ptype obj_with_enum" }
- timeout { fail "(timeout) ptype obj_with_enum" }
+ -re "type = class ClassWithEnum \{${ws}public:${ws}(enum |)ClassWithEnum::PrivEnum priv_enum;${ws}int x;${ws}ClassWithEnum ?& ?operator ?=\\(ClassWithEnum const ?&\\);${ws}ClassWithEnum\\(ClassWithEnum const ?&\\);${ws}ClassWithEnum\\((void|)\\);$nl\}$nl$gdb_prompt $" {
+ # I think this is a PASS, but only carlton knows for sure.
+ # -- chastain 2003-12-30
+ #
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ fail "ptype obj_with_enum"
+ }
}
- # We'll do this test twice, because of a parser bug: see
- # PR gdb/826.
+ # I'll do this test two different ways, because of a parser bug.
+ # See PR gdb/826.
- send_gdb "print (ClassWithEnum::PrivEnum) 42\n"
- gdb_expect {
- -re "\\$\[0-9\]* = yellow.*$gdb_prompt $" { pass "print (ClassWithEnum::PrivEnum) 42" }
- -re "A parse error in expression, near `42'.\r\n$gdb_prompt $" {
- # bison 1.35
- kfail "gdb/826" "print (ClassWithEnum::PrivEnum) 42"
+ gdb_test_multiple "print (ClassWithEnum::PrivEnum) 42" "print (ClassWithEnum::PrivEnum) 42" {
+ -re "\\$\[0-9\]+ = yellow$nl$gdb_prompt $" {
+ pass "print (ClassWithEnum::PrivEnum) 42"
}
- -re "A syntax error in expression, near `42'.\r\n$gdb_prompt $" {
- # bison 1.875
+ -re "A (parse|syntax) error in expression, near `42'.$nl$gdb_prompt $" {
+ # "parse error" is bison 1.35.
+ # "syntax error" is bison 1.875.
kfail "gdb/826" "print (ClassWithEnum::PrivEnum) 42"
}
- -re "$gdb_prompt $" { fail "print (ClassWithEnum::PrivEnum) 42" }
- timeout { fail "(timeout) print (ClassWithEnum::PrivEnum) 42" }
}
- send_gdb "print ('ClassWithEnum::PrivEnum') 42\n"
- gdb_expect {
- -re "\\$\[0-9\]* = yellow.*$gdb_prompt $" { pass "print ('ClassWithEnum::PrivEnum') 42" }
- -re "No symbol \"ClassWithEnum::PrivEnum\" in current context.\r\n$gdb_prompt $"
- { kfail "gdb/57" "print ('ClassWithEnum::PrivEnum') 42" }
- -re "$gdb_prompt $" { fail "print ('ClassWithEnum::PrivEnum') 42" }
- timeout { fail "(timeout) print ('ClassWithEnum::PrivEnum') 42" }
+ gdb_test_multiple "print ('ClassWithEnum::PrivEnum') 42" "print ('ClassWithEnum::PrivEnum') 42" {
+ -re "\\$\[0-9\]+ = yellow$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "print ('ClassWithEnum::PrivEnum') 42"
+ }
+ -re "No symbol \"ClassWithEnum::PrivEnum\" in current context.$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ kfail "gdb/57" "print ('ClassWithEnum::PrivEnum') 42"
+ }
}
}
-#
# Pointers to class members
-#
proc test_pointers_to_class_members {} {
global gdb_prompt
- global decimal
- global nl
-
- gdb_test "print Bar::z" ".* = .int\[ \]*\[( \]*Bar::&\[)\]+\[ \]*Bar::z" "print Bar::z"
- gdb_test "print &Foo::x" ".* = .int\[ \]*\[( \]*Foo::\[*)\]+\[ \]*&Foo::x" "print &Foo::x"
-
- gdb_test "print (int)&Foo::x" ".* = 0" "print (int)&Foo::x"
-
- send_gdb "print (int)&Bar::y == 2*sizeof(int)\n"
- gdb_expect {
- -re ".* = true$nl$gdb_prompt $" {
- pass "print (int)&Bar::y == 2*sizeof(int)"
- }
- -re "There is no field named y.*$gdb_prompt $" {
- setup_xfail "*-*-*"
- fail "print (int)&Bar::y == 2*sizeof(int)"
- }
- -re ".*$gdb_prompt $" { fail "print (int)&Bar::y == 2*sizeof(int)" }
- timeout { fail "print (int)&Bar::y == 2*sizeof(int) (timeout)" ; return }
- }
-
- send_gdb "next 2\n"
- setup_xfail "*-*-*"
- gdb_expect {
- -re "$decimal\[ \t\]+inheritance3 \[)(\]+;$nl$gdb_prompt $" {}
- -re ".*$gdb_prompt $" { fail "next to inheritance3" ; return }
- }
- clear_xfail "*-*-*"
-
- gdb_test "print (int)pmi == sizeof(int)" ".* = false" "print (int)pmi == sizeof(int)"
+ gdb_test "print Bar::z" "\\$\[0-9\]+ = \\(int ?\\( ?Bar::& ?\\) ?\\) ?Bar::z"
+ gdb_test "print &Foo::x" "\\$\[0-9\]+ = \\(int ?\\( ?Foo::\\* ?\\) ?\\) ?&Foo::x"
+ gdb_test "print (int)&Foo::x" "\\$\[0-9\]+ = 0"
+ gdb_test "print (int)&Bar::y == 2*sizeof(int)" "\\$\[0-9\]+ = true"
+
+ # TODO: this is a bogus test. It's looking at a variable that
+ # has not even been declared yet, so it's accessing random junk
+ # on the stack and comparing that it's NOT equal to a specific
+ # value. It's been like this since gdb 4.10 in 1993!
+ # -- chastain 2004-01-01
+ gdb_test "print (int)pmi == sizeof(int)" ".* = false"
}
-#
# Test static members.
-#
proc test_static_members {} {
global gdb_prompt
global hex
- global nl
-
- send_gdb "print Foo::st\n"
- gdb_expect {
- -re ".* = 100$nl$gdb_prompt $" {
- pass "print Foo::st"
- }
- -re "There is no field named st.*$gdb_prompt $" {
- setup_xfail "*-*-*"
- fail "print Foo::st"
- }
- -re ".*$gdb_prompt $" { fail "print Foo::st" }
- timeout { fail "print Foo::st (timeout)" ; return }
- }
-
- send_gdb "set foo.st = 200\n"
- gdb_expect {
- -re ".*$gdb_prompt $" {}
- }
-
- send_gdb "print bar.st\n"
- gdb_expect {
- -re ".* = 200$nl$gdb_prompt $" {
- pass "print bar.st"
- }
- -re "There is no member( or method|) named st.*$gdb_prompt $" {
- setup_xfail "*-*-*"
- fail "print bar.st"
- }
- -re ".*$gdb_prompt $" { fail "print bar.st" }
- timeout { fail "print bar.st (timeout)" ; return }
- }
-
- send_gdb "print &foo.st\n"
- gdb_expect {
- -re ".* = .int \[*)\]+ $hex$nl$gdb_prompt $" {
- pass "print &foo.st"
- }
- -re "There is no member( or method|) named st.*$gdb_prompt $" {
- setup_xfail "*-*-*"
- fail "print &foo.st"
- }
- -re ".*$gdb_prompt $" { fail "print &foo.st" }
- timeout { fail "print &foo.st (timeout)" ; return }
- }
-
- set got_bar_st 0
- send_gdb "print &Bar::st\n"
- gdb_expect {
- -re ".* = .int \[*)\]+ $hex$nl$gdb_prompt $" {
- pass "print &Bar::st"
- set got_bar_st 1
- }
- -re "There is no field named st.*$gdb_prompt $" {
- setup_xfail "*-*-*"
- fail "print &Bar::st"
- }
- -re ".*$gdb_prompt $" { fail "print &Bar::st" }
- timeout { fail "print &Bar::st (timeout)" ; return }
- }
- if $got_bar_st then {
- gdb_test "print *\$" ".* = 200" "print *\$"
- }
+ gdb_test "print Foo::st" "\\$\[0-9\]+ = 100"
+ gdb_test "set foo.st = 200" "" ""
+ gdb_test "print bar.st" "\\$\[0-9\]+ = 200"
+ gdb_test "print &foo.st" "\\$\[0-9\]+ = \\(int ?\\*\\) $hex"
+ gdb_test "print &Bar::st" "\\$\[0-9\]+ = \\(int ?\\*\\) $hex"
+ gdb_test "print *\$" "\\$\[0-9\]+ = 200"
gdb_test "set print static-members off" ""
gdb_test "print csi" \
@@ -840,6 +796,7 @@ proc do_tests {} {
global srcdir
global binfile
global gdb_prompt
+ global nl
set prms_id 0
set bug_id 0
@@ -851,74 +808,71 @@ proc do_tests {} {
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
- send_gdb "set language c++\n"
- gdb_expect -re "$gdb_prompt $"
- send_gdb "set width 0\n"
- gdb_expect -re "$gdb_prompt $"
-
- runto_main
- test_ptype_class_objects
-
- if [ runto 'inheritance2' ] then {
- test_non_inherited_member_access
- test_wrong_class_members
- test_nonexistent_members
- test_method_param_class
- }
-
- gdb_breakpoint enums2
- if [ gdb_continue "enums2(\\(\\)|)" ]==0 then {
- gdb_test "finish" "" ""
- test_enums
- }
-
- if [istarget "mips-idt-*"] then {
- # Restart because IDT/SIM runs out of file descriptors.
- gdb_exit
- gdb_start
- gdb_reinitialize_dir $srcdir/$subdir
- gdb_load $binfile
- }
-
- if [ runto_main ] then {
- test_pointers_to_class_members
- test_static_members
- }
+ gdb_test "set language c++" "" ""
+ gdb_test "set width 0" "" ""
- if [istarget "mips-idt-*"] then {
- # Restart because IDT/SIM runs out of file descriptors.
- gdb_exit
- gdb_start
- gdb_reinitialize_dir $srcdir/$subdir
- gdb_load $binfile
+ if ![runto_main ] then {
+ perror "couldn't run to breakpoint"
+ return
}
- if [ runto marker_reg1 ] then {
-
- gdb_test "finish" "Run till exit from.*" "finish from marker_reg1"
+ gdb_breakpoint inheritance2
+ gdb_test "continue" ".*Breakpoint .* inheritance2.*" ""
- send_gdb "print v.method ()\n"
- gdb_expect {
- -re "= 82.*$gdb_prompt $" {
- pass "calling method for small class"
- }
- -re "Address requested for identifier .v. which is in register.*$gdb_prompt $" {
- setup_xfail "*-*-*" 2972
- fail "calling method for small class"
- }
- -re ".*$gdb_prompt $" { fail "calling method for small class" }
- timeout { fail "calling method for small class (timeout)" }
- eof { fail "calling method for small class (eof)" }
- }
- }
+ test_ptype_class_objects
+ test_non_inherited_member_access
+ test_wrong_class_members
+ test_nonexistent_members
+ test_method_param_class
+ gdb_breakpoint enums2
+ gdb_test "continue" ".*Breakpoint .* enums2.*" "continue to enums2(\\(\\)|)"
+ gdb_test "finish" "" ""
+ test_enums
+
+ gdb_test "finish" "" ""
+ test_pointers_to_class_members
+ test_static_members
+
+ # Now some random tests that were just thrown in here.
+
+ gdb_breakpoint marker_reg1
+ gdb_test "continue" ".*Breakpoint .* marker_reg1.*" ""
+ gdb_test "finish" "Run till exit from.*" "finish from marker_reg1"
+
+ # This class is so small that an instance of it can fit in a register.
+ # When gdb tries to call a method, it gets embarrassed about taking
+ # the address of a register.
+ #
+ # TODO: I think that message should be a PASS, not an XFAIL.
+ # gdb prints an informative message and declines to do something
+ # impossible.
+ #
+ # The method call actually succeeds if the compiler allocates very
+ # small classes in memory instead of registers. So this test does
+ # not tell us anything interesting if the call succeeds.
+ #
+ # -- chastain 2003-12-31
+ gdb_test_multiple "print v.method ()" "calling method for small class" {
+ -re "\\$\[0-9\]+ = 82$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gdwarf-2
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gdwarf-2
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2003-12-28 21:08:30 UTC -gstabs+
+ pass "calling method for small class"
+ }
+ -re "Address requested for identifier \"v\" which is in register .*$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ setup_xfail "*-*-*" 2972
+ fail "calling method for small class"
+ }
+ }
+
+ # This is a random v2 demangling test.
+ # This is redundant with existing tests in demangle.exp.
+ # TODO: Just remove this.
+ gdb_test "maint demangle inheritance1__Fv" "inheritance1\\(void\\)" "demangle"
}
do_tests
-
-send_gdb "maint demangle inheritance1__Fv\n"
-gdb_expect {
- -re "inheritance1\\(void\\).*$gdb_prompt $" { pass "demangle" }
- -re ".*$gdb_prompt $" { fail "demangle" }
- timeout { fail "(timeout) demangle" }
-}
diff --git a/gdb/testsuite/gdb.cp/ctti.exp b/gdb/testsuite/gdb.cp/ctti.exp
index 1bc005afed5..a5e75d8136e 100644
--- a/gdb/testsuite/gdb.cp/ctti.exp
+++ b/gdb/testsuite/gdb.cp/ctti.exp
@@ -1,4 +1,4 @@
-# Copyright 1998, 1999, 2001, 2003 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2001, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -17,253 +17,194 @@
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
-
# This file is part of the gdb testsuite
# file written by Elena Zannoni (ezannoni@cygnus.com)
+# rewritten by Michael Chastain (mec.gnu@mindspring.com)
#
# source files cttiadd.cc, cttiadd1.cc, cttiadd2.cc, cttiadd3.cc
-#
+# Call to template instantiations.
if $tracelevel then {
- strace $tracelevel
+ strace $tracelevel
}
if { [skip_cplus_tests] } { continue }
-# Check to see if we have an executable to test. If not, then either we
-# haven't tried to compile one, or the compilation failed for some reason.
-# In either case, just notify the user and skip the tests in this file.
-
set testfile "cttiadd"
-set srcfile ${testfile}.cc
-set srcfile1 ${testfile}1.cc
-set srcfile2 ${testfile}2.cc
-set srcfile3 ${testfile}3.cc
-set binfile ${objdir}/${subdir}/${testfile}
+set srcfile "${srcdir}/${subdir}/${testfile}.cc"
+set srcfile1 "${srcdir}/${subdir}/${testfile}1.cc"
+set srcfile2 "${srcdir}/${subdir}/${testfile}2.cc"
+set srcfile3 "${srcdir}/${subdir}/${testfile}3.cc"
+set objfile "${objdir}/${subdir}/${testfile}.o"
+set objfile1 "${objdir}/${subdir}/${testfile}1.o"
+set objfile2 "${objdir}/${subdir}/${testfile}2.o"
+set objfile3 "${objdir}/${subdir}/${testfile}3.o"
+set binfile "${objdir}/${subdir}/${testfile}"
+
+if { [gdb_compile "${srcfile}" "${objfile}" object {debug c++}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
-if [get_compiler_info ${binfile} "c++"] {
- return -1;
+if { [gdb_compile "${srcfile1}" "${objfile1}" object {debug c++}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
-if { [test_compiler_info gcc-*] } then { continue }
+if { [gdb_compile "${srcfile2}" "${objfile2}" object {debug c++}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
-#if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1} ${srcdir}/${subdir}/${srcfile2} ${srcdir}/${subdir}/${srcfile3}" "${binfile}" executable {debug c++}] != "" } {
-# gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
-#}
+if { [gdb_compile "${srcfile3}" "${objfile3}" object {debug c++}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
-set cmdline "$CXX_FOR_TARGET ${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1} ${srcdir}/${subdir}/${srcfile2} ${srcdir}/${subdir}/${srcfile3} -g -o ${binfile}"
+if { [gdb_compile "${objfile} ${objfile1} ${objfile2} ${objfile3}" "${binfile}" executable {debug c++}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
-remote_exec build $cmdline
+if [get_compiler_info ${binfile} "c++"] {
+ return -1;
+}
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-
-
if ![runto_main] then {
perror "couldn't run to breakpoint"
continue
}
+gdb_breakpoint [gdb_get_line_number "marker add1"]
+gdb_continue_to_breakpoint "marker add1"
-send_gdb "n\n"
-gdb_expect {
- -re "$decimal.*i = 2;.*$gdb_prompt $" {
- pass "next "
- }
- -re ".*$gdb_prompt $" { fail "next " }
- timeout { fail "next " }
- }
-
-
-send_gdb "n\n"
-gdb_expect {
- -re "$decimal.*f = 4.5;.*$gdb_prompt $" {
- pass "next "
- }
- -re ".*$gdb_prompt $" { fail "next " }
- timeout { fail "next " }
- }
-
-send_gdb "n\n"
-gdb_expect {
- -re "$decimal.*c = add\\(c, c\\);.*$gdb_prompt $" {
- pass "next "
- }
- -re ".*$gdb_prompt $" { fail "next " }
- timeout { fail "next " }
- }
-
-send_gdb "n\n"
-gdb_expect {
- -re "$decimal.*i = add\\(i, i\\);.*$gdb_prompt $" {
- pass "next "
- }
- -re ".*$gdb_prompt $" { fail "next " }
- timeout { fail "next " }
- }
-
-send_gdb "n\n"
-gdb_expect {
- -re "$decimal.*f = add\\(f, f\\);.*$gdb_prompt $" {
- pass "next "
- }
- -re ".*$gdb_prompt $" { fail "next " }
- timeout { fail "next " }
- }
-
-send_gdb "n\n"
-gdb_expect {
- -re "$decimal.*add1\\(\\);.*$gdb_prompt $" {
- pass "next "
- }
- -re ".*$gdb_prompt $" { fail "next " }
- timeout { fail "next " }
- }
-
-send_gdb "print c\n"
-gdb_expect {
- -re ".$decimal = -62.*\r\n$gdb_prompt $" {
- pass "print value of c"
- }
- -re ".*$gdb_prompt $" { fail "print value of c" }
- timeout { fail "(timeout) print value of c" }
- }
+gdb_test "print c" "\\$\[0-9\]+ = -62 .*"
+gdb_test "print f" "\\$\[0-9\]+ = 9"
+gdb_test "print i" "\\$\[0-9\]+ = 4"
+# TODO: this needs more work before actually deploying it.
+# So bail out here.
-send_gdb "print f\n"
-gdb_expect {
- -re ".$decimal = 9\r\n$gdb_prompt $" {
- pass "print value of f"
- }
- -re ".*$gdb_prompt $" { fail "print value of f" }
- timeout { fail "(timeout) print value of f" }
- }
-
-
-send_gdb "print i\n"
-gdb_expect {
- -re ".$decimal = 4\r\n$gdb_prompt $" {
- pass "print value of i"
- }
- -re ".*$gdb_prompt $" { fail "print value of i" }
- timeout { fail "(timeout) print value of i" }
- }
-
-
-
-send_gdb "print add<int>(2,2)\n"
-gdb_expect {
- -re ".$decimal = 4\r\n$gdb_prompt $" {
- pass "print value of add<int>(2,2)"
- }
- -re ".*$gdb_prompt $" { fail "print value of add<int>(2,2)" }
- timeout { fail "(timeout) print value of add<int>(2,2)" }
- }
-
-send_gdb "print add<float>(2.3,2.3)\n"
-gdb_expect {
- -re ".$decimal = 4\\.5\[0-9\]+\r\n$gdb_prompt $" {
- pass "print value of add<float>(2.3,2.3)"
- }
- -re ".*$gdb_prompt $" { fail "print value of add<float>(2.3,2.3)" }
- timeout { fail "(timeout) print value of add<float>(2.3,2.3)" }
- }
-
-send_gdb "print add<char>('A','A')\n"
-gdb_expect {
- -re ".$decimal = -126.*202.\r\n$gdb_prompt $" {
- pass "print value of add<char>('A','A')"
- }
- -re ".*$gdb_prompt $" { fail "print value of add<char>('A','A')" }
- timeout { fail "(timeout) print value of add<char>('A','A')" }
- }
+if { [ test_compiler_info gcc-*] } then { continue }
+gdb_test_multiple "print add<int>(2,2)" "print add<int>(2,2)" {
+ -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" {
+ pass "print add<int>(2,2)"
+ }
+ -re "No symbol \"add<int>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add<int>(2,2)"
+ }
+}
-send_gdb "print add2<int>(2,2)\n"
-gdb_expect {
- -re ".$decimal = 4\r\n$gdb_prompt $" {
- pass "print value of add2<int>(2,2)"
- }
- -re ".*$gdb_prompt $" { fail "print value of add2<int>(2,2)" }
- timeout { fail "(timeout) print value of add2<int>(2,2)" }
- }
+# Note: 2.25 and 4.5 are exactly representable in IEEE-ish formats
+gdb_test_multiple "print add<float>(2.25,2.25)" "print add<float>(2.25,2.25)" {
+ -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" {
+ pass "print add<float>(2.25,2.25)"
+ }
+ -re "No symbol \"add<float>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add<float>(2.25,2.25)"
+ }
+}
-send_gdb "print add2<float>(2.3,2.3)\n"
-gdb_expect {
- -re ".$decimal = 4\\.5\[0-9\]+\r\n$gdb_prompt $" {
- pass "print value of add2<float>(2.3,2.3)"
- }
- -re ".*$gdb_prompt $" { fail "print value of add2<float>(2.3,2.3)" }
- timeout { fail "(timeout) print value of add2<float>(2.3,2.3)" }
- }
+gdb_test_multiple "print add<char>('A','A')" "print add<char>('A','A')" {
+ -re "\\$\[0-9\]+ = -126 .*\r\n$gdb_prompt $" {
+ pass "print add<char>('A','A')"
+ }
+ -re "No symbol \"add<char>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add<char>('A','A')"
+ }
+}
-send_gdb "print add2<char>('A','A')\n"
-gdb_expect {
- -re ".$decimal = -126.*202.\r\n$gdb_prompt $" {
- pass "print value of add2<char>('A','A')"
- }
- -re ".*$gdb_prompt $" { fail "print value of add2<char>('A','A')" }
- timeout { fail "(timeout) print value of add2<char>('A','A')" }
- }
+gdb_test_multiple "print add2<int>(2,2)" "print add2<int>(2,2)" {
+ -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" {
+ pass "print add2<int>(2,2)"
+ }
+ -re "No symbol \"add2<int>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add2<int>(2,2)"
+ }
+}
-send_gdb "print add3<int>(2,2)\n"
-gdb_expect {
- -re ".$decimal = 4\r\n$gdb_prompt $" {
- pass "print value of add3<int>(2,2)"
- }
- -re ".*$gdb_prompt $" { fail "print value of add3<int>(2,2)" }
- timeout { fail "(timeout) print value of add3<int>(2,2)" }
- }
+gdb_test_multiple "print add2<float>(2.25,2.25)" "print add2<float>(2.25,2.25)" {
+ -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" {
+ pass "print add2<float>(2.25,2.25)"
+ }
+ -re "No symbol \"add2<float>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add2<float>(2.25,2.25)"
+ }
+}
-send_gdb "print add3<float>(2.3,2.3)\n"
-gdb_expect {
- -re ".$decimal = 4\\.5\[0-9\]+\r\n$gdb_prompt $" {
- pass "print value of add3<float>(2.3,2.3)"
- }
- -re ".*$gdb_prompt $" { fail "print value of add3<float>(2.3,2.3)" }
- timeout { fail "(timeout) print value of add3<float>(2.3,2.3)" }
- }
+gdb_test_multiple "print add2<char>('A','A')" "print add2<char>('A','A')" {
+ -re "\\$\[0-9]+ = -126 .*$gdb_prompt $" {
+ pass "print add2<char>('A','A')"
+ }
+ -re "No symbol \"add2<char>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add2<char>('A','A')"
+ }
+}
-send_gdb "print add3<char>('A','A')\n"
-gdb_expect {
- -re ".$decimal = -126.*202.\r\n$gdb_prompt $" {
- pass "print value of add3<char>('A','A')"
- }
- -re ".*$gdb_prompt $" { fail "print value of add3<char>('A','A')" }
- timeout { fail "(timeout) print value of add3<char>('A','A')" }
- }
+gdb_test_multiple "print add3<int>(2,2)" "print add3<int>(2,2)" {
+ -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" {
+ pass "print add3<int>(2,2)"
+ }
+ -re "No symbol \"add3<int>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add3<int>(2,2)"
+ }
+}
-send_gdb "print add4<int>(2,2)\n"
-gdb_expect {
- -re ".$decimal = 4\r\n$gdb_prompt $" {
- pass "print value of add4<int>(2,2)"
- }
- -re ".*$gdb_prompt $" { fail "print value of add4<int>(2,2)" }
- timeout { fail "(timeout) print value of add4<int>(2,2)" }
- }
+gdb_test_multiple "print add3<float>(2.25,2.25)" "print add3<float>(2.25,2.25)" {
+ -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" {
+ pass "print add3<float>(2.25,2.25)"
+ }
+ -re "No symbol \"add3<float>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add3<float>(2.25,2.25)"
+ }
+}
-send_gdb "print add4<float>(2.3,2.3)\n"
-gdb_expect {
- -re ".$decimal = 4\\.5\[0-9\]+\r\n$gdb_prompt $" {
- pass "print value of add4<float>(2.3,2.3)"
- }
- -re ".*$gdb_prompt $" { fail "print value of add4<float>(2.3,2.3)" }
- timeout { fail "(timeout) print value of add4<float>(2.3,2.3)" }
- }
+gdb_test_multiple "print add3<char>('A','A')" "print add3<char>('A','A')" {
+ -re "\\$\[0-9]+ = -126 .*$gdb_prompt $" {
+ pass "print add3<char>('A','A')"
+ }
+ -re "No symbol \"add3<char>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add3<char>('A','A')"
+ }
+}
-send_gdb "print add4<char>('A','A')\n"
-gdb_expect {
- -re ".$decimal = -126.*202.\r\n$gdb_prompt $" {
- pass "print value of add4<char>('A','A')"
- }
- -re ".*$gdb_prompt $" { fail "print value of add4<char>('A','A')" }
- timeout { fail "(timeout) print value of add4<char>('A','A')" }
- }
+gdb_test_multiple "print add4<int>(2,2)" "print add4<int>(2,2)" {
+ -re "\\$\[0-9\]+ = 4\r\n$gdb_prompt $" {
+ pass "print add4<int>(2,2)"
+ }
+ -re "No symbol \"add4<int>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add4<int>(2,2)"
+ }
+}
+gdb_test_multiple "print add4<float>(2.25,2.25)" "print add4<float>(2.25,2.25)" {
+ -re "\\$\[0-9\]+ = 4\\.5\r\n$gdb_prompt $" {
+ pass "print add4<float>(2.25,2.25)"
+ }
+ -re "No symbol \"add4<float>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add4<float>(2.25,2.25)"
+ }
+}
-gdb_exit
-return 0
+gdb_test_multiple "print add4<char>('A','A')" "print add4<char>('A','A')" {
+ -re "\\$\[0-9]+ = -126 .*$gdb_prompt $" {
+ pass "print add4<char>('A','A')"
+ }
+ -re "No symbol \"add4<char>\" in current context.\r\n$gdb_prompt $" {
+ # TODO: kfail or xfail this
+ fail "print add4<char>('A','A')"
+ }
+}
diff --git a/gdb/testsuite/gdb.cp/cttiadd.cc b/gdb/testsuite/gdb.cp/cttiadd.cc
index 1f50fae24c1..195860531e5 100644
--- a/gdb/testsuite/gdb.cp/cttiadd.cc
+++ b/gdb/testsuite/gdb.cp/cttiadd.cc
@@ -1,3 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 1998, 1999, 2004 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@prep.ai.mit.edu */
+
template<class T> T add(T v1, T v2)
{
T v3;
@@ -23,6 +44,7 @@ int main()
i = add(i, i);
f = add(f, f);
+ // marker add1
add1();
subr2();
subr3();
diff --git a/gdb/testsuite/gdb.cp/cttiadd1.cc b/gdb/testsuite/gdb.cp/cttiadd1.cc
index 7113ecea421..3ef318a60d6 100644
--- a/gdb/testsuite/gdb.cp/cttiadd1.cc
+++ b/gdb/testsuite/gdb.cp/cttiadd1.cc
@@ -1,3 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 1998, 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@prep.ai.mit.edu */
+
template<class T> T add(T v1, T v2);
void add1()
diff --git a/gdb/testsuite/gdb.cp/cttiadd2.cc b/gdb/testsuite/gdb.cp/cttiadd2.cc
index d0d9891fb2f..a2f04b5aaca 100644
--- a/gdb/testsuite/gdb.cp/cttiadd2.cc
+++ b/gdb/testsuite/gdb.cp/cttiadd2.cc
@@ -1,3 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 1998, 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@prep.ai.mit.edu */
+
template<class T> T add2(T v1, T v2)
{
T v3;
diff --git a/gdb/testsuite/gdb.cp/cttiadd3.cc b/gdb/testsuite/gdb.cp/cttiadd3.cc
index 7ba1b019f16..60fb61a2aba 100644
--- a/gdb/testsuite/gdb.cp/cttiadd3.cc
+++ b/gdb/testsuite/gdb.cp/cttiadd3.cc
@@ -1,3 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 1998, 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@prep.ai.mit.edu */
+
template<class T> T add3(T v1, T v2)
{
T v3;
diff --git a/gdb/testsuite/gdb.cp/derivation.exp b/gdb/testsuite/gdb.cp/derivation.exp
index 39acf2570a9..6ef6dbe3948 100644
--- a/gdb/testsuite/gdb.cp/derivation.exp
+++ b/gdb/testsuite/gdb.cp/derivation.exp
@@ -1,4 +1,5 @@
-# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,24 +19,23 @@
# bug-gdb@prep.ai.mit.edu
# This file was written by Elena Zannoni (ezannoni@cygnus.com)
+# And rewritten by Michael Chastain <mec.gnu@mindspring.com>
# This file is part of the gdb testsuite
-#
-#
-# tests for inheritance, with several derivations types combinations (private,
-# public, protected)
+# tests for inheritance, with several derivations types combinations
+# (private, public, protected)
# classes have simple members and member functions.
-#
+set ws "\[\r\n\t \]+"
+set nl "\[\r\n\]+"
if $tracelevel then {
- strace $tracelevel
- }
+ strace $tracelevel
+}
+
+# Start program.
-#
-# test running programs
-#
set prms_id 0
set bug_id 0
@@ -45,13 +45,6 @@ set testfile "derivation"
set srcfile ${testfile}.cc
set binfile ${objdir}/${subdir}/${testfile}
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-
-if [get_compiler_info ${binfile} "c++"] {
- return -1
-}
-
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
@@ -61,13 +54,7 @@ gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-#
-# set it up at a breakpoint so we can play with the variable values
-#
-if ![runto_main] then {
- perror "couldn't run to breakpoint"
- continue
-}
+# Set it up at a breakpoint so we can play with the variable values.
if ![runto 'marker1'] then {
perror "couldn't run to marker1"
@@ -76,236 +63,154 @@ if ![runto 'marker1'] then {
gdb_test "up" ".*main.*" "up from marker1"
+# Print class types and values.
+# See virtfunc.exp for a discussion of ptype.
+
+# class A
+
+set re_class "((struct|class) A \{${ws}public:|struct A \{)"
+set re_fields "int a;${ws}int aa;"
+set re_methods "A\\((void|)\\);${ws}int afoo\\((void|)\\);${ws}int foo\\((void|)\\);"
+set re_synth_gcc_23 "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);"
+set re_all_methods "($re_methods|$re_methods${ws}$re_synth_gcc_23|$re_synth_gcc_23${ws}$re_methods)"
+gdb_test "print a_instance" "\\$\[0-9\]+ = \{a = 1, aa = 2\}" "print value of a_instance"
-send_gdb "print a_instance\n"
-gdb_expect {
- -re ".\[0-9\]* = \{a = 1, aa = 2\}\r\n$gdb_prompt $" {
- pass "print value of a_instance"
- }
- -re ".*$gdb_prompt $" { fail "print value of a_instance" }
- timeout { fail "(timeout) print value of a_instance" }
- }
+gdb_test_multiple "ptype a_instance" "ptype a_instance" {
+ -re "type = $re_class${ws}$re_fields${ws}$re_methods$nl\}$nl$gdb_prompt $" {
+ pass "ptype a_instance (no synth ops)"
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_synth_gcc_23${ws}$re_methods${ws}$nl\}$nl$gdb_prompt $" {
+ pass "ptype a_instance (with synth ops)"
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" {
+ pass "ptype a_instance (with synth ops)"
+ }
+}
+
+# class D
+set re_class "class D : private A, public B, protected C \{${ws}public:"
+set XX_class "class D : private A, public B, private C \{${ws}public:"
+set re_fields "int d;${ws}int dd;"
+set re_methods "D\\((void|)\\);${ws}int dfoo\\((void|)\\);${ws}int foo\\((void|)\\);"
+set re_synth_gcc_23 "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);"
+set re_all_methods "($re_methods|$re_methods${ws}$re_synth_gcc_23|$re_synth_gcc_23${ws}$re_methods)"
-send_gdb "ptype a_instance\n"
-gdb_expect {
- -re "type = class A \{\r\n\[\t \]*public:\r\n\[\t \]*int a;\r\n\[\t \]*int aa;\[\r\n\t ]+A & operator=\\(A const ?&\\);\[\r\n\t ]+A\\((A const|const A) ?&\\);\[\r\n\t ]+A\\((void|)\\);\r\n\[\t \]*int afoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype a_instance (with synth ops)" }
- -re "type = class A \{\r\n\[\t \]*public:\r\n\[\t \]*int a;\r\n\[\t \]*int aa;\[\r\n\t \]+A\\(void\\);\r\n\[\t \]*int afoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype a_instance (no synth ops)" }
- -re ".*$gdb_prompt $" { fail "ptype a_instance" }
- timeout { fail "(timeout) ptype a_instance" }
+gdb_test_multiple "print d_instance" "print value of d_instance" {
+ -re "\\$\[0-9\]+ = \{<(class A|A)> = \{a = 1, aa = 2\}, <(class B|B)> = \{b = 3, bb = 4\}, <(class C|C)> = \{c = 5, cc = 6\}, d = 7, dd = 8\}$nl$gdb_prompt $" {
+ pass "print value of d_instance"
+ }
+}
+
+gdb_test_multiple "ptype d_instance" "ptype d_instance" {
+ -re "type = $re_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" {
+ pass "ptype d_instance"
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" {
+ pass "ptype d_instance"
+ }
+ -re "type = $XX_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" {
+ # This is a gcc bug, gcc/13539, gdb/1498.
+ # Fixed in gcc HEAD 2004-01-13
+ setup_xfail "*-*-*" "gcc/13539"
+ fail "ptype d_instance"
+ }
+ -re "type = $XX_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" {
+ # This is a gcc bug, gcc/13539, gdb/1498.
+ # Fixed in gcc HEAD 2004-01-13
+ setup_xfail "*-*-*" "gcc/13539"
+ fail "ptype d_instance"
+ }
}
+# class E
+
+set re_class "class E : public A, private B, protected C \{${ws}public:"
+set XX_class "class E : public A, private B, private C \{${ws}public:"
+set re_fields "int e;${ws}int ee;"
+set re_methods "E\\((void|)\\);${ws}int efoo\\((void|)\\);${ws}int foo\\((void|)\\);"
+set re_synth_gcc_23 "E & operator=\\(E const ?&\\);${ws}E\\(E const ?&\\);"
+set re_all_methods "($re_methods|$re_methods${ws}$re_synth_gcc_23|$re_synth_gcc_23${ws}$re_methods)"
+
+gdb_test_multiple "print e_instance" "print value of e_instance" {
+ -re "\\$\[0-9\]+ = \{<(class A|A)> = \{a = 1, aa = 2\}, <(class B|B)> = \{b = 3, bb = 4\}, <(class C|C)> = \{c = 5, cc = 6\}, e = 9, ee = 10\}$nl$gdb_prompt $" {
+ pass "print value of e_instance"
+ }
+}
-send_gdb "print d_instance\n"
-gdb_expect {
- -re ".\[0-9\]* = \{<A> = \{a = 1, aa = 2\}, <B> = \{b = 3, bb = 4\}, <C> = \{c = 5, cc = 6\}, d = 7, dd = 8\}\r\n$gdb_prompt $" {
- pass "print value of d_instance"
- }
- -re ".\[0-9\]* = \{<class A> = \{a = 1, aa = 2\}, <class B> = \{b = 3, bb = 4\}, <class C> = \{c = 5, cc = 6\}, d = 7, dd = 8\}\r\n$gdb_prompt $" {
- pass "print value of d_instance"
- }
- -re ".*$gdb_prompt $" { fail "print value of d_instance" }
- timeout { fail "(timeout) print value of d_instance" }
- }
-
- if { [test_compiler_info gcc-*] } then {
- send_gdb "ptype d_instance\n"
- gdb_expect {
- -re "type = class D : private A, public B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int d;\r\n\[\t \]*int dd;\[\r\n\t ]+D & operator=\\(D const ?&\\);\[\r\n\t ]+D\\((D const|const D) ?&\\);\[\r\n\t \]+D\\((void|)\\);\r\n\[\t \]*int dfoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype d_instance" }
- -re "type = class D : private A, public B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int d;\r\n\[\t \]*int dd;\[\r\n\t ]+D & operator=\\(D const ?&\\);\[\r\n\t ]+D\\((D const|const D) ?&\\);\[\r\n\t \]+D\\((void|)\\);\r\n\[\t \]*int dfoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype d_instance" }
- -re "type = class D : private A, public B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int d;\r\n\[\t \]*int dd;\[\r\n\t \]+D\\(void\\);\r\n\[\t \]*int dfoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype d_instance" }
- -re ".*$gdb_prompt $" { fail "ptype d_instance" }
- timeout { fail "(timeout) ptype d_instance" }
- }
- } else {
- send_gdb "ptype d_instance\n"
- gdb_expect {
- -re "type = class D : private A, public B, protected C \{\r\n\[\t \]*public:\r\n\[\t \]*int d;\r\n\[\t \]*int dd;\[\r\n\t \]+D\\(void\\);\r\n\[\t \]*int dfoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype d_instance" }
- -re ".*$gdb_prompt $" { fail "ptype d_instance" }
- timeout { fail "(timeout) ptype d_instance" }
- }
- }
-
-
-send_gdb "print e_instance\n"
-gdb_expect {
- -re ".\[0-9\]* = \{<A> = \{a = 1, aa = 2\}, <B> = \{b = 3, bb = 4\}, <C> = \{c = 5, cc = 6\}, e = 9, ee = 10\}\r\n$gdb_prompt $" {
- pass "print value of e_instance"
- }
- -re ".\[0-9\]* = \{<class A> = \{a = 1, aa = 2\}, <class B> = \{b = 3, bb = 4\}, <class C> = \{c = 5, cc = 6\}, e = 9, ee = 10\}\r\n$gdb_prompt $" {
- pass "print value of e_instance"
- }
- -re ".*$gdb_prompt $" { fail "print value of e_instance" }
- timeout { fail "(timeout) print value of e_instance" }
- }
-
- if { [test_compiler_info gcc-*] } then {
- send_gdb "ptype e_instance\n"
- gdb_expect {
- -re "type = class E : public A, private B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int e;\r\n\[\t \]*int ee;\[\r\n\t ]+E & operator=\\(E const ?&\\);\[\r\n\t ]+E\\((E const|const E) ?&\\);\[\r\n\t \]+E\\((void|)\\);\r\n\[\t \]*int efoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype e_instance" }
- -re "type = class E : public A, private B, (protected|private) C \{\r\n\[\t \]*public:\r\n\[\t \]*int e;\r\n\[\t \]*int ee;\[\r\n\t \]+E\\((void|)\\);\r\n\[\t \]*int efoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype e_instance" }
- -re ".*$gdb_prompt $" { fail "ptype e_instance" }
- timeout { fail "(timeout) ptype e_instance" }
- }
- } else {
- send_gdb "ptype e_instance\n"
- gdb_expect {
- -re "type = class E : public A, private B, protected C \{\r\n\[\t \]*public:\r\n\[\t \]*int e;\r\n\[\t \]*int ee;\[\r\n\t \]+E\\((void|)\\);\r\n\[\t \]*int efoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype e_instance" }
- -re ".*$gdb_prompt $" { fail "ptype e_instance" }
- timeout { fail "(timeout) ptype e_instance" }
- }
- }
-
-
-send_gdb "print f_instance\n"
-gdb_expect {
- -re ".\[0-9\]* = \{<A> = \{a = 1, aa = 2\}, <B> = \{b = 3, bb = 4\}, <C> = \{c = 5, cc = 6\}, f = 11, ff = 12\}\r\n$gdb_prompt $" {
- pass "print value of f_instance"
- }
- -re ".\[0-9\]* = \{<class A> = \{a = 1, aa = 2\}, <class B> = \{b = 3, bb = 4\}, <class C> = \{c = 5, cc = 6\}, f = 11, ff = 12\}\r\n$gdb_prompt $" {
- pass "print value of f_instance"
- }
- -re ".*$gdb_prompt $" { fail "print value of f_instance" }
- timeout { fail "(timeout) print value of f_instance" }
- }
-
-send_gdb "ptype f_instance\n"
-gdb_expect {
- -re "type = class F : private A, public B, private C \{\r\n\[\t \]*public:\r\n\[\t \]*int f;\r\n\[\t \]*int ff;\[\r\n\t ]+F & operator=\\(F const ?&\\);\[\r\n\t ]+F\\((F const|const F) ?&\\);\[\r\n\t \]+F\\((void|)\\);\r\n\[\t \]*int ffoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype f_instance" }
- -re "type = class F : private A, public B, private C \{\r\n\[\t \]*public:\r\n\[\t \]*int f;\r\n\[\t \]*int ff;\[\r\n\t \]+F\\((void|)\\);\r\n\[\t \]*int ffoo\\((void|)\\);\r\n\[\t \]*int foo\\((void|)\\);\r\n\}.*$gdb_prompt $" { pass "ptype f_instance" }
- -re ".*$gdb_prompt $" { fail "ptype f_instance" }
- timeout { fail "(timeout) ptype f_instance" }
+gdb_test_multiple "ptype e_instance" "ptype e_instance" {
+ -re "type = $re_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" {
+ pass "ptype e_instance"
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" {
+ pass "ptype e_instance"
+ }
+ -re "type = $XX_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" {
+ # This is a gcc bug, gcc/13539, gdb/1498.
+ # Fixed in gcc HEAD 2004-01-13
+ setup_xfail "*-*-*" "gcc/13539"
+ fail "ptype e_instance"
+ }
+ -re "type = $XX_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" {
+ # This is a gcc bug, gcc/13539, gdb/1498.
+ # Fixed in gcc HEAD 2004-01-13
+ setup_xfail "*-*-*" "gcc/13539"
+ fail "ptype e_instance"
+ }
}
+# class F
+set re_class "class F : private A, public B, private C \{${ws}public:"
+set re_fields "int f;${ws}int ff;"
+set re_methods "F\\((void|)\\);${ws}int ffoo\\((void|)\\);${ws}int foo\\((void|)\\);"
+set re_synth_gcc_23 "F & operator=\\(F const ?&\\);${ws}F\\(F const ?&\\);"
+set re_all_methods "($re_methods|$re_methods${ws}$re_synth_gcc_23|$re_synth_gcc_23${ws}$re_methods)"
-send_gdb "print d_instance.a\n"
-gdb_expect {
- -re ".\[0-9\]* = 1.*$gdb_prompt $" {
- pass "print value of d_instance.a"
- }
- -re ".*$gdb_prompt $" { fail "print value of d_instance.a" }
- timeout { fail "(timeout) print value of d_instance.a" }
- }
-
-send_gdb "print d_instance.aa\n"
-gdb_expect {
- -re ".\[0-9\]* = 2.*$gdb_prompt $" {
- pass "print value of d_instance.aa"
- }
- -re ".*$gdb_prompt $" { fail "print value of d_instance.aa" }
- timeout { fail "(timeout) print value of d_instance.aa" }
- }
-
-send_gdb "print d_instance.b\n"
-gdb_expect {
- -re ".\[0-9\]* = 3.*$gdb_prompt $" {
- pass "print value of d_instance.b"
- }
- -re ".*$gdb_prompt $" { fail "print value of d_instance.b" }
- timeout { fail "(timeout) print value of d_instance.b" }
- }
-
-send_gdb "print d_instance.bb\n"
-gdb_expect {
- -re ".\[0-9\]* = 4.*$gdb_prompt $" {
- pass "print value of d_instance.bb"
- }
- -re ".*$gdb_prompt $" { fail "print value of d_instance.bb" }
- timeout { fail "(timeout) print value of d_instance.bb" }
- }
-
-send_gdb "print d_instance.c\n"
-gdb_expect {
- -re ".\[0-9\]* = 5.*$gdb_prompt $" {
- pass "print value of d_instance.c"
- }
- -re ".*$gdb_prompt $" { fail "print value of d_instance.c" }
- timeout { fail "(timeout) print value of d_instance.c" }
- }
-
-send_gdb "print d_instance.cc\n"
-gdb_expect {
- -re ".\[0-9\]* = 6.*$gdb_prompt $" {
- pass "print value of d_instance.cc"
- }
- -re ".*$gdb_prompt $" { fail "print value of d_instance.cc" }
- timeout { fail "(timeout) print value of d_instance.cc" }
- }
-
-send_gdb "print d_instance.d\n"
-gdb_expect {
- -re ".\[0-9\]* = 7.*$gdb_prompt $" {
- pass "print value of d_instance.d"
- }
- -re ".*$gdb_prompt $" { fail "print value of d_instance.d" }
- timeout { fail "(timeout) print value of d_instance.d" }
- }
-
-send_gdb "print d_instance.dd\n"
-gdb_expect {
- -re ".\[0-9\]* = 8.*$gdb_prompt $" {
- pass "print value of d_instance.dd"
- }
- -re ".*$gdb_prompt $" { fail "print value of d_instance.dd" }
- timeout { fail "(timeout) print value of d_instance.dd" }
- }
-
-send_gdb "print g_instance.a\n"
-gdb_expect {
- -re "warning.*$gdb_prompt $" {
- # The compiler doesn't think this is ambiguous.
- fail "print value of g_instance.a"
+gdb_test_multiple "print f_instance" "print value of f_instance" {
+ -re "\\$\[0-9\]+ = \{<(class A|A)> = \{a = 1, aa = 2\}, <(class B|B)> = \{b = 3, bb = 4\}, <(class C|C)> = \{c = 5, cc = 6\}, f = 11, ff = 12\}$nl$gdb_prompt $" {
+ pass "print value of f_instance"
}
- -re ".\[0-9\]* = 15.*$gdb_prompt $" {
- pass "print value of g_instance.a"
- }
- -re ".*$gdb_prompt $" { fail "print value of g_instance.a" }
- timeout { fail "(timeout) print value of g_instance.a" }
- }
-
-send_gdb "print g_instance.b\n"
-gdb_expect {
- -re "warning.*$gdb_prompt $" {
- # The compiler doesn't think this is ambiguous.
- fail "print value of g_instance.b"
+}
+
+gdb_test_multiple "ptype f_instance" "ptype f_instance" {
+ -re "type = $re_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23$nl\}$nl$gdb_prompt $" {
+ pass "ptype f_instance"
}
- -re ".\[0-9\]* = 16.*$gdb_prompt $" {
- pass "print value of g_instance.b"
- }
- -re ".*$gdb_prompt $" { fail "print value of g_instance.b" }
- timeout { fail "(timeout) print value of g_instance.b" }
- }
-
-send_gdb "print g_instance.c\n"
-gdb_expect {
- -re "warning.*$gdb_prompt $" {
- # The compiler doesn't think this is ambiguous.
- fail "print value of g_instance.c"
+ -re "type = $re_class${ws}$re_fields${ws}$re_all_methods$nl\}$nl$gdb_prompt $" {
+ pass "ptype f_instance"
}
- -re ".\[0-9\]* = 17.*$gdb_prompt $" {
- pass "print value of g_instance.c"
- }
- -re ".*$gdb_prompt $" { fail "print value of g_instance.c" }
- timeout { fail "(timeout) print value of g_instance.c" }
- }
-
-send_gdb "print g_instance.afoo()\n"
-gdb_expect {
- -re ".\[0-9\]* = 1.*$gdb_prompt $" {
- pass "print value of g_instance.afoo()"
- }
- -re ".*$gdb_prompt $" { fail "print value of g_instance.afoo()" }
- timeout { fail "(timeout) print value of g_instance.afoo()" }
- }
+}
+
+# Print individual fields.
+
+gdb_test "print d_instance.a" "\\$\[0-9\]+ = 1" "print value of d_instance.a"
+gdb_test "print d_instance.aa" "\\$\[0-9\]+ = 2" "print value of d_instance.aa"
+gdb_test "print d_instance.b" "\\$\[0-9\]+ = 3" "print value of d_instance.b"
+gdb_test "print d_instance.bb" "\\$\[0-9\]+ = 4" "print value of d_instance.bb"
+gdb_test "print d_instance.c" "\\$\[0-9\]+ = 5" "print value of d_instance.c"
+gdb_test "print d_instance.cc" "\\$\[0-9\]+ = 6" "print value of d_instance.cc"
+gdb_test "print d_instance.d" "\\$\[0-9\]+ = 7" "print value of d_instance.d"
+gdb_test "print d_instance.dd" "\\$\[0-9\]+ = 8" "print value of d_instance.dd"
+# Print some fields which are defined in the top of class G
+# and in its base classes. This is not be ambiguous.
+
+gdb_test "print g_instance.a" "\\$\[0-9\]+ = 15" "print value of g_instance.a"
+gdb_test "print g_instance.b" "\\$\[0-9\]+ = 16" "print value of g_instance.b"
+gdb_test "print g_instance.c" "\\$\[0-9\]+ = 17" "print value of g_instance.c"
+
+# Print a function call.
+
+gdb_test "print g_instance.afoo()" "\\$\[0-9\]+ = 1" "print value of g_instance.afoo()"
# If GDB fails to restore the selected frame properly after the
# inferior function call above (see GDB PR 1155 for an explanation of
# why this might happen), all the subsequent tests will fail. We
# should detect report that failure, but let the marker call finish so
# that the rest of the tests can run undisturbed.
+
gdb_test_multiple "frame" "re-selected 'main' frame after inferior call" {
-re "#0 marker1.*$gdb_prompt $" {
setup_kfail "gdb/1155" s390-*-linux-gnu
@@ -317,21 +222,6 @@ gdb_test_multiple "frame" "re-selected 'main' frame after inferior call" {
pass "re-selected 'main' frame after inferior call"
}
}
-
-send_gdb "print g_instance.bfoo()\n"
-gdb_expect {
- -re ".\[0-9\]* = 2.*$gdb_prompt $" {
- pass "print value of g_instance.bfoo()"
- }
- -re ".*$gdb_prompt $" { fail "print value of g_instance.bfoo()" }
- timeout { fail "(timeout) print value of g_instance.bfoo()" }
- }
-
-send_gdb "print g_instance.cfoo()\n"
-gdb_expect {
- -re ".\[0-9\]* = 3.*$gdb_prompt $" {
- pass "print value of g_instance.cfoo()"
- }
- -re ".*$gdb_prompt $" { fail "print value of g_instance.cfoo()" }
- timeout { fail "(timeout) print value of g_instance.cfoo()" }
- }
+
+gdb_test "print g_instance.bfoo()" "\\$\[0-9\]+ = 2" "print value of g_instance.bfoo()"
+gdb_test "print g_instance.cfoo()" "\\$\[0-9\]+ = 3" "print value of g_instance.cfoo()"
diff --git a/gdb/testsuite/gdb.cp/local.exp b/gdb/testsuite/gdb.cp/local.exp
index 21ceb7ae3db..f4e8d22441b 100644
--- a/gdb/testsuite/gdb.cp/local.exp
+++ b/gdb/testsuite/gdb.cp/local.exp
@@ -1,4 +1,5 @@
-# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -24,6 +25,9 @@
# This file is part of the gdb testsuite
+set ws "\[\r\n\t \]+"
+set nl "\[\r\n\]+"
+
if $tracelevel then {
strace $tracelevel
}
@@ -96,6 +100,13 @@ gdb_test "up" ".*foobar.*" "up from marker1"
#
# chastain 2002-04-08
+# pattern #5
+# PASS
+# stabs+
+# gcc HEAD abi-2
+#
+# chastain 2004-01-02
+
set sep "(\[.\]|___)\[0-9\]"
send_gdb "ptype Local\n"
@@ -106,6 +117,7 @@ gdb_expect {
}
-re "type = class Local \{\[\r\n\t \]*public:\[\r\n\t \]*int loc1;\[\r\n\t \]*Local & operator *=\\((foobar__Fi${sep}::|)Local const *&\\);\[\r\n\t \]*Local\\((foobar__Fi${sep}::|)Local const *&\\);\[\r\n\t \]*Local\\((void|)\\);\[\r\n\t \]*char loc_foo\\(char\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype Local" }
-re "type = class Local \{\r\n\[\t \]*public:\r\n\[\t \]*int loc1;\r\n\r\n\[\t \]*char loc_foo\\(char\\);\r\n\[\t \]*\\(Local at.*local\\.cc:\[0-9\]*\\)\r\n\}.*$gdb_prompt $" { xpass "ptype Local (old aCC)" }
+ -re "type = class Local \{\[\r\n\t \]*public:\[\r\n\t \]*int loc1;\[\r\n\t \]*char loc_foo\\(char\\);\[\r\n\t \]*Local & operator *=\\((foobar__Fi${sep}::|)Local const *&\\);\[\r\n\t \]*Local\\((foobar__Fi${sep}::|)Local const *&\\);\[\r\n\t \]*Local\\((void|)\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype Local" }
-re ".*$gdb_prompt $" { fail "ptype Local" }
timeout { fail "(timeout) ptype Local" }
}
@@ -131,6 +143,10 @@ gdb_expect {
# this right.
kfail gdb/825 "Local out of scope"
}
+ -re "ptype Local${eol}type = class Local {${eol} public:${eol} int loc1;${eol} char loc_foo\\(char\\);${eol}.*${eol}}${eol}${gdb_prompt} " {
+ # gcc 3.X abi-2 -gstabs+
+ kfail gdb/825 "Local out of scope"
+ }
-re ".*${gdb_prompt} $" {
fail "Local out of scope"
}
@@ -168,12 +184,20 @@ gdb_expect {
#
# chastain 2002-05-27
+# Pattern 5:
+# PASS
+# stabs+
+# HEAD
+#
+# chastain 2004-01-02
+
send_gdb "ptype InnerLocal\n"
gdb_expect {
-re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]*int il_foo\\((unsigned char const|const unsigned char) *&\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal (pattern 1)" }
-re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]*InnerLocal *& operator *=\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((void|)\\);\[\r\n\t \]*int il_foo\\(unsigned char const *&\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal (pattern 2)" }
-re "type = class InnerLocal \{\r\n\[\t \]*public:\r\n\[\t \]*char ilc;\r\n\[\t \]*int \\*ip;\r\n\[\t \]*InnerLocal::NestedInnerLocal nest1;\r\n\r\n\[\t \]*.int il_foo\\(unsigned char const &\\);\r\n\[\t \]*\}\[\t \]*\\(Local at.*local\\.cc:36\\).*$gdb_prompt $" { pass "ptype InnerLocal (old HP aCC)" }
-re "type = class InnerLocal \{\r\n\[\t \]*public:\r\n\[\t \]*char ilc;\r\n\[\t \]*int \\*ip;\r\n\[\t \]*class InnerLocal4::NestedInnerLocal nest1;\r\n\r\n\[\t \]*int il_foo\\(unsigned char const &\\);\r\n\[\t \]*\\(Local at.*local\.cc:\[0-9\]+\\)\r\n\}.*$gdb_prompt $" { pass "ptype InnerLocal (old HP aCC)" }
+ -re "type = class InnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*char ilc;\[\r\n\t \]*int \\* *ip;\[\r\n\t \]*(InnerLocal::|)NestedInnerLocal nest1;\[\r\n\t \]* int il_foo\\(unsigned char const *&\\);\[\r\n\t \]*InnerLocal *& operator *=\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((main${sep}::|)InnerLocal const *&\\);\[\r\n\t \]*InnerLocal\\((void|)\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal (pattern 5)" }
-re ".*$gdb_prompt $" { fail "ptype InnerLocal" }
timeout { fail "(timeout) ptype InnerLocal" }
}
@@ -199,30 +223,28 @@ gdb_expect {
timeout { fail "(timeout) ptype NestedInnerLocal" }
}
-# gdb incorrectly interprets the NestedInnerLocal in
-# InnerLocal::NestedInnerLocal as field name instead of a type name;
-# See CLLbs14784.
+set re_class "((struct|class) InnerLocal::NestedInnerLocal \{${ws}public:|struct InnerLocal::NestedInnerLocal \{)"
+set re_fields "int nil;"
+set re_methods "int nil_foo\\(int\\);"
+set re_synth_gcc_23 "InnerLocal::NestedInnerLocal & operator=\\(InnerLocal::NestedInnerLocal const ?&\\);${ws}NestedInnerLocal\\(InnerLocal::NestedInnerLocal const ?&\\);${ws}NestedInnerLocal\\(\\);"
-#---
-# Pattern 3:
-# FAIL
-# The comment above, about CLLbs14784, is still correct.
-# dwarf-2
-# gcc 2.95.3, 2.96-rh, 3.0.4, gcc-3_1-branch, HEAD
-# stabs+
-# gcc 2.95.3, 2.96-rh, 3.0.4, gcc-3_1-branch, HEAD
-#
-# chastain 2002-04-08
-
-send_gdb "ptype InnerLocal::NestedInnerLocal\n"
-gdb_expect {
- -re "type = class InnerLocal::NestedInnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*int nil;\[\r\n\t \]*int nil_foo\\(int\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal::NestedInnerLocal" }
- -re "type = class InnerLocal::NestedInnerLocal \{\[\r\n\t \]*public:\[\r\n\t \]*int nil;\[\r\n\t \]*NestedInnerLocal *& *operator *= *\\((main${sep}::|)InnerLocal::NestedInnerLocal const *&\\);\[\r\n\t \]*NestedInnerLocal\\((main${sep}::|)InnerLocal::NestedInnerLocal const *&\\);\[\r\n\t \]*NestedInnerLocal\\((void|)\\);\[\r\n\t \]*int nil_foo\\(int\\);\[\r\n\t \]*\}.*$gdb_prompt $" { pass "ptype InnerLocal::NestedInnerLocal" }
- -re "There is no field named NestedInnerLocal.*$gdb_prompt $" {
- setup_kfail "gdb/482" *-*-*
- fail "ptype InnerLocal::NestedInnerLocal"
- }
- -re "No symbol .*NestedInnerLocal.* in current context.*$gdb_prompt $" { fail "ptype InnerLocal::NestedInnerLocal (bogus symbol lookup)" }
- -re ".*$gdb_prompt $" { fail "ptype InnerLocal::NestedInnerLocal" }
- timeout { fail "(timeout) ptype InnerLocal::NestedInnerLocal" }
+set name "ptype InnerLocal::NestedInnerLocal"
+gdb_test_multiple "ptype InnerLocal::NestedInnerLocal" $name {
+ -re "type = $re_class${ws}$re_fields${ws}$re_methods$nl\}$nl$gdb_prompt $" {
+ # gcc -gdwarf-2 should produce this but does not yet
+ pass $name
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_synth_gcc_23${ws}$re_methods${ws}$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc v3 -gstabs+, abi 1
+ pass $name
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_methods${ws}$re_synth_gcc_23${ws}$nl\}$nl$gdb_prompt $" {
+ # gcc v3 -gstabs+, abi 2
+ pass $name
+ }
+ -re "There is no field named NestedInnerLocal.*$gdb_prompt $" {
+ # gcc v3 -gdwarf-2
+ kfail "gdb/482" $name
+ }
}
diff --git a/gdb/testsuite/gdb.cp/m-static.exp b/gdb/testsuite/gdb.cp/m-static.exp
index d291135fb06..56cd7bc3bfc 100644
--- a/gdb/testsuite/gdb.cp/m-static.exp
+++ b/gdb/testsuite/gdb.cp/m-static.exp
@@ -1,4 +1,4 @@
-# Copyright 2002 Free Software Foundation, Inc.
+# Copyright 2002, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -33,16 +33,22 @@ set prms_id 0
set bug_id 0
set testfile "m-static"
-set srcfile ${testfile}.cc
-set srcfile1 ${testfile}1.cc
-set binfile ${objdir}/${subdir}/${testfile}
+set srcfile "${srcdir}/${subdir}/${testfile}.cc"
+set srcfile1 "${srcdir}/${subdir}/${testfile}1.cc"
+set objfile "${objdir}/${subdir}/${testfile}.o"
+set objfile1 "${objdir}/${subdir}/${testfile}1.o"
+set binfile "${objdir}/${subdir}/${testfile}"
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile} ${srcdir}/${subdir}/${srcfile1}" "${binfile}" executable {debug c++}] != "" } {
+if { [gdb_compile "${srcfile}" "${objfile}" object {debug c++}] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
-if [get_compiler_info ${binfile} "c++"] {
- return -1
+if { [gdb_compile "${srcfile1}" "${objfile1}" object {debug c++}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+if { [gdb_compile "${objfile} ${objfile1}" "${binfile}" executable {debug c++}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
gdb_exit
diff --git a/gdb/testsuite/gdb.cp/member-ptr.cc b/gdb/testsuite/gdb.cp/member-ptr.cc
index 4beb92616d4..8851a85b91c 100644
--- a/gdb/testsuite/gdb.cp/member-ptr.cc
+++ b/gdb/testsuite/gdb.cp/member-ptr.cc
@@ -1,3 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 1998, 1999 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+ Please email any bugs, comments, and/or additions to this file to:
+ bug-gdb@prep.ai.mit.edu */
+
extern "C" {
#include <stdio.h>
}
diff --git a/gdb/testsuite/gdb.cp/member-ptr.exp b/gdb/testsuite/gdb.cp/member-ptr.exp
index 82437859d8b..83a70a01176 100644
--- a/gdb/testsuite/gdb.cp/member-ptr.exp
+++ b/gdb/testsuite/gdb.cp/member-ptr.exp
@@ -1,4 +1,6 @@
-# Copyright 1998, 1999, 2003 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2003, 2004 Free Software Foundation, Inc.
+
+# This file is part of the gdb testsuite
# 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
@@ -16,27 +18,21 @@
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
+
# Tests for pointer-to-member support
# Written by Satish Pai <pai@apollo.hp.com> 1997-08-19
+# Rewritten by Michael Chastain <mec.gnu@mindspring.com> 2004-01-11
-# This file is part of the gdb testsuite
+# TODO: copyright notice for member-ptr.cc
+set vhn "\\$\[0-9\]+"
if $tracelevel then {
- strace $tracelevel
- }
+ strace $tracelevel
+}
if { [skip_cplus_tests] } { continue }
-#
-# test running programs
-#
-
-# Start with a fresh gdb
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-
set prms_id 0
set bug_id 0
@@ -44,506 +40,586 @@ set testfile "member-ptr"
set srcfile ${testfile}.cc
set binfile ${objdir}/${subdir}/${testfile}
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-
if [get_compiler_info ${binfile} "c++"] {
return -1
}
-# Nearly all of these tests fail when compiled with G++, so just give up
-# until GDB gets enhanced. -sts 1999-06-22
-
-if { [test_compiler_info gcc-*] } then {
- continue
-}
-
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
-
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-
if ![runto_main] then {
perror "couldn't run to breakpoint"
continue
}
-send_gdb "break 83\n"
-gdb_expect {
- -re "Breakpoint \[0-9\]*.*line 83\\.\r\n$gdb_prompt $" {
- pass "set break at 83"
- }
- -re ".*$gdb_prompt $" { fail "set break at 83" }
- timeout { fail "(timeout) set break at 83" }
-}
+gdb_breakpoint [gdb_get_line_number "pmi = NULL"]
+gdb_continue_to_breakpoint "continue to pmi = NULL"
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing\\.\r\n\r\nBreakpoint.*at.*member-ptr\\.cc:83\r\n83\[ \t]*pmi = NULL;\r\n$gdb_prompt $" {
- pass "continue to 83"
- }
- -re ".*$gdb_prompt $" { fail "continue to 83" }
- timeout { fail "(timeout) continue to 83" }
+# gcc is not ready for production
+# -- chastain 2004-01-12
+
+if { [test_compiler_info "gcc-*"] } {
+ continue
}
+# ======================
+# pointer to member data
+# ======================
+
# ptype on pointer to data member
-send_gdb "ptype pmi\n"
-gdb_expect {
- -re "type = int \\( A::\\*\\)\r\n$gdb_prompt $" {
- pass "ptype pmi"
+set name "ptype pmi (A::j)"
+gdb_test_multiple "ptype pmi" $name {
+ -re "type = int *\\( ?A::\\*\\)\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "type = int *A::\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "ptype pmi" }
- timeout { fail "(timeout) ptype pmi" }
}
# print pointer to data member
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\(int \\( A::\\*\\)\\) &A::j\r\n$gdb_prompt $" {
- pass "print pmi"
+set name "print pmi (A::j) "
+gdb_test_multiple "print pmi" $name {
+ -re "$vhn = &A::j\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = \\(int ?\\( ?A::\\*\\)\\) &A::j\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = \\(int ?\\( ?A::\\*\\)\\) ?&A::j ?\\+ ?1 bytes\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ kfail "gdb/NNNN" $name
+ }
+ -re "$vhn = &A::j ?\\+ ?1 bytes\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ kfail "gdb/NNNN" $name
+ }
+ -re "$vhn = not implemented: member type in c_val_print\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-11 05:33:21 -gdwarf-2
+ # gcc HEAD 2004-01-11 05:33:21 -gstabs+
+ kfail "gdb/NNNN" $name
+ }
+ -re "$vhn = \\(int ?\\( A::\\*\\)\\) 536870920\r\n$gdb_prompt $" {
+ # the value is 0x20000008 hex. 0x20000000 is an internal flag.
+ # Use '|' to add in more values as needed.
+ # hpacc A.03.45
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print pmi" }
- timeout { fail "(timeout) print pmi" }
}
-
# print dereferenced pointer to data member
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print a.*pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 121\r\n$gdb_prompt $" {
- pass "print a.*pmi"
+set name "print a.*pmi (A::j)"
+gdb_test_multiple "print a.*pmi" $name {
+ -re "$vhn = 121\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = 855638016\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ kfail "gdb/NNNN" $name
+ }
+ -re "not implemented: member types in unpack_long\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print a.*pmi" }
- timeout { fail "(timeout) print a.*pmi" }
}
# print dereferenced pointer to data member
# this time, dereferenced through a pointer
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print a_p->*pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 121\r\n$gdb_prompt $" {
- pass "print a->*pmi"
+set name "print a_p->*pmi (A::j)"
+gdb_test_multiple "print a_p->*pmi" $name {
+ -re "$vhn = 121\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = 855638016\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ kfail "gdb/NNNN" $name
+ }
+ -re "not implemented: member types in unpack_long\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print a->*pmi" }
- timeout { fail "(timeout) print a->*pmi" }
}
+# set the pointer to a different data member
-# set the pointer to data member
-
-send_gdb "set var pmi = &A::jj\n"
-gdb_expect {
- -re "$gdb_prompt $" {
- pass "set var (not really a pass)"
+set name "set var pmi = &A::jj"
+gdb_test_multiple "set var pmi = &A::jj" $name {
+ -re "Invalid cast.\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
+ }
+ -re "set var pmi = &A::jj\r\n$gdb_prompt $" {
+ # I have to match the echo'ed input explicitly here.
+ # If I leave it out, the pattern becomes too general
+ # and matches anything that ends in "$gdb_prompt $".
+ pass $name
}
- timeout { fail "(timeout) " }
}
-# Now print the pointer again
+# print the pointer again
-send_gdb "print pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\(int \\( A::\\*\\)\\) &A::jj\r\n$gdb_prompt $" {
- pass "print pmi after setting"
+set name "print pmi (A::jj)"
+gdb_test_multiple "print pmi" $name {
+ -re "$vhn = &A::jj\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = \\(int ?\\( ?A::\\*\\)\\) &A::jj\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = not implemented: member type in c_val_print\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-11 05:33:21 -gdwarf-2
+ # gcc HEAD 2004-01-11 05:33:21 -gstabs+
+ kfail "gdb/NNNN" $name
+ }
+ -re "$vhn = \\(int ?\\( A::\\*\\)\\) 536870924\r\n$gdb_prompt $" {
+ # the value is 0x20000008 hex. 0x20000000 is an internal flag.
+ # Use '|' to add in more values as needed.
+ # hpacc A.03.45
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print pmi after setting" }
- timeout { fail "(timeout) print pmi after setting" }
}
# print dereferenced pointer to data member again
-send_gdb "print a.*pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 1331\r\n$gdb_prompt $" {
- pass "print a.*pmi after setting"
+set name "print a.*pmi (A::jj)"
+gdb_test_multiple "print a.*pmi" $name {
+ -re "$vhn = 1331\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "not implemented: member types in unpack_long\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print a.*pmi after setting" }
- timeout { fail "(timeout) print a.*pmi after setting" }
}
# set the pointer to data member back to A::j
-send_gdb "set var pmi = &A::j\n"
-gdb_expect {
- -re "$gdb_prompt $" {
- pass "set var back to A::j (not really a pass)"
+set name "set var pmi = &A::j"
+gdb_test_multiple "set var pmi = &A::j" $name {
+ -re "Invalid cast.\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
+ }
+ -re "set var pmi = &A::j\r\n$gdb_prompt $" {
+ # I have to match the echo'ed input explicitly here.
+ # If I leave it out, the pattern becomes too general
+ # and matches anything that ends in "$gdb_prompt $".
+ pass $name
}
- timeout { fail "(timeout) set var pmi" }
}
# print dereferenced pointer to data member yet again (extra check, why not)
-send_gdb "print a.*pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 121\r\n$gdb_prompt $" {
- pass "print a.*pmi after resetting"
+set name "print a.*pmi (A::j) (again)"
+gdb_test_multiple "print a.*pmi" $name {
+ -re "$vhn = 121\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "not implemented: member types in unpack_long\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print a.*pmi after resetting" }
- timeout { fail "(timeout) print a.*pmi after resetting" }
}
# Set the data member pointed to.
-send_gdb "print a.*pmi = 33\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 33\r\n$gdb_prompt $" {
- pass "print command to set"
+set name "print a.*pmi = 33"
+gdb_test_multiple "print a.*pmi = 33" $name {
+ -re "$vhn = 33\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "not implemented: member types in unpack_long\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print command to set" }
- timeout { fail "(timeout) print command to set" }
}
# Now check that the data really was changed
-send_gdb "print a.*pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 33\r\n$gdb_prompt $" {
- pass "print a.*pmi after setting member pointed to"
- }
- -re ".*$gdb_prompt $" { fail "print a.*pmi after setting member pointed to" }
- timeout { fail "(timeout) print a.*pmi after setting member pointed to" }
-}
-# Double-check by printing a.
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print a\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{c = 120 'x', j = 33, jj = 1331, static s = 10, Virtual table at $hex\}\r\n$gdb_prompt $" {
- pass "print a after setting member pointed to by pmi"
+set name "print a.*pmi (A::j) (33)"
+gdb_test_multiple "print a.*pmi" $name {
+ -re "$vhn = 33\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "not implemented: member types in unpack_long\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print a after setting member pointed to by pmi" }
- timeout { fail "(timeout) print a after setting member pointed to by pmi" }
}
+# Double-check by printing a.
-# Set the data member pointed to, using ->*
-
-send_gdb "print a_p->*pmi = 44\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 44\r\n$gdb_prompt $" {
- pass "print command to set (->)"
+set name "print a (j = 33)"
+gdb_test_multiple "print a" $name {
+ -re "$vhn = \{c = 120 'x', j = 33, jj = 1331, (static|static int) s = 10, (_vptr.A|_vptr\\$) = ($hex|$hex <A virtual table>)\}\r\n$gdb_prompt $" {
+ pass $name
}
- -re ".*$gdb_prompt $" { fail "print command to set (->)" }
- timeout { fail "(timeout) print command to set (->)" }
-}
-
-# Now check that the data really was changed
-send_gdb "print a_p->*pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 44\r\n$gdb_prompt $" {
- pass "print a_p->*pmi after setting member pointed to"
+ -re "$vhn = \{c = 120 'x', j = 33, jj = 1331, (static|static int) s = 10, Virtual table at $hex\}\r\n$gdb_prompt $" {
+ pass $name
}
- -re ".*$gdb_prompt $" { fail "print a_p->*pmi after setting member pointed to" }
- timeout { fail "(timeout) print a_p->*pmi after setting member pointed to" }
-}
-
-# Double-check by printing a.
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print a\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \{c = 120 'x', j = 44, jj = 1331, static s = 10, Virtual table at $hex\}\r\n$gdb_prompt $" {
- pass "print a after setting member pointed to by pmi (->) "
+ -re "$vhn = \{(_vptr.A|_vptr\\$) = $hex, c = 120 'x', j = 33, jj = 1331, (static|static int) s = 10\}\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = \{(_vptr.A|_vptr\\$) = $hex, c = 120 'x', j = 121, jj = 1331, (static|static int) s = 10\}\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print a after setting member pointed to by pmi (->) " }
- timeout { fail "(timeout) print a after setting member pointed to by pmi (->) " }
}
+# Set the data member pointed to, using ->*
-# Do a ptype on the dereferenced pointer to member
-# pai/1997-08-20 Doesn't work
-
-# send_gdb "ptype a.*pmi\n"
-# gdb_expect {
-# -re "type = int\r\n$gdb_prompt $" {
-# pass "ptype a.*pmi"
-# }
-# -re ".*$gdb_prompt $" { fail "ptype a.*pmi" }
-# timeout { fail "(timeout) ptype a.*pmi" }
-#}
-
-# Try to dereference the pointer to data member without any object
-
-send_gdb "print *pmi\n"
-gdb_expect {
- -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {
- pass "attempt to print ptr to member without object"
+set name "print a_p->*pmi = 44"
+gdb_test_multiple "print a_p->*pmi = 44" $name {
+ -re "$vhn = 44\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "not implemented: member types in unpack_long\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "attempt to print ptr to member without object" }
- timeout { fail "(timeout) attempt to print ptr to member without object" }
}
-# Try to ptype a dereference of the pointer to data member without any object
+# Check that the data really was changed
-send_gdb "ptype *pmi\n"
-gdb_expect {
- -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {
- pass "attempt to ptype ptr to member without object"
+set name "print a_p->*pmi (44)"
+gdb_test_multiple "print a_p->*pmi" $name {
+ -re "$vhn = 44\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "not implemented: member types in unpack_long\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "attempt to ptype ptr to member without object" }
- timeout { fail "(timeout) attempt to ptype ptr to member without object" }
}
-# Ptype a pointer to a method.
+# Double-check by printing a.
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "ptype pmf\n"
-gdb_expect {
- -re "type = int \\( A::\\*\\)\\(\\.\\.\\.\\)\r\n$gdb_prompt $" {
- pass "ptype pmf"
+set name "print a (j = 44)"
+gdb_test_multiple "print a" $name {
+ -re "$vhn = \{c = 120 'x', j = 44, jj = 1331, (static|static int) s = 10, (_vptr.A|_vptr\\$) = ($hex|$hex <A virtual table>)\}\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = \{c = 120 'x', j = 44, jj = 1331, (static|static int) s = 10, Virtual table at $hex\}\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = \{(_vptr.A|_vptr\\$) = $hex, c = 120 'x', j = 44, jj = 1331, (static|static int) s = 10\}\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = \{(_vptr.A|_vptr\\$) = $hex, c = 120 'x', j = 121, jj = 1331, (static|static int) s = 10\}\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "ptype pmf" }
- timeout { fail "(timeout) ptype pmf" }
}
-# print a pointer to a method
+# ptype the dereferenced pointer to member.
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print pmf\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\(int \\( A::\\*\\)\\(\\.\\.\\.\\)\\) \\?\\? <not supported with HP aCC>\r\n$gdb_prompt $" {
- pass "print pmf"
+set name "ptype a.*pmi"
+gdb_test_multiple "ptype a.*pmi" $name {
+ -re "type = int\r\n$gdb_prompt" {
+ pass $name
+ }
+ -re "not implemented: member types in unpack_long\r\n$gdb_prompt $" {
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print pmf" }
- timeout { fail "(timeout) print pmf" }
}
+# dereference the pointer to data member without any object
+# this is not allowed: a pmi must be bound to an object to dereference
-# Ptype a pointer to a pointer to a method
-
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "ptype pmf_p\n"
-gdb_expect {
- -re "type = int \\( A::\\*\\*\\)\\(\\.\\.\\.\\)\r\n$gdb_prompt $" {
- pass "ptype pmf_p"
+set name "print *pmi"
+gdb_test_multiple "print *pmi" $name {
+ -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "Cannot access memory at address 0x4\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ kfail "gdb/NNNN" $name
+ }
+ -re "Cannot access memory at address 0x8\r\n$gdb_prompt $" {
+ # gcc 3.3.2 -gdwarf-2
+ # gcc 3.3.2 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "ptype pmf_p" }
- timeout { fail "(timeout) ptype pmf_p" }
}
-# print a pointer to a pointer to a method
+# dereference the pointer to data member without any object
+# this is not allowed: a pmi must be bound to an object to dereference
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print pmf_p\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\(int \\( A::\\*\\*\\)\\(\\.\\.\\.\\)\\) $hex\r\n$gdb_prompt $" {
- pass "print pmf_p"
+set name "ptype *pmi"
+gdb_test_multiple "ptype *pmi" $name {
+ -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "type = int A::\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print pmf_p" }
- timeout { fail "(timeout) print pmf_p" }
}
-# print dereferenced pointer to method
+# Check cast of pointer to member to integer.
+# This is similar to "offset-of".
+# such as "A a; print (size_t) &A.j - (size_t) &A".
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print a.*pmf\n"
-gdb_expect {
- -re "Pointers to methods not supported with HP aCC\r\n$gdb_prompt $" {
- pass "print a.*pmf (known aCC limitation)"
+set name "print (int) pmi"
+gdb_test_multiple "print (int) pmi" $name {
+ -re "$vhn = (4|8)\r\n$gdb_prompt" {
+ pass $name
}
- -re ".*$gdb_prompt $" { fail "print a.*pmf" }
- timeout { fail "(timeout) print a.*pmf" }
}
-# print dereferenced pointer to method, using ->*
+# Check "(int) pmi" explicitly for equality.
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print a_p->*pmf\n"
-gdb_expect {
- -re "Pointers to methods not supported with HP aCC\r\n$gdb_prompt $" {
- pass "print a_p->*pmf (known aCC limitation)"
+set name "print ((int) pmi) == ((char *) &a.j - (char *) &a)"
+gdb_test_multiple "print ((int) pmi) == ((char *) &a.j - (char *) & a)" $name {
+ -re "$vhn = true\r\n$gdb_prompt" {
+ pass $name
}
- -re ".*$gdb_prompt $" { fail "print a_p->*pmf" }
- timeout { fail "(timeout) print a_p->*pmf" }
}
-# set the pointer to data member
+# ==========================
+# pointer to member function
+# ==========================
+
+# ptype a pointer to a method
-setup_xfail "hppa*-*-*"
-send_gdb "set var pmf = &A::foo\n"
-gdb_expect {
- -re "Assignment to pointers to methods not implemented with HP aCC\r\n$gdb_prompt $" {
- pass "set var pmf (known aCC limitation)"
+set name "ptype pmf"
+gdb_test_multiple "ptype pmf" $name {
+ -re "type = int \\( ?A::\\*\\)\\(int\\)\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "type = int \\( ?A::\\*\\)\\(void\\)\r\n$gdb_prompt $" {
+ # hpacc A.03.45
+ kfail "gdb/NNNN" $name
+ }
+ -re "type = struct \{.*\}\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.2.2 -gdwarf-2
+ # gcc 3.2.2 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "set var pmf" }
- timeout { fail "(timeout) set var pmf" }
}
-# Try to dereference the pointer to method without any object
+# print a pointer to a method
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print *pmf\n"
-gdb_expect {
- -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {
- pass "attempt to print ptr to method without object"
+set name "print pmf"
+gdb_test_multiple "print pmf" $name {
+ -re "$vhn = &A::bar\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = .*not supported with HP aCC.*\r\n$gdb_prompt $" {
+ # hpacc A.03.45
+ kfail "gdb/NNNN" $name
+ }
+ -re "$vhn = \{.*\}\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.2.2 -gdwarf-2
+ # gcc 3.2.2 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "attempt to print ptr to method without object" }
- timeout { fail "(timeout) attempt to print ptr to method without object" }
}
-# Try to ptype a dereference of the pointer to method without any object
+# ptype a pointer to a pointer to a method
-send_gdb "ptype *pmi\n"
-gdb_expect {
- -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {
- pass "attempt to ptype ptr to member without object"
+set name "ptype pmf_p"
+gdb_test_multiple "ptype pmf_p" $name {
+ -re "type = int \\( ?A::\\*\\*\\)\\(int\\)\r\n$gdb_prompt $" {
+ pass $name
}
- -re ".*$gdb_prompt $" { fail "attempt to ptype ptr to member without object" }
- timeout { fail "(timeout) attempt to ptype ptr to member without object" }
-}
-
-# Check cast of pointer to member to integer
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print (int) pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 8\r\n$gdb_prompt $" {
- pass "casting pmi to int"
+ -re "type = int \\( ?A::\\*\\*\\)\\(void\\)\r\n$gdb_prompt $" {
+ # hpacc A.03.45
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "casting pmi to int" }
- timeout { fail "(timeout) casting pmi to int" }
-}
-
-# Check cast of pointer to method to integer
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print (int) pmf\n"
-gdb_expect {
- -re "Pointers to methods not supported with HP aCC\r\n$gdb_prompt $" {
- pass "casting pmf to int (known aCC limitation)"
+ -re "type = struct \{.*\} \\*\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.2.2 -gdwarf-2
+ # gcc 3.2.2 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "casting pmf to int" }
- timeout { fail "(timeout) casting pmf to int" }
}
-# Try to invoke a function through a pointer to data member
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print (a.*pmi)(3)\n"
-gdb_expect {
- -re "Not implemented: function invocation through pointer to method with HP aCC\r\n$gdb_prompt $" {
- pass "print (a.*pmi)(3) -- error message should be different"
- }
- -re ".*$gdb_prompt $" { fail "print (a.*pmi)(3)" }
- timeout { fail "(timeout) print (a.*pmi)(3)" }
-}
+# print a pointer to a pointer to a method
-# Try to invoke a function through a pointer to a method
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print (a.*pmf)(3)\n"
-gdb_expect {
- -re "Not implemented: function invocation through pointer to method with HP aCC\r\n$gdb_prompt $" {
- pass "print (a.*pmi)(3) -- known aCC limitation"
+set name "print pmf_p"
+gdb_test_multiple "print pmf_p" $name {
+ -re "$vhn = \\(int \\( ?A::\\*\\*\\)\\)\\(int\\)\\) $hex\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "$vhn = \\(PMF \\*\\) $hex\r\n$gdb_prompt $" {
+ pass "gdb/NNNN"
+ }
+ -re "$vhn = \\(int \\( ?A::\\*\\*\\)\\(void\\)\\) $hex\r\n$gdb_prompt $" {
+ # hpacc A.03.45
+ kfail "gdb/NNNN" $name
+ }
+ -re "$vhn = \\(struct \{.*\} \\*\\) $hex\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print (a.*pmf)(3)" }
- timeout { fail "(timeout) print (a.*pmf)(3)" }
}
+# print dereferenced pointer to method
-# Go past assignment of NULL to pmi
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "next\n"
-gdb_expect {
- -re "\r\n85\[ \t\]*k = \\(a.\\*pmf\\)\\(3\\);\r\n$gdb_prompt $" {
- pass "next past 83"
+set name "print a.*pmf"
+gdb_test_multiple "print a.*pmf" $name {
+ -re "$vhn = \\(int \\(\\*\\)\\(int\\)\\) $hex <A::bar\\(int\\)>\r\n$gdb_prompt$ " {
+ pass $name
+ }
+ -re "Pointers to methods not supported with HP aCC\r\n$gdb_prompt $" {
+ # hpacc A.03.45
+ kfail "gdb/NNNN" $name
+ }
+ -re "Value can't be converted to integer.\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.2.2 -gdwarf-2
+ # gcc 3.2.2 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "next past 83" }
- timeout { fail "(timeout) next past 83" }
}
-#send_gdb "print pmi\n"
-#gdb_expect {
-# -re "Attempted dereference of null pointer-to-member\r\n$gdb_prompt $" {
-# pass ""
-# }
-# -re ".*$gdb_prompt $" { fail "" }
-# timeout { fail "(timeout) " }
-#}
+# print dereferenced pointer to method, using ->*
-# Dereference the null pointer to member
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print a.*pmi\n"
-gdb_expect {
- -re "Attempted dereference of null pointer-to-member\r\n$gdb_prompt $" {
- pass "print a.*NULL"
+set name "print a_p->*pmf"
+gdb_test_multiple "print a_p->*pmf" $name {
+ -re "$vhn = \\(int \\(\\*\\)\\(int\\)\\) $hex <A::bar\\(int\\)>\r\n$gdb_prompt$ " {
+ pass $name
+ }
+ -re "Pointers to methods not supported with HP aCC\r\n$gdb_prompt $" {
+ # hpacc A.03.45
+ kfail "gdb/NNNN" $name
+ }
+ -re "Value can't be converted to integer.\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.2.2 -gdwarf-2
+ # gcc 3.2.2 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print a.*NULL" }
- timeout { fail "(timeout) print a.*NULL" }
}
+# set the pointer to data member
-# Go to another part of the program
-send_gdb "break 91\n"
-gdb_expect {
- -re "Breakpoint \[0-9\]*.*line 91\\.\r\n$gdb_prompt $" {
- pass "set break at 91"
+set name "set var pmf = &A::foo"
+gdb_test_multiple "set var pmf = &A::foo" $name {
+ -re "set var pmf = &A::foo\r\n$gdb_prompt $" {
+ # I have to match the echo'ed input explicitly here.
+ # If I leave it out, the pattern becomes too general
+ # and matches anything that ends in "$gdb_prompt $".
+ pass $name
}
- -re ".*$gdb_prompt $" { fail "set break at 91" }
- timeout { fail "(timeout) set break at 91" }
-}
-
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing\\.\r\n\r\nBreakpoint.*at.*member-ptr\\.cc:91\r\n91\[ \t]*k = \\(a.\\*pmf\\)\\(4\\);\r\n$gdb_prompt $" {
- pass "continue to 91"
+ -re "Invalid cast.\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.2.2 -gdwarf-2
+ # gcc 3.2.2 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
+ }
+ -re "Assignment to pointers to methods not implemented with HP aCC\r\n$gdb_prompt $" {
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "continue to 91" }
- timeout { fail "(timeout) continue to 91" }
}
+# dereference the pointer to data member without any object
+# this is not allowed: a pmf must be bound to an object to dereference
-# Now check again that pmi works even when not set to
-# something that's at the beginning of the object
-
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = \\(int \\( A::\\*\\)\\) &A::jj\r\n$gdb_prompt $" {
- pass "print pmi (2)"
+set name "print *pmf"
+gdb_test_multiple "print *pmf" $name {
+ -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "Structure has no component named operator\\*.\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gdwarf-2
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print pmi (2)" }
- timeout { fail "(timeout) print pmi (2)" }
}
+# dereference the pointer to data member without any object
+# this is not allowed: a pmf must be bound to an object to dereference
-# print dereferenced pointer to data member
-
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print a.*pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 1331\r\n$gdb_prompt $" {
- pass "print a.*pmi (2)"
+set name "ptype *pmf"
+gdb_test_multiple "ptype *pmf" $name {
+ -re "Attempt to dereference pointer to member without an object\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "Structure has no component named operator\\*.\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gdwarf-2
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print a.*pmi (2)" }
- timeout { fail "(timeout) print a.*pmi (2)" }
}
-# print dereferenced pointer to data member
-# this time, dereferenced through a pointer
+# Call a function through a pmf.
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "print a_p->*pmi\n"
-gdb_expect {
- -re "\\$\[0-9\]* = 1331\r\n$gdb_prompt $" {
- pass "print a->*pmi"
+set name "print (a.*pmf)(3)"
+gdb_test_multiple "print (a.*pmf)(3)" $name {
+ -re "$vhn = 50\r\n$gdb_prompt $" {
+ pass $name
+ }
+ -re "Not implemented: function invocation through pointer to method with HP aCC\r\n$gdb_prompt $" {
+ # hpacc A.03.45
+ kfail "gdb/NNNN" $name
+ }
+ -re "Value can't be converted to integer.\r\n$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # gcc 3.3.2 -gdwarf-2
+ # gcc 3.3.2 -gstabs+
+ # gcc HEAD 2004-01-10 -gdwarf-2
+ # gcc HEAD 2004-01-10 -gstabs+
+ kfail "gdb/NNNN" $name
}
- -re ".*$gdb_prompt $" { fail "print a->*pmi (2)" }
- timeout { fail "(timeout) print a->*pmi (2)" }
}
-
-
-# p a.*pmf - fail
-
-# p pmi
-
-# p a.*pmi
-
diff --git a/gdb/testsuite/gdb.cp/method.exp b/gdb/testsuite/gdb.cp/method.exp
index 729b930768b..0e8e485969f 100644
--- a/gdb/testsuite/gdb.cp/method.exp
+++ b/gdb/testsuite/gdb.cp/method.exp
@@ -1,4 +1,4 @@
-# Copyright 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -170,6 +170,9 @@ gdb_expect {
-re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*A & operator=\\(A const ?&\\);\r\n\[ \]*A\\(A const ?&\\);\r\n\[ \]*A\\((void|)\\);\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\}\r\n$gdb_prompt $" {
pass "ptype A"
}
+ -re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\) volatile;\r\n\[ \]*int qux\\(int, float\\) (const volatile|volatile const);\r\n\[ \]*A & operator=\\(A const ?&\\);\r\n\[ \]*A\\(A const ?&\\);\r\n\[ \]*A\\((void|)\\);\r\n\}\r\n$gdb_prompt $" {
+ pass "ptype A"
+ }
-re "type = class A \{\r\n\[ \]*public:\r\n\[ \]*int x;\r\n\[ \]*int y;\r\n\r\n\[ \]*int foo\\(int\\);\r\n\[ \]*int bar\\(int\\) const;\r\n\[ \]*int baz\\(int, char\\);\r\n\[ \]*int qux\\(int, float\\) const;\r\n\}\r\n$gdb_prompt $" {
pass "ptype A (HP aCC bug -- volatile not indicated)"
}
diff --git a/gdb/testsuite/gdb.cp/namespace.cc b/gdb/testsuite/gdb.cp/namespace.cc
index ad2d982e94f..a3edff2fc2e 100644
--- a/gdb/testsuite/gdb.cp/namespace.cc
+++ b/gdb/testsuite/gdb.cp/namespace.cc
@@ -144,6 +144,13 @@ namespace C
};
};
+ void ensureRefs () {
+ // NOTE (2004-04-23, carlton): This function is here only to make
+ // sure that GCC 3.4 outputs debug info for these classes.
+ static CClass *c = new CClass();
+ static CClass::NestedClass *n = new CClass::NestedClass();
+ }
+
namespace
{
int cX = 6;
diff --git a/gdb/testsuite/gdb.cp/namespace.exp b/gdb/testsuite/gdb.cp/namespace.exp
index ef7385e5c20..90642de4a08 100644
--- a/gdb/testsuite/gdb.cp/namespace.exp
+++ b/gdb/testsuite/gdb.cp/namespace.exp
@@ -1,4 +1,5 @@
-# Copyright 1997, 1998, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1997, 1998, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -44,7 +45,7 @@ set srcfile1 ${testfile}1.cc
set objfile1 ${objdir}/${subdir}/${testfile}1.o
set binfile ${objdir}/${subdir}/${testfile}
-if [get_compiler_info ${binfile}] {
+if [get_compiler_info ${binfile} c++] {
return -1;
}
@@ -119,6 +120,9 @@ gdb_expect {
-re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*.*int fum\\(int\\);\r\n\}\r\n$gdb_prompt $" {
pass "ptype ina"
}
+ -re "type = class (AAA::|)inA \{\r\n\[ \]*public:\r\n\[ \]*int xx;\r\n\[ \]*\r\n\[ \]*int fum\\(int\\);\r\n.*\}\r\n$gdb_prompt $" {
+ pass "ptype ina"
+ }
-re ".*$gdb_prompt $" { fail "ptype ina" }
timeout { fail "(timeout) ptype ina" }
}
diff --git a/gdb/testsuite/gdb.cp/namespace1.cc b/gdb/testsuite/gdb.cp/namespace1.cc
index 15b3429b6bd..53b3e57c81c 100644
--- a/gdb/testsuite/gdb.cp/namespace1.cc
+++ b/gdb/testsuite/gdb.cp/namespace1.cc
@@ -1,4 +1,4 @@
-/* Copyright 2003 Free Software Foundation, Inc.
+/* Copyright 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -24,6 +24,12 @@ namespace C
int z;
};
+ void ensureOtherRefs () {
+ // NOTE (2004-04-23, carlton): This function is here only to make
+ // sure that GCC 3.4 outputs debug info for this class.
+ static OtherFileClass *c = new OtherFileClass();
+ }
+
namespace {
int cXOtherFile = 29;
};
diff --git a/gdb/testsuite/gdb.cp/overload.exp b/gdb/testsuite/gdb.cp/overload.exp
index 7a2ecb43e59..afa2ee28d30 100644
--- a/gdb/testsuite/gdb.cp/overload.exp
+++ b/gdb/testsuite/gdb.cp/overload.exp
@@ -1,4 +1,5 @@
-# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004
+# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,20 +19,19 @@
# bug-gdb@prep.ai.mit.edu
# written by Elena Zannoni (ezannoni@cygnus.com)
+# Rewritten by Michael Chastain <mec.gnu@mindspring.com>
# This file is part of the gdb testsuite
-#
-# tests for overloaded member functions. Command Line calls
-#
+# Tests for overloaded member functions.
if $tracelevel then {
- strace $tracelevel
- }
+ strace $tracelevel
+}
+
+set ws "\[\r\n\t \]+"
+set nl "\[\r\n\]+"
-#
-# test running programs
-#
set prms_id 0
set bug_id 0
@@ -45,21 +45,12 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {deb
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
-if [get_compiler_info ${binfile} "c++"] {
- return -1
-}
-
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-# set it up at a breakpoint so we can play with the variable values
-#
-if ![runto_main] then {
- perror "couldn't run to breakpoint"
- continue
-}
+# Set it up at a breakpoint so we can play with the variable values.
if ![runto 'marker1'] then {
perror "couldn't run to marker1"
@@ -68,63 +59,108 @@ if ![runto 'marker1'] then {
gdb_test "up" ".*main.*" "up from marker1"
-send_gdb "print foo_instance1\n"
-gdb_expect {
- -re ".\[0-9\]* = \{ifoo = 111, ccpfoo = 0x0\}\r\n$gdb_prompt $" {
- pass "print foo_instance1"
- }
- -re ".*$gdb_prompt $" { fail "print foo_instance1" }
- timeout { fail "(timeout) print foo_instance1" }
- }
-
-
-setup_xfail "hppa*-*-*" CLLbs16901
-send_gdb "ptype foo_instance1\n"
-gdb_expect {
- -re "type = class foo \{.*public:.*int ifoo;.*const char \\*ccpfoo;.*foo\\(int\\);.*foo\\(int, (const char|char const) \\*\\);.*foo\\(foo &\\);.*~foo\\(void\\);.*void foofunc\\(int\\);.*void foofunc\\(int, signed char \\*\\);.*int overload1arg\\(void\\);.*int overload1arg\\(char\\);.*int overload1arg\\(signed char\\);.*int overload1arg\\(unsigned char\\);.*int overload1arg\\(short\\);.*int overload1arg\\(unsigned short\\);.*int overload1arg\\(int\\);.*int overload1arg\\(unsigned int\\);.*int overload1arg\\(long\\);.*int overload1arg\\(unsigned long\\);.*int overload1arg\\(float\\);.*int overload1arg\\(double\\);.*int overloadargs\\(int\\);.*int overloadargs\\(int, int\\);.*int overloadargs\\(int, int, int\\);.*int overloadargs\\(int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int, int, int, int\\);.*int overloadargs\\(int, int, int, int, int, int, int, int, int, int, int\\);\r\n\}\r\n$gdb_prompt $" {
- pass "ptype foo_instance1 (HP aCC -- known quirk with ~foo parameter list)"
- }
- -re "type = class foo .*int overloadargs\\(int, int, int, int, int, int, int, int, int, int, int\\);\r\n\}\r\n$gdb_prompt $" {
+# Print the monster class type.
+# See virtfunc.exp for a discussion of ptype.
+#
+# This is hairy to begin with. It is even more hairy because of the
+# XX_* alternate patterns to catch the KFAIL and XFAIL cases.
+
+set re_class "((struct|class) foo \{${ws}public:|struct foo \{)"
+set re_fields "int ifoo;${ws}const char ?\\* ?ccpfoo;"
+set XX_fields "int ifoo;${ws}char ?\\* ?ccpfoo;"
+set re_ctor "foo\\(int\\);${ws}foo\\(int, (char const|const char) ?\\*\\);${ws}foo\\(foo ?&\\);"
+set re_dtor "~foo\\((void|)\\);"
+set XX_dtor "~foo\\(int\\);"
+set re_methods "void foofunc\\(int\\);"
+set re_methods "${re_methods}${ws}void foofunc\\(int, signed char ?\\*\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\((void|)\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(char\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(signed char\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(unsigned char\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(short\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(unsigned short\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(int\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(unsigned int\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(long\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(unsigned long\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(float\\);"
+set re_methods "${re_methods}${ws}int overload1arg\\(double\\);"
+set re_methods "${re_methods}${ws}int overloadfnarg\\((void|)\\);"
+set re_methods "${re_methods}${ws}int overloadfnarg\\(int\\);"
+set re_methods "${re_methods}${ws}int overloadfnarg\\(int, int ?\\(\\*\\) ?\\(int\\)\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int, int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int, int, int\\);"
+set re_methods "${re_methods}${ws}int overloadargs\\(int, int, int, int, int, int, int, int, int, int, int\\);"
+set re_synth "foo & operator=\\(foo const ?&\\);"
+
+gdb_test "print foo_instance1" "\\$\[0-9\]+ = \{ifoo = 111, ccpfoo = 0x0\}"
+
+gdb_test_multiple "ptype foo_instance1" "ptype foo_instance1" {
+ -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$re_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gdwarf-2
+ # TODO: this is not a quirk!
+ pass "ptype foo_instance1 (HP aCC -- known quirk with ~foo parameter list)"
+ }
+ -re "type = $re_class${ws}$XX_fields${ws}$re_synth${ws}$re_dtor${ws}$re_ctor${ws}$re_methods$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+, no "const" on "const char *"
+ # TODO: gdb.base/constvar.exp has XFAILed this kind of problem for a
+ # long time, but an XFAIL really needs an external bug report.
+ # -- chastain 2003-12-31
+ # setup_xfail "*-*-*"
+ # fail "ptype foo_instance1"
+ # TODO: this should be a KFAIL.
+ pass "ptype foo_instance1 (shorter match)"
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_synth${ws}$re_dtor${ws}$re_ctor${ws}$re_methods$nl\}$nl$gdb_prompt $" {
+ # gcc 2.95.3 -gstabs+ if "const char *" ever gets fixed
+ pass "ptype foo_instance1"
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$XX_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gdwarf-2, "~foo(int)"
+ # TODO: kfail this
+ # kfail "gdb/1113" "ptype foo_instance1"
+ pass "ptype foo_instance1 (shorter match)"
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$re_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gdwarf-2, if the dtor bug gets fixed
+ # gcc HEAD -gdwarf-2 (abi-2)
+ # TODO: just pass this
+ pass "ptype foo_instance1 (shorter match)"
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_synth${ws}$re_ctor${ws}$re_dtor${ws}$re_methods$nl\}$nl$gdb_prompt $" {
+ # gcc 3.3.2 -gstabs+
+ # TODO: enough with the "shorter match"
+ pass "ptype foo_instance1 (shorter match)"
+ }
+ -re "type = $re_class${ws}$re_fields${ws}$re_ctor${ws}$re_dtor${ws}$re_methods${ws}$re_synth$nl\}$nl$gdb_prompt $" {
+ # gcc HEAD -gstabs+ (abi-2)
pass "ptype foo_instance1 (shorter match)"
}
- -re ".*$gdb_prompt $" { fail "ptype foo_instance1" }
- timeout { fail "(timeout) ptype foo_instance1" }
- }
-
-send_gdb "print foo_instance2\n"
-gdb_expect {
- -re ".\[0-9\]* = \{ifoo = 222, ccpfoo = $hex \"A\"\}\r\n$gdb_prompt $" {
- pass "print foo_instance2"
- }
- -re ".*$gdb_prompt $" { fail "print foo_instance2" }
- timeout { fail "(timeout) print foo_instance2" }
- }
-
-send_gdb "print foo_instance3\n"
-gdb_expect {
- -re ".\[0-9\]* = \{ifoo = 222, ccpfoo = $hex \"A\"\}\r\n$gdb_prompt $" {
- pass "print foo_instance3"
- }
- -re ".*$gdb_prompt $" { fail "print foo_instance3" }
- timeout { fail "(timeout) print foo_instance3" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1)\n"
-gdb_expect {
- -re ".\[0-9\]* = 1\r\n$gdb_prompt $" {
- pass "print call overloaded func 1 arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 1 arg" }
- timeout { fail "(timeout) print call overloaded func 1 arg" }
- }
+}
+
+# Print variables and method calls.
+# This is a walk in the park.
+
+gdb_test "print foo_instance2" "\\$\[0-9\]+ = \{ifoo = 222, ccpfoo = $hex \"A\"\}"
+gdb_test "print foo_instance3" "\\$\[0-9\]+ = \{ifoo = 222, ccpfoo = $hex \"A\"\}"
+gdb_test "print foo_instance1.overloadargs(1)" "\\$\[0-9\]+ = 1" \
+ "print call overloaded func 1 arg"
# If GDB fails to restore the selected frame properly after the
# inferior function call above (see GDB PR 1155 for an explanation of
# why this might happen), all the subsequent tests will fail. We
# should detect and report that failure, but let the marker call
# finish so that the rest of the tests can run undisturbed.
+
gdb_test_multiple "frame" "re-selected 'main' frame after inferior call" {
-re "#0 marker1.*$gdb_prompt $" {
setup_kfail "gdb/1155" s390-*-linux-gnu
@@ -137,254 +173,118 @@ gdb_test_multiple "frame" "re-selected 'main' frame after inferior call" {
}
}
+gdb_test "print foo_instance1.overloadargs(1, 2)" \
+ "\\$\[0-9\]+ = 2" \
+ "print call overloaded func 2 args"
-send_gdb "print foo_instance1.overloadargs(1, 2)\n"
-gdb_expect {
- -re ".\[0-9\]* = 2\r\n$gdb_prompt $" {
- pass "print call overloaded func 2 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 2 args" }
- timeout { fail "(timeout) print call overloaded func 2 args" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1, 2, 3)\n"
-gdb_expect {
- -re ".\[0-9\]* = 3\r\n$gdb_prompt $" {
- pass "print call overloaded func 3 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 3 args" }
- timeout { fail "(timeout) print call overloaded func 3 args" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4)\n"
-gdb_expect {
- -re ".\[0-9\]* = 4\r\n$gdb_prompt $" {
- pass "print call overloaded func 4 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 4 args" }
- timeout { fail "(timeout) print call overloaded func 4 args" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5)\n"
-gdb_expect {
- -re ".\[0-9\]* = 5\r\n$gdb_prompt $" {
- pass "print call overloaded func 5 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 5 args" }
- timeout { fail "(timeout) print call overloaded func 5 args" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6)\n"
-gdb_expect {
- -re ".\[0-9\]* = 6\r\n$gdb_prompt $" {
- pass "print call overloaded func 6 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 6 args" }
- timeout { fail "(timeout) print call overloaded func 6 args" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7)\n"
-gdb_expect {
- -re ".\[0-9\]* = 7\r\n$gdb_prompt $" {
- pass "print call overloaded func 7 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 7 args" }
- timeout { fail "(timeout) print call overloaded func 7 args" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8)\n"
-gdb_expect {
- -re ".\[0-9\]* = 8\r\n$gdb_prompt $" {
- pass "print call overloaded func 8 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 8 args" }
- timeout { fail "(timeout) print call overloaded func 8 args" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9)\n"
-gdb_expect {
- -re ".\[0-9\]* = 9\r\n$gdb_prompt $" {
- pass "print call overloaded func 9 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 9 args" }
- timeout { fail "(timeout) print call overloaded func 9 args" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)\n"
-gdb_expect {
- -re ".\[0-9\]* = 10\r\n$gdb_prompt $" {
- pass "print call overloaded func 10 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 10 args" }
- timeout { fail "(timeout) print call overloaded func 10 args" }
- }
-
-
-send_gdb "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)\n"
-gdb_expect {
- -re ".\[0-9\]* = 11\r\n$gdb_prompt $" {
- pass "print call overloaded func 11 args"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func 11 args" }
- timeout { fail "(timeout) print call overloaded func 11 args" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg()\n"
-gdb_expect {
- -re ".\[0-9\]* = 1\r\n$gdb_prompt $" {
- pass "print call overloaded func void arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func void arg" }
- timeout { fail "(timeout) print call overloaded func void arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((char)arg2)\n"
-gdb_expect {
- -re ".\[0-9\]* = 2\r\n$gdb_prompt $" {
- pass "print call overloaded func char arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func char arg" }
- timeout { fail "(timeout) print call overloaded func char arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((signed char)arg3)\n"
-gdb_expect {
- -re ".\[0-9\]* = 3\r\n$gdb_prompt $" {
- pass "print call overloaded func signed char arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func signed char arg" }
- timeout { fail "(timeout) print call overloaded func signed char arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((unsigned char)arg4)\n"
-gdb_expect {
- -re ".\[0-9\]* = 4\r\n$gdb_prompt $" {
- pass "print call overloaded func unsigned char arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func unsigned char arg" }
- timeout { fail "(timeout) print call overloaded func unsigned char arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((short)arg5)\n"
-gdb_expect {
- -re ".\[0-9\]* = 5\r\n$gdb_prompt $" {
- pass "print call overloaded func short arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func short arg" }
- timeout { fail "(timeout) print call overloaded func short arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((unsigned short)arg6)\n"
-gdb_expect {
- -re ".\[0-9\]* = 6\r\n$gdb_prompt $" {
- pass "print call overloaded func unsigned short arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func unsigned short arg" }
- timeout { fail "(timeout) print call overloaded func unsigned short arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((int)arg7)\n"
-gdb_expect {
- -re ".\[0-9\]* = 7\r\n$gdb_prompt $" {
- pass "print call overloaded func int arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func int arg" }
- timeout { fail "(timeout) print call overloaded func int arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((unsigned int)arg8)\n"
-gdb_expect {
- -re ".\[0-9\]* = 8\r\n$gdb_prompt $" {
- pass "print call overloaded func unsigned int arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func unsigned int arg" }
- timeout { fail "(timeout) print call overloaded func unsigned int arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((long)arg9)\n"
-gdb_expect {
- -re ".\[0-9\]* = 9\r\n$gdb_prompt $" {
- pass "print call overloaded func long arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func long arg" }
- timeout { fail "(timeout) print call overloaded func long arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((unsigned long)arg10)\n"
-gdb_expect {
- -re ".\[0-9\]* = 10\r\n$gdb_prompt $" {
- pass "print call overloaded func unsigned long arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func unsigned long arg" }
- timeout { fail "(timeout) print call overloaded func unsigned long arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((float)arg11)\n"
-gdb_expect {
- -re ".\[0-9\]* = 11\r\n$gdb_prompt $" {
- pass "print call overloaded func float arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func float arg" }
- timeout { fail "(timeout) print call overloaded func float arg" }
- }
-
-
-send_gdb "print foo_instance1.overload1arg((double)arg12)\n"
-gdb_expect {
- -re ".\[0-9\]* = 12\r\n$gdb_prompt $" {
- pass "print call overloaded func double arg"
- }
- -re ".*$gdb_prompt $" { fail "print call overloaded func double arg" }
- timeout { fail "(timeout) print call overloaded func double arg" }
- }
-
-# Now some tests to see if we can list overloaded functions properly:
+gdb_test "print foo_instance1.overloadargs(1, 2, 3)" \
+ "\\$\[0-9\]+ = 3" \
+ "print call overloaded func 3 args"
-gdb_test "set listsize 1" "" ""
-# send_gdb "set listsize 1\n"
-# gdb_expect -re ".*$gdb_prompt $"
+gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4)" \
+ "\\$\[0-9\]+ = 4" \
+ "print call overloaded func 4 args"
-#
-# Decide whether to use "()" or "(void)"
-#
+gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5)" \
+ "\\$\[0-9\]+ = 5" \
+ "print call overloaded func 5 args"
+
+gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6)" \
+ "\\$\[0-9\]+ = 6" \
+ "print call overloaded func 6 args"
+
+gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7)" \
+ "\\$\[0-9\]+ = 7" \
+ "print call overloaded func 7 args"
+
+gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8)" \
+ "\\$\[0-9\]+ = 8" \
+ "print call overloaded func 8 args"
+
+gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9)" \
+ "\\$\[0-9\]+ = 9" \
+ "print call overloaded func 9 args"
+
+gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)" \
+ "\\$\[0-9\]+ = 10" \
+ "print call overloaded func 10 args"
+
+gdb_test "print foo_instance1.overloadargs(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)" \
+ "\\$\[0-9\]+ = 11" \
+ "print call overloaded func 11 args"
+
+gdb_test "print foo_instance1.overload1arg()" \
+ "\\$\[0-9\]+ = 1" \
+ "print call overloaded func void arg"
+
+gdb_test "print foo_instance1.overload1arg((char)arg2)" \
+ "\\$\[0-9\]+ = 2" \
+ "print call overloaded func char arg"
+
+gdb_test "print foo_instance1.overload1arg((signed char)arg3)" \
+ "\\$\[0-9\]+ = 3" \
+ "print call overloaded func signed char arg"
+
+gdb_test "print foo_instance1.overload1arg((unsigned char)arg4)" \
+ "\\$\[0-9\]+ = 4" \
+ "print call overloaded func unsigned char arg"
+
+gdb_test "print foo_instance1.overload1arg((short)arg5)" \
+ "\\$\[0-9\]+ = 5" \
+ "print call overloaded func short arg"
+
+gdb_test "print foo_instance1.overload1arg((unsigned short)arg6)" \
+ "\\$\[0-9\]+ = 6" \
+ "print call overloaded func unsigned short arg"
+
+gdb_test "print foo_instance1.overload1arg((int)arg7)" \
+ "\\$\[0-9\]+ = 7" \
+ "print call overloaded func int arg"
-send_gdb "info func overloadfnarg\n"
-gdb_expect {
+gdb_test "print foo_instance1.overload1arg((unsigned int)arg8)" \
+ "\\$\[0-9\]+ = 8" \
+ "print call overloaded func unsigned int arg"
+
+gdb_test "print foo_instance1.overload1arg((long)arg9)" \
+ "\\$\[0-9\]+ = 9" \
+ "print call overloaded func long arg"
+
+gdb_test "print foo_instance1.overload1arg((unsigned long)arg10)" \
+ "\\$\[0-9\]+ = 10" \
+ "print call overloaded func unsigned long arg"
+
+gdb_test "print foo_instance1.overload1arg((float)arg11)" \
+ "\\$\[0-9\]+ = 11" \
+ "print call overloaded func float arg"
+
+gdb_test "print foo_instance1.overload1arg((double)arg12)" \
+ "\\$\[0-9\]+ = 12" \
+ "print call overloaded func double arg"
+
+# ---
+
+# List overloaded functions.
+
+# The void case is tricky because some compilers say "(void)"
+# and some compilers say "()".
+
+gdb_test "set listsize 1" "" ""
+gdb_test_multiple "info func overloadfnarg" "list overloaded function with no args" {
-re ".*overloadfnarg\\(void\\).*$gdb_prompt $" {
+ # gcc 2
gdb_test "list foo::overloadfnarg(void)"\
".*int foo::overloadfnarg.*\\(void\\).*" \
"list overloaded function with no args"
}
-re ".*overloadfnarg\\(\\).*$gdb_prompt $" {
+ # gcc 3
gdb_test "list foo::overloadfnarg()"\
".*int foo::overloadfnarg.*\\(void\\).*" \
"list overloaded function with no args"
}
- -re ".*$gdb_prompt $" {
- fail "list overloaded function with no args (no matching symbol)"
- }
}
-gdb_test "list foo::overloadfnarg(int)"\
+gdb_test "list foo::overloadfnarg(int)" \
"int foo::overloadfnarg.*\\(int arg\\).*" \
"list overloaded function with int arg"
@@ -396,8 +296,6 @@ gdb_test "list \"foo::overloadfnarg(int, int (*)(int))\"" \
"int foo::overloadfnarg.*\\(int arg, int \\(\\*foo\\) \\(int\\)\\).*" \
"list overloaded function with function ptr args - quotes around argument"
-gdb_test "print intToChar(1)" ".\[0-9\]* = 297"
-
# Now some tests to see how overloading and namespaces interact.
# FIXME: carlton/2003-01-24: It would be nice to throw using
@@ -415,3 +313,8 @@ if ![runto 'XXX::marker2'] then {
gdb_test "print overloadNamespace(1)" ".\[0-9\]* = 3" "print overloadNamespace(1) in XXX"
gdb_test "print overloadNamespace('a')" ".\[0-9\]* = 3" "print overloadNamespace('a') in XXX"
gdb_test "print overloadNamespace(dummyInstance)" ".\[0-9\]* = 2" "print overloadNamespace(dummyInstance) in XXX"
+
+# One last mysterious test.
+# I wonder what this is for?
+
+gdb_test "print intToChar(1)" ".\[0-9\]+ = 297"
diff --git a/gdb/testsuite/gdb.cp/ref-types.exp b/gdb/testsuite/gdb.cp/ref-types.exp
index dd06f027111..98dc2d68f60 100644
--- a/gdb/testsuite/gdb.cp/ref-types.exp
+++ b/gdb/testsuite/gdb.cp/ref-types.exp
@@ -1,5 +1,5 @@
# Tests for reference types with short type variables in GDB.
-# Copyright 1998, 1999, 2000 Free Software Foundation, Inc.
+# Copyright 1998, 1999, 2000, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -72,8 +72,6 @@ proc gdb_start_again {} {
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
- source ${binfile}.ci
-
#
# set it up at a breakpoint so we can play with the variable values
#
diff --git a/gdb/testsuite/gdb.cp/rtti.exp b/gdb/testsuite/gdb.cp/rtti.exp
index eaf1c17ae3a..f0e9a90c754 100644
--- a/gdb/testsuite/gdb.cp/rtti.exp
+++ b/gdb/testsuite/gdb.cp/rtti.exp
@@ -1,4 +1,4 @@
-# Copyright 2003 Free Software Foundation, Inc.
+# Copyright 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -46,8 +46,9 @@ set srcfile2 "${srcdir}/${subdir}/${testfile}2.cc"
set objfile2 "${objdir}/${subdir}/${testfile}2.o"
set binfile ${objdir}/${subdir}/${testfile}
-# gdb_get_line_number needs this to be called srcfile.
-set srcfile "${srcfile1}"
+# gdb_get_line_number needs this to be called srcfile. Except that it
+# gets confused if the directories are included. :-(
+set srcfile "${testfile}1.cc"
if { [gdb_compile "${srcfile1}" "${objfile1}" object {debug c++}] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
@@ -78,8 +79,8 @@ if ![runto_main] then {
# First, run to after we've constructed the object:
-gdb_breakpoint [gdb_get_line_number "constructs-done"]
-gdb_continue_to_breakpoint "end of constructors"
+gdb_breakpoint [gdb_get_line_number "main-constructs-done"]
+gdb_continue_to_breakpoint "end of constructors in main"
gdb_test_multiple "print *e1" "print *e1" {
-re "warning: RTTI symbol not found for class 'n1::D1'.*$gdb_prompt $" {
@@ -95,15 +96,14 @@ gdb_test_multiple "print *e1" "print *e1" {
}
}
-# NOTE: carlton/2003-05-16: This test fails on my branch with an
-# "<incomplete type>" message because, within rtt1.cc, GDB has no way
-# of knowing that the class is called 'n2::D2' instead of just 'D2'.
-# This is an artifical test case, though: if we were using these
-# classes in a more substantial way, G++ would emit more debug info.
-# As is, I don't think there's anything that GDB can do about this
-# case until G++ starts emitting DW_TAG_namespace info; when that part
-# of the branch gets merged in, then we'll probably want to convert
-# that fail branch to an xfail.
+# NOTE: carlton/2004-01-14: This test with an "<incomplete type>"
+# message because, within rtt1.cc, GDB has no way of knowing that the
+# class is called 'n2::D2' instead of just 'D2'. This is an artifical
+# test case, though: if we were using these classes in a more
+# substantial way, G++ would emit more debug info. As is, I don't
+# think there's anything that GDB can do about this case until G++
+# starts emitting DW_TAG_namespace info; this should arrive with GCC
+# 3.4.
gdb_test_multiple "print *e2" "print *e2" {
-re "warning: RTTI symbol not found for class 'n2::D2'.*$gdb_prompt $" {
@@ -115,12 +115,20 @@ gdb_test_multiple "print *e2" "print *e2" {
fail "print *e2"
}
-re "\\$\[0-9\]* = <incomplete type>\r\n$gdb_prompt $" {
- kfail "gdb/TBA" "print *e2"
+ kfail "gdb/1511" "print *e2"
}
-re "\\$\[0-9\]* = {<n2::Base2> = .*}\r\n$gdb_prompt $" {
pass "print *e2"
}
}
+# Now we test the hack that's been implemented to get around some
+# instances of PR gdb/1511.
+
+gdb_breakpoint [gdb_get_line_number "func-constructs-done"]
+gdb_continue_to_breakpoint "end of constructors in func"
+
+gdb_test "print *obj" "\\$\[0-9\]* = {<n2::Base2> = .*}"
+
gdb_exit
return 0
diff --git a/gdb/testsuite/gdb.cp/rtti1.cc b/gdb/testsuite/gdb.cp/rtti1.cc
index 6e9d862bb13..de8e12fc8e4 100644
--- a/gdb/testsuite/gdb.cp/rtti1.cc
+++ b/gdb/testsuite/gdb.cp/rtti1.cc
@@ -1,6 +1,6 @@
/* Code to go along with tests in rtti.exp.
- Copyright 2003 Free Software Foundation, Inc.
+ Copyright 2003, 2004 Free Software Foundation, Inc.
Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
Inc.
@@ -55,6 +55,26 @@ namespace n1 {
} // n1
+// NOTE: carlton/2004-01-23: This call exists only to convince GCC to
+// keep around a reference to 'obj' in n2::func - GCC 3.4 had been
+// optimizing it away.
+void refer_to (n2::C2 *obj)
+{
+ // Do nothing.
+}
+
+namespace n2
+{
+ void func ()
+ {
+ C2 *obj = create2 ();
+
+ refer_to (obj); // func-constructs-done
+
+ return;
+ }
+}
+
int main()
{
using namespace n1;
@@ -63,5 +83,7 @@ int main()
C1 *e1 = create1();
C2 *e2 = create2();
- return 0; // constructs-done
+ n2::func(); // main-constructs-done
+
+ return 0;
}
diff --git a/gdb/testsuite/gdb.cp/templates.exp b/gdb/testsuite/gdb.cp/templates.exp
index 55fedd2bc40..0f7a573e892 100644
--- a/gdb/testsuite/gdb.cp/templates.exp
+++ b/gdb/testsuite/gdb.cp/templates.exp
@@ -1,4 +1,4 @@
-# Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2003
+# Copyright 1992, 1994, 1995, 1996, 1997, 1999, 2000, 2002, 2003, 2004
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
@@ -37,7 +37,6 @@ set binfile ${objdir}/${subdir}/${testfile}
if [get_compiler_info ${binfile} "c++"] {
return -1
}
-source ${binfile}.ci
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
@@ -56,6 +55,9 @@ proc test_ptype_of_templates {} {
-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" {
pass "ptype T5<int>"
}
+ -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}\}\r\n$gdb_prompt $" {
+ pass "ptype T5<int>"
+ }
-re "type = class T5<int> \\{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}${ws}T5 \\(int\\);${ws}T5 \\(const class T5<int> &\\);${ws}void ~T5 \\(int\\);${ws}static void \\* new \\(unsigned int\\);${ws}static void delete \\(void ?\\*\\);${ws}int value \\((void|)\\);${ws}\\}${ws}$gdb_prompt $" { pass "ptype T5<int> -- new with unsigned int" }
-re "type = class T5<int> \\{.*public:.*static int X;.*int x;.*int val;.*T5 \\(int\\);.*T5 \\(const class T5<int> &\\);.*void ~T5 \\(int\\);.*static void \\* new \\(unsigned long\\);.*static void delete \\(void ?\\*\\);.*int value \\((void|)\\);.*\\}\r\n$gdb_prompt $" { pass "ptype T5<int> -- new with unsigned long" }
-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;((${ws}T5<int> & operator=\\(T5<int> const ?&\\);)|(${ws}T5\\(int\\);)|(${ws}T5\\((T5<int> const|const T5<int>) ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_prompt $" {
@@ -84,6 +86,9 @@ proc test_ptype_of_templates {} {
-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}\}\r\n$gdb_prompt $" {
pass "ptype t5i"
}
+ -re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;${ws}T5\\(int\\);${ws}T5\\((T5<int> const|const T5<int>) ?&\\);${ws}~T5\\((void|)\\);${ws}static void \\* operator new\\(unsigned( int| long)?\\);${ws}static void operator delete\\(void ?\\*\\);${ws}int value\\((void|)\\);${ws}T5<int> & operator=\\(T5<int> const ?&\\);${ws}\}\r\n$gdb_prompt $" {
+ pass "ptype t5i"
+ }
-re "type = class T5<int> \{${ws}public:${ws}static int X;${ws}int x;${ws}int val;((${ws}T5<int> & operator=\\(T5<int> const ?&\\);)|(${ws}T5\\(int\\);)|(${ws}T5\\(T5<int> const ?&\\);)|(${ws}~T5\\((void|)\\);)|(${ws}static void \\* operator new\\(unsigned( int| long)?\\);)|(${ws}static void operator delete\\(void ?\\*\\);)|(${ws}int value\\((void|)\\);))*${ws}\}\r\n$gdb_prompt $" {
pass "ptype t5i (obsolescent gcc or gdb)"
}
@@ -197,7 +202,6 @@ proc do_tests {} {
global srcdir
global binfile
global gdb_prompt
- global supports_template_debugging
set prms_id 0
set bug_id 0
@@ -209,11 +213,6 @@ proc do_tests {} {
gdb_reinitialize_dir $srcdir/$subdir
gdb_load $binfile
- if { !$supports_template_debugging } {
- warning "compiler lacks debugging info for templates; tests suppressed." 0
- return
- }
-
runto_main
test_ptype_of_templates
@@ -294,6 +293,7 @@ gdb_expect {
send_gdb "ptype fint\n"
gdb_expect {
-re "type = (class |)Foo<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" }
}
@@ -303,6 +303,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" }
}
@@ -312,7 +313,10 @@ 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\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" }
- -re "type = class Foo<char volatile\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" }
+ -re "type = (class |)Foo<volatile char ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);.*\r\n\\}\r\n$gdb_prompt $" { pass "ptype fvpchar" }
+ -re "type = (class |)Foo<char volatile ?\\*> \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*.*char.*\\*t;\r\n\r\n\[ \t\]*.*char \\* foo\\(int,.*char.*\\*\\);\r\n\\}\r\n$gdb_prompt $" {
+ kfail "gdb/1512" "ptype fvpchar"
+ }
-re "$gdb_prompt $" { fail "ptype fvpchar" }
timeout { fail "(timeout) ptype fvpchar" }
}
@@ -327,8 +331,10 @@ gdb_expect {
-re "\\$\[0-9\]* = \\{.*char \\*\\((class |)Foo<volatile char ?\\*> \\*(| const), int, .*char \\*\\)\\} $hex <Foo<.*char.*\\*>::foo\\(int, .*char.*\\*\\)>\r\n$gdb_prompt $" { pass "print Foo<volatile char *>::foo" }
-re "No symbol \"Foo<volatile char \\*>\" in current context.\r\n$gdb_prompt $"
{
- # This used to be a kfail gdb/33, but it shouldn't occur any more now.
- fail "print Foo<volatile char *>::foo"
+ # This used to be a kfail gdb/33. That problem has been
+ # fixed, but now gdb/931 and gdb/1512 are rearing their ugly
+ # heads.
+ kfail "gdb/931" "print Foo<volatile char *>::foo"
}
-re "$gdb_prompt $" { fail "print Foo<volatile char *>::foo" }
timeout { fail "(timeout) print Foo<volatile char *>::foo" }
@@ -339,8 +345,10 @@ gdb_expect {
-re "\\$\[0-9\]* = \\{.*char \\*\\((class |)Foo<volatile char ?\\*> \\*(| const), int, .*char \\*\\)\\} $hex <Foo<.*char.*\\*>::foo\\(int, .*char.*\\*\\)>\r\n$gdb_prompt $" { pass "print Foo<volatile char*>::foo" }
-re "No symbol \"Foo<volatile char\\*>\" in current context.\r\n$gdb_prompt $"
{
- # This used to be a kfail gdb/33, but it shouldn't occur any more now.
- fail "print Foo<volatile char *>::foo"
+ # This used to be a kfail gdb/33. That problem has been
+ # fixed, but now gdb/931 and gdb/1512 are rearing their ugly
+ # heads.
+ kfail "gdb/931" "print Foo<volatile char*>::foo"
}
-re "$gdb_prompt $" { fail "print Foo<volatile char*>::foo" }
timeout { fail "(timeout) print Foo<volatile char*>::foo" }
@@ -369,6 +377,7 @@ gdb_expect {
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" }
}
@@ -378,6 +387,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" }
}
@@ -387,11 +397,14 @@ gdb_expect {
# Same as Foo, for g++
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" }
- -re "type = <(class |)T, (class |)sz> (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\n$gdb_prompt $" { xfail "ptype Baz" }
- -re "type = class Baz<int,'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 $"
+ -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" }
+ -re "type = <(class |)T, ?(class |)sz> (class |)Baz \\{\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*T t;\r\n\\}\r\n$gdb_prompt $" { xfail "ptype Baz" }
+ -re "type = class Baz<int, ?'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 $"
{ # GCC 3.1, DWARF-2 output.
kfail "gdb/57" "ptype Baz" }
+ -re "type = class Baz<int, ?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 $"
+ { # GCC 3.x, DWARF-2 output, running into gdb/57 and gdb/1512.
+ kfail "gdb/57" "ptype Baz" }
-re "No symbol \"Baz\" in current context.\r\n$gdb_prompt $"
{ # GCC 2.95.3, stabs+ output.
pass "ptype Baz" }
@@ -405,6 +418,7 @@ gdb_expect {
send_gdb "ptype bazint\n"
gdb_expect {
-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 "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" }
}
@@ -414,6 +428,7 @@ gdb_expect {
send_gdb "ptype bazint2\n"
gdb_expect {
-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 "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" }
}
@@ -422,11 +437,14 @@ gdb_expect {
# Same as Foo for g++
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" }
- -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\\}.*$gdb_prompt $" { pass "ptype Qux" }
- -re "type = class Qux<char,&string> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char qux\\(int, char\\);\r\n}\r\n$gdb_prompt $"
+ -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" }
+ -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\\}.*$gdb_prompt $" { pass "ptype Qux" }
+ -re "type = class Qux<char, ?&string> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char qux\\(int, char\\);\r\n}\r\n$gdb_prompt $"
{ # GCC 3.1, DWARF-2 output.
kfail "gdb/57" "ptype Qux" }
+ -re "type = class Qux<char, ?&\\(string\\)> {\r\n\[ \t\]*public:\r\n\[ \t\]*int x;\r\n\[ \t\]*char t;\r\n\r\n\[ \t\]*char qux\\(int, char\\);\r\n}\r\n$gdb_prompt $"
+ { # GCC 3.x, DWARF-2 output; gdb/57 + gdb/1512.
+ kfail "gdb/57" "ptype Qux" }
-re "No symbol \"Qux\" in current context.\r\n$gdb_prompt $"
{ # GCC 2.95.3, stabs+ output.
pass "ptype Qux" }
@@ -438,7 +456,11 @@ 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 "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 $" {
+ kfail "gdb/1512" "ptype quxint"
+ }
-re "$gdb_prompt $" { fail "ptype quxint" }
timeout { fail "(timeout) ptype quxint" }
}
@@ -476,6 +498,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" }
}
@@ -485,6 +508,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>" }
}
@@ -494,6 +518,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> >" }
}
diff --git a/gdb/testsuite/gdb.cp/virtfunc.exp b/gdb/testsuite/gdb.cp/virtfunc.exp
index ff36c27cc36..958900a4ef1 100644
--- a/gdb/testsuite/gdb.cp/virtfunc.exp
+++ b/gdb/testsuite/gdb.cp/virtfunc.exp
@@ -1,4 +1,4 @@
-# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003
+# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
@@ -19,12 +19,14 @@
# bug-gdb@prep.ai.mit.edu
# This file was written by Fred Fish. (fnf@cygnus.com)
+# And rewritten by Michael Chastain <mec.gnu@mindspring.com>.
-set ws "\[\r\n\t \]+"
-set nl "\[\r\n\]+"
+set wsopt "\[\r\n\t \]*"
+set ws "\[\r\n\t \]+"
+set nl "\[\r\n\]+"
if $tracelevel then {
- strace $tracelevel
+ strace $tracelevel
}
if { [skip_cplus_tests] } { continue }
@@ -33,706 +35,454 @@ set testfile "virtfunc"
set srcfile ${testfile}.cc
set binfile ${objdir}/${subdir}/${testfile}
-if [get_compiler_info ${binfile} "c++"] {
- return -1
-}
-
-source ${binfile}.ci
-
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {c++ debug}] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
-proc gdb_virtfunc_init {} {
- global srcdir subdir binfile
- global gdb_prompt
-
- gdb_reinitialize_dir $srcdir/$subdir
- gdb_load $binfile
-
- send_gdb "set language c++\n"
- gdb_expect -re "$gdb_prompt $"
- send_gdb "set width 0\n"
- gdb_expect -re "$gdb_prompt $"
-}
-
-proc gdb_virtfunc_restart {} {
- gdb_exit;
- gdb_start;
- gdb_virtfunc_init;
- runto 'test_calls';
-}
-
+# Test ptype of a class.
+#
+# Different C++ compilers produce different output. I build up regular
+# expressions piece by piece to accommodate all the compilers that I
+# have seen: gcc 2.95.3, gcc 3.3.2 (ABI 1), gcc 3.4 prerelease (ABI 2);
+# and all the debug formats I have seen: dwarf-2 and stabs+.
+#
+# A complicated class declaration looks like this:
+#
+# class A : public virtual V { // re_class
+# private:
+# V * _vb$V; // re_vbptr
+# int a; // re_fields
+#
+# public: // re_access_methods
+# A & operator=(A const &); // re_synth_gcc_2
+# A(int, A const &); // ...
+# A(int); // ...
+# virtual int f(void); // re_methods
+# }
+#
+# RE_CLASS matches the class declaration. C++ allows multiple ways of
+# expressing this.
+#
+# struct ... { private: ... };
+# class ... { private: ... };
+# class ... { ... };
#
-# Test printing of the types of various classes.
+# RE_VBPTR matches the virtual base declarations. gcc 2.95.3 sometimes
+# emits these, but gcc 3.X.Y never emits these. The name depends on the
+# debug format.
#
+# RE_FIELDS matches the data fields of the class.
+# RE_METHODS matches the methods explicitly declared for the class.
+#
+# RE_SYNTH_GCC_2 and RE_SYNTH_GCC_3 match the optional synthetic methods
+# of the class. gcc -gstabs+ emits these methods, and gcc -gdwarf-2
+# does not.
+#
+# RE_ACCESS_METHODS is an access specifier after RE_FIELDS and before
+# the methods (explicit methods and/or synthetic methods).
+# There is also an RE_ACCESS_FIELDS.
+#
+# When I get HP-UX aCC, I hope that I can just add RE_SYNTH_ACC_NNN.
+#
+# Yet another twist: with gcc v2, ctor and dtor methods have a hidden
+# argument in front, the "in-charge" flag. With gcc v3, there is no
+# hidden argument; instead, there are multiple object functions for
+# each ctor and dtor.
+#
+# -- chastain 2004-01-01
-proc test_ptype_of_classes {} {
+proc test_one_ptype { command testname re_class re_vbptr re_access_fields re_fields re_access_methods re_methods re_synth_gcc_2 re_synth_gcc_3 re_star } {
global gdb_prompt
+ global wsopt
global ws
global nl
- # This used to be a fail if it printed "struct" not "class". But
- # since this struct doesn't use any special C++ features, it is
- # considered right for GDB to print it as "struct".
- send_gdb "ptype VA\n"
- gdb_expect {
- -re "type = (struct|class) VA \{(${ws}public:|)${ws}int va;${ws}VA & operator=\\(VA const ?&\\);${ws}VA\\((VA const|const VA) ?&\\);${ws}VA\\((void|)\\);${ws}\}.*$gdb_prompt $" {
- pass "ptype VA"
- }
- -re "type = (struct|class) VA \{(${ws}public:|)${ws}int va;((${ws}VA & operator=\\(VA const ?&\\);)|(${ws}VA\\(VA const ?&\\);)|(${ws}VA\\((void|)\\);))*${ws}\}.*$gdb_prompt $" {
- pass "ptype VA (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype VA"
- }
- timeout {
- fail "ptype VA (timeout)"
- }
- }
-
- send_gdb "ptype VB\n"
- gdb_expect {
- -re "type = class VB \{${ws}public:${ws}int vb;${ws}VB & operator=\\(VB const ?&\\);${ws}VB\\((VB const|const VB) ?&\\);${ws}VB\\((void|)\\);${ws}int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);${ws}\}.*$gdb_prompt $" {
- pass "ptype VB"
- }
- -re "type = class VB \{${ws}public:${ws}int vb;${ws}int fvb \\((void|)\\);${ws}virtual int vvb \\((void|)\\);${ws}\}.*$gdb_prompt $" {
- pass "ptype VB (aCC)"
- }
- -re "type = class VB \{${ws}public:${ws}int vb;((${ws}VB & operator=\\(VB const ?&\\);)|(${ws}VB\\(VB const ?&\\);)|(${ws}VB\\((void|)\\);)|(${ws}int fvb\\((void|)\\);)|(${ws}virtual int vvb\\((void|)\\);))*${ws}\}.*$gdb_prompt $" {
- pass "ptype VB (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype VB"
- }
- timeout {
- fail "ptype VB (timeout)"
- }
- }
-
- send_gdb "ptype V\n"
- gdb_expect {
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype V"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype V (aCC)"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype V (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype V"
- }
- timeout {
- fail "ptype V (timeout)"
- }
- }
-
- # The format of a g++ virtual base pointer.
- set vbptr "(_vb\[$.\]|__vb_)\[0-9\]?"
-
- send_gdb "ptype A\n"
- gdb_expect {
- -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype A"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\((A const|const A) ?&\\);${ws}A\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype A"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype A (aCC)"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\(int, A const ?&\\);)|(${ws}A\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype A (obsolescent gcc or gdb)"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}FOO;${ws}int a;${ws}public:${ws}virtual int f.void.;${ws}\}$nl$gdb_prompt $" {
- # This happens because the type is defined only after it is
- # too late.
- fail "ptype A (known failure with gcc cygnus-2.4.5-930417)"
- # Many of the rest of these tests have the same problem.
- return 0
- }
- -re ".*$gdb_prompt $" {
- fail "ptype A"
- }
- timeout {
- fail "ptype A (timeout)"
- }
- }
-
- send_gdb "ptype B\n"
- gdb_expect {
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype B"
- }
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\((B const|const B) ?&\\);${ws}B\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype B"
- }
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}virtual int f \\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype B (aCC)"
- }
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:((${ws}B & operator=\\(B const ?&\\);)|(${ws}B\\(int, B const ?&\\);)|(${ws}B\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype B (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype B"
- }
- timeout {
- fail "ptype B (timeout)"
- }
- }
-
- send_gdb "ptype C\n"
- gdb_expect {
- -re "type = class C : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int c;${ws}C & operator=\\(C const ?&\\);${ws}C\\(int, C const ?&\\);${ws}C\\(int\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype C"
- }
- -re "type = class C : public virtual V \{${ws}public:${ws}int c;${ws}C & operator=\\(C const ?&\\);${ws}C\\((C const|const C) ?&\\);${ws}C\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype C"
- }
- -re "type = class C : public virtual V \{${ws}public:${ws}int c;${ws}\}$nl$gdb_prompt $" {
- pass "ptype C (aCC)"
- }
- -re "type = class C : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int c;((${ws}C & operator=\\(C const ?&\\);)|(${ws}C\\(int, C const ?&\\);)|(${ws}C\\(int\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype C (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype C"
- }
- timeout {
- fail "ptype C (timeout)"
- }
- }
-
- send_gdb "ptype AD\n"
- gdb_expect {
- -re "type = class AD \{${ws}public:${ws}AD & operator=\\(AD const ?&\\);${ws}AD\\((AD const|const AD) ?&\\);${ws}AD\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype AD"
- }
- -re "type = class AD \{${ws}public:${ws}virtual int vg \\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype AD (aCC)"
- }
- -re "type = class AD \{${ws}public:((${ws}AD & operator=\\(AD const ?&\\);)|(${ws}AD\\(AD const ?&\\);)|(${ws}AD\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype AD (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype AD"
- }
- timeout {
- fail "ptype AD (timeout)"
- }
- }
-
- send_gdb "ptype D\n"
- gdb_expect {
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype D"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype D"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype D (aCC)"
- }
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype D (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype D"
- }
- timeout {
- fail "ptype D (timeout)"
- }
- }
-
- send_gdb "ptype E\n"
- gdb_expect {
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype E"
- }
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\((E const|const E) ?&\\);${ws}E\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype E"
- }
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}virtual int f \\((void|)\\);${ws}virtual int vg \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype E (aCC)"
- }
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;((${ws}E & operator=\\(E const ?&\\);)|(${ws}E\\(int, E const ?&\\);)|(${ws}E\\(int\\);)|(${ws}virtual int f\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype E (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype E"
- }
- timeout {
- fail "ptype E (timeout)"
- }
- }
-
- send_gdb "ptype dd\n"
- gdb_expect {
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype dd"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype dd"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype dd (aCC)"
- }
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype dd (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype dd"
- }
- timeout {
- fail "ptype dd (timeout)"
- }
- }
-
- send_gdb "ptype ppd\n"
- gdb_expect {
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype ppd"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype ppd"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype ppd (aCC)"
- }
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype ppd (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype ppd"
- }
- timeout {
- fail "ptype ppd (timeout)"
- }
- }
-
- send_gdb "ptype pAd\n"
- gdb_expect {
- -re "type = class AD \{${ws}public:${ws}AD & operator=\\(AD const ?&\\);${ws}AD\\((AD const|const AD) ?&\\);${ws}AD\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAd"
- }
- -re "type = class AD \{${ws}public:${ws}virtual int vg \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAd (aCC)"
- }
- -re "type = class AD \{${ws}public:((${ws}AD & operator=\\(AD const ?&\\);)|(${ws}AD\\(AD const ?&\\);)|(${ws}AD\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAd (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pAd"
- }
- timeout {
- fail "ptype pAd (timeout)"
- }
- }
-
- send_gdb "ptype a\n"
- gdb_expect {
- -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype a"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\((A const|const A) ?&\\);${ws}A\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype a"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype a (aCC)"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\(int, A const ?&\\);)|(${ws}A\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype a (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype a"
- }
- timeout {
- fail "ptype a (timeout)"
- }
- }
-
- send_gdb "ptype b\n"
- gdb_expect {
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype b"
- }
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\((B const|const B) ?&\\);${ws}B\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype b"
- }
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}virtual int f \\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype b (aCC)"
- }
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:((${ws}B & operator=\\(B const ?&\\);)|(${ws}B\\(int, B const ?&\\);)|(${ws}B\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype b (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype b"
- }
- timeout {
- fail "ptype b (timeout)"
- }
- }
-
- send_gdb "ptype c\n"
- gdb_expect {
- -re "type = class C : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int c;${ws}C & operator=\\(C const ?&\\);${ws}C\\(int, C const ?&\\);${ws}C\\(int\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype c"
- }
- -re "type = class C : public virtual V \{${ws}public:${ws}int c;${ws}C & operator=\\(C const ?&\\);${ws}C\\((C const|const C) ?&\\);${ws}C\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype c"
- }
- -re "type = class C : public virtual V \{${ws}public:${ws}int c;${ws}\}$nl$gdb_prompt $" {
- pass "ptype c (aCC)"
- }
- -re "type = class C : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int c;((${ws}C & operator=\\(C const ?&\\);)|(${ws}C\\(int, C const ?&\\);)|(${ws}C\\(int\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype c (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype c"
- }
- timeout {
- fail "ptype c (timeout)"
- }
- }
-
- send_gdb "ptype d\n"
- gdb_expect {
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype d"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype d"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype d (aCC)"
- }
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype d (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype d"
- }
- timeout {
- fail "ptype d (timeout)"
- }
- }
-
- send_gdb "ptype e\n"
- gdb_expect {
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype e"
- }
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\((E const|const E) ?&\\);${ws}E\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype e"
- }
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}virtual int f \\((void|)\\);${ws}virtual int vg \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype e (aCC)"
- }
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;((${ws}E & operator=\\(E const ?&\\);)|(${ws}E\\(int, E const ?&\\);)|(${ws}E\\(int\\);)|(${ws}virtual int f\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype e (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype e"
- }
- timeout {
- fail "ptype e (timeout)"
- }
- }
-
- send_gdb "ptype v\n"
- gdb_expect {
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype v"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype v (aCC)"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype v (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype v"
- }
- timeout {
- fail "ptype v (timeout)"
- }
- }
-
- send_gdb "ptype vb\n"
- gdb_expect {
- -re "type = class VB \{${ws}public:${ws}int vb;${ws}VB & operator=\\(VB const ?&\\);${ws}VB\\((VB const|const VB) ?&\\);${ws}VB\\((void|)\\);${ws}int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype vb"
- }
- -re "type = class VB \{${ws}public:${ws}int vb;${ws}int fvb \\((void|)\\);${ws}virtual int vvb \\((void|)\\);${ws}\}$nl$gdb_prompt $" {
- pass "ptype vb (aCC)"
- }
- -re "type = class VB \{${ws}public:${ws}int vb;((${ws}VB & operator=\\(VB const ?&\\);)|(${ws}VB\\(VB const ?&\\);)|(${ws}VB\\((void|)\\);)|(${ws}int fvb\\((void|)\\);)|(${ws}virtual int vvb\\((void|)\\);))*${ws}\}$nl$gdb_prompt $" {
- pass "ptype vb (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype vb"
- }
- timeout {
- fail "ptype vb (timeout)"
- }
- }
-
- send_gdb "ptype pAa\n"
- gdb_expect {
- -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAa"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\((A const|const A) ?&\\);${ws}A\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAa"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAa (aCC)"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\(int, A const ?&\\);)|(${ws}A\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAa (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pAa"
- }
- timeout {
- fail "ptype pAa (timeout)"
- }
- }
-
- send_gdb "ptype pAe\n"
- gdb_expect {
- -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAe"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}A & operator=\\(A const ?&\\);${ws}A\\((A const|const A) ?&\\);${ws}A\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAe"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}int a;${ws}public:${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAe (aCC)"
- }
- -re "type = class A : public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}int a;${ws}public:((${ws}A & operator=\\(A const ?&\\);)|(${ws}A\\(int, A const ?&\\);)|(${ws}A\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pAe (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pAe"
- }
- timeout {
- fail "ptype pAe (timeout)"
- }
- }
-
- send_gdb "ptype pBe\n"
- gdb_expect {
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pBe"
- }
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}B & operator=\\(B const ?&\\);${ws}B\\((B const|const B) ?&\\);${ws}B\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pBe"
- }
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:${ws}virtual int f \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pBe (aCC)"
- }
- -re "type = class B : public A \{${ws}private:${ws}int b;${ws}public:((${ws}B & operator=\\(B const ?&\\);)|(${ws}B\\(int, B const ?&\\);)|(${ws}B\\(int\\);)|(${ws}virtual int f\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pBe (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pBe"
- }
- timeout {
- fail "ptype pBe (timeout)"
- }
- }
-
- send_gdb "ptype pDd\n"
- gdb_expect {
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pDd"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pDd"
- }
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pDd (aCC)"
- }
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pDd (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pDd"
- }
- timeout {
- fail "ptype pDd (timeout)"
+ gdb_test_multiple "$command" "$testname" {
+ -re "type = $re_class${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" {
+ # gcc 2.95.3, dwarf-2, no vbptr
+ # gcc 3.X, abi 1, dwarf-2
+ # gcc 3.X, abi 2, dwarf-2
+ pass "$testname"
}
- }
-
- send_gdb "ptype pDe\n"
- gdb_expect {
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pDe"
+ -re "type = $re_class${wsopt}$re_vbptr${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" {
+ # gcc 2.95.3, dwarf-2, vbptr
+ # TODO: drow says the vbptr is a bug
+ pass "$testname"
}
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}D & operator=\\(D const ?&\\);${ws}D\\((D const|const D) ?&\\);${ws}D\\((void|)\\);${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pDe"
+ -re "type = $re_class${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_synth_gcc_2${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" {
+ # gcc 2.95.3, stabs+, no vbptr
+ pass "$testname"
}
- -re "type = class D : public AD, public virtual V \{${ws}public:${ws}int d;${ws}static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pDe (aCC)"
- }
- -re "type = class D : public AD, public virtual V \{${ws}private:${ws}V \\*${vbptr}V;${ws}public:${ws}int d;((${ws}D & operator=\\(D const ?&\\);)|(${ws}D\\(int, D const ?&\\);)|(${ws}D\\(int\\);)|(${ws}static void s\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vd\\((void|)\\);)|(${ws}int fd\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pDe (obsolescent gcc or gdb)"
+ -re "type = $re_class${wsopt}$re_vbptr${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_synth_gcc_2${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" {
+ # gcc 2.95.3, stabs+, vbptr
+ # TODO: drow says the vbptr is a bug
+ pass "$testname"
}
- -re ".*$gdb_prompt $" {
- fail "ptype pDe"
+ -re "type = $re_class${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_synth_gcc_3${wsopt}$re_methods$nl\}$re_star$nl$gdb_prompt $" {
+ # gcc 3.X, abi 1, stabs+
+ pass "$testname"
}
- timeout {
- fail "ptype pDe (timeout)"
+ -re "type = $re_class${wsopt}$re_access_fields${wsopt}$re_fields${wsopt}$re_access_methods${wsopt}$re_methods${wsopt}$re_synth_gcc_3$nl\}$re_star$nl$gdb_prompt $" {
+ # gcc 3.X, abi 2, stabs+
+ pass "$testname"
}
}
- send_gdb "ptype pVa\n"
- gdb_expect {
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVa"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVa (aCC)"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVa (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pVa"
- }
- timeout {
- fail "ptype pVa (timeout)"
- }
- }
-
- send_gdb "ptype pVv\n"
- gdb_expect {
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVv"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVv (aCC)"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVv (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pVv"
- }
- timeout {
- fail "ptype pVv (timeout)"
- }
- }
-
- send_gdb "ptype pVe\n"
- gdb_expect {
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVe"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVe (aCC)"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVe (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pVe"
- }
- timeout {
- fail "ptype pVe (timeout)"
- }
- }
-
- send_gdb "ptype pVd\n"
- gdb_expect {
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}V & operator=\\(V const ?&\\);${ws}V\\((V const|const V) ?&\\);${ws}V\\((void|)\\);${ws}int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVd"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;${ws}int f \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVd (aCC)"
- }
- -re "type = class V : public VA, public VB \{${ws}public:${ws}int w;((${ws}V & operator=\\(V const ?&\\);)|(${ws}V\\(V const ?&\\);)|(${ws}V\\((void|)\\);)|(${ws}int f\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVd (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pVd"
- }
- timeout {
- fail "ptype pVd (timeout)"
- }
- }
-
- send_gdb "ptype pADe\n"
- gdb_expect {
- -re "type = class AD \{${ws}public:${ws}AD & operator=\\(AD const ?&\\);${ws}AD\\((AD const|const AD) ?&\\);${ws}AD\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pADe"
- }
- -re "type = class AD \{${ws}public:${ws}virtual int vg \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pADe (aCC)"
- }
- -re "type = class AD \{${ws}public:((${ws}AD & operator=\\(AD const ?&\\);)|(${ws}AD\\(AD const ?&\\);)|(${ws}AD\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pADe (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pADe"
- }
- timeout {
- fail "ptype pADe (timeout)"
- }
- }
+}
- send_gdb "ptype pEe\n"
- gdb_expect {
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pEe"
- }
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}E & operator=\\(E const ?&\\);${ws}E\\((E const|const E) ?&\\);${ws}E\\((void|)\\);${ws}virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pEe"
- }
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;${ws}virtual int f \\((void|)\\);${ws}virtual int vg \\((void|)\\);${ws}virtual int vv \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pEe (aCC)"
- }
- -re "type = class E : public B, public virtual V, public D, public C \{${ws}public:${ws}int e;((${ws}E & operator=\\(E const ?&\\);)|(${ws}E\\(int, E const ?&\\);)|(${ws}E\\(int\\);)|(${ws}virtual int f\\((void|)\\);)|(${ws}virtual int vg\\((void|)\\);)|(${ws}virtual int vv\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pEe (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pEe"
- }
- timeout {
- fail "ptype pEe (timeout)"
- }
- }
+proc test_ptype_of_classes {} {
+ global gdb_prompt
+ global ws
+ global nl
- send_gdb "ptype pVB\n"
- gdb_expect {
- -re "type = class VB \{${ws}public:${ws}int vb;${ws}VB & operator=\\(VB const ?&\\);${ws}VB\\((VB const|const VB) ?&\\);${ws}VB\\((void|)\\);${ws}int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVB"
- }
- -re "type = class VB \{${ws}public:${ws}int vb;${ws}int fvb \\((void|)\\);${ws}virtual int vvb \\((void|)\\);${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVB (aCC)"
- }
- -re "type = class VB \{${ws}public:${ws}int vb;((${ws}VB & operator=\\(VB const ?&\\);)|(${ws}VB\\(VB const ?&\\);)|(${ws}VB\\((void|)\\);)|(${ws}int fvb\\((void|)\\);)|(${ws}virtual int vvb\\((void|)\\);))*${ws}\} \[*\]+$nl$gdb_prompt $" {
- pass "ptype pVB (obsolescent gcc or gdb)"
- }
- -re ".*$gdb_prompt $" {
- fail "ptype pVB"
- }
- timeout {
- fail "ptype pVB (timeout)"
- }
- }
+ # class VA
+
+ test_one_ptype "ptype VA" "ptype VA" \
+ "((struct|class) VA \{${ws}public:|struct VA \{)" \
+ "" \
+ "" "int va;" \
+ "" "" \
+ "VA & operator=\\(VA const ?&\\);${ws}VA\\(VA const ?&\\);${ws}VA\\((void|)\\);" \
+ "VA & operator=\\(VA const ?&\\);${ws}VA\\(VA const ?&\\);${ws}VA\\((void|)\\);" \
+ ""
+
+ # class VB
+
+ test_one_ptype "ptype VB" "ptype VB" \
+ "((struct|class) VB \{${ws}public:|struct VB \{)" \
+ "" \
+ "" "int vb;" \
+ "" "int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);" \
+ "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \
+ "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \
+ ""
+
+ # class V
+
+ test_one_ptype "ptype V" "ptype V" \
+ "class V : public VA, public VB \{${ws}public:" \
+ "" \
+ "" "int w;" \
+ "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ ""
+
+ # class A
+
+ test_one_ptype "ptype A" "ptype A" \
+ "class A : public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "" "int a;" \
+ "public:" "virtual int f\\((void|)\\);" \
+ "A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);" \
+ "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\(\\);" \
+ ""
+
+ # class B
+
+ test_one_ptype "ptype B" "ptype B" \
+ "class B : public A \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "" "int b;" \
+ "public:" "virtual int f\\((void|)\\);" \
+ "B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);" \
+ "B & operator=\\(B const ?&\\);${ws}B\\(B const ?&\\);${ws}B\\(\\);" \
+ ""
+
+ # class C
+
+ test_one_ptype "ptype C" "ptype C" \
+ "class C : public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "public:" "int c;" \
+ "" "" \
+ "C & operator=\\(C const ?&\\);${ws}C\\(int, C const ?&\\);${ws}C\\(int\\);" \
+ "C & operator=\\(C const ?&\\);${ws}C\\(C const ?&\\);${ws}C\\(\\);" \
+ ""
+
+ # class AD
+
+ test_one_ptype "ptype AD" "ptype AD" \
+ "((struct|class) AD \{${ws}public:|struct AD \{)" \
+ "" \
+ "" "" \
+ "" "virtual int vg\\((void|)\\);" \
+ "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \
+ "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \
+ ""
+
+ # class D
+
+ test_one_ptype "ptype D" "ptype D" \
+ "class D : public AD, public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "public:" "int d;" \
+ "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \
+ ""
+
+ # class E
+ # TODO: E does not show a vbptr for V. That seems strange.
+
+ test_one_ptype "ptype E" "ptype E" \
+ "class E : public B, public virtual V, public D, public C \{(${ws}private:|)" \
+ "" \
+ "public:" "int e;" \
+ "" "virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \
+ "E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);" \
+ "E & operator=\\(E const ?&\\);${ws}E\\(E const ?&\\);${ws}E\\(\\);" \
+ ""
+
+ # An instance of D
+
+ test_one_ptype "ptype dd" "ptype dd" \
+ "class D : public AD, public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "public:" "int d;" \
+ "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \
+ ""
+
+ # An instance of D *
+
+ test_one_ptype "ptype ppd" "ptype ppd" \
+ "class D : public AD, public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "public:" "int d;" \
+ "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \
+ " ?\\*"
+
+ # An instance of AD *
+ # TODO: this should be named pADd, not pAd.
+
+ test_one_ptype "ptype pAd" "ptype pAd" \
+ "((struct|class) AD \{${ws}public:|struct AD \{)" \
+ "" \
+ "" "" \
+ "" "virtual int vg\\((void|)\\);" \
+ "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \
+ "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \
+ " ?\\*"
+
+ # An instance of A
+
+ test_one_ptype "ptype a" "ptype a" \
+ "class A : public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "" "int a;" \
+ "public:" "virtual int f\\((void|)\\);" \
+ "A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);" \
+ "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\(\\);" \
+ ""
+
+ # An instance of B
+
+ test_one_ptype "ptype b" "ptype b" \
+ "class B : public A \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "" "int b;" \
+ "public:" "virtual int f\\((void|)\\);" \
+ "B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);" \
+ "B & operator=\\(B const ?&\\);${ws}B\\(B const ?&\\);${ws}B\\(\\);" \
+ ""
+
+ # An instance of C
+
+ test_one_ptype "ptype c" "ptype c" \
+ "class C : public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "public:" "int c;" \
+ "" "" \
+ "C & operator=\\(C const ?&\\);${ws}C\\(int, C const ?&\\);${ws}C\\(int\\);" \
+ "C & operator=\\(C const ?&\\);${ws}C\\(C const ?&\\);${ws}C\\(\\);" \
+ ""
+
+ # An instance of D
+
+ test_one_ptype "ptype d" "ptype d" \
+ "class D : public AD, public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "public:" "int d;" \
+ "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \
+ ""
+
+ # An instance of E
+
+ test_one_ptype "ptype e" "ptype e" \
+ "class E : public B, public virtual V, public D, public C \{(${ws}private:|)" \
+ "" \
+ "public:" "int e;" \
+ "" "virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \
+ "E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);" \
+ "E & operator=\\(E const ?&\\);${ws}E\\(E const ?&\\);${ws}E\\(\\);" \
+ ""
+
+ # An instance of V
+
+ test_one_ptype "ptype v" "ptype v" \
+ "class V : public VA, public VB \{${ws}public:" \
+ "" \
+ "" "int w;" \
+ "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ ""
+
+ # An instance of VB
+
+ test_one_ptype "ptype vb" "ptype vb" \
+ "((struct|class) VB \{${ws}public:|struct VB \{)" \
+ "" \
+ "" "int vb;" \
+ "" "int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);" \
+ "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \
+ "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \
+ ""
+
+ # An instance of A *
+
+ test_one_ptype "ptype pAa" "ptype pAa" \
+ "class A : public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "" "int a;" \
+ "public:" "virtual int f\\((void|)\\);" \
+ "A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);" \
+ "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\(\\);" \
+ " ?\\*"
+
+ # An instance of A *
+
+ test_one_ptype "ptype pAe" "ptype pAe" \
+ "class A : public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "" "int a;" \
+ "public:" "virtual int f\\((void|)\\);" \
+ "A & operator=\\(A const ?&\\);${ws}A\\(int, A const ?&\\);${ws}A\\(int\\);" \
+ "A & operator=\\(A const ?&\\);${ws}A\\(A const ?&\\);${ws}A\\(\\);" \
+ " ?\\*"
+
+ # An instance of B *
+
+ test_one_ptype "ptype pBe" "ptype pBe" \
+ "class B : public A \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "" "int b;" \
+ "public:" "virtual int f\\((void|)\\);" \
+ "B & operator=\\(B const ?&\\);${ws}B\\(int, B const ?&\\);${ws}B\\(int\\);" \
+ "B & operator=\\(B const ?&\\);${ws}B\\(B const ?&\\);${ws}B\\(\\);" \
+ " ?\\*"
+
+ # An instance of D *
+
+ test_one_ptype "ptype pDd" "ptype pDd" \
+ "class D : public AD, public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "public:" "int d;" \
+ "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \
+ " ?\\*"
+
+ # An instance of D *
+
+ test_one_ptype "ptype pDe" "ptype pDe" \
+ "class D : public AD, public virtual V \{(${ws}private:|)" \
+ "V \\*(_vb.1V|_vb.V);" \
+ "public:" "int d;" \
+ "" "static void s\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vd\\((void|)\\);${ws}int fd\\((void|)\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(int, D const ?&\\);${ws}D\\(int\\);" \
+ "D & operator=\\(D const ?&\\);${ws}D\\(D const ?&\\);${ws}D\\(\\);" \
+ " ?\\*"
+
+ # An instance of V *
+
+ test_one_ptype "ptype pVa" "ptype pVa" \
+ "class V : public VA, public VB \{${ws}public:" \
+ "" \
+ "" "int w;" \
+ "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ " ?\\*"
+
+ # An instance of V *
+
+ test_one_ptype "ptype pVv" "ptype pVv" \
+ "class V : public VA, public VB \{${ws}public:" \
+ "" \
+ "" "int w;" \
+ "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ " ?\\*"
+
+ # An instance of V *
+
+ test_one_ptype "ptype pVe" "ptype pVe" \
+ "class V : public VA, public VB \{${ws}public:" \
+ "" \
+ "" "int w;" \
+ "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ " ?\\*"
+
+ # An instance of V *
+
+ test_one_ptype "ptype pVd" "ptype pVd" \
+ "class V : public VA, public VB \{${ws}public:" \
+ "" \
+ "" "int w;" \
+ "" "int f\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ "V & operator=\\(V const ?&\\);${ws}V\\(V const ?&\\);${ws}V\\((void|)\\);" \
+ " ?\\*"
+
+ # An instance of AD *
+
+ test_one_ptype "ptype pADe" "ptype pADe" \
+ "((struct|class) AD \{${ws}public:|struct AD \{)" \
+ "" \
+ "" "" \
+ "" "virtual int vg\\((void|)\\);" \
+ "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \
+ "AD & operator=\\(AD const ?&\\);${ws}AD\\(AD const ?&\\);${ws}AD\\((void|)\\);" \
+ " ?\\*"
+
+ # An instance of E *
+
+ test_one_ptype "ptype pEe" "ptype pEe" \
+ "class E : public B, public virtual V, public D, public C \{(${ws}private:|)" \
+ "" \
+ "public:" "int e;" \
+ "" "virtual int f\\((void|)\\);${ws}virtual int vg\\((void|)\\);${ws}virtual int vv\\((void|)\\);" \
+ "E & operator=\\(E const ?&\\);${ws}E\\(int, E const ?&\\);${ws}E\\(int\\);" \
+ "E & operator=\\(E const ?&\\);${ws}E\\(E const ?&\\);${ws}E\\(\\);" \
+ " ?\\*"
+
+ # An instance of VB *
+
+ test_one_ptype "ptype pVB" "ptype pVB" \
+ "((struct|class) VB \{${ws}public:|struct VB \{)" \
+ "" \
+ "" "int vb;" \
+ "" "int fvb\\((void|)\\);${ws}virtual int vvb\\((void|)\\);" \
+ "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \
+ "VB & operator=\\(VB const ?&\\);${ws}VB\\(VB const ?&\\);${ws}VB\\((void|)\\);" \
+ " ?\\*"
}
-#
-# Test calling of virtual functions.
-#
+# Call virtual functions.
proc test_virtual_calls {} {
global gdb_prompt
- global GDB
global nl
if [target_info exists gdb,cannot_call_functions] {
@@ -741,207 +491,61 @@ proc test_virtual_calls {} {
return 0
}
- send_gdb "print pAe->f()\n"
- gdb_expect {
- -re ".* = 20$nl$gdb_prompt $" { pass "print pAe->f()" }
- -re "Cannot invoke functions on this machine.*$gdb_prompt $" {
- fail "print pAe->f() (cannot invoke functions, skipping virtual calls)"
- return 0
- }
- -re ".*Cannot access memory at address 0x8.*$gdb_prompt $" {
- fail "print pAe->f() \
-(known failure with gcc cygnus-2.4.5-930417, skipping virtual calls)"
- return 0
- }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pAe->f()"
- }
- -re ".*$gdb_prompt $" { fail "print pAe->f()" }
- timeout { fail "print pAe->f() (timeout)" }
- eof { fail "print pAe->f() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- send_gdb "print pAa->f()\n"
- gdb_expect {
- -re ".* = 1$nl$gdb_prompt $" { pass "print pAa->f()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pAa->f()"
- }
- -re ".*$gdb_prompt $" { fail "print pAa->f()" }
- timeout { fail "print pAa->f() (timeout)" }
- eof { fail "print pAa->f() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- send_gdb "print pDe->vg()\n"
- gdb_expect {
- -re ".* = 202$nl$gdb_prompt $" { pass "print pDe->vg()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pDe->vg()"
- }
- -re ".*$gdb_prompt $" { fail "print pDe->vg()" }
- timeout { fail "print pDe->vg() (timeout)" }
- eof { fail "print pDe->vg() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- send_gdb "print pADe->vg()\n"
- gdb_expect {
- -re ".* = 202$nl$gdb_prompt $" { pass "print pADe->vg()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pADe->vg()"
- }
- -re ".*$gdb_prompt $" { fail "print pADe->vg()" }
- timeout { fail "print pADe->vg() (timeout)" }
- eof { fail "print pADe->vg() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- send_gdb "print pDd->vg()\n"
- gdb_expect {
- -re ".* = 101$nl$gdb_prompt $" { pass "print pDd->vg()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pDd->vg()"
- }
- -re ".*$gdb_prompt $" { fail "print pDd->vg()" }
- timeout { fail "print pDd->vg() (timeout)" }
- eof { fail "print pDd->vg() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- send_gdb "print pEe->vvb()\n"
- gdb_expect {
- -re ".* = 411$nl$gdb_prompt $" { pass "print pEe->vvb()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pEe->vvb()"
- }
- -re ".*$gdb_prompt $" { fail "print pEe->vvb()" }
- timeout { fail "print pEe->vvb() (timeout)" }
- eof { fail "print pEe->vvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- send_gdb "print pVB->vvb()\n"
- gdb_expect {
- -re ".* = 407$nl$gdb_prompt $" { pass "print pVB->vvb()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pVB->vvb()"
- }
- -re ".*$gdb_prompt $" { fail "print pVB->vvb()" }
- timeout { fail "print pVB->vvb() (timeout)" }
- eof { fail "print pVB->vvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- send_gdb "print pBe->vvb()\n"
- gdb_expect {
- -re ".* = 411$nl$gdb_prompt $" { pass "print pBe->vvb()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pBe->vvb()"
- }
- -re ".*$gdb_prompt $" { fail "print pBe->vvb()" }
- timeout { fail "print pBe->vvb() (timeout)" }
- eof { fail "print pBe->vvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- send_gdb "print pDe->vvb()\n"
- gdb_expect {
- -re ".* = 411$nl$gdb_prompt $" { pass "print pDe->vvb()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pDe->vvb()"
- }
- -re ".*$gdb_prompt $" { fail "print pDe->vvb()" }
- timeout { fail "print pDe->vvb() (timeout)" }
- eof { fail "print pDe->vvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
+ gdb_test "print pAe->f()" "\\$\[0-9\]+ = 20"
+ gdb_test "print pAa->f()" "\\$\[0-9\]+ = 1"
+ gdb_test "print pDe->vg()" "\\$\[0-9\]+ = 202"
+ gdb_test "print pADe->vg()" "\\$\[0-9\]+ = 202"
+ gdb_test "print pDd->vg()" "\\$\[0-9\]+ = 101"
+ gdb_test "print pEe->vvb()" "\\$\[0-9\]+ = 411"
+ gdb_test "print pVB->vvb()" "\\$\[0-9\]+ = 407"
+ gdb_test "print pBe->vvb()" "\\$\[0-9\]+ = 411"
+ gdb_test "print pDe->vvb()" "\\$\[0-9\]+ = 411"
+ gdb_test "print pEe->vd()" "\\$\[0-9\]+ = 282"
+ gdb_test "print pEe->fvb()" "\\$\[0-9\]+ = 311"
+
+ # more recent results:
+ # wrong value "202"
+ # gcc 2.95.3 -gdwarf-2
+ # gcc 2.95.3 -gstabs+
+ # attempt to take addres of value not located in memory
+ # gcc 3.3.2 -gdwarf-2
+ # gcc 3.3.2 -gstabs+
+ #
+ # -- chastain 2003-12-31
- send_gdb "print pEe->vd()\n"
- gdb_expect {
- -re ".* = 282$nl$gdb_prompt $" { pass "print pEe->vd()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pEe->vd()"
+ gdb_test_multiple "print pEe->D::vg()" "print pEe->D::vg()" {
+ -re "\\$\[0-9]+ = 102$nl$gdb_prompt $" {
+ pass "print pEe->D::vg()"
}
- -re ".*$gdb_prompt $" { fail "print pEe->vd()" }
- timeout { fail "print pEe->vd() (timeout)" }
- eof { fail "print pEe->vd() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- send_gdb "print pEe->fvb()\n"
- gdb_expect {
- -re ".* = 311$nl$gdb_prompt $" { pass "print pEe->fvb()" }
- -re "Cannot resolve .* to any overloaded instance.*$gdb_prompt $" {
- setup_xfail hppa*-*-* CLLbs16899
- fail "print pEe->fvb()"
+ -re "Attempt to take address of value not located in memory.$nl$gdb_prompt $" {
+ kfail "gdb/1064" "print pEe->D::vg()"
}
- -re ".*$gdb_prompt $" { fail "print pEe->fvb()" }
- timeout { fail "print pEe->fvb() (timeout)" }
- eof { fail "print pEe->fvb() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
- }
-
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=2.95.3, goption=-gdwarf-2.
- #
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=2.95.3, goption=-gstabs+.
- #
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=3.0.3, goption=-gdwarf-2.
- #
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=3.0.3, goption=-gstabs+.
- #
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=3.0.4-20020215, goption=-gdwarf-2.
- #
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=3.0.4-20020215, goption=-gstabs+.
- #
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=gcc-3_0-branch%2002-02-16, goption=-gdwarf-2.
- #
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=gcc-3_0-branch%2002-02-16, goption=-gstabs+.
- #
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=HEAD%2002-02-16, goption=-gdwarf-2.
- #
- # fails on target=native, host=i686-pc-linux-gnu%rh-7.2,
- # gdb=HEAD%2002-02-16, gcc=HEAD%2002-02-16, goption=-gstabs+.
- #
- # -- chastain 2002-02-20
-
- send_gdb "print pEe->D::vg()\n"
- gdb_expect {
- -re ".* = 102$nl$gdb_prompt $" { pass "print pEe->D::vg()" }
- -re "Attempt to take address of value not located in memory.\r\n$gdb_prompt $"
- { kfail "gdb/1064" "print pEe->D::vg()" }
- -re ".*$gdb_prompt $" { fail "print pEe->D::vg()" }
- timeout { fail "print pEe->D::vg() (timeout)" }
- eof { fail "print pEe->D::vg() ($GDB dumped core) (FIXME)" ; gdb_virtfunc_restart; return }
}
}
proc do_tests {} {
global prms_id
global bug_id
+ global srcdir subdir binfile
+ global gdb_prompt
set prms_id 0
set bug_id 0
- gdb_start;
- gdb_virtfunc_init;
+ gdb_exit
+ gdb_start
+ gdb_reinitialize_dir $srcdir/$subdir
+ gdb_load $binfile
- runto_main
+ gdb_test "set language c++" "" ""
+ gdb_test "set width 0" "" ""
+ runto_main
test_ptype_of_classes
- if [ runto 'test_calls' ] then {
- test_virtual_calls
- }
+ gdb_breakpoint test_calls
+ gdb_test "continue" ".*Breakpoint .* test_calls.*" ""
+ test_virtual_calls
}
do_tests
diff --git a/gdb/testsuite/gdb.hp/gdb.aCC/exception.cc b/gdb/testsuite/gdb.hp/gdb.aCC/exception.cc
deleted file mode 100644
index 27459329a8b..00000000000
--- a/gdb/testsuite/gdb.hp/gdb.aCC/exception.cc
+++ /dev/null
@@ -1,48 +0,0 @@
-// Test file for exception handling support.
-
-#include <iostream.h>
-
-int foo (int i)
-{
- if (i < 32)
- throw (int) 13;
- else
- return i * 2;
-}
-
-extern "C" int bar (int k, unsigned long eharg, int flag);
-
-int bar (int k, unsigned long eharg, int flag)
-{
- cout << "k is " << k << " eharg is " << eharg << " flag is " << flag << endl;
- return 1;
-}
-
-int main()
-{
- int j;
-
- try {
- j = foo (20);
- }
- catch (int x) {
- cout << "Got an except " << x << endl;
- }
-
- try {
- try {
- j = foo (20);
- }
- catch (int x) {
- cout << "Got an except " << x << endl;
- throw;
- }
- }
- catch (int y) {
- cout << "Got an except (rethrown) " << y << endl;
- }
-
- // Not caught
- foo (20);
-
-}
diff --git a/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp b/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp
index a0914ae5ba4..85b0136399e 100644
--- a/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp
+++ b/gdb/testsuite/gdb.hp/gdb.aCC/exception.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+# Copyright 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -17,423 +17,9 @@
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
-#
-# tests for exception-handling support
-# Written by Satish Pai <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 exceptions -- it uses a callback mechanism, which
-# is different from the way g++ records exception info
-# for debugging
-
-# The tests are in two parts; the first part deals with
-# statically linked (archive-bound) executables, and the
-# second part repeats those tests with dynamically linked
-# (shared bound) executables. (In the latter case we use
-# a different mechanism to get the address of the notification
-# hook in the C++ support library.) The tests themselves are
-# the same in both parts.
-#
-# IMPORTANT:
-# ---------
-# IF YOU CHANGE A TEST IN ONE PART MAKE SURE YOU CHANGE IT
-# --------------------------------------------------------
-# IN THE OTHER PART TOO!
-# ----------------------
-
-
-
-if $tracelevel then {
- strace $tracelevel
- }
-
-if { [skip_hp_tests] } then { continue }
-
-#
-# test running programs
-#
-
-# Part I : Archive-bound executables
-# ----------------------------------
-
-set testfile "exception"
-set srcfile ${testfile}.cc
-set binfile ${objdir}/${subdir}/${testfile}
-
-if [get_compiler_info ${binfile} "c++"] {
- return -1;
-}
-
-
-if { $gcc_compiled } then { continue }
-
-set cmdline "$CXX_FOR_TARGET ${srcdir}/${subdir}/${srcfile} +A -Wl,-a,archive -g -o ${binfile}"
-
-remote_exec build $cmdline
-
-# Start with a fresh gdb
-
-set prms_id 0
-set bug_id 0
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
-if ![runto_main] then {
- perror "couldn't run to breakpoint"
- continue
-}
-
-# Set a catch catchpoint
-
-send_gdb "catch catch\n"
-gdb_expect {
- -re "Catchpoint \[0-9\]* \\(catch\\)\r\n$gdb_prompt $" {
- pass "catch catch (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "catch catch (static executable)" }
- timeout { fail "(timeout) catch catch (static executable)" }
-}
-
-# Set a throw catchpoint
-
-send_gdb "catch throw\n"
-gdb_expect {
- -re "Catchpoint \[0-9\]* \\(throw\\)\r\n$gdb_prompt $" {
- pass "catch throw (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "catch throw (static executable)" }
- timeout { fail "(timeout) catch throw (static executable)" }
-}
-
-# The catchpoints should be listed in the list of breakpoints.
-
-send_gdb "info break\n"
-gdb_expect {
- -re ".*\[0-9\]*\[ \]*catch catch\[ \]*keep y\[ \]*exception catch\[ \]*\r\n\[0-9\]*\[ \]*catch throw\[ \]*keep y\[ \]*exception throw\[ \]*\r\n$gdb_prompt $" {
- pass "info break with catchpoints (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "info break (static executable)" }
- timeout { fail "(timeout) info break (static executable)" }
-}
-
-# Info catch currently does not work with HP aCC. No easy way to
-# list the active handlers on the stack.
-
-send_gdb "info catch\n"
-gdb_expect {
- -re "Info catch not supported with this target/compiler combination.\r\n$gdb_prompt $" {
- pass "info catch (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "info catch (static executable)" }
- timeout { fail "(timeout) info catch (static executable)" }
-}
-
-# Get the first exception thrown
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing.*Catchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
- pass "caught a throw (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a throw (static executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a throw? (static executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_THROW.*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
- pass "backtrace after throw (static executable)"
- }
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
- pass "backtrace after throw (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "backtrace after throw (static executable)" }
- timeout { fail "(timeout) backtrace after throw (static executable)" }
-}
-
-# Now intercept it when it is caught.
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
- pass "caught a catch (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a catch (static executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a catch? (static executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
- pass "backtrace after catch (static executable)"
- }
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
- pass "backtrace after catch (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "backtrace after catch (static executable)" }
- timeout { fail "(timeout) backtrace after catch (static executable)" }
-}
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
- pass "caught a throw (2) (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a throw (2) (static executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a throw (2)? (static executable)" }
-}
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
- pass "caught a catch (2) (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a catch (2) (static executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a catch (2)? (static executable)" }
-}
-
-# Now the exception will be rethrown.
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:38, catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
- pass "caught a rethrow (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a rethrow (static executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a rethrow? (static executable)" }
-}
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:3\[68\], catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
- # FIXME: guo: why XFAIL? need comment
- xfail "caught a catch (3) (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a catch (3) (static executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a catch (3)? (static executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
- # FIXME: guo: why XFAIL? need comment
- xfail "backtrace after catch (3) (static executable)"
- }
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
- # FIXME: guo: why XFAIL? need comment
- xfail "backtrace after catch (3) (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "backtrace after catch (3) (static executable)" }
- timeout { fail "(timeout) backtrace after catch (3) (static executable)" }
-}
-
-# Now the exception will be thrown, but not catch-able anywhere.
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location unknown\r\n.*$gdb_prompt $" {
- pass "caught an uncatchable throw (static executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch an uncatchable throw (static executable)" }
- timeout { fail "(timeout) after continue -- didn't catch an uncatchable throw? (static executable)" }
-}
-
-# Part II : Shared-bound executables
-# ----------------------------------
-
-# Start with a fresh gdb
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-
-set prms_id 0
-set bug_id 0
-
-set testfile "exception"
-set srcfile ${testfile}.cc
-set binfile ${objdir}/${subdir}/${testfile}
-
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } {
- gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will a
-utomatically fail."
-}
-
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
-
-
-if ![runto_main] then {
- perror "couldn't run to breakpoint"
- continue
-}
-
-# Set a catch catchpoint
-
-send_gdb "catch catch\n"
-gdb_expect {
- -re "Catchpoint \[0-9\]* \\(catch\\)\r\n$gdb_prompt $" {
- pass "catch catch (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "catch catch (dynamic executable)" }
- timeout { fail "(timeout) catch catch (dynamic executable)" }
-}
-
-# Set a throw catchpoint
-
-send_gdb "catch throw\n"
-gdb_expect {
- -re "Catchpoint \[0-9\]* \\(throw\\)\r\n$gdb_prompt $" {
- pass "catch throw (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "catch throw (dynamic executable)" }
- timeout { fail "(timeout) catch throw (dynamic executable)" }
-}
-
-# The catchpoints should be listed in the list of breakpoints.
-
-send_gdb "info break\n"
-gdb_expect {
- -re ".*\[0-9\]*\[ \]*catch catch\[ \]*keep y\[ \]*exception catch\[ \]*\r\n\[0-9\]*\[ \]*catch throw\[ \]*keep y\[ \]*exception throw\[ \]*\r\n$gdb_prompt $" {
- pass "info break with catchpoints (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "info break (dynamic executable)" }
- timeout { fail "(timeout) info break (dynamic executable)" }
-}
-
-# Info catch currently does not work with HP aCC. No easy way to
-# list the active handlers on the stack.
-
-send_gdb "info catch\n"
-gdb_expect {
- -re "Info catch not supported with this target/compiler combination.\r\n$gdb_prompt $" {
- pass "info catch (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "info catch (dynamic executable)" }
- timeout { fail "(timeout) info catch (dynamic executable)" }
-}
-
-# Get the first exception thrown
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing.*Catchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
- pass "caught a throw (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a throw (dynamic executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a throw? (dynamic executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_THROW.*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
- pass "backtrace after throw (dynamic executable)"
- }
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n#2\[ \]*$hex in __eh_notify_throw.*\r\n#3\[ \]*$hex in foo \\(i=20\\) at .*exception\\.cc:8\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:26\r\n$gdb_prompt $" {
- pass "backtrace after throw (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "backtrace after throw (dynamic executable)" }
- timeout { fail "(timeout) backtrace after throw (dynamic executable)" }
-}
-
-# Now intercept it when it is caught.
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:28\r\n.*$gdb_prompt $" {
- pass "caught a catch (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a catch (dynamic executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a catch? (dynamic executable)" }
-}
-
-send_gdb "backtrace\n"
-gdb_expect {
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
- pass "backtrace after catch (dynamic executable)"
- }
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __throw__.*\r\n#4\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#5\[ \]*$hex in main.* at .*exception.cc:26\r\n$gdb_prompt $" {
- pass "backtrace after catch (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "backtrace after catch (dynamic executable)" }
- timeout { fail "(timeout) backtrace after catch (dynamic executable)" }
-}
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
- pass "caught a throw (2) (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a throw (2) (dynamic executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a throw (2)? (dynamic executable)" }
-}
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:8, catch location .*exception\\.cc:36\r\n.*$gdb_prompt $" {
- pass "caught a catch (2) (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a catch (2) (dynamic executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a catch (2)? (dynamic executable)" }
-}
-
-# Now the exception will be rethrown.
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:38, catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
- pass "caught a rethrow (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a rethrow (dynamic executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a rethrow? (dynamic executable)" }
-}
-
-#DTS CLLbs14858
-#The throw location should be at line 38 instead of 36.
-setup_xfail hppa*-*-* CLLbs14858
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing.*Catchpoint \[0-9\]* \\(exception caught\\), throw location.*exception\\.cc:3\[68\], catch location .*exception\\.cc:41\r\n.*$gdb_prompt $" {
- # FIXME: guo: according to comment above the RE is wrong!
- pass "caught a catch (3) (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch a catch (3) (dynamic executable)" }
- timeout { fail "(timeout) after continue -- didn't catch a catch (3)? (dynamic executable)" }
-}
-
-#DTS CLLbs14858
-#The line number for main() should be at exception.cc:38 instead of exception.cc:36
-setup_xfail hppa*-*-* CLLbs14858
-send_gdb "backtrace\n"
-gdb_expect {
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=__EH_NOTIFY_CATCH.*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
- # FIXME: guo: according to comment above the RE is wrong!
- pass "backtrace after catch (3) (dynamic executable)"
- }
- -re "#0\[ \]*__d_eh_break.*\r\n#1\[ \]*$hex in __d_eh_notify_callback \\(eh_type=\[0-9\].*\r\n.*\r\n#3\[ \]*$hex in __rethrow.*\r\n#4\[ \]*$hex in main.* at .*exception\\.cc:3\[68\]\r\n#5\[ \]*$hex in foo \\(i=20\\) at .*exception.cc:8\r\n#6\[ \]*$hex in main.* at .*exception.cc:34\r\n$gdb_prompt $" {
- # FIXME: guo: according to comment above the RE is wrong!
- pass "backtrace after catch (3) (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "backtrace after catch (3) (dynamic executable)" }
- timeout { fail "(timeout) backtrace after catch (3) (dynamic executable)" }
-}
-
-# Now the exception will be thrown, but not catch-able anywhere.
-
-send_gdb "continue\n"
-gdb_expect {
- -re "Continuing\\.\r\nGot.*\r\nCatchpoint \[0-9\]* \\(exception thrown\\), throw location.*exception\\.cc:8, catch location unknown\r\n.*$gdb_prompt $" {
- pass "caught an uncatchable throw (dynamic executable)"
- }
- -re ".*$gdb_prompt $" { fail "didn't catch an uncatchable throw (dynamic executable)" }
- timeout { fail "(timeout) after continue -- didn't catch an uncatchable throw? (dynamic executable)" }
-}
+# This file exists because the configure script requires it to exist.
+# It would be nice to regenerate the configure script. I can't do it
+# because I don't have autoconf 2.12.1, which is used to build it.
+# -- chastain 2004-01-09
+continue
diff --git a/gdb/testsuite/gdb.hp/gdb.defects/bs15503.cc b/gdb/testsuite/gdb.hp/gdb.defects/bs15503.cc
deleted file mode 100644
index 759bc0f8943..00000000000
--- a/gdb/testsuite/gdb.hp/gdb.defects/bs15503.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <string>
-#include <iostream.h>
-
-template <class T>
-class StringTest {
-public:
- virtual void runTest();
- void testFunction();
-};
-
-template <class T>
-void StringTest<T>:: runTest() {
- testFunction ();
-}
-
-template <class T>
-void StringTest <T>::testFunction() {
- // initialize s with string literal
- cout << "in StringTest" << endl;
- string s("I am a shot string");
- cout << s << endl;
-
- // insert 'r' to fix "shot"
- s.insert(s.begin()+10,'r' );
- cout << s << endl;
-
- // concatenate another string
- s += "and now a longer string";
- cout << s << endl;
-
- // find position where blank needs to be inserted
- string::size_type spos = s.find("and");
- s.insert(spos, " ");
- cout << s << endl;
-
- // erase the concatenated part
- s.erase(spos);
- cout << s << endl;
-}
-
-int main() {
- StringTest<wchar_t> ts;
- ts.runTest();
-}
-
-/* output:
-I am a shot string
-I am a short string
-I am a short stringand now a longer string
-I am a short string and now a longer string
-I am a short string
-*/
diff --git a/gdb/testsuite/gdb.hp/gdb.defects/bs15503.exp b/gdb/testsuite/gdb.hp/gdb.defects/bs15503.exp
deleted file mode 100644
index ef249516bd6..00000000000
--- a/gdb/testsuite/gdb.hp/gdb.defects/bs15503.exp
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (C) 1992 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-# Test case for CLLbs15503
-# This file was written by Sue Kimura (sue_kimura@hp.com)
-
-if $tracelevel {
- strace $tracelevel
-}
-
-if { [skip_hp_tests] } { continue }
-
-set testfile "bs15503"
-set srcfile ${testfile}.cc
-set binfile ${objdir}/${subdir}/${testfile}
-
-# Create and source the file that provides information about the compiler
-# used to compile the test case.
-if [get_compiler_info ${binfile}] {
- return -1
-}
-
-# The testcode is non-conforming and rejected by GCC. So bypass this
-# test completely unless we're compiling with HP's compiler.
-if {!$hp_aCC_compiler && !$hp_cc_compiler} {
- return 0
-}
-
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "debug c++"] != "" } {
- perror "Couldn't compile ${srcfile}"
- return -1
-}
-
-
-# Start with a fresh gdb.
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-
-# Load $binfile -- there should be no warnings about "Procedure ... spans
-# file or module boundaries", "No symbols in psymtab for file ..." or
-# "File ... has ending address after starting address of next file..."
-
-if [istarget "hppa64-hp-hpux*" ] {
- gdb_test "file $binfile" \
- "Detected 64-bit executable..*Invoking .*gdb64..*Use \"run\" to continue execution." \
- "loading $binfile"
-} else {
- gdb_test "file $binfile" \
- "Reading symbols from $binfile...done." \
- "loading $binfile"
-}
-# Test setting breakpoint on template function
-#
-gdb_test "break StringTest<wchar_t>::testFunction" \
- "Breakpoint $decimal at $hex: file .*bs15503.cc, line 19." \
- "break point on function"
-
-gdb_test "run" \
- "Starting program:.*Breakpoint $decimal, StringTest<wchar_t>::testFunction \\(this=$hex\\).*cout << \"in StringTest\" << endl;.*" \
- "run to function breakpoint"
-
-#restart with fresh gdb
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load $binfile
-
-gdb_test "break 32" \
- "Breakpoint $decimal at $hex: file .*bs15503.cc, line 32." \
- "break point on line in function"
-
-gdb_test "run" \
- ".*32.*string::size_type spos = s.find\\(\"and\"\\);.*" \
- "run to break point on line in function"
diff --git a/gdb/testsuite/gdb.mi/ChangeLog b/gdb/testsuite/gdb.mi/ChangeLog
deleted file mode 100644
index 6f263c33056..00000000000
--- a/gdb/testsuite/gdb.mi/ChangeLog
+++ /dev/null
@@ -1,768 +0,0 @@
-2003-08-07 Andrew Cagney <cagney@redhat.com>
-
- * mi2-basics.exp: Copy base MI .exp file, set MIFLAGS to -i=mi2.
- * mi2-break.exp, mi2-cli.exp, mi2-console.exp: Ditto.
- * mi2-disassemble.exp, mi2-eval.exp, mi2-file.exp: Ditto.
- * mi2-hack-cli.exp, mi2-pthreads.exp, mi2-read-memory.exp: Ditto.
- * mi2-regs.exp, mi2-return.exp, mi2-simplerun.exp: Ditto.
- * mi2-stack.exp, mi2-stepi.exp, mi2-syn-frame.exp: Ditto.
- * mi2-until.exp, mi2-var-block.exp, mi2-var-child.exp: Ditto.
- * mi2-var-cmd.exp, mi2-var-display.exp, mi2-watch.exp: Ditto.
-
-2003-05-03 J. Brobecker <brobecker@gnat.com>
-
- From Thierry Schneider <tpschneider1@yahoo.com>:
- * mi1-symbol.exp (-symbol-list-lines): New test file to
- validate all symbol-related commands
-
-2003-04-08 Andrew Cagney <cagney@redhat.com>
-
- * gdb792.exp: Skip when C++.
-
-2003-02-23 Stephane Carrez <stcarrez@nerim.fr>
-
- * mi-syn-frame.exp: Don't run this test when gdb,nosignals is set.
-
-2002-12-13 Jeff Johnston <jjohnstn@redhat.com>
-
- * mi-basics.exp: Change tests for -environment-directory. Also add
- tests for -environment-cd, -environment-pwd, and -environment-path.
- Part of fix for PR gdb/741.
-
-2002-11-05 Jeff Johnston <jjohnstn@redhat.com>
-
- * gdb792.cc: New file to test patch for PR gdb/792.
- * gdb792.exp: Ditto.
-
-2002-11-04 Elena Zannoni <ezannoni@redhat.com>
-
- * mi-console.exp: Use mi_runto, mi_run_to_main, mi_next_to,
- mi_step_to wherever possible. Update copyright notices.
- * mi-disassemble.exp: Ditto.
- * mi-eval.exp: Ditto.
- * mi-read-memory.exp: Ditto.
- * mi-regs.exp: Ditto.
- * mi-return.exp: Ditto.
- * mi-stack.exp: Ditto.
- * mi-stepi.exp: Ditto.
- * mi-var-block.exp: Ditto.
- * mi-var-cmd.exp: Ditto.
- * mi-watch.exp: Ditto.
- * mi1-console.exp: Ditto.
- * mi1-disassemble.exp: Ditto.
- * mi1-eval.exp: Ditto.
- * mi1-read-memory.exp: Ditto.
- * mi1-regs.exp: Ditto.
- * mi1-return.exp: Ditto.
- * mi1-stack.exp: Ditto.
- * mi1-stepi.exp: Ditto.
- * mi1-var-block.exp: Ditto.
- * mi1-var-cmd.exp: Ditto.
- * mi1-watch.exp: Ditto.
-
-2002-10-23 Jeff Johnston <jjohnstn@redhat.com>
-
- * mi-var-cmd.exp: Add tests to verify that a -var-assign that changes
- a value shows up in the changelist of a -var-update. Part of fix
- for gdb/702.
- * mi1-var-cmd.exp: Ditto.
-
-2002-10-03 Jeff Johnston <jjohnstn@redhat.com>
-
- * mi-return.exp: Change expected frame output to remove extraneous
- space in level field when frame level is single digit. Part of
- fix for PR gdb/192.
- * mi-stack.exp: Ditto.
- * mi1-return.exp: Ditto.
- * mi1-stack.exp: Ditto.
-
-2002-10-03 Jeff Johnston <jjohnstn@redhat.com>
-
- * mi-var-block.exp: Change expected output from -var-update
- command to expect list format for "changelist". Fix for
- PR gdb/672.
- * mi-var-cmd.exp: Ditto.
- * mi-var-child: Ditto.
-
-2002-09-25 Keith Seitz <keiths@redhat.com>
-
- * mi-pthreads.exp (get_mi_thread_list): Check if expect_out
- exists before using it.
- (check_mi_and_console_threads): Likewise.
- * gdb669.exp (get_mi_thread_list): Likewise.
- (check_mi_and_console_threads): Likewise.
-
-2002-09-24 Keith Seitz <keiths@redhat.com>
-
- * configure.in: Add config header.
- Check for pthread.h.
- * configure: Regenerate.
- * config.in: New file.
- * pthreads.c: New file.
- * mi-pthreads.exp: New file to test thread functionality.
- * gdb669.exp: New file.
-
-2002-09-17 Keith Seitz <keiths@redhat.com>
-
- * mi-var-cmd.exp: Add tests to check when varobj pinned to a
- selected frame changes type.
-
-2002-09-17 Keith Seitz <keiths@redhat.com>
-
- * mi-console.exp: Update copyright.
- * mi-var-block.exp: Likewise.
- * mi-var-cmd.exp: Likewise.
- * mi-var-display.exp: Likewise.
- * mi0-console.exp: Likewise.
- * mi0-var-child.exp: Likewise.
- * mi0-var-cmd.exp: Likewise.
- * mi0-var-display.exp: Likewise.
-
-2002-09-16 Keith Seitz <keiths@redhat.com>
-
- * gdb701.exp: New file for testing varobj target type bug.
- * gdb701.c: New file.
-
-2002-09-13 Keith Seitz <keiths@redhat.com>
-
- * mi-var-child.exp: Use mi_step_to and mi_execute_to instead
- of a bunch of repeated send_gdb/gdb_expect statements.
- Fix line numbers.
-
-2002-09-10 Keith Seitz <keiths@redhat.com>
-
- * mi-simplerun.exp (test_controlled_execution): Follow renaming of
- mi_run_to to mi_execute_to.
- * mi-var-cmd.exp: Likewise.
- * mi0-simplerun.exp: Likewise.
- * mi0-var-cmd.exp: Likewise.
-
-2002-09-03 Keith Seitz <keiths@redhat.com>
-
- * gdb680.exp: New file to test to check for uiout list/tuple
- nesting bug.
-
-2002-03-04 Michael Chastain <mec@shout.net>
-
- * mi-var-cmd.exp: In test "create local variable func",
- accommodate gcc v3 function signature.
- * mi0-var-cmd-exp: Ditto.
-
-2002-02-05 Jim Blandy <jimb@redhat.com>
-
- * mi-regs.exp: Various cleanups for SPARC-only tests.
- (test_breakpoints_creation_and_listing): Format of breakpoint
- table has changed.
- (sparc_register_tests): Expand floating-point number regexp to
- recognize NaN values, too. Replace ineffectual single backslash
- before a hyphen with a double backslash. Don't check the exact
- numbers of the registers which have changed, since there's no way
- to know which registers changed, exactly; just check that the
- result is well-formed.
- * mi0-regs.exp: (sparc_register_tests): Same as for
- sparc_register_tests in mi-regs.exp.
-
- * mi-var-child.exp ("get children of struct_declarations", "get
- children of struct_declarations.s2.u2.u1s2", "get children of
- weird"): Tolerate argument types when they appear in function
- types. (Dwarf 2 includes prototype info; STABS does not.)
- * mi0-var-child.exp: Same.
-
-2001-12-19 Keith Seitz <keiths@redhat.com>
-
- * mi-var-display.exp: char* variables have a child. Update all
- occurences.
- * mi0-var-display.exp: Likewise.
-
-2001-08-29 Andrew Cagney <cagney@redhat.com>
-
- * mi-var-cmd.exp, mi0-var-cmd.exp: Variable lpcharacter has one
- child. Soften floating point tests.
-
-2001-08-09 Andrew Cagney <ac131313@redhat.com>
-
- * mi0-var-block.exp, mi0-stack.exp, mi0-simplerun.exp,
- mi0-regs.exp, mi0-watch.exp, mi0-stepi.exp, mi0-until.exp,
- mi0-return.exp, mi0-read-memory.exp, mi0-eval.exp,
- mi0-disassemble.exp, mi0-console.exp, mi-watch.exp,
- mi-var-display.exp, mi-var-cmd.exp, mi-var-child.exp,
- mi-until.exp, mi-var-block.exp, mi-stepi.exp, mi-stack.exp,
- mi-simplerun.exp, mi-return.exp, mi-regs.exp, mi-read-memory.exp,
- mi-disassemble.exp, mi-eval.exp, mi-console.exp: Replace pattern
- matching thread=0 with one to also match thread=1.
- Fix PR gdb/190.
-
-2001-08-18 Andrew Cagney <ac131313@redhat.com>
-
- * mi0-until.exp, mi-until.exp, mi0-stepi.exp, mi-stepi.exp,
- mi-simplerun.exp, mi0-simplerun.exp, mi0-return.exp,
- mi-return.exp, mi0-console.exp, mi-console.exp: Recognize an
- unexpected run-to-main response. Report as a fail.
-
-2001-06-27 Andrew Cagney <ac131313@redhat.com>
-
- * mi-disassemble.exp: Update to accept mi1 breakpoint tables.
- * mi-basics.exp: Ditto.
- * mi-simplerun.exp: Ditto.
- * mi-watch.exp: Ditto. Add check for full header.
- * mi-break.exp: Ditto. Add check for full header.
-
-2001-06-26 Andrew Cagney <ac131313@redhat.com>
-
- * mi-stack.exp: Update. Output for args=... and
- locals=... changed to a list.
-
-2001-06-26 Andrew Cagney <ac131313@redhat.com>
-
- * mi-stack.exp: Update. Output for stack=..., args=... and
- stack-args=... changed to a list.
-
-2001-06-25 Andrew Cagney <ac131313@redhat.com>
-
- * mi-console.exp: Update args=... part of stop-reason
- patterns. Output changed to a list of arguments.
- * mi-disassemble.exp: Ditto.
- * mi-simplerun.exp: Ditto.
- * mi-return.exp: Ditto.
- * mi-read-memory.exp: Ditto.
- * mi-eval.exp: Ditto.
- * mi-watch.exp: Ditto.
- * mi-var-display.exp: Ditto.
- * mi-var-cmd.exp: Ditto.
- * mi-var-child.exp: Ditto.
- * mi-var-block.exp: Ditto.
- * mi-until.exp: Ditto.
- * mi-stepi.exp: Ditto.
- * mi-stack.exp: Ditto.
- * mi-regs.exp: Ditto.
-
-2001-06-25 Andrew Cagney <ac131313@redhat.com>
-
- * mi-read-memory.exp: Update patterns matching data-read-memory.
- Outputs a list.
-
-2001-06-25 Andrew Cagney <ac131313@redhat.com>
-
- * mi-regs.exp: Update patterns matching register-values. Outputs a
- list.
-
-2001-06-25 Andrew Cagney <ac131313@redhat.com>
-
- * mi-regs.exp: Update patters matching register-names. Now
- outputs a list.
-
-2001-06-25 Andrew Cagney <ac131313@redhat.com>
-
- * mi-regs.exp: Update patterns matching changed-registers. Now
- outputs a list.
-
-2001-06-23 Andrew Cagney <ac131313@redhat.com>
-
- * ChangeLog-mi: Rename to ChangeLog.
- * mi-basics.exp: Remove local emacs variable defining
- change-log-default-name.
- * mi-break.exp, mi-console.exp, mi-disassemble.exp: Ditto.
- * mi-eval.exp, mi-hack-cli.exp, mi-read-memory.exp: Ditto.
- * mi-regs.exp, mi-return.exp, mi-simplerun.exp: Ditto.
- * mi-stack.exp, mi-stepi.exp, mi-until.exp: Ditto.
- * mi-var-block.exp, mi-var-child.exp, mi-var-cmd.exp: Ditto.
- * mi-var-display.exp, mi-watch.exp, mi0-basics.exp: Ditto.
- * mi0-break.exp, mi0-console.exp, mi0-disassemble.exp: Ditto.
- * mi0-eval.exp, mi0-hack-cli.exp, mi0-read-memory.exp: Ditto.
- * mi0-regs.exp, mi0-return.exp, mi0-simplerun.exp: Ditto.
- * mi0-stack.exp, mi0-stepi.exp, mi0-until.exp: Ditto.
- * mi0-var-block.exp, mi0-var-child.exp, mi0-var-cmd.exp: Ditto.
- * mi0-var-display.exp, mi0-watch.exp: Ditto.
-
-2001-06-23 Andrew Cagney <ac131313@redhat.com>
-
- * mi-disassemble.exp: Update patterns matching data-disassemble
- output. Now produces a list of instructions and a list of
- source/assembly lines.
-
-2001-06-18 Andrew Cagney <ac131313@redhat.com>
-
- * mi-basics.exp, mi-break.exp, mi-console.exp, mi-disassemble.exp,
- mi-eval.exp, mi-hack-cli.exp, mi-read-memory.exp, mi-regs.exp,
- mi-return.exp, mi-simplerun.exp, mi-stack.exp, mi-stepi.exp,
- mi-until.exp, mi-var-block.exp, mi-var-child.exp, mi-var-cmd.exp,
- mi-var-display.exp, mi-watch.exp, mi0-basics.exp, mi0-break.exp,
- mi0-console.exp, mi0-disassemble.exp, mi0-eval.exp,
- mi0-hack-cli.exp, mi0-read-memory.exp, mi0-regs.exp,
- mi0-return.exp, mi0-simplerun.exp, mi0-stack.exp, mi0-stepi.exp,
- mi0-until.exp, mi0-var-block.exp, mi0-var-child.exp,
- mi0-var-cmd.exp, mi0-var-display.exp, mi0-watch.exp: Use MIFLAGS
- to explictly select an interpreter.
-
-2001-06-16 Andrew Cagney <ac131313@redhat.com>
-
- MI0 was the never enabled MI interface included in GDB 5.0.
- * mi0-basics.exp: Copy mi-basics.exp.
- * mi0-break.exp: Copy mi-break.exp.
- * mi0-console.exp: Copy mi-console.exp.
- * mi0-disassemble.exp: Copy mi-disassemble.exp.
- * mi0-eval.exp: Copy mi-eval.exp.
- * mi0-hack-cli.exp: Copy mi-hack-cli.exp.
- * mi0-read-memory.exp: Copy mi-read-memory.exp.
- * mi0-regs.exp: Copy mi-regs.exp.
- * mi0-return.exp: Copy mi-return.exp.
- * mi0-simplerun.exp: Copy mi-simplerun.exp.
- * mi0-stack.exp: Copy mi-stack.exp.
- * mi0-stepi.exp: Copy mi-stepi.exp.
- * mi0-until.exp: Copy mi-until.exp.
- * mi0-var-block.exp: Copy mi-var-block.exp.
- * mi0-var-child.exp: Copy mi-var-child.exp.
- * mi0-var-cmd.exp: Copy mi-var-cmd.exp.
- * mi0-var-display.exp: Copy mi-var-display.exp.
- * mi0-watch.exp: Copy mi-watch.exp.
-
-2001-05-11 Fernando Nasser <fnasser@redhat.com>
-
- * mi-var-child.exp: Adjust for the fact that now (char *) can be
- dereferenced.
-
-2001-03-06 Kevin Buettner <kevinb@redhat.com>
-
- * mi-basics.exp, mi-break.exp, mi-disassemble.exp,
- mi-eval.exp, mi-hack-cli.exp, mi-read-memory.exp, mi-regs.exp,
- mi-return.exp, mi-simplerun.exp, mi-stack.exp, mi-stepi.exp,
- mi-until.exp, mi-watch.exp: Update/correct copyright notices.
-
-2001-01-20 Mark Kettenis <kettenis@gnu.org>
-
- * mi-support.exp (mi_gdb_start): Skip mi tests if -i flag is
- recognized (i.e. if GDB was compiled with UI_OUT, but the mi
- interpreter wasn't recognized (because it wasn't compiled in).
-
-Tue Apr 18 15:36:07 2000 Andrew Cagney <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
- file.
- * Makefile.in: Ditto
-
-2000-03-13 James Ingham <jingham@leda.cygnus.com>
-
- * mi-var-block.exp: The error report from varobj_create changed
- since I am now trapping parse_exp_1 errors. Change the tests to
- match the new error message.
- * mi-var-child.exp: Ditto.
- * mi-var-cmd.exp: Ditto.
-
-2000-03-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-disassemble.exp: Don't assume numbers for the offset
- values. They can be different depending on the architecture.
-
- * mi-watch.exp (test_watchpoint_triggering): In same cases the
- type can be 'hw wathcpoint' not just 'watchpoint'. Adjust for that.
-
- * basics.c (callee4): Make the function return something,
- otherwise the return value is undefined.
-
-2000-03-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-basics.exp: Comment out test for a still unimplemented operation.
-
- * mi-disassemble.exp: Rewrite most of the tests to conform to new
- disassemble interface.
-
-Sat Mar 4 13:55:08 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- From Fri 3 Mar 2000 Peter Schauer:
- * mi-support.exp (mi_gdb_start): When GDB doesn't recongize -i=mi
- option, assume no MI support present.
-
-2000-02-01 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-support.exp (mi_gdb_start): Update to recognize start up
- message with 'UI_OUT' instead of 'HEADLESS'.
-
-2000-01-27 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-regs.exp (test_running_the_program): Add global var 'hex'.
-
- * mi-stack.exp, mi-stepi.exp, mi-until.exp, mi-watch.exp,
- mi-var-display.exp, mi-var-cmd.exp, mi-var-child.exp,
- mi-var-block.exp: Update all stopped messages.
-
-2000-01-17 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-console.exp, mi-disassemble.exp, mi-eval.exp,
- mi-read-memory.exp, mi-regs.exp, mi-return.exp, mi-simplerun.exp:
- Update stopped messages, update copyright.
-
- * mi-disassemble.exp: Update error messages output.
-
- * mi-support.exp (proc mi_step): Make gdb do a 'step' command, not
- a 'next'. Update stopped message.
- (proc mi_next): Update stop message.
- (proc mi_run_to_main): Update stopped message.
- Update copyright.
-
-2000-01-11 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-simplerun.exp: Remove stack frames tests from here, to:
-
- * mi-stack.exp: New file, tests for stack commands.
-
- * mi-support.exp (mi_run_to_main, mi_next, mi_step) : Update to
- include thread-id in stopped message.
-
- * mi-regs.exp: Update break-insert output.
-
- * (mi-console.exp, mi-disassemble.exp, mi-eval.exp,
- mi-read-memory.exp, mi-regs.exp, mi-return.exp, mi-simplerun.exp,
- mi-stepi.exp, mi-until.exp, mi-var-block.exp, mi-var-child.exp,
- mi-var-cmd.exp, mi-var-display.exp, mi-watch.exp): Update stopped
- message to include thread-id.
-
-Wed Dec 29 22:06:05 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-watch.exp, mi-var-display.exp, mi-var-cmd.exp,
- mi-var-child.exp, mi-var-block.exp, mi-until.exp, mi-stepi.exp,
- mi-simplerun.exp, mi-return.exp, mi-support.exp, mi-eval.exp,
- mi-console.exp, mi-disassemble.exp, mi-break.exp: Update to
- reflect extended output from -break-insert command.
-
- * mi-break.exp (test_rbreak_creation_and_listing): XFAIL regexp
- tests. -r flag broken by above.
-
-Sun Dec 19 19:28:13 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * cpp_variable.cc, cpp_variable.h, c_variable.c: Delete.
-
-Fri Dec 17 20:59:55 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-read-memory.exp: Test of ``-o <offset>'' now works.
-
-1999-12-16 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-var-cmd.exp: Fix 2 tests outputs.
-
- * mi-var-child.exp: Add many more tests.
-
- * mi-var-display.exp: Add many more tests.
-
- * var-cmd.c: Change type of incr_a parameter to char.
-
-1999-12-15 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-var-block.exp: Set up xfails fro known problems.
-
- * mi-var-display.exp: Set up printing of values of 'e' and 'anone'
- as xfails.
-
- * mi-var-child.exp: Fix typos.
-
-1999-12-15 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-var-child.exp: Space was missing before ``[10]''.
-
-Wed Dec 15 19:23:38 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-read-memory.exp: Add test for ``-o <offset>''. Update checks
- and match next-row et.al.
-
-1999-12-14 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-var-display.exp : New file. Tests for format and type, with
- unions, structs and enums.
-
- * mi-var-cmd.exp: Add some var-assign tests.
-
-1999-12-14 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-var-cmd.exp, mi-var-block.exp, mi-var-child.exp: New files
- some tests for -var* commands.
-
- * var-cmd.c: New source file for var-* commands tests.
- * gdb.mi/Makefile.in (PROGS): Add var-cmd.
-
-Mon Dec 13 18:06:09 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-break.exp: Fix quoting. Changed "srcfile.c":6 to
- "\"srcfile.c\":6".
- * mi-simplerun.exp: Fix quoting.
-
-Sat Dec 11 21:33:37 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-simplerun.exp (exec-finish): Fix return value was zero,
- should have been three.
-
- * mi-disassemble.exp: Reduce number of wild card matches in
- * patterns. Remove all numeric constants.
-
-1999-12-09 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-eval.exp: New file. Some initial tests for
- -data-evaluate-expression.
-
-1999-12-09 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * c_variable.c, cpp_variable.cc, cpp_variable.h: New files. Used
- for testing "var" operations.
- * Makefile.in: Add reference to the above files.
-
-1999-12-08 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-regs.exp: Fix test for format 'N' for
- data-list-register-values.
-
-1999-12-07 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-disassemble.exp: Update expected output. Break test of
- disassembly in mixed mode into 2 functions.
-
- * mi-regs.exp: Initial register tests. Works only on sparc right
- now.
-
-1999-12-02 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-stepi.exp: New file. Tests exec-step-instruction and
- exec-next-instruction.
- * mi-until.exp: New file. Tests exec-until.
- * until.c: New file.
- * mi-return.exp: New file. Tests exec-return.
-
-Thu Dec 2 09:38:23 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-hack-cli.exp: New test. Check the hacked up access to the
- CLI.
-
-Wed Dec 1 16:47:40 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-basics.exp: Delete calls to mi_delete_breakpoints,
- mi_gdb_reinitialize_dir and mi_gdb_load. This test is checking
- that these can work.
-
- * mi-support.exp (mi_step, mi_next, mi_run_to_main): New
- procedures.
-
- * mi-read-memory.exp, mi-read-memory.c: New files. Test
- data-read-memory command.
-
-Tue Nov 30 23:54:16 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-support.exp: Don't start SID until after GDB has been started
- and verified.
-
-Tue Nov 30 22:21:33 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-support.exp (mi_uncatched_gdb_exit): When SID, call sid_exit.
- (mi_gdb_start): When SID, call sid_start.
- (mi_gdb_start): Add MIFLAGS to spawn-GDB command. Check for
- HEADLESS gdb. Return non-zero when GDB fails to start.
- (mi_gdb_load): When SID or SIM, download program.
- (mi_run_cmd): Don't do download here. Assume target supports the
- 00-exec-run command.
- (skip_mi_tests, setup_gdbmi, unset_gdbmi): Delete. Merged into
- mi_gdb_start.
-
- * mi-basics.exp, mi-break.exp, mi-console.exp, mi-disassemble.exp,
- mi-simplerun.exp, mi-watch.exp: Update. Check status from
- mi_gdb_start indicating that GDB started correctly.
-
-Tue Nov 30 15:22:08 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-support.exp (setup_gdbmi, unset_gdbmi): New
- procedures. Setup/unset dejagnu for mi tests.
- * mi-basics.exp, mi-console.exp, mi-simplerun.exp, mi-break.exp,
- mi-disassemble.exp, mi-watch.exp: Update.
-
-1999-11-29 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-simplerun.exp (test_running_the_program): Remove XFAIL. The
- output is fixed now.
- (test_program_termination): Update output pattern.
-
-Tue Nov 30 00:19:10 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-console.c, mi-console.exp: New files. Test console output.
-
-Mon Nov 29 17:59:13 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-support.exp (mi_run_command): Check for exec-run command
- failure due to MI not having an active target.
- (mi_run_command): Check for and handle a builtin simulator target.
- (mi_run_command): Don't check/handle for ``The program has been
- started already'', not a valid MI response.
-
- * mi-simplerun.exp (test_running_the_program): Update all patterns
- to match async output.
- (test_running_the_program): Mark ``step to callee4'' as XFAIL. MI
- output contains {,reason="end-stepping-range"}+.
-
- * mi-simplerun.exp: Limit the timeout for ``step to callee4'' to
- 30 seconds.
-
-Mon Nov 29 17:30:00 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * mi-support.exp (skip_mi_tests): Print UNTESTED when MI interface
- isn't available. Start/stop instead of assuming GDB is running.
- (MIFLAGS): Define.
- * mi-simplerun.exp, mi-disassemble.exp, mi-break.exp,
- mi-basics.exp, mi-watch.exp: Update.
-
-1999-11-26 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * mi-simplerun.exp: Move break-insert {-t, -r} from here.
- * mi-break.exp: To here. New file.
- * mi-watch.exp: New file. Tests for watchpoints.
-
-Wed Nov 24 17:42:07 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * gdb.mi/ChangeLog-mi: MI entries moved to here.
-
-Wed Nov 24 17:31:04 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * gdb.mi/mi-basics.exp, gdb.mi/mi-disassemble.exp,
- gdb.mi/mi-simplerun.exp: Print warning message when test isn't
- run.
-
-1999-11-23 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdb.mi/mi-simplerun.exp: Update output of break-list to account for
- "times" field.
-
-1999-11-05 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdb.mi/mi-simplerun.exp: Add tests for temporary breakpoints
- and bp based on regular expressions.
- * gdb.mi/mi-disassemble.exp: Fix typo.
-
-1999-11-04 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdb.mi/mi-disassemble.exp: Update output of execution commands
- to reflect new 'reason' field.
- * gdb.mi/mi-simplerun.exp: Ditto.
-
-1999-10-25 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdb.mi/mi-simplerun.exp: Add more stack-list-frames tests.
-
- * gdb.mi/mi-disassemble.exp: Update 'run to main' output.
-
- * gdb.mi/mi-simplerun.exp: Update execution commands
- output. Update backtrace output.
-
-1999-10-18 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdb.mi/mi-disassemble.exp: Add new tests for the new
- disassembly command parameter, number of lines.
-
-Mon Oct 11 13:57:21 1999 Andrew Cagney <cagney@amy.cygnus.com>
-
- * lib/mi-support.exp: Break complicated gdb_expect containing
- exp_continue into a while within an expect. Don't attempt a start
- more than three times. Check return value from gdb_load.
-
-1999-10-06 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
-
- * gdb.mi/mi-disassemble.exp: New file.
-
-Wed Oct 6 12:05:58 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * lib/mi-support.exp (mi_run_cmd): Give up after two restart
- attempts.
-
-1999-09290 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * gdb.mi/mi-basics.exp: Update to current syntax and output formats.
- * gdb.mi/mi-simplerun.exp: Ditto.
- * lib/mi-support.exp (mi_delete_breakpoints): Ditto.
-
-1999-06-30 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * gdb.mi/basics.c (main): Fix return code. Add a print "Hello,
- World".
- * gdb.mi/mi-basics.exp: Fix message texts and numbering.
- * gdb.mi/mi-simplerun.exp: Ditto. Also, add new tests and improve
- some patterns.
-
-1999-06-30 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * lib/mi-support.exp (mi_gdb_reinitialize_dir): Remove query as an
- acceptable response to the environment-dir command.
-
-1999-06-30 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * lib/mi-support.exp (mi_delete_breakpoints): Remove references to
- gdb-cli.
- (mi_run_cmd): Ditto.
-
-1999-06-25 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * lib/mi-support.exp (skip_mi_tests): Use gdb-version to check for
- headless output format.
-
-1999-06-24 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * gdb.mi/mi-simplerun.exp (test_controlled_execution): Add global
- spec for hex.
-
-1999-06-24 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * lib/mi-support.exp (mi_run_cmd): Fix pattern and add a timeout
- clause.
-
-1999-06-24 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * lib/mi-support.exp: Use mi_gdb_prompt instead of a modified
- gdb_prompt. Remove uneeded loading of libgloss.
- (mi_gdb_exit): Remove prompt argument.
- (mi_uncatched_gdb_exit): Ditto.
- (mi_run_cmd): New proc. MI version of gdb_run.
- (skip_mi_tests): New proc. Check if gdb is capable of producing
- headless formatted output.
- * gdb.mi/mi-basics.exp: Use mi_gdb_prompt instead of a modified
- gdb_prompt. Eliminate parameter to mi_gdb_exit (as a result of
- the above). Test for skip_mi_tests before running.
- Note: The above changes are interelated (need each other).
- * gdb.mi/mi-simplerun.exp: Same changes as for mi-basics.exe
- above.
- (test_breakpoint_creation_and_listing): Remove insertion of
- breakpoint at callee1 (and renumber tokens). Add tests for
- break-list, break-disable and break-info.
- (test_running_the_program): Use mi_run_cmd so it can run on remote
- targets.
- (test_controlled_execution): Fix broken test.
- (test_program_termination): Test implemented.
- * gdb.mi/basic.c (main): Small change to allow for testing of both
- exec-next and exec-step operations.
-
-1999-06-22 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * lib/mi-support.exp (mi_gdb_test): New proc. MI version of gdb_test.
- * gdb.mi/mi-basics.exp: Use the above instead of gdb_test.
- * gdb.mi/mi-simplerun.exp: Ditto.
-
-1999-06-22 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * gdb.mi/mi-simplerun.exp: New file. Tests simple debugging tasks.
- * gdb.mi/mi-basics.exp: Remove tests moved to above new file.
- * lib/mi-support.exp: New file. Support procedures for mi tests.
-
-1999-06-08 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * gdb.mi/mi-basics.exp: Skip all tests if the MI interpreter is
- not active.
-
-1999-06-03 Fernando Nasser <fnasser@totem.to.cygnus.com>
-
- * gdb.mi: New directory.
- * configure.in: Configure it.
- * configure: Regenerate.
- * gdb.mi/{Makefile.in,configure.in,configure}: New files.
- * gdb.mi/{mi-basics.exp,basics.c,testcmds}: New files.
-
-
-Local Variables:
-mode: indented-text
-left-margin: 8
-fill-column: 74
-version-control: never
-End:
diff --git a/gdb/testsuite/gdb.mi/gdb669.exp b/gdb/testsuite/gdb.mi/gdb669.exp
index d03ce35293c..4bdcdab7a88 100644
--- a/gdb/testsuite/gdb.mi/gdb669.exp
+++ b/gdb/testsuite/gdb.mi/gdb669.exp
@@ -1,4 +1,4 @@
-# Copyright 2002, 2003 Free Software Foundation, Inc.
+# Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -176,7 +176,7 @@ proc check_mi_and_console_threads {name} {
#
set testfile "pthreads"
set srcfile "$testfile.c"
-set binfile "$objdir/$subdir/$testfile"
+set binfile "$objdir/$subdir/gdb669-$testfile"
set options [list debug incdir=$objdir]
if {[gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
diff --git a/gdb/testsuite/gdb.mi/mi-pthreads.exp b/gdb/testsuite/gdb.mi/mi-pthreads.exp
index 532134acc04..be1864798fc 100644
--- a/gdb/testsuite/gdb.mi/mi-pthreads.exp
+++ b/gdb/testsuite/gdb.mi/mi-pthreads.exp
@@ -1,4 +1,4 @@
-# Copyright 2002, 2003 Free Software Foundation, Inc.
+# Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -205,7 +205,7 @@ proc check_mi_thread_command_set {} {
#
set testfile "pthreads"
set srcfile "$testfile.c"
-set binfile "$objdir/$subdir/$testfile"
+set binfile "$objdir/$subdir/mi-$testfile"
set options [list debug incdir=$objdir]
if {[gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
diff --git a/gdb/testsuite/gdb.mi/mi-stack.exp b/gdb/testsuite/gdb.mi/mi-stack.exp
index 92c651df89b..966a86dc7ff 100644
--- a/gdb/testsuite/gdb.mi/mi-stack.exp
+++ b/gdb/testsuite/gdb.mi/mi-stack.exp
@@ -1,4 +1,4 @@
-# Copyright 2000, 2002 Free Software Foundation, Inc.
+# Copyright 2000, 2002, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -149,6 +149,7 @@ proc test_stack_locals_listing {} {
# Tests:
# -stack-list-locals 0
# -stack-list-locals 1
+ # -stack-list-locals 2
# -stack-list-arguments
mi_gdb_test "232-stack-list-locals 0" \
@@ -168,6 +169,10 @@ gdb_expect {
"232\\^done,locals=\\\[\{name=\"A\",value=\"1\"\},\{name=\"B\",value=\"2\"\},\{name=\"C\",value=\"3\"\}\\\]" \
"stack locals listing 1"
+ mi_gdb_test "232-stack-list-locals 2" \
+ "232\\^done,locals=\\\[\{name=\"A\",type=\"int\",value=\"1\"\},\{name=\"B\",type=\"int\",value=\"2\"\},\{name=\"C\",type=\"int\",value=\"3\"\}\\\]" \
+ "stack locals listing 2"
+
mi_gdb_test "234-stack-list-locals" \
"234\\^error,msg=\"mi_cmd_stack_list_locals: Usage.*PRINT_VALUES.*\"" \
"stack locals listing wrong"
diff --git a/gdb/testsuite/gdb.mi/mi-var-child.exp b/gdb/testsuite/gdb.mi/mi-var-child.exp
index 15e3f795aa1..74a5894ce5d 100644
--- a/gdb/testsuite/gdb.mi/mi-var-child.exp
+++ b/gdb/testsuite/gdb.mi/mi-var-child.exp
@@ -1,4 +1,4 @@
-# Copyright (C) 1999, 2000, 2002 Free Software Foundation
+# Copyright (C) 1999, 2000, 2002, 2004 Free Software Foundation
# This Program Is Free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -833,6 +833,9 @@ mi_gdb_test "-var-update *" \
"\\^done,changelist=\\\[\{name=\"struct_declarations.long_array.3\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.4\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.5\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.6\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.7\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.8\",in_scope=\"true\",type_changed=\"false\"\},\{name=\"struct_declarations.long_array.9\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \
"update all vars struct_declarations.long_array.3-9 changed"
+mi_gdb_test "-var-list-children --all-values struct_declarations.long_array" \
+ "\\^done,numchild=\"10\",children=\\\[child=\{name=\"struct_declarations.long_array.0\",exp=\"0\",numchild=\"0\",value=\"1234\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.1\",exp=\"1\",numchild=\"0\",value=\"2345\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.2\",exp=\"2\",numchild=\"0\",value=\"3456\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.3\",exp=\"3\",numchild=\"0\",value=\"4567\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.4\",exp=\"4\",numchild=\"0\",value=\"5678\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.5\",exp=\"5\",numchild=\"0\",value=\"6789\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.6\",exp=\"6\",numchild=\"0\",value=\"7890\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.7\",exp=\"7\",numchild=\"0\",value=\"8901\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.8\",exp=\"8\",numchild=\"0\",value=\"9012\",type=\"long int\"\},child=\{name=\"struct_declarations.long_array.9\",exp=\"9\",numchild=\"0\",value=\"1234\",type=\"long int\"\}\\\]" \
+ "listing of names and values of children"
# Step over "weird->func_ptr = nothing;"
set line 211
diff --git a/gdb/testsuite/gdb.mi/mi1-pthreads.exp b/gdb/testsuite/gdb.mi/mi1-pthreads.exp
index f84f1fe1460..df841b2141e 100644
--- a/gdb/testsuite/gdb.mi/mi1-pthreads.exp
+++ b/gdb/testsuite/gdb.mi/mi1-pthreads.exp
@@ -1,4 +1,4 @@
-# Copyright 2002, 2003 Free Software Foundation, Inc.
+# Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -205,7 +205,7 @@ proc check_mi_thread_command_set {} {
#
set testfile "pthreads"
set srcfile "$testfile.c"
-set binfile "$objdir/$subdir/$testfile"
+set binfile "$objdir/$subdir/mi1-$testfile"
set options [list debug incdir=$objdir]
if {[gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
diff --git a/gdb/testsuite/gdb.mi/mi2-basics.exp b/gdb/testsuite/gdb.mi/mi2-basics.exp
index 44d2e4b9dfa..a86ba3765b5 100644
--- a/gdb/testsuite/gdb.mi/mi2-basics.exp
+++ b/gdb/testsuite/gdb.mi/mi2-basics.exp
@@ -1,4 +1,4 @@
-# Copyright 1999, 2000 Free Software Foundation, Inc.
+# Copyright 1999, 2000, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -40,6 +40,9 @@ if [mi_gdb_start] {
set testfile "basics"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
+set escapedobjdir [string_to_regexp ${objdir}]
+set escapedsrcdir [string_to_regexp ${srcdir}]
+
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
@@ -154,13 +157,14 @@ proc test_dir_specification {} {
# -environment-directory
# -environment-directory -r
-#exp_internal 1
+ set envirodir [string_to_regexp ${srcdir}/${subdir}]
+
mi_gdb_test "202-environment-directory ${srcdir}/${subdir}" \
- "\\\^done,source-path=\"${srcdir}/${subdir}.\\\$cdir.\\\$cwd\"" \
+ "\\\^done,source-path=\"${envirodir}.\\\$cdir.\\\$cwd\"" \
"environment-directory arg operation"
mi_gdb_test "203-environment-directory" \
- "\\\^done,source-path=\"${srcdir}/${subdir}.\\\$cdir.\\\$cwd\"" \
+ "\\\^done,source-path=\"${envirodir}.\\\$cdir.\\\$cwd\"" \
"environment-directory empty-string operation"
mi_gdb_test "204-environment-directory -r" \
@@ -174,6 +178,7 @@ proc test_cwd_specification {} {
global mi_gdb_prompt
global objdir
global subdir
+ global escapedobjdir
# Change the working directory, then print the current working directory
# Tests:
@@ -185,7 +190,7 @@ proc test_cwd_specification {} {
"environment-cd arg operation"
mi_gdb_test "206-environment-pwd" \
- "\\\^done,cwd=\"${objdir}\"" \
+ "\\\^done,cwd=\"${escapedobjdir}\"" \
"environment-pwd operation"
}
@@ -194,6 +199,8 @@ proc test_path_specification {} {
global orig_path
global objdir
global srcdir
+ global escapedobjdir
+ global escapedsrcdir
# Add to the path, display, then reset
# Tests:
@@ -202,8 +209,6 @@ proc test_path_specification {} {
# -environment-path -r dir
# -environment-path -r
-#exp_internal 1
-
send_gdb "-environment-path\n"
gdb_expect 20 {
-re "\\\^done,path=\"\(.*\)\"\r\n$mi_gdb_prompt" {
@@ -220,18 +225,17 @@ proc test_path_specification {} {
"environment-path no-args operation"
mi_gdb_test "208-environment-path $srcdir $objdir" \
- "\\\^done,path=\"$srcdir.$objdir.$orig_path\"" \
+ "\\\^done,path=\"$escapedsrcdir.$escapedobjdir.$orig_path\"" \
"environment-path dir1 dir2 operation"
mi_gdb_test "209-environment-path -r $objdir" \
- "\\\^done,path=\"$objdir.$orig_path\"" \
+ "\\\^done,path=\"$escapedobjdir.$orig_path\"" \
"environment-path -r dir operation"
mi_gdb_test "210-environment-path -r" \
"\\\^done,path=\"$orig_path\"" \
"environment-path -r operation"
-#exp_internal 0
}
if [test_mi_interpreter_selection] {
diff --git a/gdb/testsuite/gdb.mi/mi2-pthreads.exp b/gdb/testsuite/gdb.mi/mi2-pthreads.exp
index fe007e55334..4067883b34f 100644
--- a/gdb/testsuite/gdb.mi/mi2-pthreads.exp
+++ b/gdb/testsuite/gdb.mi/mi2-pthreads.exp
@@ -1,4 +1,4 @@
-# Copyright 2002, 2003 Free Software Foundation, Inc.
+# Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -205,7 +205,7 @@ proc check_mi_thread_command_set {} {
#
set testfile "pthreads"
set srcfile "$testfile.c"
-set binfile "$objdir/$subdir/$testfile"
+set binfile "$objdir/$subdir/mi2-$testfile"
set options [list debug incdir=$objdir]
if {[gdb_compile_pthreads "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
diff --git a/gdb/testsuite/gdb.mi/pthreads.c b/gdb/testsuite/gdb.mi/pthreads.c
index b73b0236c93..0d8f1b616fc 100644
--- a/gdb/testsuite/gdb.mi/pthreads.c
+++ b/gdb/testsuite/gdb.mi/pthreads.c
@@ -1,5 +1,5 @@
/* Pthreads test program.
- Copyright 1996, 2002, 2003
+ Copyright 1996, 2002, 2003, 2004
Free Software Foundation, Inc.
Written by Keith Seitz of Red Hat.
@@ -58,7 +58,7 @@ void
done_making_threads (void)
{
/* Nothing */
-};
+}
void
create_thread (void)
diff --git a/gdb/testsuite/gdb.stabs/weird.exp b/gdb/testsuite/gdb.stabs/weird.exp
index e3bbfb5e6cc..324f67b1f0b 100644
--- a/gdb/testsuite/gdb.stabs/weird.exp
+++ b/gdb/testsuite/gdb.stabs/weird.exp
@@ -1,4 +1,5 @@
-# Copyright 1997, 1998, 1999 Free Software Foundation, Inc.
+# Copyright 1997, 1998, 1999, 2001, 2003, 2004
+# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -33,6 +34,24 @@ if ![file isdirectory ${objdir}/${subdir}] then {
set prms_id 0
set bug_id 0
+set testfile weird
+set srcfile ${objdir}/${subdir}/weird.s
+set binfile ${objdir}/${subdir}/weirdx.o
+
+if { [ get_compiler_info "$binfile" ] } {
+ return -1
+}
+
+if { $hp_cc_compiler || $hp_aCC_compiler } {
+ # The native hp-ux assembler does not support stabs at all.
+ # If the compiler is native hp-ux, of course the assembler is too.
+ # But if someone builds gcc with the native assembler (not recommended)
+ # rather than the gnu assembler, then this logic will not suppress it.
+ # -- chastain 2004-01-07
+ unsupported "stabs with hp-ux assembler"
+ continue
+}
+
proc do_tests {} {
global binfile
global gdb_prompt
@@ -236,9 +255,6 @@ proc print_weird_var { var } {
# Don't use gdb_load; it doesn't bitch if the loading produced some
# error messages during symbol reading.
-set testfile weird
-set srcfile ${objdir}/${subdir}/weird.s
-set binfile ${objdir}/${subdir}/weirdx.o
global target_os
set sedscript ${srcdir}/${subdir}/aout.sed
@@ -266,7 +282,6 @@ switch -glob ${target_triplet} {
}
}
-
# Hope this is a Unix box.
set exec_output [remote_exec build "sed" "-f ${sedscript}" "${srcdir}/${subdir}/weird.def" "${srcfile}"]
if { [lindex $exec_output 0] != 0 } {
@@ -274,12 +289,6 @@ if { [lindex $exec_output 0] != 0 } {
return -1
}
-# HP's assembler has no idea of what to do with .stab directives; detect the
-# use of HP compilers and escape from here. (No doubt a better heuristic
-# could be devised.)
-
-if { [ info exists CC ] && [ string first "/opt/ansic/bin/cc" "$CC" ] >= 0 } then { continue }
-
if { [gdb_compile "${srcfile}" "${binfile}" object ""] != "" } {
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}
diff --git a/gdb/testsuite/gdb.threads/gcore-thread.exp b/gdb/testsuite/gdb.threads/gcore-thread.exp
index 40c9adaad80..43d253e269f 100644
--- a/gdb/testsuite/gdb.threads/gcore-thread.exp
+++ b/gdb/testsuite/gdb.threads/gcore-thread.exp
@@ -1,4 +1,4 @@
-# Copyright 2002, 2003 Free Software Foundation, Inc.
+# Copyright 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -30,7 +30,7 @@ set bug_id 0
# Single-threaded test case
set testfile "pthreads"
set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
+set binfile ${objdir}/${subdir}/gcore-${testfile}
if [istarget "*-*-linux"] then {
set target_cflags "-D_MIT_POSIX_THREADS"
diff --git a/gdb/testsuite/lib/compiler.c b/gdb/testsuite/lib/compiler.c
index b0f557c1a5f..b1f1f5d5f62 100644
--- a/gdb/testsuite/lib/compiler.c
+++ b/gdb/testsuite/lib/compiler.c
@@ -1,6 +1,6 @@
/* This test file is part of GDB, the GNU debugger.
- Copyright 1995, 1997, 1999, 2003 Free Software Foundation, Inc.
+ Copyright 1995, 1997, 1999, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -19,36 +19,47 @@
Please email any bugs, comments, and/or additions to this file to:
bug-gdb@prep.ai.mit.edu */
-/* Often the behavior of any particular test depends upon what compiler was
- used to compile the test. As each test is compiled, this file is
- preprocessed by the same compiler used to compile that specific test
- (different tests might be compiled by different compilers, particularly
- if compiled at different times), and used to generate a *.ci (compiler
- info) file for that test.
+/* Sometimes the behavior of a test depends upon the compiler used to
+ compile the test program. A test script can call get_compiler_info
+ to figure out the compiler version and test_compiler_info to test it.
- I.E., when callfuncs is compiled, a callfuncs.ci file will be generated,
- which can then be sourced by callfuncs.exp to give callfuncs.exp access
- to information about the compilation environment.
+ get_compiler_info runs the preprocessor on this file and then eval's
+ the result. This sets various symbols for use by test_compiler_info.
- TODO: It might be a good idea to add expect code that tests each
- definition made with 'set" to see if one already exists, and if so
- warn about conflicts if it is being set to something else. */
+ TODO: make compiler_info a local variable for get_compiler_info and
+ test_compiler_info.
-/* This needs to be kept in sync with whatis.c and gdb.exp(get_compiler_info).
- If this ends up being hairy, we could use a common header file. */
+ TODO: all clients should use test_compiler_info and should not
+ use gcc_compiled, hp_cc_compiler, or hp_aCC_compiler.
-#if defined (__STDC__) || defined (_AIX)
-set signed_keyword_not_used 0
-#else
-set signed_keyword_not_used 1
-#endif
+ TODO: purge signed_keyword_not_used. */
+
+set compiler_info ""
#if defined (__GNUC__)
-set gcc_compiled __GNUC__
set compiler_info [join {gcc __GNUC__ __GNUC_MINOR__ } -]
+set gcc_compiled __GNUC__
#else
set gcc_compiled 0
-set compiler_info ""
#endif
-return 0
+#if defined (__HP_cc)
+set compiler_info [join {hpcc __HP_cc} -]
+set hp_cc_compiler __HP_cc
+#else
+set hp_cc_compiler 0
+#endif
+
+#if defined (__HP_aCC)
+set compiler_info [join {hpacc __HP_aCC} -]
+set hp_aCC_compiler __HP_aCC
+#else
+set hp_aCC_compiler 0
+#endif
+
+/* gdb.base/whatis.exp still uses this */
+#if defined (__STDC__) || defined (_AIX)
+set signed_keyword_not_used 0
+#else
+set signed_keyword_not_used 1
+#endif
diff --git a/gdb/testsuite/lib/compiler.cc b/gdb/testsuite/lib/compiler.cc
index 719b62b0b6b..0c5eb663b96 100644
--- a/gdb/testsuite/lib/compiler.cc
+++ b/gdb/testsuite/lib/compiler.cc
@@ -1,6 +1,6 @@
/* This test file is part of GDB, the GNU debugger.
- Copyright 1995, 1999, 2003 Free Software Foundation, Inc.
+ Copyright 1995, 1999, 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -19,39 +19,35 @@
Please email any bugs, comments, and/or additions to this file to:
bug-gdb@prep.ai.mit.edu */
-/* Often the behavior of any particular test depends upon what compiler was
- used to compile the test. As each test is compiled, this file is
- preprocessed by the same compiler used to compile that specific test
- (different tests might be compiled by different compilers, particularly
- if compiled at different times), and used to generate a *.ci (compiler
- info) file for that test.
+/* This file is exactly like compiler.c. I could just use compiler.c if
+ I could be sure that every C++ compiler accepted extensions of ".c". */
- I.E., when callfuncs is compiled, a callfuncs.ci file will be generated,
- which can then be sourced by callfuncs.exp to give callfuncs.exp access
- to information about the compilation environment.
-
- TODO: It might be a good idea to add expect code that tests each
- definition made with 'set" to see if one already exists, and if so
- warn about conflicts if it is being set to something else. */
+set compiler_info ""
-#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6))
-set supports_template_debugging 1
+#if defined (__GNUC__)
+set compiler_info [join {gcc __GNUC__ __GNUC_MINOR__ } -]
+set gcc_compiled __GNUC__
#else
-set supports_template_debugging 0
+set gcc_compiled 0
#endif
-#if defined(__cplusplus)
-set supports_template_debugging 1
+#if defined (__HP_cc)
+set compiler_info [join {hpcc __HP_cc} -]
+set hp_cc_compiler __HP_cc
#else
-set supports_template_debugging 0
+set hp_cc_compiler 0
#endif
-#if defined (__GNUC__)
-set gcc_compiled __GNUC__
-set compiler_info [join {gcc __GNUC__ __GNUC_MINOR__ } -]
+#if defined (__HP_aCC)
+set compiler_info [join {hpacc __HP_aCC} -]
+set hp_aCC_compiler __HP_aCC
#else
-set gcc_compiled 0
-set compiler_info ""
+set hp_aCC_compiler 0
#endif
-return 0
+/* gdb.base/whatis.exp still uses this */
+#if defined (__STDC__) || defined (_AIX)
+set signed_keyword_not_used 0
+#else
+set signed_keyword_not_used 1
+#endif
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 136f68c43b8..9670c3479eb 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1,5 +1,5 @@
# Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-# 2002, 2003
+# 2002, 2003, 2004
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
@@ -1094,86 +1094,114 @@ proc skip_hp_tests {} {
return $skip_hp
}
-global compiler_info
-set compiler_info unknown
+set compiler_info "unknown"
+set gcc_compiled 0
+set hp_cc_compiler 0
+set hp_aCC_compiler 0
+set signed_keyword_not_used 0
+
+# Figure out what compiler I am using.
+#
+# BINFILE is a "compiler information" output file. This implementation
+# does not use BINFILE.
+#
+# ARGS can be empty or "C++". If empty, "C" is assumed.
+#
+# There are several ways to do this, with various problems.
+#
+# [ gdb_compile -E $ifile -o $binfile.ci ]
+# source $binfile.ci
+#
+# Single Unix Spec v3 says that "-E -o ..." together are not
+# specified. And in fact, the native compiler on hp-ux 11 (among
+# others) does not work with "-E -o ...". Most targets used to do
+# this, and it mostly worked, because it works with gcc.
+#
+# [ catch "exec $compiler -E $ifile > $binfile.ci" exec_output ]
+# source $binfile.ci
+#
+# This avoids the problem with -E and -o together. This almost works
+# if the build machine is the same as the host machine, which is
+# usually true of the targets which are not gcc. But this code does
+# not figure which compiler to call, and it always ends up using the C
+# compiler. Not good for setting hp_aCC_compiler. Targets
+# hppa*-*-hpux* and mips*-*-irix* used to do this.
+#
+# [ gdb_compile -E $ifile > $binfile.ci ]
+# source $binfile.ci
+#
+# dejagnu target_compile says that it supports output redirection,
+# but the code is completely different from the normal path and I
+# don't want to sweep the mines from that path. So I didn't even try
+# this.
+#
+# set cppout [ gdb_compile $ifile "" preprocess $args quiet ]
+# eval $cppout
+#
+# I actually do this for all targets now. gdb_compile runs the right
+# compiler, and TCL captures the output, and I eval the output.
+#
+# Unfortunately, expect logs the output of the command as it goes by,
+# and dejagnu helpfully prints a second copy of it right afterwards.
+# So I turn off expect logging for a moment.
+#
+# [ gdb_compile $ifile $ciexe_file executable $args ]
+# [ remote_exec $ciexe_file ]
+# [ source $ci_file.out ]
+#
+# I could give up on -E and just do this.
+# I didn't get desperate enough to try this.
+#
+# -- chastain 2004-01-06
proc get_compiler_info {binfile args} {
- # Create and source the file that provides information about the compiler
- # used to compile the test case.
- # Compiler_type can be null or c++. If null we assume c.
+ # For compiler.c and compiler.cc
global srcdir
- global subdir
- # These two come from compiler.c.
- global signed_keyword_not_used
- global gcc_compiled
+
+ # I am going to play with the log to keep noise out.
+ global outdir
+ global tool
+
+ # These come from compiler.c or compiler.cc
global compiler_info
+ global gcc_compiled
+ global hp_cc_compiler
+ global hp_aCC_compiler
+ global signed_keyword_not_used
- if {![istarget "hppa*-*-hpux*"] && ![istarget "mips*-*-irix*"]} {
- if { [llength $args] > 0 } {
- if {$args == "c++"} {
- if { [gdb_compile "${srcdir}/lib/compiler.cc" "${binfile}.ci" preprocess {}] != "" } {
- perror "Couldn't make ${binfile}.ci file"
- return 1;
- }
- }
- } else {
- if { [gdb_compile "${srcdir}/lib/compiler.c" "${binfile}.ci" preprocess {}] != "" } {
- perror "Couldn't make ${binfile}.ci file"
- return 1;
- }
- }
- } else {
- if { [llength $args] > 0 } {
- if {$args == "c++"} {
- if { [eval gdb_preprocess \
- [list "${srcdir}/lib/compiler.cc" "${binfile}.ci"] \
- $args] != "" } {
- perror "Couldn't make ${binfile}.ci file"
- return 1;
- }
- }
- } elseif { $args != "f77" } {
- if { [eval gdb_preprocess \
- [list "${srcdir}/lib/compiler.c" "${binfile}.ci"] \
- $args] != "" } {
- perror "Couldn't make ${binfile}.ci file"
- return 1;
- }
- }
+ # Choose which file to preprocess.
+ set ifile "${srcdir}/lib/compiler.c"
+ if { [llength $args] > 0 && [lindex $args 0] == "c++" } {
+ set ifile "${srcdir}/lib/compiler.cc"
}
-
- uplevel \#0 { set gcc_compiled 0 }
- if { [llength $args] == 0 || $args != "f77" } {
- source ${binfile}.ci
+ # Run $ifile through the right preprocessor.
+ # Toggle gdb.log to keep the compiler output out of the log.
+ log_file
+ set cppout [ gdb_compile "${ifile}" "" preprocess [list "$args" quiet] ]
+ log_file -a "$outdir/$tool.log"
+
+ # Source the output.
+ foreach cppline [ split "$cppout" "\n" ] {
+ if { ! [ regexp "^#" "$cppline" ] } {
+ if { ! [ regexp "^\[\n\r\t \]*$" "$cppline" ] } {
+ verbose "get_compiler_info: $cppline" 2
+ eval "$cppline"
+ }
+ }
}
+ verbose -log "get_compiler_info: $compiler_info"
# Most compilers will evaluate comparisons and other boolean
# operations to 0 or 1.
uplevel \#0 { set true 1 }
uplevel \#0 { set false 0 }
- uplevel \#0 { set hp_cc_compiler 0 }
- uplevel \#0 { set hp_aCC_compiler 0 }
- uplevel \#0 { set hp_f77_compiler 0 }
- uplevel \#0 { set hp_f90_compiler 0 }
- if { !$gcc_compiled && [istarget "hppa*-*-hpux*"] } {
- # Check for the HP compilers
- set compiler [lindex [split [get_compiler $args] " "] 0]
- catch "exec what $compiler" output
- if [regexp ".*HP aC\\+\\+.*" $output] {
- uplevel \#0 { set hp_aCC_compiler 1 }
- # Use of aCC results in boolean results being displayed as
- # "true" or "false"
- uplevel \#0 { set true true }
- uplevel \#0 { set false false }
- } elseif [regexp ".*HP C Compiler.*" $output] {
- uplevel \#0 { set hp_cc_compiler 1 }
- } elseif [regexp ".*HP-UX f77.*" $output] {
- uplevel \#0 { set hp_f77_compiler 1 }
- } elseif [regexp ".*HP-UX f90.*" $output] {
- uplevel \#0 { set hp_f90_compiler 1 }
- }
+ # Use of aCC results in boolean results being displayed as
+ # "true" or "false"
+ if { $hp_aCC_compiler } {
+ uplevel \#0 { set true true }
+ uplevel \#0 { set false false }
}
return 0;
@@ -1184,85 +1212,6 @@ proc test_compiler_info { compiler } {
return [string match $compiler $compiler_info]
}
-proc get_compiler {args} {
- global CC CC_FOR_TARGET CXX CXX_FOR_TARGET F77_FOR_TARGET
-
- if { [llength $args] == 0
- || ([llength $args] == 1 && [lindex $args 0] == "") } {
- set which_compiler "c"
- } else {
- if { $args =="c++" } {
- set which_compiler "c++"
- } elseif { $args =="f77" } {
- set which_compiler "f77"
- } else {
- perror "Unknown compiler type supplied to gdb_preprocess"
- return ""
- }
- }
-
- if [info exists CC_FOR_TARGET] {
- if {$which_compiler == "c"} {
- set compiler $CC_FOR_TARGET
- }
- }
-
- if [info exists CXX_FOR_TARGET] {
- if {$which_compiler == "c++"} {
- set compiler $CXX_FOR_TARGET
- }
- }
-
- if [info exists F77_FOR_TARGET] {
- if {$which_compiler == "f77"} {
- set compiler $F77_FOR_TARGET
- }
- }
-
- if { ![info exists compiler] } {
- if { $which_compiler == "c" } {
- if {[info exists CC]} {
- set compiler $CC
- }
- }
- if { $which_compiler == "c++" } {
- if {[info exists CXX]} {
- set compiler $CXX
- }
- }
- if {![info exists compiler]} {
- set compiler [board_info [target_info name] compiler];
- if { $compiler == "" } {
- perror "get_compiler: No compiler found"
- return ""
- }
- }
- }
-
- return $compiler
-}
-
-proc gdb_preprocess {source dest args} {
- set compiler [get_compiler "$args"]
- if { $compiler == "" } {
- return 1
- }
-
- set cmdline "$compiler -E $source > $dest"
-
- verbose "Invoking $compiler -E $source > $dest"
- verbose -log "Executing on local host: $cmdline" 2
- set status [catch "exec ${cmdline}" exec_output]
-
- set result [prune_warnings $exec_output]
- regsub "\[\r\n\]*$" "$result" "" result;
- regsub "^\[\r\n\]*" "$result" "" result;
- if { $result != "" } {
- clone_output "gdb compile failed, $result"
- }
- return $result;
-}
-
set gdb_wrapper_initialized 0
proc gdb_wrapper_init { args } {
@@ -1918,3 +1867,87 @@ proc gdb_skip_bogus_test { msg } {
return 0;
}
+
+# Note: the procedure gdb_gnu_strip_debug will produce an executable called
+# ${binfile}.dbglnk, which is just like the executable ($binfile) but without
+# the debuginfo. Instead $binfile has a .gnu_debuglink section which contains
+# the name of a idebuginfo only file. This file will be stored in the
+# gdb.base/.debug subdirectory.
+
+# Functions for separate debug info testing
+
+# starting with an executable:
+# foo --> original executable
+
+# at the end of the process we have:
+# foo.stripped --> foo w/o debug info
+# .debug/foo.debug --> foo's debug info
+# foo --> like foo, but with a new .gnu_debuglink section pointing to foo.debug.
+
+# Return the name of the file in which we should stor EXEC's separated
+# debug info. EXEC contains the full path.
+proc separate_debug_filename { exec } {
+
+ # In a .debug subdirectory off the same directory where the testcase
+ # executable is going to be. Something like:
+ # <your-path>/gdb/testsuite/gdb.base/.debug/blah.debug.
+ # This is the default location where gdb expects to findi
+ # the debug info file.
+
+ set exec_dir [file dirname $exec]
+ set exec_file [file tail $exec]
+ set debug_dir [file join $exec_dir ".debug"]
+ set debug_file [file join $debug_dir "${exec_file}.debug"]
+
+ return $debug_file
+}
+
+
+proc gdb_gnu_strip_debug { dest } {
+
+ set debug_file [separate_debug_filename $dest]
+ set strip_to_file_program strip
+ set objcopy_program objcopy
+
+ # Make sure the directory that will hold the separated debug
+ # info actually exists.
+ set debug_dir [file dirname $debug_file]
+ if {! [file isdirectory $debug_dir]} {
+ file mkdir $debug_dir
+ }
+
+ set debug_link [file tail $debug_file]
+ set stripped_file "${dest}.stripped"
+
+ # Get rid of the debug info, and store result in stripped_file
+ # something like gdb/testsuite/gdb.base/blah.stripped.
+ set result [catch "exec $strip_to_file_program --strip-debug ${dest} -o ${stripped_file}" output]
+ verbose "result is $result"
+ verbose "output is $output"
+ if {$result == 1} {
+ return 1
+ }
+
+ # Get rid of everything but the debug info, and store result in debug_file
+ # This will be in the .debug subdirectory, see above.
+ set result [catch "exec $strip_to_file_program --only-keep-debug ${dest} -o ${debug_file}" output]
+ verbose "result is $result"
+ verbose "output is $output"
+ if {$result == 1} {
+ return 1
+ }
+
+ # Link the two previous output files together, adding the .gnu_debuglink
+ # section to the stripped_file, containing a pointer to the debug_file,
+ # save the new file in dest.
+ # This will be the regular executable filename, in the usual location.
+ set result [catch "exec $objcopy_program --add-gnu-debuglink=${debug_file} ${stripped_file} ${dest}" output]
+ verbose "result is $result"
+ verbose "output is $output"
+ if {$result == 1} {
+ return 1
+ }
+
+ return 0
+}
+
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
index 4239a3761f3..29a4f76d93e 100644
--- a/gdb/testsuite/lib/mi-support.exp
+++ b/gdb/testsuite/lib/mi-support.exp
@@ -1,4 +1,4 @@
-# Copyright 1999, 2000, 2002 Free Software Foundation, Inc.
+# Copyright 1999, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -281,35 +281,94 @@ proc mi_gdb_reinitialize_dir { subdir } {
}
}
+# Send GDB the "target" command.
+# FIXME: Some of these patterns are not appropriate for MI. Based on
+# config/monitor.exp:gdb_target_command.
+proc mi_gdb_target_cmd { targetname serialport } {
+ global mi_gdb_prompt
+
+ for {set i 1} {$i <= 3} {incr i} {
+ send_gdb "47-target-select $targetname $serialport\n"
+ gdb_expect 60 {
+ -re "47\\^connected.*$mi_gdb_prompt$" {
+ verbose "Set target to $targetname";
+ return 0;
+ }
+ -re "Couldn't establish connection to remote.*$mi_gdb_prompt$" {
+ verbose "Connection failed";
+ }
+ -re "Remote MIPS debugging.*$mi_gdb_prompt$" {
+ verbose "Set target to $targetname";
+ return 0;
+ }
+ -re "Remote debugging using .*$serialport.*$mi_gdb_prompt$" {
+ verbose "Set target to $targetname";
+ return 0;
+ }
+ -re "Remote target $targetname connected to.*$mi_gdb_prompt$" {
+ verbose "Set target to $targetname";
+ return 0;
+ }
+ -re "Connected to.*$mi_gdb_prompt$" {
+ verbose "Set target to $targetname";
+ return 0;
+ }
+ -re "Ending remote.*$mi_gdb_prompt$" { }
+ -re "Connection refused.*$mi_gdb_prompt$" {
+ verbose "Connection refused by remote target. Pausing, and trying again."
+ sleep 5
+ continue
+ }
+ -re "Timeout reading from remote system.*$mi_gdb_prompt$" {
+ verbose "Got timeout error from gdb.";
+ }
+ timeout {
+ send_gdb "";
+ break
+ }
+ }
+ }
+ return 1
+}
+
#
-# load a file into the debugger.
+# load a file into the debugger (file command only).
# return a -1 if anything goes wrong.
#
-proc mi_gdb_load { arg } {
+proc mi_gdb_file_cmd { arg } {
global verbose
global loadpath
global loadfile
global GDB
global mi_gdb_prompt
global last_mi_gdb_file
+ global last_mi_remote_file
upvar timeout timeout
if { $arg == "" } {
set arg $last_mi_gdb_file;
+ } else {
+ set last_mi_gdb_file $arg
+ if { [ info exists last_mi_remote_file ] } {
+ unset last_mi_remote_file
+ }
}
- set last_mi_gdb_file $arg;
-
- # ``gdb_unload''
+ if [is_remote host] {
+ set arg [remote_download host $arg];
+ if { $arg == "" } {
+ error "download failed"
+ return -1;
+ }
+ }
- # ``gdb_file_cmd''
# FIXME: Several of these patterns are only acceptable for console
# output. Queries are an error for mi.
send_gdb "105-file-exec-and-symbols $arg\n"
gdb_expect 120 {
-re "Reading symbols from.*done.*$mi_gdb_prompt$" {
verbose "\t\tLoaded $arg into the $GDB"
- # All OK
+ return 0
}
-re "has no symbol-table.*$mi_gdb_prompt$" {
perror "$arg wasn't compiled with \"-g\""
@@ -338,14 +397,15 @@ proc mi_gdb_load { arg } {
return -1
}
-re "105-file-exec-and-symbols .*\r\n105\\\^done\r\n$mi_gdb_prompt$" {
- # We are just giving the prompt back for now
- # All OK
- }
+ # We (MI) are just giving the prompt back for now, instead of giving
+ # some acknowledgement.
+ return 0
+ }
timeout {
perror "couldn't load $arg into $GDB (timed out)."
return -1
}
- eof {
+ eof {
# This is an attempt to detect a core dump, but seems not to
# work. Perhaps we need to match .* followed by eof, in which
# gdb_expect does not seem to have a way to do that.
@@ -353,9 +413,46 @@ proc mi_gdb_load { arg } {
return -1
}
}
-
+}
+
+#
+# load a file into the debugger.
+# return a -1 if anything goes wrong.
+#
+proc mi_gdb_load { arg } {
+ global verbose
+ global loadpath
+ global loadfile
+ global GDB
+ global mi_gdb_prompt
+ upvar timeout timeout
+
+ # ``gdb_unload''
+ if { $arg != "" } {
+ mi_gdb_file_cmd $arg
+ }
+
# ``load''
- if { [info procs send_target_sid] != "" } {
+ if { [info procs gdbserver_gdb_load] != "" } {
+ global last_mi_gdb_file
+ global last_mi_remote_file
+
+ if { ! [info exists last_mi_remote_file] } {
+ if [is_remote target] {
+ set last_mi_remote_file [remote_download target $arg]
+ } else {
+ set last_mi_remote_file $last_mi_gdb_file
+ }
+ }
+
+ set res [gdbserver_gdb_load $last_mi_remote_file]
+ set protocol [lindex $res 0]
+ set gdbport [lindex $res 1]
+
+ if { [mi_gdb_target_cmd $protocol $gdbport] != 0 } {
+ return -1
+ }
+ } elseif { [info procs send_target_sid] != "" } {
# For SID, things get complex
send_target_sid
gdb_expect 60 {
diff --git a/gdb/top.c b/gdb/top.c
index c52c1765d68..e11aad249e8 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1,7 +1,7 @@
/* Top level stuff for GDB, the GNU debugger.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -383,6 +383,7 @@ catcher (catch_exceptions_ftype *func,
int *func_val,
enum return_reason *func_caught,
char *errstring,
+ char **gdberrmsg,
return_mask mask)
{
SIGJMP_BUF *saved_catch;
@@ -428,7 +429,14 @@ catcher (catch_exceptions_ftype *func,
if (!caught)
val = (*func) (func_uiout, func_args);
else
- val = 0;
+ {
+ val = 0;
+ /* If caller wants a copy of the low-level error message, make one.
+ This is used in the case of a silent error whereby the caller
+ may optionally want to issue the message. */
+ if (gdberrmsg)
+ *gdberrmsg = error_last_message ();
+ }
catch_return = saved_catch;
/* FIXME: cagney/1999-11-05: A correct FUNC implementation will
@@ -476,7 +484,25 @@ catch_exceptions (struct ui_out *uiout,
{
int val;
enum return_reason caught;
- catcher (func, uiout, func_args, &val, &caught, errstring, mask);
+ catcher (func, uiout, func_args, &val, &caught, errstring, NULL, mask);
+ gdb_assert (val >= 0);
+ gdb_assert (caught <= 0);
+ if (caught < 0)
+ return caught;
+ return val;
+}
+
+int
+catch_exceptions_with_msg (struct ui_out *uiout,
+ catch_exceptions_ftype *func,
+ void *func_args,
+ char *errstring,
+ char **gdberrmsg,
+ return_mask mask)
+{
+ int val;
+ enum return_reason caught;
+ catcher (func, uiout, func_args, &val, &caught, errstring, gdberrmsg, mask);
gdb_assert (val >= 0);
gdb_assert (caught <= 0);
if (caught < 0)
@@ -506,7 +532,8 @@ catch_errors (catch_errors_ftype *func, void *func_args, char *errstring,
struct catch_errors_args args;
args.func = func;
args.func_args = func_args;
- catcher (do_catch_errors, uiout, &args, &val, &caught, errstring, mask);
+ catcher (do_catch_errors, uiout, &args, &val, &caught, errstring,
+ NULL, mask);
if (caught != 0)
return 0;
return val;
@@ -1359,7 +1386,7 @@ print_gdb_version (struct ui_file *stream)
/* Second line is a copyright notice. */
- fprintf_filtered (stream, "Copyright 2003 Free Software Foundation, Inc.\n");
+ fprintf_filtered (stream, "Copyright 2004 Free Software Foundation, Inc.\n");
/* Following the copyright is a brief statement that the program is
free software, that users are free to copy and change it on
diff --git a/gdb/top.h b/gdb/top.h
index 50361dc07ab..88b7e7a6cde 100644
--- a/gdb/top.h
+++ b/gdb/top.h
@@ -56,7 +56,6 @@ extern char *get_prompt (void);
extern void set_prompt (char *);
/* From random places. */
-extern int mapped_symbol_files;
extern int readnow_symbol_files;
/* Perform _initialize initialization */
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 272e94434b2..43c00dba75e 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -392,7 +392,7 @@ trace_command (char *arg, int from_tty)
printf_filtered ("TRACE %s\n", arg);
addr_start = arg;
- sals = decode_line_1 (&arg, 1, (struct symtab *) NULL, 0, &canonical);
+ sals = decode_line_1 (&arg, 1, (struct symtab *) NULL, 0, &canonical, NULL);
addr_end = arg;
if (!sals.nelts)
return; /* ??? Presumably decode_line_1 has already warned? */
@@ -914,6 +914,10 @@ validate_actionline (char **line, struct tracepoint *t)
struct cleanup *old_chain = NULL;
char *p;
+ /* if EOF is typed, *line is NULL */
+ if (*line == NULL)
+ return END;
+
for (p = *line; isspace ((int) *p);)
p++;
@@ -2341,7 +2345,7 @@ scope_info (char *args, int from_tty)
if (args == 0 || *args == 0)
error ("requires an argument (function, line or *addr) to define a scope");
- sals = decode_line_1 (&args, 1, NULL, 0, &canonical);
+ sals = decode_line_1 (&args, 1, NULL, 0, &canonical, NULL);
if (sals.nelts == 0)
return; /* presumably decode_line_1 has already warned */
diff --git a/gdb/tui/ChangeLog b/gdb/tui/ChangeLog
deleted file mode 100644
index fc5886c1ae1..00000000000
--- a/gdb/tui/ChangeLog
+++ /dev/null
@@ -1,1217 +0,0 @@
-2003-09-27 Andrew Cagney <cagney@redhat.com>
-
- * tuiRegs.c: Rename REGISTER_RAW_SIZE to
- DEPRECATED_REGISTER_RAW_SIZE.
-
-2003-09-13 Andrew Cagney <cagney@redhat.com>
-
- * tui.h (struct ui_file): Add opaque declaration.
-
-2003-08-04 Daniel Jacobowitz <drow@mvista.com>
-
- * tui-interp.c: Include "cli-out.h".
- (tui_resume): Update tui_old_uiout's stream to gdb_stdout.
-
-2003-07-24 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui.c (tui_rl_other_window): New function to switch the TUI active
- window and give focus to a next window.
- (tui_initialize_readline): Bind it to c-x o.
- (tui_rl_next_keymap): Activate TUI mode when entering SingleKey mode.
-
-2003-07-23 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui.c (tui_enable): Call tuiRefreshAll to make sure the window
- is accurate.
-
-2003-07-23 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui-interp.c (tui_resume): Enable tui when we expected it.
- (tui_suspend): Remember in which TUI mode we are.
- (_initialize_tui_interp): Use the tui interpreter even when no
- other interpreter was set and define in which TUI mode to start.
-
-2003-06-28 Daniel Jacobowitz <drow@mvista.com>
-
- * tui-out.c (tui_ui_out_impl): Add NULL for redirect member.
-
-2003-06-22 Daniel Jacobowitz <drow@mvista.com>
-
- * tui-hooks.c: Update include order.
- * tui.c: Likewise.
- * tuiCommand.c: Likewise.
- * tuiData.c: Likewise.
- * tuiDataWin.c: Likewise.
- * tuiDisassem.c: Likewise.
- * tuiGeneralWin.c: Likewise.
- * tuiIO.c: Likewise.
- * tuiLayout.c: Likewise.
- * tuiRegs.c: Likewise.
- * tuiSource.c: Likewise.
- * tuiSourceWin.c: Likewise.
- * tuiStack.c: Likewise.
- * tuiWin.c: Likewise.
-
-2003-06-12 Andreas Schwab <schwab@suse.de>
-
- * tuiSource.c (tuiVerticalSourceScroll): Use get_frame_pc.
- * tuiSourceWin.c (tuiHorizontalSourceScroll): Likewise.
- * tuiStack.c (tui_get_function_from_frame): Likewise.
- (tuiShowFrameInfo): Likewise.
- * tuiWin.c (_makeVisibleWithNewHeight): Likewise.
- * tui-hooks.c (tui_selected_frame_level_changed_hook): Likewise.
- * tuiDisassem.c (tuiVerticalDisassemScroll): Likewise.
- Include "disasm.h".
-
-2003-05-08 Andrew Cagney <cagney@redhat.com>
-
- * tuiRegs.c: Use MAX_REGISTER_SIZE instead of
- MAX_REGISTER_RAW_SIZE.
-
-2003-05-03 Andrew Cagney <cagney@redhat.com>
-
- * tuiDisassem.c (tui_disassemble): Call gdb_print_insn, instead of
- TARGET_PRINT_INSN. Do not initialize a disassemble_info object.
-
-2003-04-30 Andrew Cagney <cagney@redhat.com>
-
- * tuiDisassem.c (tui_disassemble): Use
- "deprecated_tm_print_insn_info" instead of TARGET_PRINT_INSN_INFO,
- add comment.
-
-2003-03-14 Andrew Cagney <cagney@redhat.com>
-
- * tuiRegs.c (_tuiGetRegisterRawValue): Use frame_read_register,
- instead of get_saved_register.
-
-2003-03-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui-out.c (tui_out_data): Fix typedef.
-
-2003-03-08 Andrew Cagney <cagney@redhat.com>
-
- * tui-out.c: Update copyright.
- (tui_out_data): Define typedef. Use instead of ui_out_data.
-
-2003-02-14 Andrew Cagney <ac131313@redhat.com>
-
- * tui.c (tui_enable, tui_disable): Don't modify tui_version.
- (tui_is_window_visible, tui_get_command_dimension): Test
- tui_active instead of tui_version.
- * tuiData.h (tui_version): Delete declaration.
- * tui-hooks.c (tui_init_hook, tui_event_loop): Delete function,
- moved to "tui-interp.c".
- (tui_exit, tui_command_loop): Ditto.
- (_initialize_tui): Don't initialize init_ui_hook. Initialize
- target_new_objfile_hook.
- * tui-interp.c: New file.
-
-2003-02-12 Andrew Cagney <ac131313@redhat.com>
-
- * tuiIO.c (tui_prep_terminal): Add one notused parameter.
- * tui.c (tui_rl_switch_mode): Add two notused parameters.
- (tui_rl_change_windows, tui_rl_next_keymap): Ditto.
- (tui_rl_delete_other_windows): Ditto.
- (tui_rl_change_windows, tui_rl_delete_other_windows): Update
- calls.
-
-2002-12-08 Elena Zannoni <ezannoni@redhat.com>
-
- Import of readline 4.3.
- Fix PR gdb/675
- * tuiWin.c: Include readline/readline.h.
- (tui_update_gdb_sizes): Use accessor function rl_get_screen_size.
- (tuiResizeAll): Ditto.
-
-2002-12-06 Elena Zannoni <ezannoni@redhat.com>
-
- * tuiStack.c (tuiShowFrameInfo): Fix typo.
-
-2002-11-29 Andrew Cagney <ac131313@redhat.com>
-
- * tui/tui-hooks.c: Update to use deprecated_selected_frame.
- * tui/tui.c, tui/tuiDisassem.c, tui/tuiRegs.c: Ditto.
- * tui/tuiSource.c, tui/tuiSourceWin.c, tui/tuiWin.c: Ditto.
-
-2002-11-28 Andrew Cagney <ac131313@redhat.com>
-
- * tuiStack.c (tuiShowFrameInfo): Use find_frame_sal instead of
- find_pc_line.
-
-2002-11-23 Andrew Cagney <ac131313@redhat.com>
-
- * tuiStack.c (tuiShowFrameInfo): Use get_frame_type instead of
- deprecated_frame_in_dummy. Fix coding style.
-
-2002-11-21 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui-hooks.c (tui_init_hook): Don't enable the TUI if a specific
- interpreter is installed.
-
-2002-11-18 Andrew Cagney <ac131313@redhat.com>
-
- * tuiStack.c (tuiShowFrameInfo): Use get_frame_type instead of
- signal_handler_caller.
-
-2002-11-10 Andrew Cagney <ac131313@redhat.com>
-
- * tuiStack.c (tuiShowFrameInfo): Replace frame_in_dummy with
- deprecated_frame_in_dummy.
-
-2002-10-26 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiIO.c (tui_prep_terminal): Save the prompt registered in readline.
- (tui_redisplay_readline): Use the last saved prompt.
- (tui_rl_saved_prompt): New.
-
-2002-10-25 Stephane Carrez <stcarrez@nerim.fr>
-
- Fix PR gdb/787
- * tuiWin.c (ACS_LRCORNER, ACS_LLCORNER, ACS_ULCORNER, ACS_URCORNER,
- ACS_HLINE, ACS_VLINE): Define if they don't exist.
-
-2002-10-25 Stephane Carrez <stcarrez@nerim.fr>
-
- Fix PR gdb/478
- * tuiIO.c (tui_initialize_io): Use setvbuf since this is portable.
-
-2002-10-02 Elena Zannoni <ezannoni@redhat.com>
-
- * tui-hooks.c (selected_frame_level_changed_hook): Use the one
- exported from frame.h.
-
-2002-09-29 Elena Zannoni <ezannoni@redhat.com>
-
- * tui.c (tui_show_source): Don't access current_source_symtab, use
- accessor function instead. Include source.h and symtab.h
- * tuiDisassem.c (tuiShowDisassemAndUpdateSource,
- tuiVerticalDisassemScroll): Use accessor functions for current
- source line and symtab. Include source.h.
- * tuiLayout.c (_extractDisplayStartAddr): Use accessor functions
- for current source line and symtab. Include source.h.
- * tuiWin.c (_makeVisibleWithNewHeight): Ditto.
- * tuiSourceWin.c (tuiUpdateSourceWindowAsIs,
- tuiHorizontalSourceScroll): Ditto.
- * tuiSource.c (tuiVerticalSourceScroll): Ditto.
-
-2002-09-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui.c (tui_rl_switch_mode): Remove unecessary TUI switch printfs.
- (tui_initialize_readline): Allow to use space to leave SingleKey
- to enter one gdb command.
- (tui_enable): Restore the TUI keymap when we are back to TUI.
- (tui_disable): Restore normal keymap when leaving TUI.
- * tuiIO.c (tui_redisplay_readline): Restore the SingleKey mode
- when the buffer becomes empty and we are in tui_one_command_mode.
-
-2002-09-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiIO.c (tui_setup_io): rl_already_prompted must be cleared
- when leaving TUI mode so that gdb prompt is displayed.
-
-2002-09-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiStack.c (tui_make_status_line): Make sure the local buffer
- is large enough to hold the complete line.
-
-2002-09-10 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui-hooks.c (tui_event_loop): New function.
- (tui_command_loop): New function to override gdb loop and make sure
- uiout is set according to TUI mode.
- (tui_command_loop): Install the specific TUI command hook.
- * tuiIO.c (tui_initialize_io): Initialize tui_old_uiout.
- (tui_uiout, tui_old_uiout): Make public.
- * tuiIO.h (tui_uiout, tui_old_uiout): Declare.
-
-2002-09-04 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiIO.c (tui_putc): New function to print one character.
- (printable_part): New function from readline/complete.c.
- (PUTX): New macro, likewise.
- (print_filename): New function, likewise.
- (get_y_or_n): New function, likewise and adapted for TUI.
- (tui_rl_display_match_list): New function from readline/complete.c
- and writes on TUI command window.
- (tui_setup_io): Install or remove the readline hook
- rl_completion_display_matches_hook so that completion is written
- directly in TUI command window instead of in the TUI pipe.
- (tui_initialize_io): Use #ifdef TUI_USE_PIPE_FOR_READLINE for the
- TUI redirection pipe.
- (tui_getc): Likewise for call to tui_readline_output.
- (tui_readline_output): Likewise for function.
- * tui.c (tui_rl_startup_hook): Always take care of gdb prompt.
-
-2002-09-02 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiWin.c (_newHeightOk): Fix compilation warnings.
-
-2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiWin.c (_tuiAllWindowsInfo): Don't crash if the window
- is not displayed.
-
-2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui-out.c (tui_out_new): Clear start_of_line.
- * tuiSource.c (tuiVerticalSourceScroll): Use print_source_lines
- to update the current source line.
-
-2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui-hooks.c (tui_detach_hook): New hook to know when a process dies.
- (tui_install_hooks): Install it.
- (tui_remove_hooks): Remove it.
-
-2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiData.h (FILE_PREFIX): Don't define.
- (blankStr, locationStr, breakStr): Don't declare.
- (breakLocationStr, nullStr, historyLimit, setHistoryLimitTo): Likewise.
- (displayableWinContentOf, displayableWinContentAt): Likewise.
- (winElementHeight, winByName, freeAllWindows): Likewise.
-
- * tuiData.c (blankStr, locationStr, breakStr): Remove.
- (breakLocationStr, nullStr, historyLimit, setHistoryLimitTo): Remove.
- (displayableWinContentOf, displayableWinContentAt): Remove.
- (winElementHeight, winByName, freeAllWindows): Remove.
-
-2002-09-01 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiStack.c (tui_make_status_line): New function to create the
- status line.
- (tuiShowLocatorContent): Use it instead of displayableWinContentAt.
- * tuiData.h (PROC_PREFIX): Use "In:" to reduce length of prefix.
- (PC_PREFIX): Use upper case.
- (SINGLE_KEY, MIN_LINE_WIDTH, MIN_PROC_WIDTH): Define.
- (MAX_TARGET_WIDTH, MAX_PID_WIDTH): Define.
-
-2002-08-31 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSourceWin.h (tuiUpdateAllExecInfos): Don't declare.
- (tuiClearAllExecInfosContent): Likewise.
- (tuiEraseAllExecInfosContent): Ditto.
- (tuiUpdateSourceWindowsFromLocator): Ditto.
- * tuiSourceWin.c (tuiUpdateAllExecInfos): Remove.
- * tui.h (tui_vCheckDataValues): Don't declare.
- (tui_vStartNewLines, tui_vAllSetHasBreakAt): Likewise.
- (tui_vUpdateLocatorFilename, tui_vUpdateSourceWindowsWithAddr): Ditto.
- (tui_vShowFrameInfo): Ditto.
-
-2002-08-31 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui.c (tui_commands): Table of single key commands.
- (tui_rl_command_key): New function to execute gdb command.
- (tui_rl_command_mode): New function to temporarily leave SingleKey.
- (tui_rl_next_keymap): New function to enter/leave the SingleKey mode.
- (tui_rl_startup_hook): New function to avoid prompt display by
- readline functions.
- (tui_set_key_mode): New function to set the key mode and install
- the readline keymap.
- (tui_initialize_readline): Create TUI SingleKey readline map.
- (tui_enable): Install rl_startup_hook.
- (tui_disable): Remove it.
- * tui.h (enum tui_key_mode): Declare.
- (tui_set_key_mode, tui_current_key_mode): Declare.
- * tuiIO.c (tui_redisplay_readline): Don't display the prompt in
- SingleKey mode.
- * tuiIO.h (tui_redisplay_readline): Declare.
-
-2002-08-31 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSourceWin.c (tuiSetIsExecPointAt): Redraw the previous and
- current line.
-
-2002-08-31 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSource.c (tuiSetSourceContent): Remove old breakpoint code.
- (_hasBreak): Remove.
- (tuiShowSource): Fix comment indentation.
- (tuiSourceIsDisplayed): Likewise.
- (tuiVerticalSourceScroll): Likewise.
-
-2002-08-30 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSourceWin.h (tui_update_all_breakpoint_info): Declare.
- (tui_update_breakpoint_info): Declare.
- (tuiSetHasBreakAt, tuiAllSetHasBreakAt): Remove.
-
- * tuiSourceWin.c (tuiUpdateSourceWindowAsIs): Update breakpoint
- information using tui_update_breakpoint_info.
- (tui_update_all_breakpoint_info): New function to refresh all
- execution windows.
- (tui_update_breakpoint_info): New function to recompute the status
- of exec info window from breakpoints.
- (tuiSetHasBreakAt, tuiAllSetHasBreakAt): Remove.
- (tuiSetExecInfoContent): Use the exec info flags computed by
- tui_update_breakpoint_info to display a short status about breakpoints.
-
- * tuiData.h (TuiExecInfoContent): New for exec info string.
- (TuiWhichElement): Use it.
- (TUI_BP_ENABLED, TUI_BP_DISABLED, TUI_BP_HIT): New defines.
- (TUI_BP_CONDITIONAL, TUI_BP_HARDWARE): New defines.
- (TUI_BP_HIT_POS, TUI_BP_BREAK_POS, TUI_EXEC_POS): Likewise.
- (TUI_EXECINFO_SIZE): Likewise.
- * tuiData.c (initContentElement): Clear exec info string.
-
- * tui-hooks.c (get_breakpoint): Remove.
- (tui_event_create_breakpoint): Call tui_update_all_breakpoint_info.
- (tui_event_delete_breakpoint): Likewise.
- (tui_event_modify_breakpoint): Likewise.
-
-2002-08-29 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui.c (tuiGetLowDisassemblyAddress): Moved from here.
- * tuiDisassem.c (tuiGetLowDisassemblyAddress): To here, and use
- tui_find_disassembly_address to find the starting address of
- disassemble window.
-
-2002-08-28 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiDisassem.c (tui_disassemble): New function to disassemble
- several lines in a buffer.
- (tui_find_disassembly_address): New function to search backward
- or forward a disassembly line.
- (tuiSetDisassemContent): Use tui_disassemble to obtain the real
- content and format it in the window.
- (tuiShowDisassemAndUpdateSource): Remove unused locals.
- (tuiVerticalDisassemScroll): Use tui_find_disassembly_address to
- obtain the address to disassemble for the scrolling.
- * tuiDisassem.h (tuiGetBeginAsmAddress): Update.
- * tuiSourceWin.c (tuiUpdateSourceWindowAsIs): Don't pass symtab.
-
-2002-08-28 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiIO.c (CTRL_CHAR): Redefine and use readline 4.3 definition.
-
-2002-08-26 Stephane Carrez <stcarrez@nerim.fr>
-
- Fix PR gdb/393:
- * tui.c (tui_disable): Update gdb's knowledge of its terminal
- using target_terminal_save_ours.
- (tui_enable): Likewise.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui.c (tui_rl_switch_mode): Renames tui_switch_mode.
- (tui_rl_change_windows): Renames tui_change_windows.
- (tui_rl_delete_other_windows): Renames tui_delete_other_windows.
- (tui_initialize_readline): Update.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiDisassem.c (tuiSetDisassemContent): Use breakpoint_here_p.
- (_hasBreak): Remove.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiDisassem.c (tuiGetBeginAsmAddress): Use lookup_minimal_symbol
- to find symbol address.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSourceWin.c (tui_display_main): Rename from tuiDisplayMainFunction
- and use tuiGetBeginAsmAddress.
- * tuiSourceWin.h (tui_display_main): Declare.
- * tui.h (tuiDisplayMainFunction): Remove.
- * tui-hooks.c (tui_new_objfile_hook): Update.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSource.h (m_tuiShowSourceAsIs): Remove macro.
- (tuiShowSourceAsIs): Don't declare.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui-hooks.c (tui_selected_frame_level_changed_hook): Always update
- the frame position.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiStack.c (tuiSetLocatorContent): Remove.
- (tuiUpdateLocatorInfoFromFrame): Remove.
- (tui_set_locator_info): Allocate the content buffer if necessary.
- (tui_set_locator_filename): Call tui_set_locator_info directly.
- (tuiShowFrameInfo): Likewise and use find_pc_line instead of
- find_pc_symtab.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSourceWin.c (tuiDisplayMainFunction): Update to use
- tuiUpdateLocatorFilename.
- * tuiStack.c (tuiSetLocatorInfo): Make it static.
- (tuiSetLocatorContent): Likewise.
- (tuiUpdateLocatorInfoFromFrame): Likewise.
- (tuiSwitchFilename): Remove.
- (tui_set_locator_filename): New function
- (tui_set_locator_info): Rename from tuiSetLocatorInfo to GNU-ify;
- use tui_set_locator_filename to record the filename.
- (tuiUpdateLocatorFilename): Likewise.
- (tuiUpdateLocatorInfoFromFrame): Update.
- (tuiSetLocatorContent): Likewise.
- * tuiStack.h (tuiClearLocatorContent): Don't declare.
- (tuiSetLocatorInfo, tuiSetLocatorContent): Likewise.
- (tuiUpdateLocatorInfoFromFrame, tuiSwitchFilename): Likewise.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSourceWin.c (tuiSetHasBreakAt): Use filename for breakpoint
- comparison; cleanup.
- * tuiSource.c (tuiSetSourceContent): Set window title and filename.
- * tuiGeneralWin.c (boxWin): Print optional title on top of window.
- * tuiData.h (TuiSourceInfo): Add filename member.
- (TuiGenWinInfo): Add title member.
- * tuiData.c (initGenericPart): Clear title.
- (freeWindow): Free title and filename; remove unused locals.
- (initWinInfo): Clear filename.
- (tuiDelWindow): Free it; remove unused locals.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiStack.h (tuiGetLocatorFilename): Don't declare.
- (tuiUpdateLocatorDisplay): Likewise.
- * tuiStack.c (tuiGetLocatorFilename): Remove.
- (tuiShowFrameInfo): Use tuiSetLocatorContent and tuiShowLocatorContent
- instead of tuiUpdateLocatorDisplay.
- (tuiUpdateLocatorDisplay): Remove.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiStack.h (tuiClearLocatorDisplay): Don't declare.
- * tuiStack.c (tuiClearLocatorDisplay): Remove.
- (tuiShowLocatorContent): Use wclrtoeol to clear end of status line.
- (tuiUpdateLocatorDisplay): Don't call tuiClearLocatorDisplay.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiStack.c (tui_get_function_from_frame): Rename from
- _getFuncNameFromFrame; use print_address_symbolic to get symbolic
- name of address.
- (tuiUpdateLocatorInfoFromFrame): Update.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiRegs.c (tuiDisplayRegistersFrom): Remove unused locals.
- (_tuiRegisterFormat, _tuiSetSpecialRegsContent): Likewise.
- (_tuiSetGeneralAndSpecialRegsContent): Likewise.
- (_tuiSetFloatRegsContent): Likewise.
- (_tuiRegisterName): Return a const char*.
- * tuiData.h (_TuiDataElement): Use const char* for name.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSourceWin.h (tuiEraseAllSourceContent): Don't declare.
- (tuiShowAllExecInfosContent): Likewise.
- * tuiSourceWin.c (tuiEraseAllSourceContent): Remove.
- (tuiShowAllExecInfosContent): Remove.
- (tuiAllocSourceBuffer): Remove unused locals.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiStack.c (tui_update_command): Rename _tuiUpdateLocation_command
- to follow other gdb's command names; use execute_command; cleanup.
- (_initialize_tuiStack): Update.
-
-2002-08-25 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiWin.h (tui_update_gdb_sizes): Declare.
-
-2002-08-24 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui.c (strcat_to_buf): Use const char* for source item.
- (tui_enable): Update the windows if there is a selected frame.
- * tui.h (strcat_to_buf): Update prototype.
- (strcat_to_buf_with_fmt): Remove.
-
-2002-08-24 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiWin.c (tui_update_gdb_sizes): New function to tell gdb what
- is the size of command window.
- (tuiResizeAll): Call it instead of init_page_info.
- * tui.c (tui_enable): Call it to resize to TUI command window.
- (tui_disable): Likewise for plain screen.
-
-2002-08-24 Stephane Carrez <stcarrez@nerim.fr>
-
- * tui.c (tui_enable): Use tuiSetLayout instead of showLayout and
- use tuiShowFrameInfo instead of tuiSetLocatorContent.
- * tuiLayout.h (showLayout): Remove.
- * tuiLayout.c (_showSourceOrDisassemAndCommand): Remove unused locals.
- (_showSourceDisassemCommand): Likewise.
- (showLayout): Make it static.
- (lastLayout): Remove.
-
-2002-08-24 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSourceWin.c (tui_show_source_line): New function.
- (tuiShowSourceContent): Call it and avoid clearing the window before
- redrawing it.
- (tuiClearAllSourceWinsContent): Remove.
- * tuiSourceWin.h (tuiClearAllSourceWinsContent): Don't declare.
- * tuiWin.h (tuiClearWinFocus, tuiClearWinFocusFrom): Don't declare.
- * tuiWin.c (tuiClearWinFocus, tuiClearWinFocusFrom): Remove.
- (tuiRefreshAll): Don't clear the window.
- (_makeVisibleWithNewHeight): Don't clear locator line.
- (tuiResizeAll): Remove unused locals.
- (_tuiAdjustWinHeights): Likewise.
- (_makeInvisibleAndSetNewHeight): Likewise.
- (_newHeightOk): Likewise.
- * tuiLayout.c (showLayout): Don't clear source windows.
- (tuiSetLayout): Don't clear the window.
- (_initAndMakeWin): Likewise for status line.
- * tuiGeneralWin.c (makeVisible): Don't clear or refresh the window.
- (makeWindow): Likewise.
- (tuiClearWin): Remove.
- * tuiGeneralWin.h (tuiClearWin): Don't declare.
-
-2002-08-24 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiSourceWin.c (tuiSrcWinIsDisplayed): Remove.
- (tuiAsmWinIsDisplayed): Remove.
- (tuiShowAllSourceWinsContent): Remove.
- (tuiUpdateOnEnd): Remove.
- * tuiGeneralWin.c (scrollWinForward): Remove.
- (scrollWinBackward): Remove.
- (_winResize): Don't declare.
- * tui.h (tuiUpdateOnEnd): Don't declare.
- (vcatch_errors, va_catch_errors): Likewise.
- * tuiSourceWin.h (tuiUpdateOnEnd): Likewise.
- (tuiShowAllSourceWinsContent): Likewise.
- * tuiGeneralWin.h (scrollWinForward): Likewise.
- (scrollWinBackward): Likewise.
-
-2002-08-24 Stephane Carrez <stcarrez@nerim.fr>
-
- * tuiRegs.c (_tuiRegisterFormat): Use gdbarch_print_registers_info.
-
-2002-08-18 Daniel Jacobowitz <drow@mvista.com>
-
- Fix PR gdb/655
- * tui.c: Disable <termio.h> include.
-
-2002-03-15 Andrew Cagney <ac131313@redhat.com>
-
- * tui-out.c (XMALLOC): Delete macro. Update copyright.
-
-2002-03-01 Andrew Cagney <ac131313@redhat.com>
-
- * tui-hooks.c: Add FIXME to explain true/false problem. Update
- copyright.
- * tui.c, tuiCommand.c, tuiData.c, tuiDataWin.c: Ditto.
- * tuiDisassem.c, tuiGeneralWin.c, tuiIO.c, tuiLayout.c: Ditto.
- * tuiRegs.c, tuiSource.c, tuiSourceWin.c, tuiStack.c: Ditto.
- * tuiWin.c: Ditto.
-
- 2002-02-08 Daniel Jacobowitz <drow@mvista.com>
- * tui-hooks.c: Include <curses.h> before "bfd.h".
- * tui.c: Likewise.
- * tuiCommand.c: Likewise.
- * tuiData.c: Likewise.
- * tuiDataWin.c: Likewise.
- * tuiDisassem.c: Likewise.
- * tuiGeneralWin.c: Likewise.
- * tuiIO.c: Likewise.
- * tuiLayout.c: Likewise.
- * tuiRegs.c: Likewise.
- * tuiSource.c: Likewise.
- * tuiSourceWin.c: Likewise.
- * tuiStack.c: Likewise.
- * tuiWin.c: Likewise.
-
-2002-02-01 Andrew Cagney <ac131313@redhat.com>
-
- * tuiWin.c (_initialize_tuiWin): Replace NO_FUNCTION with NULL.
-
-2001-10-20 Andrew Cagney <ac131313@redhat.com>
-
- * tuiDisassem.c: Include "value.h".
- * tuiSourceWin.c: Ditto.
-
-2001-09-28 Tom Tromey <tromey@redhat.com>
-
- * tuiLayout.h (tui_set_layout): Don't declare.
- * tui.h (tui_vAddWinToLayout): Don't declare.
- (tui_vSetLayoutTo): Likewise.
- (tui_set_layout): Declare.
-
-2001-08-02 Eli Zaretskii <eliz@is.elta.co.il>
-
- * tuiSourceWin.c: Use disp_del instead of del.
-
- * tuiSource.c: Use disp_del instead of del.
-
- * tuiDisassem.c: Use disp_del instead of del.
-
-2001-07-31 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tui.c (tui_enable): Remove call to terminal_save_ours().
- (tui_disable): Likewise.
-
-2001-07-28 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiWin.c (_initialize_tuiWin): Use specific tui prefix for
- set/show configuration variables.
- (show_tui_cmd): New function.
- (set_tui_cmd): New function.
-
-2001-07-24 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tui-hooks.c: New file, gdb hooks for tui.
- * tui-out.c: New file, image copied from cli-out.c.
- (tui_field_int): Identify "line" fields and keep track of them.
- (tui_field_string): Likewise for "file".
- (tui_out_new): Use flags = 0 to avoid printing the sources.
-
-2001-07-23 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiIO.c (tui_cont_sig): Update cursor position on the screen to
- leave it in the command window.
- (tui_redisplay_readline): Save cursor position to restore the
- cursor after we go back from background.
- * tuiData.h (TuiCommandInfo): Add start_line member.
-
-2001-07-23 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiStack.c (tuiUpdateLocatorFilename): Use const char*.
- * tuiStack.h (tuiUpdateLocatorFilename): Update prototype.
- * tuiWin.c (_initialize_tuiWin): Don't cast table of enum in calls
- to add_set_enum_cmd.
- * tui.c (tui_show_source): New function.
- (tuiGetLowDisassemblyAddress): Use CORE_ADDR for newLow.
- (tui_switch_mode): Prep or deprep readline terminal;
- make sure the \n we return does not redo the last command.
- * tui.h (tui_show_source): Declare.
- (tui_out_new, tui_install_hooks, tui_remove_hooks): Likewise.
- (tui_active, tui_initialize_io, tui_initialize_readline): Likewise.
-
-2001-07-22 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiIO.c (tui_initialize_io): Install tui_cont_sig signal handler
- if SIGCONT is defined.
- (tui_cont_sig): New function when SIGCONT is defined.
- (tui_setup_io): Save tty setting to restore by SIGCONT.
-
-2001-07-22 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tui.h (tui_show_assembly): Declare.
- (tui_is_window_visible): Declare.
- * tui.c (tui_show_assembly): New function.
- (tui_is_window_visible): New function.
- (tui_get_command_dimension): New function.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiWin.c (tuiRefreshAll): Use clearok to force a refresh.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tui-file.c (tui_file_fputs): Use tui_puts.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiStack.c (tuiSetLocatorInfo): Cleanup.
- * tuiStack.h (tuiGetLocatorFilename): Declare.
- * tuiRegs.h (tuiFirstRegElementNoInLine): Declare.
- * tuiData.h (addToSourceWindows): Declare.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tui.c (tui_change_windows): New function.
- (tui_delete_other_windows): New function.
- (tui_initialize_readline): Bind them to C-X 1 and C-X 2.
- (tui_enable): Enable the keypad; call tui_update_variables.
- (strcat_to_buf_with_fmt): Remove.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tui.h: Remove old declarations, add the new ones.
- * tui.c (tui_switch_mode): New function.
- (tui_initialize_readline): New function.
- (tui_enable): New function.
- (tui_disable): New function.
- (tuiGetLowDisassemblyAddress): Use CORE_ADDR, cleanup.
- (tui_vSelectSourceSymtab): Remove.
- (tuiInitWindows): Remove.
- (_initialize_tui): Remove.
- (_tuiReset): Keep but put arround #if 0.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiIO.h: Remove old declarations and add the new ones.
- * tuiIO.c: New management for curses and gdb terminal interactions.
- (tui_tputs): Remove.
- (tuiTermSetup, tuiTermUnsetup): Remove, must use normal curses ops.
- (tuiBufferGetc, tui_vStartNewLines, _updateCommandInfo): Remove.
- (tui_owns_terminal): Remove.
- (tui_redisplay_readline): New function.
- (tui_puts): New function.
- (tui_prep_terminal): New function.
- (tui_deprep_terminal): New function.
- (tui_getc): Rename of tuiGetc, simplify and fix.
- (tui_setup_io): New function.
- (tui_initialize_io): New function.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiRegs.c (tuiDisplayRegistersFrom): Call touchwin.
- (_tuiRegisterFormat): Reduce size of format result.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiGeneralWin.c (boxWin): Use the tui configuration variables.
- * tuiWin.h: Declare the new variables.
- * tuiWin.c (_initialize_tuiWin): Create TUI configuration variables.
- (tui_update_variables): New function.
- (translate): New function.
- (tui_border_kind_enums, tui_border_mode_enums): New tables.
- (tui_border_mode_translate): New table.
- (tui_border_kind_translate_*): New tables.
- (tui_active_border_mode): New variables.
- (tui_border_*): New variables.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiWin.c (_parseScrollingArgs): Fix uninitialized variable.
- (_makeVisibleWithNewHeight): Use TuiLineOrAddress type.
-
- * tuiStack.c (tuiShowFrameInfo): Use TuiLineOrAddress type.
- (tui_vUpdateLocatorFilename): Remove.
- * tuiStack.h: Update prototypes.
-
- * tuiSourceWin.c (tuiAddrIsDisplayed): New function.
- (tuiLineIsDisplayed): Split for address and line.
- (tuiUpdateSourceWindow): Use TuiLineOrAddress type.
- (tuiUpdateSourceWindowAsIs): Likewise.
- (tuiUpdateSourceWindowsWithAddr): Likewise.
- (tuiUpdateSourceWindowsWithLine): Likewise.
- (tuiHorizontalSourceScroll): Likewise.
- (tuiSetIsExecPointAt): Likewise.
- (tuiUpdateOnEnd): Likewise.
- * tuiSourceWin.h: Update prototypes.
-
- * tuiSource.c (tuiVerticalSourceScroll): Use TuiLineOrAddress type.
- (tuiShowSource): Likewise.
- (tuiVerticalSourceScroll): Likewise.
- * tuiSource.h (tuiShowSource): Update prototype.
-
- * tuiDisassem.c (tuiSetDisassemContent): Use CORE_ADDR for address.
- (tuiShowDisassem): Use TuiLineOrAddress type.
- (tuiShowDisassemAndUpdateSource): Likewise.
- (tuiVerticalDisassemScroll): Likewise.
- (tuiShowDisassemAsIs): Remove.
- * tuiDisassem.h (tuiSetDisassemContent): Update prototype.
-
- * tuiData.c (initWinInfo): Use CORE_ADDR for address.
- (clearWinDetail): Likewise.
- (displayableWinContentOf): Fix address conversion.
- (tuiNextWin): Fix crash when the window is not yet created.
- (partialWinByName): Likewise.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiSourceWin.h: Remove unused declarations.
- * tuiSourceWin.c (tui_vUpdateSourceWindowsWithAddr): Remove.
- (tui_vUpdateSourceWindowsWithLine): Remove.
- (tui_vAllSetHasBreakAt): Remove.
-
- * tuiLayout.h (tui_set_layout): Declare.
- (tui_vSetLayoutTo): Remove.
- (tui_vAddWinToLayout): Remove.
- * tuiLayout.c (_tuiLayout_command): Call tui_enable() to force TUI.
- (_tuiToggleLayout_command): Remove.
- (_tuiToggleSplitLayout_command): Remove.
- (_tuiLayout_command): Remove.
- (tui_vSetLayoutTo): Remove.
- (tui_vAddWinToLayout): Remove.
-
- * tuiDataWin.h (tui_vCheckDataValues): Remove.
- * tuiDataWin.c (tui_vCheckDataValues): Remove.
-
-2001-07-20 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiWin.c (tuiStrDup): Remove, replaced by xstrdup.
- (_parseScrollingArgs): Use xstrdup.
- (_tuiScrollForward_command): Call tui_enable() to force TUI mode.
- (_tuiScrollBackward_command): Likewise.
- (_tuiScrollLeft_command): Likewise.
- (_tuiScrollRight_command): Likewise.
- (_tuiSetFocus): Likewise.
- (_tuiSetFocus_command): Likewise.
- (_tuiRefreshAll_command): Likewise.
- (_tuiSetTabWidth_command): Likewise.
- (_tuiSetWinHeight): Likewise.
- (_tuiSetWinHeight_command): Likewise.
- (_tuiXDBsetWinHeight): Likewise.
- (_tui_vSetFocus): Remove.
- (_tui_vSetWinHeight): Remove.
- (_tui_vXDBsetWinHeight): Remove.
-
-2001-07-21 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiCommand.h: Remove unused declarations.
- * tuiCommand.c (tuiDispatchCtrlChar): Fix escape sequences.
- (tuiIncrCommandCharCountBy): Remove.
- (tuiDecrCommandCharCountBy): Remove.
- (tuiSetCommandCharCountTo): Remove.
- (tuiClearCommandCharCount): Remove.
-
-2001-07-20 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiWin.c (_initialize_tuiWin): Always define the tui commands;
- create the tui class help.
- * tuiLayout.c (_initialize_tuiLayout): Always define the tui commands.
- * tuiRegs.c (_initialize_tuiRegs): Likewise.
- * tuiStack.c (_initialize_tuiStack): Likewise.
-
-2001-07-19 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiDisassem.c (tuiVerticalDisassemScroll): Use CORE_ADDR.
- (tuiVerticalDisassemScroll): Likewise.
- (tuiShowDisassemAndUpdateSource): Check for null symtab to
- prevent a crash.
-
-2001-07-18 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiIO.c (_tuiHandleResizeDuringIO): Call tuiRefreshAll.
- (tuiRead, tui_vread): Remove.
-
- * tui.c (va_catch_errors, tuiDo, tuiDoAndReturnToTop): Remove.
- (vcatch_errors, _tui_vDo): Remove.
- * tui.h (tuiDo, tuiDoAndReturnToTop): Remove.
-
- * tuiLayout.c (tuiSetLayout): Remove vcatch_errors.
- (tui_set_layout): Rename of _tuiSetLayoutTo, public.
- (_tuiToggleLayout_command): Merge with _tui_vToggleLayout_command.
- (_tuiToggleSplitLayout_command): Merge with _tui_vToggleSplitLayout_command.
- (_tuiLayout_command): Call tui_set_layout.
-
- * tuiRegs.c (_tuiScrollRegsBackward_command): Call tui_scroll.
- (_tuiScrollRegsForward_command): Likewise.
- (_tuiShowFloat_command): Call _tui_vShowRegisters_commandSupport.
- (_tuiShowGeneral_command): Likewise.
- (_tuiShowSpecial_command): Likewise.
- (_tuiToggleFloatRegs_command): Call tuiToggleFloatRegs.
- * tuiWin.c (tui_scroll): Rename of tui_vScroll, update parameters.
- (_tuiScrollForward_command): Call tui_scroll.
- (_tuiScrollBackward_command): Likewise.
- (_tuiScrollLeft_command): Likewise.
- (_tuiScrollRight_command): Likewise.
- (_tuiSetFocus_command): Call _tuiSetFocus.
- (_tuiRefreshAll_command): Call tuiRefreshAll.
- (_tuiSetWinHeight_command): Call _tuiSetWinHeight.
- (_tuiXDBsetWinHeight_command): Call _tuiXDBsetWinHeight.
- * tuiWin.h (tui_scroll): Rename of tui_vScroll, update parameters.
-
-2001-07-18 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiData.h (TuiLocatorElement): Use CORE_ADDR for address member.
- (TuiLineOrAddress): Likewise.
- * tuiDisassem.c (tuiGetBeginAsmAddress): Use CORE_ADDR to specify
- an address.
- (tuiSetDisassemContent): Likewise.
- (tuiShowDisassem, tuiShowDisassemAndUpdateSource): Likewise.
- * tuiLayout.c (_extractDisplayStartAddr): Likewise.
- (tuiSetLayout): Likewise.
- * tuiSourceWin.c (tuiDisplayMainFunction): Likewise.
- (tuiUpdateSourceWindowsWithAddr): Likewise.
- (tuiUpdateSourceWindowsWithLine): Likewise.
- (tuiSetHasBreakAt): Likewise.
- * tuiStack.c (tuiSetLocatorInfo): Likewise.
- (tuiSwitchFilename): Likewise.
- (tuiUpdateLocatorInfoFromFrame): Likewise.
- (tuiSetLocatorContent): Likewise.
- (tuiShowFrameInfo): Likewise.
- * tuiDisassem.h: Update prototypes to use CORE_ADDR.
- * tuiSourceWin.h: Likewise.
- * tuiStack.h: Likewise.
-
-2001-07-17 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiWin.c: Add missing includes.
- (_makeVisibleWithNewHeight): Fix call to find_line_pc.
- * tuiLayout.c: Add missing includes.
- (_initAndMakeWin): Don't put curses in echo mode.
- (_extractDisplayStartAddr): Fix calls to find_line_pc.
- (_tuiLayout_command): Missing ',' in warning call.
- * tuiSourceWin.c (tuiUpdateSourceWindowsWithLine): Fix calls to
- find_line_pc.
- (tuiSetHasBreakAt): Check for null source file.
-
-2001-07-17 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiWin.c (_tuiSetFocus): Replace subsetCompare with subset_compare.
- * tuiLayout.c (_tuiSetLayoutTo): Likewise.
- * tui.c (_tui_vToggle_command): Likewise.
-
-2001-07-17 Elena Zannoni <ezannoni@redhat.com>
-
- * tui-file.c: Add include of tuiIO.h, for tuiPuts_unfiltered.
-
-2001-07-16 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiRegs.c (tuiDisplayRegistersFrom): Set scrollok to FALSE in
- each register window.
- (tuiCheckRegisterValues): Use REGISTER_RAW_SIZE to obtain the size
- of the register to check.
- (_tuiRegValueHasChanged): Likewise.
- (_tuiRegisterName): Use REGISTER_NAME.
- (tui_restore_gdbout): New function.
- (_tuiRegisterFormat): Use do_registers_info with gdb_stdout redirected
- to a string.
- (START_SPECIAL_REGS): Define.
- (_tuiGetRegisterRawValue): Use get_saved_register.
- (_tuiDisplayRegister): Fix clearing of register window.
-
-2001-07-17 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tui-file.h (fputs_unfiltered_hook): Remove.
- * tui-file.c (tui_file_flush): Remove fputs_unfiltered_hook.
- (tui_file_fputs): Likewise; simplify
-
-2001-07-16 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiStack.c: Add missing includes.
- (tuiShowFrameInfo): Don't crash when there is no symbol table
- associated with the pc.
- * tuiSource.c (_hasBreak): Check for null source file.
- * tuiWin.c (tuiRefreshAll): Check for null winList[type].
- (_tuiSetFocus): Check for null dataWin.
- * tuiGeneralWin.c (refreshAll): Check for null list[type].
-
-2001-07-16 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiDisassem.c (tuiSetDisassemContent): Use tm_print_insn_info
- to disassemble in the curses window.
-
-2001-07-16 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tui.h: Cleanup to avoid inclusion of curses includes.
- (TuiGenWinInfo, TuiGenWinInfoPtr): Move from here.
- * tuiData.h: To here; include curses includes here.
- (setTermHeightTo): Rename of setTermHeight to follow reality.
- (setTermWidthTo): Likewise with setTermWidth.
-
-2001-07-14 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiWin.c, tui.c, tuiCommand.c: Use ansi prototype.
- tuiIO.c, tuiData.c: Likewise.
- tuiDataWin.c, tuiDisassem.c: Likewise.
- tuiGeneralWin.c, tuiLayout.c: Likewise.
- tuiRegs.c, tuiSource.c: Likewise.
- tuiSouceWin.c, tuiStack.c: Likewise.
-
-2001-07-14 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * tuiWin.c, tuiWin.h, tui.c, tui.h, tuiCommand.c: Add FSF copyright.
- tuiCommand.h, tuiIO.c, tuiIO.h, tuiData.h, tuiData.c: Likewise.
- tuiDataWin.c, tuiDataWin.h, tuiDisassem.c, tuiDisassem.h: Likewise.
- tuiGeneralWin.c, tuiGeneralWin.h, tuiLayout.c, tuiLayout.h: Likewise.
- tuiRegs.c, tuiRegs.h, tuiSource.c, tuiSource.h: Likewise.
- tuiSouceWin.c, tuiSourceWin.h, tuiStack.c, tuiStack.h: Likewise.
-
-2001-03-08 Andrew Cagney <ac131313@redhat.com>
-
- * tuiRegs.c: Use NUM_REGS, not ARCH_NUM_REGS.
-
-2001-03-06 Kevin Buettner <kevinb@redhat.com>
-
- * tui-file.h: Update/correct copyright notice.
-
-Wed Feb 7 19:54:27 2001 Andrew Cagney <cagney@redhat.com>
-
- * tui-file.c: Add __FILE__ and __LINE__ parameter to calls to
- internal_error.
-
-2000-12-14 Kevin Buettner <kevinb@redhat.com>
-
- * tui-file.c, tui.c, tuiData.c, tuiLayout.c: Replace occurrences
- of free() with xfree().
-
-2000-06-22 Kevin Buettner <kevinb@redhat.com>
-
- * tuiSourceWin.h: Eliminate use of PARAMS from this file.
-
-2000-06-20 Kevin Buettner <kevinb@redhat.com>
-
- * tuiLayout.c: Eliminate use of PARAMS from this file.
-
-2000-06-17 Kevin Buettner <kevinb@redhat.com>
-
- * tuiIO.c: Eliminate use of PARAMS from this file.
-
-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,
- tuiRegs.c: Update to reflect rename of gdb-file / GDB_FILE to
- ui-file / ``struct ui_file''.
-
-Mon Jan 31 18:12:43 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * tui-file.c (enum streamtype, struct tui_stream, tui_file_new,
- tui_file_delete, tui_fileopen, tui_sfileopen, tui_file_isatty,
- tui_file_rewind, tui_file_put, tui_file_fputs,
- tui_file_get_strbuf, tui_file_adjust_strbuf, tui_file_flush,
- fputs_unfiltered_hook): Move to here from ../utils.c
-
- * tui-file.h, tui-file.c: New files.
-
-Mon Nov 8 17:47:37 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * tuiRegs.c (_tuiRegisterFormat), tuiDisassem.c
- (tuiSetDisassemContent): Replace gdb_file_init_astring with
- tui_sfileopen. Replace gdb_file_get_strbuf with
- tui_file_get_strbuf.
-
-Mon Nov 8 16:54:51 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * tuiRegs.c (_tuiRegisterFormat), tuiDisassem.c
- (tuiSetDisassemContent): Repace gdb_file_deallocate with
- gdb_file_delete. Replace gdb_file_init_astring with tui_sfileopen.
-
-Fri Sep 17 19:34:38 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * tuiSource.c: Include "source.h".
- (open_source_file, find_source_lines): Delete declarations.
-
-1999-01-26 Jason Molenda (jsm@bugshack.cygnus.com)
-
- * tui.h: Include stdarg.h instead of varargs.h if we're on an ISO Cish
- system.
-
-Thu Dec 31 12:08:32 1998 David Taylor <taylor@texas.cygnus.com>
-
- The following changes were made by Jim Blandy <jimb@cygnus.com>,
- Edith Epstein <eepstein@cygnus.com>, Elena Zannoni
- <ezannoni@cygnus.com> Stan Shebs <shebs@cygnus.com>, and David
- Taylor <taylor@cygnus.com>, as part of the project to merge in
- changes originally made by HP; HP did not create ChangeLog
- entries.
-
- * Makefile.in: New file; we're merging HP's changes into GDB, and
- we've moved the TUI files into a subdirectory, so we need a new
- Makefile.
-
- * tui.c:
- #include <term.h>, if we have it, to get declarations for
- the termcap functions on Solaris.
- (tgoto): Add external K&R declaration for this; Solaris doesn't
- bother to actually declare it in their header files.
- (_tuiReset): Ignore the #definition of TIOCGETC if USG is defined;
- we'd rather use the USG mechanisms than the Berkeley mechanisms
- (TIOCGETC is one of the Berkeley terminal control ioctls).
- Apologies if this causes trouble later; this should all be handled
- by autoconf...
- (strcat_to_buf, strcat_to_buf_with_fmt): New functions, moved here
- from ../utils.h.
- (tuiFree): replace safe_free with free.
- (strcat_to_buf): new function, copied from utils.c.
- (tuiInit): Add ignored `argv0' argument, to match the type that
- init_ui_hook expects; updated declaration. Call the
- initialize_tui_files function constructed above. Initialize
- flush_hook to NULL.
- (tuiInitWindows): Call tuiSetLocatorContent, to get the first
- element of the locator window's content allocated. This seems
- wrong, because it must have been initialized somehow in HP's
- sources, and we should do it the same way now. But we do get
- further before it segfaults. [Postscript: HP didn't bother to
- initialize it; they compile
- (va_catch_errors, vcatch_errors): Functions moved here from
- ../utils.c in HP's sources. They're not used anywhere else.
- (xdb_style): Delete this variable, and remove all references to
- it. It's always true.
- (tuiInit, _tui_vDo): References removed.
-
- * tui.h: Add prototypes.
- Don't #include "gendefs.h"; it's only used in the TUI.
- Integrate its contents into this file:
- #include <ansidecl.h> here.
- (Opaque, OpaqueFuncPtr): Typedefs moved to here.
-
- * tuiCommand.c: #include "defs.h", so we get the appropriate
- definition of GDB_FILE.
-
- * tuiData.c
- (freeWindow): replace safe_free with free.
- (tui_version): don't define it here; it's defined in main.c now.
-
- * tuiDisassem.c
- (tuiSetDisassemContent): Call strcat_address_numeric instead of
- strcat_address. Simplify the control structure. Use predefined
- GDB function to print asm inst address. Use GDB_FILE to collect
- output into buffers.
-
- * tuiIO.c
- (tgoto): Add external K&R declaration for this here too.
- (tuiGetc, tuiTermSetup, tuiTermUnsetup): Same.
- (tuiPuts_unfiltered): change FILE to GDB_FILE.
- (tui_tputs): fix prototype for 3rd argument.
-
- * tuiIO.h (tuiPuts_unfiltered): change declaration.
-
- * tuiLayout.c
- (_tuiSetLayoutTo): for displaying registers, hook up the HP code
- that decides which registers to display (i.e. single precision
- float, double precision float, general, special). Previously,
- only handled TUI_GENERAL_REGS. Now that the code is hooked up,
- compiling with -z poses a problem. When the first layout command
- is 'layout regs', dataWin->detail is a NULL pointer, and gdb
- core dumps.
-
- * tuiLayout.c (_tuiSetLayoutTo): replace safe_free with free.
-
- * tuiRegs.c #include "defs.h" earlier, to avoid problems in
- <stdarg.h>. No idea exactly what's conflicting with what, but the
- errors went away...
- (_tuiRegisterFormat): Change so that function creates a GDB_FILE
- object, calls pa_do_strcat_registers_info, copies the register
- info into a buffer, and deallocates the GDB_FILE object. Remove
- some code that is not executed. Also, call to
- pa_do_strcat_registers_info has an additional parameter,
- precision. This code requires some new per-target functions that
- we don't want to merge. Dyke it out, with #ifdef
- TUI_EXTENDED_FORMATTERS.
- (_tuiSetSpecialRegsContent): this function was ifdefed out.
- Hooked this up.
- (_tuiSetGeneralAndSpecialRegsContent): this function was ifdefed
- out. Hooked it up.
- (IS_64BIT): Just define this to be zero; we're not merging in the
- 64-bit support.
- (tuiShowRegisters): Comment out all references to the "special"
- regs; we don't have a distinction between the "special" and
- "non-special" regs in most of our machine descriptions. This code
- is PA-specific in other ways as well, and needs to be redesigned
- to be portable to other processors.
-
- * tuiWin.c: #include <string.h>, to get a declaration for
- strchr.
-
- * tui.c, tuiCommand.c, tuiData.c, tuiDataWin.c, tuiDisassem.c,
- tuiGeneralWin.c, tuiIO.c, tuiLayout.c, tuiRegs.c, tuiSource.c,
- tuiSourceWin.c, tuiStack.c, tuiWin.c: New files (from HP). Changed
- bool to int throughout. Re-indented, GNU style.
-
- * tui.h, tuiCommand.h, tuiData.h, tuiDataWin.h, tuiDisassem.h,
- tuiGeneralWin.h, tuiIO.h, tuiLayout.h, tuiRegs.h, tuiSource.h,
- tuiSourceWin.h, tuiStack.h, tuiWin.h: new files (from HP).
- Changed bool to int throughout.
diff --git a/gdb/tui/tui-file.c b/gdb/tui/tui-file.c
index 1a72d01f856..36fc097029c 100644
--- a/gdb/tui/tui-file.c
+++ b/gdb/tui/tui-file.c
@@ -21,7 +21,7 @@
#include "defs.h"
#include "ui-file.h"
#include "tui/tui-file.h"
-#include "tui/tuiIO.h"
+#include "tui/tui-io.h"
#include "tui.h"
diff --git a/gdb/tui/tui-hooks.c b/gdb/tui/tui-hooks.c
index e00ba857773..f0f2060d87b 100644
--- a/gdb/tui/tui-hooks.c
+++ b/gdb/tui/tui-hooks.c
@@ -39,15 +39,15 @@
#include <unistd.h>
#include <fcntl.h>
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiLayout.h"
-#include "tuiIO.h"
-#include "tuiRegs.h"
-#include "tuiWin.h"
-#include "tuiStack.h"
-#include "tuiDataWin.h"
-#include "tuiSourceWin.h"
+#include "tui/tui.h"
+#include "tui/tui-data.h"
+#include "tui/tui-layout.h"
+#include "tui/tui-io.h"
+#include "tui/tui-regs.h"
+#include "tui/tui-win.h"
+#include "tui/tui-stack.h"
+#include "tui/tui-windata.h"
+#include "tui/tui-winsource.h"
#ifdef HAVE_NCURSES_H
#include <ncurses.h>
diff --git a/gdb/tui/tui-interp.c b/gdb/tui/tui-interp.c
index 986ebb3b133..82b4dcd27fb 100644
--- a/gdb/tui/tui-interp.c
+++ b/gdb/tui/tui-interp.c
@@ -26,11 +26,11 @@
#include "event-loop.h"
#include "ui-out.h"
#include "cli-out.h"
-#include "tui/tuiData.h"
+#include "tui/tui-data.h"
#include "readline/readline.h"
-#include "tui/tuiWin.h"
+#include "tui/tui-win.h"
#include "tui/tui.h"
-#include "tui/tuiIO.h"
+#include "tui/tui-io.h"
/* Set to 1 when the TUI mode must be activated when we first start gdb. */
static int tui_start_enabled = 0;
diff --git a/gdb/tui/tui.c b/gdb/tui/tui.c
index 601a5795e2d..74fd7ae51ea 100644
--- a/gdb/tui/tui.c
+++ b/gdb/tui/tui.c
@@ -37,15 +37,15 @@
#include <setjmp.h>
#include "defs.h"
#include "gdbcmd.h"
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiLayout.h"
-#include "tuiIO.h"
-#include "tuiRegs.h"
-#include "tuiStack.h"
-#include "tuiWin.h"
-#include "tuiSourceWin.h"
-#include "tuiDataWin.h"
+#include "tui/tui.h"
+#include "tui/tui-data.h"
+#include "tui/tui-layout.h"
+#include "tui/tui-io.h"
+#include "tui/tui-regs.h"
+#include "tui/tui-stack.h"
+#include "tui/tui-win.h"
+#include "tui/tui-winsource.h"
+#include "tui/tui-windata.h"
#include "readline/readline.h"
#include "target.h"
#include "frame.h"
@@ -170,7 +170,7 @@ tui_rl_change_windows (int notused1, int notused2)
new_layout = SRC_COMMAND;
break;
}
- tuiSetLayout (new_layout, regs_type);
+ tui_set_layout (new_layout, regs_type);
}
return 0;
}
@@ -205,7 +205,7 @@ tui_rl_delete_other_windows (int notused1, int notused2)
new_layout = DISASSEM_COMMAND;
break;
}
- tuiSetLayout (new_layout, regs_type);
+ tui_set_layout (new_layout, regs_type);
}
return 0;
}
@@ -389,7 +389,7 @@ tui_enable (void)
def_prog_mode ();
tuiShowFrameInfo (0);
- tuiSetLayout (SRC_COMMAND, TUI_UNDEFINED_REGS);
+ tui_set_layout (SRC_COMMAND, TUI_UNDEFINED_REGS);
tuiSetWinFocusTo (srcWin);
keypad (cmdWin->generic.handle, TRUE);
wrefresh (cmdWin->generic.handle);
@@ -563,7 +563,7 @@ tui_show_source (const char *file, int line)
{
struct symtab_and_line cursal = get_current_source_symtab_and_line ();
/* make sure that the source window is displayed */
- tuiAddWinToLayout (SRC_WIN);
+ tui_add_win_to_layout (SRC_WIN);
tuiUpdateSourceWindowsWithLine (cursal.symtab, line);
tuiUpdateLocatorFilename (file);
@@ -572,7 +572,7 @@ tui_show_source (const char *file, int line)
void
tui_show_assembly (CORE_ADDR addr)
{
- tuiAddWinToLayout (DISASSEM_WIN);
+ tui_add_win_to_layout (DISASSEM_WIN);
tuiUpdateSourceWindowsWithAddr (addr);
}
diff --git a/gdb/tui/tui.h b/gdb/tui/tui.h
index c627b865170..1aba29e8bd7 100644
--- a/gdb/tui/tui.h
+++ b/gdb/tui/tui.h
@@ -1,5 +1,8 @@
/* External/Public TUI Header File.
- Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+ Copyright 1998, 1999, 2000, 2001, 2004 Free Software Foundation,
+ Inc.
+
Contributed by Hewlett-Packard Company.
This file is part of GDB.
@@ -53,7 +56,7 @@ Opaque (*OpaqueFuncPtr) (va_list);
extern void strcat_to_buf (char *, int, const char *);
/* Types of error returns */
- typedef enum
+ typedef enum tui_status
{
TUI_SUCCESS,
TUI_FAILURE
@@ -61,7 +64,7 @@ extern void strcat_to_buf (char *, int, const char *);
TuiStatus, *TuiStatusPtr;
/* Types of windows */
- typedef enum
+typedef enum tui_win_type
{
SRC_WIN = 0,
DISASSEM_WIN,
@@ -135,7 +138,7 @@ extern void tui_show_source (const char *file, int line);
extern struct ui_out *tui_out_new (struct ui_file *stream);
/* tuiLayout.c */
-extern TuiStatus tui_set_layout (const char *);
+extern enum tui_status tui_set_layout_for_display_command (const char *name);
/* tuiSourceWin.c */
extern void tuiUpdateAllExecInfos (void);
diff --git a/gdb/tui/tuiCommand.c b/gdb/tui/tuiCommand.c
deleted file mode 100644
index 675b34c5443..00000000000
--- a/gdb/tui/tuiCommand.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* Specific command window processing.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 <ctype.h>
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiWin.h"
-#include "tuiIO.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-
-/*****************************************
-** STATIC LOCAL FUNCTIONS FORWARD DECLS **
-******************************************/
-
-
-
-/*****************************************
-** PUBLIC FUNCTIONS **
-******************************************/
-
-/*
- ** tuiDispatchCtrlChar().
- ** Dispatch the correct tui function based upon the control character.
- */
-unsigned int
-tuiDispatchCtrlChar (unsigned int ch)
-{
- TuiWinInfoPtr winInfo = tuiWinWithFocus ();
- WINDOW *w = cmdWin->generic.handle;
-
- /*
- ** If the command window has the logical focus, or no-one does
- ** assume it is the command window; in this case, pass the
- ** character on through and do nothing here.
- */
- if (winInfo == (TuiWinInfoPtr) NULL || winInfo == cmdWin)
- return ch;
- else
- {
- unsigned int c = 0, chCopy = ch;
- register int i;
- char *term;
-
- /* If this is an xterm, page next/prev keys aren't returned
- ** by keypad as a single char, so we must handle them here.
- ** Seems like a bug in the curses library?
- */
- term = (char *) getenv ("TERM");
- for (i = 0; (term && term[i]); i++)
- term[i] = toupper (term[i]);
- if ((strcmp (term, "XTERM") == 0) && m_isStartSequence (ch))
- {
- unsigned int pageCh = 0, tmpChar;
-
- tmpChar = 0;
- while (!m_isEndSequence (tmpChar))
- {
- tmpChar = (int) wgetch (w);
- if (tmpChar == ERR)
- {
- return ch;
- }
- if (!tmpChar)
- break;
- if (tmpChar == 53)
- pageCh = KEY_PPAGE;
- else if (tmpChar == 54)
- pageCh = KEY_NPAGE;
- else
- {
- return 0;
- }
- }
- chCopy = pageCh;
- }
-
- switch (chCopy)
- {
- case KEY_NPAGE:
- tuiScrollForward (winInfo, 0);
- break;
- case KEY_PPAGE:
- tuiScrollBackward (winInfo, 0);
- break;
- case KEY_DOWN:
- case KEY_SF:
- tuiScrollForward (winInfo, 1);
- break;
- case KEY_UP:
- case KEY_SR:
- tuiScrollBackward (winInfo, 1);
- break;
- case KEY_RIGHT:
- tuiScrollLeft (winInfo, 1);
- break;
- case KEY_LEFT:
- tuiScrollRight (winInfo, 1);
- break;
- case '\f':
- tuiRefreshAll ();
- break;
- default:
- c = chCopy;
- break;
- }
- return c;
- }
-}
diff --git a/gdb/tui/tuiCommand.h b/gdb/tui/tuiCommand.h
deleted file mode 100644
index 7afeb1bb395..00000000000
--- a/gdb/tui/tuiCommand.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Specific command window processing.
- Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 _TUI_COMMAND_H
-#define _TUI_COMMAND_H
-/*
- ** This header file supports
- */
-
-
-/*****************************************
-** TYPE DEFINITIONS **
-******************************************/
-
-
-
-/*****************************************
-** PUBLIC FUNCTION EXTERNAL DECLS **
-******************************************/
-
-extern unsigned int tuiDispatchCtrlChar (unsigned int);
-
-#endif
-/*_TUI_COMMAND_H*/
diff --git a/gdb/tui/tuiData.c b/gdb/tui/tuiData.c
deleted file mode 100644
index 5acc33cc67d..00000000000
--- a/gdb/tui/tuiData.c
+++ /dev/null
@@ -1,1055 +0,0 @@
-/* TUI data manipulation routines.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 "symtab.h"
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiGeneralWin.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-/****************************
-** GLOBAL DECLARATIONS
-****************************/
-TuiWinInfoPtr winList[MAX_MAJOR_WINDOWS];
-
-/***************************
-** Private data
-****************************/
-static TuiLayoutType _currentLayout = UNDEFINED_LAYOUT;
-static int _termHeight, _termWidth;
-static TuiGenWinInfo _locator;
-static TuiGenWinInfo _execInfo[2];
-static TuiWinInfoPtr _srcWinList[2];
-static TuiList _sourceWindows =
-{(OpaqueList) _srcWinList, 0};
-static int _defaultTabLen = DEFAULT_TAB_LEN;
-static TuiWinInfoPtr _winWithFocus = (TuiWinInfoPtr) NULL;
-static TuiLayoutDef _layoutDef =
-{SRC_WIN, /* displayMode */
- FALSE, /* split */
- TUI_UNDEFINED_REGS, /* regsDisplayType */
- TUI_SFLOAT_REGS}; /* floatRegsDisplayType */
-static int _winResized = FALSE;
-
-
-/*********************************
-** Static function forward decls
-**********************************/
-static void freeContent (TuiWinContent, int, TuiWinType);
-static void freeContentElements (TuiWinContent, int, TuiWinType);
-
-
-
-/*********************************
-** PUBLIC FUNCTIONS
-**********************************/
-
-/******************************************
-** ACCESSORS & MUTATORS FOR PRIVATE DATA
-******************************************/
-
-/*
- ** tuiWinResized().
- ** Answer a whether the terminal window has been resized or not
- */
-int
-tuiWinResized (void)
-{
- return _winResized;
-} /* tuiWinResized */
-
-
-/*
- ** tuiSetWinResized().
- ** Set a whether the terminal window has been resized or not
- */
-void
-tuiSetWinResizedTo (int resized)
-{
- _winResized = resized;
-
- return;
-} /* tuiSetWinResizedTo */
-
-
-/*
- ** tuiLayoutDef().
- ** Answer a pointer to the current layout definition
- */
-TuiLayoutDefPtr
-tuiLayoutDef (void)
-{
- return &_layoutDef;
-} /* tuiLayoutDef */
-
-
-/*
- ** tuiWinWithFocus().
- ** Answer the window with the logical focus
- */
-TuiWinInfoPtr
-tuiWinWithFocus (void)
-{
- return _winWithFocus;
-} /* tuiWinWithFocus */
-
-
-/*
- ** tuiSetWinWithFocus().
- ** Set the window that has the logical focus
- */
-void
-tuiSetWinWithFocus (TuiWinInfoPtr winInfo)
-{
- _winWithFocus = winInfo;
-
- return;
-} /* tuiSetWinWithFocus */
-
-
-/*
- ** tuiDefaultTabLen().
- ** Answer the length in chars, of tabs
- */
-int
-tuiDefaultTabLen (void)
-{
- return _defaultTabLen;
-} /* tuiDefaultTabLen */
-
-
-/*
- ** tuiSetDefaultTabLen().
- ** Set the length in chars, of tabs
- */
-void
-tuiSetDefaultTabLen (int len)
-{
- _defaultTabLen = len;
-
- return;
-} /* tuiSetDefaultTabLen */
-
-
-/*
- ** currentSourceWin()
- ** Accessor for the current source window. Usually there is only
- ** one source window (either source or disassembly), but both can
- ** be displayed at the same time.
- */
-TuiListPtr
-sourceWindows (void)
-{
- return &_sourceWindows;
-} /* currentSourceWindows */
-
-
-/*
- ** clearSourceWindows()
- ** Clear the list of source windows. Usually there is only one
- ** source window (either source or disassembly), but both can be
- ** displayed at the same time.
- */
-void
-clearSourceWindows (void)
-{
- _sourceWindows.list[0] = (Opaque) NULL;
- _sourceWindows.list[1] = (Opaque) NULL;
- _sourceWindows.count = 0;
-
- return;
-} /* currentSourceWindows */
-
-
-/*
- ** clearSourceWindowsDetail()
- ** Clear the pertinant detail in the source windows.
- */
-void
-clearSourceWindowsDetail (void)
-{
- int i;
-
- for (i = 0; i < (sourceWindows ())->count; i++)
- clearWinDetail ((TuiWinInfoPtr) (sourceWindows ())->list[i]);
-
- return;
-} /* currentSourceWindows */
-
-
-/*
- ** addSourceWindowToList().
- ** Add a window to the list of source windows. Usually there is
- ** only one source window (either source or disassembly), but
- ** both can be displayed at the same time.
- */
-void
-addToSourceWindows (TuiWinInfoPtr winInfo)
-{
- if (_sourceWindows.count < 2)
- _sourceWindows.list[_sourceWindows.count++] = (Opaque) winInfo;
-
- return;
-} /* addToSourceWindows */
-
-
-/*
- ** clearWinDetail()
- ** Clear the pertinant detail in the windows.
- */
-void
-clearWinDetail (TuiWinInfoPtr winInfo)
-{
- if (m_winPtrNotNull (winInfo))
- {
- switch (winInfo->generic.type)
- {
- case SRC_WIN:
- case DISASSEM_WIN:
- winInfo->detail.sourceInfo.startLineOrAddr.addr = 0;
- winInfo->detail.sourceInfo.horizontalOffset = 0;
- break;
- case CMD_WIN:
- winInfo->detail.commandInfo.curLine =
- winInfo->detail.commandInfo.curch = 0;
- break;
- case DATA_WIN:
- winInfo->detail.dataDisplayInfo.dataContent =
- (TuiWinContent) NULL;
- winInfo->detail.dataDisplayInfo.dataContentCount = 0;
- winInfo->detail.dataDisplayInfo.regsContent =
- (TuiWinContent) NULL;
- winInfo->detail.dataDisplayInfo.regsContentCount = 0;
- winInfo->detail.dataDisplayInfo.regsDisplayType =
- TUI_UNDEFINED_REGS;
- winInfo->detail.dataDisplayInfo.regsColumnCount = 1;
- winInfo->detail.dataDisplayInfo.displayRegs = FALSE;
- break;
- default:
- break;
- }
- }
-
- return;
-} /* clearWinDetail */
-
-
-/*
- ** sourceExecInfoPtr().
- ** Accessor for the source execution info ptr.
- */
-TuiGenWinInfoPtr
-sourceExecInfoWinPtr (void)
-{
- return &_execInfo[0];
-} /* sourceExecInfoWinPtr */
-
-
-/*
- ** disassemExecInfoPtr().
- ** Accessor for the disassem execution info ptr.
- */
-TuiGenWinInfoPtr
-disassemExecInfoWinPtr (void)
-{
- return &_execInfo[1];
-} /* disassemExecInfoWinPtr */
-
-
-/*
- ** locatorWinInfoPtr().
- ** Accessor for the locator win info. Answers a pointer to the
- ** static locator win info struct.
- */
-TuiGenWinInfoPtr
-locatorWinInfoPtr (void)
-{
- return &_locator;
-} /* locatorWinInfoPtr */
-
-
-/*
- ** termHeight().
- ** Accessor for the termHeight
- */
-int
-termHeight (void)
-{
- return _termHeight;
-} /* termHeight */
-
-
-/*
- ** setTermHeightTo().
- ** Mutator for the term height
- */
-void
-setTermHeightTo (int h)
-{
- _termHeight = h;
-
- return;
-} /* setTermHeightTo */
-
-
-/*
- ** termWidth().
- ** Accessor for the termWidth
- */
-int
-termWidth (void)
-{
- return _termWidth;
-} /* termWidth */
-
-
-/*
- ** setTermWidth().
- ** Mutator for the termWidth
- */
-void
-setTermWidthTo (int w)
-{
- _termWidth = w;
-
- return;
-} /* setTermWidthTo */
-
-
-/*
- ** currentLayout().
- ** Accessor for the current layout
- */
-TuiLayoutType
-currentLayout (void)
-{
- return _currentLayout;
-} /* currentLayout */
-
-
-/*
- ** setCurrentLayoutTo().
- ** Mutator for the current layout
- */
-void
-setCurrentLayoutTo (TuiLayoutType newLayout)
-{
- _currentLayout = newLayout;
-
- return;
-} /* setCurrentLayoutTo */
-
-
-/*
- ** setGenWinOrigin().
- ** Set the origin of the window
- */
-void
-setGenWinOrigin (TuiGenWinInfoPtr winInfo, int x, int y)
-{
- winInfo->origin.x = x;
- winInfo->origin.y = y;
-
- return;
-} /* setGenWinOrigin */
-
-
-/*****************************
-** OTHER PUBLIC FUNCTIONS
-*****************************/
-
-
-/*
- ** tuiNextWin().
- ** Answer the next window in the list, cycling back to the top
- ** if necessary
- */
-TuiWinInfoPtr
-tuiNextWin (TuiWinInfoPtr curWin)
-{
- TuiWinType type = curWin->generic.type;
- TuiWinInfoPtr nextWin = (TuiWinInfoPtr) NULL;
-
- if (curWin->generic.type == CMD_WIN)
- type = SRC_WIN;
- else
- type = curWin->generic.type + 1;
- while (type != curWin->generic.type && m_winPtrIsNull (nextWin))
- {
- if (winList[type] && winList[type]->generic.isVisible)
- nextWin = winList[type];
- else
- {
- if (type == CMD_WIN)
- type = SRC_WIN;
- else
- type++;
- }
- }
-
- return nextWin;
-} /* tuiNextWin */
-
-
-/*
- ** tuiPrevWin().
- ** Answer the prev window in the list, cycling back to the bottom
- ** if necessary
- */
-TuiWinInfoPtr
-tuiPrevWin (TuiWinInfoPtr curWin)
-{
- TuiWinType type = curWin->generic.type;
- TuiWinInfoPtr prev = (TuiWinInfoPtr) NULL;
-
- if (curWin->generic.type == SRC_WIN)
- type = CMD_WIN;
- else
- type = curWin->generic.type - 1;
- while (type != curWin->generic.type && m_winPtrIsNull (prev))
- {
- if (winList[type]->generic.isVisible)
- prev = winList[type];
- else
- {
- if (type == SRC_WIN)
- type = CMD_WIN;
- else
- type--;
- }
- }
-
- return prev;
-}
-
-
-/*
- ** partialWinByName().
- ** Answer the window represented by name
- */
-TuiWinInfoPtr
-partialWinByName (char *name)
-{
- TuiWinInfoPtr winInfo = (TuiWinInfoPtr) NULL;
-
- if (name != (char *) NULL)
- {
- int i = 0;
-
- while (i < MAX_MAJOR_WINDOWS && m_winPtrIsNull (winInfo))
- {
- if (winList[i] != 0)
- {
- char *curName = winName (&winList[i]->generic);
- if (strlen (name) <= strlen (curName) &&
- strncmp (name, curName, strlen (name)) == 0)
- winInfo = winList[i];
- }
- i++;
- }
- }
-
- return winInfo;
-} /* partialWinByName */
-
-
-/*
- ** winName().
- ** Answer the name of the window
- */
-char *
-winName (TuiGenWinInfoPtr winInfo)
-{
- char *name = (char *) NULL;
-
- switch (winInfo->type)
- {
- case SRC_WIN:
- name = SRC_NAME;
- break;
- case CMD_WIN:
- name = CMD_NAME;
- break;
- case DISASSEM_WIN:
- name = DISASSEM_NAME;
- break;
- case DATA_WIN:
- name = DATA_NAME;
- break;
- default:
- name = "";
- break;
- }
-
- return name;
-} /* winName */
-
-
-/*
- ** initializeStaticData
- */
-void
-initializeStaticData (void)
-{
- initGenericPart (sourceExecInfoWinPtr ());
- initGenericPart (disassemExecInfoWinPtr ());
- initGenericPart (locatorWinInfoPtr ());
-
- return;
-} /* initializeStaticData */
-
-
-/*
- ** allocGenericWinInfo().
- */
-TuiGenWinInfoPtr
-allocGenericWinInfo (void)
-{
- TuiGenWinInfoPtr win;
-
- if ((win = (TuiGenWinInfoPtr) xmalloc (
- sizeof (TuiGenWinInfoPtr))) != (TuiGenWinInfoPtr) NULL)
- initGenericPart (win);
-
- return win;
-} /* allocGenericWinInfo */
-
-
-/*
- ** initGenericPart().
- */
-void
-initGenericPart (TuiGenWinInfoPtr win)
-{
- win->width =
- win->height =
- win->origin.x =
- win->origin.y =
- win->viewportHeight =
- win->contentSize =
- win->lastVisibleLine = 0;
- win->handle = (WINDOW *) NULL;
- win->content = (OpaquePtr) NULL;
- win->contentInUse =
- win->isVisible = FALSE;
- win->title = 0;
-}
-
-
-/*
- ** initContentElement().
- */
-void
-initContentElement (TuiWinElementPtr element, TuiWinType type)
-{
- element->highlight = FALSE;
- switch (type)
- {
- case SRC_WIN:
- case DISASSEM_WIN:
- element->whichElement.source.line = (char *) NULL;
- element->whichElement.source.lineOrAddr.lineNo = 0;
- element->whichElement.source.isExecPoint = FALSE;
- element->whichElement.source.hasBreak = FALSE;
- break;
- case DATA_WIN:
- initGenericPart (&element->whichElement.dataWindow);
- element->whichElement.dataWindow.type = DATA_ITEM_WIN;
- ((TuiGenWinInfoPtr) & element->whichElement.dataWindow)->content =
- (OpaquePtr) allocContent (1, DATA_ITEM_WIN);
- ((TuiGenWinInfoPtr)
- & element->whichElement.dataWindow)->contentSize = 1;
- break;
- case CMD_WIN:
- element->whichElement.command.line = (char *) NULL;
- break;
- case DATA_ITEM_WIN:
- element->whichElement.data.name = (char *) NULL;
- element->whichElement.data.type = TUI_REGISTER;
- element->whichElement.data.itemNo = UNDEFINED_ITEM;
- element->whichElement.data.value = (Opaque) NULL;
- element->whichElement.data.highlight = FALSE;
- break;
- case LOCATOR_WIN:
- element->whichElement.locator.fileName[0] =
- element->whichElement.locator.procName[0] = (char) 0;
- element->whichElement.locator.lineNo = 0;
- element->whichElement.locator.addr = 0;
- break;
- case EXEC_INFO_WIN:
- memset(element->whichElement.simpleString, ' ',
- sizeof(element->whichElement.simpleString));
- break;
- default:
- break;
- }
- return;
-} /* initContentElement */
-
-/*
- ** initWinInfo().
- */
-void
-initWinInfo (TuiWinInfoPtr winInfo)
-{
- initGenericPart (&winInfo->generic);
- winInfo->canHighlight =
- winInfo->isHighlighted = FALSE;
- switch (winInfo->generic.type)
- {
- case SRC_WIN:
- case DISASSEM_WIN:
- winInfo->detail.sourceInfo.executionInfo = (TuiGenWinInfoPtr) NULL;
- winInfo->detail.sourceInfo.hasLocator = FALSE;
- winInfo->detail.sourceInfo.horizontalOffset = 0;
- winInfo->detail.sourceInfo.startLineOrAddr.addr = 0;
- winInfo->detail.sourceInfo.filename = 0;
- break;
- case DATA_WIN:
- winInfo->detail.dataDisplayInfo.dataContent = (TuiWinContent) NULL;
- winInfo->detail.dataDisplayInfo.dataContentCount = 0;
- winInfo->detail.dataDisplayInfo.regsContent = (TuiWinContent) NULL;
- winInfo->detail.dataDisplayInfo.regsContentCount = 0;
- winInfo->detail.dataDisplayInfo.regsDisplayType =
- TUI_UNDEFINED_REGS;
- winInfo->detail.dataDisplayInfo.regsColumnCount = 1;
- winInfo->detail.dataDisplayInfo.displayRegs = FALSE;
- break;
- case CMD_WIN:
- winInfo->detail.commandInfo.curLine = 0;
- winInfo->detail.commandInfo.curch = 0;
- break;
- default:
- winInfo->detail.opaque = (Opaque) NULL;
- break;
- }
-
- return;
-} /* initWinInfo */
-
-
-/*
- ** allocWinInfo().
- */
-TuiWinInfoPtr
-allocWinInfo (TuiWinType type)
-{
- TuiWinInfoPtr winInfo = (TuiWinInfoPtr) NULL;
-
- winInfo = (TuiWinInfoPtr) xmalloc (sizeof (TuiWinInfo));
- if (m_winPtrNotNull (winInfo))
- {
- winInfo->generic.type = type;
- initWinInfo (winInfo);
- }
-
- return winInfo;
-} /* allocWinInfo */
-
-
-/*
- ** allocContent().
- ** Allocates the content and elements in a block.
- */
-TuiWinContent
-allocContent (int numElements, TuiWinType type)
-{
- TuiWinContent content = (TuiWinContent) NULL;
- char *elementBlockPtr = (char *) NULL;
- int i;
-
- if ((content = (TuiWinContent)
- xmalloc (sizeof (TuiWinElementPtr) * numElements)) != (TuiWinContent) NULL)
- { /*
- ** All windows, except the data window, can allocate the elements
- ** in a chunk. The data window cannot because items can be
- ** added/removed from the data display by the user at any time.
- */
- if (type != DATA_WIN)
- {
- if ((elementBlockPtr = (char *)
- xmalloc (sizeof (TuiWinElement) * numElements)) != (char *) NULL)
- {
- for (i = 0; i < numElements; i++)
- {
- content[i] = (TuiWinElementPtr) elementBlockPtr;
- initContentElement (content[i], type);
- elementBlockPtr += sizeof (TuiWinElement);
- }
- }
- else
- {
- tuiFree ((char *) content);
- content = (TuiWinContent) NULL;
- }
- }
- }
-
- return content;
-} /* allocContent */
-
-
-/*
- ** addContentElements().
- ** Adds the input number of elements to the windows's content. If
- ** no content has been allocated yet, allocContent() is called to
- ** do this. The index of the first element added is returned,
- ** unless there is a memory allocation error, in which case, (-1)
- ** is returned.
- */
-int
-addContentElements (TuiGenWinInfoPtr winInfo, int numElements)
-{
- TuiWinElementPtr elementPtr;
- int i, indexStart;
-
- if (winInfo->content == (OpaquePtr) NULL)
- {
- winInfo->content = (OpaquePtr) allocContent (numElements, winInfo->type);
- indexStart = 0;
- }
- else
- indexStart = winInfo->contentSize;
- if (winInfo->content != (OpaquePtr) NULL)
- {
- for (i = indexStart; (i < numElements + indexStart); i++)
- {
- if ((elementPtr = (TuiWinElementPtr)
- xmalloc (sizeof (TuiWinElement))) != (TuiWinElementPtr) NULL)
- {
- winInfo->content[i] = (Opaque) elementPtr;
- initContentElement (elementPtr, winInfo->type);
- winInfo->contentSize++;
- }
- else /* things must be really hosed now! We ran out of memory!? */
- return (-1);
- }
- }
-
- return indexStart;
-} /* addContentElements */
-
-
-/* Delete all curses windows associated with winInfo, leaving everything
- else intact. */
-void
-tuiDelWindow (TuiWinInfoPtr winInfo)
-{
- TuiGenWinInfoPtr genericWin;
-
- switch (winInfo->generic.type)
- {
- case SRC_WIN:
- case DISASSEM_WIN:
- genericWin = locatorWinInfoPtr ();
- if (genericWin != (TuiGenWinInfoPtr) NULL)
- {
- tuiDelwin (genericWin->handle);
- genericWin->handle = (WINDOW *) NULL;
- genericWin->isVisible = FALSE;
- }
- if (winInfo->detail.sourceInfo.filename)
- {
- xfree (winInfo->detail.sourceInfo.filename);
- winInfo->detail.sourceInfo.filename = 0;
- }
- genericWin = winInfo->detail.sourceInfo.executionInfo;
- if (genericWin != (TuiGenWinInfoPtr) NULL)
- {
- tuiDelwin (genericWin->handle);
- genericWin->handle = (WINDOW *) NULL;
- genericWin->isVisible = FALSE;
- }
- break;
- case DATA_WIN:
- if (winInfo->generic.content != (OpaquePtr) NULL)
- {
- tuiDelDataWindows (winInfo->detail.dataDisplayInfo.regsContent,
- winInfo->detail.dataDisplayInfo.regsContentCount);
- tuiDelDataWindows (winInfo->detail.dataDisplayInfo.dataContent,
- winInfo->detail.dataDisplayInfo.dataContentCount);
- }
- break;
- default:
- break;
- }
- if (winInfo->generic.handle != (WINDOW *) NULL)
- {
- tuiDelwin (winInfo->generic.handle);
- winInfo->generic.handle = (WINDOW *) NULL;
- winInfo->generic.isVisible = FALSE;
- }
-}
-
-
-/*
- ** freeWindow().
- */
-void
-freeWindow (TuiWinInfoPtr winInfo)
-{
- TuiGenWinInfoPtr genericWin;
-
- switch (winInfo->generic.type)
- {
- case SRC_WIN:
- case DISASSEM_WIN:
- genericWin = locatorWinInfoPtr ();
- if (genericWin != (TuiGenWinInfoPtr) NULL)
- {
- tuiDelwin (genericWin->handle);
- genericWin->handle = (WINDOW *) NULL;
- }
- freeWinContent (genericWin);
- if (winInfo->detail.sourceInfo.filename)
- {
- xfree (winInfo->detail.sourceInfo.filename);
- winInfo->detail.sourceInfo.filename = 0;
- }
- genericWin = winInfo->detail.sourceInfo.executionInfo;
- if (genericWin != (TuiGenWinInfoPtr) NULL)
- {
- tuiDelwin (genericWin->handle);
- genericWin->handle = (WINDOW *) NULL;
- freeWinContent (genericWin);
- }
- break;
- case DATA_WIN:
- if (winInfo->generic.content != (OpaquePtr) NULL)
- {
- freeDataContent (
- winInfo->detail.dataDisplayInfo.regsContent,
- winInfo->detail.dataDisplayInfo.regsContentCount);
- winInfo->detail.dataDisplayInfo.regsContent =
- (TuiWinContent) NULL;
- winInfo->detail.dataDisplayInfo.regsContentCount = 0;
- freeDataContent (
- winInfo->detail.dataDisplayInfo.dataContent,
- winInfo->detail.dataDisplayInfo.dataContentCount);
- winInfo->detail.dataDisplayInfo.dataContent =
- (TuiWinContent) NULL;
- winInfo->detail.dataDisplayInfo.dataContentCount = 0;
- winInfo->detail.dataDisplayInfo.regsDisplayType =
- TUI_UNDEFINED_REGS;
- winInfo->detail.dataDisplayInfo.regsColumnCount = 1;
- winInfo->detail.dataDisplayInfo.displayRegs = FALSE;
- winInfo->generic.content = (OpaquePtr) NULL;
- winInfo->generic.contentSize = 0;
- }
- break;
- default:
- break;
- }
- if (winInfo->generic.handle != (WINDOW *) NULL)
- {
- tuiDelwin (winInfo->generic.handle);
- winInfo->generic.handle = (WINDOW *) NULL;
- freeWinContent (&winInfo->generic);
- }
- if (winInfo->generic.title)
- xfree (winInfo->generic.title);
- xfree (winInfo);
-}
-
-
-/*
- ** freeAllSourceWinsContent().
- */
-void
-freeAllSourceWinsContent (void)
-{
- int i;
-
- for (i = 0; i < (sourceWindows ())->count; i++)
- {
- TuiWinInfoPtr winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i];
-
- if (m_winPtrNotNull (winInfo))
- {
- freeWinContent (&(winInfo->generic));
- freeWinContent (winInfo->detail.sourceInfo.executionInfo);
- }
- }
-
- return;
-} /* freeAllSourceWinsContent */
-
-
-/*
- ** freeWinContent().
- */
-void
-freeWinContent (TuiGenWinInfoPtr winInfo)
-{
- if (winInfo->content != (OpaquePtr) NULL)
- {
- freeContent ((TuiWinContent) winInfo->content,
- winInfo->contentSize,
- winInfo->type);
- winInfo->content = (OpaquePtr) NULL;
- }
- winInfo->contentSize = 0;
-
- return;
-} /* freeWinContent */
-
-
-void
-tuiDelDataWindows (TuiWinContent content, int contentSize)
-{
- int i;
-
- /*
- ** Remember that data window content elements are of type TuiGenWinInfoPtr,
- ** each of which whose single element is a data element.
- */
- for (i = 0; i < contentSize; i++)
- {
- TuiGenWinInfoPtr genericWin = &content[i]->whichElement.dataWindow;
-
- if (genericWin != (TuiGenWinInfoPtr) NULL)
- {
- tuiDelwin (genericWin->handle);
- genericWin->handle = (WINDOW *) NULL;
- genericWin->isVisible = FALSE;
- }
- }
-
- return;
-} /* tuiDelDataWindows */
-
-
-void
-freeDataContent (TuiWinContent content, int contentSize)
-{
- int i;
-
- /*
- ** Remember that data window content elements are of type TuiGenWinInfoPtr,
- ** each of which whose single element is a data element.
- */
- for (i = 0; i < contentSize; i++)
- {
- TuiGenWinInfoPtr genericWin = &content[i]->whichElement.dataWindow;
-
- if (genericWin != (TuiGenWinInfoPtr) NULL)
- {
- tuiDelwin (genericWin->handle);
- genericWin->handle = (WINDOW *) NULL;
- freeWinContent (genericWin);
- }
- }
- freeContent (content,
- contentSize,
- DATA_WIN);
-
- return;
-} /* freeDataContent */
-
-
-/**********************************
-** LOCAL STATIC FUNCTIONS **
-**********************************/
-
-
-/*
- ** freeContent().
- */
-static void
-freeContent (TuiWinContent content, int contentSize, TuiWinType winType)
-{
- if (content != (TuiWinContent) NULL)
- {
- freeContentElements (content, contentSize, winType);
- tuiFree ((char *) content);
- }
-
- return;
-} /* freeContent */
-
-
-/*
- ** freeContentElements().
- */
-static void
-freeContentElements (TuiWinContent content, int contentSize, TuiWinType type)
-{
- if (content != (TuiWinContent) NULL)
- {
- int i;
-
- if (type == SRC_WIN || type == DISASSEM_WIN)
- {
- /* free whole source block */
- if (content[0]->whichElement.source.line != (char *) NULL)
- tuiFree (content[0]->whichElement.source.line);
- }
- else
- {
- for (i = 0; i < contentSize; i++)
- {
- TuiWinElementPtr element;
-
- element = content[i];
- if (element != (TuiWinElementPtr) NULL)
- {
- switch (type)
- {
- case DATA_WIN:
- tuiFree ((char *) element);
- break;
- case DATA_ITEM_WIN:
- /*
- ** Note that data elements are not allocated
- ** in a single block, but individually, as needed.
- */
- if (element->whichElement.data.type != TUI_REGISTER)
- tuiFree ((char *)
- element->whichElement.data.name);
- tuiFree ((char *) element->whichElement.data.value);
- tuiFree ((char *) element);
- break;
- case CMD_WIN:
- tuiFree ((char *) element->whichElement.command.line);
- break;
- default:
- break;
- }
- }
- }
- }
- if (type != DATA_WIN && type != DATA_ITEM_WIN)
- tuiFree ((char *) content[0]); /* free the element block */
- }
-
- return;
-} /* freeContentElements */
diff --git a/gdb/tui/tuiData.h b/gdb/tui/tuiData.h
deleted file mode 100644
index 6fcf875b457..00000000000
--- a/gdb/tui/tuiData.h
+++ /dev/null
@@ -1,383 +0,0 @@
-/* TUI data manipulation routines.
- Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 TUI_DATA_H
-#define TUI_DATA_H
-
-#if defined (HAVE_NCURSES_H)
-#include <ncurses.h>
-#elif defined (HAVE_CURSES_H)
-#include <curses.h>
-#endif
-
-/* Generic window information */
- typedef struct _TuiGenWinInfo
- {
- WINDOW *handle; /* window handle */
- TuiWinType type; /* type of window */
- int width; /* window width */
- int height; /* window height */
- TuiPoint origin; /* origin of window */
- OpaquePtr content; /* content of window */
- int contentSize; /* Size of content (# of elements) */
- int contentInUse; /* Can it be used, or is it already used? */
- int viewportHeight; /* viewport height */
- int lastVisibleLine; /* index of last visible line */
- int isVisible; /* whether the window is visible or not */
- char* title; /* Window title to display. */
- }
-TuiGenWinInfo, *TuiGenWinInfoPtr;
-
-/* Constant definitions */
-#define DEFAULT_TAB_LEN 8
-#define NO_SRC_STRING "[ No Source Available ]"
-#define NO_DISASSEM_STRING "[ No Assembly Available ]"
-#define NO_REGS_STRING "[ Register Values Unavailable ]"
-#define NO_DATA_STRING "[ No Data Values Displayed ]"
-#define MAX_CONTENT_COUNT 100
-#define SRC_NAME "SRC"
-#define CMD_NAME "CMD"
-#define DATA_NAME "REGS"
-#define DISASSEM_NAME "ASM"
-#define TUI_NULL_STR ""
-#define DEFAULT_HISTORY_COUNT 25
-#define BOX_WINDOW TRUE
-#define DONT_BOX_WINDOW FALSE
-#define HILITE TRUE
-#define NO_HILITE FALSE
-#define WITH_LOCATOR TRUE
-#define NO_LOCATOR FALSE
-#define EMPTY_SOURCE_PROMPT TRUE
-#define NO_EMPTY_SOURCE_PROMPT FALSE
-#define UNDEFINED_ITEM -1
-#define MIN_WIN_HEIGHT 3
-#define MIN_CMD_WIN_HEIGHT 3
-
-/* Strings to display in the TUI status line. */
-#define PROC_PREFIX "In: "
-#define LINE_PREFIX "Line: "
-#define PC_PREFIX "PC: "
-#define SINGLE_KEY "(SingleKey)"
-
-/* Minimum/Maximum length of some fields displayed in the TUI status line. */
-#define MIN_LINE_WIDTH 4 /* Use at least 4 digits for line numbers. */
-#define MIN_PROC_WIDTH 12
-#define MAX_TARGET_WIDTH 10
-#define MAX_PID_WIDTH 14
-
-#define TUI_FLOAT_REGS_NAME "$FREGS"
-#define TUI_FLOAT_REGS_NAME_LOWER "$fregs"
-#define TUI_GENERAL_REGS_NAME "$GREGS"
-#define TUI_GENERAL_REGS_NAME_LOWER "$gregs"
-#define TUI_SPECIAL_REGS_NAME "$SREGS"
-#define TUI_SPECIAL_REGS_NAME_LOWER "$sregs"
-#define TUI_GENERAL_SPECIAL_REGS_NAME "$REGS"
-#define TUI_GENERAL_SPECIAL_REGS_NAME_LOWER "$regs"
-
-/* Scroll direction enum */
-typedef enum
- {
- FORWARD_SCROLL,
- BACKWARD_SCROLL,
- LEFT_SCROLL,
- RIGHT_SCROLL
- }
-TuiScrollDirection, *TuiScrollDirectionPtr;
-
-
-/* General list struct */
-typedef struct _TuiList
- {
- OpaqueList list;
- int count;
- }
-TuiList, *TuiListPtr;
-
-
-/* The kinds of layouts available */
-typedef enum
- {
- SRC_COMMAND,
- DISASSEM_COMMAND,
- SRC_DISASSEM_COMMAND,
- SRC_DATA_COMMAND,
- DISASSEM_DATA_COMMAND,
- UNDEFINED_LAYOUT
- }
-TuiLayoutType, *TuiLayoutTypePtr;
-
-/* Basic data types that can be displayed in the data window. */
-typedef enum _TuiDataType
- {
- TUI_REGISTER,
- TUI_SCALAR,
- TUI_COMPLEX,
- TUI_STRUCT
- }
-TuiDataType, TuiDataTypePtr;
-
-/* Types of register displays */
-typedef enum _TuiRegisterDisplayType
- {
- TUI_UNDEFINED_REGS,
- TUI_GENERAL_REGS,
- TUI_SFLOAT_REGS,
- TUI_DFLOAT_REGS,
- TUI_SPECIAL_REGS,
- TUI_GENERAL_AND_SPECIAL_REGS
- }
-TuiRegisterDisplayType, *TuiRegisterDisplayTypePtr;
-
-/* Structure describing source line or line address */
-typedef union _TuiLineOrAddress
- {
- int lineNo;
- CORE_ADDR addr;
- }
-TuiLineOrAddress, *TuiLineOrAddressPtr;
-
-/* Current Layout definition */
-typedef struct _TuiLayoutDef
- {
- TuiWinType displayMode;
- int split;
- TuiRegisterDisplayType regsDisplayType;
- TuiRegisterDisplayType floatRegsDisplayType;
- }
-TuiLayoutDef, *TuiLayoutDefPtr;
-
-/* Elements in the Source/Disassembly Window */
-typedef struct _TuiSourceElement
- {
- char *line;
- TuiLineOrAddress lineOrAddr;
- int isExecPoint;
- int hasBreak;
- }
-TuiSourceElement, *TuiSourceElementPtr;
-
-
-/* Elements in the data display window content */
-typedef struct _TuiDataElement
- {
- const char *name;
- int itemNo; /* the register number, or data display number */
- TuiDataType type;
- Opaque value;
- int highlight;
- }
-TuiDataElement, *TuiDataElementPtr;
-
-
-/* Elements in the command window content */
-typedef struct _TuiCommandElement
- {
- char *line;
- }
-TuiCommandElement, *TuiCommandElementPtr;
-
-
-#define MAX_LOCATOR_ELEMENT_LEN 100
-
-/* Elements in the locator window content */
-typedef struct _TuiLocatorElement
- {
- char fileName[MAX_LOCATOR_ELEMENT_LEN];
- char procName[MAX_LOCATOR_ELEMENT_LEN];
- int lineNo;
- CORE_ADDR addr;
- }
-TuiLocatorElement, *TuiLocatorElementPtr;
-
-/* Flags to tell what kind of breakpoint is at current line. */
-#define TUI_BP_ENABLED 0x01
-#define TUI_BP_DISABLED 0x02
-#define TUI_BP_HIT 0x04
-#define TUI_BP_CONDITIONAL 0x08
-#define TUI_BP_HARDWARE 0x10
-
-/* Position of breakpoint markers in the exec info string. */
-#define TUI_BP_HIT_POS 0
-#define TUI_BP_BREAK_POS 1
-#define TUI_EXEC_POS 2
-#define TUI_EXECINFO_SIZE 4
-
-typedef char TuiExecInfoContent[TUI_EXECINFO_SIZE];
-
-/* An content element in a window */
-typedef union
- {
- TuiSourceElement source; /* the source elements */
- TuiGenWinInfo dataWindow; /* data display elements */
- TuiDataElement data; /* elements of dataWindow */
- TuiCommandElement command; /* command elements */
- TuiLocatorElement locator; /* locator elements */
- TuiExecInfoContent simpleString; /* simple char based elements */
- }
-TuiWhichElement, *TuiWhichElementPtr;
-
-typedef struct _TuiWinElement
- {
- int highlight;
- TuiWhichElement whichElement;
- }
-TuiWinElement, *TuiWinElementPtr;
-
-
-/* This describes the content of the window. */
-typedef TuiWinElementPtr *TuiWinContent;
-
-
-/* This struct defines the specific information about a data display window */
-typedef struct _TuiDataInfo
- {
- TuiWinContent dataContent; /* start of data display content */
- int dataContentCount;
- TuiWinContent regsContent; /* start of regs display content */
- int regsContentCount;
- TuiRegisterDisplayType regsDisplayType;
- int regsColumnCount;
- int displayRegs; /* Should regs be displayed at all? */
- }
-TuiDataInfo, *TuiDataInfoPtr;
-
-
-typedef struct _TuiSourceInfo
- {
- int hasLocator; /* Does locator belongs to this window? */
- TuiGenWinInfoPtr executionInfo; /* execution information window */
- int horizontalOffset; /* used for horizontal scroll */
- TuiLineOrAddress startLineOrAddr;
- char* filename;
- }
-TuiSourceInfo, *TuiSourceInfoPtr;
-
-
-typedef struct _TuiCommandInfo
- {
- int curLine; /* The current line position */
- int curch; /* The current cursor position */
- int start_line;
- }
-TuiCommandInfo, *TuiCommandInfoPtr;
-
-
-/* This defines information about each logical window */
-typedef struct _TuiWinInfo
- {
- TuiGenWinInfo generic; /* general window information */
- union
- {
- TuiSourceInfo sourceInfo;
- TuiDataInfo dataDisplayInfo;
- TuiCommandInfo commandInfo;
- Opaque opaque;
- }
- detail;
- int canHighlight; /* Can this window ever be highlighted? */
- int isHighlighted; /* Is this window highlighted? */
- }
-TuiWinInfo, *TuiWinInfoPtr;
-
-/* MACROS (prefixed with m_) */
-
-/* Testing macros */
-#define m_genWinPtrIsNull(winInfo) \
- ((winInfo) == (TuiGenWinInfoPtr)NULL)
-#define m_genWinPtrNotNull(winInfo) \
- ((winInfo) != (TuiGenWinInfoPtr)NULL)
-#define m_winPtrIsNull(winInfo) \
- ((winInfo) == (TuiWinInfoPtr)NULL)
-#define m_winPtrNotNull(winInfo) \
- ((winInfo) != (TuiWinInfoPtr)NULL)
-
-#define m_winIsSourceType(type) \
- (type == SRC_WIN || type == DISASSEM_WIN)
-#define m_winIsAuxillary(winType) \
- (winType > MAX_MAJOR_WINDOWS)
-#define m_hasLocator(winInfo) \
- ( ((winInfo) != (TuiWinInfoPtr)NULL) ? \
- (winInfo->detail.sourceInfo.hasLocator) : \
- FALSE )
-
-#define m_setWinHighlightOn(winInfo) \
- if ((winInfo) != (TuiWinInfoPtr)NULL) \
- (winInfo)->isHighlighted = TRUE
-#define m_setWinHighlightOff(winInfo) \
- if ((winInfo) != (TuiWinInfoPtr)NULL) \
- (winInfo)->isHighlighted = FALSE
-
-
-/* Global Data */
-extern TuiWinInfoPtr winList[MAX_MAJOR_WINDOWS];
-
-/* Macros */
-#define srcWin winList[SRC_WIN]
-#define disassemWin winList[DISASSEM_WIN]
-#define dataWin winList[DATA_WIN]
-#define cmdWin winList[CMD_WIN]
-
-/* Data Manipulation Functions */
-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 freeWinContent (TuiGenWinInfoPtr);
-extern void freeDataContent (TuiWinContent, int);
-extern void freeAllSourceWinsContent (void);
-extern void tuiDelWindow (TuiWinInfoPtr);
-extern void tuiDelDataWindows (TuiWinContent, int);
-extern TuiWinInfoPtr partialWinByName (char *);
-extern char *winName (TuiGenWinInfoPtr);
-extern TuiLayoutType currentLayout (void);
-extern void setCurrentLayoutTo (TuiLayoutType);
-extern int termHeight (void);
-extern void setTermHeightTo (int);
-extern int termWidth (void);
-extern void setTermWidthTo (int);
-extern void setGenWinOrigin (TuiGenWinInfoPtr, int, int);
-extern TuiGenWinInfoPtr locatorWinInfoPtr (void);
-extern TuiGenWinInfoPtr sourceExecInfoWinPtr (void);
-extern TuiGenWinInfoPtr disassemExecInfoWinPtr (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);
-
-extern void addToSourceWindows (TuiWinInfoPtr winInfo);
-
-#endif /* TUI_DATA_H */
diff --git a/gdb/tui/tuiDataWin.c b/gdb/tui/tuiDataWin.c
deleted file mode 100644
index f3bedd2d6b9..00000000000
--- a/gdb/tui/tuiDataWin.c
+++ /dev/null
@@ -1,349 +0,0 @@
-/* Data/register window display.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 "tui.h"
-#include "tuiData.h"
-#include "tuiGeneralWin.h"
-#include "tuiRegs.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-
-/*****************************************
-** STATIC LOCAL FUNCTIONS FORWARD DECLS **
-******************************************/
-
-
-
-/*****************************************
-** PUBLIC FUNCTIONS **
-******************************************/
-
-
-/*
- ** tuiFirstDataItemDisplayed()
- ** Answer the index first element displayed.
- ** If none are displayed, then return (-1).
- */
-int
-tuiFirstDataItemDisplayed (void)
-{
- int elementNo = (-1);
- int i;
-
- for (i = 0; (i < dataWin->generic.contentSize && elementNo < 0); i++)
- {
- TuiGenWinInfoPtr dataItemWin;
-
- dataItemWin = &((TuiWinContent)
- dataWin->generic.content)[i]->whichElement.dataWindow;
- if (dataItemWin->handle != (WINDOW *) NULL && dataItemWin->isVisible)
- elementNo = i;
- }
-
- return elementNo;
-} /* tuiFirstDataItemDisplayed */
-
-
-/*
- ** tuiFirstDataElementNoInLine()
- ** Answer the index of the first element in lineNo. If lineNo is
- ** past the data area (-1) is returned.
- */
-int
-tuiFirstDataElementNoInLine (int lineNo)
-{
- int firstElementNo = (-1);
-
- /*
- ** First see if there is a register on lineNo, and if so, set the
- ** first element number
- */
- if ((firstElementNo = tuiFirstRegElementNoInLine (lineNo)) == -1)
- { /*
- ** Looking at the general data, the 1st element on lineNo
- */
- }
-
- return firstElementNo;
-} /* tuiFirstDataElementNoInLine */
-
-
-/*
- ** tuiDeleteDataContentWindows()
- ** Function to delete all the item windows in the data window.
- ** This is usually done when the data window is scrolled.
- */
-void
-tuiDeleteDataContentWindows (void)
-{
- int i;
- TuiGenWinInfoPtr dataItemWinPtr;
-
- for (i = 0; (i < dataWin->generic.contentSize); i++)
- {
- dataItemWinPtr = &((TuiWinContent)
- dataWin->generic.content)[i]->whichElement.dataWindow;
- tuiDelwin (dataItemWinPtr->handle);
- dataItemWinPtr->handle = (WINDOW *) NULL;
- dataItemWinPtr->isVisible = FALSE;
- }
-
- return;
-} /* tuiDeleteDataContentWindows */
-
-
-void
-tuiEraseDataContent (char *prompt)
-{
- werase (dataWin->generic.handle);
- checkAndDisplayHighlightIfNeeded (dataWin);
- if (prompt != (char *) NULL)
- {
- int halfWidth = (dataWin->generic.width - 2) / 2;
- int xPos;
-
- if (strlen (prompt) >= halfWidth)
- xPos = 1;
- else
- xPos = halfWidth - strlen (prompt);
- mvwaddstr (dataWin->generic.handle,
- (dataWin->generic.height / 2),
- xPos,
- prompt);
- }
- wrefresh (dataWin->generic.handle);
-
- return;
-} /* tuiEraseDataContent */
-
-
-/*
- ** tuiDisplayAllData().
- ** This function displays the data that is in the data window's
- ** content. It does not set the content.
- */
-void
-tuiDisplayAllData (void)
-{
- if (dataWin->generic.contentSize <= 0)
- tuiEraseDataContent (NO_DATA_STRING);
- else
- {
- tuiEraseDataContent ((char *) NULL);
- tuiDeleteDataContentWindows ();
- checkAndDisplayHighlightIfNeeded (dataWin);
- tuiDisplayRegistersFrom (0);
- /*
- ** Then display the other data
- */
- if (dataWin->detail.dataDisplayInfo.dataContent !=
- (TuiWinContent) NULL &&
- dataWin->detail.dataDisplayInfo.dataContentCount > 0)
- {
- }
- }
- return;
-} /* tuiDisplayAllData */
-
-
-/*
- ** tuiDisplayDataFromLine()
- ** Function to display the data starting at line, lineNo, in the
- ** data window.
- */
-void
-tuiDisplayDataFromLine (int lineNo)
-{
- int _lineNo = lineNo;
-
- if (lineNo < 0)
- _lineNo = 0;
-
- checkAndDisplayHighlightIfNeeded (dataWin);
-
- /* there is no general data, force regs to display (if there are any) */
- if (dataWin->detail.dataDisplayInfo.dataContentCount <= 0)
- tuiDisplayRegistersFromLine (_lineNo, TRUE);
- else
- {
- int elementNo, startLineNo;
- int regsLastLine = tuiLastRegsLineNo ();
-
-
- /* display regs if we can */
- if (tuiDisplayRegistersFromLine (_lineNo, FALSE) < 0)
- { /*
- ** _lineNo is past the regs display, so calc where the
- ** start data element is
- */
- if (regsLastLine < _lineNo)
- { /* figure out how many lines each element is to obtain
- the start elementNo */
- }
- }
- else
- { /*
- ** calculate the starting element of the data display, given
- ** regsLastLine and how many lines each element is, up to
- ** _lineNo
- */
- }
- /* Now display the data , starting at elementNo */
- }
-
- return;
-} /* tuiDisplayDataFromLine */
-
-
-/*
- ** tuiDisplayDataFrom()
- ** Display data starting at element elementNo
- */
-void
-tuiDisplayDataFrom (int elementNo, int reuseWindows)
-{
- int firstLine = (-1);
-
- if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
- firstLine = tuiLineFromRegElementNo (elementNo);
- else
- { /* calculate the firstLine from the element number */
- }
-
- if (firstLine >= 0)
- {
- tuiEraseDataContent ((char *) NULL);
- if (!reuseWindows)
- tuiDeleteDataContentWindows ();
- tuiDisplayDataFromLine (firstLine);
- }
-
- return;
-} /* tuiDisplayDataFrom */
-
-
-/*
- ** tuiRefreshDataWin()
- ** Function to redisplay the contents of the data window.
- */
-void
-tuiRefreshDataWin (void)
-{
- tuiEraseDataContent ((char *) NULL);
- if (dataWin->generic.contentSize > 0)
- {
- int firstElement = tuiFirstDataItemDisplayed ();
-
- if (firstElement >= 0) /* re-use existing windows */
- tuiDisplayDataFrom (firstElement, TRUE);
- }
-
- return;
-} /* tuiRefreshDataWin */
-
-
-/*
- ** tuiCheckDataValues().
- ** Function to check the data values and hilite any that have changed
- */
-void
-tuiCheckDataValues (struct frame_info *frame)
-{
- tuiCheckRegisterValues (frame);
-
- /* Now check any other data values that there are */
- if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
- {
- int i;
-
- for (i = 0; dataWin->detail.dataDisplayInfo.dataContentCount; i++)
- {
-#ifdef LATER
- TuiDataElementPtr dataElementPtr;
- TuiGenWinInfoPtr dataItemWinPtr;
- Opaque newValue;
-
- dataItemPtr = &dataWin->detail.dataDisplayInfo.
- dataContent[i]->whichElement.dataWindow;
- dataElementPtr = &((TuiWinContent)
- dataItemWinPtr->content)[0]->whichElement.data;
- if value
- has changed (dataElementPtr, frame, &newValue)
- {
- dataElementPtr->value = newValue;
- update the display with the new value, hiliting it.
- }
-#endif
- }
- }
-} /* tuiCheckDataValues */
-
-
-/*
- ** tuiVerticalDataScroll()
- ** Scroll the data window vertically forward or backward.
- */
-void
-tuiVerticalDataScroll (TuiScrollDirection scrollDirection, int numToScroll)
-{
- int firstElementNo;
- int firstLine = (-1);
-
- firstElementNo = tuiFirstDataItemDisplayed ();
- if (firstElementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
- firstLine = tuiLineFromRegElementNo (firstElementNo);
- else
- { /* calculate the first line from the element number which is in
- ** the general data content
- */
- }
-
- if (firstLine >= 0)
- {
- int lastElementNo, lastLine;
-
- if (scrollDirection == FORWARD_SCROLL)
- firstLine += numToScroll;
- else
- firstLine -= numToScroll;
- tuiEraseDataContent ((char *) NULL);
- tuiDeleteDataContentWindows ();
- tuiDisplayDataFromLine (firstLine);
- }
-
- return;
-} /* tuiVerticalDataScroll */
-
-
-/*****************************************
-** STATIC LOCAL FUNCTIONS **
-******************************************/
diff --git a/gdb/tui/tuiDataWin.h b/gdb/tui/tuiDataWin.h
deleted file mode 100644
index 0b1e700f1bb..00000000000
--- a/gdb/tui/tuiDataWin.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Data/register window display.
- Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 _TUI_DATAWIN_H
-#define _TUI_DATAWIN_H
-
-
-/*****************************************
-** TYPE DEFINITIONS **
-******************************************/
-
-
-
-/*****************************************
-** PUBLIC FUNCTION EXTERNAL DECLS **
-******************************************/
-extern void tuiEraseDataContent (char *);
-extern void tuiDisplayAllData (void);
-extern void tuiCheckDataValues (struct frame_info *);
-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
deleted file mode 100644
index e36c5df521b..00000000000
--- a/gdb/tui/tuiDisassem.c
+++ /dev/null
@@ -1,415 +0,0 @@
-/* Disassembly display.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 "symtab.h"
-#include "breakpoint.h"
-#include "frame.h"
-#include "value.h"
-#include "source.h"
-#include "disasm.h"
-
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiWin.h"
-#include "tuiLayout.h"
-#include "tuiSourceWin.h"
-#include "tuiStack.h"
-#include "tui-file.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-struct tui_asm_line
-{
- CORE_ADDR addr;
- char* addr_string;
- char* insn;
-};
-
-/* Function to set the disassembly window's content.
- Disassemble count lines starting at pc.
- Return address of the count'th instruction after pc. */
-static CORE_ADDR
-tui_disassemble (struct tui_asm_line* lines, CORE_ADDR pc, int count)
-{
- struct ui_file *gdb_dis_out;
-
- /* now init the ui_file structure */
- gdb_dis_out = tui_sfileopen (256);
-
- /* Now construct each line */
- for (; count > 0; count--, lines++)
- {
- if (lines->addr_string)
- xfree (lines->addr_string);
- if (lines->insn)
- xfree (lines->insn);
-
- print_address (pc, gdb_dis_out);
- lines->addr = pc;
- lines->addr_string = xstrdup (tui_file_get_strbuf (gdb_dis_out));
-
- ui_file_rewind (gdb_dis_out);
-
- pc = pc + gdb_print_insn (pc, gdb_dis_out);
-
- lines->insn = xstrdup (tui_file_get_strbuf (gdb_dis_out));
-
- /* reset the buffer to empty */
- ui_file_rewind (gdb_dis_out);
- }
- ui_file_delete (gdb_dis_out);
- return pc;
-}
-
-/* Find the disassembly address that corresponds to FROM lines
- above or below the PC. Variable sized instructions are taken
- into account by the algorithm. */
-static CORE_ADDR
-tui_find_disassembly_address (CORE_ADDR pc, int from)
-{
- register CORE_ADDR newLow;
- int maxLines;
- int i;
- struct tui_asm_line* lines;
-
- maxLines = (from > 0) ? from : - from;
- if (maxLines <= 1)
- return pc;
-
- lines = (struct tui_asm_line*) alloca (sizeof (struct tui_asm_line)
- * maxLines);
- memset (lines, 0, sizeof (struct tui_asm_line) * maxLines);
-
- newLow = pc;
- if (from > 0)
- {
- tui_disassemble (lines, pc, maxLines);
- newLow = lines[maxLines - 1].addr;
- }
- else
- {
- CORE_ADDR last_addr;
- int pos;
- struct minimal_symbol* msymbol;
-
- /* Find backward an address which is a symbol
- and for which disassembling from that address will fill
- completely the window. */
- pos = maxLines - 1;
- do {
- newLow -= 1 * maxLines;
- msymbol = lookup_minimal_symbol_by_pc_section (newLow, 0);
-
- if (msymbol)
- newLow = SYMBOL_VALUE_ADDRESS (msymbol);
- else
- newLow += 1 * maxLines;
-
- tui_disassemble (lines, newLow, maxLines);
- last_addr = lines[pos].addr;
- } while (last_addr > pc && msymbol);
-
- /* Scan forward disassembling one instruction at a time
- until the last visible instruction of the window
- matches the pc. We keep the disassembled instructions
- in the 'lines' window and shift it downward (increasing
- its addresses). */
- if (last_addr < pc)
- do
- {
- CORE_ADDR next_addr;
-
- pos++;
- if (pos >= maxLines)
- pos = 0;
-
- next_addr = tui_disassemble (&lines[pos], last_addr, 1);
-
- /* If there are some problems while disassembling exit. */
- if (next_addr <= last_addr)
- break;
- last_addr = next_addr;
- } while (last_addr <= pc);
- pos++;
- if (pos >= maxLines)
- pos = 0;
- newLow = lines[pos].addr;
- }
- for (i = 0; i < maxLines; i++)
- {
- xfree (lines[i].addr_string);
- xfree (lines[i].insn);
- }
- return newLow;
-}
-
-/* Function to set the disassembly window's content. */
-TuiStatus
-tuiSetDisassemContent (CORE_ADDR pc)
-{
- TuiStatus ret = TUI_FAILURE;
- register int i;
- register int offset = disassemWin->detail.sourceInfo.horizontalOffset;
- register int lineWidth, maxLines;
- CORE_ADDR cur_pc;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
- int tab_len = tuiDefaultTabLen ();
- struct tui_asm_line* lines;
- int insn_pos;
- int addr_size, max_size;
- char* line;
-
- if (pc == 0)
- return TUI_FAILURE;
-
- ret = tuiAllocSourceBuffer (disassemWin);
- if (ret != TUI_SUCCESS)
- return ret;
-
- disassemWin->detail.sourceInfo.startLineOrAddr.addr = pc;
- cur_pc = (CORE_ADDR)
- (((TuiWinElementPtr) locator->content[0])->whichElement.locator.addr);
-
- maxLines = disassemWin->generic.height - 2; /* account for hilite */
-
- /* Get temporary table that will hold all strings (addr & insn). */
- lines = (struct tui_asm_line*) alloca (sizeof (struct tui_asm_line)
- * maxLines);
- memset (lines, 0, sizeof (struct tui_asm_line) * maxLines);
-
- lineWidth = disassemWin->generic.width - 1;
-
- tui_disassemble (lines, pc, maxLines);
-
- /* See what is the maximum length of an address and of a line. */
- addr_size = 0;
- max_size = 0;
- for (i = 0; i < maxLines; i++)
- {
- size_t len = strlen (lines[i].addr_string);
- if (len > addr_size)
- addr_size = len;
-
- len = strlen (lines[i].insn) + tab_len;
- if (len > max_size)
- max_size = len;
- }
- max_size += addr_size + tab_len;
-
- /* Allocate memory to create each line. */
- line = (char*) alloca (max_size);
- insn_pos = (1 + (addr_size / tab_len)) * tab_len;
-
- /* Now construct each line */
- for (i = 0; i < maxLines; i++)
- {
- TuiWinElementPtr element;
- TuiSourceElement* src;
- int curLen;
-
- element = (TuiWinElementPtr) disassemWin->generic.content[i];
- src = &element->whichElement.source;
- strcpy (line, lines[i].addr_string);
- curLen = strlen (line);
-
- /* Add spaces to make the instructions start on the same column */
- while (curLen < insn_pos)
- {
- strcat (line, " ");
- curLen++;
- }
-
- strcat (line, lines[i].insn);
-
- /* Now copy the line taking the offset into account */
- if (strlen (line) > offset)
- strcpy (src->line, &line[offset]);
- else
- src->line[0] = '\0';
-
- src->lineOrAddr.addr = lines[i].addr;
- src->isExecPoint = lines[i].addr == cur_pc;
-
- /* See whether there is a breakpoint installed. */
- src->hasBreak = (!src->isExecPoint
- && breakpoint_here_p (pc) != no_breakpoint_here);
-
- xfree (lines[i].addr_string);
- xfree (lines[i].insn);
- }
- disassemWin->generic.contentSize = i;
- return TUI_SUCCESS;
-}
-
-
-/*
- ** tuiShowDisassem().
- ** Function to display the disassembly window with disassembled code.
- */
-void
-tuiShowDisassem (CORE_ADDR startAddr)
-{
- struct symtab *s = find_pc_symtab (startAddr);
- TuiWinInfoPtr winWithFocus = tuiWinWithFocus ();
- TuiLineOrAddress val;
-
- val.addr = startAddr;
- tuiAddWinToLayout (DISASSEM_WIN);
- tuiUpdateSourceWindow (disassemWin, s, val, FALSE);
- /*
- ** if the focus was in the src win, put it in the asm win, if the
- ** source view isn't split
- */
- if (currentLayout () != SRC_DISASSEM_COMMAND && winWithFocus == srcWin)
- tuiSetWinFocusTo (disassemWin);
-
- return;
-} /* tuiShowDisassem */
-
-
-/*
- ** tuiShowDisassemAndUpdateSource().
- ** Function to display the disassembly window.
- */
-void
-tuiShowDisassemAndUpdateSource (CORE_ADDR startAddr)
-{
- struct symtab_and_line sal;
-
- tuiShowDisassem (startAddr);
- if (currentLayout () == SRC_DISASSEM_COMMAND)
- {
- TuiLineOrAddress val;
-
- /*
- ** Update what is in the source window if it is displayed too,
- ** note that it follows what is in the disassembly window and visa-versa
- */
- sal = find_pc_line (startAddr, 0);
- val.lineNo = sal.line;
- tuiUpdateSourceWindow (srcWin, sal.symtab, val, TRUE);
- if (sal.symtab)
- {
- set_current_source_symtab_and_line (&sal);
- tuiUpdateLocatorFilename (sal.symtab->filename);
- }
- else
- tuiUpdateLocatorFilename ("?");
- }
-
- return;
-} /* tuiShowDisassemAndUpdateSource */
-
-/*
- ** tuiGetBeginAsmAddress().
- */
-CORE_ADDR
-tuiGetBeginAsmAddress (void)
-{
- TuiGenWinInfoPtr locator;
- TuiLocatorElementPtr element;
- CORE_ADDR addr;
-
- locator = locatorWinInfoPtr ();
- element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator;
-
- if (element->addr == 0)
- {
- struct minimal_symbol *main_symbol;
-
- /* Find address of the start of program.
- Note: this should be language specific. */
- main_symbol = lookup_minimal_symbol ("main", NULL, NULL);
- if (main_symbol == 0)
- main_symbol = lookup_minimal_symbol ("MAIN", NULL, NULL);
- if (main_symbol == 0)
- main_symbol = lookup_minimal_symbol ("_start", NULL, NULL);
- if (main_symbol)
- addr = SYMBOL_VALUE_ADDRESS (main_symbol);
- else
- addr = 0;
- }
- else /* the target is executing */
- addr = element->addr;
-
- return addr;
-} /* tuiGetBeginAsmAddress */
-
-/* Determine what the low address will be to display in the TUI's
- disassembly window. This may or may not be the same as the
- low address input. */
-CORE_ADDR
-tuiGetLowDisassemblyAddress (CORE_ADDR low, CORE_ADDR pc)
-{
- int pos;
-
- /* Determine where to start the disassembly so that the pc is about in the
- middle of the viewport. */
- pos = tuiDefaultWinViewportHeight (DISASSEM_WIN, DISASSEM_COMMAND) / 2;
- pc = tui_find_disassembly_address (pc, -pos);
-
- if (pc < low)
- pc = low;
- return pc;
-}
-
-/*
- ** tuiVerticalDisassemScroll().
- ** Scroll the disassembly forward or backward vertically
- */
-void
-tuiVerticalDisassemScroll (TuiScrollDirection scrollDirection,
- int numToScroll)
-{
- if (disassemWin->generic.content != (OpaquePtr) NULL)
- {
- CORE_ADDR pc;
- TuiWinContent content;
- struct symtab *s;
- TuiLineOrAddress val;
- int maxLines, dir;
- struct symtab_and_line cursal = get_current_source_symtab_and_line ();
-
- content = (TuiWinContent) disassemWin->generic.content;
- if (cursal.symtab == (struct symtab *) NULL)
- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
- else
- s = cursal.symtab;
-
- /* account for hilite */
- maxLines = disassemWin->generic.height - 2;
- pc = content[0]->whichElement.source.lineOrAddr.addr;
- dir = (scrollDirection == FORWARD_SCROLL) ? maxLines : - maxLines;
-
- val.addr = tui_find_disassembly_address (pc, dir);
- tuiUpdateSourceWindowAsIs (disassemWin, s, val, FALSE);
- }
-}
diff --git a/gdb/tui/tuiDisassem.h b/gdb/tui/tuiDisassem.h
deleted file mode 100644
index 67284259bf0..00000000000
--- a/gdb/tui/tuiDisassem.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Disassembly display.
- Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 _TUI_DISASSEM_H
-#define _TUI_DISASSEM_H
-
-/*****************************************
-** TYPE DEFINITIONS **
-******************************************/
-
-
-
-/*****************************************
-** PUBLIC FUNCTION EXTERNAL DECLS **
-******************************************/
-extern TuiStatus tuiSetDisassemContent (CORE_ADDR);
-extern void tuiShowDisassem (CORE_ADDR);
-extern void tuiShowDisassemAndUpdateSource (CORE_ADDR);
-extern void tuiVerticalDisassemScroll (TuiScrollDirection, int);
-extern CORE_ADDR tuiGetBeginAsmAddress (void);
-
-#endif
-/*_TUI_DISASSEM_H*/
diff --git a/gdb/tui/tuiGeneralWin.c b/gdb/tui/tuiGeneralWin.c
deleted file mode 100644
index 42faf756284..00000000000
--- a/gdb/tui/tuiGeneralWin.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/* General window behavior.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 "tui.h"
-#include "tuiData.h"
-#include "tuiGeneralWin.h"
-#include "tuiWin.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-/***********************
-** PUBLIC FUNCTIONS
-***********************/
-/*
- ** tuiRefreshWin()
- ** Refresh the window
- */
-void
-tuiRefreshWin (TuiGenWinInfoPtr winInfo)
-{
- if (winInfo->type == DATA_WIN && winInfo->contentSize > 0)
- {
- int i;
-
- for (i = 0; (i < winInfo->contentSize); i++)
- {
- TuiGenWinInfoPtr dataItemWinPtr;
-
- dataItemWinPtr = &((TuiWinContent)
- winInfo->content)[i]->whichElement.dataWindow;
- if (m_genWinPtrNotNull (dataItemWinPtr) &&
- dataItemWinPtr->handle != (WINDOW *) NULL)
- wrefresh (dataItemWinPtr->handle);
- }
- }
- else if (winInfo->type == CMD_WIN)
- {
- /* Do nothing */
- }
- else
- {
- if (winInfo->handle != (WINDOW *) NULL)
- wrefresh (winInfo->handle);
- }
-
- return;
-} /* tuiRefreshWin */
-
-
-/*
- ** tuiDelwin()
- ** Function to delete the curses window, checking for null
- */
-void
-tuiDelwin (WINDOW * window)
-{
- if (window != (WINDOW *) NULL)
- delwin (window);
-
- return;
-} /* tuiDelwin */
-
-
-/* Draw a border arround the window. */
-void
-boxWin (TuiGenWinInfoPtr winInfo, int highlightFlag)
-{
- if (winInfo && winInfo->handle)
- {
- WINDOW *win;
- int attrs;
-
- win = winInfo->handle;
- if (highlightFlag == HILITE)
- attrs = tui_active_border_attrs;
- else
- attrs = tui_border_attrs;
-
- wattron (win, attrs);
- wborder (win, tui_border_vline, tui_border_vline,
- tui_border_hline, tui_border_hline,
- tui_border_ulcorner, tui_border_urcorner,
- tui_border_llcorner, tui_border_lrcorner);
- if (winInfo->title)
- mvwaddstr (win, 0, 3, winInfo->title);
- wattroff (win, attrs);
- }
-}
-
-
-/*
- ** unhighlightWin().
- */
-void
-unhighlightWin (TuiWinInfoPtr winInfo)
-{
- if (m_winPtrNotNull (winInfo) && winInfo->generic.handle != (WINDOW *) NULL)
- {
- boxWin ((TuiGenWinInfoPtr) winInfo, NO_HILITE);
- wrefresh (winInfo->generic.handle);
- m_setWinHighlightOff (winInfo);
- }
-} /* unhighlightWin */
-
-
-/*
- ** highlightWin().
- */
-void
-highlightWin (TuiWinInfoPtr winInfo)
-{
- if (m_winPtrNotNull (winInfo) &&
- winInfo->canHighlight && winInfo->generic.handle != (WINDOW *) NULL)
- {
- boxWin ((TuiGenWinInfoPtr) winInfo, HILITE);
- wrefresh (winInfo->generic.handle);
- m_setWinHighlightOn (winInfo);
- }
-} /* highlightWin */
-
-
-/*
- ** checkAndDisplayHighlightIfNecessay
- */
-void
-checkAndDisplayHighlightIfNeeded (TuiWinInfoPtr winInfo)
-{
- if (m_winPtrNotNull (winInfo) && winInfo->generic.type != CMD_WIN)
- {
- if (winInfo->isHighlighted)
- highlightWin (winInfo);
- else
- unhighlightWin (winInfo);
-
- }
- return;
-} /* checkAndDisplayHighlightIfNeeded */
-
-
-/*
- ** makeWindow().
- */
-void
-makeWindow (TuiGenWinInfoPtr winInfo, int boxIt)
-{
- WINDOW *handle;
-
- handle = newwin (winInfo->height,
- winInfo->width,
- winInfo->origin.y,
- winInfo->origin.x);
- winInfo->handle = handle;
- if (handle != (WINDOW *) NULL)
- {
- if (boxIt == BOX_WINDOW)
- boxWin (winInfo, NO_HILITE);
- winInfo->isVisible = TRUE;
- scrollok (handle, TRUE);
- }
-}
-
-
-/*
- ** makeVisible().
- ** We can't really make windows visible, or invisible. So we
- ** have to delete the entire window when making it visible,
- ** and create it again when making it visible.
- */
-void
-makeVisible (TuiGenWinInfoPtr winInfo, int visible)
-{
- /* Don't tear down/recreate command window */
- if (winInfo->type == CMD_WIN)
- return;
-
- if (visible)
- {
- if (!winInfo->isVisible)
- {
- makeWindow (
- winInfo,
- (winInfo->type != CMD_WIN && !m_winIsAuxillary (winInfo->type)));
- winInfo->isVisible = TRUE;
- }
- }
- else if (!visible &&
- winInfo->isVisible && winInfo->handle != (WINDOW *) NULL)
- {
- winInfo->isVisible = FALSE;
- tuiDelwin (winInfo->handle);
- winInfo->handle = (WINDOW *) NULL;
- }
-
- return;
-} /* makeVisible */
-
-
-/*
- ** makeAllVisible().
- ** Makes all windows invisible (except the command and locator windows)
- */
-void
-makeAllVisible (int visible)
-{
- int i;
-
- for (i = 0; i < MAX_MAJOR_WINDOWS; i++)
- {
- if (m_winPtrNotNull (winList[i]) &&
- ((winList[i])->generic.type) != CMD_WIN)
- {
- if (m_winIsSourceType ((winList[i])->generic.type))
- makeVisible ((winList[i])->detail.sourceInfo.executionInfo,
- visible);
- makeVisible ((TuiGenWinInfoPtr) winList[i], visible);
- }
- }
-
- return;
-} /* makeAllVisible */
-
-/*
- ** refreshAll().
- ** Function to refresh all the windows currently displayed
- */
-void
-refreshAll (TuiWinInfoPtr * list)
-{
- TuiWinType type;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
-
- for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++)
- {
- if (list[type] && list[type]->generic.isVisible)
- {
- if (type == SRC_WIN || type == DISASSEM_WIN)
- {
- touchwin (list[type]->detail.sourceInfo.executionInfo->handle);
- tuiRefreshWin (list[type]->detail.sourceInfo.executionInfo);
- }
- touchwin (list[type]->generic.handle);
- tuiRefreshWin (&list[type]->generic);
- }
- }
- if (locator->isVisible)
- {
- touchwin (locator->handle);
- tuiRefreshWin (locator);
- }
-
- return;
-} /* refreshAll */
-
-
-/*********************************
-** Local Static Functions
-*********************************/
diff --git a/gdb/tui/tuiGeneralWin.h b/gdb/tui/tuiGeneralWin.h
deleted file mode 100644
index 42d1ce46add..00000000000
--- a/gdb/tui/tuiGeneralWin.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* General window behavior.
- Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 TUI_GENERAL_WIN_H
-#define TUI_GENERAL_WIN_H
-
-/*
- ** Functions
- */
-extern void unhighlightWin (TuiWinInfoPtr);
-extern void makeVisible (TuiGenWinInfoPtr, int);
-extern void makeAllVisible (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
- */
-#define m_beVisible(winInfo) makeVisible((TuiGenWinInfoPtr)(winInfo), TRUE)
-#define m_beInvisible(winInfo) \
- makeVisible((TuiGenWinInfoPtr)(winInfo), FALSE)
-#define m_allBeVisible() makeAllVisible(TRUE)
-#define m_allBeInvisible() makeAllVisible(FALSE)
-
-#endif /*TUI_GENERAL_WIN_H */
diff --git a/gdb/tui/tuiIO.c b/gdb/tui/tuiIO.c
deleted file mode 100644
index 1a8bbc2037a..00000000000
--- a/gdb/tui/tuiIO.c
+++ /dev/null
@@ -1,694 +0,0 @@
-/* TUI support I/O functions.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 "terminal.h"
-#include "target.h"
-#include "event-loop.h"
-#include "event-top.h"
-#include "command.h"
-#include "top.h"
-#include "readline/readline.h"
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiIO.h"
-#include "tuiCommand.h"
-#include "tuiWin.h"
-#include "tuiGeneralWin.h"
-#include "tui-file.h"
-#include "ui-out.h"
-#include "cli-out.h"
-#include <fcntl.h>
-#include <signal.h>
-#include <stdio.h>
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-/* Use definition from readline 4.3. */
-#undef CTRL_CHAR
-#define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0))
-
-/* This file controls the IO interactions between gdb and curses.
- When the TUI is enabled, gdb has two modes a curses and a standard
- mode.
-
- In curses mode, the gdb outputs are made in a curses command window.
- For this, the gdb_stdout and gdb_stderr are redirected to the specific
- ui_file implemented by TUI. The output is handled by tui_puts().
- The input is also controlled by curses with tui_getc(). The readline
- library uses this function to get its input. Several readline hooks
- are installed to redirect readline output to the TUI (see also the
- note below).
-
- In normal mode, the gdb outputs are restored to their origin, that
- is as if TUI is not used. Readline also uses its original getc()
- function with stdin.
-
- Note SCz/2001-07-21: the current readline is not clean in its management of
- the output. Even if we install a redisplay handler, it sometimes writes on
- a stdout file. It is important to redirect every output produced by
- readline, otherwise the curses window will be garbled. This is implemented
- with a pipe that TUI reads and readline writes to. A gdb input handler
- is created so that reading the pipe is handled automatically.
- This will probably not work on non-Unix platforms. The best fix is
- to make readline clean enougth so that is never write on stdout.
-
- Note SCz/2002-09-01: we now use more readline hooks and it seems that
- with them we don't need the pipe anymore (verified by creating the pipe
- and closing its end so that write causes a SIGPIPE). The old pipe code
- is still there and can be conditionally removed by
- #undef TUI_USE_PIPE_FOR_READLINE. */
-
-/* For gdb 5.3, prefer to continue the pipe hack as a backup wheel. */
-#define TUI_USE_PIPE_FOR_READLINE
-/*#undef TUI_USE_PIPE_FOR_READLINE*/
-
-/* TUI output files. */
-static struct ui_file *tui_stdout;
-static struct ui_file *tui_stderr;
-struct ui_out *tui_out;
-
-/* GDB output files in non-curses mode. */
-static struct ui_file *tui_old_stdout;
-static struct ui_file *tui_old_stderr;
-struct ui_out *tui_old_uiout;
-
-/* Readline previous hooks. */
-static Function *tui_old_rl_getc_function;
-static VFunction *tui_old_rl_redisplay_function;
-static VFunction *tui_old_rl_prep_terminal;
-static VFunction *tui_old_rl_deprep_terminal;
-static int tui_old_readline_echoing_p;
-
-/* Readline output stream.
- Should be removed when readline is clean. */
-static FILE *tui_rl_outstream;
-static FILE *tui_old_rl_outstream;
-#ifdef TUI_USE_PIPE_FOR_READLINE
-static int tui_readline_pipe[2];
-#endif
-
-/* The last gdb prompt that was registered in readline.
- This may be the main gdb prompt or a secondary prompt. */
-static char *tui_rl_saved_prompt;
-
-static unsigned int _tuiHandleResizeDuringIO (unsigned int);
-
-static void
-tui_putc (char c)
-{
- char buf[2];
-
- buf[0] = c;
- buf[1] = 0;
- tui_puts (buf);
-}
-
-/* Print the string in the curses command window. */
-void
-tui_puts (const char *string)
-{
- static int tui_skip_line = -1;
- char c;
- WINDOW *w;
-
- w = cmdWin->generic.handle;
- while ((c = *string++) != 0)
- {
- /* Catch annotation and discard them. We need two \032 and
- discard until a \n is seen. */
- if (c == '\032')
- {
- tui_skip_line++;
- }
- else if (tui_skip_line != 1)
- {
- tui_skip_line = -1;
- waddch (w, c);
- }
- else if (c == '\n')
- tui_skip_line = -1;
- }
- getyx (w, cmdWin->detail.commandInfo.curLine,
- cmdWin->detail.commandInfo.curch);
- cmdWin->detail.commandInfo.start_line = cmdWin->detail.commandInfo.curLine;
-
- /* We could defer the following. */
- wrefresh (w);
- fflush (stdout);
-}
-
-/* Readline callback.
- Redisplay the command line with its prompt after readline has
- changed the edited text. */
-void
-tui_redisplay_readline (void)
-{
- int prev_col;
- int height;
- int col, line;
- int c_pos;
- int c_line;
- int in;
- WINDOW *w;
- char *prompt;
- int start_line;
-
- /* Detect when we temporarily left SingleKey and now the readline
- edit buffer is empty, automatically restore the SingleKey mode. */
- if (tui_current_key_mode == tui_one_command_mode && rl_end == 0)
- tui_set_key_mode (tui_single_key_mode);
-
- if (tui_current_key_mode == tui_single_key_mode)
- prompt = "";
- else
- prompt = tui_rl_saved_prompt;
-
- c_pos = -1;
- c_line = -1;
- w = cmdWin->generic.handle;
- start_line = cmdWin->detail.commandInfo.start_line;
- wmove (w, start_line, 0);
- prev_col = 0;
- height = 1;
- for (in = 0; prompt && prompt[in]; in++)
- {
- waddch (w, prompt[in]);
- getyx (w, line, col);
- if (col < prev_col)
- height++;
- prev_col = col;
- }
- for (in = 0; in < rl_end; in++)
- {
- unsigned char c;
-
- c = (unsigned char) rl_line_buffer[in];
- if (in == rl_point)
- {
- getyx (w, c_line, c_pos);
- }
-
- if (CTRL_CHAR (c) || c == RUBOUT)
- {
- waddch (w, '^');
- waddch (w, CTRL_CHAR (c) ? UNCTRL (c) : '?');
- }
- else
- {
- waddch (w, c);
- }
- if (c == '\n')
- {
- getyx (w, cmdWin->detail.commandInfo.start_line,
- cmdWin->detail.commandInfo.curch);
- }
- getyx (w, line, col);
- if (col < prev_col)
- height++;
- prev_col = col;
- }
- wclrtobot (w);
- getyx (w, cmdWin->detail.commandInfo.start_line,
- cmdWin->detail.commandInfo.curch);
- if (c_line >= 0)
- {
- wmove (w, c_line, c_pos);
- cmdWin->detail.commandInfo.curLine = c_line;
- cmdWin->detail.commandInfo.curch = c_pos;
- }
- cmdWin->detail.commandInfo.start_line -= height - 1;
-
- wrefresh (w);
- fflush(stdout);
-}
-
-/* Readline callback to prepare the terminal. It is called once
- each time we enter readline. Terminal is already setup in curses mode. */
-static void
-tui_prep_terminal (int notused1)
-{
- /* Save the prompt registered in readline to correctly display it.
- (we can't use gdb_prompt() due to secondary prompts and can't use
- rl_prompt because it points to an alloca buffer). */
- xfree (tui_rl_saved_prompt);
- tui_rl_saved_prompt = xstrdup (rl_prompt);
-}
-
-/* Readline callback to restore the terminal. It is called once
- each time we leave readline. There is nothing to do in curses mode. */
-static void
-tui_deprep_terminal (void)
-{
-}
-
-#ifdef TUI_USE_PIPE_FOR_READLINE
-/* Read readline output pipe and feed the command window with it.
- Should be removed when readline is clean. */
-static void
-tui_readline_output (int code, gdb_client_data data)
-{
- int size;
- char buf[256];
-
- size = read (tui_readline_pipe[0], buf, sizeof (buf) - 1);
- if (size > 0 && tui_active)
- {
- buf[size] = 0;
- tui_puts (buf);
- }
-}
-#endif
-
-/* Return the portion of PATHNAME that should be output when listing
- possible completions. If we are hacking filename completion, we
- are only interested in the basename, the portion following the
- final slash. Otherwise, we return what we were passed.
-
- Comes from readline/complete.c */
-static char *
-printable_part (pathname)
- char *pathname;
-{
- char *temp;
-
- temp = rl_filename_completion_desired ? strrchr (pathname, '/') : (char *)NULL;
-#if defined (__MSDOS__)
- if (rl_filename_completion_desired && temp == 0 && isalpha (pathname[0]) && pathname[1] == ':')
- temp = pathname + 1;
-#endif
- return (temp ? ++temp : pathname);
-}
-
-/* Output TO_PRINT to rl_outstream. If VISIBLE_STATS is defined and we
- are using it, check for and output a single character for `special'
- filenames. Return the number of characters we output. */
-
-#define PUTX(c) \
- do { \
- if (CTRL_CHAR (c)) \
- { \
- tui_puts ("^"); \
- tui_putc (UNCTRL (c)); \
- printed_len += 2; \
- } \
- else if (c == RUBOUT) \
- { \
- tui_puts ("^?"); \
- printed_len += 2; \
- } \
- else \
- { \
- tui_putc (c); \
- printed_len++; \
- } \
- } while (0)
-
-static int
-print_filename (to_print, full_pathname)
- char *to_print, *full_pathname;
-{
- int printed_len = 0;
- char *s;
-
- for (s = to_print; *s; s++)
- {
- PUTX (*s);
- }
- return printed_len;
-}
-
-/* The user must press "y" or "n". Non-zero return means "y" pressed.
- Comes from readline/complete.c */
-static int
-get_y_or_n ()
-{
- extern int _rl_abort_internal ();
- int c;
-
- for (;;)
- {
- c = rl_read_key ();
- if (c == 'y' || c == 'Y' || c == ' ')
- return (1);
- if (c == 'n' || c == 'N' || c == RUBOUT)
- return (0);
- if (c == ABORT_CHAR)
- _rl_abort_internal ();
- beep ();
- }
-}
-
-/* A convenience function for displaying a list of strings in
- columnar format on readline's output stream. MATCHES is the list
- of strings, in argv format, LEN is the number of strings in MATCHES,
- and MAX is the length of the longest string in MATCHES.
-
- Comes from readline/complete.c and modified to write in
- the TUI command window using tui_putc/tui_puts. */
-static void
-tui_rl_display_match_list (matches, len, max)
- char **matches;
- int len, max;
-{
- typedef int QSFUNC (const void *, const void *);
- extern int _rl_qsort_string_compare (const void*, const void*);
- extern int _rl_print_completions_horizontally;
-
- int count, limit, printed_len;
- int i, j, k, l;
- char *temp;
-
- /* Screen dimension correspond to the TUI command window. */
- int screenwidth = cmdWin->generic.width;
-
- /* If there are many items, then ask the user if she really wants to
- see them all. */
- if (len >= rl_completion_query_items)
- {
- char msg[256];
-
- sprintf (msg, "\nDisplay all %d possibilities? (y or n)", len);
- tui_puts (msg);
- if (get_y_or_n () == 0)
- {
- tui_puts ("\n");
- return;
- }
- }
-
- /* How many items of MAX length can we fit in the screen window? */
- max += 2;
- limit = screenwidth / max;
- if (limit != 1 && (limit * max == screenwidth))
- limit--;
-
- /* Avoid a possible floating exception. If max > screenwidth,
- limit will be 0 and a divide-by-zero fault will result. */
- if (limit == 0)
- limit = 1;
-
- /* How many iterations of the printing loop? */
- count = (len + (limit - 1)) / limit;
-
- /* Watch out for special case. If LEN is less than LIMIT, then
- just do the inner printing loop.
- 0 < len <= limit implies count = 1. */
-
- /* Sort the items if they are not already sorted. */
- if (rl_ignore_completion_duplicates == 0)
- qsort (matches + 1, len, sizeof (char *),
- (QSFUNC *)_rl_qsort_string_compare);
-
- tui_putc ('\n');
-
- if (_rl_print_completions_horizontally == 0)
- {
- /* Print the sorted items, up-and-down alphabetically, like ls. */
- for (i = 1; i <= count; i++)
- {
- for (j = 0, l = i; j < limit; j++)
- {
- if (l > len || matches[l] == 0)
- break;
- else
- {
- temp = printable_part (matches[l]);
- printed_len = print_filename (temp, matches[l]);
-
- if (j + 1 < limit)
- for (k = 0; k < max - printed_len; k++)
- tui_putc (' ');
- }
- l += count;
- }
- tui_putc ('\n');
- }
- }
- else
- {
- /* Print the sorted items, across alphabetically, like ls -x. */
- for (i = 1; matches[i]; i++)
- {
- temp = printable_part (matches[i]);
- printed_len = print_filename (temp, matches[i]);
- /* Have we reached the end of this line? */
- if (matches[i+1])
- {
- if (i && (limit > 1) && (i % limit) == 0)
- tui_putc ('\n');
- else
- for (k = 0; k < max - printed_len; k++)
- tui_putc (' ');
- }
- }
- tui_putc ('\n');
- }
-}
-
-/* Setup the IO for curses or non-curses mode.
- - In non-curses mode, readline and gdb use the standard input and
- standard output/error directly.
- - In curses mode, the standard output/error is controlled by TUI
- with the tui_stdout and tui_stderr. The output is redirected in
- the curses command window. Several readline callbacks are installed
- so that readline asks for its input to the curses command window
- with wgetch(). */
-void
-tui_setup_io (int mode)
-{
- extern int readline_echoing_p;
-
- if (mode)
- {
- /* Redirect readline to TUI. */
- tui_old_rl_redisplay_function = rl_redisplay_function;
- tui_old_rl_deprep_terminal = rl_deprep_term_function;
- tui_old_rl_prep_terminal = rl_prep_term_function;
- tui_old_rl_getc_function = rl_getc_function;
- tui_old_rl_outstream = rl_outstream;
- tui_old_readline_echoing_p = readline_echoing_p;
- rl_redisplay_function = tui_redisplay_readline;
- rl_deprep_term_function = tui_deprep_terminal;
- rl_prep_term_function = tui_prep_terminal;
- rl_getc_function = tui_getc;
- readline_echoing_p = 0;
- rl_outstream = tui_rl_outstream;
- rl_prompt = 0;
- rl_completion_display_matches_hook = tui_rl_display_match_list;
- rl_already_prompted = 0;
-
- /* Keep track of previous gdb output. */
- tui_old_stdout = gdb_stdout;
- tui_old_stderr = gdb_stderr;
- tui_old_uiout = uiout;
-
- /* Reconfigure gdb output. */
- gdb_stdout = tui_stdout;
- gdb_stderr = tui_stderr;
- gdb_stdlog = gdb_stdout; /* for moment */
- gdb_stdtarg = gdb_stderr; /* for moment */
- uiout = tui_out;
-
- /* Save tty for SIGCONT. */
- savetty ();
- }
- else
- {
- /* Restore gdb output. */
- gdb_stdout = tui_old_stdout;
- gdb_stderr = tui_old_stderr;
- gdb_stdlog = gdb_stdout; /* for moment */
- gdb_stdtarg = gdb_stderr; /* for moment */
- uiout = tui_old_uiout;
-
- /* Restore readline. */
- rl_redisplay_function = tui_old_rl_redisplay_function;
- rl_deprep_term_function = tui_old_rl_deprep_terminal;
- rl_prep_term_function = tui_old_rl_prep_terminal;
- rl_getc_function = tui_old_rl_getc_function;
- rl_outstream = tui_old_rl_outstream;
- rl_completion_display_matches_hook = 0;
- readline_echoing_p = tui_old_readline_echoing_p;
- rl_already_prompted = 0;
-
- /* Save tty for SIGCONT. */
- savetty ();
- }
-}
-
-#ifdef SIGCONT
-/* Catch SIGCONT to restore the terminal and refresh the screen. */
-static void
-tui_cont_sig (int sig)
-{
- if (tui_active)
- {
- /* Restore the terminal setting because another process (shell)
- might have changed it. */
- resetty ();
-
- /* Force a refresh of the screen. */
- tuiRefreshAll ();
-
- /* Update cursor position on the screen. */
- wmove (cmdWin->generic.handle,
- cmdWin->detail.commandInfo.start_line,
- cmdWin->detail.commandInfo.curch);
- wrefresh (cmdWin->generic.handle);
- }
- signal (sig, tui_cont_sig);
-}
-#endif
-
-/* Initialize the IO for gdb in curses mode. */
-void
-tui_initialize_io ()
-{
-#ifdef SIGCONT
- signal (SIGCONT, tui_cont_sig);
-#endif
-
- /* Create tui output streams. */
- tui_stdout = tui_fileopen (stdout);
- tui_stderr = tui_fileopen (stderr);
- tui_out = tui_out_new (tui_stdout);
-
- /* Create the default UI. It is not created because we installed
- a init_ui_hook. */
- tui_old_uiout = uiout = cli_out_new (gdb_stdout);
-
-#ifdef TUI_USE_PIPE_FOR_READLINE
- /* Temporary solution for readline writing to stdout:
- redirect readline output in a pipe, read that pipe and
- output the content in the curses command window. */
- if (pipe (tui_readline_pipe) != 0)
- {
- fprintf_unfiltered (gdb_stderr, "Cannot create pipe for readline");
- exit (1);
- }
- tui_rl_outstream = fdopen (tui_readline_pipe[1], "w");
- if (tui_rl_outstream == 0)
- {
- fprintf_unfiltered (gdb_stderr, "Cannot redirect readline output");
- exit (1);
- }
- setvbuf (tui_rl_outstream, (char*) NULL, _IOLBF, 0);
-
-#ifdef O_NONBLOCK
- (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NONBLOCK);
-#else
-#ifdef O_NDELAY
- (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NDELAY);
-#endif
-#endif
- add_file_handler (tui_readline_pipe[0], tui_readline_output, 0);
-#else
- tui_rl_outstream = stdout;
-#endif
-}
-
-/* Get a character from the command window. This is called from the readline
- package. */
-int
-tui_getc (FILE *fp)
-{
- int ch;
- WINDOW *w;
-
- w = cmdWin->generic.handle;
-
-#ifdef TUI_USE_PIPE_FOR_READLINE
- /* Flush readline output. */
- tui_readline_output (GDB_READABLE, 0);
-#endif
-
- ch = wgetch (w);
- ch = _tuiHandleResizeDuringIO (ch);
-
- /* The \n must be echoed because it will not be printed by readline. */
- if (ch == '\n')
- {
- /* When hitting return with an empty input, gdb executes the last
- command. If we emit a newline, this fills up the command window
- with empty lines with gdb prompt at beginning. Instead of that,
- stay on the same line but provide a visual effect to show the
- user we recognized the command. */
- if (rl_end == 0)
- {
- wmove (w, cmdWin->detail.commandInfo.curLine, 0);
-
- /* Clear the line. This will blink the gdb prompt since
- it will be redrawn at the same line. */
- wclrtoeol (w);
- wrefresh (w);
- napms (20);
- }
- else
- {
- wmove (w, cmdWin->detail.commandInfo.curLine,
- cmdWin->detail.commandInfo.curch);
- waddch (w, ch);
- }
- }
-
- if (m_isCommandChar (ch))
- { /* Handle prev/next/up/down here */
- ch = tuiDispatchCtrlChar (ch);
- }
-
- if (ch == '\n' || ch == '\r' || ch == '\f')
- cmdWin->detail.commandInfo.curch = 0;
-#if 0
- else
- tuiIncrCommandCharCountBy (1);
-#endif
- if (ch == KEY_BACKSPACE)
- return '\b';
-
- return ch;
-}
-
-
-/* Cleanup when a resize has occured.
- Returns the character that must be processed. */
-static unsigned int
-_tuiHandleResizeDuringIO (unsigned int originalCh)
-{
- if (tuiWinResized ())
- {
- tuiRefreshAll ();
- dont_repeat ();
- tuiSetWinResizedTo (FALSE);
- return '\n';
- }
- else
- return originalCh;
-}
diff --git a/gdb/tui/tuiIO.h b/gdb/tui/tuiIO.h
deleted file mode 100644
index 40970b6b7e2..00000000000
--- a/gdb/tui/tuiIO.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* TUI support I/O functions.
- Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 _TUI_IO_H
-#define _TUI_IO_H
-
-#include <stdio.h>
-
-/* Print the string in the curses command window. */
-extern void tui_puts (const char *);
-
-/* Setup the IO for curses or non-curses mode. */
-extern void tui_setup_io (int mode);
-
-/* Initialize the IO for gdb in curses mode. */
-extern void tui_initialize_io (void);
-
-/* Get a character from the command window. */
-extern int tui_getc (FILE*);
-
-/* Readline callback.
- Redisplay the command line with its prompt after readline has
- changed the edited text. */
-extern void tui_redisplay_readline (void);
-
-extern struct ui_out *tui_out;
-extern struct ui_out *tui_old_uiout;
-
-#define m_tuiStartNewLine tuiStartNewLines(1)
-#define m_isStartSequence(ch) (ch == 27)
-#define m_isEndSequence(ch) (ch == 126)
-#define m_isBackspace(ch) (ch == 8)
-#define m_isDeleteChar(ch) (ch == KEY_DC)
-#define m_isDeleteLine(ch) (ch == KEY_DL)
-#define m_isDeleteToEol(ch) (ch == KEY_EOL)
-#define m_isNextPage(ch) (ch == KEY_NPAGE)
-#define m_isPrevPage(ch) (ch == KEY_PPAGE)
-#define m_isLeftArrow(ch) (ch == KEY_LEFT)
-#define m_isRightArrow(ch) (ch == KEY_RIGHT)
-
-#define m_isCommandChar(ch) (m_isNextPage(ch) || m_isPrevPage(ch) || \
- m_isLeftArrow(ch) || m_isRightArrow(ch) || \
- (ch == KEY_UP) || (ch == KEY_DOWN) || \
- (ch == KEY_SF) || (ch == KEY_SR) || \
- (ch == (int)'\f') || m_isStartSequence(ch))
-
-#define m_isXdbStyleCommandChar(ch) (m_isNextPage(ch) || m_isPrevPage(ch))
-
-
-#endif
-
diff --git a/gdb/tui/tuiLayout.c b/gdb/tui/tuiLayout.c
deleted file mode 100644
index b79bfcb8c28..00000000000
--- a/gdb/tui/tuiLayout.c
+++ /dev/null
@@ -1,1148 +0,0 @@
-/* TUI layout window management.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 "command.h"
-#include "symtab.h"
-#include "frame.h"
-#include "source.h"
-#include <ctype.h>
-
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiDataWin.h"
-#include "tuiGeneralWin.h"
-#include "tuiStack.h"
-#include "tuiRegs.h"
-#include "tuiWin.h"
-#include "tuiSourceWin.h"
-#include "tuiDisassem.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-/*******************************
-** Static Local Decls
-********************************/
-static void showLayout (TuiLayoutType);
-static void _initGenWinInfo (TuiGenWinInfoPtr, TuiWinType, int, int, int, int);
-static void _initAndMakeWin (Opaque *, TuiWinType, int, int, int, int, int);
-static void _showSourceOrDisassemAndCommand (TuiLayoutType);
-static void _makeSourceOrDisassemWindow (TuiWinInfoPtr *, TuiWinType, int, int);
-static void _makeCommandWindow (TuiWinInfoPtr *, int, int);
-static void _makeSourceWindow (TuiWinInfoPtr *, int, int);
-static void _makeDisassemWindow (TuiWinInfoPtr *, int, int);
-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 _tuiToggleSplitLayout_command (char *, int);
-static CORE_ADDR _extractDisplayStartAddr (void);
-static void _tuiHandleXDBLayout (TuiLayoutDefPtr);
-
-
-/***************************************
-** DEFINITIONS
-***************************************/
-
-#define LAYOUT_USAGE "Usage: layout prev | next | <layout_name> \n"
-
-/* Show the screen layout defined. */
-static void
-showLayout (TuiLayoutType layout)
-{
- TuiLayoutType curLayout = currentLayout ();
-
- if (layout != curLayout)
- {
- /*
- ** Since the new layout may cause changes in window size, we
- ** should free the content and reallocate on next display of
- ** source/asm
- */
- freeAllSourceWinsContent ();
- clearSourceWindows ();
- if (layout == SRC_DATA_COMMAND || layout == DISASSEM_DATA_COMMAND)
- {
- _showData (layout);
- refreshAll (winList);
- }
- else
- {
- /* First make the current layout be invisible */
- m_allBeInvisible ();
- m_beInvisible (locatorWinInfoPtr ());
-
- switch (layout)
- {
- /* Now show the new layout */
- case SRC_COMMAND:
- _showSourceCommand ();
- addToSourceWindows (srcWin);
- break;
- case DISASSEM_COMMAND:
- _showDisassemCommand ();
- addToSourceWindows (disassemWin);
- break;
- case SRC_DISASSEM_COMMAND:
- _showSourceDisassemCommand ();
- addToSourceWindows (srcWin);
- addToSourceWindows (disassemWin);
- break;
- default:
- break;
- }
- }
- }
-}
-
-
-/*
- ** tuiSetLayout()
- ** Function to set the layout to SRC_COMMAND, DISASSEM_COMMAND,
- ** SRC_DISASSEM_COMMAND, SRC_DATA_COMMAND, or DISASSEM_DATA_COMMAND.
- ** If the layout is SRC_DATA_COMMAND, DISASSEM_DATA_COMMAND, or
- ** UNDEFINED_LAYOUT, then the data window is populated according
- ** to regsDisplayType.
- */
-TuiStatus
-tuiSetLayout (TuiLayoutType layoutType,
- TuiRegisterDisplayType regsDisplayType)
-{
- TuiStatus status = TUI_SUCCESS;
-
- if (layoutType != UNDEFINED_LAYOUT || regsDisplayType != TUI_UNDEFINED_REGS)
- {
- TuiLayoutType curLayout = currentLayout (), newLayout = UNDEFINED_LAYOUT;
- int regsPopulate = FALSE;
- CORE_ADDR addr = _extractDisplayStartAddr ();
- TuiWinInfoPtr newWinWithFocus = (TuiWinInfoPtr) NULL, winWithFocus = tuiWinWithFocus ();
- TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
-
-
- if (layoutType == UNDEFINED_LAYOUT &&
- regsDisplayType != TUI_UNDEFINED_REGS)
- {
- if (curLayout == SRC_DISASSEM_COMMAND)
- newLayout = DISASSEM_DATA_COMMAND;
- else if (curLayout == SRC_COMMAND || curLayout == SRC_DATA_COMMAND)
- newLayout = SRC_DATA_COMMAND;
- else if (curLayout == DISASSEM_COMMAND ||
- curLayout == DISASSEM_DATA_COMMAND)
- newLayout = DISASSEM_DATA_COMMAND;
- }
- else
- newLayout = layoutType;
-
- regsPopulate = (newLayout == SRC_DATA_COMMAND ||
- newLayout == DISASSEM_DATA_COMMAND ||
- regsDisplayType != TUI_UNDEFINED_REGS);
- if (newLayout != curLayout || regsDisplayType != TUI_UNDEFINED_REGS)
- {
- if (newLayout != curLayout)
- {
- showLayout (newLayout);
- /*
- ** Now determine where focus should be
- */
- if (winWithFocus != cmdWin)
- {
- switch (newLayout)
- {
- case SRC_COMMAND:
- tuiSetWinFocusTo (srcWin);
- layoutDef->displayMode = SRC_WIN;
- layoutDef->split = FALSE;
- break;
- case DISASSEM_COMMAND:
- /* the previous layout was not showing
- ** code. this can happen if there is no
- ** source available:
- ** 1. if the source file is in another dir OR
- ** 2. if target was compiled without -g
- ** We still want to show the assembly though!
- */
- addr = tuiGetBeginAsmAddress ();
- tuiSetWinFocusTo (disassemWin);
- layoutDef->displayMode = DISASSEM_WIN;
- layoutDef->split = FALSE;
- break;
- case SRC_DISASSEM_COMMAND:
- /* the previous layout was not showing
- ** code. this can happen if there is no
- ** source available:
- ** 1. if the source file is in another dir OR
- ** 2. if target was compiled without -g
- ** We still want to show the assembly though!
- */
- addr = tuiGetBeginAsmAddress ();
- if (winWithFocus == srcWin)
- tuiSetWinFocusTo (srcWin);
- else
- tuiSetWinFocusTo (disassemWin);
- layoutDef->split = TRUE;
- break;
- case SRC_DATA_COMMAND:
- if (winWithFocus != dataWin)
- tuiSetWinFocusTo (srcWin);
- else
- tuiSetWinFocusTo (dataWin);
- layoutDef->displayMode = SRC_WIN;
- layoutDef->split = FALSE;
- break;
- case DISASSEM_DATA_COMMAND:
- /* the previous layout was not showing
- ** code. this can happen if there is no
- ** source available:
- ** 1. if the source file is in another dir OR
- ** 2. if target was compiled without -g
- ** We still want to show the assembly though!
- */
- addr = tuiGetBeginAsmAddress ();
- if (winWithFocus != dataWin)
- tuiSetWinFocusTo (disassemWin);
- else
- tuiSetWinFocusTo (dataWin);
- layoutDef->displayMode = DISASSEM_WIN;
- layoutDef->split = FALSE;
- break;
- default:
- break;
- }
- }
- if (newWinWithFocus != (TuiWinInfoPtr) NULL)
- tuiSetWinFocusTo (newWinWithFocus);
- /*
- ** Now update the window content
- */
- if (!regsPopulate &&
- (newLayout == SRC_DATA_COMMAND ||
- newLayout == DISASSEM_DATA_COMMAND))
- tuiDisplayAllData ();
-
- tuiUpdateSourceWindowsWithAddr (addr);
- }
- if (regsPopulate)
- {
- layoutDef->regsDisplayType =
- (regsDisplayType == TUI_UNDEFINED_REGS ?
- TUI_GENERAL_REGS : regsDisplayType);
- tuiShowRegisters (layoutDef->regsDisplayType);
- }
- }
- }
- else
- status = TUI_FAILURE;
-
- return status;
-}
-
-/*
- ** tuiAddWinToLayout().
- ** Add the specified window to the layout in a logical way.
- ** This means setting up the most logical layout given the
- ** window to be added.
- */
-void
-tuiAddWinToLayout (TuiWinType type)
-{
- TuiLayoutType curLayout = currentLayout ();
-
- switch (type)
- {
- case SRC_WIN:
- if (curLayout != SRC_COMMAND &&
- curLayout != SRC_DISASSEM_COMMAND &&
- curLayout != SRC_DATA_COMMAND)
- {
- clearSourceWindowsDetail ();
- if (curLayout == DISASSEM_DATA_COMMAND)
- showLayout (SRC_DATA_COMMAND);
- else
- showLayout (SRC_COMMAND);
- }
- break;
- case DISASSEM_WIN:
- if (curLayout != DISASSEM_COMMAND &&
- curLayout != SRC_DISASSEM_COMMAND &&
- curLayout != DISASSEM_DATA_COMMAND)
- {
- clearSourceWindowsDetail ();
- if (curLayout == SRC_DATA_COMMAND)
- showLayout (DISASSEM_DATA_COMMAND);
- else
- showLayout (DISASSEM_COMMAND);
- }
- break;
- case DATA_WIN:
- if (curLayout != SRC_DATA_COMMAND &&
- curLayout != DISASSEM_DATA_COMMAND)
- {
- if (curLayout == DISASSEM_COMMAND)
- showLayout (DISASSEM_DATA_COMMAND);
- else
- showLayout (SRC_DATA_COMMAND);
- }
- break;
- default:
- break;
- }
-
- return;
-} /* tuiAddWinToLayout */
-
-
-/*
- ** tuiDefaultWinHeight().
- ** Answer the height of a window. If it hasn't been created yet,
- ** answer what the height of a window would be based upon its
- ** type and the layout.
- */
-int
-tuiDefaultWinHeight (TuiWinType type, TuiLayoutType layout)
-{
- int h;
-
- if (winList[type] != (TuiWinInfoPtr) NULL)
- h = winList[type]->generic.height;
- else
- {
- switch (layout)
- {
- case SRC_COMMAND:
- case DISASSEM_COMMAND:
- if (m_winPtrIsNull (cmdWin))
- h = termHeight () / 2;
- else
- h = termHeight () - cmdWin->generic.height;
- break;
- case SRC_DISASSEM_COMMAND:
- case SRC_DATA_COMMAND:
- case DISASSEM_DATA_COMMAND:
- if (m_winPtrIsNull (cmdWin))
- h = termHeight () / 3;
- else
- h = (termHeight () - cmdWin->generic.height) / 2;
- break;
- default:
- h = 0;
- break;
- }
- }
-
- return h;
-} /* tuiDefaultWinHeight */
-
-
-/*
- ** tuiDefaultWinViewportHeight().
- ** Answer the height of a window. If it hasn't been created yet,
- ** answer what the height of a window would be based upon its
- ** type and the layout.
- */
-int
-tuiDefaultWinViewportHeight (TuiWinType type, TuiLayoutType layout)
-{
- int h;
-
- h = tuiDefaultWinHeight (type, layout);
-
- if (winList[type] == cmdWin)
- h -= 1;
- else
- h -= 2;
-
- return h;
-} /* tuiDefaultWinViewportHeight */
-
-
-/*
- ** _initialize_tuiLayout().
- ** Function to initialize gdb commands, for tui window layout
- ** manipulation.
- */
-void
-_initialize_tuiLayout (void)
-{
- add_com ("layout", class_tui, _tuiLayout_command,
- "Change the layout of windows.\n\
-Usage: layout prev | next | <layout_name> \n\
-Layout names are:\n\
- src : Displays source and command windows.\n\
- asm : Displays disassembly and command windows.\n\
- split : Displays source, disassembly and command windows.\n\
- regs : Displays register window. If existing layout\n\
- is source/command or assembly/command, the \n\
- register window is displayed. If the\n\
- source/assembly/command (split) is displayed, \n\
- the register window is displayed with \n\
- the window that has current logical focus.\n");
- if (xdb_commands)
- {
- add_com ("td", class_tui, _tuiToggleLayout_command,
- "Toggle between Source/Command and Disassembly/Command layouts.\n");
- add_com ("ts", class_tui, _tuiToggleSplitLayout_command,
- "Toggle between Source/Command or Disassembly/Command and \n\
-Source/Disassembly/Command layouts.\n");
- }
-}
-
-
-/*************************
-** STATIC LOCAL FUNCTIONS
-**************************/
-
-
-/*
- ** _tuiSetLayoutTo()
- ** Function to set the layout to SRC, ASM, SPLIT, NEXT, PREV, DATA, REGS,
- ** $REGS, $GREGS, $FREGS, $SREGS.
- */
-TuiStatus
-tui_set_layout (const char *layoutName)
-{
- TuiStatus status = TUI_SUCCESS;
-
- if (layoutName != (char *) NULL)
- {
- register int i;
- register char *bufPtr;
- TuiLayoutType newLayout = UNDEFINED_LAYOUT;
- TuiRegisterDisplayType dpyType = TUI_UNDEFINED_REGS;
- TuiLayoutType curLayout = currentLayout ();
-
- bufPtr = (char *) xstrdup (layoutName);
- for (i = 0; (i < strlen (layoutName)); i++)
- bufPtr[i] = toupper (bufPtr[i]);
-
- /* First check for ambiguous input */
- if (strlen (bufPtr) <= 1 && (*bufPtr == 'S' || *bufPtr == '$'))
- {
- warning ("Ambiguous command input.\n");
- status = TUI_FAILURE;
- }
- else
- {
- if (subset_compare (bufPtr, "SRC"))
- newLayout = SRC_COMMAND;
- else if (subset_compare (bufPtr, "ASM"))
- newLayout = DISASSEM_COMMAND;
- else if (subset_compare (bufPtr, "SPLIT"))
- newLayout = SRC_DISASSEM_COMMAND;
- else if (subset_compare (bufPtr, "REGS") ||
- subset_compare (bufPtr, TUI_GENERAL_SPECIAL_REGS_NAME) ||
- subset_compare (bufPtr, TUI_GENERAL_REGS_NAME) ||
- subset_compare (bufPtr, TUI_FLOAT_REGS_NAME) ||
- subset_compare (bufPtr, TUI_SPECIAL_REGS_NAME))
- {
- if (curLayout == SRC_COMMAND || curLayout == SRC_DATA_COMMAND)
- newLayout = SRC_DATA_COMMAND;
- else
- newLayout = DISASSEM_DATA_COMMAND;
-
-/* could ifdef out the following code. when compile with -z, there are null
- pointer references that cause a core dump if 'layout regs' is the first
- layout command issued by the user. HP has asked us to hook up this code
- - edie epstein
- */
- if (subset_compare (bufPtr, TUI_FLOAT_REGS_NAME))
- {
- if (dataWin->detail.dataDisplayInfo.regsDisplayType !=
- TUI_SFLOAT_REGS &&
- dataWin->detail.dataDisplayInfo.regsDisplayType !=
- TUI_DFLOAT_REGS)
- dpyType = TUI_SFLOAT_REGS;
- else
- dpyType =
- dataWin->detail.dataDisplayInfo.regsDisplayType;
- }
- else if (subset_compare (bufPtr,
- TUI_GENERAL_SPECIAL_REGS_NAME))
- dpyType = TUI_GENERAL_AND_SPECIAL_REGS;
- else if (subset_compare (bufPtr, TUI_GENERAL_REGS_NAME))
- dpyType = TUI_GENERAL_REGS;
- else if (subset_compare (bufPtr, TUI_SPECIAL_REGS_NAME))
- dpyType = TUI_SPECIAL_REGS;
- else if (dataWin)
- {
- if (dataWin->detail.dataDisplayInfo.regsDisplayType !=
- TUI_UNDEFINED_REGS)
- dpyType =
- dataWin->detail.dataDisplayInfo.regsDisplayType;
- else
- dpyType = TUI_GENERAL_REGS;
- }
-
-/* end of potential ifdef
- */
-
-/* if ifdefed out code above, then assume that the user wishes to display the
- general purpose registers
- */
-
-/* dpyType = TUI_GENERAL_REGS;
- */
- }
- else if (subset_compare (bufPtr, "NEXT"))
- newLayout = _nextLayout ();
- else if (subset_compare (bufPtr, "PREV"))
- newLayout = _prevLayout ();
- else
- status = TUI_FAILURE;
- xfree (bufPtr);
-
- tuiSetLayout (newLayout, dpyType);
- }
- }
- else
- status = TUI_FAILURE;
-
- return status;
-}
-
-
-static CORE_ADDR
-_extractDisplayStartAddr (void)
-{
- TuiLayoutType curLayout = currentLayout ();
- CORE_ADDR addr;
- CORE_ADDR pc;
- struct symtab_and_line cursal = get_current_source_symtab_and_line ();
-
- switch (curLayout)
- {
- case SRC_COMMAND:
- case SRC_DATA_COMMAND:
- find_line_pc (cursal.symtab,
- srcWin->detail.sourceInfo.startLineOrAddr.lineNo,
- &pc);
- addr = pc;
- break;
- case DISASSEM_COMMAND:
- case SRC_DISASSEM_COMMAND:
- case DISASSEM_DATA_COMMAND:
- addr = disassemWin->detail.sourceInfo.startLineOrAddr.addr;
- break;
- default:
- addr = 0;
- break;
- }
-
- return addr;
-} /* _extractDisplayStartAddr */
-
-
-static void
-_tuiHandleXDBLayout (TuiLayoutDefPtr layoutDef)
-{
- if (layoutDef->split)
- {
- tuiSetLayout (SRC_DISASSEM_COMMAND, TUI_UNDEFINED_REGS);
- tuiSetWinFocusTo (winList[layoutDef->displayMode]);
- }
- else
- {
- if (layoutDef->displayMode == SRC_WIN)
- tuiSetLayout (SRC_COMMAND, TUI_UNDEFINED_REGS);
- else
- tuiSetLayout (DISASSEM_DATA_COMMAND, layoutDef->regsDisplayType);
- }
-
-
- return;
-} /* _tuiHandleXDBLayout */
-
-
-static void
-_tuiToggleLayout_command (char *arg, int fromTTY)
-{
- TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
-
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- if (layoutDef->displayMode == SRC_WIN)
- layoutDef->displayMode = DISASSEM_WIN;
- else
- layoutDef->displayMode = SRC_WIN;
-
- if (!layoutDef->split)
- _tuiHandleXDBLayout (layoutDef);
-
-}
-
-
-static void
-_tuiToggleSplitLayout_command (char *arg, int fromTTY)
-{
- TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
-
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- layoutDef->split = (!layoutDef->split);
- _tuiHandleXDBLayout (layoutDef);
-
-}
-
-
-static void
-_tuiLayout_command (char *arg, int fromTTY)
-{
- /* Make sure the curses mode is enabled. */
- tui_enable ();
-
- /* Switch to the selected layout. */
- if (tui_set_layout (arg) != TUI_SUCCESS)
- warning ("Invalid layout specified.\n%s", LAYOUT_USAGE);
-
-}
-
-/*
- ** _nextLayout().
- ** Answer the previous layout to cycle to.
- */
-static TuiLayoutType
-_nextLayout (void)
-{
- TuiLayoutType newLayout;
-
- newLayout = currentLayout ();
- if (newLayout == UNDEFINED_LAYOUT)
- newLayout = SRC_COMMAND;
- else
- {
- newLayout++;
- if (newLayout == UNDEFINED_LAYOUT)
- newLayout = SRC_COMMAND;
- }
-
- return newLayout;
-} /* _nextLayout */
-
-
-/*
- ** _prevLayout().
- ** Answer the next layout to cycle to.
- */
-static TuiLayoutType
-_prevLayout (void)
-{
- TuiLayoutType newLayout;
-
- newLayout = currentLayout ();
- if (newLayout == SRC_COMMAND)
- newLayout = DISASSEM_DATA_COMMAND;
- else
- {
- newLayout--;
- if (newLayout == UNDEFINED_LAYOUT)
- newLayout = DISASSEM_DATA_COMMAND;
- }
-
- return newLayout;
-} /* _prevLayout */
-
-
-
-/*
- ** _makeCommandWindow().
- */
-static void
-_makeCommandWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY)
-{
- _initAndMakeWin ((Opaque *) winInfoPtr,
- CMD_WIN,
- height,
- termWidth (),
- 0,
- originY,
- DONT_BOX_WINDOW);
-
- (*winInfoPtr)->canHighlight = FALSE;
-
- return;
-} /* _makeCommandWindow */
-
-
-/*
- ** _makeSourceWindow().
- */
-static void
-_makeSourceWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY)
-{
- _makeSourceOrDisassemWindow (winInfoPtr, SRC_WIN, height, originY);
-
- return;
-} /* _makeSourceWindow */
-
-
-/*
- ** _makeDisassemWindow().
- */
-static void
-_makeDisassemWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY)
-{
- _makeSourceOrDisassemWindow (winInfoPtr, DISASSEM_WIN, height, originY);
-
- return;
-} /* _makeDisassemWindow */
-
-
-/*
- ** _makeDataWindow().
- */
-static void
-_makeDataWindow (TuiWinInfoPtr * winInfoPtr, int height, int originY)
-{
- _initAndMakeWin ((Opaque *) winInfoPtr,
- DATA_WIN,
- height,
- termWidth (),
- 0,
- originY,
- BOX_WINDOW);
-
- return;
-} /* _makeDataWindow */
-
-
-
-/*
- ** _showSourceCommand().
- ** Show the Source/Command layout
- */
-static void
-_showSourceCommand (void)
-{
- _showSourceOrDisassemAndCommand (SRC_COMMAND);
-
- return;
-} /* _showSourceCommand */
-
-
-/*
- ** _showDisassemCommand().
- ** Show the Dissassem/Command layout
- */
-static void
-_showDisassemCommand (void)
-{
- _showSourceOrDisassemAndCommand (DISASSEM_COMMAND);
-
- return;
-} /* _showDisassemCommand */
-
-
-/*
- ** _showSourceDisassemCommand().
- ** Show the Source/Disassem/Command layout
- */
-static void
-_showSourceDisassemCommand (void)
-{
- if (currentLayout () != SRC_DISASSEM_COMMAND)
- {
- int cmdHeight, srcHeight, asmHeight;
-
- if (m_winPtrNotNull (cmdWin))
- cmdHeight = cmdWin->generic.height;
- else
- cmdHeight = termHeight () / 3;
-
- srcHeight = (termHeight () - cmdHeight) / 2;
- asmHeight = termHeight () - (srcHeight + cmdHeight);
-
- if (m_winPtrIsNull (srcWin))
- _makeSourceWindow (&srcWin, srcHeight, 0);
- else
- {
- _initGenWinInfo (&srcWin->generic,
- srcWin->generic.type,
- srcHeight,
- srcWin->generic.width,
- srcWin->detail.sourceInfo.executionInfo->width,
- 0);
- srcWin->canHighlight = TRUE;
- _initGenWinInfo (srcWin->detail.sourceInfo.executionInfo,
- EXEC_INFO_WIN,
- srcHeight,
- 3,
- 0,
- 0);
- m_beVisible (srcWin);
- m_beVisible (srcWin->detail.sourceInfo.executionInfo);
- srcWin->detail.sourceInfo.hasLocator = FALSE;;
- }
- if (m_winPtrNotNull (srcWin))
- {
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
-
- tuiShowSourceContent (srcWin);
- if (m_winPtrIsNull (disassemWin))
- {
- _makeDisassemWindow (&disassemWin, asmHeight, srcHeight - 1);
- _initAndMakeWin ((Opaque *) & locator,
- LOCATOR_WIN,
- 2 /* 1 */ ,
- termWidth (),
- 0,
- (srcHeight + asmHeight) - 1,
- DONT_BOX_WINDOW);
- }
- else
- {
- _initGenWinInfo (locator,
- LOCATOR_WIN,
- 2 /* 1 */ ,
- termWidth (),
- 0,
- (srcHeight + asmHeight) - 1);
- disassemWin->detail.sourceInfo.hasLocator = TRUE;
- _initGenWinInfo (
- &disassemWin->generic,
- disassemWin->generic.type,
- asmHeight,
- disassemWin->generic.width,
- disassemWin->detail.sourceInfo.executionInfo->width,
- srcHeight - 1);
- _initGenWinInfo (disassemWin->detail.sourceInfo.executionInfo,
- EXEC_INFO_WIN,
- asmHeight,
- 3,
- 0,
- srcHeight - 1);
- disassemWin->canHighlight = TRUE;
- m_beVisible (disassemWin);
- m_beVisible (disassemWin->detail.sourceInfo.executionInfo);
- }
- if (m_winPtrNotNull (disassemWin))
- {
- srcWin->detail.sourceInfo.hasLocator = FALSE;
- disassemWin->detail.sourceInfo.hasLocator = TRUE;
- m_beVisible (locator);
- tuiShowLocatorContent ();
- tuiShowSourceContent (disassemWin);
-
- if (m_winPtrIsNull (cmdWin))
- _makeCommandWindow (&cmdWin,
- cmdHeight,
- termHeight () - cmdHeight);
- else
- {
- _initGenWinInfo (&cmdWin->generic,
- cmdWin->generic.type,
- cmdWin->generic.height,
- cmdWin->generic.width,
- 0,
- cmdWin->generic.origin.y);
- cmdWin->canHighlight = FALSE;
- m_beVisible (cmdWin);
- }
- if (m_winPtrNotNull (cmdWin))
- tuiRefreshWin (&cmdWin->generic);
- }
- }
- setCurrentLayoutTo (SRC_DISASSEM_COMMAND);
- }
-
- return;
-} /* _showSourceDisassemCommand */
-
-
-/*
- ** _showData().
- ** Show the Source/Data/Command or the Dissassembly/Data/Command layout
- */
-static void
-_showData (TuiLayoutType newLayout)
-{
- int totalHeight = (termHeight () - cmdWin->generic.height);
- int srcHeight, dataHeight;
- TuiWinType winType;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
-
-
- dataHeight = totalHeight / 2;
- srcHeight = totalHeight - dataHeight;
- m_allBeInvisible ();
- m_beInvisible (locator);
- _makeDataWindow (&dataWin, dataHeight, 0);
- dataWin->canHighlight = TRUE;
- if (newLayout == SRC_DATA_COMMAND)
- winType = SRC_WIN;
- else
- winType = DISASSEM_WIN;
- if (m_winPtrIsNull (winList[winType]))
- {
- if (winType == SRC_WIN)
- _makeSourceWindow (&winList[winType], srcHeight, dataHeight - 1);
- else
- _makeDisassemWindow (&winList[winType], srcHeight, dataHeight - 1);
- _initAndMakeWin ((Opaque *) & locator,
- LOCATOR_WIN,
- 2 /* 1 */ ,
- termWidth (),
- 0,
- totalHeight - 1,
- DONT_BOX_WINDOW);
- }
- else
- {
- _initGenWinInfo (&winList[winType]->generic,
- winList[winType]->generic.type,
- srcHeight,
- winList[winType]->generic.width,
- winList[winType]->detail.sourceInfo.executionInfo->width,
- dataHeight - 1);
- _initGenWinInfo (winList[winType]->detail.sourceInfo.executionInfo,
- EXEC_INFO_WIN,
- srcHeight,
- 3,
- 0,
- dataHeight - 1);
- m_beVisible (winList[winType]);
- m_beVisible (winList[winType]->detail.sourceInfo.executionInfo);
- _initGenWinInfo (locator,
- LOCATOR_WIN,
- 2 /* 1 */ ,
- termWidth (),
- 0,
- totalHeight - 1);
- }
- winList[winType]->detail.sourceInfo.hasLocator = TRUE;
- m_beVisible (locator);
- tuiShowLocatorContent ();
- addToSourceWindows (winList[winType]);
- setCurrentLayoutTo (newLayout);
-
- return;
-} /* _showData */
-
-/*
- ** _initGenWinInfo().
- */
-static void
-_initGenWinInfo (TuiGenWinInfoPtr winInfo, TuiWinType type,
- int height, int width, int originX, int originY)
-{
- int h = height;
-
- winInfo->type = type;
- winInfo->width = width;
- winInfo->height = h;
- if (h > 1)
- {
- winInfo->viewportHeight = h - 1;
- if (winInfo->type != CMD_WIN)
- winInfo->viewportHeight--;
- }
- else
- winInfo->viewportHeight = 1;
- winInfo->origin.x = originX;
- winInfo->origin.y = originY;
-
- return;
-} /* _initGenWinInfo */
-
-/*
- ** _initAndMakeWin().
- */
-static void
-_initAndMakeWin (Opaque * winInfoPtr, TuiWinType winType,
- int height, int width, int originX, int originY, int boxIt)
-{
- Opaque opaqueWinInfo = *winInfoPtr;
- TuiGenWinInfoPtr generic;
-
- if (opaqueWinInfo == (Opaque) NULL)
- {
- if (m_winIsAuxillary (winType))
- opaqueWinInfo = (Opaque) allocGenericWinInfo ();
- else
- opaqueWinInfo = (Opaque) allocWinInfo (winType);
- }
- if (m_winIsAuxillary (winType))
- generic = (TuiGenWinInfoPtr) opaqueWinInfo;
- else
- generic = &((TuiWinInfoPtr) opaqueWinInfo)->generic;
-
- if (opaqueWinInfo != (Opaque) NULL)
- {
- _initGenWinInfo (generic, winType, height, width, originX, originY);
- if (!m_winIsAuxillary (winType))
- {
- if (generic->type == CMD_WIN)
- ((TuiWinInfoPtr) opaqueWinInfo)->canHighlight = FALSE;
- else
- ((TuiWinInfoPtr) opaqueWinInfo)->canHighlight = TRUE;
- }
- makeWindow (generic, boxIt);
- }
- *winInfoPtr = opaqueWinInfo;
-}
-
-
-/*
- ** _makeSourceOrDisassemWindow().
- */
-static void
-_makeSourceOrDisassemWindow (TuiWinInfoPtr * winInfoPtr, TuiWinType type,
- int height, int originY)
-{
- TuiGenWinInfoPtr executionInfo = (TuiGenWinInfoPtr) NULL;
-
- /*
- ** Create the exeuction info window.
- */
- if (type == SRC_WIN)
- executionInfo = sourceExecInfoWinPtr ();
- else
- executionInfo = disassemExecInfoWinPtr ();
- _initAndMakeWin ((Opaque *) & executionInfo,
- EXEC_INFO_WIN,
- height,
- 3,
- 0,
- originY,
- DONT_BOX_WINDOW);
- /*
- ** Now create the source window.
- */
- _initAndMakeWin ((Opaque *) winInfoPtr,
- type,
- height,
- termWidth () - executionInfo->width,
- executionInfo->width,
- originY,
- BOX_WINDOW);
-
- (*winInfoPtr)->detail.sourceInfo.executionInfo = executionInfo;
-
- return;
-} /* _makeSourceOrDisassemWindow */
-
-
-/*
- ** _showSourceOrDisassemAndCommand().
- ** Show the Source/Command or the Disassem layout
- */
-static void
-_showSourceOrDisassemAndCommand (TuiLayoutType layoutType)
-{
- if (currentLayout () != layoutType)
- {
- TuiWinInfoPtr *winInfoPtr;
- int srcHeight, cmdHeight;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
-
- if (m_winPtrNotNull (cmdWin))
- cmdHeight = cmdWin->generic.height;
- else
- cmdHeight = termHeight () / 3;
- srcHeight = termHeight () - cmdHeight;
-
-
- if (layoutType == SRC_COMMAND)
- winInfoPtr = &srcWin;
- else
- winInfoPtr = &disassemWin;
-
- if (m_winPtrIsNull (*winInfoPtr))
- {
- if (layoutType == SRC_COMMAND)
- _makeSourceWindow (winInfoPtr, srcHeight - 1, 0);
- else
- _makeDisassemWindow (winInfoPtr, srcHeight - 1, 0);
- _initAndMakeWin ((Opaque *) & locator,
- LOCATOR_WIN,
- 2 /* 1 */ ,
- termWidth (),
- 0,
- srcHeight - 1,
- DONT_BOX_WINDOW);
- }
- else
- {
- _initGenWinInfo (locator,
- LOCATOR_WIN,
- 2 /* 1 */ ,
- termWidth (),
- 0,
- srcHeight - 1);
- (*winInfoPtr)->detail.sourceInfo.hasLocator = TRUE;
- _initGenWinInfo (
- &(*winInfoPtr)->generic,
- (*winInfoPtr)->generic.type,
- srcHeight - 1,
- (*winInfoPtr)->generic.width,
- (*winInfoPtr)->detail.sourceInfo.executionInfo->width,
- 0);
- _initGenWinInfo ((*winInfoPtr)->detail.sourceInfo.executionInfo,
- EXEC_INFO_WIN,
- srcHeight - 1,
- 3,
- 0,
- 0);
- (*winInfoPtr)->canHighlight = TRUE;
- m_beVisible (*winInfoPtr);
- m_beVisible ((*winInfoPtr)->detail.sourceInfo.executionInfo);
- }
- if (m_winPtrNotNull (*winInfoPtr))
- {
- (*winInfoPtr)->detail.sourceInfo.hasLocator = TRUE;
- m_beVisible (locator);
- tuiShowLocatorContent ();
- tuiShowSourceContent (*winInfoPtr);
-
- if (m_winPtrIsNull (cmdWin))
- {
- _makeCommandWindow (&cmdWin, cmdHeight, srcHeight);
- tuiRefreshWin (&cmdWin->generic);
- }
- else
- {
- _initGenWinInfo (&cmdWin->generic,
- cmdWin->generic.type,
- cmdWin->generic.height,
- cmdWin->generic.width,
- cmdWin->generic.origin.x,
- cmdWin->generic.origin.y);
- cmdWin->canHighlight = FALSE;
- m_beVisible (cmdWin);
- }
- }
- setCurrentLayoutTo (layoutType);
- }
-
- return;
-} /* _showSourceOrDisassemAndCommand */
diff --git a/gdb/tui/tuiLayout.h b/gdb/tui/tuiLayout.h
deleted file mode 100644
index f6b0ed79c68..00000000000
--- a/gdb/tui/tuiLayout.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* TUI layout window management.
- Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 TUI_LAYOUT_H
-#define TUI_LAYOUT_H
-
-extern void tuiAddWinToLayout (TuiWinType);
-extern int tuiDefaultWinHeight (TuiWinType, TuiLayoutType);
-extern int tuiDefaultWinViewportHeight (TuiWinType, TuiLayoutType);
-extern TuiStatus tuiSetLayout (TuiLayoutType, TuiRegisterDisplayType);
-
-#endif /*TUI_LAYOUT_H */
diff --git a/gdb/tui/tuiRegs.c b/gdb/tui/tuiRegs.c
deleted file mode 100644
index 3a0c4590c8c..00000000000
--- a/gdb/tui/tuiRegs.c
+++ /dev/null
@@ -1,1047 +0,0 @@
-/* TUI display registers in window.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 "tui.h"
-#include "tuiData.h"
-#include "symtab.h"
-#include "gdbtypes.h"
-#include "gdbcmd.h"
-#include "frame.h"
-#include "regcache.h"
-#include "inferior.h"
-#include "target.h"
-#include "tuiLayout.h"
-#include "tuiWin.h"
-#include "tuiDataWin.h"
-#include "tuiGeneralWin.h"
-#include "tui-file.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-/*****************************************
-** LOCAL DEFINITIONS **
-******************************************/
-#define DOUBLE_FLOAT_LABEL_WIDTH 6
-#define DOUBLE_FLOAT_LABEL_FMT "%6.6s: "
-#define DOUBLE_FLOAT_VALUE_WIDTH 30 /*min of 16 but may be in sci notation */
-
-#define SINGLE_FLOAT_LABEL_WIDTH 6
-#define SINGLE_FLOAT_LABEL_FMT "%6.6s: "
-#define SINGLE_FLOAT_VALUE_WIDTH 25 /* min of 8 but may be in sci notation */
-
-#define SINGLE_LABEL_WIDTH 16
-#define SINGLE_LABEL_FMT "%10.10s: "
-#define SINGLE_VALUE_WIDTH 20 /* minimum of 8 but may be in sci notation */
-
-/* In the code HP gave Cygnus, this was actually a function call to a
- PA-specific function, which was supposed to determine whether the
- target was a 64-bit or 32-bit processor. However, the 64-bit
- support wasn't complete, so we didn't merge that in, so we leave
- this here as a stub. */
-#define IS_64BIT 0
-
-/*****************************************
-** STATIC DATA **
-******************************************/
-
-
-/*****************************************
-** STATIC LOCAL FUNCTIONS FORWARD DECLS **
-******************************************/
-static TuiStatus _tuiSetRegsContent
- (int, int, struct frame_info *, TuiRegisterDisplayType, int);
-static const char *_tuiRegisterName (int);
-static TuiStatus _tuiGetRegisterRawValue (int, char *, struct frame_info *);
-static void _tuiSetRegisterElement
- (int, struct frame_info *, TuiDataElementPtr, int);
-static void _tuiDisplayRegister (int, TuiGenWinInfoPtr, enum precision_type);
-static void _tuiRegisterFormat
- (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
- (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 (TuiRegisterDisplayType);
-static void _tuiToggleFloatRegs_command (char *, int);
-static void _tuiScrollRegsForward_command (char *, int);
-static void _tuiScrollRegsBackward_command (char *, int);
-
-
-
-/*****************************************
-** PUBLIC FUNCTIONS **
-******************************************/
-
-/*
- ** tuiLastRegsLineNo()
- ** Answer the number of the last line in the regs display.
- ** If there are no registers (-1) is returned.
- */
-int
-tuiLastRegsLineNo (void)
-{
- register int numLines = (-1);
-
- if (dataWin->detail.dataDisplayInfo.regsContentCount > 0)
- {
- numLines = (dataWin->detail.dataDisplayInfo.regsContentCount /
- dataWin->detail.dataDisplayInfo.regsColumnCount);
- if (dataWin->detail.dataDisplayInfo.regsContentCount %
- dataWin->detail.dataDisplayInfo.regsColumnCount)
- numLines++;
- }
- return numLines;
-} /* tuiLastRegsLineNo */
-
-
-/*
- ** tuiLineFromRegElementNo()
- ** Answer the line number that the register element at elementNo is
- ** on. If elementNo is greater than the number of register elements
- ** there are, -1 is returned.
- */
-int
-tuiLineFromRegElementNo (int elementNo)
-{
- if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
- {
- int i, line = (-1);
-
- i = 1;
- while (line == (-1))
- {
- if (elementNo <
- (dataWin->detail.dataDisplayInfo.regsColumnCount * i))
- line = i - 1;
- else
- i++;
- }
-
- return line;
- }
- else
- return (-1);
-} /* tuiLineFromRegElementNo */
-
-
-/*
- ** tuiFirstRegElementNoInLine()
- ** Answer the index of the first element in lineNo. If lineNo is
- ** past the register area (-1) is returned.
- */
-int
-tuiFirstRegElementNoInLine (int lineNo)
-{
- if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount)
- <= dataWin->detail.dataDisplayInfo.regsContentCount)
- return ((lineNo + 1) *
- dataWin->detail.dataDisplayInfo.regsColumnCount) -
- dataWin->detail.dataDisplayInfo.regsColumnCount;
- else
- return (-1);
-} /* tuiFirstRegElementNoInLine */
-
-
-/*
- ** tuiLastRegElementNoInLine()
- ** Answer the index of the last element in lineNo. If lineNo is past
- ** the register area (-1) is returned.
- */
-int
-tuiLastRegElementNoInLine (int lineNo)
-{
- if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount) <=
- dataWin->detail.dataDisplayInfo.regsContentCount)
- return ((lineNo + 1) *
- dataWin->detail.dataDisplayInfo.regsColumnCount) - 1;
- else
- return (-1);
-} /* tuiLastRegElementNoInLine */
-
-
-/*
- ** tuiCalculateRegsColumnCount
- ** Calculate the number of columns that should be used to display
- ** the registers.
- */
-int
-tuiCalculateRegsColumnCount (TuiRegisterDisplayType dpyType)
-{
- int colCount, colWidth;
-
- if (IS_64BIT || dpyType == TUI_DFLOAT_REGS)
- colWidth = DOUBLE_FLOAT_VALUE_WIDTH + DOUBLE_FLOAT_LABEL_WIDTH;
- else
- {
- if (dpyType == TUI_SFLOAT_REGS)
- colWidth = SINGLE_FLOAT_VALUE_WIDTH + SINGLE_FLOAT_LABEL_WIDTH;
- else
- colWidth = SINGLE_VALUE_WIDTH + SINGLE_LABEL_WIDTH;
- }
- colCount = (dataWin->generic.width - 2) / colWidth;
-
- return colCount;
-} /* tuiCalulateRegsColumnCount */
-
-
-/*
- ** tuiShowRegisters().
- ** Show the registers int the data window as indicated by dpyType.
- ** If there is any other registers being displayed, then they are
- ** cleared. What registers are displayed is dependent upon dpyType.
- */
-void
-tuiShowRegisters (TuiRegisterDisplayType dpyType)
-{
- TuiStatus ret = TUI_FAILURE;
- int refreshValuesOnly = FALSE;
-
- /* Say that registers should be displayed, even if there is a problem */
- dataWin->detail.dataDisplayInfo.displayRegs = TRUE;
-
- if (target_has_registers)
- {
- refreshValuesOnly =
- (dpyType == dataWin->detail.dataDisplayInfo.regsDisplayType);
- switch (dpyType)
- {
- case TUI_GENERAL_REGS:
- ret = _tuiSetGeneralRegsContent (refreshValuesOnly);
- break;
- case TUI_SFLOAT_REGS:
- case TUI_DFLOAT_REGS:
- ret = _tuiSetFloatRegsContent (dpyType, refreshValuesOnly);
- break;
-
-/* could ifdef out */
-
- case TUI_SPECIAL_REGS:
- ret = _tuiSetSpecialRegsContent (refreshValuesOnly);
- break;
- case TUI_GENERAL_AND_SPECIAL_REGS:
- ret = _tuiSetGeneralAndSpecialRegsContent (refreshValuesOnly);
- break;
-
-/* end of potential if def */
-
- default:
- break;
- }
- }
- if (ret == TUI_FAILURE)
- {
- dataWin->detail.dataDisplayInfo.regsDisplayType = TUI_UNDEFINED_REGS;
- tuiEraseDataContent (NO_REGS_STRING);
- }
- else
- {
- int i;
-
- /* Clear all notation of changed values */
- for (i = 0; (i < dataWin->detail.dataDisplayInfo.regsContentCount); i++)
- {
- TuiGenWinInfoPtr dataItemWin;
-
- dataItemWin = &dataWin->detail.dataDisplayInfo.
- regsContent[i]->whichElement.dataWindow;
- (&((TuiWinElementPtr)
- dataItemWin->content[0])->whichElement.data)->highlight = FALSE;
- }
- dataWin->detail.dataDisplayInfo.regsDisplayType = dpyType;
- tuiDisplayAllData ();
- }
- (tuiLayoutDef ())->regsDisplayType = dpyType;
-
- return;
-} /* tuiShowRegisters */
-
-
-/*
- ** tuiDisplayRegistersFrom().
- ** Function to display the registers in the content from
- ** 'startElementNo' until the end of the register content or the
- ** end of the display height. No checking for displaying past
- ** the end of the registers is done here.
- */
-void
-tuiDisplayRegistersFrom (int startElementNo)
-{
- if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL &&
- dataWin->detail.dataDisplayInfo.regsContentCount > 0)
- {
- register int i = startElementNo;
- int j, valueCharsWide, itemWinWidth, curY, labelWidth;
- enum precision_type precision;
-
- precision = (dataWin->detail.dataDisplayInfo.regsDisplayType
- == TUI_DFLOAT_REGS) ?
- double_precision : unspecified_precision;
- if (IS_64BIT ||
- dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS)
- {
- valueCharsWide = DOUBLE_FLOAT_VALUE_WIDTH;
- labelWidth = DOUBLE_FLOAT_LABEL_WIDTH;
- }
- else
- {
- if (dataWin->detail.dataDisplayInfo.regsDisplayType ==
- TUI_SFLOAT_REGS)
- {
- valueCharsWide = SINGLE_FLOAT_VALUE_WIDTH;
- labelWidth = SINGLE_FLOAT_LABEL_WIDTH;
- }
- else
- {
- valueCharsWide = SINGLE_VALUE_WIDTH;
- labelWidth = SINGLE_LABEL_WIDTH;
- }
- }
- itemWinWidth = valueCharsWide + labelWidth;
- /*
- ** Now create each data "sub" window, and write the display into it.
- */
- curY = 1;
- while (i < dataWin->detail.dataDisplayInfo.regsContentCount &&
- curY <= dataWin->generic.viewportHeight)
- {
- for (j = 0;
- (j < dataWin->detail.dataDisplayInfo.regsColumnCount &&
- i < dataWin->detail.dataDisplayInfo.regsContentCount); j++)
- {
- TuiGenWinInfoPtr dataItemWin;
- TuiDataElementPtr dataElementPtr;
-
- /* create the window if necessary */
- dataItemWin = &dataWin->detail.dataDisplayInfo.
- regsContent[i]->whichElement.dataWindow;
- dataElementPtr = &((TuiWinElementPtr)
- dataItemWin->content[0])->whichElement.data;
- if (dataItemWin->handle == (WINDOW *) NULL)
- {
- dataItemWin->height = 1;
- dataItemWin->width = (precision == double_precision) ?
- itemWinWidth + 2 : itemWinWidth + 1;
- dataItemWin->origin.x = (itemWinWidth * j) + 1;
- dataItemWin->origin.y = curY;
- makeWindow (dataItemWin, DONT_BOX_WINDOW);
- scrollok (dataItemWin->handle, FALSE);
- }
- touchwin (dataItemWin->handle);
-
- /*
- ** Get the printable representation of the register
- ** and display it
- */
- _tuiDisplayRegister (
- dataElementPtr->itemNo, dataItemWin, precision);
- i++; /* next register */
- }
- curY++; /* next row; */
- }
- }
-
- return;
-} /* tuiDisplayRegistersFrom */
-
-
-/*
- ** tuiDisplayRegElementAtLine().
- ** Function to display the registers in the content from
- ** 'startElementNo' on 'startLineNo' until the end of the
- ** register content or the end of the display height.
- ** This function checks that we won't display off the end
- ** of the register display.
- */
-void
-tuiDisplayRegElementAtLine (int startElementNo, int startLineNo)
-{
- if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL &&
- dataWin->detail.dataDisplayInfo.regsContentCount > 0)
- {
- register int elementNo = startElementNo;
-
- if (startElementNo != 0 && startLineNo != 0)
- {
- register int lastLineNo, firstLineOnLastPage;
-
- lastLineNo = tuiLastRegsLineNo ();
- firstLineOnLastPage = lastLineNo - (dataWin->generic.height - 2);
- if (firstLineOnLastPage < 0)
- firstLineOnLastPage = 0;
- /*
- ** If there is no other data displayed except registers,
- ** and the elementNo causes us to scroll past the end of the
- ** registers, adjust what element to really start the display at.
- */
- if (dataWin->detail.dataDisplayInfo.dataContentCount <= 0 &&
- startLineNo > firstLineOnLastPage)
- elementNo = tuiFirstRegElementNoInLine (firstLineOnLastPage);
- }
- tuiDisplayRegistersFrom (elementNo);
- }
-
- return;
-} /* tuiDisplayRegElementAtLine */
-
-
-
-/*
- ** tuiDisplayRegistersFromLine().
- ** Function to display the registers starting at line lineNo in
- ** the data window. Answers the line number that the display
- ** actually started from. If nothing is displayed (-1) is returned.
- */
-int
-tuiDisplayRegistersFromLine (int lineNo, int forceDisplay)
-{
- if (dataWin->detail.dataDisplayInfo.regsContentCount > 0)
- {
- int line, elementNo;
-
- if (lineNo < 0)
- line = 0;
- else if (forceDisplay)
- { /*
- ** If we must display regs (forceDisplay is true), then make
- ** sure that we don't display off the end of the registers.
- */
- if (lineNo >= tuiLastRegsLineNo ())
- {
- if ((line = tuiLineFromRegElementNo (
- dataWin->detail.dataDisplayInfo.regsContentCount - 1)) < 0)
- line = 0;
- }
- else
- line = lineNo;
- }
- else
- line = lineNo;
-
- elementNo = tuiFirstRegElementNoInLine (line);
- if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
- tuiDisplayRegElementAtLine (elementNo, line);
- else
- line = (-1);
-
- return line;
- }
-
- return (-1); /* nothing was displayed */
-} /* tuiDisplayRegistersFromLine */
-
-
-/*
- ** tuiCheckRegisterValues()
- ** This function check all displayed registers for changes in
- ** values, given a particular frame. If the values have changed,
- ** they are updated with the new value and highlighted.
- */
-void
-tuiCheckRegisterValues (struct frame_info *frame)
-{
- if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
- {
- if (dataWin->detail.dataDisplayInfo.regsContentCount <= 0 &&
- dataWin->detail.dataDisplayInfo.displayRegs)
- tuiShowRegisters ((tuiLayoutDef ())->regsDisplayType);
- else
- {
- int i, j;
- char rawBuf[MAX_REGISTER_SIZE];
-
- for (i = 0;
- (i < dataWin->detail.dataDisplayInfo.regsContentCount); i++)
- {
- TuiDataElementPtr dataElementPtr;
- TuiGenWinInfoPtr dataItemWinPtr;
- int wasHilighted;
-
- dataItemWinPtr = &dataWin->detail.dataDisplayInfo.
- regsContent[i]->whichElement.dataWindow;
- dataElementPtr = &((TuiWinElementPtr)
- dataItemWinPtr->content[0])->whichElement.data;
- wasHilighted = dataElementPtr->highlight;
- dataElementPtr->highlight =
- _tuiRegValueHasChanged (dataElementPtr, frame, &rawBuf[0]);
- if (dataElementPtr->highlight)
- {
- int size;
-
- size = DEPRECATED_REGISTER_RAW_SIZE (dataElementPtr->itemNo);
- for (j = 0; j < size; j++)
- ((char *) dataElementPtr->value)[j] = rawBuf[j];
- _tuiDisplayRegister (
- dataElementPtr->itemNo,
- dataItemWinPtr,
- ((dataWin->detail.dataDisplayInfo.regsDisplayType ==
- TUI_DFLOAT_REGS) ?
- double_precision : unspecified_precision));
- }
- else if (wasHilighted)
- {
- dataElementPtr->highlight = FALSE;
- _tuiDisplayRegister (
- dataElementPtr->itemNo,
- dataItemWinPtr,
- ((dataWin->detail.dataDisplayInfo.regsDisplayType ==
- TUI_DFLOAT_REGS) ?
- double_precision : unspecified_precision));
- }
- }
- }
- }
- return;
-} /* tuiCheckRegisterValues */
-
-
-/*
- ** tuiToggleFloatRegs().
- */
-void
-tuiToggleFloatRegs (void)
-{
- TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
-
- if (layoutDef->floatRegsDisplayType == TUI_SFLOAT_REGS)
- layoutDef->floatRegsDisplayType = TUI_DFLOAT_REGS;
- else
- layoutDef->floatRegsDisplayType = TUI_SFLOAT_REGS;
-
- if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible &&
- (dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_SFLOAT_REGS ||
- dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS))
- tuiShowRegisters (layoutDef->floatRegsDisplayType);
-
- return;
-} /* tuiToggleFloatRegs */
-
-
-void
-_initialize_tuiRegs (void)
-{
- if (xdb_commands)
- {
- add_com ("fr", class_tui, _tuiShowFloat_command,
- "Display only floating point registers\n");
- add_com ("gr", class_tui, _tuiShowGeneral_command,
- "Display only general registers\n");
- add_com ("sr", class_tui, _tuiShowSpecial_command,
- "Display only special registers\n");
- add_com ("+r", class_tui, _tuiScrollRegsForward_command,
- "Scroll the registers window forward\n");
- add_com ("-r", class_tui, _tuiScrollRegsBackward_command,
- "Scroll the register window backward\n");
- add_com ("tf", class_tui, _tuiToggleFloatRegs_command,
- "Toggle between single and double precision floating point registers.\n");
- add_cmd (TUI_FLOAT_REGS_NAME_LOWER,
- class_tui,
- _tuiToggleFloatRegs_command,
- "Toggle between single and double precision floating point \
-registers.\n",
- &togglelist);
- }
-}
-
-
-/*****************************************
-** STATIC LOCAL FUNCTIONS **
-******************************************/
-
-
-/*
- ** _tuiRegisterName().
- ** Return the register name.
- */
-static const char *
-_tuiRegisterName (int regNum)
-{
- return REGISTER_NAME (regNum);
-}
-extern int pagination_enabled;
-
-static void
-tui_restore_gdbout (void *ui)
-{
- ui_file_delete (gdb_stdout);
- gdb_stdout = (struct ui_file*) ui;
- pagination_enabled = 1;
-}
-
-/*
- ** _tuiRegisterFormat
- ** Function to format the register name and value into a buffer,
- ** suitable for printing or display
- */
-static void
-_tuiRegisterFormat (char *buf, int bufLen, int regNum,
- TuiDataElementPtr dataElement,
- enum precision_type precision)
-{
- struct ui_file *stream;
- struct ui_file *old_stdout;
- const char *name;
- struct cleanup *cleanups;
- char *p;
- int pos;
-
- name = REGISTER_NAME (regNum);
- if (name == 0)
- {
- strcpy (buf, "");
- return;
- }
-
- pagination_enabled = 0;
- old_stdout = gdb_stdout;
- stream = tui_sfileopen (bufLen);
- gdb_stdout = stream;
- cleanups = make_cleanup (tui_restore_gdbout, (void*) old_stdout);
- gdbarch_print_registers_info (current_gdbarch, stream, deprecated_selected_frame,
- regNum, 1);
-
- /* Save formatted output in the buffer. */
- p = tui_file_get_strbuf (stream);
- pos = 0;
- while (*p && *p == *name++ && bufLen)
- {
- *buf++ = *p++;
- bufLen--;
- pos++;
- }
- while (*p == ' ')
- p++;
- while (pos < 8 && bufLen)
- {
- *buf++ = ' ';
- bufLen--;
- pos++;
- }
- strncpy (buf, p, bufLen);
-
- /* Remove the possible \n. */
- p = strchr (buf, '\n');
- if (p)
- *p = 0;
-
- do_cleanups (cleanups);
-}
-
-
-#define NUM_GENERAL_REGS 32
-/*
- ** _tuiSetGeneralRegsContent().
- ** Set the content of the data window to consist of the general registers.
- */
-static TuiStatus
-_tuiSetGeneralRegsContent (int refreshValuesOnly)
-{
- return (_tuiSetRegsContent (0,
- NUM_GENERAL_REGS - 1,
- deprecated_selected_frame,
- TUI_GENERAL_REGS,
- refreshValuesOnly));
-
-} /* _tuiSetGeneralRegsContent */
-
-
-#ifndef PCOQ_HEAD_REGNUM
-#define START_SPECIAL_REGS 0
-#else
-#define START_SPECIAL_REGS PCOQ_HEAD_REGNUM
-#endif
-
-/*
- ** _tuiSetSpecialRegsContent().
- ** Set the content of the data window to consist of the special registers.
- */
-static TuiStatus
-_tuiSetSpecialRegsContent (int refreshValuesOnly)
-{
- TuiStatus ret = TUI_FAILURE;
- int endRegNum;
-
- endRegNum = FP0_REGNUM - 1;
- ret = _tuiSetRegsContent (START_SPECIAL_REGS,
- endRegNum,
- deprecated_selected_frame,
- TUI_SPECIAL_REGS,
- refreshValuesOnly);
-
- return ret;
-} /* _tuiSetSpecialRegsContent */
-
-
-/*
- ** _tuiSetGeneralAndSpecialRegsContent().
- ** Set the content of the data window to consist of the special registers.
- */
-static TuiStatus
-_tuiSetGeneralAndSpecialRegsContent (int refreshValuesOnly)
-{
- TuiStatus ret = TUI_FAILURE;
- int endRegNum = (-1);
-
- endRegNum = FP0_REGNUM - 1;
- ret = _tuiSetRegsContent (
- 0, endRegNum, deprecated_selected_frame, TUI_SPECIAL_REGS, refreshValuesOnly);
-
- return ret;
-} /* _tuiSetGeneralAndSpecialRegsContent */
-
-/*
- ** _tuiSetFloatRegsContent().
- ** Set the content of the data window to consist of the float registers.
- */
-static TuiStatus
-_tuiSetFloatRegsContent (TuiRegisterDisplayType dpyType, int refreshValuesOnly)
-{
- TuiStatus ret = TUI_FAILURE;
- int startRegNum;
-
- startRegNum = FP0_REGNUM;
- ret = _tuiSetRegsContent (startRegNum,
- NUM_REGS - 1,
- deprecated_selected_frame,
- dpyType,
- refreshValuesOnly);
-
- return ret;
-} /* _tuiSetFloatRegsContent */
-
-
-/*
- ** _tuiRegValueHasChanged().
- ** Answer TRUE if the register's value has changed, FALSE otherwise.
- ** If TRUE, newValue is filled in with the new value.
- */
-static int
-_tuiRegValueHasChanged (TuiDataElementPtr dataElement,
- struct frame_info *frame,
- char *newValue)
-{
- int hasChanged = FALSE;
-
- if (dataElement->itemNo != UNDEFINED_ITEM &&
- _tuiRegisterName (dataElement->itemNo) != (char *) NULL)
- {
- char rawBuf[MAX_REGISTER_SIZE];
- int i;
-
- if (_tuiGetRegisterRawValue (
- dataElement->itemNo, rawBuf, frame) == TUI_SUCCESS)
- {
- int size = DEPRECATED_REGISTER_RAW_SIZE (dataElement->itemNo);
-
- for (i = 0; (i < size && !hasChanged); i++)
- hasChanged = (((char *) dataElement->value)[i] != rawBuf[i]);
- if (hasChanged && newValue != (char *) NULL)
- {
- for (i = 0; i < size; i++)
- newValue[i] = rawBuf[i];
- }
- }
- }
- return hasChanged;
-} /* _tuiRegValueHasChanged */
-
-
-
-/*
- ** _tuiGetRegisterRawValue().
- ** Get the register raw value. The raw value is returned in regValue.
- */
-static TuiStatus
-_tuiGetRegisterRawValue (int regNum, char *regValue, struct frame_info *frame)
-{
- TuiStatus ret = TUI_FAILURE;
-
- if (target_has_registers)
- {
- get_frame_register (frame, regNum, regValue);
- /* NOTE: cagney/2003-03-13: This is bogus. It is refering to
- the register cache and not the frame which could have pulled
- the register value off the stack. */
- if (register_cached (regNum) >= 0)
- ret = TUI_SUCCESS;
- }
- return ret;
-} /* _tuiGetRegisterRawValue */
-
-
-
-/*
- ** _tuiSetRegisterElement().
- ** Function to initialize a data element with the input and
- ** the register value.
- */
-static void
-_tuiSetRegisterElement (int regNum, struct frame_info *frame,
- TuiDataElementPtr dataElement,
- int refreshValueOnly)
-{
- if (dataElement != (TuiDataElementPtr) NULL)
- {
- if (!refreshValueOnly)
- {
- dataElement->itemNo = regNum;
- dataElement->name = _tuiRegisterName (regNum);
- dataElement->highlight = FALSE;
- }
- if (dataElement->value == (Opaque) NULL)
- dataElement->value = (Opaque) xmalloc (MAX_REGISTER_SIZE);
- if (dataElement->value != (Opaque) NULL)
- _tuiGetRegisterRawValue (regNum, dataElement->value, frame);
- }
-
- return;
-} /* _tuiSetRegisterElement */
-
-
-/*
- ** _tuiSetRegsContent().
- ** Set the content of the data window to consist of the registers
- ** numbered from startRegNum to endRegNum. Note that if
- ** refreshValuesOnly is TRUE, startRegNum and endRegNum are ignored.
- */
-static TuiStatus
-_tuiSetRegsContent (int startRegNum, int endRegNum,
- struct frame_info *frame,
- TuiRegisterDisplayType dpyType,
- int refreshValuesOnly)
-{
- TuiStatus ret = TUI_FAILURE;
- int numRegs = endRegNum - startRegNum + 1;
- int allocatedHere = FALSE;
-
- if (dataWin->detail.dataDisplayInfo.regsContentCount > 0 &&
- !refreshValuesOnly)
- {
- freeDataContent (dataWin->detail.dataDisplayInfo.regsContent,
- dataWin->detail.dataDisplayInfo.regsContentCount);
- dataWin->detail.dataDisplayInfo.regsContentCount = 0;
- }
- if (dataWin->detail.dataDisplayInfo.regsContentCount <= 0)
- {
- dataWin->detail.dataDisplayInfo.regsContent =
- allocContent (numRegs, DATA_WIN);
- allocatedHere = TRUE;
- }
-
- if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL)
- {
- int i;
-
- if (!refreshValuesOnly || allocatedHere)
- {
- dataWin->generic.content = (OpaquePtr) NULL;
- dataWin->generic.contentSize = 0;
- addContentElements (&dataWin->generic, numRegs);
- dataWin->detail.dataDisplayInfo.regsContent =
- (TuiWinContent) dataWin->generic.content;
- dataWin->detail.dataDisplayInfo.regsContentCount = numRegs;
- }
- /*
- ** Now set the register names and values
- */
- for (i = startRegNum; (i <= endRegNum); i++)
- {
- TuiGenWinInfoPtr dataItemWin;
-
- dataItemWin = &dataWin->detail.dataDisplayInfo.
- regsContent[i - startRegNum]->whichElement.dataWindow;
- _tuiSetRegisterElement (
- i,
- frame,
- &((TuiWinElementPtr) dataItemWin->content[0])->whichElement.data,
- !allocatedHere && refreshValuesOnly);
- }
- dataWin->detail.dataDisplayInfo.regsColumnCount =
- tuiCalculateRegsColumnCount (dpyType);
-#ifdef LATER
- if (dataWin->detail.dataDisplayInfo.dataContentCount > 0)
- {
- /* delete all the windows? */
- /* realloc content equal to dataContentCount + regsContentCount */
- /* append dataWin->detail.dataDisplayInfo.dataContent to content */
- }
-#endif
- dataWin->generic.contentSize =
- dataWin->detail.dataDisplayInfo.regsContentCount +
- dataWin->detail.dataDisplayInfo.dataContentCount;
- ret = TUI_SUCCESS;
- }
-
- return ret;
-} /* _tuiSetRegsContent */
-
-
-/*
- ** _tuiDisplayRegister().
- ** Function to display a register in a window. If hilite is TRUE,
- ** than the value will be displayed in reverse video
- */
-static void
-_tuiDisplayRegister (int regNum,
- TuiGenWinInfoPtr winInfo, /* the data item window */
- enum precision_type precision)
-{
- if (winInfo->handle != (WINDOW *) NULL)
- {
- int i;
- char buf[40];
- int valueCharsWide, labelWidth;
- TuiDataElementPtr dataElementPtr = &((TuiWinContent)
- winInfo->content)[0]->whichElement.data;
-
- if (IS_64BIT ||
- dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS)
- {
- valueCharsWide = DOUBLE_FLOAT_VALUE_WIDTH;
- labelWidth = DOUBLE_FLOAT_LABEL_WIDTH;
- }
- else
- {
- if (dataWin->detail.dataDisplayInfo.regsDisplayType ==
- TUI_SFLOAT_REGS)
- {
- valueCharsWide = SINGLE_FLOAT_VALUE_WIDTH;
- labelWidth = SINGLE_FLOAT_LABEL_WIDTH;
- }
- else
- {
- valueCharsWide = SINGLE_VALUE_WIDTH;
- labelWidth = SINGLE_LABEL_WIDTH;
- }
- }
-
- buf[0] = (char) 0;
- _tuiRegisterFormat (buf,
- valueCharsWide + labelWidth,
- regNum,
- dataElementPtr,
- precision);
-
- if (dataElementPtr->highlight)
- wstandout (winInfo->handle);
-
- wmove (winInfo->handle, 0, 0);
- for (i = 1; i < winInfo->width; i++)
- waddch (winInfo->handle, ' ');
- wmove (winInfo->handle, 0, 0);
- waddstr (winInfo->handle, buf);
-
- if (dataElementPtr->highlight)
- wstandend (winInfo->handle);
- tuiRefreshWin (winInfo);
- }
- return;
-} /* _tuiDisplayRegister */
-
-
-static void
-_tui_vShowRegisters_commandSupport (TuiRegisterDisplayType dpyType)
-{
-
- if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
- { /* Data window already displayed, show the registers */
- if (dataWin->detail.dataDisplayInfo.regsDisplayType != dpyType)
- tuiShowRegisters (dpyType);
- }
- else
- (tuiLayoutDef ())->regsDisplayType = dpyType;
-
- return;
-} /* _tui_vShowRegisters_commandSupport */
-
-
-static void
-_tuiShowFloat_command (char *arg, int fromTTY)
-{
- if (m_winPtrIsNull (dataWin) || !dataWin->generic.isVisible ||
- (dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_SFLOAT_REGS &&
- dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_DFLOAT_REGS))
- _tui_vShowRegisters_commandSupport ((tuiLayoutDef ())->floatRegsDisplayType);
-
- return;
-} /* _tuiShowFloat_command */
-
-
-static void
-_tuiShowGeneral_command (char *arg, int fromTTY)
-{
- _tui_vShowRegisters_commandSupport (TUI_GENERAL_REGS);
-}
-
-
-static void
-_tuiShowSpecial_command (char *arg, int fromTTY)
-{
- _tui_vShowRegisters_commandSupport (TUI_SPECIAL_REGS);
-}
-
-
-static void
-_tuiToggleFloatRegs_command (char *arg, int fromTTY)
-{
- if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
- tuiToggleFloatRegs ();
- else
- {
- TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
-
- if (layoutDef->floatRegsDisplayType == TUI_SFLOAT_REGS)
- layoutDef->floatRegsDisplayType = TUI_DFLOAT_REGS;
- else
- layoutDef->floatRegsDisplayType = TUI_SFLOAT_REGS;
- }
-
-
- return;
-} /* _tuiToggleFloatRegs_command */
-
-
-static void
-_tuiScrollRegsForward_command (char *arg, int fromTTY)
-{
- tui_scroll (FORWARD_SCROLL, dataWin, 1);
-}
-
-
-static void
-_tuiScrollRegsBackward_command (char *arg, int fromTTY)
-{
- tui_scroll (BACKWARD_SCROLL, dataWin, 1);
-}
diff --git a/gdb/tui/tuiRegs.h b/gdb/tui/tuiRegs.h
deleted file mode 100644
index 8fbfbbf471a..00000000000
--- a/gdb/tui/tuiRegs.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* TUI display registers in window.
- Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 _TUI_REGS_H
-#define _TUI_REGS_H
-
-/*****************************************
-** TYPE DEFINITIONS **
-******************************************/
-
-
-
-/*****************************************
-** PUBLIC FUNCTION EXTERNAL DECLS **
-******************************************/
-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);
-extern int tuiFirstRegElementNoInLine (int lineno);
-
-#endif
-/*_TUI_REGS_H*/
diff --git a/gdb/tui/tuiSource.c b/gdb/tui/tuiSource.c
deleted file mode 100644
index 6428130d780..00000000000
--- a/gdb/tui/tuiSource.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/* TUI display source window.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 <ctype.h>
-#include "symtab.h"
-#include "frame.h"
-#include "breakpoint.h"
-#include "source.h"
-#include "symtab.h"
-
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiStack.h"
-#include "tuiSourceWin.h"
-#include "tuiSource.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-/* Function to display source in the source window. */
-TuiStatus
-tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
-{
- TuiStatus ret = TUI_FAILURE;
-
- if (s != (struct symtab *) NULL && s->filename != (char *) NULL)
- {
- register FILE *stream;
- register int i, desc, c, lineWidth, nlines;
- register char *srcLine = 0;
-
- if ((ret = tuiAllocSourceBuffer (srcWin)) == TUI_SUCCESS)
- {
- lineWidth = srcWin->generic.width - 1;
- /* Take hilite (window border) into account, when calculating
- the number of lines */
- nlines = (lineNo + (srcWin->generic.height - 2)) - lineNo;
- desc = open_source_file (s);
- if (desc < 0)
- {
- if (!noerror)
- {
- char *name = alloca (strlen (s->filename) + 100);
- sprintf (name, "%s:%d", s->filename, lineNo);
- print_sys_errmsg (name, errno);
- }
- ret = TUI_FAILURE;
- }
- else
- {
- if (s->line_charpos == 0)
- find_source_lines (s, desc);
-
- if (lineNo < 1 || lineNo > s->nlines)
- {
- close (desc);
- printf_unfiltered (
- "Line number %d out of range; %s has %d lines.\n",
- lineNo, s->filename, s->nlines);
- }
- else if (lseek (desc, s->line_charpos[lineNo - 1], 0) < 0)
- {
- close (desc);
- perror_with_name (s->filename);
- }
- else
- {
- register int offset, curLineNo, curLine, curLen, threshold;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
- TuiSourceInfoPtr src = &srcWin->detail.sourceInfo;
-
- if (srcWin->generic.title)
- xfree (srcWin->generic.title);
- srcWin->generic.title = xstrdup (s->filename);
-
- if (src->filename)
- xfree (src->filename);
- src->filename = xstrdup (s->filename);
-
- /* Determine the threshold for the length of the line
- and the offset to start the display. */
- offset = src->horizontalOffset;
- threshold = (lineWidth - 1) + offset;
- stream = fdopen (desc, FOPEN_RT);
- clearerr (stream);
- curLine = 0;
- curLineNo = src->startLineOrAddr.lineNo = lineNo;
- if (offset > 0)
- srcLine = (char *) xmalloc (
- (threshold + 1) * sizeof (char));
- while (curLine < nlines)
- {
- TuiWinElementPtr element = (TuiWinElementPtr)
- srcWin->generic.content[curLine];
-
- /* get the first character in the line */
- c = fgetc (stream);
-
- if (offset == 0)
- srcLine = ((TuiWinElementPtr)
- srcWin->generic.content[
- curLine])->whichElement.source.line;
- /* Init the line with the line number */
- sprintf (srcLine, "%-6d", curLineNo);
- curLen = strlen (srcLine);
- i = curLen -
- ((curLen / tuiDefaultTabLen ()) * tuiDefaultTabLen ());
- while (i < tuiDefaultTabLen ())
- {
- srcLine[curLen] = ' ';
- i++;
- curLen++;
- }
- srcLine[curLen] = (char) 0;
-
- /* Set whether element is the execution point and
- whether there is a break point on it. */
- element->whichElement.source.lineOrAddr.lineNo =
- curLineNo;
- element->whichElement.source.isExecPoint =
- (strcmp (((TuiWinElementPtr)
- locator->content[0])->whichElement.locator.fileName,
- s->filename) == 0
- && curLineNo == ((TuiWinElementPtr)
- locator->content[0])->whichElement.locator.lineNo);
- if (c != EOF)
- {
- i = strlen (srcLine) - 1;
- do
- {
- if ((c != '\n') &&
- (c != '\r') && (++i < threshold))
- {
- if (c < 040 && c != '\t')
- {
- srcLine[i++] = '^';
- srcLine[i] = c + 0100;
- }
- else if (c == 0177)
- {
- srcLine[i++] = '^';
- srcLine[i] = '?';
- }
- else
- { /* Store the charcter in the line
- buffer. If it is a tab, then
- translate to the correct number of
- chars so we don't overwrite our
- buffer. */
- if (c == '\t')
- {
- int j, maxTabLen = tuiDefaultTabLen ();
-
- for (j = i - (
- (i / maxTabLen) * maxTabLen);
- ((j < maxTabLen) &&
- i < threshold);
- i++, j++)
- srcLine[i] = ' ';
- i--;
- }
- else
- srcLine[i] = c;
- }
- srcLine[i + 1] = 0;
- }
- else
- { /* If we have not reached EOL, then eat
- chars until we do */
- while (c != EOF && c != '\n' && c != '\r')
- c = fgetc (stream);
- }
- }
- while (c != EOF && c != '\n' && c != '\r' &&
- i < threshold && (c = fgetc (stream)));
- }
- /* Now copy the line taking the offset into account */
- if (strlen (srcLine) > offset)
- strcpy (((TuiWinElementPtr) srcWin->generic.content[
- curLine])->whichElement.source.line,
- &srcLine[offset]);
- else
- ((TuiWinElementPtr)
- srcWin->generic.content[
- curLine])->whichElement.source.line[0] = (char) 0;
- curLine++;
- curLineNo++;
- }
- if (offset > 0)
- tuiFree (srcLine);
- fclose (stream);
- srcWin->generic.contentSize = nlines;
- ret = TUI_SUCCESS;
- }
- }
- }
- }
- return ret;
-}
-
-
-/* elz: this function sets the contents of the source window to empty
- except for a line in the middle with a warning message about the
- source not being available. This function is called by
- tuiEraseSourceContents, which in turn is invoked when the source files
- cannot be accessed */
-
-void
-tuiSetSourceContentNil (TuiWinInfoPtr winInfo, char *warning_string)
-{
- int lineWidth;
- int nLines;
- int curr_line = 0;
-
- lineWidth = winInfo->generic.width - 1;
- nLines = winInfo->generic.height - 2;
-
- /* set to empty each line in the window, except for the one
- which contains the message */
- while (curr_line < winInfo->generic.contentSize)
- {
- /* set the information related to each displayed line
- to null: i.e. the line number is 0, there is no bp,
- it is not where the program is stopped */
-
- TuiWinElementPtr element =
- (TuiWinElementPtr) winInfo->generic.content[curr_line];
- element->whichElement.source.lineOrAddr.lineNo = 0;
- element->whichElement.source.isExecPoint = FALSE;
- element->whichElement.source.hasBreak = FALSE;
-
- /* set the contents of the line to blank */
- element->whichElement.source.line[0] = (char) 0;
-
- /* if the current line is in the middle of the screen, then we want to
- display the 'no source available' message in it.
- Note: the 'weird' arithmetic with the line width and height comes from
- the function tuiEraseSourceContent. We need to keep the screen and the
- window's actual contents in synch */
-
- if (curr_line == (nLines / 2 + 1))
- {
- int i;
- int xpos;
- int warning_length = strlen (warning_string);
- char *srcLine;
-
- srcLine = element->whichElement.source.line;
-
- if (warning_length >= ((lineWidth - 1) / 2))
- xpos = 1;
- else
- xpos = (lineWidth - 1) / 2 - warning_length;
-
- for (i = 0; i < xpos; i++)
- srcLine[i] = ' ';
-
- sprintf (srcLine + i, "%s", warning_string);
-
- for (i = xpos + warning_length; i < lineWidth; i++)
- srcLine[i] = ' ';
-
- srcLine[i] = '\n';
-
- } /* end if */
-
- curr_line++;
-
- } /* end while */
-}
-
-
-/* Function to display source in the source window. This function
- initializes the horizontal scroll to 0. */
-void
-tuiShowSource (struct symtab *s, TuiLineOrAddress line, int noerror)
-{
- srcWin->detail.sourceInfo.horizontalOffset = 0;
- tuiUpdateSourceWindowAsIs(srcWin, s, line, noerror);
-}
-
-
-/* Answer whether the source is currently displayed in the source window. */
-int
-tuiSourceIsDisplayed (char *fname)
-{
- return (srcWin->generic.contentInUse &&
- (strcmp (((TuiWinElementPtr) (locatorWinInfoPtr ())->
- content[0])->whichElement.locator.fileName, fname) == 0));
-}
-
-
-/* Scroll the source forward or backward vertically. */
-void
-tuiVerticalSourceScroll (TuiScrollDirection scrollDirection,
- int numToScroll)
-{
- if (srcWin->generic.content != (OpaquePtr) NULL)
- {
- TuiLineOrAddress l;
- struct symtab *s;
- TuiWinContent content = (TuiWinContent) srcWin->generic.content;
- struct symtab_and_line cursal = get_current_source_symtab_and_line ();
-
- if (cursal.symtab == (struct symtab *) NULL)
- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
- else
- s = cursal.symtab;
-
- if (scrollDirection == FORWARD_SCROLL)
- {
- l.lineNo = content[0]->whichElement.source.lineOrAddr.lineNo +
- numToScroll;
- if (l.lineNo > s->nlines)
- /*line = s->nlines - winInfo->generic.contentSize + 1; */
- /*elz: fix for dts 23398 */
- l.lineNo = content[0]->whichElement.source.lineOrAddr.lineNo;
- }
- else
- {
- l.lineNo = content[0]->whichElement.source.lineOrAddr.lineNo -
- numToScroll;
- if (l.lineNo <= 0)
- l.lineNo = 1;
- }
-
- print_source_lines (s, l.lineNo, l.lineNo + 1, 0);
- }
-}
diff --git a/gdb/tui/tuiSource.h b/gdb/tui/tuiSource.h
deleted file mode 100644
index 96cf8652aca..00000000000
--- a/gdb/tui/tuiSource.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* TUI display source window.
- Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 _TUI_SOURCE_H
-#define _TUI_SOURCE_H
-
-#include "defs.h"
-
-extern TuiStatus tuiSetSourceContent (struct symtab *, int, int);
-extern void tuiShowSource (struct symtab *, TuiLineOrAddress, int);
-extern int tuiSourceIsDisplayed (char *);
-extern void tuiVerticalSourceScroll (TuiScrollDirection, int);
-
-#endif
-/*_TUI_SOURCE_H*/
diff --git a/gdb/tui/tuiSourceWin.c b/gdb/tui/tuiSourceWin.c
deleted file mode 100644
index cf5a0793f65..00000000000
--- a/gdb/tui/tuiSourceWin.c
+++ /dev/null
@@ -1,715 +0,0 @@
-/* TUI display source/assembly window.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 <ctype.h>
-#include "symtab.h"
-#include "frame.h"
-#include "breakpoint.h"
-#include "value.h"
-#include "source.h"
-
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiStack.h"
-#include "tuiWin.h"
-#include "tuiGeneralWin.h"
-#include "tuiSourceWin.h"
-#include "tuiSource.h"
-#include "tuiDisassem.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-/* Function to display the "main" routine. */
-void
-tui_display_main (void)
-{
- if ((sourceWindows ())->count > 0)
- {
- CORE_ADDR addr;
-
- addr = tuiGetBeginAsmAddress ();
- if (addr != (CORE_ADDR) 0)
- {
- struct symtab_and_line sal;
-
- tuiUpdateSourceWindowsWithAddr (addr);
- sal = find_pc_line (addr, 0);
- if (sal.symtab)
- tuiUpdateLocatorFilename (sal.symtab->filename);
- else
- tuiUpdateLocatorFilename ("??");
- }
- }
-}
-
-
-
-/*
- ** tuiUpdateSourceWindow().
- ** Function to display source in the source window. This function
- ** initializes the horizontal scroll to 0.
- */
-void
-tuiUpdateSourceWindow (TuiWinInfoPtr winInfo, struct symtab *s,
- TuiLineOrAddress lineOrAddr, int noerror)
-{
- winInfo->detail.sourceInfo.horizontalOffset = 0;
- tuiUpdateSourceWindowAsIs (winInfo, s, lineOrAddr, noerror);
-
- return;
-} /* tuiUpdateSourceWindow */
-
-
-/*
- ** tuiUpdateSourceWindowAsIs().
- ** Function to display source in the source/asm window. This
- ** function shows the source as specified by the horizontal offset.
- */
-void
-tuiUpdateSourceWindowAsIs (TuiWinInfoPtr winInfo, struct symtab *s,
- TuiLineOrAddress lineOrAddr, int noerror)
-{
- TuiStatus ret;
-
- if (winInfo->generic.type == SRC_WIN)
- ret = tuiSetSourceContent (s, lineOrAddr.lineNo, noerror);
- else
- ret = tuiSetDisassemContent (lineOrAddr.addr);
-
- if (ret == TUI_FAILURE)
- {
- tuiClearSourceContent (winInfo, EMPTY_SOURCE_PROMPT);
- tuiClearExecInfoContent (winInfo);
- }
- else
- {
- tui_update_breakpoint_info (winInfo, 0);
- tuiShowSourceContent (winInfo);
- tuiUpdateExecInfo (winInfo);
- if (winInfo->generic.type == SRC_WIN)
- {
- struct symtab_and_line sal;
-
- sal.line = lineOrAddr.lineNo +
- (winInfo->generic.contentSize - 2);
- sal.symtab = s;
- set_current_source_symtab_and_line (&sal);
- /*
- ** If the focus was in the asm win, put it in the src
- ** win if we don't have a split layout
- */
- if (tuiWinWithFocus () == disassemWin &&
- currentLayout () != SRC_DISASSEM_COMMAND)
- tuiSetWinFocusTo (srcWin);
- }
- }
-
-
- return;
-} /* tuiUpdateSourceWindowAsIs */
-
-
-/*
- ** tuiUpdateSourceWindowsWithAddr().
- ** Function to ensure that the source and/or disassemly windows
- ** reflect the input address.
- */
-void
-tuiUpdateSourceWindowsWithAddr (CORE_ADDR addr)
-{
- if (addr != 0)
- {
- struct symtab_and_line sal;
- TuiLineOrAddress l;
-
- switch (currentLayout ())
- {
- case DISASSEM_COMMAND:
- case DISASSEM_DATA_COMMAND:
- tuiShowDisassem (addr);
- break;
- case SRC_DISASSEM_COMMAND:
- tuiShowDisassemAndUpdateSource (addr);
- break;
- default:
- sal = find_pc_line (addr, 0);
- l.lineNo = sal.line;
- tuiShowSource (sal.symtab, l, FALSE);
- break;
- }
- }
- else
- {
- int i;
-
- for (i = 0; i < (sourceWindows ())->count; i++)
- {
- TuiWinInfoPtr winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i];
-
- tuiClearSourceContent (winInfo, EMPTY_SOURCE_PROMPT);
- tuiClearExecInfoContent (winInfo);
- }
- }
-
- return;
-} /* tuiUpdateSourceWindowsWithAddr */
-
-/*
- ** tuiUpdateSourceWindowsWithLine().
- ** Function to ensure that the source and/or disassemly windows
- ** reflect the input address.
- */
-void
-tuiUpdateSourceWindowsWithLine (struct symtab *s, int line)
-{
- CORE_ADDR pc;
- TuiLineOrAddress l;
-
- switch (currentLayout ())
- {
- case DISASSEM_COMMAND:
- case DISASSEM_DATA_COMMAND:
- find_line_pc (s, line, &pc);
- tuiUpdateSourceWindowsWithAddr (pc);
- break;
- default:
- l.lineNo = line;
- tuiShowSource (s, l, FALSE);
- if (currentLayout () == SRC_DISASSEM_COMMAND)
- {
- find_line_pc (s, line, &pc);
- tuiShowDisassem (pc);
- }
- break;
- }
-
- return;
-} /* tuiUpdateSourceWindowsWithLine */
-
-/*
- ** tuiClearSourceContent().
- */
-void
-tuiClearSourceContent (TuiWinInfoPtr winInfo, int displayPrompt)
-{
- if (m_winPtrNotNull (winInfo))
- {
- register int i;
-
- winInfo->generic.contentInUse = FALSE;
- tuiEraseSourceContent (winInfo, displayPrompt);
- for (i = 0; i < winInfo->generic.contentSize; i++)
- {
- TuiWinElementPtr element =
- (TuiWinElementPtr) winInfo->generic.content[i];
- element->whichElement.source.hasBreak = FALSE;
- element->whichElement.source.isExecPoint = FALSE;
- }
- }
-
- return;
-} /* tuiClearSourceContent */
-
-
-/*
- ** tuiEraseSourceContent().
- */
-void
-tuiEraseSourceContent (TuiWinInfoPtr winInfo, int displayPrompt)
-{
- int xPos;
- int halfWidth = (winInfo->generic.width - 2) / 2;
-
- if (winInfo->generic.handle != (WINDOW *) NULL)
- {
- werase (winInfo->generic.handle);
- checkAndDisplayHighlightIfNeeded (winInfo);
- if (displayPrompt == EMPTY_SOURCE_PROMPT)
- {
- char *noSrcStr;
-
- if (winInfo->generic.type == SRC_WIN)
- noSrcStr = NO_SRC_STRING;
- else
- noSrcStr = NO_DISASSEM_STRING;
- if (strlen (noSrcStr) >= halfWidth)
- xPos = 1;
- else
- xPos = halfWidth - strlen (noSrcStr);
- mvwaddstr (winInfo->generic.handle,
- (winInfo->generic.height / 2),
- xPos,
- noSrcStr);
-
- /* elz: added this function call to set the real contents of
- the window to what is on the screen, so that later calls
- to refresh, do display
- the correct stuff, and not the old image */
-
- tuiSetSourceContentNil (winInfo, noSrcStr);
- }
- tuiRefreshWin (&winInfo->generic);
- }
- return;
-} /* tuiEraseSourceContent */
-
-
-/* Redraw the complete line of a source or disassembly window. */
-static void
-tui_show_source_line (TuiWinInfoPtr winInfo, int lineno)
-{
- TuiWinElementPtr line;
- int x, y;
-
- line = (TuiWinElementPtr) winInfo->generic.content[lineno - 1];
- if (line->whichElement.source.isExecPoint)
- wattron (winInfo->generic.handle, A_STANDOUT);
-
- mvwaddstr (winInfo->generic.handle, lineno, 1,
- line->whichElement.source.line);
- if (line->whichElement.source.isExecPoint)
- wattroff (winInfo->generic.handle, A_STANDOUT);
-
- /* Clear to end of line but stop before the border. */
- getyx (winInfo->generic.handle, y, x);
- while (x + 1 < winInfo->generic.width)
- {
- waddch (winInfo->generic.handle, ' ');
- getyx (winInfo->generic.handle, y, x);
- }
-}
-
-/*
- ** tuiShowSourceContent().
- */
-void
-tuiShowSourceContent (TuiWinInfoPtr winInfo)
-{
- if (winInfo->generic.contentSize > 0)
- {
- int lineno;
-
- for (lineno = 1; lineno <= winInfo->generic.contentSize; lineno++)
- tui_show_source_line (winInfo, lineno);
- }
- else
- tuiEraseSourceContent (winInfo, TRUE);
-
- checkAndDisplayHighlightIfNeeded (winInfo);
- tuiRefreshWin (&winInfo->generic);
- winInfo->generic.contentInUse = TRUE;
-}
-
-
-/*
- ** tuiHorizontalSourceScroll().
- ** Scroll the source forward or backward horizontally
- */
-void
-tuiHorizontalSourceScroll (TuiWinInfoPtr winInfo,
- TuiScrollDirection direction,
- int numToScroll)
-{
- if (winInfo->generic.content != (OpaquePtr) NULL)
- {
- int offset;
- struct symtab *s;
- struct symtab_and_line cursal = get_current_source_symtab_and_line ();
-
- if (cursal.symtab == (struct symtab *) NULL)
- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
- else
- s = cursal.symtab;
-
- if (direction == LEFT_SCROLL)
- offset = winInfo->detail.sourceInfo.horizontalOffset + numToScroll;
- else
- {
- if ((offset =
- winInfo->detail.sourceInfo.horizontalOffset - numToScroll) < 0)
- offset = 0;
- }
- winInfo->detail.sourceInfo.horizontalOffset = offset;
- tuiUpdateSourceWindowAsIs (
- winInfo,
- s,
- ((TuiWinElementPtr)
- winInfo->generic.content[0])->whichElement.source.lineOrAddr,
- FALSE);
- }
-
- return;
-} /* tuiHorizontalSourceScroll */
-
-
-/* Set or clear the hasBreak flag in the line whose line is lineNo. */
-void
-tuiSetIsExecPointAt (TuiLineOrAddress l, TuiWinInfoPtr winInfo)
-{
- int changed = 0;
- int i;
- TuiWinContent content = (TuiWinContent) winInfo->generic.content;
-
- i = 0;
- while (i < winInfo->generic.contentSize)
- {
- int newState;
-
- if (content[i]->whichElement.source.lineOrAddr.addr == l.addr)
- newState = TRUE;
- else
- newState = FALSE;
- if (newState != content[i]->whichElement.source.isExecPoint)
- {
- changed++;
- content[i]->whichElement.source.isExecPoint = newState;
- tui_show_source_line (winInfo, i + 1);
- }
- i++;
- }
- if (changed)
- tuiRefreshWin (&winInfo->generic);
-}
-
-/* Update the execution windows to show the active breakpoints.
- This is called whenever a breakpoint is inserted, removed or
- has its state changed. */
-void
-tui_update_all_breakpoint_info ()
-{
- TuiList* list = sourceWindows ();
- int i;
-
- for (i = 0; i < list->count; i++)
- {
- TuiWinInfoPtr win = (TuiWinInfoPtr) list->list[i];
-
- if (tui_update_breakpoint_info (win, FALSE))
- {
- tuiUpdateExecInfo (win);
- }
- }
-}
-
-
-/* Scan the source window and the breakpoints to update the
- hasBreak information for each line.
- Returns 1 if something changed and the execution window
- must be refreshed. */
-int
-tui_update_breakpoint_info (TuiWinInfoPtr win, int current_only)
-{
- int i;
- int need_refresh = 0;
- TuiSourceInfoPtr src = &win->detail.sourceInfo;
-
- for (i = 0; i < win->generic.contentSize; i++)
- {
- struct breakpoint *bp;
- extern struct breakpoint *breakpoint_chain;
- int mode;
- TuiSourceElement* line;
-
- line = &((TuiWinElementPtr) win->generic.content[i])->whichElement.source;
- if (current_only && !line->isExecPoint)
- continue;
-
- /* Scan each breakpoint to see if the current line has something to
- do with it. Identify enable/disabled breakpoints as well as
- those that we already hit. */
- mode = 0;
- for (bp = breakpoint_chain;
- bp != (struct breakpoint *) NULL;
- bp = bp->next)
- {
- if ((win == srcWin
- && bp->source_file
- && (strcmp (src->filename, bp->source_file) == 0)
- && bp->line_number == line->lineOrAddr.lineNo)
- || (win == disassemWin
- && bp->address == line->lineOrAddr.addr))
- {
- if (bp->enable_state == bp_disabled)
- mode |= TUI_BP_DISABLED;
- else
- mode |= TUI_BP_ENABLED;
- if (bp->hit_count)
- mode |= TUI_BP_HIT;
- if (bp->cond)
- mode |= TUI_BP_CONDITIONAL;
- if (bp->type == bp_hardware_breakpoint)
- mode |= TUI_BP_HARDWARE;
- }
- }
- if (line->hasBreak != mode)
- {
- line->hasBreak = mode;
- need_refresh = 1;
- }
- }
- return need_refresh;
-}
-
-
-/*
- ** tuiSetExecInfoContent().
- ** Function to initialize the content of the execution info window,
- ** based upon the input window which is either the source or
- ** disassembly window.
- */
-TuiStatus
-tuiSetExecInfoContent (TuiWinInfoPtr winInfo)
-{
- TuiStatus ret = TUI_SUCCESS;
-
- if (winInfo->detail.sourceInfo.executionInfo != (TuiGenWinInfoPtr) NULL)
- {
- TuiGenWinInfoPtr execInfoPtr = winInfo->detail.sourceInfo.executionInfo;
-
- if (execInfoPtr->content == (OpaquePtr) NULL)
- execInfoPtr->content =
- (OpaquePtr) allocContent (winInfo->generic.height,
- execInfoPtr->type);
- if (execInfoPtr->content != (OpaquePtr) NULL)
- {
- int i;
-
- tui_update_breakpoint_info (winInfo, 1);
- for (i = 0; i < winInfo->generic.contentSize; i++)
- {
- TuiWinElementPtr element;
- TuiWinElementPtr srcElement;
- int mode;
-
- element = (TuiWinElementPtr) execInfoPtr->content[i];
- srcElement = (TuiWinElementPtr) winInfo->generic.content[i];
-
- memset(element->whichElement.simpleString, ' ',
- sizeof(element->whichElement.simpleString));
- element->whichElement.simpleString[TUI_EXECINFO_SIZE - 1] = 0;
-
- /* Now update the exec info content based upon the state
- of each line as indicated by the source content. */
- mode = srcElement->whichElement.source.hasBreak;
- if (mode & TUI_BP_HIT)
- element->whichElement.simpleString[TUI_BP_HIT_POS] =
- (mode & TUI_BP_HARDWARE) ? 'H' : 'B';
- else if (mode & (TUI_BP_ENABLED | TUI_BP_DISABLED))
- element->whichElement.simpleString[TUI_BP_HIT_POS] =
- (mode & TUI_BP_HARDWARE) ? 'h' : 'b';
-
- if (mode & TUI_BP_ENABLED)
- element->whichElement.simpleString[TUI_BP_BREAK_POS] = '+';
- else if (mode & TUI_BP_DISABLED)
- element->whichElement.simpleString[TUI_BP_BREAK_POS] = '-';
-
- if (srcElement->whichElement.source.isExecPoint)
- element->whichElement.simpleString[TUI_EXEC_POS] = '>';
- }
- execInfoPtr->contentSize = winInfo->generic.contentSize;
- }
- else
- ret = TUI_FAILURE;
- }
-
- return ret;
-}
-
-
-/*
- ** tuiShowExecInfoContent().
- */
-void
-tuiShowExecInfoContent (TuiWinInfoPtr winInfo)
-{
- TuiGenWinInfoPtr execInfo = winInfo->detail.sourceInfo.executionInfo;
- int curLine;
-
- werase (execInfo->handle);
- tuiRefreshWin (execInfo);
- for (curLine = 1; (curLine <= execInfo->contentSize); curLine++)
- mvwaddstr (execInfo->handle,
- curLine,
- 0,
- ((TuiWinElementPtr)
- execInfo->content[curLine - 1])->whichElement.simpleString);
- tuiRefreshWin (execInfo);
- execInfo->contentInUse = TRUE;
-
- return;
-} /* tuiShowExecInfoContent */
-
-
-/*
- ** tuiEraseExecInfoContent().
- */
-void
-tuiEraseExecInfoContent (TuiWinInfoPtr winInfo)
-{
- TuiGenWinInfoPtr execInfo = winInfo->detail.sourceInfo.executionInfo;
-
- werase (execInfo->handle);
- tuiRefreshWin (execInfo);
-
- return;
-} /* tuiEraseExecInfoContent */
-
-/*
- ** tuiClearExecInfoContent().
- */
-void
-tuiClearExecInfoContent (TuiWinInfoPtr winInfo)
-{
- winInfo->detail.sourceInfo.executionInfo->contentInUse = FALSE;
- tuiEraseExecInfoContent (winInfo);
-
- return;
-} /* tuiClearExecInfoContent */
-
-/*
- ** tuiUpdateExecInfo().
- ** Function to update the execution info window
- */
-void
-tuiUpdateExecInfo (TuiWinInfoPtr winInfo)
-{
- tuiSetExecInfoContent (winInfo);
- tuiShowExecInfoContent (winInfo);
-} /* tuiUpdateExecInfo */
-
-TuiStatus
-tuiAllocSourceBuffer (TuiWinInfoPtr winInfo)
-{
- register char *srcLineBuf;
- register int i, lineWidth, maxLines;
- TuiStatus ret = TUI_FAILURE;
-
- maxLines = winInfo->generic.height; /* less the highlight box */
- lineWidth = winInfo->generic.width - 1;
- /*
- ** Allocate the buffer for the source lines. Do this only once since they
- ** will be re-used for all source displays. The only other time this will
- ** be done is when a window's size changes.
- */
- if (winInfo->generic.content == (OpaquePtr) NULL)
- {
- srcLineBuf = (char *) xmalloc ((maxLines * lineWidth) * sizeof (char));
- if (srcLineBuf == (char *) NULL)
- fputs_unfiltered (
- "Unable to Allocate Memory for Source or Disassembly Display.\n",
- gdb_stderr);
- else
- {
- /* allocate the content list */
- if ((winInfo->generic.content =
- (OpaquePtr) allocContent (maxLines, SRC_WIN)) == (OpaquePtr) NULL)
- {
- tuiFree (srcLineBuf);
- srcLineBuf = (char *) NULL;
- fputs_unfiltered (
- "Unable to Allocate Memory for Source or Disassembly Display.\n",
- gdb_stderr);
- }
- }
- for (i = 0; i < maxLines; i++)
- ((TuiWinElementPtr)
- winInfo->generic.content[i])->whichElement.source.line =
- srcLineBuf + (lineWidth * i);
- ret = TUI_SUCCESS;
- }
- else
- ret = TUI_SUCCESS;
-
- return ret;
-} /* tuiAllocSourceBuffer */
-
-
-/*
- ** tuiLineIsDisplayed().
- ** Answer whether the a particular line number or address is displayed
- ** in the current source window.
- */
-int
-tuiLineIsDisplayed (int line, TuiWinInfoPtr winInfo,
- int checkThreshold)
-{
- int isDisplayed = FALSE;
- int i, threshold;
-
- if (checkThreshold)
- threshold = SCROLL_THRESHOLD;
- else
- threshold = 0;
- i = 0;
- while (i < winInfo->generic.contentSize - threshold && !isDisplayed)
- {
- isDisplayed = (((TuiWinElementPtr)
- winInfo->generic.content[i])->whichElement.source.lineOrAddr.lineNo
- == (int) line);
- i++;
- }
-
- return isDisplayed;
-} /* tuiLineIsDisplayed */
-
-
-/*
- ** tuiLineIsDisplayed().
- ** Answer whether the a particular line number or address is displayed
- ** in the current source window.
- */
-int
-tuiAddrIsDisplayed (CORE_ADDR addr, TuiWinInfoPtr winInfo,
- int checkThreshold)
-{
- int isDisplayed = FALSE;
- int i, threshold;
-
- if (checkThreshold)
- threshold = SCROLL_THRESHOLD;
- else
- threshold = 0;
- i = 0;
- while (i < winInfo->generic.contentSize - threshold && !isDisplayed)
- {
- isDisplayed = (((TuiWinElementPtr)
- winInfo->generic.content[i])->whichElement.source.lineOrAddr.addr
- == addr);
- i++;
- }
-
- return isDisplayed;
-}
-
-
-/*****************************************
-** STATIC LOCAL FUNCTIONS **
-******************************************/
diff --git a/gdb/tui/tuiSourceWin.h b/gdb/tui/tuiSourceWin.h
deleted file mode 100644
index cb00449ed2d..00000000000
--- a/gdb/tui/tuiSourceWin.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* TUI display source/assembly window.
- Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 _TUI_SOURCEWIN_H
-#define _TUI_SOURCEWIN_H
-
-/* Update the execution windows to show the active breakpoints.
- This is called whenever a breakpoint is inserted, removed or
- has its state changed. */
-extern void tui_update_all_breakpoint_info (void);
-
-/* Scan the source window and the breakpoints to update the
- hasBreak information for each line.
- Returns 1 if something changed and the execution window
- must be refreshed. */
-extern int tui_update_breakpoint_info (TuiWinInfoPtr win, int current_only);
-
-/* Function to display the "main" routine. */
-extern void tui_display_main (void);
-extern void tuiUpdateSourceWindow (TuiWinInfoPtr, struct symtab *, TuiLineOrAddress,
- int);
-extern void tuiUpdateSourceWindowAsIs (TuiWinInfoPtr, struct symtab *, TuiLineOrAddress,
- int);
-extern void tuiUpdateSourceWindowsWithAddr (CORE_ADDR);
-extern void tuiUpdateSourceWindowsWithLine (struct symtab *, int);
-extern void tuiClearSourceContent (TuiWinInfoPtr, int);
-extern void tuiEraseSourceContent (TuiWinInfoPtr, int);
-extern void tuiSetSourceContentNil (TuiWinInfoPtr, char *);
-extern void tuiShowSourceContent (TuiWinInfoPtr);
-extern void tuiHorizontalSourceScroll (TuiWinInfoPtr, TuiScrollDirection,
- int);
-extern TuiStatus tuiSetExecInfoContent (TuiWinInfoPtr);
-extern void tuiShowExecInfoContent (TuiWinInfoPtr);
-extern void tuiEraseExecInfoContent (TuiWinInfoPtr);
-extern void tuiClearExecInfoContent (TuiWinInfoPtr);
-extern void tuiUpdateExecInfo (TuiWinInfoPtr);
-
-extern void tuiSetIsExecPointAt (TuiLineOrAddress, TuiWinInfoPtr);
-extern TuiStatus tuiAllocSourceBuffer (TuiWinInfoPtr);
-extern int tuiLineIsDisplayed (int, TuiWinInfoPtr, int);
-extern int tuiAddrIsDisplayed (CORE_ADDR, TuiWinInfoPtr, int);
-
-
-/*
- ** Constant definitions
- */
-#define SCROLL_THRESHOLD 2 /* threshold for lazy scroll */
-
-#endif
-/*_TUI_SOURCEWIN_H */
diff --git a/gdb/tui/tuiStack.c b/gdb/tui/tuiStack.c
deleted file mode 100644
index a6ad07af1c3..00000000000
--- a/gdb/tui/tuiStack.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/* TUI display locator.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- 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 "symtab.h"
-#include "breakpoint.h"
-#include "frame.h"
-#include "command.h"
-#include "inferior.h"
-#include "target.h"
-#include "top.h"
-
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiStack.h"
-#include "tuiGeneralWin.h"
-#include "tuiSource.h"
-#include "tuiSourceWin.h"
-#include "tui-file.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-/* Get a printable name for the function at the address.
- The symbol name is demangled if demangling is turned on.
- Returns a pointer to a static area holding the result. */
-static char* tui_get_function_from_frame (struct frame_info *fi);
-
-/* Set the filename portion of the locator. */
-static void tui_set_locator_filename (const char *filename);
-
-/* Update the locator, with the provided arguments. */
-static void tui_set_locator_info (const char *filename, const char *procname,
- int lineno, CORE_ADDR addr);
-
-static void tui_update_command (char *, int);
-
-
-/* Create the status line to display as much information as we
- can on this single line: target name, process number, current
- function, current line, current PC, SingleKey mode. */
-static char*
-tui_make_status_line (TuiLocatorElement* loc)
-{
- char* string;
- char line_buf[50], *pname;
- char* buf;
- int status_size;
- int i, proc_width;
- const char* pid_name;
- const char* pc_buf;
- int target_width;
- int pid_width;
- int line_width;
- int pc_width;
- struct ui_file *pc_out;
-
- if (ptid_equal (inferior_ptid, null_ptid))
- pid_name = "No process";
- else
- pid_name = target_pid_to_str (inferior_ptid);
-
- target_width = strlen (target_shortname);
- if (target_width > MAX_TARGET_WIDTH)
- target_width = MAX_TARGET_WIDTH;
-
- pid_width = strlen (pid_name);
- if (pid_width > MAX_PID_WIDTH)
- pid_width = MAX_PID_WIDTH;
-
- status_size = termWidth ();
- string = (char *) xmalloc (status_size + 1);
- buf = (char*) alloca (status_size + 1);
-
- /* Translate line number and obtain its size. */
- if (loc->lineNo > 0)
- sprintf (line_buf, "%d", loc->lineNo);
- else
- strcpy (line_buf, "??");
- line_width = strlen (line_buf);
- if (line_width < MIN_LINE_WIDTH)
- line_width = MIN_LINE_WIDTH;
-
- /* Translate PC address. */
- pc_out = tui_sfileopen (128);
- print_address_numeric (loc->addr, 1, pc_out);
- pc_buf = tui_file_get_strbuf (pc_out);
- pc_width = strlen (pc_buf);
-
- /* First determine the amount of proc name width we have available.
- The +1 are for a space separator between fields.
- The -1 are to take into account the \0 counted by sizeof. */
- proc_width = (status_size
- - (target_width + 1)
- - (pid_width + 1)
- - (sizeof (PROC_PREFIX) - 1 + 1)
- - (sizeof (LINE_PREFIX) - 1 + line_width + 1)
- - (sizeof (PC_PREFIX) - 1 + pc_width + 1)
- - (tui_current_key_mode == tui_single_key_mode
- ? (sizeof (SINGLE_KEY) - 1 + 1)
- : 0));
-
- /* If there is no room to print the function name, try by removing
- some fields. */
- if (proc_width < MIN_PROC_WIDTH)
- {
- proc_width += target_width + 1;
- target_width = 0;
- if (proc_width < MIN_PROC_WIDTH)
- {
- proc_width += pid_width + 1;
- pid_width = 0;
- if (proc_width <= MIN_PROC_WIDTH)
- {
- proc_width += pc_width + sizeof (PC_PREFIX) - 1 + 1;
- pc_width = 0;
- if (proc_width < 0)
- {
- proc_width += line_width + sizeof (LINE_PREFIX) - 1 + 1;
- line_width = 0;
- if (proc_width < 0)
- proc_width = 0;
- }
- }
- }
- }
-
- /* Now convert elements to string form */
- pname = loc->procName;
-
- /* Now create the locator line from the string version
- of the elements. We could use sprintf() here but
- that wouldn't ensure that we don't overrun the size
- of the allocated buffer. strcat_to_buf() will. */
- *string = (char) 0;
-
- if (target_width > 0)
- {
- sprintf (buf, "%*.*s ",
- -target_width, target_width, target_shortname);
- strcat_to_buf (string, status_size, buf);
- }
- if (pid_width > 0)
- {
- sprintf (buf, "%*.*s ",
- -pid_width, pid_width, pid_name);
- strcat_to_buf (string, status_size, buf);
- }
-
- /* Show whether we are in SingleKey mode. */
- if (tui_current_key_mode == tui_single_key_mode)
- {
- strcat_to_buf (string, status_size, SINGLE_KEY);
- strcat_to_buf (string, status_size, " ");
- }
-
- /* procedure/class name */
- if (proc_width > 0)
- {
- if (strlen (pname) > proc_width)
- sprintf (buf, "%s%*.*s* ", PROC_PREFIX,
- 1 - proc_width, proc_width - 1, pname);
- else
- sprintf (buf, "%s%*.*s ", PROC_PREFIX,
- -proc_width, proc_width, pname);
- strcat_to_buf (string, status_size, buf);
- }
-
- if (line_width > 0)
- {
- sprintf (buf, "%s%*.*s ", LINE_PREFIX,
- -line_width, line_width, line_buf);
- strcat_to_buf (string, status_size, buf);
- }
- if (pc_width > 0)
- {
- strcat_to_buf (string, status_size, PC_PREFIX);
- strcat_to_buf (string, status_size, pc_buf);
- }
-
-
- for (i = strlen (string); i < status_size; i++)
- string[i] = ' ';
- string[status_size] = (char) 0;
-
- ui_file_delete (pc_out);
- return string;
-}
-
-/* Get a printable name for the function at the address.
- The symbol name is demangled if demangling is turned on.
- Returns a pointer to a static area holding the result. */
-static char*
-tui_get_function_from_frame (struct frame_info *fi)
-{
- static char name[256];
- struct ui_file *stream = tui_sfileopen (256);
- char *p;
-
- print_address_symbolic (get_frame_pc (fi), stream, demangle, "");
- p = tui_file_get_strbuf (stream);
-
- /* Use simple heuristics to isolate the function name. The symbol can
- be demangled and we can have function parameters. Remove them because
- the status line is too short to display them. */
- if (*p == '<')
- p++;
- strncpy (name, p, sizeof (name));
- p = strchr (name, '(');
- if (!p)
- p = strchr (name, '>');
- if (p)
- *p = 0;
- p = strchr (name, '+');
- if (p)
- *p = 0;
- ui_file_delete (stream);
- return name;
-}
-
-/*
- ** tuiShowLocatorContent()
- */
-void
-tuiShowLocatorContent (void)
-{
- char *string;
- TuiGenWinInfoPtr locator;
-
- locator = locatorWinInfoPtr ();
-
- if (m_genWinPtrNotNull (locator) && locator->handle != (WINDOW *) NULL)
- {
- TuiWinElementPtr element;
-
- element = (TuiWinElementPtr) locator->content[0];
-
- string = tui_make_status_line (&element->whichElement.locator);
- wmove (locator->handle, 0, 0);
- wstandout (locator->handle);
- waddstr (locator->handle, string);
- wclrtoeol (locator->handle);
- wstandend (locator->handle);
- tuiRefreshWin (locator);
- wmove (locator->handle, 0, 0);
- xfree (string);
- locator->contentInUse = TRUE;
- }
-}
-
-
-/* Set the filename portion of the locator. */
-static void
-tui_set_locator_filename (const char *filename)
-{
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
- TuiLocatorElementPtr element;
-
- if (locator->content[0] == (Opaque) NULL)
- {
- tui_set_locator_info (filename, NULL, 0, 0);
- return;
- }
-
- element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator;
- element->fileName[0] = 0;
- strcat_to_buf (element->fileName, MAX_LOCATOR_ELEMENT_LEN, filename);
-}
-
-/* Update the locator, with the provided arguments. */
-static void
-tui_set_locator_info (const char *filename, const char *procname, int lineno,
- CORE_ADDR addr)
-{
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
- TuiLocatorElementPtr element;
-
- /* Allocate the locator content if necessary. */
- if (locator->contentSize <= 0)
- {
- locator->content = (OpaquePtr) allocContent (1, locator->type);
- locator->contentSize = 1;
- }
-
- element = &((TuiWinElementPtr) locator->content[0])->whichElement.locator;
- element->procName[0] = (char) 0;
- strcat_to_buf (element->procName, MAX_LOCATOR_ELEMENT_LEN, procname);
- element->lineNo = lineno;
- element->addr = addr;
- tui_set_locator_filename (filename);
-}
-
-/* Update only the filename portion of the locator. */
-void
-tuiUpdateLocatorFilename (const char *filename)
-{
- tui_set_locator_filename (filename);
- tuiShowLocatorContent ();
-}
-
-/* Function to print the frame information for the TUI. */
-void
-tuiShowFrameInfo (struct frame_info *fi)
-{
- TuiWinInfoPtr winInfo;
- register int i;
-
- if (fi)
- {
- register int startLine, i;
- CORE_ADDR low;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
- int sourceAlreadyDisplayed;
- struct symtab_and_line sal;
-
- find_frame_sal (fi, &sal);
-
- sourceAlreadyDisplayed = sal.symtab != 0
- && tuiSourceIsDisplayed (sal.symtab->filename);
- tui_set_locator_info (sal.symtab == 0 ? "??" : sal.symtab->filename,
- tui_get_function_from_frame (fi),
- sal.line,
- get_frame_pc (fi));
- tuiShowLocatorContent ();
- startLine = 0;
- for (i = 0; i < (sourceWindows ())->count; i++)
- {
- TuiWhichElement *item;
- winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i];
-
- item = &((TuiWinElementPtr) locator->content[0])->whichElement;
- if (winInfo == srcWin)
- {
- startLine = (item->locator.lineNo -
- (winInfo->generic.viewportHeight / 2)) + 1;
- if (startLine <= 0)
- startLine = 1;
- }
- else
- {
- if (find_pc_partial_function (get_frame_pc (fi), (char **) NULL,
- &low, (CORE_ADDR) NULL) == 0)
- error ("No function contains program counter for selected frame.\n");
- else
- low = tuiGetLowDisassemblyAddress (low, get_frame_pc (fi));
- }
-
- if (winInfo == srcWin)
- {
- TuiLineOrAddress l;
- l.lineNo = startLine;
- if (!(sourceAlreadyDisplayed
- && tuiLineIsDisplayed (item->locator.lineNo, winInfo, TRUE)))
- tuiUpdateSourceWindow (winInfo, sal.symtab, l, TRUE);
- else
- {
- l.lineNo = item->locator.lineNo;
- tuiSetIsExecPointAt (l, winInfo);
- }
- }
- else
- {
- if (winInfo == disassemWin)
- {
- TuiLineOrAddress a;
- a.addr = low;
- if (!tuiAddrIsDisplayed (item->locator.addr, winInfo, TRUE))
- tuiUpdateSourceWindow (winInfo, sal.symtab, a, TRUE);
- else
- {
- a.addr = item->locator.addr;
- tuiSetIsExecPointAt (a, winInfo);
- }
- }
- }
- tuiUpdateExecInfo (winInfo);
- }
- }
- else
- {
- tui_set_locator_info (NULL, NULL, 0, (CORE_ADDR) 0);
- tuiShowLocatorContent ();
- for (i = 0; i < (sourceWindows ())->count; i++)
- {
- winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[i];
- tuiClearSourceContent (winInfo, EMPTY_SOURCE_PROMPT);
- tuiUpdateExecInfo (winInfo);
- }
- }
-}
-
-/* Function to initialize gdb commands, for tui window stack manipulation. */
-void
-_initialize_tuiStack (void)
-{
- add_com ("update", class_tui, tui_update_command,
- "Update the source window and locator to display the current "
- "execution point.\n");
-}
-
-/* Command to update the display with the current execution point. */
-static void
-tui_update_command (char *arg, int from_tty)
-{
- char cmd[sizeof("frame 0")];
-
- strcpy (cmd, "frame 0");
- execute_command (cmd, from_tty);
-}
diff --git a/gdb/tui/tuiStack.h b/gdb/tui/tuiStack.h
deleted file mode 100644
index 14be4974bed..00000000000
--- a/gdb/tui/tuiStack.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* TUI display locator.
- Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 _TUI_STACK_H
-#define _TUI_STACK_H
-/*
- ** This header file supports
- */
-
-extern void tuiUpdateLocatorFilename (const char *);
-extern void tuiShowLocatorContent (void);
-extern void tuiShowFrameInfo (struct frame_info *);
-
-#endif
-/*_TUI_STACK_H*/
diff --git a/gdb/tui/tuiWin.c b/gdb/tui/tuiWin.c
deleted file mode 100644
index ecd4920601b..00000000000
--- a/gdb/tui/tuiWin.c
+++ /dev/null
@@ -1,1615 +0,0 @@
-/* TUI window generic functions.
-
- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
- Inc.
-
- Contributed by Hewlett-Packard Company.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-/* This module contains procedures for handling tui window functions
- like resize, scrolling, scrolling, changing focus, etc.
-
- Author: Susan B. Macchia */
-
-#include "defs.h"
-#include "command.h"
-#include "symtab.h"
-#include "breakpoint.h"
-#include "frame.h"
-#include "cli/cli-cmds.h"
-#include "top.h"
-#include "source.h"
-
-#include "tui.h"
-#include "tuiData.h"
-#include "tuiGeneralWin.h"
-#include "tuiStack.h"
-#include "tuiRegs.h"
-#include "tuiDisassem.h"
-#include "tuiSource.h"
-#include "tuiSourceWin.h"
-#include "tuiDataWin.h"
-
-#ifdef HAVE_NCURSES_H
-#include <ncurses.h>
-#else
-#ifdef HAVE_CURSES_H
-#include <curses.h>
-#endif
-#endif
-
-#include <string.h>
-#include <ctype.h>
-#include <readline/readline.h>
-
-/*******************************
-** Static Local Decls
-********************************/
-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 *);
-
-
-/***************************************
-** DEFINITIONS
-***************************************/
-#define WIN_HEIGHT_USAGE "Usage: winheight <win_name> [+ | -] <#lines>\n"
-#define XDBWIN_HEIGHT_USAGE "Usage: w <#lines>\n"
-#define FOCUS_USAGE "Usage: focus {<win> | next | prev}\n"
-
-/***************************************
-** PUBLIC FUNCTIONS
-***************************************/
-
-#ifndef ACS_LRCORNER
-# define ACS_LRCORNER '+'
-#endif
-#ifndef ACS_LLCORNER
-# define ACS_LLCORNER '+'
-#endif
-#ifndef ACS_ULCORNER
-# define ACS_ULCORNER '+'
-#endif
-#ifndef ACS_URCORNER
-# define ACS_URCORNER '+'
-#endif
-#ifndef ACS_HLINE
-# define ACS_HLINE '-'
-#endif
-#ifndef ACS_VLINE
-# define ACS_VLINE '|'
-#endif
-
-/* Possible values for tui-border-kind variable. */
-static const char *tui_border_kind_enums[] = {
- "space",
- "ascii",
- "acs",
- NULL
-};
-
-/* Possible values for tui-border-mode and tui-active-border-mode. */
-static const char *tui_border_mode_enums[] = {
- "normal",
- "standout",
- "reverse",
- "half",
- "half-standout",
- "bold",
- "bold-standout",
- NULL
-};
-
-struct tui_translate
-{
- const char *name;
- int value;
-};
-
-/* Translation table for border-mode variables.
- The list of values must be terminated by a NULL.
- After the NULL value, an entry defines the default. */
-struct tui_translate tui_border_mode_translate[] = {
- { "normal", A_NORMAL },
- { "standout", A_STANDOUT },
- { "reverse", A_REVERSE },
- { "half", A_DIM },
- { "half-standout", A_DIM | A_STANDOUT },
- { "bold", A_BOLD },
- { "bold-standout", A_BOLD | A_STANDOUT },
- { 0, 0 },
- { "normal", A_NORMAL }
-};
-
-/* Translation tables for border-kind, one for each border
- character (see wborder, border curses operations).
- -1 is used to indicate the ACS because ACS characters
- are determined at run time by curses (depends on terminal). */
-struct tui_translate tui_border_kind_translate_vline[] = {
- { "space", ' ' },
- { "ascii", '|' },
- { "acs", -1 },
- { 0, 0 },
- { "ascii", '|' }
-};
-
-struct tui_translate tui_border_kind_translate_hline[] = {
- { "space", ' ' },
- { "ascii", '-' },
- { "acs", -1 },
- { 0, 0 },
- { "ascii", '-' }
-};
-
-struct tui_translate tui_border_kind_translate_ulcorner[] = {
- { "space", ' ' },
- { "ascii", '+' },
- { "acs", -1 },
- { 0, 0 },
- { "ascii", '+' }
-};
-
-struct tui_translate tui_border_kind_translate_urcorner[] = {
- { "space", ' ' },
- { "ascii", '+' },
- { "acs", -1 },
- { 0, 0 },
- { "ascii", '+' }
-};
-
-struct tui_translate tui_border_kind_translate_llcorner[] = {
- { "space", ' ' },
- { "ascii", '+' },
- { "acs", -1 },
- { 0, 0 },
- { "ascii", '+' }
-};
-
-struct tui_translate tui_border_kind_translate_lrcorner[] = {
- { "space", ' ' },
- { "ascii", '+' },
- { "acs", -1 },
- { 0, 0 },
- { "ascii", '+' }
-};
-
-
-/* Tui configuration variables controlled with set/show command. */
-const char *tui_active_border_mode = "bold-standout";
-const char *tui_border_mode = "normal";
-const char *tui_border_kind = "acs";
-
-/* Tui internal configuration variables. These variables are
- updated by tui_update_variables to reflect the tui configuration
- variables. */
-chtype tui_border_vline;
-chtype tui_border_hline;
-chtype tui_border_ulcorner;
-chtype tui_border_urcorner;
-chtype tui_border_llcorner;
-chtype tui_border_lrcorner;
-
-int tui_border_attrs;
-int tui_active_border_attrs;
-
-/* Identify the item in the translation table.
- When the item is not recognized, use the default entry. */
-static struct tui_translate *
-translate (const char *name, struct tui_translate *table)
-{
- while (table->name)
- {
- if (name && strcmp (table->name, name) == 0)
- return table;
- table++;
- }
-
- /* Not found, return default entry. */
- table++;
- return table;
-}
-
-/* Update the tui internal configuration according to gdb settings.
- Returns 1 if the configuration has changed and the screen should
- be redrawn. */
-int
-tui_update_variables ()
-{
- int need_redraw = 0;
- struct tui_translate *entry;
-
- entry = translate (tui_border_mode, tui_border_mode_translate);
- if (tui_border_attrs != entry->value)
- {
- tui_border_attrs = entry->value;
- need_redraw = 1;
- }
- entry = translate (tui_active_border_mode, tui_border_mode_translate);
- if (tui_active_border_attrs != entry->value)
- {
- tui_active_border_attrs = entry->value;
- need_redraw = 1;
- }
-
- /* If one corner changes, all characters are changed.
- Only check the first one. The ACS characters are determined at
- run time by curses terminal management. */
- entry = translate (tui_border_kind, tui_border_kind_translate_lrcorner);
- if (tui_border_lrcorner != (chtype) entry->value)
- {
- tui_border_lrcorner = (entry->value < 0) ? ACS_LRCORNER : entry->value;
- need_redraw = 1;
- }
- entry = translate (tui_border_kind, tui_border_kind_translate_llcorner);
- tui_border_llcorner = (entry->value < 0) ? ACS_LLCORNER : entry->value;
-
- entry = translate (tui_border_kind, tui_border_kind_translate_ulcorner);
- tui_border_ulcorner = (entry->value < 0) ? ACS_ULCORNER : entry->value;
-
- entry = translate (tui_border_kind, tui_border_kind_translate_urcorner);
- tui_border_urcorner = (entry->value < 0) ? ACS_URCORNER : entry->value;
-
- entry = translate (tui_border_kind, tui_border_kind_translate_hline);
- tui_border_hline = (entry->value < 0) ? ACS_HLINE : entry->value;
-
- entry = translate (tui_border_kind, tui_border_kind_translate_vline);
- tui_border_vline = (entry->value < 0) ? ACS_VLINE : entry->value;
-
- return need_redraw;
-}
-
-static void
-set_tui_cmd (char *args, int from_tty)
-{
-}
-
-static void
-show_tui_cmd (char *args, int from_tty)
-{
-}
-
-/*
- ** _initialize_tuiWin().
- ** Function to initialize gdb commands, for tui window manipulation.
- */
-void
-_initialize_tuiWin (void)
-{
- struct cmd_list_element *c;
- static struct cmd_list_element *tui_setlist;
- static struct cmd_list_element *tui_showlist;
-
- /* Define the classes of commands.
- They will appear in the help list in the reverse of this order. */
- add_cmd ("tui", class_tui, NULL,
- "Text User Interface commands.",
- &cmdlist);
-
- add_prefix_cmd ("tui", class_tui, set_tui_cmd,
- "TUI configuration variables",
- &tui_setlist, "set tui ",
- 0/*allow-unknown*/, &setlist);
- add_prefix_cmd ("tui", class_tui, show_tui_cmd,
- "TUI configuration variables",
- &tui_showlist, "show tui ",
- 0/*allow-unknown*/, &showlist);
-
- add_com ("refresh", class_tui, _tuiRefreshAll_command,
- "Refresh the terminal display.\n");
- if (xdb_commands)
- add_com_alias ("U", "refresh", class_tui, 0);
- add_com ("tabset", class_tui, _tuiSetTabWidth_command,
- "Set the width (in characters) of tab stops.\n\
-Usage: tabset <n>\n");
- add_com ("winheight", class_tui, _tuiSetWinHeight_command,
- "Set the height of a specified window.\n\
-Usage: winheight <win_name> [+ | -] <#lines>\n\
-Window names are:\n\
-src : the source window\n\
-cmd : the command window\n\
-asm : the disassembly window\n\
-regs : the register display\n");
- add_com_alias ("wh", "winheight", class_tui, 0);
- add_info ("win", _tuiAllWindowsInfo,
- "List of all displayed windows.\n");
- add_com ("focus", class_tui, _tuiSetFocus_command,
- "Set focus to named window or next/prev window.\n\
-Usage: focus {<win> | next | prev}\n\
-Valid Window names are:\n\
-src : the source window\n\
-asm : the disassembly window\n\
-regs : the register display\n\
-cmd : the command window\n");
- add_com_alias ("fs", "focus", class_tui, 0);
- add_com ("+", class_tui, _tuiScrollForward_command,
- "Scroll window forward.\nUsage: + [win] [n]\n");
- add_com ("-", class_tui, _tuiScrollBackward_command,
- "Scroll window backward.\nUsage: - [win] [n]\n");
- add_com ("<", class_tui, _tuiScrollLeft_command,
- "Scroll window forward.\nUsage: < [win] [n]\n");
- add_com (">", class_tui, _tuiScrollRight_command,
- "Scroll window backward.\nUsage: > [win] [n]\n");
- if (xdb_commands)
- add_com ("w", class_xdb, _tuiXDBsetWinHeight_command,
- "XDB compatibility command for setting the height of a command window.\n\
-Usage: w <#lines>\n");
-
- /* Define the tui control variables. */
- c = add_set_enum_cmd
- ("border-kind", no_class,
- tui_border_kind_enums, &tui_border_kind,
- "Set the kind of border for TUI windows.\n"
- "This variable controls the border of TUI windows:\n"
- "space use a white space\n"
- "ascii use ascii characters + - | for the border\n"
- "acs use the Alternate Character Set\n",
- &tui_setlist);
- add_show_from_set (c, &tui_showlist);
-
- c = add_set_enum_cmd
- ("border-mode", no_class,
- tui_border_mode_enums, &tui_border_mode,
- "Set the attribute mode to use for the TUI window borders.\n"
- "This variable controls the attributes to use for the window borders:\n"
- "normal normal display\n"
- "standout use highlight mode of terminal\n"
- "reverse use reverse video mode\n"
- "half use half bright\n"
- "half-standout use half bright and standout mode\n"
- "bold use extra bright or bold\n"
- "bold-standout use extra bright or bold with standout mode\n",
- &tui_setlist);
- add_show_from_set (c, &tui_showlist);
-
- c = add_set_enum_cmd
- ("active-border-mode", no_class,
- tui_border_mode_enums, &tui_active_border_mode,
- "Set the attribute mode to use for the active TUI window border.\n"
- "This variable controls the attributes to use for the active window border:\n"
- "normal normal display\n"
- "standout use highlight mode of terminal\n"
- "reverse use reverse video mode\n"
- "half use half bright\n"
- "half-standout use half bright and standout mode\n"
- "bold use extra bright or bold\n"
- "bold-standout use extra bright or bold with standout mode\n",
- &tui_setlist);
- add_show_from_set (c, &tui_showlist);
-}
-
-/* Update gdb's knowledge of the terminal size. */
-void
-tui_update_gdb_sizes ()
-{
- char cmd[50];
- int screenheight, screenwidth;
-
- rl_get_screen_size (&screenheight, &screenwidth);
- /* Set to TUI command window dimension or use readline values. */
- sprintf (cmd, "set width %d",
- tui_active ? cmdWin->generic.width : screenwidth);
- execute_command (cmd, 0);
- sprintf (cmd, "set height %d",
- tui_active ? cmdWin->generic.height : screenheight);
- execute_command (cmd, 0);
-}
-
-
-/*
- ** tuiSetWinFocusTo
- ** Set the logical focus to winInfo
- */
-void
-tuiSetWinFocusTo (TuiWinInfoPtr winInfo)
-{
- if (m_winPtrNotNull (winInfo))
- {
- TuiWinInfoPtr winWithFocus = tuiWinWithFocus ();
-
- if (m_winPtrNotNull (winWithFocus) &&
- winWithFocus->generic.type != CMD_WIN)
- unhighlightWin (winWithFocus);
- tuiSetWinWithFocus (winInfo);
- if (winInfo->generic.type != CMD_WIN)
- highlightWin (winInfo);
- }
-
- return;
-} /* tuiSetWinFocusTo */
-
-
-/*
- ** tuiScrollForward().
- */
-void
-tuiScrollForward (TuiWinInfoPtr winToScroll, int numToScroll)
-{
- if (winToScroll != cmdWin)
- {
- int _numToScroll = numToScroll;
-
- if (numToScroll == 0)
- _numToScroll = winToScroll->generic.height - 3;
- /*
- ** If we are scrolling the source or disassembly window, do a
- ** "psuedo" scroll since not all of the source is in memory,
- ** only what is in the viewport. If winToScroll is the
- ** command window do nothing since the term should handle it.
- */
- if (winToScroll == srcWin)
- tuiVerticalSourceScroll (FORWARD_SCROLL, _numToScroll);
- else if (winToScroll == disassemWin)
- tuiVerticalDisassemScroll (FORWARD_SCROLL, _numToScroll);
- else if (winToScroll == dataWin)
- tuiVerticalDataScroll (FORWARD_SCROLL, _numToScroll);
- }
-
- return;
-} /* tuiScrollForward */
-
-
-/*
- ** tuiScrollBackward().
- */
-void
-tuiScrollBackward (TuiWinInfoPtr winToScroll, int numToScroll)
-{
- if (winToScroll != cmdWin)
- {
- int _numToScroll = numToScroll;
-
- if (numToScroll == 0)
- _numToScroll = winToScroll->generic.height - 3;
- /*
- ** If we are scrolling the source or disassembly window, do a
- ** "psuedo" scroll since not all of the source is in memory,
- ** only what is in the viewport. If winToScroll is the
- ** command window do nothing since the term should handle it.
- */
- if (winToScroll == srcWin)
- tuiVerticalSourceScroll (BACKWARD_SCROLL, _numToScroll);
- else if (winToScroll == disassemWin)
- tuiVerticalDisassemScroll (BACKWARD_SCROLL, _numToScroll);
- else if (winToScroll == dataWin)
- tuiVerticalDataScroll (BACKWARD_SCROLL, _numToScroll);
- }
- return;
-} /* tuiScrollBackward */
-
-
-/*
- ** tuiScrollLeft().
- */
-void
-tuiScrollLeft (TuiWinInfoPtr winToScroll, int numToScroll)
-{
- if (winToScroll != cmdWin)
- {
- int _numToScroll = numToScroll;
-
- if (_numToScroll == 0)
- _numToScroll = 1;
- /*
- ** If we are scrolling the source or disassembly window, do a
- ** "psuedo" scroll since not all of the source is in memory,
- ** only what is in the viewport. If winToScroll is the
- ** command window do nothing since the term should handle it.
- */
- if (winToScroll == srcWin || winToScroll == disassemWin)
- tuiHorizontalSourceScroll (winToScroll, LEFT_SCROLL, _numToScroll);
- }
- return;
-} /* tuiScrollLeft */
-
-
-/*
- ** tuiScrollRight().
- */
-void
-tuiScrollRight (TuiWinInfoPtr winToScroll, int numToScroll)
-{
- if (winToScroll != cmdWin)
- {
- int _numToScroll = numToScroll;
-
- if (_numToScroll == 0)
- _numToScroll = 1;
- /*
- ** If we are scrolling the source or disassembly window, do a
- ** "psuedo" scroll since not all of the source is in memory,
- ** only what is in the viewport. If winToScroll is the
- ** command window do nothing since the term should handle it.
- */
- if (winToScroll == srcWin || winToScroll == disassemWin)
- tuiHorizontalSourceScroll (winToScroll, RIGHT_SCROLL, _numToScroll);
- }
- return;
-} /* tuiScrollRight */
-
-
-/*
- ** tui_scroll().
- ** Scroll a window. Arguments are passed through a va_list.
- */
-void
-tui_scroll (TuiScrollDirection direction,
- TuiWinInfoPtr winToScroll,
- int numToScroll)
-{
- switch (direction)
- {
- case FORWARD_SCROLL:
- tuiScrollForward (winToScroll, numToScroll);
- break;
- case BACKWARD_SCROLL:
- tuiScrollBackward (winToScroll, numToScroll);
- break;
- case LEFT_SCROLL:
- tuiScrollLeft (winToScroll, numToScroll);
- break;
- case RIGHT_SCROLL:
- tuiScrollRight (winToScroll, numToScroll);
- break;
- default:
- break;
- }
-}
-
-
-/*
- ** tuiRefreshAll().
- */
-void
-tuiRefreshAll (void)
-{
- TuiWinType type;
-
- clearok (curscr, TRUE);
- refreshAll (winList);
- for (type = SRC_WIN; type < MAX_MAJOR_WINDOWS; type++)
- {
- if (winList[type] && winList[type]->generic.isVisible)
- {
- switch (type)
- {
- case SRC_WIN:
- case DISASSEM_WIN:
- tuiShowSourceContent (winList[type]);
- checkAndDisplayHighlightIfNeeded (winList[type]);
- tuiEraseExecInfoContent (winList[type]);
- tuiUpdateExecInfo (winList[type]);
- break;
- case DATA_WIN:
- tuiRefreshDataWin ();
- break;
- default:
- break;
- }
- }
- }
- tuiShowLocatorContent ();
-}
-
-
-/*
- ** tuiResizeAll().
- ** Resize all the windows based on the the terminal size. This
- ** function gets called from within the readline sinwinch handler.
- */
-void
-tuiResizeAll (void)
-{
- int heightDiff, widthDiff;
- int screenheight, screenwidth;
-
- rl_get_screen_size (&screenheight, &screenwidth);
- widthDiff = screenwidth - termWidth ();
- heightDiff = screenheight - termHeight ();
- if (heightDiff || widthDiff)
- {
- TuiLayoutType curLayout = currentLayout ();
- TuiWinInfoPtr winWithFocus = tuiWinWithFocus ();
- TuiWinInfoPtr firstWin, secondWin;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
- TuiWinType winType;
- int newHeight, splitDiff, cmdSplitDiff, numWinsDisplayed = 2;
-
- /* turn keypad off while we resize */
- if (winWithFocus != cmdWin)
- keypad (cmdWin->generic.handle, FALSE);
- tui_update_gdb_sizes ();
- setTermHeightTo (screenheight);
- setTermWidthTo (screenwidth);
- if (curLayout == SRC_DISASSEM_COMMAND ||
- curLayout == SRC_DATA_COMMAND || curLayout == DISASSEM_DATA_COMMAND)
- numWinsDisplayed++;
- splitDiff = heightDiff / numWinsDisplayed;
- cmdSplitDiff = splitDiff;
- if (heightDiff % numWinsDisplayed)
- {
- if (heightDiff < 0)
- cmdSplitDiff--;
- else
- cmdSplitDiff++;
- }
- /* now adjust each window */
- clear ();
- refresh ();
- switch (curLayout)
- {
- case SRC_COMMAND:
- case DISASSEM_COMMAND:
- firstWin = (TuiWinInfoPtr) (sourceWindows ())->list[0];
- firstWin->generic.width += widthDiff;
- locator->width += widthDiff;
- /* check for invalid heights */
- if (heightDiff == 0)
- newHeight = firstWin->generic.height;
- else if ((firstWin->generic.height + splitDiff) >=
- (screenheight - MIN_CMD_WIN_HEIGHT - 1))
- newHeight = screenheight - MIN_CMD_WIN_HEIGHT - 1;
- else if ((firstWin->generic.height + splitDiff) <= 0)
- newHeight = MIN_WIN_HEIGHT;
- else
- newHeight = firstWin->generic.height + splitDiff;
-
- _makeInvisibleAndSetNewHeight (firstWin, newHeight);
- cmdWin->generic.origin.y = locator->origin.y + 1;
- cmdWin->generic.width += widthDiff;
- newHeight = screenheight - cmdWin->generic.origin.y;
- _makeInvisibleAndSetNewHeight (cmdWin, newHeight);
- _makeVisibleWithNewHeight (firstWin);
- _makeVisibleWithNewHeight (cmdWin);
- if (firstWin->generic.contentSize <= 0)
- tuiEraseSourceContent (firstWin, EMPTY_SOURCE_PROMPT);
- break;
- default:
- if (curLayout == SRC_DISASSEM_COMMAND)
- {
- firstWin = srcWin;
- firstWin->generic.width += widthDiff;
- secondWin = disassemWin;
- secondWin->generic.width += widthDiff;
- }
- else
- {
- firstWin = dataWin;
- firstWin->generic.width += widthDiff;
- secondWin = (TuiWinInfoPtr) (sourceWindows ())->list[0];
- secondWin->generic.width += widthDiff;
- }
- /* Change the first window's height/width */
- /* check for invalid heights */
- if (heightDiff == 0)
- newHeight = firstWin->generic.height;
- else if ((firstWin->generic.height +
- secondWin->generic.height + (splitDiff * 2)) >=
- (screenheight - MIN_CMD_WIN_HEIGHT - 1))
- newHeight = (screenheight - MIN_CMD_WIN_HEIGHT - 1) / 2;
- else if ((firstWin->generic.height + splitDiff) <= 0)
- newHeight = MIN_WIN_HEIGHT;
- else
- newHeight = firstWin->generic.height + splitDiff;
- _makeInvisibleAndSetNewHeight (firstWin, newHeight);
-
- if (firstWin == dataWin && widthDiff != 0)
- firstWin->detail.dataDisplayInfo.regsColumnCount =
- tuiCalculateRegsColumnCount (
- firstWin->detail.dataDisplayInfo.regsDisplayType);
- locator->width += widthDiff;
-
- /* Change the second window's height/width */
- /* check for invalid heights */
- if (heightDiff == 0)
- newHeight = secondWin->generic.height;
- else if ((firstWin->generic.height +
- secondWin->generic.height + (splitDiff * 2)) >=
- (screenheight - MIN_CMD_WIN_HEIGHT - 1))
- {
- newHeight = screenheight - MIN_CMD_WIN_HEIGHT - 1;
- if (newHeight % 2)
- newHeight = (newHeight / 2) + 1;
- else
- newHeight /= 2;
- }
- else if ((secondWin->generic.height + splitDiff) <= 0)
- newHeight = MIN_WIN_HEIGHT;
- else
- newHeight = secondWin->generic.height + splitDiff;
- secondWin->generic.origin.y = firstWin->generic.height - 1;
- _makeInvisibleAndSetNewHeight (secondWin, newHeight);
-
- /* Change the command window's height/width */
- cmdWin->generic.origin.y = locator->origin.y + 1;
- _makeInvisibleAndSetNewHeight (
- cmdWin, cmdWin->generic.height + cmdSplitDiff);
- _makeVisibleWithNewHeight (firstWin);
- _makeVisibleWithNewHeight (secondWin);
- _makeVisibleWithNewHeight (cmdWin);
- if (firstWin->generic.contentSize <= 0)
- tuiEraseSourceContent (firstWin, EMPTY_SOURCE_PROMPT);
- if (secondWin->generic.contentSize <= 0)
- tuiEraseSourceContent (secondWin, EMPTY_SOURCE_PROMPT);
- break;
- }
- /*
- ** Now remove all invisible windows, and their content so that they get
- ** created again when called for with the new size
- */
- for (winType = SRC_WIN; (winType < MAX_MAJOR_WINDOWS); winType++)
- {
- if (winType != CMD_WIN && m_winPtrNotNull (winList[winType]) &&
- !winList[winType]->generic.isVisible)
- {
- freeWindow (winList[winType]);
- winList[winType] = (TuiWinInfoPtr) NULL;
- }
- }
- tuiSetWinResizedTo (TRUE);
- /* turn keypad back on, unless focus is in the command window */
- if (winWithFocus != cmdWin)
- keypad (cmdWin->generic.handle, TRUE);
- }
- return;
-} /* tuiResizeAll */
-
-
-/*
- ** tuiSigwinchHandler()
- ** SIGWINCH signal handler for the tui. This signal handler is
- ** always called, even when the readline package clears signals
- ** because it is set as the old_sigwinch() (TUI only)
- */
-void
-tuiSigwinchHandler (int signal)
-{
- /*
- ** Say that a resize was done so that the readline can do it
- ** later when appropriate.
- */
- tuiSetWinResizedTo (TRUE);
-
- return;
-} /* tuiSigwinchHandler */
-
-
-
-/*************************
-** STATIC LOCAL FUNCTIONS
-**************************/
-
-
-/*
- ** _tuiScrollForward_command().
- */
-static void
-_tuiScrollForward_command (char *arg, int fromTTY)
-{
- int numToScroll = 1;
- TuiWinInfoPtr winToScroll;
-
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- if (arg == (char *) NULL)
- _parseScrollingArgs (arg, &winToScroll, (int *) NULL);
- else
- _parseScrollingArgs (arg, &winToScroll, &numToScroll);
- tui_scroll (FORWARD_SCROLL, winToScroll, numToScroll);
-}
-
-
-/*
- ** _tuiScrollBackward_command().
- */
-static void
-_tuiScrollBackward_command (char *arg, int fromTTY)
-{
- int numToScroll = 1;
- TuiWinInfoPtr winToScroll;
-
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- if (arg == (char *) NULL)
- _parseScrollingArgs (arg, &winToScroll, (int *) NULL);
- else
- _parseScrollingArgs (arg, &winToScroll, &numToScroll);
- tui_scroll (BACKWARD_SCROLL, winToScroll, numToScroll);
-}
-
-
-/*
- ** _tuiScrollLeft_command().
- */
-static void
-_tuiScrollLeft_command (char *arg, int fromTTY)
-{
- int numToScroll;
- TuiWinInfoPtr winToScroll;
-
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- _parseScrollingArgs (arg, &winToScroll, &numToScroll);
- tui_scroll (LEFT_SCROLL, winToScroll, numToScroll);
-}
-
-
-/*
- ** _tuiScrollRight_command().
- */
-static void
-_tuiScrollRight_command (char *arg, int fromTTY)
-{
- int numToScroll;
- TuiWinInfoPtr winToScroll;
-
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- _parseScrollingArgs (arg, &winToScroll, &numToScroll);
- tui_scroll (RIGHT_SCROLL, winToScroll, numToScroll);
-}
-
-
-/*
- ** _tuiSetFocus().
- ** Set focus to the window named by 'arg'
- */
-static void
-_tuiSetFocus (char *arg, int fromTTY)
-{
- if (arg != (char *) NULL)
- {
- char *bufPtr = (char *) xstrdup (arg);
- int i;
- TuiWinInfoPtr winInfo = (TuiWinInfoPtr) NULL;
-
- for (i = 0; (i < strlen (bufPtr)); i++)
- bufPtr[i] = toupper (arg[i]);
-
- if (subset_compare (bufPtr, "NEXT"))
- winInfo = tuiNextWin (tuiWinWithFocus ());
- else if (subset_compare (bufPtr, "PREV"))
- winInfo = tuiPrevWin (tuiWinWithFocus ());
- else
- winInfo = partialWinByName (bufPtr);
-
- if (winInfo == (TuiWinInfoPtr) NULL || !winInfo->generic.isVisible)
- warning ("Invalid window specified. \n\
-The window name specified must be valid and visible.\n");
- else
- {
- tuiSetWinFocusTo (winInfo);
- keypad (cmdWin->generic.handle, (winInfo != cmdWin));
- }
-
- if (dataWin && dataWin->generic.isVisible)
- tuiRefreshDataWin ();
- tuiFree (bufPtr);
- printf_filtered ("Focus set to %s window.\n",
- winName ((TuiGenWinInfoPtr) tuiWinWithFocus ()));
- }
- else
- warning ("Incorrect Number of Arguments.\n%s", FOCUS_USAGE);
-
- return;
-} /* _tuiSetFocus */
-
-/*
- ** _tuiSetFocus_command()
- */
-static void
-_tuiSetFocus_command (char *arg, int fromTTY)
-{
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- _tuiSetFocus (arg, fromTTY);
-}
-
-
-/*
- ** _tuiAllWindowsInfo().
- */
-static void
-_tuiAllWindowsInfo (char *arg, int fromTTY)
-{
- TuiWinType type;
- TuiWinInfoPtr winWithFocus = tuiWinWithFocus ();
-
- for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++)
- if (winList[type] && winList[type]->generic.isVisible)
- {
- if (winWithFocus == winList[type])
- printf_filtered (" %s\t(%d lines) <has focus>\n",
- winName (&winList[type]->generic),
- winList[type]->generic.height);
- else
- printf_filtered (" %s\t(%d lines)\n",
- winName (&winList[type]->generic),
- winList[type]->generic.height);
- }
-
- return;
-} /* _tuiAllWindowsInfo */
-
-
-/*
- ** _tuiRefreshAll_command().
- */
-static void
-_tuiRefreshAll_command (char *arg, int fromTTY)
-{
- /* Make sure the curses mode is enabled. */
- tui_enable ();
-
- tuiRefreshAll ();
-}
-
-
-/*
- ** _tuiSetWinTabWidth_command().
- ** Set the height of the specified window.
- */
-static void
-_tuiSetTabWidth_command (char *arg, int fromTTY)
-{
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- if (arg != (char *) NULL)
- {
- int ts;
-
- ts = atoi (arg);
- if (ts > 0)
- tuiSetDefaultTabLen (ts);
- else
- warning ("Tab widths greater than 0 must be specified.\n");
- }
-
- return;
-} /* _tuiSetTabWidth_command */
-
-
-/*
- ** _tuiSetWinHeight().
- ** Set the height of the specified window.
- */
-static void
-_tuiSetWinHeight (char *arg, int fromTTY)
-{
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- if (arg != (char *) NULL)
- {
- char *buf = xstrdup (arg);
- char *bufPtr = buf;
- char *wname = (char *) NULL;
- int newHeight, i;
- TuiWinInfoPtr winInfo;
-
- wname = bufPtr;
- bufPtr = strchr (bufPtr, ' ');
- if (bufPtr != (char *) NULL)
- {
- *bufPtr = (char) 0;
-
- /*
- ** Validate the window name
- */
- for (i = 0; i < strlen (wname); i++)
- wname[i] = toupper (wname[i]);
- winInfo = partialWinByName (wname);
-
- if (winInfo == (TuiWinInfoPtr) NULL || !winInfo->generic.isVisible)
- warning ("Invalid window specified. \n\
-The window name specified must be valid and visible.\n");
- else
- {
- /* Process the size */
- while (*(++bufPtr) == ' ')
- ;
-
- if (*bufPtr != (char) 0)
- {
- int negate = FALSE;
- int fixedSize = TRUE;
- int inputNo;;
-
- if (*bufPtr == '+' || *bufPtr == '-')
- {
- if (*bufPtr == '-')
- negate = TRUE;
- fixedSize = FALSE;
- bufPtr++;
- }
- inputNo = atoi (bufPtr);
- if (inputNo > 0)
- {
- if (negate)
- inputNo *= (-1);
- if (fixedSize)
- newHeight = inputNo;
- else
- newHeight = winInfo->generic.height + inputNo;
- /*
- ** Now change the window's height, and adjust all
- ** other windows around it
- */
- if (_tuiAdjustWinHeights (winInfo,
- newHeight) == TUI_FAILURE)
- warning ("Invalid window height specified.\n%s",
- WIN_HEIGHT_USAGE);
- else
- tui_update_gdb_sizes ();
- }
- else
- warning ("Invalid window height specified.\n%s",
- WIN_HEIGHT_USAGE);
- }
- }
- }
- else
- printf_filtered (WIN_HEIGHT_USAGE);
-
- if (buf != (char *) NULL)
- tuiFree (buf);
- }
- else
- printf_filtered (WIN_HEIGHT_USAGE);
-
- return;
-} /* _tuiSetWinHeight */
-
-/*
- ** _tuiSetWinHeight_command().
- ** Set the height of the specified window, with va_list.
- */
-static void
-_tuiSetWinHeight_command (char *arg, int fromTTY)
-{
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- _tuiSetWinHeight (arg, fromTTY);
-}
-
-
-/*
- ** _tuiXDBsetWinHeight().
- ** XDB Compatibility command for setting the window height. This will
- ** increase or decrease the command window by the specified amount.
- */
-static void
-_tuiXDBsetWinHeight (char *arg, int fromTTY)
-{
- /* Make sure the curses mode is enabled. */
- tui_enable ();
- if (arg != (char *) NULL)
- {
- int inputNo = atoi (arg);
-
- if (inputNo > 0)
- { /* Add 1 for the locator */
- int newHeight = termHeight () - (inputNo + 1);
-
- if (!_newHeightOk (winList[CMD_WIN], newHeight) ||
- _tuiAdjustWinHeights (winList[CMD_WIN],
- newHeight) == TUI_FAILURE)
- warning ("Invalid window height specified.\n%s",
- XDBWIN_HEIGHT_USAGE);
- }
- else
- warning ("Invalid window height specified.\n%s",
- XDBWIN_HEIGHT_USAGE);
- }
- else
- warning ("Invalid window height specified.\n%s", XDBWIN_HEIGHT_USAGE);
-
- return;
-} /* _tuiXDBsetWinHeight */
-
-/*
- ** _tuiSetWinHeight_command().
- ** Set the height of the specified window, with va_list.
- */
-static void
-_tuiXDBsetWinHeight_command (char *arg, int fromTTY)
-{
- _tuiXDBsetWinHeight (arg, fromTTY);
-}
-
-
-/*
- ** _tuiAdjustWinHeights().
- ** Function to adjust all window heights around the primary
- */
-static TuiStatus
-_tuiAdjustWinHeights (TuiWinInfoPtr primaryWinInfo, int newHeight)
-{
- TuiStatus status = TUI_FAILURE;
-
- if (_newHeightOk (primaryWinInfo, newHeight))
- {
- status = TUI_SUCCESS;
- if (newHeight != primaryWinInfo->generic.height)
- {
- int diff;
- TuiWinInfoPtr winInfo;
- TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
- TuiLayoutType curLayout = currentLayout ();
-
- diff = (newHeight - primaryWinInfo->generic.height) * (-1);
- if (curLayout == SRC_COMMAND || curLayout == DISASSEM_COMMAND)
- {
- TuiWinInfoPtr srcWinInfo;
-
- _makeInvisibleAndSetNewHeight (primaryWinInfo, newHeight);
- if (primaryWinInfo->generic.type == CMD_WIN)
- {
- winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[0];
- srcWinInfo = winInfo;
- }
- else
- {
- winInfo = winList[CMD_WIN];
- srcWinInfo = primaryWinInfo;
- }
- _makeInvisibleAndSetNewHeight (winInfo,
- winInfo->generic.height + diff);
- cmdWin->generic.origin.y = locator->origin.y + 1;
- _makeVisibleWithNewHeight (winInfo);
- _makeVisibleWithNewHeight (primaryWinInfo);
- if (srcWinInfo->generic.contentSize <= 0)
- tuiEraseSourceContent (srcWinInfo, EMPTY_SOURCE_PROMPT);
- }
- else
- {
- TuiWinInfoPtr firstWin, secondWin;
-
- if (curLayout == SRC_DISASSEM_COMMAND)
- {
- firstWin = srcWin;
- secondWin = disassemWin;
- }
- else
- {
- firstWin = dataWin;
- secondWin = (TuiWinInfoPtr) (sourceWindows ())->list[0];
- }
- if (primaryWinInfo == cmdWin)
- { /*
- ** Split the change in height accross the 1st & 2nd windows
- ** adjusting them as well.
- */
- int firstSplitDiff = diff / 2; /* subtract the locator */
- int secondSplitDiff = firstSplitDiff;
-
- if (diff % 2)
- {
- if (firstWin->generic.height >
- secondWin->generic.height)
- if (diff < 0)
- firstSplitDiff--;
- else
- firstSplitDiff++;
- else
- {
- if (diff < 0)
- secondSplitDiff--;
- else
- secondSplitDiff++;
- }
- }
- /* make sure that the minimum hieghts are honored */
- while ((firstWin->generic.height + firstSplitDiff) < 3)
- {
- firstSplitDiff++;
- secondSplitDiff--;
- }
- while ((secondWin->generic.height + secondSplitDiff) < 3)
- {
- secondSplitDiff++;
- firstSplitDiff--;
- }
- _makeInvisibleAndSetNewHeight (
- firstWin,
- firstWin->generic.height + firstSplitDiff);
- secondWin->generic.origin.y = firstWin->generic.height - 1;
- _makeInvisibleAndSetNewHeight (
- secondWin, secondWin->generic.height + secondSplitDiff);
- cmdWin->generic.origin.y = locator->origin.y + 1;
- _makeInvisibleAndSetNewHeight (cmdWin, newHeight);
- }
- else
- {
- if ((cmdWin->generic.height + diff) < 1)
- { /*
- ** If there is no way to increase the command window
- ** take real estate from the 1st or 2nd window.
- */
- if ((cmdWin->generic.height + diff) < 1)
- {
- int i;
- for (i = cmdWin->generic.height + diff;
- (i < 1); i++)
- if (primaryWinInfo == firstWin)
- secondWin->generic.height--;
- else
- firstWin->generic.height--;
- }
- }
- if (primaryWinInfo == firstWin)
- _makeInvisibleAndSetNewHeight (firstWin, newHeight);
- else
- _makeInvisibleAndSetNewHeight (
- firstWin,
- firstWin->generic.height);
- secondWin->generic.origin.y = firstWin->generic.height - 1;
- if (primaryWinInfo == secondWin)
- _makeInvisibleAndSetNewHeight (secondWin, newHeight);
- else
- _makeInvisibleAndSetNewHeight (
- secondWin, secondWin->generic.height);
- cmdWin->generic.origin.y = locator->origin.y + 1;
- if ((cmdWin->generic.height + diff) < 1)
- _makeInvisibleAndSetNewHeight (cmdWin, 1);
- else
- _makeInvisibleAndSetNewHeight (
- cmdWin, cmdWin->generic.height + diff);
- }
- _makeVisibleWithNewHeight (cmdWin);
- _makeVisibleWithNewHeight (secondWin);
- _makeVisibleWithNewHeight (firstWin);
- if (firstWin->generic.contentSize <= 0)
- tuiEraseSourceContent (firstWin, EMPTY_SOURCE_PROMPT);
- if (secondWin->generic.contentSize <= 0)
- tuiEraseSourceContent (secondWin, EMPTY_SOURCE_PROMPT);
- }
- }
- }
-
- return status;
-} /* _tuiAdjustWinHeights */
-
-
-/*
- ** _makeInvisibleAndSetNewHeight().
- ** Function make the target window (and auxillary windows associated
- ** with the targer) invisible, and set the new height and location.
- */
-static void
-_makeInvisibleAndSetNewHeight (TuiWinInfoPtr winInfo, int height)
-{
- int i;
- TuiGenWinInfoPtr genWinInfo;
-
-
- m_beInvisible (&winInfo->generic);
- winInfo->generic.height = height;
- if (height > 1)
- winInfo->generic.viewportHeight = height - 1;
- else
- winInfo->generic.viewportHeight = height;
- if (winInfo != cmdWin)
- winInfo->generic.viewportHeight--;
-
- /* Now deal with the auxillary windows associated with winInfo */
- switch (winInfo->generic.type)
- {
- case SRC_WIN:
- case DISASSEM_WIN:
- genWinInfo = winInfo->detail.sourceInfo.executionInfo;
- m_beInvisible (genWinInfo);
- genWinInfo->height = height;
- genWinInfo->origin.y = winInfo->generic.origin.y;
- if (height > 1)
- genWinInfo->viewportHeight = height - 1;
- else
- genWinInfo->viewportHeight = height;
- if (winInfo != cmdWin)
- genWinInfo->viewportHeight--;
-
- if (m_hasLocator (winInfo))
- {
- genWinInfo = locatorWinInfoPtr ();
- m_beInvisible (genWinInfo);
- genWinInfo->origin.y = winInfo->generic.origin.y + height;
- }
- break;
- case DATA_WIN:
- /* delete all data item windows */
- for (i = 0; i < winInfo->generic.contentSize; i++)
- {
- genWinInfo = (TuiGenWinInfoPtr) & ((TuiWinElementPtr)
- winInfo->generic.content[i])->whichElement.dataWindow;
- tuiDelwin (genWinInfo->handle);
- genWinInfo->handle = (WINDOW *) NULL;
- }
- break;
- default:
- break;
- }
-}
-
-
-/*
- ** _makeVisibleWithNewHeight().
- ** Function to make the windows with new heights visible.
- ** This means re-creating the windows' content since the window
- ** had to be destroyed to be made invisible.
- */
-static void
-_makeVisibleWithNewHeight (TuiWinInfoPtr winInfo)
-{
- struct symtab *s;
-
- m_beVisible (&winInfo->generic);
- checkAndDisplayHighlightIfNeeded (winInfo);
- switch (winInfo->generic.type)
- {
- case SRC_WIN:
- case DISASSEM_WIN:
- freeWinContent (winInfo->detail.sourceInfo.executionInfo);
- m_beVisible (winInfo->detail.sourceInfo.executionInfo);
- if (winInfo->generic.content != (OpaquePtr) NULL)
- {
- TuiLineOrAddress lineOrAddr;
- struct symtab_and_line cursal
- = get_current_source_symtab_and_line ();
-
- if (winInfo->generic.type == SRC_WIN)
- lineOrAddr.lineNo =
- winInfo->detail.sourceInfo.startLineOrAddr.lineNo;
- else
- lineOrAddr.addr =
- winInfo->detail.sourceInfo.startLineOrAddr.addr;
- freeWinContent (&winInfo->generic);
- tuiUpdateSourceWindow (winInfo,
- cursal.symtab, lineOrAddr, TRUE);
- }
- else if (deprecated_selected_frame != (struct frame_info *) NULL)
- {
- TuiLineOrAddress line;
- struct symtab_and_line cursal = get_current_source_symtab_and_line ();
-
-
- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame));
- if (winInfo->generic.type == SRC_WIN)
- line.lineNo = cursal.line;
- else
- {
- find_line_pc (s, cursal.line, &line.addr);
- }
- tuiUpdateSourceWindow (winInfo, s, line, TRUE);
- }
- if (m_hasLocator (winInfo))
- {
- m_beVisible (locatorWinInfoPtr ());
- tuiShowLocatorContent ();
- }
- break;
- case DATA_WIN:
- tuiDisplayAllData ();
- break;
- case CMD_WIN:
- winInfo->detail.commandInfo.curLine = 0;
- winInfo->detail.commandInfo.curch = 0;
- wmove (winInfo->generic.handle,
- winInfo->detail.commandInfo.curLine,
- winInfo->detail.commandInfo.curch);
- break;
- default:
- break;
- }
-
- return;
-} /* _makeVisibleWithNewHeight */
-
-
-static int
-_newHeightOk (TuiWinInfoPtr primaryWinInfo, int newHeight)
-{
- int ok = (newHeight < termHeight ());
-
- if (ok)
- {
- int diff;
- TuiLayoutType curLayout = currentLayout ();
-
- diff = (newHeight - primaryWinInfo->generic.height) * (-1);
- if (curLayout == SRC_COMMAND || curLayout == DISASSEM_COMMAND)
- {
- ok = ((primaryWinInfo->generic.type == CMD_WIN &&
- newHeight <= (termHeight () - 4) &&
- newHeight >= MIN_CMD_WIN_HEIGHT) ||
- (primaryWinInfo->generic.type != CMD_WIN &&
- newHeight <= (termHeight () - 2) &&
- newHeight >= MIN_WIN_HEIGHT));
- if (ok)
- { /* check the total height */
- TuiWinInfoPtr winInfo;
-
- if (primaryWinInfo == cmdWin)
- winInfo = (TuiWinInfoPtr) (sourceWindows ())->list[0];
- else
- winInfo = cmdWin;
- ok = ((newHeight +
- (winInfo->generic.height + diff)) <= termHeight ());
- }
- }
- else
- {
- int curTotalHeight, totalHeight, minHeight = 0;
- TuiWinInfoPtr firstWin, secondWin;
-
- if (curLayout == SRC_DISASSEM_COMMAND)
- {
- firstWin = srcWin;
- secondWin = disassemWin;
- }
- else
- {
- firstWin = dataWin;
- secondWin = (TuiWinInfoPtr) (sourceWindows ())->list[0];
- }
- /*
- ** We could simply add all the heights to obtain the same result
- ** but below is more explicit since we subtract 1 for the
- ** line that the first and second windows share, and add one
- ** for the locator.
- */
- totalHeight = curTotalHeight =
- (firstWin->generic.height + secondWin->generic.height - 1)
- + cmdWin->generic.height + 1 /*locator */ ;
- if (primaryWinInfo == cmdWin)
- {
- /* locator included since first & second win share a line */
- ok = ((firstWin->generic.height +
- secondWin->generic.height + diff) >=
- (MIN_WIN_HEIGHT * 2) &&
- newHeight >= MIN_CMD_WIN_HEIGHT);
- if (ok)
- {
- totalHeight = newHeight + (firstWin->generic.height +
- secondWin->generic.height + diff);
- minHeight = MIN_CMD_WIN_HEIGHT;
- }
- }
- else
- {
- minHeight = MIN_WIN_HEIGHT;
- /*
- ** First see if we can increase/decrease the command
- ** window. And make sure that the command window is
- ** at least 1 line
- */
- ok = ((cmdWin->generic.height + diff) > 0);
- if (!ok)
- { /*
- ** Looks like we have to increase/decrease one of
- ** the other windows
- */
- if (primaryWinInfo == firstWin)
- ok = (secondWin->generic.height + diff) >= minHeight;
- else
- ok = (firstWin->generic.height + diff) >= minHeight;
- }
- if (ok)
- {
- if (primaryWinInfo == firstWin)
- totalHeight = newHeight +
- secondWin->generic.height +
- cmdWin->generic.height + diff;
- else
- totalHeight = newHeight +
- firstWin->generic.height +
- cmdWin->generic.height + diff;
- }
- }
- /*
- ** Now make sure that the proposed total height doesn't exceed
- ** the old total height.
- */
- if (ok)
- ok = (newHeight >= minHeight && totalHeight <= curTotalHeight);
- }
- }
-
- return ok;
-} /* _newHeightOk */
-
-
-/*
- ** _parseScrollingArgs().
- */
-static void
-_parseScrollingArgs (char *arg, TuiWinInfoPtr * winToScroll, int *numToScroll)
-{
- if (numToScroll)
- *numToScroll = 0;
- *winToScroll = tuiWinWithFocus ();
-
- /*
- ** First set up the default window to scroll, in case there is no
- ** window name arg
- */
- if (arg != (char *) NULL)
- {
- char *buf, *bufPtr;
-
- /* process the number of lines to scroll */
- buf = bufPtr = xstrdup (arg);
- if (isdigit (*bufPtr))
- {
- char *numStr;
-
- numStr = bufPtr;
- bufPtr = strchr (bufPtr, ' ');
- if (bufPtr != (char *) NULL)
- {
- *bufPtr = (char) 0;
- if (numToScroll)
- *numToScroll = atoi (numStr);
- bufPtr++;
- }
- else if (numToScroll)
- *numToScroll = atoi (numStr);
- }
-
- /* process the window name if one is specified */
- if (bufPtr != (char *) NULL)
- {
- char *wname;
- int i;
-
- if (*bufPtr == ' ')
- while (*(++bufPtr) == ' ')
- ;
-
- if (*bufPtr != (char) 0)
- wname = bufPtr;
- else
- wname = "?";
-
- /* Validate the window name */
- for (i = 0; i < strlen (wname); i++)
- wname[i] = toupper (wname[i]);
- *winToScroll = partialWinByName (wname);
-
- if (*winToScroll == (TuiWinInfoPtr) NULL ||
- !(*winToScroll)->generic.isVisible)
- warning ("Invalid window specified. \n\
-The window name specified must be valid and visible.\n");
- else if (*winToScroll == cmdWin)
- *winToScroll = (TuiWinInfoPtr) (sourceWindows ())->list[0];
- }
- tuiFree (buf);
- }
-
- return;
-} /* _parseScrollingArgs */
diff --git a/gdb/tui/tuiWin.h b/gdb/tui/tuiWin.h
deleted file mode 100644
index bc260804888..00000000000
--- a/gdb/tui/tuiWin.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* TUI window generic functions.
- Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Hewlett-Packard Company.
-
- 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 _TUI_WIN_H
-#define _TUI_WIN_H
-
-/*****************************************
-** TYPE DEFINITIONS **
-******************************************/
-
-
-
-/*****************************************
-** PUBLIC FUNCTION EXTERNAL DECLS **
-******************************************/
-extern void tuiScrollForward (TuiWinInfoPtr, int);
-extern void tuiScrollBackward (TuiWinInfoPtr, int);
-extern void tuiScrollLeft (TuiWinInfoPtr, int);
-extern void tuiScrollRight (TuiWinInfoPtr, int);
-extern void tui_scroll (TuiScrollDirection, TuiWinInfoPtr, int);
-extern void tuiSetWinFocusTo (TuiWinInfoPtr);
-extern void tuiResizeAll (void);
-extern void tuiRefreshAll (void);
-extern void tuiSigwinchHandler (int);
-
-extern chtype tui_border_ulcorner;
-extern chtype tui_border_urcorner;
-extern chtype tui_border_lrcorner;
-extern chtype tui_border_llcorner;
-extern chtype tui_border_vline;
-extern chtype tui_border_hline;
-extern int tui_border_attrs;
-extern int tui_active_border_attrs;
-
-extern int tui_update_variables ();
-
-/* Update gdb's knowledge of the terminal size. */
-extern void tui_update_gdb_sizes (void);
-
-#endif
-/*_TUI_WIN_H*/
diff --git a/gdb/ui-out.c b/gdb/ui-out.c
index 5fb8eaa69e8..854ec490ddf 100644
--- a/gdb/ui-out.c
+++ b/gdb/ui-out.c
@@ -1,6 +1,6 @@
/* Output generating routines for GDB.
- Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
Contributed by Cygnus Solutions.
Written by Fernando Nasser for Cygnus.
@@ -269,8 +269,6 @@ static void clear_header_list (struct ui_out *uiout);
static void verify_field (struct ui_out *uiout, int *fldno, int *width,
int *align);
-static void init_ui_out_state (struct ui_out *uiout);
-
/* exported functions (ui_out API) */
/* Mark beginning of a table */
diff --git a/gdb/utils.c b/gdb/utils.c
index 701277ee035..923b67bb604 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -1,7 +1,7 @@
/* General utility routines for GDB, the GNU debugger.
Copyright 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
- 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software
+ 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
Foundation, Inc.
This file is part of GDB.
@@ -61,10 +61,6 @@
#include <readline/readline.h>
-#ifdef USE_MMALLOC
-#include "mmalloc.h"
-#endif
-
#ifdef NEED_DECLARATION_MALLOC
extern PTR malloc (); /* OK: PTR */
#endif
@@ -96,9 +92,7 @@ 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 (void);
-#endif
+static void do_my_cleanups (struct cleanup **, struct cleanup *);
static void prompt_for_continue (void);
@@ -311,7 +305,7 @@ do_exec_error_cleanups (struct cleanup *old_chain)
do_my_cleanups (&exec_error_cleanup_chain, old_chain);
}
-void
+static void
do_my_cleanups (struct cleanup **pmy_chain,
struct cleanup *old_chain)
{
@@ -626,6 +620,38 @@ do_write (void *data, const char *buffer, long length_buffer)
ui_file_write (data, buffer, length_buffer);
}
+/* Cause a silent error to occur. Any error message is recorded
+ though it is not issued. */
+NORETURN void
+error_silent (const char *string, ...)
+{
+ va_list args;
+ struct ui_file *tmp_stream = mem_fileopen ();
+ va_start (args, string);
+ make_cleanup_ui_file_delete (tmp_stream);
+ vfprintf_unfiltered (tmp_stream, string, args);
+ /* Copy the stream into the GDB_LASTERR buffer. */
+ ui_file_rewind (gdb_lasterr);
+ ui_file_put (tmp_stream, do_write, gdb_lasterr);
+ va_end (args);
+
+ throw_exception (RETURN_ERROR);
+}
+
+/* Output an error message including any pre-print text to gdb_stderr. */
+void
+error_output_message (char *pre_print, char *msg)
+{
+ target_terminal_ours ();
+ wrap_here (""); /* Force out any buffered output */
+ gdb_flush (gdb_stdout);
+ annotate_error_begin ();
+ if (pre_print)
+ fputs_filtered (pre_print, gdb_stderr);
+ fputs_filtered (msg, gdb_stderr);
+ fprintf_filtered (gdb_stderr, "\n");
+}
+
NORETURN void
error_stream (struct ui_file *stream)
{
@@ -959,8 +985,6 @@ request_quit (int signo)
/* Memory management stuff (malloc friends). */
-#if !defined (USE_MMALLOC)
-
static void *
mmalloc (void *md, size_t size)
{
@@ -988,63 +1012,13 @@ mfree (void *md, void *ptr)
free (ptr); /* NOTE: GDB's only call to free() */
}
-#endif /* USE_MMALLOC */
-
-#if !defined (USE_MMALLOC) || defined (NO_MMCHECK)
-
+/* This used to do something interesting with USE_MMALLOC.
+ * It can be retired any time. -- chastain 2004-01-19. */
void
init_malloc (void *md)
{
}
-#else /* Have mmalloc and want corruption checking */
-
-static void
-malloc_botch (void)
-{
- fprintf_unfiltered (gdb_stderr, "Memory corruption\n");
- internal_error (__FILE__, __LINE__, "failed internal consistency check");
-}
-
-/* Attempt to install hooks in mmalloc/mrealloc/mfree for the heap specified
- by MD, to detect memory corruption. Note that MD may be NULL to specify
- the default heap that grows via sbrk.
-
- Note that for freshly created regions, we must call mmcheckf prior to any
- mallocs in the region. Otherwise, any region which was allocated prior to
- installing the checking hooks, which is later reallocated or freed, will
- fail the checks! The mmcheck function only allows initial hooks to be
- installed before the first mmalloc. However, anytime after we have called
- mmcheck the first time to install the checking hooks, we can call it again
- to update the function pointer to the memory corruption handler.
-
- Returns zero on failure, non-zero on success. */
-
-#ifndef MMCHECK_FORCE
-#define MMCHECK_FORCE 0
-#endif
-
-void
-init_malloc (void *md)
-{
- if (!mmcheckf (md, malloc_botch, MMCHECK_FORCE))
- {
- /* Don't use warning(), which relies on current_target being set
- to something other than dummy_target, until after
- initialize_all_files(). */
-
- fprintf_unfiltered
- (gdb_stderr,
- "warning: failed to install memory consistency checks; ");
- fprintf_unfiltered (gdb_stderr,
- "configuration should define NO_MMCHECK or MMCHECK_FORCE\n");
- }
-
- mmtrace ();
-}
-
-#endif /* Have mmalloc and want corruption checking */
-
/* Called when a memory allocation fails, with the number of bytes of
memory requested in SIZE. */
@@ -1608,12 +1582,14 @@ init_page_info (void)
if (!tui_get_command_dimension (&chars_per_line, &lines_per_page))
#endif
{
-#if defined(__GO32__)
- lines_per_page = ScreenRows ();
- chars_per_line = ScreenCols ();
-#else
int rows, cols;
+#if defined(__GO32__)
+ rows = ScreenRows ();
+ cols = ScreenCols ();
+ lines_per_page = rows;
+ chars_per_line = cols;
+#else
/* Make sure Readline has initialized its terminal settings. */
rl_reset_terminal (NULL);
@@ -1639,8 +1615,8 @@ init_page_info (void)
/* If the output is not a terminal, don't paginate it. */
if (!ui_file_isatty (gdb_stdout))
lines_per_page = UINT_MAX;
- }
#endif
+ }
set_screen_size ();
set_width ();
diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c
index a9ca9ddd75e..321e97aa7fb 100644
--- a/gdb/v850-tdep.c
+++ b/gdb/v850-tdep.c
@@ -1,6 +1,7 @@
/* Target-dependent code for the NEC V850 for GDB, the GNU debugger.
- Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003
- Free Software Foundation, Inc.
+
+ Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free
+ Software Foundation, Inc.
This file is part of GDB.
@@ -247,16 +248,6 @@ v850_register_raw_size (int regnum)
return v850_reg_size;
}
-/* Function: v850_register_virtual_size
- Returns the number of bytes occupied by the register as represented
- internally by gdb. */
-
-static int
-v850_register_virtual_size (int regnum)
-{
- return v850_register_raw_size (regnum);
-}
-
/* Function: v850_reg_virtual_type
Returns the default type for register N. */
@@ -1088,13 +1079,6 @@ v850_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
return breakpoint;
}
-static CORE_ADDR
-v850_extract_struct_value_address (char *regbuf)
-{
- return extract_unsigned_integer (regbuf + v850_register_byte (E_V0_REGNUM),
- v850_register_raw_size (E_V0_REGNUM));
-}
-
static void
v850_store_return_value (struct type *type, char *valbuf)
{
@@ -1259,11 +1243,6 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
*/
/* Stack grows up. */
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
- /* PC stops zero byte after a trap instruction
- (which means: exactly on trap instruction). */
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- /* This value is almost never non-zero... */
- set_gdbarch_function_start_offset (gdbarch, 0);
/* This value is almost never non-zero... */
set_gdbarch_frame_args_skip (gdbarch, 0);
@@ -1277,7 +1256,6 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_pop_frame (gdbarch, v850_pop_frame);
set_gdbarch_deprecated_store_struct_return (gdbarch, v850_store_struct_return);
set_gdbarch_deprecated_store_return_value (gdbarch, v850_store_return_value);
- set_gdbarch_deprecated_extract_struct_value_address (gdbarch, v850_extract_struct_value_address);
set_gdbarch_use_struct_convention (gdbarch, v850_use_struct_convention);
set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_nil);
set_gdbarch_deprecated_sizeof_call_dummy_words (gdbarch, 0);
diff --git a/gdb/valops.c b/gdb/valops.c
index a946db25b36..02ebb0a290b 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -1,6 +1,6 @@
/* Perform non-arithmetic operations on values, for GDB.
Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
- 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+ 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GDB.
@@ -2650,6 +2650,7 @@ value_maybe_namespace_elt (const struct type *curtype,
const char *name,
enum noside noside)
{
+
const char *namespace_name = TYPE_TAG_NAME (curtype);
const struct symbol *sym;
diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c
index 5c99aa859d9..939c3271343 100644
--- a/gdb/vax-tdep.c
+++ b/gdb/vax-tdep.c
@@ -1,6 +1,7 @@
/* Print VAX instructions for GDB, the GNU debugger.
- Copyright 1986, 1989, 1991, 1992, 1995, 1996, 1998, 1999, 2000, 2002, 2003
- Free Software Foundation, Inc.
+
+ Copyright 1986, 1989, 1991, 1992, 1995, 1996, 1998, 1999, 2000,
+ 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -41,8 +42,6 @@ static gdbarch_frame_num_args_ftype vax_frame_num_args;
static gdbarch_deprecated_frame_chain_ftype vax_frame_chain;
static gdbarch_deprecated_extract_return_value_ftype vax_extract_return_value;
-static gdbarch_deprecated_extract_struct_value_address_ftype
- vax_extract_struct_value_address;
static gdbarch_deprecated_push_dummy_frame_ftype vax_push_dummy_frame;
@@ -275,13 +274,6 @@ vax_store_return_value (struct type *valtype, char *valbuf)
{
deprecated_write_register_bytes (0, valbuf, TYPE_LENGTH (valtype));
}
-
-static CORE_ADDR
-vax_extract_struct_value_address (char *regbuf)
-{
- return (extract_unsigned_integer (regbuf + DEPRECATED_REGISTER_BYTE (0),
- DEPRECATED_REGISTER_RAW_SIZE (0)));
-}
static const unsigned char *
vax_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
@@ -391,7 +383,6 @@ vax_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_store_struct_return (gdbarch, vax_store_struct_return);
set_gdbarch_deprecated_extract_return_value (gdbarch, vax_extract_return_value);
set_gdbarch_deprecated_store_return_value (gdbarch, vax_store_return_value);
- set_gdbarch_deprecated_extract_struct_value_address (gdbarch, vax_extract_struct_value_address);
/* Call dummy info */
set_gdbarch_deprecated_push_dummy_frame (gdbarch, vax_push_dummy_frame);
@@ -406,7 +397,6 @@ vax_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
/* Breakpoint info */
set_gdbarch_breakpoint_from_pc (gdbarch, vax_breakpoint_from_pc);
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
/* Misc info */
set_gdbarch_function_start_offset (gdbarch, 2);
diff --git a/gdb/version.in b/gdb/version.in
index a6451cd5367..b8d2723f6b6 100644
--- a/gdb/version.in
+++ b/gdb/version.in
@@ -1 +1 @@
-2003-12-15-cvs
+2004-01-26-cvs
diff --git a/gdb/w89k-rom.c b/gdb/w89k-rom.c
deleted file mode 100644
index 331358bce21..00000000000
--- a/gdb/w89k-rom.c
+++ /dev/null
@@ -1,311 +0,0 @@
-/* Remote target glue for the WinBond ROM monitor running on the "Cougar"
- W89k eval board.
-
- Copyright 1995, 1998, 2000, 2001 Free Software Foundation, Inc.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include "defs.h"
-#include "gdbcore.h"
-#include "target.h"
-#include "monitor.h"
-#include "serial.h"
-#include "xmodem.h"
-#include "regcache.h"
-
-
-static void w89k_open (char *args, int from_tty);
-
-/*
- * this array of registers need to match the indexes used by GDB. The
- * whole reason this exists is cause the various ROM monitors use
- * different strings than GDB does, and doesn't support all the
- * registers either. So, typing "info reg sp" becomes a "r30".
- */
-
-static char *w89k_regnames[NUM_REGS] =
-{
- "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
- "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
- "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
- "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31",
- "SAR", "PC", NULL, NULL, NULL, "EIEM", "IIR", "IVA",
- "IOR", "IPSW", NULL, NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- "CCR", NULL, NULL, "TR0", "TR1",
-};
-
-static void
-w89k_supply_register (char *regname, int regnamelen, char *val, int vallen)
-{
- int numregs;
- int regno;
-
- numregs = 1;
- regno = -1;
-
- if (regnamelen == 2)
- switch (regname[0])
- {
- case 'r':
- numregs = 4;
- switch (regname[1])
- {
- case '0':
- regno = R0_REGNUM;
- break;
- case '4':
- regno = R0_REGNUM + 4;
- break;
- case '8':
- regno = R0_REGNUM + 8;
- break;
- }
- break;
- case 'P':
- if (regname[1] == 'C')
- regno = PC_REGNUM;
- break;
- }
- else if (regnamelen == 3)
- switch (regname[0])
- {
- case 'r':
- numregs = 4;
- if (regname[1] == '1' && regname[2] == '2')
- regno = R0_REGNUM + 12;
- else if (regname[1] == '1' && regname[2] == '6')
- regno = R0_REGNUM + 16;
- else if (regname[1] == '2' && regname[2] == '0')
- regno = R0_REGNUM + 20;
- else if (regname[1] == '2' && regname[2] == '4')
- regno = R0_REGNUM + 24;
- else if (regname[1] == '2' && regname[2] == '8')
- regno = R0_REGNUM + 28;
- break;
- case 'R':
- if (regname[1] == 'C' && regname[2] == 'R')
- regno = RCR_REGNUM;
- break;
- case 'C':
- if (regname[1] == 'C' && regname[2] == 'R')
- regno = CCR_REGNUM;
- break;
- case 'S':
- if (regname[1] == 'A' && regname[2] == 'R')
- regno = SAR_REGNUM;
- break;
- case 'I':
- if (regname[1] == 'I' && regname[2] == 'R')
- regno = IIR_REGNUM;
- else if (regname[1] == 'O' && regname[2] == 'R')
- regno = IOR_REGNUM;
- break;
- case 'T':
- numregs = 4;
- if (regname[1] == 'R')
- if (regname[2] == '0')
- regno = TR0_REGNUM;
- else if (regname[2] == '4')
- regno = TR0_REGNUM + 4;
- break;
- }
- else if (regnamelen == 4)
- switch (regname[0])
- {
- case 'E':
- if (regname[1] == 'I')
- if (regname[2] == 'E' && regname[3] == 'M')
- regno = EIEM_REGNUM;
- break;
- case 'I':
- if (regname[1] == 'P' && regname[2] == 'S' && regname[3] == 'W')
- regno = IPSW_REGNUM;
- break;
- }
- else if (regnamelen == 5)
- switch (regname[0])
- {
- case 'I':
- if (regname[1] == 'A'
- && regname[2] == 'O'
- && regname[3] == 'Q'
- && regname[4] == 'B')
- regno = PCOQ_TAIL_REGNUM;
- break;
- }
-
- if (regno >= 0)
- while (numregs-- > 0)
- val = monitor_supply_register (regno++, val);
-}
-
-static int hashmark = 1; /* flag set by "set hash" */
-
-extern struct monitor_ops w89k_cmds; /* fwd decl */
-
-static void
-w89k_load (struct serial *desc, char *file, int hashmark)
-{
- bfd *abfd;
- asection *s;
- char *buffer;
- int i;
-
- buffer = alloca (XMODEM_PACKETSIZE);
-
- abfd = bfd_openr (file, 0);
- if (!abfd)
- {
- printf_filtered ("Unable to open file %s\n", file);
- return;
- }
-
- if (bfd_check_format (abfd, bfd_object) == 0)
- {
- printf_filtered ("File is not an object file\n");
- return;
- }
-
- for (s = abfd->sections; s; s = s->next)
- if (s->flags & SEC_LOAD)
- {
- bfd_size_type section_size;
-
- printf_filtered ("%s\t: 0x%4x .. 0x%4x ", s->name, s->vma,
- s->vma + s->_raw_size);
- gdb_flush (gdb_stdout);
-
- monitor_printf (w89k_cmds.load, s->vma);
- if (w89k_cmds.loadresp)
- monitor_expect (w89k_cmds.loadresp, NULL, 0);
-
- xmodem_init_xfer (desc);
-
- section_size = bfd_section_size (abfd, s);
-
- for (i = 0; i < section_size; i += XMODEM_DATASIZE)
- {
- int numbytes;
-
- numbytes = min (XMODEM_DATASIZE, section_size - i);
-
- bfd_get_section_contents (abfd, s, buffer + XMODEM_DATAOFFSET, i,
- numbytes);
-
- xmodem_send_packet (desc, buffer, numbytes, hashmark);
-
- if (hashmark)
- {
- putchar_unfiltered ('#');
- gdb_flush (gdb_stdout);
- }
- } /* Per-packet (or S-record) loop */
-
- xmodem_finish_xfer (desc);
-
- monitor_expect_prompt (NULL, 0);
-
- putchar_unfiltered ('\n');
- } /* Loadable sections */
-
- if (hashmark)
- putchar_unfiltered ('\n');
-}
-
-/*
- * Define the monitor command strings. Since these are passed directly
- * through to a printf style function, we need can include formatting
- * strings. We also need a CR or LF on the end.
- */
-
-static struct target_ops w89k_ops;
-
-static char *w89k_inits[] =
-{"\n", NULL};
-
-static struct monitor_ops w89k_cmds;
-static void
-init_w89k_cmds (void)
-{
- w89k_cmds.flags = MO_GETMEM_NEEDS_RANGE | MO_FILL_USES_ADDR; /* flags */
- w89k_cmds.init = w89k_inits; /* Init strings */
- w89k_cmds.cont = "g\n"; /* continue command */
- w89k_cmds.step = "t\n"; /* single step */
- w89k_cmds.stop = "\003"; /* Interrupt char (^C) */
- w89k_cmds.set_break = "bp %x\n"; /* set a breakpoint */
- w89k_cmds.clr_break = "bc %x\n"; /* clear a breakpoint */
- w89k_cmds.clr_all_break = "bc *\n"; /* clear all breakpoints */
- w89k_cmds.fill = "f %x %x %x\n"; /* memory fill cmd */
- w89k_cmds.setmem.cmdb = "eb %x %x\n"; /* setmem.cmdb (addr, value) */
- w89k_cmds.setmem.cmdw = "eh %x %x\n"; /* setmem.cmdw (addr, value) */
- w89k_cmds.setmem.cmdl = "ew %x %x\n"; /* setmem.cmdl (addr, value) */
- w89k_cmds.setmem.cmdll = NULL; /* setmem.cmdll (addr, value) */
- w89k_cmds.setmem.resp_delim = NULL; /* setreg.resp_delim */
- w89k_cmds.setmem.term = NULL; /* setreg.term */
- w89k_cmds.setmem.term_cmd = NULL; /* setreg.term_cmd */
- w89k_cmds.getmem.cmdb = "db %x %x\n"; /* getmem.cmdb (startaddr, endaddr) */
- w89k_cmds.getmem.cmdw = "dh %x %x\n"; /* getmem.cmdw (startaddr, endaddr) */
- w89k_cmds.getmem.cmdl = "dw %x %x\n"; /* getmem.cmdl (startaddr, endaddr) */
- w89k_cmds.getmem.cmdll = NULL; /* getmem.cmdll (startaddr, endaddr) */
- w89k_cmds.getmem.resp_delim = " "; /* getmem.resp_delim */
- w89k_cmds.getmem.term = NULL; /* getmem.term */
- w89k_cmds.getmem.term_cmd = NULL; /* getmem.term_cmd */
- w89k_cmds.setreg.cmd = "r %s %x\n"; /* setreg.cmd (name, value) */
- w89k_cmds.setreg.resp_delim = NULL; /* setreg.resp_delim */
- w89k_cmds.setreg.term = NULL; /* setreg.term */
- w89k_cmds.setreg.term_cmd = NULL; /* setreg.term_cmd */
- w89k_cmds.getreg.cmd = "r %s\n"; /* getreg.cmd (name) */
- w89k_cmds.getreg.resp_delim = "\r"; /* getreg.resp_delim */
- w89k_cmds.getreg.term = NULL; /* getreg.term */
- w89k_cmds.getreg.term_cmd = NULL; /* getreg.term_cmd */
- w89k_cmds.dump_registers = "r\n"; /* dump_registers */
- w89k_cmds.register_pattern = "\\(\\w+\\)\\( +[0-9a-fA-F]+\\b\\)+";
- w89k_cmds.supply_register = w89k_supply_register; /* supply_register */
- w89k_cmds.load_routine = w89k_load; /* load routine */
- w89k_cmds.load = "u %x\n"; /* download command */
- w89k_cmds.loadresp = "\021"; /* load response (^Q) */
- w89k_cmds.prompt = "ROM>"; /* monitor command prompt */
- w89k_cmds.line_term = "\n"; /* end-of-line terminator */
- w89k_cmds.cmd_end = NULL; /* optional command terminator */
- w89k_cmds.target = &w89k_ops; /* target operations */
- w89k_cmds.stopbits = SERIAL_1_STOPBITS; /* number of stop bits */
- w89k_cmds.regnames = w89k_regnames; /* register names */
- w89k_cmds.magic = MONITOR_OPS_MAGIC; /* magic */
-} /* init_w89k_cmds */
-
-static void
-w89k_open (char *args, int from_tty)
-{
- monitor_open (args, &w89k_cmds, from_tty);
-}
-
-void
-_initialize_w89k (void)
-{
- init_w89k_cmds ();
- init_monitor_ops (&w89k_ops);
-
- w89k_ops.to_shortname = "w89k";
- w89k_ops.to_longname = "WinBond's debug monitor for the W89k Eval board";
- w89k_ops.to_doc = "Debug on a WinBond W89K eval board.\n\
-Specify the serial device it is connected to (e.g. /dev/ttya).";
- w89k_ops.to_open = w89k_open;
-
- add_target (&w89k_ops);
-}
diff --git a/gdb/win32-nat.c b/gdb/win32-nat.c
index 358bdf7a9f5..8b26916e2b7 100644
--- a/gdb/win32-nat.c
+++ b/gdb/win32-nat.c
@@ -76,8 +76,8 @@ enum
| CONTEXT_EXTENDED_REGISTERS
static unsigned dr[8];
-static int debug_registers_changed = 0;
-static int debug_registers_used = 0;
+static int debug_registers_changed;
+static int debug_registers_used;
/* The string sent by cygwin when it processes a signal.
FIXME: This should be in a cygwin include file. */
@@ -108,6 +108,7 @@ typedef struct thread_info_struct
HANDLE h;
char *name;
int suspend_count;
+ int reload_context;
CONTEXT context;
STACKFRAME sf;
}
@@ -228,7 +229,6 @@ check (BOOL ok, const char *file, int line)
GetLastError ());
}
-
/* Find a thread record given a thread id.
If get_context then also retrieve the context for this
thread. */
@@ -246,19 +246,7 @@ thread_rec (DWORD id, int get_context)
th->suspend_count = SuspendThread (th->h) + 1;
else if (get_context < 0)
th->suspend_count = -1;
-
- th->context.ContextFlags = CONTEXT_DEBUGGER_DR;
- GetThreadContext (th->h, &th->context);
- if (id == current_event.dwThreadId)
- {
- /* Copy dr values from that thread. */
- dr[0] = th->context.Dr0;
- dr[1] = th->context.Dr1;
- dr[2] = th->context.Dr2;
- dr[3] = th->context.Dr3;
- dr[6] = th->context.Dr6;
- dr[7] = th->context.Dr7;
- }
+ th->reload_context = 1;
}
return th;
}
@@ -349,6 +337,25 @@ do_child_fetch_inferior_registers (int r)
char *context_offset = ((char *) &current_thread->context) + mappings[r];
long l;
+ if (!current_thread)
+ return; /* Windows sometimes uses a non-existent thread id in its
+ events */
+
+ if (current_thread->reload_context)
+ {
+ thread_info *th = current_thread;
+ th->context.ContextFlags = CONTEXT_DEBUGGER_DR;
+ GetThreadContext (th->h, &th->context);
+ /* Copy dr values from that thread. */
+ dr[0] = th->context.Dr0;
+ dr[1] = th->context.Dr1;
+ dr[2] = th->context.Dr2;
+ dr[3] = th->context.Dr3;
+ dr[6] = th->context.Dr6;
+ dr[7] = th->context.Dr7;
+ current_thread->reload_context = 0;
+ }
+
#define I387_ST0_REGNUM I386_ST0_REGNUM
if (r == I387_FISEG_REGNUM)
@@ -376,13 +383,18 @@ static void
child_fetch_inferior_registers (int r)
{
current_thread = thread_rec (PIDGET (inferior_ptid), TRUE);
- do_child_fetch_inferior_registers (r);
+ /* Check if current_thread exists. Windows sometimes uses a non-existent
+ thread id in its events */
+ if (current_thread)
+ do_child_fetch_inferior_registers (r);
}
static void
do_child_store_inferior_registers (int r)
{
- if (r >= 0)
+ if (!current_thread)
+ /* Windows sometimes uses a non-existent thread id in its events */;
+ else if (r >= 0)
regcache_collect (r, ((char *) &current_thread->context) + mappings[r]);
else
{
@@ -396,7 +408,10 @@ static void
child_store_inferior_registers (int r)
{
current_thread = thread_rec (PIDGET (inferior_ptid), TRUE);
- do_child_store_inferior_registers (r);
+ /* Check if current_thread exists. Windows sometimes uses a non-existent
+ thread id in its events */
+ if (current_thread)
+ do_child_store_inferior_registers (r);
}
static int psapi_loaded = 0;
@@ -1179,7 +1194,7 @@ child_continue (DWORD continue_status, int id)
th->suspend_count = 0;
if (debug_registers_changed)
{
- /* Only change the value of the debug reisters */
+ /* Only change the value of the debug registers */
th->context.ContextFlags = CONTEXT_DEBUG_REGISTERS;
th->context.Dr0 = dr[0];
th->context.Dr1 = dr[1];
@@ -1197,6 +1212,19 @@ child_continue (DWORD continue_status, int id)
return res;
}
+/* Called in pathological case where Windows fails to send a
+ CREATE_PROCESS_DEBUG_EVENT after an attach. */
+DWORD
+fake_create_process (void)
+{
+ current_process_handle = OpenProcess (PROCESS_ALL_ACCESS, FALSE,
+ current_event.dwProcessId);
+ main_thread_id = current_event.dwThreadId;
+ current_thread = child_add_thread (main_thread_id,
+ current_event.u.CreateThread.hThread);
+ return main_thread_id;
+}
+
/* Get the next event from the child. Return 1 if the event requires
handling by WFI (or whatever).
*/
@@ -1205,7 +1233,7 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus)
{
BOOL debug_event;
DWORD continue_status, event_code;
- thread_info *th = NULL;
+ thread_info *th;
static thread_info dummy_thread_info;
int retval = 0;
@@ -1219,6 +1247,7 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus)
event_code = current_event.dwDebugEventCode;
ourstatus->kind = TARGET_WAITKIND_SPURIOUS;
+ th = NULL;
switch (event_code)
{
@@ -1228,7 +1257,17 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus)
(unsigned) current_event.dwThreadId,
"CREATE_THREAD_DEBUG_EVENT"));
if (saw_create != 1)
- break;
+ {
+ if (!saw_create && attach_flag)
+ {
+ /* Kludge around a Windows bug where first event is a create
+ thread event. Caused when attached process does not have
+ a main thread. */
+ retval = ourstatus->value.related_pid = fake_create_process ();
+ saw_create++;
+ }
+ break;
+ }
/* Record the existence of this thread */
th = child_add_thread (current_event.dwThreadId,
current_event.u.CreateThread.hThread);
@@ -1244,10 +1283,11 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus)
(unsigned) current_event.dwProcessId,
(unsigned) current_event.dwThreadId,
"EXIT_THREAD_DEBUG_EVENT"));
- if (saw_create != 1)
- break;
- child_delete_thread (current_event.dwThreadId);
- th = &dummy_thread_info;
+ if (current_event.dwThreadId != main_thread_id)
+ {
+ child_delete_thread (current_event.dwThreadId);
+ th = &dummy_thread_info;
+ }
break;
case CREATE_PROCESS_DEBUG_EVENT:
@@ -1263,12 +1303,10 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus)
}
current_process_handle = current_event.u.CreateProcessInfo.hProcess;
+ if (main_thread_id)
+ child_delete_thread (main_thread_id);
main_thread_id = current_event.dwThreadId;
/* Add the main thread */
-#if 0
- th = child_add_thread (current_event.dwProcessId,
- current_event.u.CreateProcessInfo.hProcess);
-#endif
th = child_add_thread (main_thread_id,
current_event.u.CreateProcessInfo.hThread);
retval = ourstatus->value.related_pid = current_event.dwThreadId;
@@ -1353,8 +1391,8 @@ get_child_debug_event (int pid, struct target_waitstatus *ourstatus)
CHECK (child_continue (continue_status, -1));
else
{
- current_thread = th ? : thread_rec (current_event.dwThreadId, TRUE);
inferior_ptid = pid_to_ptid (retval);
+ current_thread = th ?: thread_rec (current_event.dwThreadId, TRUE);
}
out:
@@ -1569,10 +1607,9 @@ child_attach (char *args, int from_tty)
}
if (has_detach_ability ())
- {
- attach_flag = 1;
- DebugSetProcessKillOnExit (FALSE);
- }
+ DebugSetProcessKillOnExit (FALSE);
+
+ attach_flag = 1;
if (from_tty)
{
@@ -1694,6 +1731,8 @@ child_create_inferior (char *exec_file, char *allargs, char **env)
if (new_console)
flags |= CREATE_NEW_CONSOLE;
+ attach_flag = 0;
+
args = alloca (strlen (toexec) + strlen (allargs) + 2);
strcpy (args, toexec);
strcat (args, " ");
@@ -1895,7 +1934,8 @@ child_kill_inferior (void)
CHECK (CloseHandle (current_process_handle));
/* this may fail in an attached process so don't check. */
- (void) CloseHandle (current_thread->h);
+ if (current_thread && current_thread->h)
+ (void) CloseHandle (current_thread->h);
target_mourn_inferior (); /* or just child_mourn_inferior? */
}
@@ -2147,7 +2187,6 @@ cygwin_get_dr6 (void)
return dr[6];
}
-
/* Determine if the thread referenced by "pid" is alive
by "polling" it. If WaitForSingleObject returns WAIT_OBJECT_0
it means that the pid has died. Otherwise it is assumed to be alive. */
@@ -2199,65 +2238,65 @@ core_dll_symbols_add (char *dll_name, DWORD base_addr)
}
}
- register_loaded_dll (dll_name, base_addr + 0x1000);
- solib_symbols_add (dll_name, 0, (CORE_ADDR) base_addr + 0x1000);
+ register_loaded_dll (dll_name, base_addr + 0x1000);
+ solib_symbols_add (dll_name, 0, (CORE_ADDR) base_addr + 0x1000);
-out:
- return 1;
-}
+ out:
+ return 1;
+ }
-typedef struct
-{
- struct target_ops *target;
- bfd_vma addr;
-} map_code_section_args;
+ typedef struct
+ {
+ struct target_ops *target;
+ bfd_vma addr;
+ } map_code_section_args;
-static void
-map_single_dll_code_section (bfd * abfd, asection * sect, void *obj)
-{
- int old;
- int update_coreops;
- struct section_table *new_target_sect_ptr;
+ static void
+ map_single_dll_code_section (bfd * abfd, asection * sect, void *obj)
+ {
+ int old;
+ int update_coreops;
+ struct section_table *new_target_sect_ptr;
- map_code_section_args *args = (map_code_section_args *) obj;
- struct target_ops *target = args->target;
- if (sect->flags & SEC_CODE)
- {
- update_coreops = core_ops.to_sections == target->to_sections;
+ map_code_section_args *args = (map_code_section_args *) obj;
+ struct target_ops *target = args->target;
+ if (sect->flags & SEC_CODE)
+ {
+ update_coreops = core_ops.to_sections == target->to_sections;
- if (target->to_sections)
- {
- old = target->to_sections_end - target->to_sections;
- target->to_sections = (struct section_table *)
- xrealloc ((char *) target->to_sections,
- (sizeof (struct section_table)) * (1 + old));
- }
- else
- {
- old = 0;
- target->to_sections = (struct section_table *)
- xmalloc ((sizeof (struct section_table)));
- }
- target->to_sections_end = target->to_sections + (1 + old);
+ if (target->to_sections)
+ {
+ old = target->to_sections_end - target->to_sections;
+ target->to_sections = (struct section_table *)
+ xrealloc ((char *) target->to_sections,
+ (sizeof (struct section_table)) * (1 + old));
+ }
+ else
+ {
+ old = 0;
+ target->to_sections = (struct section_table *)
+ xmalloc ((sizeof (struct section_table)));
+ }
+ target->to_sections_end = target->to_sections + (1 + old);
- /* Update the to_sections field in the core_ops structure
- if needed. */
- if (update_coreops)
- {
- core_ops.to_sections = target->to_sections;
- core_ops.to_sections_end = target->to_sections_end;
- }
- new_target_sect_ptr = target->to_sections + old;
- new_target_sect_ptr->addr = args->addr + bfd_section_vma (abfd, sect);
- new_target_sect_ptr->endaddr = args->addr + bfd_section_vma (abfd, sect) +
- bfd_section_size (abfd, sect);;
- new_target_sect_ptr->the_bfd_section = sect;
- new_target_sect_ptr->bfd = abfd;
- }
-}
+ /* Update the to_sections field in the core_ops structure
+ if needed. */
+ if (update_coreops)
+ {
+ core_ops.to_sections = target->to_sections;
+ core_ops.to_sections_end = target->to_sections_end;
+ }
+ new_target_sect_ptr = target->to_sections + old;
+ new_target_sect_ptr->addr = args->addr + bfd_section_vma (abfd, sect);
+ new_target_sect_ptr->endaddr = args->addr + bfd_section_vma (abfd, sect) +
+ bfd_section_size (abfd, sect);;
+ new_target_sect_ptr->the_bfd_section = sect;
+ new_target_sect_ptr->bfd = abfd;
+ }
+ }
-static int
-dll_code_sections_add (const char *dll_name, int base_addr, struct target_ops *target)
+ static int
+ dll_code_sections_add (const char *dll_name, int base_addr, struct target_ops *target)
{
bfd *dll_bfd;
map_code_section_args map_args;
diff --git a/gdb/x86-64-linux-nat.c b/gdb/x86-64-linux-nat.c
index 4ed859bc727..98d30aaa258 100644
--- a/gdb/x86-64-linux-nat.c
+++ b/gdb/x86-64-linux-nat.c
@@ -1,7 +1,6 @@
/* Native-dependent code for GNU/Linux x86-64.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
-
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@@ -67,6 +66,7 @@ static int x86_64_linux_gregset64_reg_offset[] =
R12 * 8, R13 * 8,
R14 * 8, R15 * 8, /* ... %r15 */
RIP * 8, EFLAGS * 8, /* %rip, %eflags */
+ CS * 8, SS * 8, /* %cs, %ss */
DS * 8, ES * 8, /* %ds, %es */
FS * 8, GS * 8 /* %fs, %gs */
};
diff --git a/gdb/x86-64-linux-tdep.c b/gdb/x86-64-linux-tdep.c
index 71a5364f0e6..fee1233f4fc 100644
--- a/gdb/x86-64-linux-tdep.c
+++ b/gdb/x86-64-linux-tdep.c
@@ -1,7 +1,6 @@
/* Target-dependent code for GNU/Linux running on x86-64, for GDB.
- Copyright 2001, 2003 Free Software Foundation, Inc.
-
+ Copyright 2001, 2003, 2004 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@@ -69,6 +68,7 @@ static int user_to_gdb_regmap[] =
USER_R8, USER_R9, USER_R10, USER_R11,
USER_R12, USER_R13, USER_R14, USER_R15,
USER_RIP, USER_EFLAGS,
+ USER_CS, USER_SS,
USER_DS, USER_ES, USER_FS, USER_GS
};
@@ -254,13 +254,15 @@ static int x86_64_linux_sc_reg_offset[] =
7 * 8, /* %r15 */
16 * 8, /* %rip */
17 * 8, /* %eflags */
- -1, /* %ds */
- -1, /* %es */
- /* FIXME: kettenis/2002030531: The registers %fs and %gs are
+ /* FIXME: kettenis/2002030531: The registers %cs, %fs and %gs are
available in `struct sigcontext'. However, they only occupy two
bytes instead of four, which makes using them here rather
difficult. Leave them out for now. */
+ -1, /* %cs */
+ -1, /* %ss */
+ -1, /* %ds */
+ -1, /* %es */
-1, /* %fs */
-1 /* %gs */
};
diff --git a/gdb/x86-64-tdep.c b/gdb/x86-64-tdep.c
index b4d590e34ac..b19372fe89c 100644
--- a/gdb/x86-64-tdep.c
+++ b/gdb/x86-64-tdep.c
@@ -1,6 +1,6 @@
-/* Target-dependent code for the x86-64 for GDB, the GNU debugger.
+/* Target-dependent code for AMD64.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@@ -40,15 +40,22 @@
#include "x86-64-tdep.h"
#include "i387-tdep.h"
+/* Note that the AMD64 architecture was previously known as x86-64.
+ The latter is (forever) engraved into the canonical system name as
+ returned bu config.guess, and used as the name for the AMD64 port
+ of GNU/Linux. The BSD's have renamed their ports to amd64; they
+ don't like to shout. For GDB we prefer the amd64_-prefix over the
+ x86_64_-prefix since it's so much easier to type. */
+
/* Register information. */
-struct x86_64_register_info
+struct amd64_register_info
{
char *name;
struct type **type;
};
-static struct x86_64_register_info x86_64_register_info[] =
+static struct amd64_register_info amd64_register_info[] =
{
{ "rax", &builtin_type_int64 },
{ "rbx", &builtin_type_int64 },
@@ -70,12 +77,14 @@ static struct x86_64_register_info x86_64_register_info[] =
{ "r15", &builtin_type_int64 },
{ "rip", &builtin_type_void_func_ptr },
{ "eflags", &builtin_type_int32 },
+ { "cs", &builtin_type_int32 },
+ { "ss", &builtin_type_int32 },
{ "ds", &builtin_type_int32 },
{ "es", &builtin_type_int32 },
{ "fs", &builtin_type_int32 },
{ "gs", &builtin_type_int32 },
- /* %st0 is register number 22. */
+ /* %st0 is register number 24. */
{ "st0", &builtin_type_i387_ext },
{ "st1", &builtin_type_i387_ext },
{ "st2", &builtin_type_i387_ext },
@@ -93,7 +102,7 @@ static struct x86_64_register_info x86_64_register_info[] =
{ "fooff", &builtin_type_int32 },
{ "fop", &builtin_type_int32 },
- /* %xmm0 is register number 38. */
+ /* %xmm0 is register number 40. */
{ "xmm0", &builtin_type_v4sf },
{ "xmm1", &builtin_type_v4sf },
{ "xmm2", &builtin_type_v4sf },
@@ -114,16 +123,16 @@ static struct x86_64_register_info x86_64_register_info[] =
};
/* Total number of registers. */
-#define X86_64_NUM_REGS \
- (sizeof (x86_64_register_info) / sizeof (x86_64_register_info[0]))
+#define AMD64_NUM_REGS \
+ (sizeof (amd64_register_info) / sizeof (amd64_register_info[0]))
/* Return the name of register REGNUM. */
static const char *
-x86_64_register_name (int regnum)
+amd64_register_name (int regnum)
{
- if (regnum >= 0 && regnum < X86_64_NUM_REGS)
- return x86_64_register_info[regnum].name;
+ if (regnum >= 0 && regnum < AMD64_NUM_REGS)
+ return amd64_register_info[regnum].name;
return NULL;
}
@@ -132,17 +141,17 @@ x86_64_register_name (int regnum)
register REGNUM. */
static struct type *
-x86_64_register_type (struct gdbarch *gdbarch, int regnum)
+amd64_register_type (struct gdbarch *gdbarch, int regnum)
{
- gdb_assert (regnum >= 0 && regnum < X86_64_NUM_REGS);
+ gdb_assert (regnum >= 0 && regnum < AMD64_NUM_REGS);
- return *x86_64_register_info[regnum].type;
+ return *amd64_register_info[regnum].type;
}
/* DWARF Register Number Mapping as defined in the System V psABI,
section 3.6. */
-static int x86_64_dwarf_regmap[] =
+static int amd64_dwarf_regmap[] =
{
/* General Purpose Registers RAX, RDX, RCX, RBX, RSI, RDI. */
X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, 2, 1,
@@ -157,8 +166,8 @@ static int x86_64_dwarf_regmap[] =
/* Extended Integer Registers 8 - 15. */
8, 9, 10, 11, 12, 13, 14, 15,
- /* Return Address RA. Not mapped. */
- -1,
+ /* Return Address RA. Mapped to RIP. */
+ X86_64_RIP_REGNUM,
/* SSE Registers 0 - 7. */
X86_64_XMM0_REGNUM + 0, X86_64_XMM1_REGNUM,
@@ -179,19 +188,19 @@ static int x86_64_dwarf_regmap[] =
X86_64_ST0_REGNUM + 6, X86_64_ST0_REGNUM + 7
};
-static const int x86_64_dwarf_regmap_len =
- (sizeof (x86_64_dwarf_regmap) / sizeof (x86_64_dwarf_regmap[0]));
+static const int amd64_dwarf_regmap_len =
+ (sizeof (amd64_dwarf_regmap) / sizeof (amd64_dwarf_regmap[0]));
/* Convert DWARF register number REG to the appropriate register
number used by GDB. */
static int
-x86_64_dwarf_reg_to_regnum (int reg)
+amd64_dwarf_reg_to_regnum (int reg)
{
int regnum = -1;
- if (reg >= 0 || reg < x86_64_dwarf_regmap_len)
- regnum = x86_64_dwarf_regmap[reg];
+ if (reg >= 0 || reg < amd64_dwarf_regmap_len)
+ regnum = amd64_dwarf_regmap[reg];
if (regnum == -1)
warning ("Unmapped DWARF Register #%d encountered\n", reg);
@@ -203,7 +212,7 @@ x86_64_dwarf_reg_to_regnum (int reg)
needs any special handling. */
static int
-x86_64_convert_register_p (int regnum, struct type *type)
+amd64_convert_register_p (int regnum, struct type *type)
{
return i386_fp_regnum_p (regnum);
}
@@ -261,6 +270,19 @@ amd64_merge_classes (enum amd64_reg_class class1, enum amd64_reg_class class2)
static void amd64_classify (struct type *type, enum amd64_reg_class class[2]);
+/* Return non-zero if TYPE is a non-POD structure or union type. */
+
+static int
+amd64_non_pod_p (struct type *type)
+{
+ /* ??? A class with a base class certainly isn't POD, but does this
+ catch all non-POD structure types? */
+ if (TYPE_CODE (type) == TYPE_CODE_STRUCT && TYPE_N_BASECLASSES (type) > 0)
+ return 1;
+
+ return 0;
+}
+
/* Classify TYPE according to the rules for aggregate (structures and
arrays) and union types, and store the result in CLASS. */
@@ -272,7 +294,7 @@ amd64_classify_aggregate (struct type *type, enum amd64_reg_class class[2])
/* 1. If the size of an object is larger than two eightbytes, or in
C++, is a non-POD structure or union type, or contains
unaligned fields, it has class memory. */
- if (len > 16)
+ if (len > 16 || amd64_non_pod_p (type))
{
class[0] = class[1] = AMD64_MEMORY;
return;
@@ -309,6 +331,10 @@ amd64_classify_aggregate (struct type *type, enum amd64_reg_class class[2])
int pos = TYPE_FIELD_BITPOS (type, i) / 64;
enum amd64_reg_class subclass[2];
+ /* Ignore static fields. */
+ if (TYPE_FIELD_STATIC (type, i))
+ continue;
+
gdb_assert (pos == 0 || pos == 1);
amd64_classify (subtype, subclass);
@@ -468,7 +494,7 @@ amd64_return_value (struct gdbarch *gdbarch, struct type *type,
static CORE_ADDR
amd64_push_arguments (struct regcache *regcache, int nargs,
- struct value **args, CORE_ADDR sp)
+ struct value **args, CORE_ADDR sp, int struct_return)
{
static int integer_regnum[] =
{
@@ -492,6 +518,10 @@ amd64_push_arguments (struct regcache *regcache, int nargs,
int sse_reg = 0;
int i;
+ /* Reserve a register for the "hidden" argument. */
+ if (struct_return)
+ integer_reg++;
+
for (i = 0; i < nargs; i++)
{
struct type *type = VALUE_TYPE (args[i]);
@@ -592,15 +622,15 @@ amd64_push_arguments (struct regcache *regcache, int nargs,
}
static CORE_ADDR
-x86_64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
- struct regcache *regcache, CORE_ADDR bp_addr,
- int nargs, struct value **args, CORE_ADDR sp,
- int struct_return, CORE_ADDR struct_addr)
+amd64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
+ struct regcache *regcache, CORE_ADDR bp_addr,
+ int nargs, struct value **args, CORE_ADDR sp,
+ int struct_return, CORE_ADDR struct_addr)
{
char buf[8];
/* Pass arguments. */
- sp = amd64_push_arguments (regcache, nargs, args, sp);
+ sp = amd64_push_arguments (regcache, nargs, args, sp, struct_return);
/* Pass "hidden" argument". */
if (struct_return)
@@ -626,9 +656,9 @@ x86_64_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
/* The maximum number of saved registers. This should include %rip. */
-#define X86_64_NUM_SAVED_REGS X86_64_NUM_GREGS
+#define AMD64_NUM_SAVED_REGS X86_64_NUM_GREGS
-struct x86_64_frame_cache
+struct amd64_frame_cache
{
/* Base address. */
CORE_ADDR base;
@@ -636,7 +666,7 @@ struct x86_64_frame_cache
CORE_ADDR pc;
/* Saved registers. */
- CORE_ADDR saved_regs[X86_64_NUM_SAVED_REGS];
+ CORE_ADDR saved_regs[AMD64_NUM_SAVED_REGS];
CORE_ADDR saved_sp;
/* Do we have a frame? */
@@ -645,13 +675,13 @@ struct x86_64_frame_cache
/* Allocate and initialize a frame cache. */
-static struct x86_64_frame_cache *
-x86_64_alloc_frame_cache (void)
+static struct amd64_frame_cache *
+amd64_alloc_frame_cache (void)
{
- struct x86_64_frame_cache *cache;
+ struct amd64_frame_cache *cache;
int i;
- cache = FRAME_OBSTACK_ZALLOC (struct x86_64_frame_cache);
+ cache = FRAME_OBSTACK_ZALLOC (struct amd64_frame_cache);
/* Base address. */
cache->base = 0;
@@ -660,7 +690,7 @@ x86_64_alloc_frame_cache (void)
/* Saved registers. We initialize these to -1 since zero is a valid
offset (that's where %rbp is supposed to be stored). */
- for (i = 0; i < X86_64_NUM_SAVED_REGS; i++)
+ for (i = 0; i < AMD64_NUM_SAVED_REGS; i++)
cache->saved_regs[i] = -1;
cache->saved_sp = 0;
@@ -683,8 +713,8 @@ x86_64_alloc_frame_cache (void)
to have no prologue and thus no valid frame pointer in %rbp. */
static CORE_ADDR
-x86_64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc,
- struct x86_64_frame_cache *cache)
+amd64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc,
+ struct amd64_frame_cache *cache)
{
static unsigned char proto[3] = { 0x48, 0x89, 0xe5 };
unsigned char buf[3];
@@ -722,12 +752,12 @@ x86_64_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc,
/* Return PC of first real instruction. */
static CORE_ADDR
-x86_64_skip_prologue (CORE_ADDR start_pc)
+amd64_skip_prologue (CORE_ADDR start_pc)
{
- struct x86_64_frame_cache cache;
+ struct amd64_frame_cache cache;
CORE_ADDR pc;
- pc = x86_64_analyze_prologue (start_pc, 0xffffffffffffffff, &cache);
+ pc = amd64_analyze_prologue (start_pc, 0xffffffffffffffff, &cache);
if (cache.frameless_p)
return start_pc;
@@ -737,22 +767,22 @@ x86_64_skip_prologue (CORE_ADDR start_pc)
/* Normal frames. */
-static struct x86_64_frame_cache *
-x86_64_frame_cache (struct frame_info *next_frame, void **this_cache)
+static struct amd64_frame_cache *
+amd64_frame_cache (struct frame_info *next_frame, void **this_cache)
{
- struct x86_64_frame_cache *cache;
+ struct amd64_frame_cache *cache;
char buf[8];
int i;
if (*this_cache)
return *this_cache;
- cache = x86_64_alloc_frame_cache ();
+ cache = amd64_alloc_frame_cache ();
*this_cache = cache;
cache->pc = frame_func_unwind (next_frame);
if (cache->pc != 0)
- x86_64_analyze_prologue (cache->pc, frame_pc_unwind (next_frame), cache);
+ amd64_analyze_prologue (cache->pc, frame_pc_unwind (next_frame), cache);
if (cache->frameless_p)
{
@@ -784,7 +814,7 @@ x86_64_frame_cache (struct frame_info *next_frame, void **this_cache)
/* Adjust all the saved registers such that they contain addresses
instead of offsets. */
- for (i = 0; i < X86_64_NUM_SAVED_REGS; i++)
+ for (i = 0; i < AMD64_NUM_SAVED_REGS; i++)
if (cache->saved_regs[i] != -1)
cache->saved_regs[i] += cache->base;
@@ -792,11 +822,11 @@ x86_64_frame_cache (struct frame_info *next_frame, void **this_cache)
}
static void
-x86_64_frame_this_id (struct frame_info *next_frame, void **this_cache,
- struct frame_id *this_id)
+amd64_frame_this_id (struct frame_info *next_frame, void **this_cache,
+ struct frame_id *this_id)
{
- struct x86_64_frame_cache *cache =
- x86_64_frame_cache (next_frame, this_cache);
+ struct amd64_frame_cache *cache =
+ amd64_frame_cache (next_frame, this_cache);
/* This marks the outermost frame. */
if (cache->base == 0)
@@ -806,13 +836,13 @@ x86_64_frame_this_id (struct frame_info *next_frame, void **this_cache,
}
static void
-x86_64_frame_prev_register (struct frame_info *next_frame, void **this_cache,
- int regnum, int *optimizedp,
- enum lval_type *lvalp, CORE_ADDR *addrp,
- int *realnump, void *valuep)
+amd64_frame_prev_register (struct frame_info *next_frame, void **this_cache,
+ int regnum, int *optimizedp,
+ enum lval_type *lvalp, CORE_ADDR *addrp,
+ int *realnump, void *valuep)
{
- struct x86_64_frame_cache *cache =
- x86_64_frame_cache (next_frame, this_cache);
+ struct amd64_frame_cache *cache =
+ amd64_frame_cache (next_frame, this_cache);
gdb_assert (regnum >= 0);
@@ -830,7 +860,7 @@ x86_64_frame_prev_register (struct frame_info *next_frame, void **this_cache,
return;
}
- if (regnum < X86_64_NUM_SAVED_REGS && cache->saved_regs[regnum] != -1)
+ if (regnum < AMD64_NUM_SAVED_REGS && cache->saved_regs[regnum] != -1)
{
*optimizedp = 0;
*lvalp = lval_memory;
@@ -849,17 +879,17 @@ x86_64_frame_prev_register (struct frame_info *next_frame, void **this_cache,
optimizedp, lvalp, addrp, realnump, valuep);
}
-static const struct frame_unwind x86_64_frame_unwind =
+static const struct frame_unwind amd64_frame_unwind =
{
NORMAL_FRAME,
- x86_64_frame_this_id,
- x86_64_frame_prev_register
+ amd64_frame_this_id,
+ amd64_frame_prev_register
};
static const struct frame_unwind *
-x86_64_frame_sniffer (struct frame_info *next_frame)
+amd64_frame_sniffer (struct frame_info *next_frame)
{
- return &x86_64_frame_unwind;
+ return &amd64_frame_unwind;
}
@@ -869,10 +899,10 @@ x86_64_frame_sniffer (struct frame_info *next_frame)
64-bit variants. This would require using identical frame caches
on both platforms. */
-static struct x86_64_frame_cache *
-x86_64_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache)
+static struct amd64_frame_cache *
+amd64_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache)
{
- struct x86_64_frame_cache *cache;
+ struct amd64_frame_cache *cache;
struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
CORE_ADDR addr;
char buf[8];
@@ -881,14 +911,14 @@ x86_64_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache)
if (*this_cache)
return *this_cache;
- cache = x86_64_alloc_frame_cache ();
+ cache = amd64_alloc_frame_cache ();
frame_unwind_register (next_frame, X86_64_RSP_REGNUM, buf);
cache->base = extract_unsigned_integer (buf, 8) - 8;
addr = tdep->sigcontext_addr (next_frame);
gdb_assert (tdep->sc_reg_offset);
- gdb_assert (tdep->sc_num_regs <= X86_64_NUM_SAVED_REGS);
+ gdb_assert (tdep->sc_num_regs <= AMD64_NUM_SAVED_REGS);
for (i = 0; i < tdep->sc_num_regs; i++)
if (tdep->sc_reg_offset[i] != -1)
cache->saved_regs[i] = addr + tdep->sc_reg_offset[i];
@@ -898,38 +928,38 @@ x86_64_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache)
}
static void
-x86_64_sigtramp_frame_this_id (struct frame_info *next_frame,
- void **this_cache, struct frame_id *this_id)
+amd64_sigtramp_frame_this_id (struct frame_info *next_frame,
+ void **this_cache, struct frame_id *this_id)
{
- struct x86_64_frame_cache *cache =
- x86_64_sigtramp_frame_cache (next_frame, this_cache);
+ struct amd64_frame_cache *cache =
+ amd64_sigtramp_frame_cache (next_frame, this_cache);
(*this_id) = frame_id_build (cache->base + 16, frame_pc_unwind (next_frame));
}
static void
-x86_64_sigtramp_frame_prev_register (struct frame_info *next_frame,
- void **this_cache,
- int regnum, int *optimizedp,
- enum lval_type *lvalp, CORE_ADDR *addrp,
- int *realnump, void *valuep)
+amd64_sigtramp_frame_prev_register (struct frame_info *next_frame,
+ void **this_cache,
+ int regnum, int *optimizedp,
+ enum lval_type *lvalp, CORE_ADDR *addrp,
+ int *realnump, void *valuep)
{
/* Make sure we've initialized the cache. */
- x86_64_sigtramp_frame_cache (next_frame, this_cache);
+ amd64_sigtramp_frame_cache (next_frame, this_cache);
- x86_64_frame_prev_register (next_frame, this_cache, regnum,
- optimizedp, lvalp, addrp, realnump, valuep);
+ amd64_frame_prev_register (next_frame, this_cache, regnum,
+ optimizedp, lvalp, addrp, realnump, valuep);
}
-static const struct frame_unwind x86_64_sigtramp_frame_unwind =
+static const struct frame_unwind amd64_sigtramp_frame_unwind =
{
SIGTRAMP_FRAME,
- x86_64_sigtramp_frame_this_id,
- x86_64_sigtramp_frame_prev_register
+ amd64_sigtramp_frame_this_id,
+ amd64_sigtramp_frame_prev_register
};
static const struct frame_unwind *
-x86_64_sigtramp_frame_sniffer (struct frame_info *next_frame)
+amd64_sigtramp_frame_sniffer (struct frame_info *next_frame)
{
CORE_ADDR pc = frame_pc_unwind (next_frame);
char *name;
@@ -939,7 +969,7 @@ x86_64_sigtramp_frame_sniffer (struct frame_info *next_frame)
{
gdb_assert (gdbarch_tdep (current_gdbarch)->sigcontext_addr);
- return &x86_64_sigtramp_frame_unwind;
+ return &amd64_sigtramp_frame_unwind;
}
return NULL;
@@ -947,24 +977,24 @@ x86_64_sigtramp_frame_sniffer (struct frame_info *next_frame)
static CORE_ADDR
-x86_64_frame_base_address (struct frame_info *next_frame, void **this_cache)
+amd64_frame_base_address (struct frame_info *next_frame, void **this_cache)
{
- struct x86_64_frame_cache *cache =
- x86_64_frame_cache (next_frame, this_cache);
+ struct amd64_frame_cache *cache =
+ amd64_frame_cache (next_frame, this_cache);
return cache->base;
}
-static const struct frame_base x86_64_frame_base =
+static const struct frame_base amd64_frame_base =
{
- &x86_64_frame_unwind,
- x86_64_frame_base_address,
- x86_64_frame_base_address,
- x86_64_frame_base_address
+ &amd64_frame_unwind,
+ amd64_frame_base_address,
+ amd64_frame_base_address,
+ amd64_frame_base_address
};
static struct frame_id
-x86_64_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
+amd64_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
{
char buf[8];
CORE_ADDR fp;
@@ -978,7 +1008,7 @@ x86_64_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
/* 16 byte align the SP per frame requirements. */
static CORE_ADDR
-x86_64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
+amd64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
{
return sp & -(CORE_ADDR)16;
}
@@ -989,8 +1019,8 @@ x86_64_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp)
registers in REGSET. */
static void
-x86_64_supply_fpregset (const struct regset *regset, struct regcache *regcache,
- int regnum, const void *fpregs, size_t len)
+amd64_supply_fpregset (const struct regset *regset, struct regcache *regcache,
+ int regnum, const void *fpregs, size_t len)
{
const struct gdbarch_tdep *tdep = regset->descr;
@@ -1002,8 +1032,8 @@ x86_64_supply_fpregset (const struct regset *regset, struct regcache *regcache,
by SECT_NAME and SECT_SIZE. */
static const struct regset *
-x86_64_regset_from_core_section (struct gdbarch *gdbarch,
- const char *sect_name, size_t sect_size)
+amd64_regset_from_core_section (struct gdbarch *gdbarch,
+ const char *sect_name, size_t sect_size)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
@@ -1013,7 +1043,7 @@ x86_64_regset_from_core_section (struct gdbarch *gdbarch,
{
tdep->fpregset = XMALLOC (struct regset);
tdep->fpregset->descr = tdep;
- tdep->fpregset->supply_regset = x86_64_supply_fpregset;
+ tdep->fpregset->supply_regset = amd64_supply_fpregset;
}
return tdep->fpregset;
@@ -1041,14 +1071,14 @@ x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
set_gdbarch_long_long_bit (gdbarch, 64);
set_gdbarch_ptr_bit (gdbarch, 64);
- /* In contrast to the i386, on the x86-64 a `long double' actually
- takes up 128 bits, even though it's still based on the i387
- extended floating-point format which has only 80 significant bits. */
+ /* In contrast to the i386, on AMD64 a `long double' actually takes
+ up 128 bits, even though it's still based on the i387 extended
+ floating-point format which has only 80 significant bits. */
set_gdbarch_long_double_bit (gdbarch, 128);
- set_gdbarch_num_regs (gdbarch, X86_64_NUM_REGS);
- set_gdbarch_register_name (gdbarch, x86_64_register_name);
- set_gdbarch_register_type (gdbarch, x86_64_register_type);
+ set_gdbarch_num_regs (gdbarch, AMD64_NUM_REGS);
+ set_gdbarch_register_name (gdbarch, amd64_register_name);
+ set_gdbarch_register_type (gdbarch, amd64_register_type);
/* Register numbers of various important registers. */
set_gdbarch_sp_regnum (gdbarch, X86_64_RSP_REGNUM); /* %rsp */
@@ -1056,53 +1086,51 @@ x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
set_gdbarch_ps_regnum (gdbarch, X86_64_EFLAGS_REGNUM); /* %eflags */
set_gdbarch_fp0_regnum (gdbarch, X86_64_ST0_REGNUM); /* %st(0) */
- /* The "default" register numbering scheme for the x86-64 is
- referred to as the "DWARF Register Number Mapping" in the System
- V psABI. The preferred debugging format for all known x86-64
- targets is actually DWARF2, and GCC doesn't seem to support DWARF
- (that is DWARF-1), but we provide the same mapping just in case.
- This mapping is also used for stabs, which GCC does support. */
- set_gdbarch_stab_reg_to_regnum (gdbarch, x86_64_dwarf_reg_to_regnum);
- set_gdbarch_dwarf_reg_to_regnum (gdbarch, x86_64_dwarf_reg_to_regnum);
- set_gdbarch_dwarf2_reg_to_regnum (gdbarch, x86_64_dwarf_reg_to_regnum);
+ /* The "default" register numbering scheme for AMD64 is referred to
+ as the "DWARF Register Number Mapping" in the System V psABI.
+ The preferred debugging format for all known AMD64 targets is
+ actually DWARF2, and GCC doesn't seem to support DWARF (that is
+ DWARF-1), but we provide the same mapping just in case. This
+ mapping is also used for stabs, which GCC does support. */
+ set_gdbarch_stab_reg_to_regnum (gdbarch, amd64_dwarf_reg_to_regnum);
+ set_gdbarch_dwarf_reg_to_regnum (gdbarch, amd64_dwarf_reg_to_regnum);
+ set_gdbarch_dwarf2_reg_to_regnum (gdbarch, amd64_dwarf_reg_to_regnum);
/* We don't override SDB_REG_RO_REGNUM, since COFF doesn't seem to
- be in use on any of the supported x86-64 targets. */
+ be in use on any of the supported AMD64 targets. */
/* Call dummy code. */
- set_gdbarch_push_dummy_call (gdbarch, x86_64_push_dummy_call);
- set_gdbarch_frame_align (gdbarch, x86_64_frame_align);
+ set_gdbarch_push_dummy_call (gdbarch, amd64_push_dummy_call);
+ set_gdbarch_frame_align (gdbarch, amd64_frame_align);
set_gdbarch_frame_red_zone_size (gdbarch, 128);
- set_gdbarch_convert_register_p (gdbarch, x86_64_convert_register_p);
+ set_gdbarch_convert_register_p (gdbarch, amd64_convert_register_p);
set_gdbarch_register_to_value (gdbarch, i387_register_to_value);
set_gdbarch_value_to_register (gdbarch, i387_value_to_register);
set_gdbarch_return_value (gdbarch, amd64_return_value);
- /* Override, since this is handled by x86_64_extract_return_value. */
- set_gdbarch_extract_struct_value_address (gdbarch, NULL);
- set_gdbarch_skip_prologue (gdbarch, x86_64_skip_prologue);
+ set_gdbarch_skip_prologue (gdbarch, amd64_skip_prologue);
/* Avoid wiring in the MMX registers for now. */
set_gdbarch_num_pseudo_regs (gdbarch, 0);
tdep->mm0_regnum = -1;
- set_gdbarch_unwind_dummy_id (gdbarch, x86_64_unwind_dummy_id);
+ set_gdbarch_unwind_dummy_id (gdbarch, amd64_unwind_dummy_id);
/* FIXME: kettenis/20021026: This is ELF-specific. Fine for now,
- since all supported x86-64 targets are ELF, but that might change
+ since all supported AMD64 targets are ELF, but that might change
in the future. */
set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section);
- frame_unwind_append_sniffer (gdbarch, x86_64_sigtramp_frame_sniffer);
- frame_unwind_append_sniffer (gdbarch, x86_64_frame_sniffer);
- frame_base_set_default (gdbarch, &x86_64_frame_base);
+ frame_unwind_append_sniffer (gdbarch, amd64_sigtramp_frame_sniffer);
+ frame_unwind_append_sniffer (gdbarch, amd64_frame_sniffer);
+ frame_base_set_default (gdbarch, &amd64_frame_base);
/* If we have a register mapping, enable the generic core file support. */
if (tdep->gregset_reg_offset)
set_gdbarch_regset_from_core_section (gdbarch,
- x86_64_regset_from_core_section);
+ amd64_regset_from_core_section);
}
diff --git a/gdb/x86-64-tdep.h b/gdb/x86-64-tdep.h
index 17d2cdfa441..4aa0e7faf9f 100644
--- a/gdb/x86-64-tdep.h
+++ b/gdb/x86-64-tdep.h
@@ -1,8 +1,6 @@
/* Target-dependent code for the x86-64.
- Copyright 2001, 2003
- Free Software Foundation, Inc.
-
+ Copyright 2001, 2003, 2004 Free Software Foundation, Inc.
Contributed by Jiri Smid, SuSE Labs.
This file is part of GDB.
@@ -40,12 +38,12 @@ struct regcache;
#define X86_64_RSP_REGNUM 7 /* %rsp */
#define X86_64_RIP_REGNUM 16 /* %rip */
#define X86_64_EFLAGS_REGNUM 17 /* %eflags */
-#define X86_64_ST0_REGNUM 22 /* %st0 */
-#define X86_64_XMM0_REGNUM 38 /* %xmm0 */
-#define X86_64_XMM1_REGNUM 39 /* %xmm1 */
+#define X86_64_ST0_REGNUM 24 /* %st0 */
+#define X86_64_XMM0_REGNUM 40 /* %xmm0 */
+#define X86_64_XMM1_REGNUM 41 /* %xmm1 */
/* Number of general purpose registers. */
-#define X86_64_NUM_GREGS 22
+#define X86_64_NUM_GREGS 24
void x86_64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch);
diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c
index e4bebc875da..da875d3a702 100644
--- a/gdb/xstormy16-tdep.c
+++ b/gdb/xstormy16-tdep.c
@@ -1,6 +1,6 @@
/* Target-dependent code for the Sanyo Xstormy16a (LC590000) processor.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GDB.
@@ -151,16 +151,6 @@ xstormy16_register_raw_size (int regnum)
return xstormy16_reg_size;
}
-/* Function: xstormy16_register_virtual_size
- Returns the number of bytes occupied by the register as represented
- internally by gdb. */
-
-static int
-xstormy16_register_virtual_size (int regnum)
-{
- return xstormy16_register_raw_size (regnum);
-}
-
/* Function: xstormy16_reg_virtual_type
Returns the default type for register N. */
@@ -409,10 +399,14 @@ xstormy16_store_return_value (struct type *type, char *valbuf)
*/
static CORE_ADDR
-xstormy16_extract_struct_value_address (char *regbuf)
+xstormy16_extract_struct_value_address (struct regcache *regcache)
{
- return extract_unsigned_integer (regbuf + xstormy16_register_byte (E_PTR_RET_REGNUM),
- xstormy16_reg_size);
+ /* FIXME: cagney/2004-01-17: Does the ABI guarantee that the return
+ address regster is preserved across function calls? Probably
+ not, making this function wrong. */
+ ULONGEST val;
+ regcache_raw_read_unsigned (regcache, E_PTR_RET_REGNUM, &val);
+ return val;
}
/* Function: xstormy16_use_struct_convention
@@ -1069,11 +1063,6 @@ xstormy16_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
*/
/* Stack grows up. */
set_gdbarch_inner_than (gdbarch, core_addr_greaterthan);
- /* PC stops zero byte after a trap instruction
- (which means: exactly on trap instruction). */
- set_gdbarch_decr_pc_after_break (gdbarch, 0);
- /* This value is almost never non-zero... */
- set_gdbarch_function_start_offset (gdbarch, 0);
/* This value is almost never non-zero... */
set_gdbarch_frame_args_skip (gdbarch, 0);
@@ -1087,7 +1076,7 @@ xstormy16_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
set_gdbarch_deprecated_pop_frame (gdbarch, xstormy16_pop_frame);
set_gdbarch_deprecated_store_struct_return (gdbarch, xstormy16_store_struct_return);
set_gdbarch_deprecated_store_return_value (gdbarch, xstormy16_store_return_value);
- set_gdbarch_deprecated_extract_struct_value_address (gdbarch, xstormy16_extract_struct_value_address);
+ set_gdbarch_extract_struct_value_address (gdbarch, xstormy16_extract_struct_value_address);
set_gdbarch_use_struct_convention (gdbarch,
xstormy16_use_struct_convention);
set_gdbarch_deprecated_call_dummy_words (gdbarch, call_dummy_words);
diff --git a/gettext.m4 b/gettext.m4
index 82a5277f225..6735696cb9a 100644
--- a/gettext.m4
+++ b/gettext.m4
@@ -11,7 +11,7 @@
# serial 3
-AC_DEFUN(CY_WITH_NLS,
+AC_DEFUN([CY_WITH_NLS],
[AC_MSG_CHECKING([whether NLS is requested])
dnl Default is enabled NLS
AC_ARG_ENABLE(nls,
@@ -158,7 +158,7 @@ AC_DEFUN(CY_WITH_NLS,
AC_SUBST(POSUB)
])
-AC_DEFUN(CY_GNU_GETTEXT,
+AC_DEFUN([CY_GNU_GETTEXT],
[AC_REQUIRE([AC_PROG_MAKE_SET])dnl
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_PROG_RANLIB])dnl
@@ -286,7 +286,7 @@ __argz_count __argz_stringify __argz_next])
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN(AM_PATH_PROG_WITH_TEST,
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
[# Extract the first word of "$2", so it can be a program name with args.
set dummy $2; ac_word=[$]2
AC_MSG_CHECKING([for $ac_word])
@@ -332,7 +332,7 @@ AC_SUBST($1)dnl
# serial 1
-AC_DEFUN(AM_LC_MESSAGES,
+AC_DEFUN([AM_LC_MESSAGES],
[if test $ac_cv_header_locale_h = yes; then
AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
diff --git a/include/ChangeLog b/include/ChangeLog
index 4328b98a45c..e2fa68f30d9 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,39 +1,32 @@
-2003-12-04 H.J. Lu <hongjiu.lu@intel.com>
+2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
- * bfdlink.h (bfd_link_info): Change relax_finalizing to
- need_relax_finalize.
+ * demangle.h: Instead of checking ANSI_PROTOTYPES, just include
+ "libiberty.h".
-2003-12-03 Alan Modra <amodra@bigpond.net.au>
+ * demangle.h: If ANSI_PROTOTYPES is defined, include <stddef.h>.
- * bfdlink.h (struct bfd_link_hash_entry): Rename "next" to "und_next".
+ * demangle.h (enum demangle_component_type): Define.
+ (struct demangle_operator_info): Declare.
+ (struct demangle_builtin_type_info): Declare.
+ (struct demangle_component): Define.
+ (cplus_demangle_fill_component): Declare.
+ (cplus_demangle_fill_name): Declare.
+ (cplus_demangle_fill_builtin_type): Declare.
+ (cplus_demangle_fill_operator): Declare.
+ (cplus_demangle_fill_extended_operator): Declare.
+ (cplus_demangle_fill_ctor, cplus_demangle_fill_dtor): Declare.
+ (cplus_demangle_v3_components): Declare.
+ (cplus_demangle_print): Declare.
-2003-12-02 Alan Modra <amodra@bigpond.net.au>
+2003-12-19 Andreas Tobler <a.tobler@schweiz.ch>
- * bfdlink.h (struct bfd_link_info): Remove mpc860c0 field.
+ * include/fibheap.h (fibnode): Use __extension__ for
+ bit-fields mark and degree if __GNUC__.
-2003-11-18 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
+2003-12-18 Kazu Hirata <kazu@cs.umass.edu>
- * opcode/mips.h: Define new enum members, M_LCA_AB and M_DLCA_AB.
-
-2003-11-14 Nick Clifton <nickc@redhat.com>
-
- * dis-asm.h (struct disassemble_info): Add new field
- 'symbol_is_valid' which is a function which can tell the
- disassembler to skip certain symbols as they should not be
- displayed to the user.
- (arm_symbol_is_valid): New prototype. This is the ARM
- specific function for the symbol_is_valid field.
- (generic_symbol_is_valid): New prototype. This is the default
- function pointed to by the symbol_is_valid field.
-
-2003-11-06 Bruno Rohee <bruno@rohee.com>
-
- * hp-symtab.h: Fix "the the" typo.
-
-2003-10-24 H.J. Lu <hongjiu.lu@intel.com>
-
- * bfdlink.h (bfd_elf_version_expr): Add "symbol" and remove
- "wildcard".
+ * include/fibheap.h (fibnode): Use unsigned long int for
+ bit-fields if __GNUC__ is defined.
2003-10-22 Joseph S. Myers <jsm@polyomino.org.uk>
@@ -50,23 +43,6 @@
definiens of the fast variant; that way, we'll be more likely to
catch future bugs in the fast variants.
-2003-10-22 Jakub Jelinek <jakub@redhat.com>
-
- * bfdlink.h (struct bfd_elf_version_expr): Remove match field.
- Add wildcard and mask fields.
- (BFD_ELF_VERSION_C_TYPE): Define.
- (BFD_ELF_VERSION_CXX_TYPE): Likewise.
- (BFD_ELF_VERSION_JAVA_TYPE): Likewise.
- (struct bfd_elf_version_expr_head): New.
- (struct bfd_elf_version_tree): Add match field.
- Change type of globals and locals fields
- to struct bfd_elf_version_expr_head.
-
-2003-10-14 Bob Wilson <bob.wilson@acm.org>
-
- * elf/xtensa.h: Formatting. Fix comments about property section
- names for linkonce sections.
-
2003-09-22 Andrew Cagney <cagney@redhat.com>
* floatformat.h (struct floatformat): Add field "is_valid".
@@ -84,27 +60,6 @@
* floatformat.h (floatformat_is_valid): Add prototype.
-2003-08-27 Andrew Cagney <cagney@redhat.com>
-
- * dis-asm.h (init_disassemble_info): Declare.
- (INIT_DISASSEMBLE_INFO): Redefine as a call to
- init_disassemble_info.
- (INIT_DISASSEMBLE_INFO_NO_ARCH): Ditto.
-
-2003-08-20 Nick Clifton <nickc@redhat.com>
-
- * bfdlink.h (enum report_method): New enum. Describes how to
- report something.
- (struct bfd_link_info): Delete fields 'no_undefined' and
- 'allow_shlib_undefined'. Replace with
- 'unresolved_symbols_in_objects' and
- 'unresolved_symbols_in_shared_libs'.
-
-2003-08-07 Alan Modra <amodra@bigpond.net.au>
-
- * bfdlink.h: Remove PARAMS macro. Replace PTR with void *.
- * dis-asm.h: Likewise.
-
2003-07-09 Bob Wilson <bob.wilson@acm.org>
* xtensa-config.h: Undef all macros before defining them.
@@ -121,15 +76,6 @@
* xtensa-config.h: New file imported from binutils.
-2003-06-30 Bob Wilson <bob.wilson@acm.org>
-
- * xtensa-config.h (XCHAL_HAVE_CONST16, XCHAL_HAVE_ABS,
- XCHAL_HAVE_ADDX, XCHAL_HAVE_L32R): Define.
-
-2003-06-25 Alan Modra <amodra@bigpond.net.au>
-
- * bfdlink.h: Correct spelling of "relocatable".
-
2003-06-22 Zack Weinberg <zack@codesourcery.com>
* safe-ctype.h (HC_UNKNOWN, HC_ASCII, HC_EBCDIC): Rename to
@@ -145,25 +91,6 @@
* ansidecl.h: Delete HAVE_LONG_DOUBLE GCC bootstrap support.
-2003-05-23 Jakub Jelinek <jakub@redhat.com>
-
- * bfdlink.h (struct bfd_link_info): Add execstack and noexecstack.
- * elf/common.h (PT_GNU_STACK): Define.
-
-2003-06-03 H.J. Lu <hongjiu.lu@intel.com>
-
- * bfdlink.h (LD_DEFINITION_IN_DISCARDED_SECTION): New.
-
-2003-05-30 Ulrich Drepper <drepper@redhat.com>
- Jakub Jelinek <jakub@redhat.com>
-
- * bfdlink.h (struct bfd_link_info): Add pie and executable
- bits.
-
-2003-05-21 Nick Clifton <nickc@redhat.com>
-
- * bfdlink.h (struct bfd_link_hash_table): Fix typo in comment.
-
2003-05-15 Jim Blandy <jimb@redhat.com>
* libiberty.h (hex_value): Make the value an unsigned int, to
@@ -171,43 +98,11 @@
than int --- like bfd_vma, on some platforms.
(_hex_value): Update declaration.
-2003-05-09 Alan Modra <amodra@bigpond.net.au>
-
- * xtensa-isa-internal.h (xtensa_isa_module_struct): Remove const on
- gen_num_opcodes_fn return type.
-
2003-05-07 Jason Merrill <jason@redhat.com>
* hashtab.h (iterative_hash): Prototype.
(iterative_hash_object): New macro.
-2003-04-28 H.J. Lu <hjl@gnu.org>
-
- * bfdlink.h (bfd_link_info): Add relax_finalizing.
-
-2003-04-23 H.J. Lu <hjl@gnu.org>
-
- * bfdlink.h (bfd_link_callbacks): Add error_handler.
-
-2003-04-04 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * coff/tic4x.h: Namespace cleanup. Replace s/c4x/tic4x
- and s/c3x/tic3x/
- * coff/tc-tic4x.h: Ditto
- * opcode/tic4x.h: Ditto
-
-2003-04-02 Bob Wilson <bob.wilson@acm.org>
-
- * xtensa-config.h: Remove comment indicating that this is a
- generated file.
-
-2003-04-01 Bob Wilson <bob.wilson@acm.org>
-
- * dis-asm.h (print_insn_xtensa): Declare.
- * xtensa-config.h: New file.
- * xtensa-isa-internal.h: Likewise.
- * xtensa-isa.h: Likewise.
-
2003-03-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* ansidecl.h (ATTRIBUTE_NONNULL, ATTRIBUTE_NULL_PRINTF,
@@ -232,10 +127,6 @@
* libiberty.h (lrealpath): Add declaration.
-2003-01-31 Grant Grundler <grundler@dsl2.external.hp.com>
-
- * hppa.h (ldwa, ldda): Add ordered opcodes.
-
2003-01-26 Daniel Jacobowitz <drow@mvista.com>
* hashtab.h (htab_alloc_with_arg, htab_free_with_arg): Add new types.
@@ -243,15 +134,6 @@
(htab_create_alloc_ex): New prototype.
(htab_set_functions_ex): New prototype.
-2003-01-25 Jakub Jelinek <jakub@redhat.com>
-
- * elf/sparc.h: Add TLS relocs. Move R_SPARC_REV32 to 252.
-
-2003-01-20 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * coff/tic4x.h (TICOFF_TARGET_MACHINE_GET): Fixed define bug
- * coff/ti.h (TICOFF_TARGET_MACHINE_GET): Added macros
-
2002-07-17 Geoffrey Keating <geoffk@redhat.com>
* splay-tree.h (GTY): Define if undefined.
@@ -260,31 +142,6 @@
(struct splay_tree_s): Likewise. Make allocate_data a PTR,
not a void *.
-2002-01-02 Ben Elliston <bje@redhat.com>
-
- * dis-asm.h (print_insn_iq2000): Declare.
-
-2002-12-24 Dmitry Diky <diwil@mail.ru>
-
- * dis-asm.h: Add msp430 disassembler prototype.
-
-2002-12-27 Chris Demetriou <cgd@broadcom.com>
-
- * dis-asm.h (print_mips_disassembler_options): Prototype.
-
-2002-12-23 Alan Modra <amodra@bigpond.net.au>
-
- * bfdlink.h (struct bfd_link_info): Add "strip_discarded".
-
-2002-12-20 Alan Modra <amodra@bigpond.net.au>
-
- * bfdlink.h (struct bfd_link_info): Replace bfd_boolean fields with
- bit-fields. Rearrange to put all like types together.
-
-2002-11-30 Alan Modra <amodra@bigpond.net.au>
-
- * bfdlink.h: Replace boolean with bfd_boolean. Formatting.
-
2002-11-23 Simon Burge <simonb@wasabisystems.com>
* libiberty.h (basename): Add NetBSD to the list.
@@ -293,17 +150,6 @@
* libiberty.h (make_relative_prefix): Add prototype.
-2002-11-16 Klee Dienes <kdienes@apple.com>
-
- * opcode/m88k.h (INSTAB): Remove 'next' field.
- (instruction): Remove definition; replace with extern declaration
- and mark as const.
-
-2002-11-14 Egor Duda <deo@logos-m.ru>
-
- * bfdlink.h (struct bfd_link_info): Add new boolean
- field pei386_runtime_pseudo_reloc.
-
2002-10-26 Roger Sayle <roger@eyesopen.com>
* partition.h: Close the extern "C" scope when compiling with C++.
@@ -324,70 +170,11 @@
* getopt.h: getopt is in unistd.h (based on SUSv2).
-2002-09-26 Jakub Jelinek <jakub@redhat.com>
-
- * elf/x86-64.h: Add TLS relocs.
-
-2002-09-26 Andrew Cagney <ac131313@redhat.com>
-
- * regs/: Delete directory.
-
2002-09-19 Alexandre Oliva <aoliva@redhat.com>
* libiberty.h (asprintf, vasprintf): Don't declare them if the
corresponding HAVE_DECL_ macro is 1.
-2002-09-19 Jakub Jelinek <jakub@redhat.com>
-
- * elf/i386.h (R_386_TLS_TPOFF, R_386_TLS_IE, R_386_TLS_GOTIE):
- Define.
-
-2002-09-19 Nathan Tallent <eraxxon@alumni.rice.edu>
-
- * dis-asm.h: Remove (errant) trailing semicolon (;) from the
- extern "C" { } declaration.
-
-2002-09-04 Nick Clifton <nickc@redhat.com>
-
- * dis-asm.h (print_ppc_disassembler_options): Prototype.
-
-2002-08-28 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
-
- * coff/internal.h: Add new relocation types.
- * coff/ti.h: Add file-header flags for tic4x code.
- * dis-asm.h: Add standard disassembler for tic4x.
- * opcode/tic4x.h: New file.
- * coff/tic4x.h: New file
-
-2002-08-07 H.J. Lu <hjl@gnu.org>
-
- * bfdlink.h (bfd_link_info): Add allow_undefined_version.
- (bfd_elf_version_expr): Add symver and script.
-
-2002-07-31 Ian Dall <ian@sibyl.beware.dropbear.id.au>
-
- * bfdlink.h (bfd_link_common_skip_ar_symbols): New enum.
- (struct bfd_link_info): Add new field 'common_skip_ar_symbols'.
-
-2002-07-25 Richard Sandiford <rsandifo@redhat.com>
-
- * opcode/mips.h (CPU_R2000): Remove.
-
-2002-07-19 Denis Chertykov <denisc@overta.ru>
- Matthew Green <mrg@redhat.com>
-
- * dis-asm.h (print_insn_ip2k): Declare.
-
-2002-07-10 Jakub Jelinek <jakub@redhat.com>
-
- * elf/common.h (SHT_GNU_LIBLIST, DT_GNU_PRELINKED,
- DT_GNU_CONFLICT*, DT_GNU_LIBLIST*): Define.
-
-2002-07-01 Alan Modra <amodra@bigpond.net.au>
-
- * bfdlink.h (struct bfd_sym_chain): Declare.
- (struct bfd_link_info): Add gc_sym_list. Formatting fixes.
-
2002-06-25 Alan Modra <amodra@bigpond.net.au>
* demangle.h: #include "ansidecl.h" rather than #include <ansidecl.h>.
@@ -402,22 +189,6 @@
* libiberty.h (basename): Don't declare if HAVE_DECL_BASENAME.
* getopt.h (getopt): Don't declare if HAVE_DECL_GETOPT.
-2002-06-18 Dave Brolley <brolley@redhat.com>
-
- From Catherine Moore:
- * dis-asm.h (print_insn_frv): New prototype.
-
-2002-06-09 Andrew Cagney <cagney@redhat.com>
-
- * remote-sim.h: Move to directory gdb/.
- * callback.h: Move to directory gdb/.
-
-2002-06-07 Charles Wilson <cwilson@ece.gatech.edu>
-
- * bfdlink.h (struct bfd_link_info): Change type of
- pei386_auto_import field to int so that -1 can mean enabled by
- default and 1 can mean enabled by command line switch.
-
2002-06-06 DJ Delorie <dj@redhat.com>
* hashtab.h (htab): Rearrange new members for backward
@@ -445,33 +216,6 @@
(htab_create): Replace with #define.
(htab_try_create): Delete.
-2002-05-31 Michal Ludvig <mludvig@suse.cz>
-
- * elf/dwarf2.h (DW_CFA_low_user, DW_CFA_high_user): Renamed
- to DW_CFA_lo_user, DW_CFA_hi_user respectively.
-
-2002-05-28 Kuang Hwa Lin <kuang@sbcglobal.net>
-
- * dis-asm.h: Prototype print_insn_dlx.
-
-2002-05-23 Andrew Cagney <ac131313@redhat.com>
-
- * sim-d10v.h: Delete file. Moved to include/gdb/.
-
-2002-05-23 Jakub Jelinek <jakub@redhat.com>
-
- * elf/common.h (PT_TLS, SHF_TLS, STT_TLS, DF_STATIC_TLS): Define.
- * elf/ia64.h (R_IA64_LTOFF_TPREL22): Renamed from R_IA64_LTOFF_TP22.
- * elf/i386.h: Add TLS relocs.
-
-2002-05-21 H.J. Lu (hjl@gnu.org)
-
- * bfdlink.h (bfd_link_info): Add allow_multiple_definition.
-
-2002-05-17 J"orn Rennecke <joern.rennecke@superh.com>
-
- * dis-asm.h (print_insn_shl, print_insn_sh64l): Remove prototype.
-
2002-04-16 David S. Miller <davem@redhat.com>
* xregex2.h (__restrict_arr): Define to __restrict on GCC
@@ -481,15 +225,11 @@
* dyn-string.h: Also allow IN_GLIBCPP_V3 to redefine names.
-2002-03-10 Daniel Jacobowitz <drow@mvista.com>
-
- * gdb: New directory.
-
2002-03-06 Andrew Cagney <ac131313@redhat.com>
* floatformat.h (floatformat_arm_ext): Delete declaration.
-2002-02-21 Jim Blandy <jimb@redhat.com>
+2002-02-22 Jim Blandy <jimb@redhat.com>
Allow the user to specify functions for allocating memory for
splay tree roots and nodes.
@@ -499,25 +239,6 @@
`allocate_data'.
(splay_tree_new_with_allocator): New function declaration.
-2002-02-15 Alan Modra <amodra@bigpond.net.au>
-
- Support arbitrary length fill patterns.
- * bfdlink.h (enum bfd_link_order_type): Remove bfd_fill_link_order.
- (struct bfd_link_order): Remove fill. Add data.size.
-
-2002-02-08 Alexandre Oliva <aoliva@redhat.com>
-
- Contribute sh64-elf.
- 2000-11-25 Hans-Peter Nilsson <hpn@cygnus.com>
- * dis-asm.h (print_insn_sh64): New prototype.
- (print_insn_sh64l): New prototype.
- (print_insn_sh64x_media): New prototype.
-
-2002-02-05 Frank Ch. Eigler <fche@redhat.com>
-
- * dis-asm.h (disassemble_info): New field `insn_sets'.
- (INIT_DISASSEMBLE_INFO): Clear it.
-
2002-02-05 Jason Merrill <jason@redhat.com>
* demangle.h (cplus_demangle_v3): Add "options" parm.
@@ -529,48 +250,15 @@
* demangle.h (cplus_demangle_v3_type): New prototype.
-2002-01-31 Ivan Guzvinec <ivang@opencores.org>
-
- * dis-asm.h : Add support for or32 targets
-
2002-01-28 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* libiberty.h (C_alloca): Add ATTRIBUTE_MALLOC.
-2002-01-27 David O'Brien <obrien@FreeBSD.org>
-
- * cgen.h (BFD_VERSION): Use BFD_VERSION_DATE instead.
-
-2001-12-14 Nick Clifton <nickc@cambridge.redhat.com>
-
- * dis-asm.h (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialise the
- disassembler_options field (to NULL).
-
-2001-12-13 Jakub Jelinek <jakub@redhat.com>
-
- * bfdlink.h (struct bfd_link_info): Add eh_frame_hdr field.
-
-2001-12-07 Geoffrey Keating <geoffk@redhat.com>
-
- * dis-asm.h (print_insn_xstormy16): Declare.
-
2001-12-06 Richard Henderson <rth@redhat.com>
* demangle.h (no_demangling): New.
(NO_DEMANGLING_STYLE_STRING): New.
-2001-11-14 Alan Modra <amodra@bigpond.net.au>
-
- * dis-asm.h (print_insn_i386): Declare.
-
-2001-11-11 Timothy Wall <twall@alum.mit.edu>
-
- * dis-asm.h: Fix comment to refer to octets rather than bytes.
-
-2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
-
- * dis-asm.h (print_insn_mmix): Add prototype.
-
2001-10-24 Neil Booth <neil@daikokuya.demon.co.uk>
* safe-ctype.h (_sch_isbasic, IS_ISOBASIC): New.
@@ -582,19 +270,11 @@
* libiberty.h (_hex_value): Const-ify.
(hex_init): Delete.
-2001-10-16 Christopher Faylor <cgf@redhat.com>
-
- * filenames.h: Add cygwin to the list of dosish style path systems.
-
2001-10-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* demangle.h (demangler_engine): Const-ify.
* libiberty.h (buildargv): Likewise.
-2001-10-03 Vassili Karpov <malc@pulsesoft.com>
-
- * bfdlink.h (struct bfd_link_info): Add nocopyreloc field.
-
2001-09-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* libiberty.h (reconcat): New function.
@@ -624,24 +304,6 @@
* ansidecl.h (VA_OPEN, VA_CLOSE): Allow multiple uses.
-2001-08-25 Nick Clifton <nickc@cambridge.redhat.com>
-
- * bfdlink.h (struct bfd_link_info): Change 'spare_dynamic_tags' to
- unsigned to remove a compile time warning message.
-
-2001-08-24 H.J. Lu <hjl@gnu.org>
-
- * bfdlink.h (bfd_link_hash_table_type): New. The linker hash
- table type, bfd_link_generic_hash_table and
- bfd_link_elf_hash_table.
- (bfd_link_hash_table): Add a new field, type, for the linker
- hash table type.
-
-2001-08-23 Jakub Jelinek <jakub@redhat.com>
-
- * bfdlink.h (struct bfd_link_info): Add combreloc and
- spare_dynamic_tags fields.
-
2001-08-23 Lars Brinkhoff <lars@nocrew.org>
* dyn-string.h, fibheap.h, partition.h, sort.h, splay-tree.h:
@@ -652,10 +314,6 @@
* fibheap.h: Tidy formatting.
(fibnode_t): Limit degree to 31 bits to avoid warning.
-2001-08-20 Daniel Berlin <dan@cgsoftware.com>
-
- * fibheap.h: New file. Fibonacci heap.
-
2001-08-20 Andrew Cagney <ac131313@redhat.com>
* floatformat.h (floatformat_arm_ext): Document as deprecated.
@@ -664,6 +322,10 @@
(floatformat_ia64_spill_big, floatformat_ia64_quad_big)
(floatformat_m88110_harris_ext): Declare.
+2001-08-20 Daniel Berlin <dan@cgsoftware.com>
+
+ * fibheap.h: New file. Fibonacci heap.
+
2001-08-18 Zack Weinberg <zackw@panix.com>
* ansidecl.h: Reorganize for readability, remove documentation
@@ -686,11 +348,6 @@
(re_comp): Define to xre_comp.
(re_exec): Define to xre_exec.
-2001-08-02 Charles Wilson <cwilson@ece.gatech.edu>
-
- * bfdlink.h (struct bfd_link_info): add new boolean
- field pei386_auto_import.
-
2001-07-18 Andreas Jaeger <aj@suse.de>
* xregex2.h: Place under LGPL version 2.1.
@@ -700,10 +357,6 @@
* xregex.h: New file to support libiberty regex.
* xregex2.h: Ditto.
-2001-06-15 Hans-Peter Nilsson <hp@axis.com>
-
- * bfdlink.h (struct bfd_link_info): New member export_dynamic.
-
2001-05-16 Matt Kraai <kraai@alumni.carnegiemellon.edu>
* partition.h: Fix misspelling of `implementation'.
@@ -723,18 +376,10 @@
* splay-tree.h (splay_tree_max): New function.
(splay_tree_min): Likewise.
-2001-04-27 Johan Rydberg <jrydberg@opencores.org>
-
- * dis-asm.h (print_insn_openrisc): Add prototype.
-
2001-04-15 Daniel Berlin <dan@cgsoftware.com>
* ternary.h: New file - Ternary search tree header.
-2001-04-13 Jakub Jelinek <jakub@redhat.com>
-
- * bfdlink.h (bfd_link_discard): Add discard_sec_merge.
-
2001-04-03 Zack Weinberg <zackw@stanford.edu>
* ansidecl.h: All logic from gcc/gansidecl.h moved here.
@@ -776,46 +421,17 @@
* safe-ctype.h (_sch_test): Cast enum bit to unsigned short int for pcc
compatibility.
-2001-02-18 lars brinkhoff <lars@nocrew.org>
-
- * dis-asm.h: Add PDP-11 target.
-
-2001-02-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * dis-asm.h: Add linux target for S/390.
-
-2001-01-11 Peter Targett <peter.targett@arccores.com>
-
- * dis-asm.h (arc_get_disassembler): Correct declaration.
-
-2001-01-09 Philip Blundell <philb@gnu.org>
-
- * bin-bugs.h (REPORT_BUGS_TO): Set to `bug-binutils@gnu.org'.
-
2000-12-18 Joseph S. Myers <jsm28@cam.ac.uk>
* COPYING: Update to current
ftp://ftp.gnu.org/pub/gnu/Licenses/COPYING-2.0 (fixes references
to 19yy as example year in copyright notice).
-2000-12-19 Hans-Peter Nilsson <hp@bitrange.com>
-
- * dis-asm.h (struct disassemble_info): New member "section".
- (INIT_DISASSEMBLE_INFO_NO_ARCH): Initialize private_data member.
- Initialize section member.
-
2000-12-16 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* safe-ctype.h: Make code work on all targets and not just on
targets where a char is 8 bits.
-2000-12-10 Fred Fish <fnf@be.com>
-
- * bfdlink.h (struct bfd_link_info): Add new allow_shlib_undefined
- member to struct for systems where it is normal to have undefined
- symbols in shared libraries at runtime and the runtime linker
- takes care of redirecting them.
-
2000-12-07 Zack Weinberg <zack@wolery.stanford.edu>
* safe-ctype.h: New file.
@@ -846,19 +462,10 @@
* hashtab.h: Change void * to PTR where necessary.
-2000-10-11 Mark Mitchell <mark@codesourcery.com>
+2000-09-10 Mark Mitchell <mark@codesourcery.com>
* splay-tree.h (splay_tree_predecessor): Declare.
-2000-09-29 Hans-Peter Nilsson <hp@axis.com>
-
- * dis-asm.h: Declare cris_get_disassembler, not print_insn_cris.
- Fix typo in comment.
-
-2000-09-28 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * alloca-conf.h: New file (copied from libiberty).
-
2000-09-05 John David Anglin <dave@hiauly1.hia.nrc.ca>
* md5.h (md5_uint32): Choose via INT_MAX instead of UINT_MAX.
@@ -876,31 +483,6 @@
* libiberty.h (ARRAY_SIZE): New macro.
-2000-07-29 Nick Clifton <nickc@cygnus.com>
-
- * os9k.h: Add copyright notice.
- Fix formatting.
-
-2000-07-22 Jason Eckhardt <jle@cygnus.com>
-
- * dis-asm.h (print_insn_i860): Add prototype.
-
-2000-07-20 H.J. Lu <hjl@gnu.org>
-
- * bfdlink.h (bfd_link_info): Add new_dtags.
-
-2000-07-20 Hans-Peter Nilsson <hp@axis.com>
-
- * dis-asm.h (print_insn_cris): Declare.
-
-2000-07-19 H.J. Lu (hjl@gnu.org)
-
- * bfdlink.h (bfd_link_info): Add flags and flags_1.
-
-2000-06-05 DJ Delorie <dj@redhat.com>
-
- * MAINTAINERS: new
-
2000-06-21 Alex Samuel <samuel@codesourcery.com>
* dyn-string.h (dyn_string_init, dyn_string_new,
@@ -916,16 +498,6 @@
dyn_string_append_char, dyn_string_substring): Change return type
to int.
-2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
-
- * dis-asm.h (print_insn_m68hc12): Define.
- (print_insn_m68hc11): Likewise.
-
-2000-06-18 Nick Clifton <nickc@redhat.com>
-
- * os9k.h: Change values of MODSYNC and CRCCON due to bug report
- from Russ Magee <rmagee@home.com>.
-
2000-06-07 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* demangle.h (demangling_styles): Remove trailing comma in enum.
@@ -948,31 +520,16 @@ 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-23 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* getopt.h (getopt): Also check HAVE_DECL_* when prototyping.
* libiberty.h (basename): Likewise.
-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.
-
2000-05-06 Zack Weinberg <zack@wolery.cumb.org>
- * ansidecl.h: #define __extension__ to nothing if
- GCC_VERSION < 2008.
+ * ansidecl.h: #define __extension__ to nothing if
+ GCC_VERSION < 2008.
2000-05-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
@@ -1003,11 +560,6 @@ Thu May 4 17:15:26 2000 Philippe De Muyter <phdm@macqel.be>
* sort.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.
-
Tue Apr 18 16:22:30 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* hashtab.h (enum insert_option): New type.
@@ -1022,24 +574,12 @@ Tue Apr 18 16:22:30 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* splay-tree.h (splay_tree_remove): Declare.
-2000-04-04 Alan Modra <alan@linuxcare.com.au>
-
- * bin-bugs.h (REPORT_BUGS_TO): Remove translated part.
-
-2000-04-03 Alan Modra <alan@linuxcare.com.au>
-
- * bin-bugs.h: New file.
-
2000-03-30 Mark Mitchell <mark@codesourcery.com>
* hashtab.h (hashval_t): New type.
(htab_find_with_hash): Use it as an argument.
(htab_find_slot_with_hash): Likewise.
-2000-03-27 Denis Chertykov <denisc@overta.ru>
-
- * dis-asm.h (print_insn_avr): Declare.
-
2000-03-14 Bernd Schmidt <bernds@cygnus.co.uk>
* hashtab.h (htab_trav): Modify type so that first arg is of type
@@ -1067,66 +607,11 @@ Tue Apr 18 16:22:30 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
(hash_table_entry_t): Discard; just use void * for element
type.
-2000-03-01 H.J. Lu <hjl@gnu.org>
-
- * bfdlink.h (bfd_link_callbacks): Add a boolean arg to
- the undefined_symbol callback.
-
-2000-02-23 Linas Vepstas <linas@linas.org>
-
- * dis-asm.h (print_insn_i370): Declare.
-
-Tue Feb 22 15:19:54 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * remote-sim.h (sim_trace): Document return values.
- (sim_set_trace): Declare. Deprecate.
-
-2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * dis-asm.h (struct disassemble_info): Change `length' param of
- read_memory_func to unsigned. Change type of `buffer_length' and
- `octets_per_byte' to unsigned.
- (buffer_read_memory): Change `length' param to unsigned.
-
-2000-02-16 Nick Clifton <nickc@cygnus.com>
-
- * dis-asm.h: Add prototypes for ARM register name functions.
-
-Wed Feb 9 18:45:49 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * wait.h: Delete. No longer used by GDB.
-
-Tue Feb 8 17:01:13 2000 Andrew Cagney <cagney@b1.cygnus.com>
-
- * remote-sim.h (sim_resume): Clarify use of SIGGNAL.
- (sim_stop_reason): Clarify meaning of sim_signalled.
-
-2000-02-03 Timothy Wall <twall@redhat.com>
-
- * dis-asm.h (struct disassemble_info): Added octets_per_byte
- field and initialize it to one (1).
-
-2000-01-27 Nick Clifton <nickc@redhat.com>
-
- * dis-asm.h: Add prototype for disassembler_usage().
- Add prototype for arm_disassembler_options().
- Remove prototype for arm_toggle_regnames().
- Add prototype for parse_arm_disassembler_option().
-
Sat Jan 1 19:06:52 2000 Hans-Peter Nilsson <hp@bitrange.com>
* symcat.h (STRINGX) [!__STDC__ || ALMOST_STDC]: Change "?" to "s"
to stringify argument s.
-Wed Dec 15 11:22:56 1999 Jeffrey A Law (law@cygnus.com)
-
- * hp-symtab.h (HP_LANGUAGE_FORTRAN): New enumeration constant.
- (HP_LANGUAGE_F77): Define using HP_LANGUAGE_FORTRAN.
-
-1999-12-15 Doug Evans <dje@transmeta.com>
-
- * dis-asm.h: Enclose in extern "C" ifdef __cplusplus.
-
1999-12-05 Mark Mitchell <mark@codesourcery.com>
* splay-tree.h (struct splay_tree_node): Rename to ...
@@ -1153,26 +638,12 @@ Wed Nov 10 12:43:21 1999 Philippe De Muyter <phdm@macqel.be>
* ansidecl.h: Define and test `GCC_VERSION', not `HAVE_GCC_VERSION'.
-1999-11-04 Jimmy Guo <guo@cup.hp.com>
-
- * hp-symtab.h (dntt_type_fparam): Add doc_ranges, misc_kind
- fields, change location type to CORE_ADDR from int.
- (dntt_type_const): Name the 5th field location_type.
-
-Sun Oct 24 19:11:32 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * sim-d10v.h (SIM_D10V_TS2_DMAP_REGNUM): Define.
-
1999-10-23 08:51 -0700 Zack Weinberg <zack@bitmover.com>
* hashtab.h: Give hash_table_t a struct tag. Add prototypes
for clear_hash_table_slot and traverse_hash_table. Correct
prototype of all_hash_table_collisions.
-Sat Oct 23 19:00:13 1999 Andrew Cagney <cagney@b1.cygnus.com>
-
- * sim-d10v.h: New file.
-
Fri Oct 15 01:47:51 1999 Vladimir Makarov <vmakarov@loony.cygnus.com>
* hashtab.h: New file.
@@ -1197,10 +668,6 @@ Tue Sep 14 00:35:02 1999 Marc Espie <espie@cvs.openbsd.org>
* libiberty.h (xmemdup): Add prototype for new function.
-1999-09-04 Steve Chamberlain <sac@pobox.com>
-
- * dis-asm.h (print_insn_pj): Declare.
-
1999-09-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* obstack.h (obstack_grow, obstack_grow0): Move (char*) casts
@@ -1221,37 +688,6 @@ Tue Sep 14 00:35:02 1999 Marc Espie <espie@cvs.openbsd.org>
* ansidecl.h: Copy attribute support macros from egcs.
-1999-06-22 Mark Mitchell <mark@codesourcery.com>
-
- * bfdlink.h (struct bfd_link_hash_entry): Add init_function and
- fini_function.
-
-1999-06-20 Mark Mitchell <mark@codesourcery.com>
-
- * mips.h (Elf32_Internal_Msym): New structure.
- (Elf32_External_Msym): Likewise.
- (ELF32_MS_REL_INDEX): New macro.
- (ELF32_MS_FLAGS): Likewise.
- (ELF32_MS_INFO): Likewise.
-
-1999-06-14 Nick Clifton <nickc@cygnus.com>
-
- * dis-asm.h (arm_toggle_regnames): New prototype.
- (struct diassemble_info): New field: disassembler_options.
-
-1999-04-11 Richard Henderson <rth@cygnus.com>
-
- * bfdlink.h (bfd_elf_version_expr): Rename `match' to `pattern'.
- Add `match' callback function.
-
-1999-04-10 Richard Henderson <rth@cygnus.com>
-
- * bfdlink.h (bfd_link_info): Add no_undefined.
-
-1999-04-08 Nick Clifton <nickc@cygnus.com>
-
- * dis-asm.h: Add prototype for print_insn_mcore.
-
1999-04-02 Mark Mitchell <mark@codesourcery.com>
* splay-tree.h (splay_tree_compare_pointers): Declare.
@@ -1264,24 +700,6 @@ Wed Mar 24 12:46:29 1999 Andrew Cagney <cagney@amy.cygnus.com>
* libiberty.h (basename): Cygwin{,32} should have the prototype.
-1999-02-22 Jim Lemke <jlemke@cygnus.com>
-
- * bfdlink.h (bfd_link_info): add field "mpc860c0".
-
-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.
-
-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.
-
-Wed Dec 30 16:07:14 1998 David Taylor <taylor@texas.cygnus.com>
-
- * dis-asm.h: change void * to PTR (two places).
-
Mon Dec 14 09:53:31 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* demangle.h: Don't check IN_GCC anymore.
@@ -1289,15 +707,6 @@ Mon Dec 14 09:53:31 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
Tue Dec 8 00:30:31 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
- The following changes were made by Elena Zannoni
- <ezannoni@kwikemart.cygnus.com> and Edith Epstein
- <eepstein@sophia.cygnus.com> as part of a project to merge in
- changes made by HP; HP did not create ChangeLog entries.
-
- * dis-asm.h (struct disassemble_info): change the type of stream
- from FILE* to void*, for use with gdb's new type GDB_FILE.
- (fprintf_ftype): change FILE* parameter type to void*.
-
* demangle.h: (DMGL_EDG): new macro for Kuck and Associates
(DMGL_STYLE_MASK): modify to include Kuck and Assoc style
(demangling_styles): add new edg_demangling style
@@ -1310,12 +719,6 @@ Tue Dec 8 00:30:31 1998 Elena Zannoni <ezannoni@kwikemart.cygnus.com>
(ARM_DEMANGLING): coerce to int.
(HP_DEMANGLING): new macro.
- * hp-symtab.h: rewritten, from HP.
- (quick_procedure): change type of language field to unsigned int
- (quick_module): change type of language field to unsigned int
- (struct dntt_type_svar): add field thread_specific.
- (hp_language): add languages modcal and dmpascal.
-
Fri Nov 20 13:14:00 1998 Andrew Cagney <cagney@b1.cygnus.com>
* libiberty.h (basename): Add prototype for FreeBSD.
@@ -1331,19 +734,11 @@ Sun Nov 8 17:42:25 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* demangle.h: Never define PARAMS().
* splay-tree.h: Likewise.
-Sat Nov 7 18:30:20 1998 Peter Schauer <peter.schauer@regent.e-technik.tu-muenchen.de>
-
- * dis-asm.h (print_insn_vax): Declare.
-
Sat Nov 7 16:04:03 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* demangle.h: Don't include gansidecl.h.
* splay-tree.h: Likewise.
-1998-10-26 16:03 Ulrich Drepper <drepper@cygnus.com>
-
- * bfdlink.h (struct bfd_link_info): Add new field optimize.
-
Thu Oct 22 19:58:00 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* splay-tree.h: Wrap function pointer parameter declarations in
@@ -1379,8 +774,8 @@ Tue Feb 24 13:05:02 1998 Doug Evans <devans@canuck.cygnus.com>
Tue Feb 17 12:32:18 1998 Andrew Cagney <cagney@b1.cygnus.com>
* remote-sim.h (sim_fetch_register, sim_store_register): Add
- register length parameter. Functions return actual length of
- register.
+ register length parameter. Functions return actual length of
+ register.
Thu Feb 12 16:29:01 1998 Ian Lance Taylor <ian@cygnus.com>
@@ -1408,6 +803,10 @@ Tue Dec 2 10:20:53 1997 Nick Clifton <nickc@cygnus.com>
* dis-asm.h (disasm_symaddr): New prototype.
+Mon Dec 1 20:24:18 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * coff/sh.h (R_SH_SWITCH8): New.
+
Mon Dec 1 11:29:35 1997 Doug Evans <devans@canuck.cygnus.com>
* callback.h (CB_SYSCALL): Comment out arg names in prototypes.
@@ -1434,7 +833,7 @@ Tue Nov 25 01:35:52 1997 Doug Evans <devans@seba.cygnus.com>
Sat Nov 22 23:34:15 1997 Andrew Cagney <cagney@b1.cygnus.com>
* remote-sim.h (sim_stop_reason): Clarify sim_signalled SIGRC
- argument.
+ argument.
Mon Nov 17 14:00:51 1997 Doug Evans <devans@seba.cygnus.com>
@@ -1514,12 +913,12 @@ Fri May 23 13:43:41 1997 Fred Fish <fnf@cygnus.com>
Thu May 22 11:32:49 1997 Andrew Cagney <cagney@b1.cygnus.com>
* remote-sim.h: Review documentation. Clarify restrictions on
- when functions can be called.
+ when functions can be called.
Wed May 21 16:47:53 1997 Andrew Cagney <cagney@b1.cygnus.com>
* remote-sim.h (sim_set_profile_size): Add prototype, document as
- depreciated.
+ depreciated.
Tue May 20 09:32:22 1997 Andrew Cagney <cagney@b1.cygnus.com>
@@ -1536,6 +935,14 @@ Thu May 15 01:24:16 1997 Mark Alexander <marka@cygnus.com>
* obstack.h (obstack_specify_allocation_with_arg, obstack_chunkfun,
obstack_freefun): Eliminate compile warnings in gdb.
+Tue May 13 10:21:14 1997 Nick Clifton <nickc@cygnus.com>
+
+ * coff/arm.h (constants): Added new flag bits F_APCS_26 and
+ F_APCS_SET for the f_flags field of the filehdr structure. Added new
+ flags: F_APCS26, F_ARM_2, F_ARM_3, F_ARM_7, F_ARM_7T to store
+ information in the flags field of the internal_f structure used by BFD
+ routines.
+
Tue Apr 22 10:24:34 1997 Fred Fish <fnf@cygnus.com>
* floatformat.h (floatformat_byteorders): Add comments for previous
@@ -1545,16 +952,16 @@ Tue Apr 22 10:24:34 1997 Fred Fish <fnf@cygnus.com>
Fri Apr 18 13:04:49 1997 Andrew Cagney <cagney@b1.cygnus.com>
* remote-sim.h (sim_stop): New interface - asynchronous
- notification of a request to stop / suspend the running
- simulation.
+ notification of a request to stop / suspend the running
+ simulation.
* remote-sim.h (enum sim_stop): Add sim_running and sim_polling as
- states for use internal to simulators.
+ states for use internal to simulators.
* callback.h (struct host_callback_strut): Put a magic number at
- the end of the struct to allow basic checking.
+ the end of the struct to allow basic checking.
(struct host_callback_struct ): Add poll_quit - so
- that the console etc can be polled at regular intervals.
+ that the console etc can be polled at regular intervals.
Thu Apr 17 02:17:12 1997 Doug Evans <dje@canuck.cygnus.com>
@@ -1565,7 +972,7 @@ Thu Apr 17 02:17:12 1997 Doug Evans <dje@canuck.cygnus.com>
Wed Apr 2 17:09:12 1997 Andrew Cagney <cagney@kremvax.cygnus.com>
* remote-sim.h (sim_trace, sim_size): Make these global. They
- will go away shortly.
+ will go away shortly.
Wed Apr 2 15:23:49 1997 Doug Evans <dje@canuck.cygnus.com>
@@ -1595,7 +1002,7 @@ Mon Mar 17 19:22:12 1997 Ian Lance Taylor <ian@cygnus.com>
Mon Mar 17 14:57:55 1997 Andrew Cagney <cagney@kremvax.cygnus.com>
* remote-sim.h: New file, copied in from gdb/remote-sim.h. One
- day this will be placed in a directory of its own.
+ day this will be placed in a directory of its own.
Sat Mar 15 19:00:14 1997 Ian Lance Taylor <ian@cygnus.com>
@@ -1604,8 +1011,8 @@ Sat Mar 15 19:00:14 1997 Ian Lance Taylor <ian@cygnus.com>
Thu Mar 6 15:46:59 1997 Andrew Cagney <cagney@kremvax.cygnus.com>
* callback.h (struct host_callback_struct): Add callbacks -
- flush_stdout, write_stderr, flush_stderr, vprintf_filtered,
- evprintf_filtered. Delete redundant callbacks - printf_filtered.
+ flush_stdout, write_stderr, flush_stderr, vprintf_filtered,
+ evprintf_filtered. Delete redundant callbacks - printf_filtered.
Thu Feb 27 23:18:27 1997 Ian Lance Taylor <ian@cygnus.com>
@@ -1630,10 +1037,6 @@ Thu Feb 6 14:20:01 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
bytes_per_chunk and display_endian to control the
display of raw instructions.
-Fri Dec 27 22:17:37 1996 Fred Fish <fnf@cygnus.com>
-
- * dis-asm.h (print_insn_tic80): Declare.
-
Sun Dec 8 17:11:12 1996 Doug Evans <dje@canuck.cygnus.com>
* callback.h (host_callback): New member `error'.
@@ -1721,7 +1124,7 @@ Tue Jul 23 17:37:58 1996 Fred Fish <fnf@cygnus.com>
can define PRIVATE_XMALLOC and then define xmalloc and
xrealloc anyway they want.
(basename): Document in source that we can't declare the
- parameter type because it is declared inconsistently across
+ parameter type because it is declared inconsistently across
different systems.
Mon Jul 22 13:16:13 1996 Richard Henderson <rth@tamu.edu>
@@ -1884,7 +1287,13 @@ Thu May 18 04:25:50 1995 Ken Raeburn <raeburn@kr-laptop.cygnus.com>
Sat May 13 10:14:08 1995 Steve Chamberlain <sac@slash.cygnus.com>
+ * coff/pe.h: New file.
* bfdlink.h (subsytem, stack_heap_parameters): New.
+ * coff/i386.h (NT_SECTION_ALIGNMENT, NT_FILE_ALIGNMENT,
+ NT_DEF_RESERVE, NT_DEF_COMMIT): New.
+ * coff/internal.h (internal_filehdr): New fields for PE.
+ (IMAGE_DATA_DIRECTORY): New.
+ (internal_aouthdr): New fields for PE.
Thu May 4 14:36:42 1995 Jason Merrill <jason@phydeaux.cygnus.com>
@@ -1959,6 +1368,8 @@ Tue Oct 25 11:38:02 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
Sun Sep 04 17:58:10 1994 Richard Earnshaw (rwe@pegasus.esprit.ec.org)
+ * aout/aout64.h: Only define QMAGIC if it isn't already defined.
+
* dis-asm.h: Add support for the ARM.
Wed Aug 10 12:51:41 1994 Doug Evans (dje@canuck.cygnus.com)
@@ -2104,6 +1515,10 @@ Fri Aug 6 17:05:47 1993 David J. Mackenzie (djm@thepub.cygnus.com)
* getopt.h, obstack.h: Update to latest FSF version.
+Mon Aug 2 16:37:14 1993 Stu Grossman (grossman at cygnus.com)
+
+ * coff/i386.h: Add Lynx magic number.
+
Mon Aug 2 14:45:29 1993 John Gilmore (gnu@cygnus.com)
* dis-asm.h: Move enum outside of struct defn to avoid warnings.
@@ -2133,6 +1548,10 @@ Thu Jul 15 12:41:15 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* dis-asm.h: Added declaration of print_insn_m88k.
+Thu Jul 8 09:05:26 1993 Doug Evans (dje@canuck.cygnus.com)
+
+ * opcode/h8300.h: Lots of little fixes for the h8/300h.
+
Fri Jul 2 10:31:59 1993 Ian Lance Taylor (ian@cygnus.com)
* ansidecl.h: Use ANSI macros if __mips and _SYSTYPE_SVR4 are
@@ -2157,6 +1576,9 @@ Tue Jun 8 12:16:03 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
Support for H8/300-H
* dis-asm.h (print_insn_h8300, print_insn_h8300h): Declare it.
+ * coff/h8300.h: New magic number.
+ * coff/internal.h: New relocations.
+ * opcode/h8300.h: Lots of new opcodes.
Tue Jun 1 07:35:03 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com)
@@ -2435,7 +1857,7 @@ Mon Jan 27 22:01:13 1992 Steve Chamberlain (sac at cygnus.com)
Wed Dec 18 17:19:44 1991 Stu Grossman (grossman at cygnus.com)
- * bfd.h, ieee.h: ANSIfy enums.
+ * bfd.h, ieee.h, opcode/m68k.h, opcode/sparc.h: ANSIfy enums.
Thu Dec 12 20:59:56 1991 John Gilmore (gnu at cygnus.com)
@@ -2578,7 +2000,7 @@ Fri Oct 25 03:18:20 1991 John Gilmore (gnu at cygnus.com)
Thu Oct 24 22:11:11 1991 John Gilmore (gnu at cygnus.com)
- RS/6000 support, by Metin G. Ozisik, Mimi Phûông-Thåo Võ, and
+ RS/6000 support, by Metin G. Ozisik, Mimi Phûông-Thåo Võ, and
John Gilmore.
* a.out.gnu.h: Update slightly.
diff --git a/include/aout/ChangeLog b/include/aout/ChangeLog
index 0d054eae3c1..148a020e5cb 100644
--- a/include/aout/ChangeLog
+++ b/include/aout/ChangeLog
@@ -1,3 +1,7 @@
+2004-01-06 Mark Kettenis <kettenis@gnu.org>
+
+ * stab.def: Add N_PATCH to DO definition.
+
2003-03-06 Elias Athanasopoulos <elathan@phys.uoa.gr>
* aout64.h (BYTES_IN_WORD): Define if necessary.
diff --git a/include/aout/stab.def b/include/aout/stab.def
index 67bde35f10d..8188b845fc7 100644
--- a/include/aout/stab.def
+++ b/include/aout/stab.def
@@ -1,20 +1,20 @@
/* Table of DBX symbol codes for the GNU system.
- Copyright 1988, 1991, 1992, 1993, 1994, 1996, 1998
+ Copyright 1988, 1991, 1992, 1993, 1994, 1996, 1998, 2004
Free Software Foundation, Inc.
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* New stab from Solaris 2. This uses an n_type of 0, which in a.out files
overlaps the N_UNDF used for ordinary symbols. In ELF files, the
@@ -181,6 +181,9 @@ __define_stab (N_EXCL, 0xc2, "EXCL")
/* Modula-2 scope information. Can someone say what info it contains? */
__define_stab (N_SCOPE, 0xc4, "SCOPE")
+/* Solaris2: Patch Run Time Checker. */
+__define_stab (N_PATCH, 0xd0, "PATCH")
+
/* End of a lexical block. Desc matches the N_LBRAC's desc.
The value is the address of the end of the text for the block.
On Solaris2, the value is relative to the start of the current function. */
@@ -256,7 +259,7 @@ __define_stab (N_LENG, 0xfe, "LENG")
| B8 | BA | BC | BE |
| C0 LBRAC | C2 EXCL | C4 SCOPE | C6 |
| C8 | CA | CC | CE |
- | D0 | D2 | D4 | D6 |
+ | D0 PATCH | D2 | D4 | D6 |
| D8 | DA | DC | DE |
| E0 RBRAC | E2 BCOMM | E4 ECOMM | E6 |
| E8 ECOML | EA WITH | EC | EE |
diff --git a/include/coff/ChangeLog b/include/coff/ChangeLog
index d18113d52e9..33163834229 100644
--- a/include/coff/ChangeLog
+++ b/include/coff/ChangeLog
@@ -1,1160 +1,9 @@
-2003-12-02 Graham Reed <grahamr@algorithmics.com>
-
- * internal.h (C_WEAKEXT): Add alternative value for AIX 5.2
- based targets.
-
-2003-08-23 Jason Eckhardt <jle@rice.edu>
-
- * coff/i860.h (COFF860_R_PAIR, COFF860_R_LOW0, COFF860_R_LOW1,
- COFF860_R_LOW2, COFF860_R_LOW3, COFF860_R_LOW4, COFF860_R_SPLIT0,
- COFF860_R_SPLIT1, COFF860_R_SPLIT2, COFF860_R_HIGHADJ,
- COFF860_R_BRADDR): Define new relocation constants and document.
- Minor formatting adjustments.
-
-2003-08-07 Alan Modra <amodra@bigpond.net.au>
-
- * ti.h (GET_SCNHDR_NRELOC): Rename PTR param to LOC.
- (PUT_SCNHDR_NRELOC, GET_SCNHDR_NLNNO, PUT_SCNHDR_NLNNO): Likewise.
- (GET_SCNHDR_FLAGS, PUT_SCNHDR_FLAGS): Likewise.
- (GET_SCNHDR_PAGE, PUT_SCNHDR_PAGE): Likewise.
-
-2003-07-17 Jeff Muizelaar <muizelaar@rogers.com>
-
- * pe.h: (IMAGE_FILE_NET_RUN_FROM_SWAP): Define.
- (IMAGE_FILE_MACHINE_WCEMIPSV2): Define.
- (IMAGE_FILE_MACHINE_SH3DSP): Define.
- (IMAGE_FILE_MACHINE_SH3E): Define.
- (IMAGE_FILE_MACHINE_SH5): Define.
- (IMAGE_FILE_MACHINE_AM33): Define.
- (IMAGE_FILE_MACHINE_POWERPCFP): Define.
- (IMAGE_FILE_MACHINE_AXP64): Define.
- (IMAGE_FILE_MACHINE_TRICORE): Define.
- (IMAGE_FILE_MACHINE_CEF): Define.
- (IMAGE_FILE_MACHINE_EBC): Define.
- (IMAGE_FILE_MACHINE_AMD64): Define.
- (IMAGE_FILE_MACHINE_M32R): Define.
- (IMAGE_FILE_MACHINE_CEE): Define.
-
-2003-07-14 Christian Groessler <chris@groessler.org>
-
- * i860.h (AOUTSZ): Define for i860 coff.
-
-2003-06-29 Andreas Jaeger <aj@suse.de>
-
- * xcoff.h (struct __rtinit ): Convert to ISO C90 prototypes.
-
- * ecoff.h: Convert to ISO C90 prototypes. Replace PTR by void *.
-
-2003-04-24 Dhananjay Deshpande <dhananjayd@kpitcummins.com>
-
- * coff/h8300.h (H8300HNMAGIC, H8300SNMAGIC): New.
- (H8300HNBADMAG, H8300SNBADMAG): New.
-
-2003-04-15 Rohit Kumar Srivastava <rohits@kpitcummins.com>
-
- * sh.h: Replace occurrances of 'Hitachi' with 'Renesas'.
- * h8300.h: Likewise.
- * h8500.h: Likewise.
-
-2003-03-25 Stan Cox <scox@redhat.com>
- Nick Clifton <nickc@redhat.com>
-
- Contribute support for Intel's iWMMXt chip - an ARM variant:
-
- * arm.h (ARM_NOTE_SECTION): Define.
-
-2002-11-30 Alan Modra <amodra@bigpond.net.au>
-
- * ecoff.h: Replace boolean with bfd_boolean.
- * xcoff.h: Likewise.
-
-2002-03-18 Tom Rix <trix@redhat.com>
-
- * rs6k64.h: Add U64_TOCMAGIC, AIX 5 64 bit magic number.
-
-2002-02-01 Tom Rix <trix@redhat.com>
-
- * xcoff.h: Conditionally support <aiaff> for pre AIX 4.3.
-
-2002-01-31 Ivan Guzvinec <ivang@opencores.org>
-
- * or32.h: New file.
-
-2001-12-24 Tom Rix <trix@redhat.com>
-
- * xcoff.h (xcoff_big_format_p): Make <bigaf> the default archive
- format.
- (XCOFFARMAG_ELEMENT_SIZE, XCOFFARMAGBIG_ELEMENT_SIZE): Define for
- archive header ascii elements.
-
-2001-12-17 Tom Rix <trix@redhat.com>
-
- * xcoff.h : Add .except and .typchk section string and styp flags.
- Fix xcoff_big_format_p macro.
-
-2001-12-16 Tom Rix <trix@redhat.com>
-
- * xcoff.h : Clean up formatting.
-
-2002-01-15 Richard Earnshaw <rearnsha@arm.com>
-
- * arm.h (F_VFP_FLOAT): Define.
-
-2001-11-11 Timothy Wall <twall@alum.mit.edu>
-
- * ti.h: Move arch-specific stuff from here...
- (COFF_ADJUST_SYM_IN/OUT): Optionally put page flag into symbol
- value.
- * tic54x.h: ...to here.
-
-2001-10-26 Christian Groessler <cpg@aladdin.de>
-
- * external.h (GET_LINENO_LNNO): Fix usage of H_GET_32/16.
- (PUT_LINENO_LNNO): Likewise with H_PUT_32/16.
-
-2001-09-21 Nick Clifton <nickc@cambridge.redhat.com>
-
- * ti.h (GET_SCNHDR_PAGE): Fix compile time warning.
-
-2001-09-18 Alan Modra <amodra@bigpond.net.au>
-
- * external.h (GET_LINENO_LNNO): Use H_GET_32/16.
- (PUT_LINENO_LNNO): Use H_PUT_32/16.
- * m88k.h (GET_LNSZ_SIZE, GET_LNSZ_LNNO, GET_SCN_NRELOC,
- GET_SCN_NLINNO): Use H_GET_32.
- (PUT_LNSZ_LNNO, PUT_LNSZ_SIZE, PUT_SCN_NRELOC, PUT_SCN_NLINNO):
- Use H_PUT_32.
- * ti.h: Formatting fixes. Make use of H_GET_* and H_PUT_* throughout.
- * xcoff.h: White space changes.
-
-2001-09-05 Tom Rix <trix@redhat.com>
-
- * xcoff.h : Add XCOFF_SYSCALL32 and XCOFF_SYSCALL64 hash table flags.
-
-2001-08-27 Andreas Jaeger <aj@suse.de>
-
- * xcoff.h (struct __rtinit): Make proper prototype for rtl.
-
-Fri Aug 24 01:18:51 2001 J"orn Rennecke <amylaar@redhat.com>
-
- * internal.h (R_JMP2, R_JMPL2, R_MOVL2): Comment spelling fix.
-
-2001-04-05 Tom Rix <trix@redhat.com>
-
- * rs6000.h : move xcoff32 external structures from xcofflink.
- * rs6k64.h : move xcoff64 external structures from xcofflink.
- * internal.h : promote 32 bit structure elements to 64 bit
- for xcoff64 support
- * xcoff.h : New file.
-
-2001-03-23 Nick Clifton <nickc@redhat.com>
-
- * a29k.h: Fix compile time warning.
- * external.h: Fix compile time warning.
- * m88k.h: Fix compile time warning.
-
-2001-03-13 Nick Clifton <nickc@redhat.com>
-
- * external.h: New file. Common structure definitions found in
- other COFF header files.
-
- * a29k.h: Use external.h.
- * apollo.h: Use external.h.
- * arm.h: Use external.h.
- * h8300.h: Use external.h.
- * h8500.h: Use external.h.
- * i386.h: Use external.h.
- * i860.h: Use external.h.
- * ia64.h: Use external.h.
- * m68k.h: Use external.h.
- * m88k.h: Use external.h.
- * mcore.h: Use external.h.
- * mips.h: Use external.h.
- * mipspe.h: Use external.h.
- * powerpc.h: Use external.h.
- * rs6000.h: Use external.h.
- * rs6k64.h: Use external.h.
- * sh.h: Use external.h.
- * sparc.h: Use external.h.
- * tic30.h: Use external.h.
- * tic80.h: Use external.h.
- * w65.h: Use external.h.
- * we32k.h: Use external.h.
- * z8k.h: Use external.h.
-
-2001-02-09 David Mosberger <davidm@hpl.hp.com>
-
- * pe.h (PEPAOUTSZ): Rename from PEP64AOUTSZ.
- Rename from PEPAOUTHDR.
-
-2001-01-23 H.J. Lu <hjl@gnu.org>
-
- * pe.h (struct external_PEI_DOS_hdr): New.
- (struct external_PEI_IMAGE_hdr): New.
-
-2000-12-11 Alan Modra <alan@linuxcare.com.au>
-
- * ti.h (OCTETS_PER_BYTE_POWER): Change #warning to #error.
-
-2000-12-08 Alan Modra <alan@linuxcare.com.au>
-
- * ti.h (OCTETS_PER_BYTE_POWER): Change #warn to #warning.
-
-2000-06-30 DJ Delorie <dj@cygnus.com>
-
- * pe.h: Clarify a comment.
-
-2000-05-05 Clinton Popetz <cpopetz@cygnus.com>
-
- * rs6k64.h (U802TOC64MAGIC): Change to U803XTOCMAGIC.
-
-2000-04-24 Clinton Popetz <cpopetz@cygnus.com>
-
- * rs6k64.h: New file.
-
-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).
- * ti.h: New.
- * tic54x.h: New.
-
-Wed Apr 5 22:08:41 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.h (R_SH_LOOP_START, R_SH_LOOP_END): Define.
-
-2000-03-15 Kazu Hirata <kazu@hxi.com>
-
- * internal.h: Fix a typo in the comment for R_MOVL2.
-
-2000-02-28 Nick Clifton <nickc@cygnus.com>
-
- * mipspe.h (MIPS_PE_MAGIC): Define.
- * sh.h (SH_PE_MAGIC): Define.
-
-2000-02-22 Nick Clifton <nickc@cygnus.com> DJ Delorie <dj@cygnus.com>
-
- * sh.h: Add Windows CE definitions.
- * arm.h: Add Windows CE definitions.
- * mipspe.h: New file: Windows CE definitions for MIPS.
- * pe.h: Add constants for ILF support.
-
-2000-01-05 Nick Clifton <nickc@cygnus.com>
-
- * pe.h: Fix formatting of comments.
- (IMAGE_FILE_AGGRESSIVE_WS_TRIM): Define.
- (IMAGE_FILE_LARGE_ADDRESS_AWARE): Define.
- (IMAGE_FILE_16BIT_MACHINE): Define.
- (IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP): Define.
- (IMAGE_FILE_UP_SYSTEM_ONLY): Define.
- (IMAGE_FILE_MACHINE_UNKNOWN): Define.
- (IMAGE_FILE_MACHINE_ALPHA): Define.
- (IMAGE_FILE_MACHINE_ALPHA64): Define.
- (IMAGE_FILE_MACHINE_I386): Define.
- (IMAGE_FILE_MACHINE_IA64): Define.
- (IMAGE_FILE_MACHINE_M68K): Define.
- (IMAGE_FILE_MACHINE_MIPS16): Define.
- (IMAGE_FILE_MACHINE_MIPSFPU): Define.
- (IMAGE_FILE_MACHINE_MIPSFPU16): Define.
- (IMAGE_FILE_MACHINE_POWERPC): Define.
- (IMAGE_FILE_MACHINE_R3000): Define.
- (IMAGE_FILE_MACHINE_R4000): Define.
- (IMAGE_FILE_MACHINE_R10000): Define.
- (IMAGE_FILE_MACHINE_SH3): Define.
- (IMAGE_FILE_MACHINE_SH4): Define.
- (IMAGE_FILE_MACHINE_THUMB): Define.
-
-1999-09-20 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * internal.h: Delete bogus R_PCLONG, duplicate R_RELBYTE and
- R_RELWORD, and rewrite some R_* as decimal.
-
-1999-09-06 Donn Terry <donn@interix.com>
-
- * internal.h (DTYPE): Define.
- * pe.h (struct external_PEI_filehdr): Rename from
- external_PE_filehdr. Define even if COFF_IMAGE_WITH_PE is not
- defined.
-
-1999-07-17 Nick Clifton <nickc@cygnus.com>
-
- * arm.h (F_SOFT_FLOAT): Rename from F_SOFTFLOAT.
-
-1999-06-21 Philip Blundell <pb@nexus.co.uk>
-
- * arm.h (F_SOFTFLOAT): Define.
-
-1999-07-05 Nick Clifton <nickc@cygnus.com>
-
- * arm.h (F_ARM_5): Define.
-
-Wed Jun 2 18:08:18 1999 Richard Henderson <rth@cygnus.com>
-
- * internal.h (BEOS_EXE_IMAGE_BASE, BEOS_DLL_IMAGE_BASE): New.
-
-Mon May 17 13:35:35 1999 Stan Cox <scox@cygnus.com>
-
- * arm.h (F_PIC, F_ARM_2, F_ARM_2a, F_ARM_3, F_ARM_3M,
- F_ARM_4, F_ARM_4T, F_APCS26): Changed values to distinguish
- F_ARM_2a, F_ARM_3M, F_ARM_4T.
-
-1999-05-15 Nick Clifton <nickc@cygnus.com>
-
- * mcore.h (IMAGE_REL_MCORE_RVA): Define.
-
-1999-04-21 Nick Clifton <nickc@cygnus.com>
-
- * mcore.h (GET_LINENO_LNNO): New macro.
- (PUT_LINENO_LNNO): New macro.
-
-1999-04-08 Nick Clifton <nickc@cygnus.com>
-
- * mcore.h: New header file. Defines for Motorola's MCore
- processor.
-
-Sun Dec 6 21:36:37 1998 Mark Elbrecht <snowball3@usa.net>
-
- * internal.h (C_WEAKEXT): Define.
-
-Wed Jan 27 13:35:35 1999 Stan Cox <scox@cygnus.com>
-
- * arm.h (F_PIC_INT, F_ARM_2, F_ARM_3, F_ARM_4, F_APCS26):
- Changed values to avoid clashing with IMAGE_FILE_* coff header
- flag values.
-
-Wed Apr 1 16:06:15 1998 Nick Clifton <nickc@cygnus.com>
-
- * internal.h: Document numbers associated with Thumb symbol
- types.
-
-Fri Mar 27 17:16:57 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h (ISPTR, ISFCN, ISARY): Add casts to unsigned long.
-
-Mon Feb 2 17:10:38 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
-
- * tic30.h: New file.
-
-Fri Dec 12 11:49:07 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (R_MPPCR15W): New relocation type, for 15 bit PC relative
- offsets.
-
-Tue Dec 2 10:21:40 1997 Nick Clifton <nickc@cygnus.com>
-
- * arm.h (COFFARM): New define.
-
-Mon Dec 1 20:24:18 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.h (R_SH_SWITCH8): New.
-
-Sat Nov 22 15:10:14 1997 Nick Clifton <nickc@cygnus.com>
-
- * internal.h (C_THUMBEXTFUNC, C_THUMBSTATFUNC): Constants to
- define static and external functions.
-
- * arm.h: Add bits to support PIC and APCS-FLOAT type binaries,
- when implemented.
-
-Fri Oct 3 14:25:17 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (R_PPL16B): Make constant uppercase for consistency.
-
-Tue Jul 22 18:18:58 1997 Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>
-
- * go32exe.h: New file.
-
-Tue Jul 8 12:23:55 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (TIC80_TARGET_ID): Add define.
- * internal.h (struct internal_filehdr): Add f_target_id field.
-
-Tue Jun 3 16:44:18 1997 Nick Clifton <nickc@cygnus.com>
-
- * internal.h: Add storage classes for Thumb symbols
-
-Mon May 26 14:07:55 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * tic80.h (R_PPL16B): Correct value.
-
-Tue May 13 10:21:14 1997 Nick Clifton <nickc@cygnus.com>
-
- * arm.h (constants): Added new flag bits F_APCS_26 and
- F_APCS_SET for the f_flags field of the filehdr structure. Added new
- flags: F_APCS26, F_ARM_2, F_ARM_3, F_ARM_7, F_ARM_7T to store
- information in the flags field of the internal_f structure used by BFD
- routines.
-
-Sat May 3 08:24:59 1997 Fred Fish <fnf@cygnus.com>
-
- * internal.h (C_UEXT, C_STATLAB, C_EXTLAB, C_SYSTEM):
- New storage classes for TIc80.
-
-Fri Apr 18 11:52:55 1997 Niklas Hallqvist <niklas@appli.se>
-
- * alpha.h (ALPHA_ECOFF_BADMAG): Recognize *BSD/alpha magic too.
- (ALPHA_R_LITERALSLEAZY): Define.
- * ecoff.h (ALPHA_MAGIC_BSD): Define.
-
-Wed Jan 29 11:31:51 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i960.h (R_IPR13, R_ALIGN): Define.
-
-Mon Jan 27 13:34:30 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h (R_IPRMED, R_OPTCALL, R_OPTCALLX): Move definitions
- from here...
- * i960.h (R_IPRMED, R_OPTCALL, R_OPTCALLX): ...to here.
-
-Wed Jan 22 20:10:47 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (TIC80MAGIC): Renamed to TIC80_AOUTHDR_MAGIC.
-
-Fri Dec 27 22:05:45 1996 Fred Fish <fnf@cygnus.com>
-
- * tic80.h: New file for TIc80 support.
-
-Thu Dec 19 16:18:11 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * arm.h (_LIT): Define.
-
-Fri Jun 28 12:54:38 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * pe.h (FILHSZ): Define.
-
-Wed Jun 26 16:24:26 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * All files: Define FILHSZ, AOUTSZ, AOUTHDRSZ, SCNHSZ, SYMESZ,
- AUXESZ, LINESZ, RELSZ as numeric constants rather than uses of
- sizeof. Define AOUTHDRSZ in all files.
- * pe.h (AOUTSZ): Define by adding to AOUTHDRSZ.
-
-Fri Jun 21 11:17:46 1996 Richard Henderson <rth@tamu.edu>
-
- * alpha.h: Add declarations for relocation types added for Alpha
- OSF/1 3.0.
-
-Tue Jun 18 16:04:29 1996 Jeffrey A. Law <law@rtl.cygnus.com>
-
- * h8300.h (H8300SMAGIC): Define.
- (H8300SBADMAG): Define.
-
-Mon Jun 10 11:53:28 1996 Jeffrey A Law (law@cygnus.com)
-
- * internal.h (R_BCC_INV, R_JMP_DEL): New relocations for
- relaxing in the H8/300 series.
-
-Thu May 16 15:49:22 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * sh.h (R_SH_CODE, R_SH_DATA, R_SH_LABEL): Define.
-
-Tue May 7 00:36:39 1996 Jeffrey A Law (law@cygnus.com)
-
- * internal.h (R_JMPL2): Renamed from R_JMPL_B8 to be
- consistent with other similar relocs.
-
- * internal.h (H8/300 specific relocs): Add comments better
- explaining what each reloc is used for.
- (R_MOV16B1, R_MOV16B2): Renamed from R_MOVB1 and R_MOVB2.
- (R_MOV24B1, R_MOV24B2): Renamed from R_MOVLB1 and R_MOVLB2.
- (R_MOVL1, R_MOVL2): New relocs.
-
-Fri May 3 13:01:12 1996 Jeffrey A Law (law@cygnus.com)
-
- * internal.h (R_PCRWORD_B): Define for the h8300 relaxing
- linker.
-
-Wed May 1 19:21:03 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h (SCNNMLEN): Define.
- (struct internal_scnhdr): Use SCNNMLEN for s_name field.
-
-Fri Mar 29 13:41:25 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * pe.h: Define IMAGE_COMDAT codes.
-
-Wed Mar 27 17:29:42 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * arm.h (union external_auxent): Add x_checksum, x_associated, and
- x_comdat fields to x_scn struct.
- * i386.h (union external_auxent): Likewise.
- * powerpc.h (union external_auxent): Likewise.
- * internal.h (union internal_auxent): Likewise.
-
-Thu Mar 21 16:25:57 1996 David Mosberger-Tang <davidm@azstarnet.com>
-
- * ecoff.h (struct ecoff_find_line): Add caching fields.
-
-Thu Mar 14 15:22:44 1996 Jeffrey A Law (law@cygnus.com)
-
- * internal.h (R_MEM_INDIRECT): New reloc for the h8300.
-
-Fri Feb 9 10:44:11 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * aux-coff.h: Rename from aux.h, to avoid problems on hapless DOS
- systems which think that aux is a com port.
-
-Mon Feb 5 18:35:00 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i960.h (F_I960HX): Define.
-
-Wed Jan 31 13:11:54 1996 Richard Henderson <rth@tamu.edu>
-
- * aux.h: New file.
- * internal.h, m68k.h: Protect against multiple inclusion.
-
-Wed Nov 22 13:48:39 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ecoff.h (_RCONST, STYP_RCONST, RELOC_SECTION_RCONST): Define.
- (NUM_RELOC_SECTIONS): Update.
- * symconst.h (scRConst): Define.
-
-Tue Nov 14 18:54:29 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h (C_NT_WEAK): Define.
-
-Thu Nov 9 14:08:30 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * rs6000.h (STYP_OVRFLO): Define.
-
-Tue Nov 7 14:38:45 1995 Kim Knuttila <krk@cygnus.com>
-
- * powerpc.h (IMAGE_NT_OPTIONAL_HDR_MAGIC): Added define.
- * pe.h: Added defines for file level flags
-
-Mon Nov 6 17:28:01 1995 Harry Dolan <dolan@ssd.intel.com>
-
- * i860.h: New file, based on i386.h.
-
-Wed Nov 1 15:25:18 1995 Manfred Hollstein KS/EF4A 60/1F/110 #40283 <manfred@lts.sel.alcatel.de>
-
- * m68k.h (PAGEMAGICEXECSWAPPED): Define.
- (PAGEMAGICPEXECSWAPPED): Define.
- (PAGEMAGICPEXECTSHLIB): Define.
- (PAGEMAGICPEXECPAGED): Define.
- (_COMMENT): DEFINE.
- * m88k.h (_COMMENT): Define.
-
-Wed Oct 18 18:36:19 1995 Geoffrey Noer <noer@cygnus.com>
-
- * sym.h: #if 0'd out runtime_pdr struct because it chokes
- Visual C++ and there aren't any references to it elsewhere in gdb.
-
-Mon Oct 16 11:12:24 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * rs6000.h (SMALL_AOUTSZ): Define.
-
- * internal.h (XMC_TD): Define.
-
-Tue Oct 10 18:41:03 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h (struct internal_aouthdr): Add o_cputype field.
- * rs6000.h (AOUTHDR): Rename o_resv1 to o_cputype.
-
-Mon Oct 9 14:45:46 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * rs6000.h (AOUTHDR): Add o_maxdata field. Add comments.
- (_PAD, _LOADER): Define.
- (STYP_LOADER): Define.
- * internal.h (struct internal_aouthdr): Add o_maxdata field.
-
-Thu Oct 5 10:02:57 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ecoff.h: Define section name macros and STYP macros for various
- Alpha sections: .got, .hash, .dynsym, .dynstr, .rel.dyn, .conflic,
- .comment, .liblist, .dynamic.
-
-Wed Oct 4 10:56:35 1995 Kim Knuttila <krk@cygnus.com>
-
- * pe.h: Moved DOSMAGIC and NT_SIGNATURE defines here
- * powerpc.h: removed DOSMAGIC, NT_SIGNATURE, and DEFAULT_* defines
- Also removed other unused defines (various MAGIC ones)
- * i386.h: removed DOSMAGIC, NT_SIGNATURE, and DEFAULT_* defines
- * arm.h: removed DOSMAGIC, NT_SIGNATURE, and DEFAULT_* defines
- * apollo.h: removed unused DEFAULT_* defines
- * alpha.h: removed unused DEFAULT_* defines
- * h8500.h: removed unused DEFAULT_* defines
- * h8300.h: removed unused DEFAULT_* defines
- * i960.h: removed unused DEFAULT_* defines
- * m88k.h: removed unused DEFAULT_* defines
- * we32k.h: removed unused DEFAULT_* defines
- * rs6000.h: removed unused DEFAULT_* defines
- * mips.h: removed unused DEFAULT_* defines
- * m68k.h: removed unused DEFAULT_* defines
- * z8k.h: removed unused DEFAULT_* defines
- * w65.h: removed unused DEFAULT_* defines
- * sparc.h: removed unused DEFAULT_* defines
- * sh.h: removed unused DEFAULT_* defines
-
-Fri Sep 29 08:40:08 1995 Kim Knuttila <krk@cygnus.com>
-
- * powerpc.h: Reformatted to GNU coding conventions.
-
-Wed Sep 27 06:50:50 1995 Kim Knuttila <krk@nellie>
-
- * pe.h: added defines for more section characteristics
- * powerpc.h (new file): base coff definitions for ppc PE
-
-Tue Sep 12 12:08:20 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h (struct internal_syment): Change n_numaux field from
- char to unsigned char.
-
-Fri Sep 1 15:39:36 1995 Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>
-
- * mips.h (struct rpdr_ext): Define.
-
-Thu Aug 31 16:51:50 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * internal.h (internal_aouthdr, internal_filehdr):
- don't indirect the pe stuff.
-
-Tue Aug 29 14:16:07 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * i386.h (NT_DEF_RESERVE, NT_DEF_COMMIT): Make the same
- as 'the other' compiler.
- * internal.h (NT_IMAGE_BASE): Deleted.
- (NT_EXE_IMAGE_BASE, NT_DLL_IMAGE_BASE): New.
- (PE_DEF_SECTION_ALIGNMENT, PE_DEF_FILE_ALIGNMENT): New.
- (R_IMAGEBASE): New.
-
-Mon Aug 21 18:12:19 1995 steve chamberlain <sac@slash.cygnus.com>
-
- * internal.h: (internal_filehdr): Moved PE stuff into
- internal_extra_pe_filehdr.
- (internal_aouthdr): Moved PE stuff into
- interanl_extra_pe_aouthdr.
-
-Mon Jul 24 14:05:39 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h: Move R_SH_* relocs from here...
- * sh.h: ...to here.
- (R_SH_SWITCH16, R_SH_SWITCH32): Define.
- (R_SH_USES, R_SH_COUNT, R_SH_ALIGN): Define.
-
-Thu Jun 29 00:04:25 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * internal.h (NT_DEF_RESERVE, NT_DEF_COMMIT): Increase a lot.
-
-Tue May 16 15:08:20 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * internal.h (NT_subsystem, NT_stack_heap): Delete
-
-Tue May 16 15:08:20 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * internal.h (NT_subsystem, NT_stack_heap): Now extern.
-
-Sat May 13 10:14:08 1995 Steve Chamberlain <sac@slash.cygnus.com>
-
- * pe.h: New file.
- * i386.h (NT_SECTION_ALIGNMENT, NT_FILE_ALIGNMENT,
- NT_DEF_RESERVE, NT_DEF_COMMIT): New.
- * internal.h (internal_filehdr): New fields for PE.
- (IMAGE_DATA_DIRECTORY): New.
- (internal_aouthdr): New fields for PE.
-
-Tue Feb 14 17:59:37 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * ecoff.h (struct ecoff_fdrtab_entry): Define.
- (struct ecoff_find_line): Define.
-
-Sat Feb 4 14:38:03 1995 David Mosberger-Tang <davidm@piston.cs.arizona.edu>
-
- * sym.h (struct pdr): field "prof" added.
-
- * alpha.h (PDR_BITS1_PROF_*): added, macros for PDR_BITS*_RESERVED_*
- updated accordingly.
-
-Sun Jan 15 18:38:33 1995 Steve Chamberlain <sac@splat>
-
- * w65.h: New file.
-
-Wed Nov 23 22:43:38 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * sh.h (SH_ARCH_MAGIC_BIG, SH_ARCH_MAGIC_LITTLE): New.
- (SHBADMAG): Changed to suit.
-
-Tue Jul 26 17:46:08 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * i960.h (F_I960JX): New macro.
-
-Wed Jul 6 00:48:57 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * alpha.h: Add definitions for alpha file header flags, encoding
- the object type of the file.
-
-Mon Jun 20 13:47:01 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * ecoff.h (ecoff_swap_tir_in): Remove declaration.
- (ecoff_swap_tir_out): Likewise.
- (ecoff_swap_rndx_in, ecoff_swap_rndx_out): Likewise.
- (struct ecoff_debug_swap): Add new fields: swap_tir_in,
- swap_rndx_in, swap_tir_out, swap_rndx_out, read_debug_info.
-
-Sun Jun 12 03:51:52 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * symconst.h: Pick up SGI define for stIndirect.
-
-Fri Apr 22 13:05:28 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (REGINFO): Don't define.
- (struct ecoff_reginfo): Don't define.
-
- * sh.h (SH_ARCH_MAGIC): Rename from SHMAGIC. SHMAGIC is used by
- several targets to mean a shared library.
- (SHBADMAG): Corresponding change.
-
-Thu Apr 14 13:00:53 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (RELOC_BITS3_TYPE_BIG): Changed from 0x1e to 0x3e.
- (RELOC_BITS3_TYPEHI_LITTLE): Define.
- (RELOC_BITS3_TYPEHI_SH_LITTLE): Define.
- (MIPS_R_PCREL16): Change value from 8 to 12 to match Irix 4.
- (MIPS_R_RELHI): Define.
- (MIPS_R_RELLO): Define.
- (MIPS_R_SWITCH): Change value from 9 to 22.
-
-Thu Apr 7 14:19:35 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (MIPS_R_SWITCH): Define.
-
-Thu Mar 31 19:28:33 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * internal.h (internal_aouthdr): Added comments for Apollo fields.
-
-Thu Mar 31 16:28:02 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (STYP_ECOFF_LIB): Define as used on Irix 4.
-
-Fri Mar 25 17:16:55 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (struct ecoff_debug_info): Add adjust field.
- (struct ecoff_value_adjust): Define.
-
-Tue Mar 22 13:22:47 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (MIPS_R_PCREL16): Define.
-
-Sat Feb 26 10:26:38 1994 Ian Lance Taylor (ian@cygnus.com)
-
- * ecoff.h: Add casts to avoid warnings from SVR4 cc.
-
-Mon Feb 21 09:48:46 1994 Ian Lance Taylor (ian@lisa.cygnus.com)
-
- * sym.h (struct runtime_pdr): Make field adr bfd_vma, not unsigned
- long.
- (SYMR): Make field value bfd_vma, not long.
-
-Fri Feb 4 23:35:53 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * rs6000.h (STYP_DEBUG): Define.
-
-Wed Feb 2 14:31:37 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * internal.h (union internal_auxent): Change x_csect.x_scnlen into
- a union of a long and a pointer to a symbol. XCOFF sometimes uses
- this field as a symbol index.
-
-Mon Jan 10 23:54:25 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (ecoff_debug_info): Remove fields line_end,
- external_dnr_end, external_pdr_end, external_sym_end,
- external_opt_end, external_aux_end, ss_end, external_fdr_end.
- Replace ifdbase with ifdmap.
-
-Wed Jan 5 17:05:36 1994 Ken Raeburn (raeburn@deneb.cygnus.com)
-
- * ecoff.h (STYP_EXTENDESC, STYP_COMMENT, STYP_XDATA, STYP_PDATA):
- Define.
-
-Wed Jan 5 16:58:24 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (NUM_RELOC_SECTIONS): Define.
-
-Tue Dec 21 09:24:56 1993 Ken Raeburn (raeburn@rtl.cygnus.com)
-
- * sparc.h (struct external_reloc): Rename field r_addend to
- r_offset.
-
-Sat Dec 11 16:12:32 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * internal.h (R_DISP7, R_SH_IMM16): New reloc types.
-
-Tue Nov 23 14:23:19 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (struct ecoff_debug_swap): Added *_end fields for all
- the symbolic information pointers.
-
- * sym.h: Named the EXTR structure ecoff_extr.
-
-Fri Nov 19 08:21:18 1993 Ken Raeburn (raeburn@rover.cygnus.com)
-
- * sparc.h (RELSZ): Use correct size.
-
-Wed Nov 17 17:18:16 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (struct ecoff_debug_info): Define.
-
-Tue Nov 2 17:56:57 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (struct ecoff_debug_swap): Define.
-
-Thu Oct 28 17:07:50 1993 Stan Shebs (shebs@rtl.cygnus.com)
-
- * i386.h (I386LYNXMAGIC): Rename to LYNXCOFFMAGIC.
- * m68k.h (LYNXCOFFMAGIC): Define.
- * sparc.h: New file.
-
-Tue Oct 19 15:34:50 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * alpha.h (external_aouthdr): Split four byte padding field into
- two byte bldrev field and two byte padding field.
-
- * ecoff.h (_LITA, _PDATA, _XDATA, STYP_LITA): Defined.
-
-Wed Oct 13 15:52:34 1993 Ken Raeburn (raeburn@cygnus.com)
-
- Sun Oct 10 17:27:10 1993 Troy Rollo (troy@cbme.unsw.edu.au)
-
- * internal.h: Added o_sri, o_inlib and o_vid for Apollos as well
- as R_DIR16.
-
- * apollo.h: New file
-
-Mon Oct 11 17:16:48 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (REGINFO, struct ecoff_reginfo): Define.
-
-Tue Oct 5 10:52:53 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * rs6000.h: Change non-ASCII characters in comment to octal
- escapes.
-
-Tue Sep 28 03:27:04 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * ecoff.h (_FINI, STYP_ECOFF_FINI): Add to support .fini section.
-
-Fri Sep 24 11:53:53 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (BADMAG): Recognize MIPS_MAGIC_LITTLE3 and MIPS_MAGIC_BIG3.
- * ecoff.h: Define MIPS_MAGIC_LITTLE3 and MIPS_MAGIC_BIG3.
-
-Thu Sep 23 21:07:14 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * mips.h (BADMAG): Recognize MIPS_MAGIC_LITTLE2 and MIPS_MAGIC_BIG2.
- * ecoff.h: Define MIPS_MAGIC_LITTLE2 and MIPS_MAGIC_BIG2.
-
-Thu Sep 16 20:27:21 1993 Jim Kingdon (kingdon@cirdan.cygnus.com)
-
- * sym.h, symconst.h: Add comment stating these files are not part
- of GDB, GAS, etc. In 1991, when we asked rms whether we could
- include these files in GDB (although they are copyrighted by
- someone besides the FSF), he said it was OK if they were not
- considered part of GDB.
-
-Fri Sep 10 17:40:35 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (AUX_PUT_ANY): Cast val argument to bfd_vma.
-
- * alpha.c (external_aouthdr): Need four bytes of padding between
- vstamp and tsize.
-
-Tue Sep 7 14:20:43 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff.h (AUX_GET_ANY, AUX_PUT_ANY): Changed to reflect further
- change in bfd swapping routine names.
-
-Tue Sep 7 10:15:17 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * ecoff.h (AUX_GET_ANY): Change name of _do_getb32 to reflect bfd
- changes.
-
-Fri Aug 13 14:30:32 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ecoff.h (RELOC_SECTION_NONE): Define.
-
-Thu Aug 12 11:24:42 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * alpha.h (struct external_reloc): Add r_symndx field.
- (RELSZ): Correct.
- (RELOC_BITS*): Correct.
- (ALPHA_R_*): Define.
- * ecoff.h (RELOC_SECTION_{XDATA,PDATA,FINI,LITA,ABS}): Define.
- (r_extern): Undefine.
- * internal.h (struct internal_reloc): Make r_vaddr bfd_vma rather
- than long. Add r_extern field.
-
- * alpha.h (PDR_BITS*): Define.
- * sym.h (PDR): Give correct names to new fields.
-
- * ecoff.h: Moved MIPS reloc definitions from here...
- * mips.h: to here.
-
-Mon Aug 2 16:37:14 1993 Stu Grossman (grossman at cygnus.com)
-
- * i386.h: Add Lynx magic number.
-
-Tue Aug 3 11:17:53 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * alpha.h: Corrected external symbolic debugging structures to
- match actual usage.
- * internal.h (internal_filehdr, internal_aouthdr,
- internal_scnhdr): Changed type of some fields to bfd_vma so they
- can hold 64 bits.
- * sym.h (HDRR, FDR, PDR, EXTR): Likewise.
- (PDR): Added new fields found on Alpha.
- * symconst.h (magicSym2): Define; new value found on Alpha.
-
- * ecoff.h: New file.
- * alpha.h, mips.h: Moved common information into ecoff.h. Moved
- external structure definitions in from ecoff-ext.h.
- * ecoff-ext.h: Removed; information now in alpha.h and mips.h.
-
-Sun Jul 18 21:43:59 1993 Jim Kingdon (kingdon@rtl.cygnus.com)
-
- * i386.h: Recognize I386PTXMAGIC.
-
-Fri Jul 16 09:54:35 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.h (MIPS_AOUT_{OZ}MAGIC): Renamed from {OZ}MAGIC.
-
-Thu Jul 15 12:23:55 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * m88k.h (union external_auxent): Move x_fcn back inside x_fcnary.
- ({GET,PUT}_FCN_{LNNOPTR,ENDNDX}): Adjust accordingly.
-
-Sun Jul 11 18:00:18 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * m68k.h: Define MC68KBCSMAGIC.
-
-Thu Jun 10 11:46:28 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.h (_INIT, STYP_MIPS_INIT): Define (used on Irix4).
- (STYP_OTHER_LOAD): Define as STYP_MIPS_INIT.
-
-Wed Jun 9 15:09:09 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.h (OMAGIC): Define.
-
-Tue Jun 8 12:16:03 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- Support for H8/300-H
- * h8300.h: New magic number.
- * internal.h: New relocations.
-
-Mon Apr 26 18:04:47 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * internal.h, sh.h: Support for SH.
-
-Sat Apr 24 21:34:59 1993 Jim Kingdon (kingdon@cygnus.com)
-
- * a29k.h: Define _LIT.
-
-Fri Apr 23 18:41:23 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * alpha.h: New file.
-
-Thu Apr 8 12:36:34 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * internal.h (C_SHADOW, C_VERSION): Copied in from m88k.h.
- * m88k.h, i386.h, we32k.h: Don't define all the storage classes;
- they're already in internal.h.
-
-Wed Apr 7 11:51:24 1993 Jim Kingdon (kingdon@cygnus.com)
-
- * internal.h: Change n_sclass to unsigned char.
- Change C_EFCN to 0xff, change RS/6000 dbx symbols
- to no longer be signed.
-
-Fri Mar 19 14:52:56 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * internal.h: Add H8/500 reloc types.
-
-Wed Mar 17 09:46:03 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ecoff-ext.h (AUX_PUT_ANY): Don't use void values in branches of
- conditional expression.
-
-Thu Mar 4 14:12:06 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * ecoff-ext.h (AUX_GET_*): Rewrote to use new macro AUX_GET_ANY.
- (AUX_PUT_*): New macros corresponding to the AUX_GET macros.
- (ecoff_swap_tir_out): Added prototype.
-
- * mips.h (N_BTMASK, N_TMASK, N_BTSHFT, N_TSHIFT): Define; these
- are needed to interpret gcc debugging output.
-
-Tue Feb 9 07:43:27 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * we32k.h (BTYPE, ISPTR, ISFCN, ISARY, DECREF): Removed
- more definitions duplicated in internal.h.
-
-Wed Feb 3 09:18:24 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.h (RELOC_BITS3_TYPE_*): Correct for big endian machines.
-
-Mon Jan 25 11:35:51 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * internal.h (internal_aouthdr): Added additional fields used only
- by MIPS ECOFF.
-
-Thu Jan 21 10:28:38 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.h (AOUTHDR): Added additional fields used by ECOFF.
-
-Tue Jan 19 12:21:19 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * i386.h, we32k.h (N_*, T_*, DT_*): Removed still more definitions
- duplicated in internal.h.
-
- * mips.h (RELOC_SECTION_*, ECOFF_R_*): Defined constants for ECOFF
- relocs.
-
-Fri Jan 15 18:17:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff-ext.h: Added prototypes for new ECOFF swapping functions.
- (opt_ext): New structure.
- * mips.h (ZMAGIC): Defined to be 0413.
- (_LIB): Defined to be ".lib"
- (external_reloc): MIPS ECOFF relocs are only 8 bytes. Added
- macros to aid in swapping.
-
-Fri Jan 8 16:19:26 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ecoff-ext.h: Added prototypes for ECOFF swapping functions.
- * internal.h (internal_scnhdr): Always provide s_align field, not
- just on i960.
- (internal_reloc): Always provide r_size field, not just on
- RS/6000.
- * mips.h (_RDATA, _SDATA, _SBSS, _LIT4, _LIT8, STYP_RDATA,
- STYP_SDATA, STYP_SBSS, STYP_LIT4, STYP_LIT8): Defined.
- (CODE_MASK, MIPS_IS_STAB, MIPS_MARK_STAB, MIPS_UNMARK_STAB,
- STABS_SYMBOL): Moved in from gdb/mipsread.c.
-
-Wed Jan 6 14:01:46 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * i386.h, we32k.h: removed STYP_* defines, since they duplicated
- those in internal.h.
-
-Tue Dec 29 15:40:07 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * i386.h: define I386AIXMAGIC for Danbury AIX PS/2 compiler.
-
-Sat Dec 12 16:07:57 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * i386.h: don't define BTYPE, ISPTR, ISFCN, ISARY, DECREF: they
- are defined in internal.h.
-
-Thu Nov 12 09:52:01 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * internal.h: (internal_reloc): r_offset is now a long.
- * z8k.h: slight comment enhancement
-
-Wed Sep 30 07:46:08 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * internal.h: changed z8k reloc types
-
-Fri Aug 28 10:16:31 1992 Brendan Kehoe (brendan@cygnus.com)
-
- * we32k.h: new file
-
-Thu Aug 27 13:00:01 1992 Brendan Kehoe (brendan@cygnus.com)
-
- * symconst.h: comment out cruft at the end of #endif
-
-Tue Aug 25 15:06:49 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * internal.h: added #define for STYP_LIT, removed from a29k and
- h8300.
-
- * z8k.h: added z8000 support
-
-Thu Jul 16 16:32:00 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * internal.h: added R_RELLONG_NEG reloc type
-
-Fri Jun 12 20:11:04 1992 John Gilmore (gnu at cygnus.com)
-
- * symconst.h: Fix unterminated comment.
-
-Wed Jun 10 07:57:49 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * i386.h: a.out magic numbers from
- mohring@informatik.tu-muenchen.de
-
-Mon Jun 8 20:13:33 1992 John Gilmore (gnu at cygnus.com)
-
- * ecoff-ext.h, mips.h: Use unsigned chars everywhere.
- (Suggested by Antti Miettinen.)
-
-Tue Apr 14 15:18:44 1992 John Gilmore (gnu at cygnus.com)
-
- * sym.h: Add comments.
- * symconst.h: Merge with Fred's changes.
-
-Tue Apr 14 14:30:05 1992 Fred Fish (fnf@cygnus.com)
-
- * symconst.h: Pick up SGI defines for stStruct, stUnion, stEnum,
- langCplusplus, and langCplusplusV2.
-
-Thu Apr 2 19:47:43 1992 John Gilmore (gnu at cygnus.com)
-
- * sym.h, symconst.h: MIPS has provided redistributable versions
- of these files. Thanks!
- * ecoff-ext.h: Add weakext bit to match new sym.h.
-
-Fri Mar 6 00:10:46 1992 John Gilmore (gnu at cygnus.com)
-
- * ecoff-ext.h: Add relative file descriptors.
-
-Thu Feb 27 11:53:04 1992 John Gilmore (gnu at cygnus.com)
-
- * ecoff-ext.h: New file for external (in-file) form of ecoff
- symbol structures.
-
-Thu Feb 6 11:33:32 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * h8300.h: made the external_lineno l_lnno field 4 bytes wide.
- andded GET/PUT_LINENO_LNNO macros
-
-Sat Nov 30 20:38:35 1991 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * a29k.h, h8300.h, i386.h, i960.h, internal.h, m68k.h, m88k.h,
- mips.h, rs6000.h: Move from above coff-<foo>.h.
+For older changes see ChangeLog-9103
Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
version-control: never
End:
diff --git a/include/demangle.h b/include/demangle.h
index bff266931c8..6e995e4817d 100644
--- a/include/demangle.h
+++ b/include/demangle.h
@@ -1,6 +1,6 @@
/* Defs for interface to demanglers.
- Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002
- Free Software Foundation, Inc.
+ Copyright 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002,
+ 2003, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -21,7 +21,7 @@
#if !defined (DEMANGLE_H)
#define DEMANGLE_H
-#include "ansidecl.h"
+#include "libiberty.h"
#ifdef __cplusplus
extern "C" {
@@ -164,6 +164,368 @@ enum gnu_v3_dtor_kinds {
extern enum gnu_v3_dtor_kinds
is_gnu_v3_mangled_dtor PARAMS ((const char *name));
+/* The V3 demangler works in two passes. The first pass builds a tree
+ representation of the mangled name, and the second pass turns the
+ tree representation into a demangled string. Here we define an
+ interface to permit a caller to build their own tree
+ representation, which they can pass to the demangler to get a
+ demangled string. This can be used to canonicalize user input into
+ something which the demangler might output. It could also be used
+ by other demanglers in the future. */
+
+/* These are the component types which may be found in the tree. Many
+ component types have one or two subtrees, referred to as left and
+ right (a component type with only one subtree puts it in the left
+ subtree). */
+
+enum demangle_component_type
+{
+ /* A name, with a length and a pointer to a string. */
+ DEMANGLE_COMPONENT_NAME,
+ /* A qualified name. The left subtree is a class or namespace or
+ some such thing, and the right subtree is a name qualified by
+ that class. */
+ DEMANGLE_COMPONENT_QUAL_NAME,
+ /* A local name. The left subtree describes a function, and the
+ right subtree is a name which is local to that function. */
+ DEMANGLE_COMPONENT_LOCAL_NAME,
+ /* A typed name. The left subtree is a name, and the right subtree
+ describes that name as a function. */
+ DEMANGLE_COMPONENT_TYPED_NAME,
+ /* A template. The left subtree is a template name, and the right
+ subtree is a template argument list. */
+ DEMANGLE_COMPONENT_TEMPLATE,
+ /* A template parameter. This holds a number, which is the template
+ parameter index. */
+ DEMANGLE_COMPONENT_TEMPLATE_PARAM,
+ /* A constructor. This holds a name and the kind of
+ constructor. */
+ DEMANGLE_COMPONENT_CTOR,
+ /* A destructor. This holds a name and the kind of destructor. */
+ DEMANGLE_COMPONENT_DTOR,
+ /* A vtable. This has one subtree, the type for which this is a
+ vtable. */
+ DEMANGLE_COMPONENT_VTABLE,
+ /* A VTT structure. This has one subtree, the type for which this
+ is a VTT. */
+ DEMANGLE_COMPONENT_VTT,
+ /* A construction vtable. The left subtree is the type for which
+ this is a vtable, and the right subtree is the derived type for
+ which this vtable is built. */
+ DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE,
+ /* A typeinfo structure. This has one subtree, the type for which
+ this is the tpeinfo structure. */
+ DEMANGLE_COMPONENT_TYPEINFO,
+ /* A typeinfo name. This has one subtree, the type for which this
+ is the typeinfo name. */
+ DEMANGLE_COMPONENT_TYPEINFO_NAME,
+ /* A typeinfo function. This has one subtree, the type for which
+ this is the tpyeinfo function. */
+ DEMANGLE_COMPONENT_TYPEINFO_FN,
+ /* A thunk. This has one subtree, the name for which this is a
+ thunk. */
+ DEMANGLE_COMPONENT_THUNK,
+ /* A virtual thunk. This has one subtree, the name for which this
+ is a virtual thunk. */
+ DEMANGLE_COMPONENT_VIRTUAL_THUNK,
+ /* A covariant thunk. This has one subtree, the name for which this
+ is a covariant thunk. */
+ DEMANGLE_COMPONENT_COVARIANT_THUNK,
+ /* A Java class. This has one subtree, the type. */
+ DEMANGLE_COMPONENT_JAVA_CLASS,
+ /* A guard variable. This has one subtree, the name for which this
+ is a guard variable. */
+ DEMANGLE_COMPONENT_GUARD,
+ /* A reference temporary. This has one subtree, the name for which
+ this is a temporary. */
+ DEMANGLE_COMPONENT_REFTEMP,
+ /* A standard substitution. This holds the name of the
+ substitution. */
+ DEMANGLE_COMPONENT_SUB_STD,
+ /* The restrict qualifier. The one subtree is the type which is
+ being qualified. */
+ DEMANGLE_COMPONENT_RESTRICT,
+ /* The volatile qualifier. The one subtree is the type which is
+ being qualified. */
+ DEMANGLE_COMPONENT_VOLATILE,
+ /* The const qualifier. The one subtree is the type which is being
+ qualified. */
+ DEMANGLE_COMPONENT_CONST,
+ /* The restrict qualifier modifying a member function. The one
+ subtree is the type which is being qualified. */
+ DEMANGLE_COMPONENT_RESTRICT_THIS,
+ /* The volatile qualifier modifying a member function. The one
+ subtree is the type which is being qualified. */
+ DEMANGLE_COMPONENT_VOLATILE_THIS,
+ /* The const qualifier modifying a member function. The one subtree
+ is the type which is being qualified. */
+ DEMANGLE_COMPONENT_CONST_THIS,
+ /* A vendor qualifier. The left subtree is the type which is being
+ qualified, and the right subtree is the name of the
+ qualifier. */
+ DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL,
+ /* A pointer. The one subtree is the type which is being pointed
+ to. */
+ DEMANGLE_COMPONENT_POINTER,
+ /* A reference. The one subtree is the type which is being
+ referenced. */
+ DEMANGLE_COMPONENT_REFERENCE,
+ /* A complex type. The one subtree is the base type. */
+ DEMANGLE_COMPONENT_COMPLEX,
+ /* An imaginary type. The one subtree is the base type. */
+ DEMANGLE_COMPONENT_IMAGINARY,
+ /* A builtin type. This holds the builtin type information. */
+ DEMANGLE_COMPONENT_BUILTIN_TYPE,
+ /* A vendor's builtin type. This holds the name of the type. */
+ DEMANGLE_COMPONENT_VENDOR_TYPE,
+ /* A function type. The left subtree is the return type. The right
+ subtree is a list of ARGLIST nodes. Either or both may be
+ NULL. */
+ DEMANGLE_COMPONENT_FUNCTION_TYPE,
+ /* An array type. The left subtree is the dimension, which may be
+ NULL, or a string (represented as DEMANGLE_COMPONENT_NAME), or an
+ expression. The right subtree is the element type. */
+ DEMANGLE_COMPONENT_ARRAY_TYPE,
+ /* A pointer to member type. The left subtree is the class type,
+ and the right subtree is the member type. CV-qualifiers appear
+ on the latter. */
+ DEMANGLE_COMPONENT_PTRMEM_TYPE,
+ /* An argument list. The left subtree is the current argument, and
+ the right subtree is either NULL or another ARGLIST node. */
+ DEMANGLE_COMPONENT_ARGLIST,
+ /* A template argument list. The left subtree is the current
+ template argument, and the right subtree is either NULL or
+ another TEMPLATE_ARGLIST node. */
+ DEMANGLE_COMPONENT_TEMPLATE_ARGLIST,
+ /* An operator. This holds information about a standard
+ operator. */
+ DEMANGLE_COMPONENT_OPERATOR,
+ /* An extended operator. This holds the number of arguments, and
+ the name of the extended operator. */
+ DEMANGLE_COMPONENT_EXTENDED_OPERATOR,
+ /* A typecast, represented as a unary operator. The one subtree is
+ the type to which the argument should be cast. */
+ DEMANGLE_COMPONENT_CAST,
+ /* A unary expression. The left subtree is the operator, and the
+ right subtree is the single argument. */
+ DEMANGLE_COMPONENT_UNARY,
+ /* A binary expression. The left subtree is the operator, and the
+ right subtree is a BINARY_ARGS. */
+ DEMANGLE_COMPONENT_BINARY,
+ /* Arguments to a binary expression. The left subtree is the first
+ argument, and the right subtree is the second argument. */
+ DEMANGLE_COMPONENT_BINARY_ARGS,
+ /* A trinary expression. The left subtree is the operator, and the
+ right subtree is a TRINARY_ARG1. */
+ DEMANGLE_COMPONENT_TRINARY,
+ /* Arguments to a trinary expression. The left subtree is the first
+ argument, and the right subtree is a TRINARY_ARG2. */
+ DEMANGLE_COMPONENT_TRINARY_ARG1,
+ /* More arguments to a trinary expression. The left subtree is the
+ second argument, and the right subtree is the third argument. */
+ DEMANGLE_COMPONENT_TRINARY_ARG2,
+ /* A literal. The left subtree is the type, and the right subtree
+ is the value, represented as a DEMANGLE_COMPONENT_NAME. */
+ DEMANGLE_COMPONENT_LITERAL,
+ /* A negative literal. Like LITERAL, but the value is negated.
+ This is a minor hack: the NAME used for LITERAL points directly
+ to the mangled string, but since negative numbers are mangled
+ using 'n' instead of '-', we want a way to indicate a negative
+ number which involves neither modifying the mangled string nor
+ allocating a new copy of the literal in memory. */
+ DEMANGLE_COMPONENT_LITERAL_NEG
+};
+
+/* Types which are only used internally. */
+
+struct demangle_operator_info;
+struct demangle_builtin_type_info;
+
+/* A node in the tree representation is an instance of a struct
+ demangle_component. Note that the field names of the struct are
+ not well protected against macros defined by the file including
+ this one. We can fix this if it ever becomes a problem. */
+
+struct demangle_component
+{
+ /* The type of this component. */
+ enum demangle_component_type type;
+
+ union
+ {
+ /* For DEMANGLE_COMPONENT_NAME. */
+ struct
+ {
+ /* A pointer to the name (which need not NULL terminated) and
+ its length. */
+ const char *s;
+ int len;
+ } s_name;
+
+ /* For DEMANGLE_COMPONENT_OPERATOR. */
+ struct
+ {
+ /* Operator. */
+ const struct demangle_operator_info *op;
+ } s_operator;
+
+ /* For DEMANGLE_COMPONENT_EXTENDED_OPERATOR. */
+ struct
+ {
+ /* Number of arguments. */
+ int args;
+ /* Name. */
+ struct demangle_component *name;
+ } s_extended_operator;
+
+ /* For DEMANGLE_COMPONENT_CTOR. */
+ struct
+ {
+ /* Kind of constructor. */
+ enum gnu_v3_ctor_kinds kind;
+ /* Name. */
+ struct demangle_component *name;
+ } s_ctor;
+
+ /* For DEMANGLE_COMPONENT_DTOR. */
+ struct
+ {
+ /* Kind of destructor. */
+ enum gnu_v3_dtor_kinds kind;
+ /* Name. */
+ struct demangle_component *name;
+ } s_dtor;
+
+ /* For DEMANGLE_COMPONENT_BUILTIN_TYPE. */
+ struct
+ {
+ /* Builtin type. */
+ const struct demangle_builtin_type_info *type;
+ } s_builtin;
+
+ /* For DEMANGLE_COMPONENT_SUB_STD. */
+ struct
+ {
+ /* Standard substitution string. */
+ const char* string;
+ /* Length of string. */
+ int len;
+ } s_string;
+
+ /* For DEMANGLE_COMPONENT_TEMPLATE_PARAM. */
+ struct
+ {
+ /* Template parameter index. */
+ long number;
+ } s_number;
+
+ /* For other types. */
+ struct
+ {
+ /* Left (or only) subtree. */
+ struct demangle_component *left;
+ /* Right subtree. */
+ struct demangle_component *right;
+ } s_binary;
+
+ } u;
+};
+
+/* People building mangled trees are expected to allocate instances of
+ struct demangle_component themselves. They can then call one of
+ the following functions to fill them in. */
+
+/* Fill in most component types with a left subtree and a right
+ subtree. Returns non-zero on success, zero on failure, such as an
+ unrecognized or inappropriate component type. */
+
+extern int
+cplus_demangle_fill_component PARAMS ((struct demangle_component *fill,
+ enum demangle_component_type,
+ struct demangle_component *left,
+ struct demangle_component *right));
+
+/* Fill in a DEMANGLE_COMPONENT_NAME. Returns non-zero on success,
+ zero for bad arguments. */
+
+extern int
+cplus_demangle_fill_name PARAMS ((struct demangle_component *fill,
+ const char *, int));
+
+/* Fill in a DEMANGLE_COMPONENT_BUILTIN_TYPE, using the name of the
+ builtin type (e.g., "int", etc.). Returns non-zero on success,
+ zero if the type is not recognized. */
+
+extern int
+cplus_demangle_fill_builtin_type PARAMS ((struct demangle_component *fill,
+ const char *typename));
+
+/* Fill in a DEMANGLE_COMPONENT_OPERATOR, using the name of the
+ operator and the number of arguments which it takes (the latter is
+ used to disambiguate operators which can be both binary and unary,
+ such as '-'). Returns non-zero on success, zero if the operator is
+ not recognized. */
+
+extern int
+cplus_demangle_fill_operator PARAMS ((struct demangle_component *fill,
+ const char *opname, int args));
+
+/* Fill in a DEMANGLE_COMPONENT_EXTENDED_OPERATOR, providing the
+ number of arguments and the name. Returns non-zero on success,
+ zero for bad arguments. */
+
+extern int
+cplus_demangle_fill_extended_operator PARAMS ((struct demangle_component *fill,
+ int numargs,
+ struct demangle_component *nm));
+
+/* Fill in a DEMANGLE_COMPONENT_CTOR. Returns non-zero on success,
+ zero for bad arguments. */
+
+extern int
+cplus_demangle_fill_ctor PARAMS ((struct demangle_component *fill,
+ enum gnu_v3_ctor_kinds kind,
+ struct demangle_component *name));
+
+/* Fill in a DEMANGLE_COMPONENT_DTOR. Returns non-zero on success,
+ zero for bad arguments. */
+
+extern int
+cplus_demangle_fill_dtor PARAMS ((struct demangle_component *fill,
+ enum gnu_v3_dtor_kinds kind,
+ struct demangle_component *name));
+
+/* This function translates a mangled name into a struct
+ demangle_component tree. The first argument is the mangled name.
+ The second argument is DMGL_* options. This returns a pointer to a
+ tree on success, or NULL on failure. On success, the third
+ argument is set to a block of memory allocated by malloc. This
+ block should be passed to free when the tree is no longer
+ needed. */
+
+extern struct demangle_component *
+cplus_demangle_v3_components PARAMS ((const char *mangled,
+ int options,
+ void **mem));
+
+/* This function takes a struct demangle_component tree and returns
+ the corresponding demangled string. The first argument is DMGL_*
+ options. The second is the tree to demangle. The third is a guess
+ at the length of the demangled string, used to initially allocate
+ the return buffer. The fourth is a pointer to a size_t. On
+ success, this function returns a buffer allocated by malloc(), and
+ sets the size_t pointed to by the fourth argument to the size of
+ the allocated buffer (not the length of the returned string). On
+ failure, this function returns NULL, and sets the size_t pointed to
+ by the fourth argument to 0 for an invalid tree, or to 1 for a
+ memory allocation error. */
+
+extern char *
+cplus_demangle_print PARAMS ((int options,
+ const struct demangle_component *tree,
+ int estimated_length,
+ size_t *p_allocated_size));
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog
index 9fc3b589936..4a4501eb893 100644
--- a/include/elf/ChangeLog
+++ b/include/elf/ChangeLog
@@ -1,1897 +1,27 @@
-2003-12-06 Alan Modra <amodra@bigpond.net.au>
+2004-01-17 Mark Kettenis <kettenis@gnu.org>
- From Jan Beulich <JBeulich@novell.com>
- * common.h (DT_HIOS): Correct value.
+ * common.h (NT_OPENBSD_IDENT): Define.
-2003-12-03 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+2004-01-06 Alexandre Oliva <aoliva@redhat.com>
- * elf/m32r.h: Add new machine type m32r2 and instruction modes.
+ 2003-09-18 Alexandre Oliva <aoliva@redhat.com>
+ * frv.h (EF_FRV_FDPIC): New macro.
+ (EF_FRV_PIC_FLAGS): Adjust.
+ 2003-08-08 Alexandre Oliva <aoliva@redhat.com>
+ * frv.h (R_FRV_FUNCDESC_VALUE, R_FRV_FUNCDESC_GOTOFF12,
+ R_FRV_FUNCDESC_GOTOFFLO, R_FRV_FUNCDESC_GOTOFFHI, R_FRV_GOTOFF12,
+ R_FRV_GOTOFFLO, R_FRV_GOTOFFHI): New.
+ 2003-08-04 Alexandre Oliva <aoliva@redhat.com>
+ * frv.h (R_FRV_GOT12, R_FRV_GOTHI, R_FRV_GOTLO, R_FRV_FUNCDESC,
+ R_FRV_FUNCDESC_GOT12, R_FRV_FUNCDESC_GOTHI, R_FRV_FUNCDESC_GOTLO):
+ New.
-2003-11-06 Alan Modra <amodra@bigpond.net.au>
-
- * ppc.h (R_PPC_RELAX32PC): Define.
-
-2003-10-22 Alexandre Oliva <aoliva@redhat.com>,
- Michael Snyder <msnyder@redhat.com>
-
- * sh.h (EF_SH4A, EF_SH4AL_DSP, EF_SH4_NOFPU, EF_SH4A_NOFPU): New.
- (EF_SH_MERGE_MACH): Combine them.
-
-2003-10-18 Hans-Peter Nilsson <hp@bitrange.com>
-
- * mmix.h (R_MMIX_PUSHJ_STUBBABLE): New reloc number.
- (_bfd_mmix_before_linker_allocation): Rename from
- _bfd_mmix_prepare_linker_allocated_gregs.
- (_bfd_mmix_after_linker_allocation): Rename from
- _bfd_mmix_finalize_linker_allocated_gregs.
-
-2003-10-06 Dave Brolley <brolley@redhat.com>
-
- * frv.h (EF_FRV_CPU_FR550): New macro.
-
-2003-09-30 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h (E_MIPS_ARCH_64R2): New define.
-
-2003-09-23 DJ Delorie <dj@redhat.com>
-
- * sh.h (R_SH_SWITCH8, R_SH_GNU_VTINHERIT, R_SH_GNU_VTENTRY,
- R_SH_LOOP_START,R_SH_LOOP_END): Move to "reserved" spaces.
- (R_SH_DIR16, R_SH_DIR8, R_SH_DIR8UL, R_SH_DIR8UW, R_SH_DIR8U,
- R_SH_DIR8SW, R_SH_DIR8S, R_SH_DIR4UL, R_SH_DIR4UW, R_SH_DIR4U,
- R_SH_PSHA, R_SH_PSHL): New.
-
-2003-09-11 James Cownie <jcownie@etnus.com>
-
- * dwarf2.h: Add HP dwarf extensions from their hacked gdb
- header files (ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz).
-
-2003-09-04 Nick Clifton <nickc@redhat.com>
-
- * v850.h (E_V850E1_ARCH): Define.
-
-2003-08-21 James Cownie <jcownie@etnus.com>
-
- * dwarf2.h: Add PGI dwarf extensions.
-
-2003-08-08 Dmitry Diky <diwil@mail.ru>
-
- * msp430.h: Add xW42 and xE42 parts. Sort MPU list according to
- gcc order.
-
-2003-08-07 Alan Modra <amodra@bigpond.net.au>
-
- * reloc-macros.h (START_RELOC_NUMBERS) : Remove PARAMS macro. Use
- C90 function definition. Formatting.
- (RELOC_NUMBER): Remove !__STDC__ code.
-
-2003-07-28 Eric Christopher <echristo@redhat.com>
-
- * ppc.h (R_PPC_RELAX32): New. Fake relocation.
-
-2003-07-25 H.J. Lu <hongjiu.lu@intel.com>
-
- * v850.h (SHF_V850_GPREL): New.
- (SHF_V850_EPREL): Likewise.
- (SHF_V850_R0REL): Likewise.
-
-2003-07-09 Alexandre Oliva <aoliva@redhat.com>
-
- 2001-05-16 Alexandre Oliva <aoliva@redhat.com>
- * mn10300.h: Introduce GOTPC16, GOTOFF24, GOTOFF16 and
- PLT16, and rename GOTPC to GOTPC32 and GOTOFF to GOTOFF32.
- Renumbered all relocs.
- 2001-04-12 Alexandre Oliva <aoliva@redhat.com>
- * mn10300.h (R_MN10300_GOTPC, R_MN10300_GOTOFF,
- R_MN10300_PLT32, R_MN10300_GOT32, R_MN10300_GOT24,
- R_MN10300_GOT16, R_MN10300_COPY, R_MN10300_GLOB_DAT,
- R_MN10300_JMP_SLOT, R_MN10300_RELATIVE): New relocs.
-
-2003-07-09 Alexandre Oliva <aoliva@redhat.com>
-
- 2000-04-01 Alexandre Oliva <aoliva@cygnus.com>
- * mn10300.h (E_MN10300_MACH_AM33_2): Renamed from
- E_MN10300_MACH_AM332.
- 2000-03-31 Alexandre Oliva <aoliva@cygnus.com>
- * mn10300.h (E_MN10300_MACH_AM332): Defined.
-
-2003-07-01 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390.h (elf_s390_reloc_type): Add long displacement relocations
- R_390_20, R_390_GOT20, R_390_GOTPLT20 and R_390_TLS_GOTIE20.
-
-2003-06-29 Andreas Jaeger <aj@suse.de>
-
- * mmix.h: Convert to ISO C90 prototypes.
- * mips.h: Likewise.
-
-2003-06-13 Robert Millan <zeratul2@wanadoo.es>
-
- * common.h (GNU_ABI_TAG_NETBSD): New tag.
- (GNU_ABI_TAG_FREEBSD): New tag.
-
-2003-06-10 Richard Sandiford <rsandifo@redhat.com>
-
- * h8.h (E_H8_MACH_H8300SXN): New flag.
-
-2003-06-03 Nick Clifton <nickc@redhat.com>
-
- * v850.h (R_V850_32): Rename to R_V850_ABS32.
- Add R_V850_REL32.
-
-2003-05-15 Roland McGrath <roland@redhat.com>
-
- * common.h (NT_AUXV, AT_*): New macros.
- * external.h (Elf32_External_Auxv, Elf64_External_Auxv): New types.
- * internal.h (Elf_Internal_Auxv): New type.
-
-2003-05-14 Michael Snyder <msnyder@redhat.com>
- From Bernd Schmidt <bernds@redhat.com>
- * h8.h (E_H8_MACH_H8300SX): New.
-
-2003-04-24 Dhananjay Deshpande <dhananjayd@kpitcummins.com>
-
- * elf/h8.h (E_H8_MACH_H8300HN, E_H8_MACH_H8300SN): New
-
-2003-04-23 J"orn Rennecke <joern.rennecke@superh.com>
-
- * common.h (EM_SH): Amend comment to refer to SuperH.
-
-2003-04-22 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
-
- * common.h: Replace references to Mitsubishi M32R with
- references to Renesas M32R.
-
-2003-04-15 Rohit Kumar Srivastava <rohits@kpitcummins.com>
-
- * common.h: Replace occurrances of 'Hitachi' with 'Renesas'.
-
-2003-04-01 Bob Wilson <bob.wilson@acm.org>
-
- * elf/common.h (EM_XTENSA_OLD): Define.
- * elf/xtensa.h: New file.
-
-2003-04-01 Nick Clifton <nickc@redhat.com>
-
- * arm.h (ARM_NOTE_SECTION): Include .gnu in the string.
-
-2003-03-25 Stan Cox <scox@redhat.com>
- Nick Clifton <nickc@redhat.com>
-
- Contribute support for Intel's iWMMXt chip - an ARM variant:
-
- * arm.h (ARM_NOTE_SECTION): Define.
-
-2003-03-03 J"orn Rennecke <joern.rennecke@superh.com>
-
- * sh.h (EF_SH_MERGE_MACH): Make sure SH2E & SH3/SH3E merge to SH3E,
- and SH2E & SH4 merge to SH4, not SH2E.
-
-2003-02-21 Ian Wienand <ianw@gelato.unsw.edu.au>
-
- * ia64.h (SHT_IA_64_LOPSREG, SHT_IA_64_HIPSREG,
- SHT_IA_64_PRIORITY_INIT): Define.
-
-2003-02-18 Alan Modra <amodra@bigpond.net.au>
-
- * ppc64.h (IS_PPC64_TLS_RELOC): Rename from IS_TLS_RELOC.
-
- * ppc.h: Replace DTPMOD64, TPREL64, DTPREL64 with DTPMOD32 etc.
- (IS_PPC_TLS_RELOC): Define.
-
-2003-02-10 Nick Clifton <nickc@redhat.com>
-
- * arm.h (EF_ARM_MAVERICK_FLOAT): Define.
-
-2003-02-05 Alan Modra <amodra@bigpond.net.au>
-
- * ppc.h: Add TLS relocs. Format.
- * ppc64.h: Likewise.
-
-2003-01-27 Alexandre Oliva <aoliva@redhat.com>
-
- * mips.h (EF_MIPS_XGOT): Define.
-
-2003-01-24 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390.h: Add s390 TLS relocations.
-
-2003-01-23 Nick Clifton <nickc@redhat.com>
-
- * Add sh2e support:
-
- 2002-04-02 Alexandre Oliva <aoliva@redhat.com>
-
- * sh.h (EF_SH_MERGE_MACH): Handle SH2E.
-
- 2002-04-02 Elena Zannoni <ezannoni@redhat.com>
-
- * sh.h (EF_SH2E): New.
-
-2003-01-23 Alan Modra <amodra@bigpond.net.au>
-
- * sh.h: Split out various bits to bfd/elf32-sh64.h.
-
-2003-01-20 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390.h: Rename R_390_GOTOFF to R_390_GOTOFF32. Add new gotoff,
- gotplt and pltoff relocations.
-
-2003-01-17 Alan Modra <amodra@bigpond.net.au>
-
- * common.h: Formatting, typo fixes.
- (DT_ENCODING): Correct value.
-
-2003-01-17 Fabio Alemagna <falemagn@aros.org>
-
- * common.h (ELFOSABI_AROS): Define.
- (ELFOSABI_OPENVMS): Likewise.
- (ELFOSABI_NSK): Likewise.
-
-2003-01-16 Alan Modra <amodra@bigpond.net.au>
-
- * ppc.h: Split out ppc64 definitions to..
- * pcc64.h: ..here. New file.
- (R_PPC64_REL30): Rename from R_PPC64_ADDR30.
-
-2003-01-13 Dmitry Diky <diwil@mail.ru>
-
- * elf/common.h (EM_MSP430): Change e_machine value to officially
- assigned.
-
-2003-01-02 Ben Elliston <bje@redhat.com>
-
- * common.h (EM_IQ2000): Define.
- * iq2000.h: New file.
-
-2002-12-30 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h (E_MIPS_ARCH_32R2): New define.
-
-2002-12-24 Dmitry Diky <diwil@mail.ru>
-
- * common.h: Define msp430 machine numbers.
- * msp430.h: New file. Define msp430 relocs.
-
-2002-12-20 DJ Delorie <dj@redhat.com>
-
- * xstormy16.h: Add XSTORMY16_12.
-
-2002-12-16 Andrew MacLeod <amacleod@redhat.com>
-
- * xstormy16.h (START_RELOC_NUMBERS) Add relocation numbers
- for R_XSTORMY16_LO16 and R_XSTORMY16_HI16.
-
-2002-12-10 James Cownie <jcownie@etnus.com>
-
- * dwarf2.h (DW_TAG_upc_shared_type, DW_TAG_upc_strict_type,
- DW_TAG_upc_relaxed_type, DW_AT_upc_threads_scaled, DW_LANG_Upc):
- Define.
-
-2002-12-01 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11.h (EF_M68HC12_MACH, EF_M68HCS12_MACH): Define.
- (EF_M68HC11_MACH_MASK, EF_M68HC11_MACH): Define.
- (EF_M68HC11_MERGE_MACH, EF_M68HC11_CAN_MERGE_MACH): Define.
-
-2002-11-30 Alan Modra <amodra@bigpond.net.au>
-
- * mmix.h: Replace boolean with bfd_boolean.
- * sh.h: Likewise.
-
-2002-11-28 Alan Modra <amodra@bigpond.net.au>
-
- * internal.h (elf32_internal_ehdr, Elf32_Internal_Ehdr,
- elf64_internal_ehdr, Elf64_Internal_Ehdr, elf32_internal_phdr,
- Elf32_Internal_Phdr, elf64_internal_phdr, Elf64_Internal_Phdr,
- elf32_internal_shdr, Elf32_Internal_Shdr, elf64_internal_shdr,
- Elf64_Internal_Shdr, elf32_internal_sym, elf64_internal_sym,
- Elf32_Internal_Sym, Elf64_Internal_Sym, Elf32_Internal_Note,
- elf32_internal_note, elf32_internal_rel, Elf32_Internal_Rel,
- elf64_internal_rel, Elf64_Internal_Rel, elf32_internal_rela,
- elf64_internal_rela, Elf32_Internal_Rela, Elf64_Internal_Rela,
- elf32_internal_dyn, elf64_internal_dyn, Elf32_Internal_Dyn,
- Elf64_Internal_Dyn, elf32_internal_verdef, elf64_internal_verdef,
- elf32_internal_verdaux, elf64_internal_verdaux, elf32_internal_verneed,
- elf64_internal_verneed, elf32_internal_vernaux, elf64_internal_vernaux,
- elf32_internal_versym, elf64_internal_versym, Elf32_Internal_Verdef,
- Elf64_Internal_Verdef, Elf32_Internal_Verdaux, Elf64_Internal_Verdaux,
- Elf32_Internal_Verneed, Elf64_Internal_Verneed, Elf32_Internal_Vernaux,
- Elf64_Internal_Vernaux, Elf32_Internal_Versym, Elf64_Internal_Versym,
- Elf32_Internal_Syminfo, Elf64_Internal_Syminfo): Delete.
- (Elf_Internal_Rel): Delete.
-
-2002-10-11 Kaz Kojima <kkojima@rr.iij4u.or.jp>
-
- * sh.h: Add SH TLS relocs.
-
-2002-09-30 Gavin Romig-Koch <gavin@redhat.com>
- Ken Raeburn <raeburn@cygnus.com>
- Aldy Hernandez <aldyh@redhat.com>
- Eric Christopher <echristo@redhat.com>
- Richard Sandiford <rsandifo@redhat.com>
-
- * mips.h (E_MIPS_MACH_4120, E_MIPS_MACH_5400, E_MIPS_MACH_5500): New.
-
-2002-09-12 Roland McGrath <roland@redhat.com>
-
- * dwarf2.h: Updates from GCC version of thie file:
- (enum dwarf_location_atom): DW_OP_calli -> DW_OP_call_ref.
- Add DW_OP_GNU_push_tls_address.
- (DW_OP_lo_user): Change to 0xe0.
-
-2002-08-28 Catherine Moore <clm@redhat.com>
-
- * elf/v850.h (R_V850_LONGCALL, R_V850_ALIGN,
- R_V850_LONGJUMP): New relocations.
-
-2002-08-15 Alan Modra <amodra@bigpond.net.au>
-
- * i370.h: Define relocs using reloc-macros.h.
-
-2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11.h (E_M68HC12_BANKS, E_M68HC11_I32, E_M68HC11_F64,
- EF_M68HC11_ABI): Define for ABI specification.
- (STO_M68HC12_FAR, STO_M68HC12_INTERRUPT): Symbol flags for
- linker and debugger.
- (R_M68HC11_24, R_M68HC11_LO16, R_M68HC11_PAGE): New relocs.
- (R_M68HC11_RL_JUMP, R_M68HC11_RL_GROUP): New reloc for linker
- relaxation.
-
-2002-07-15 Denis Chertykov <denisc@overta.ru>
- Frank Ch. Eigler <fche@redhat.com>
- Ben Elliston <bje@redhat.com>
- Alan Lehotsky <alehotsky@cygnus.com>
- John Healy <jhealy@redhat.com>
- Graham Stott <grahams@redhat.com>
- Jeff Johnston <jjohnstn@redhat.com>
-
- * common.h (EM_IP2K): New macro.
- (EM_IP2K_OLD): New macro.
- * ip2k.h: New file.
-
-2002-07-01 Matt Thomas <matt@3am-software.com>
-
- * vax.h: Rename EF_* to EF_VAX_*.
-
-2002-06-18 Dave Brolley <brolley@redhat.com>
-
- From Catherine Moore, Michael Meissner, Dave Brolley:
- * common.h (EM_CYGNUS_FRV): New macro.
- * frv.h: New file.
-
-2002-06-06 Lars Brinkhoff <lars@nocrew.org>
-
- * common.h: Change registry@sco.com to registry@caldera.com.
- (EM_PDP10, EM_PDP11): Define.
-
-2002-06-04 Jason Thorpe <thorpej@wasabisystems.com>
-
- * sh.h (_bfd_sh64_crange_qsort_cmpb, _bfd_sh64_crange_qsort_cmpl)
- (_bfd_sh64_crange_bsearch_cmpb, _bfd_sh64_crange_bsearch_cmpl): New
- prototypes.
-
-2002-06-01 Richard Henderson <rth@redhat.com>
-
- * alpha.h (LITUSE_ALPHA_ADDR, LITUSE_ALPHA_BASE, LITUSE_ALPHA_BYTOFF,
- LITUSE_ALPHA_JSR, LITUSE_ALPHA_TLSGD, LITUSE_ALPHA_TLSLDM): New.
-
-2002-05-30 Richard Henderson <rth@redhat.com>
-
- * alpha.h (R_ALPHA_TLSGD, R_ALPHA_TLSLDM, R_ALPHA_DTPMOD64,
- R_ALPHA_GOTDTPREL, R_ALPHA_DTPREL64, R_ALPHA_DTPRELHI,
- R_ALPHA_DTPRELLO, R_ALPHA_DTPREL16, R_ALPHA_GOTTPREL, R_ALPHA_TPREL64,
- R_ALPHA_TPRELHI, R_ALPHA_TPRELLO, R_ALPHA_TPREL16): New.
-
-2002-05-29 Matt Thomas <matt@3am-software.com>
-
- * vax.h: New file
-
-2002-05-28 Kuang Hwa Lin <kuang@sbcglobal.net>
-
- * common.h (EM_DLX): Define.
- * dlx.h: New file.
-
-2002-05-08 Jason Thorpe <thorpej@wasabisystems.com>
-
- * common.h (NT_GNU_ABI_TAG): Define.
- (GNU_ABI_TAG_LINUX): Define.
- (GNU_ABI_TAG_HURD): Define.
- (GNU_ABI_TAG_SOLARIS): Define.
- (NT_NETBSD_IDENT): Define.
- (NT_FREEBSD_ABI_TAG): Define.
-
-2002-04-24 Elena Zannoni <ezannoni@redhat.com>
-
- * dwarf2.h: Add DW_AT_GNU_vector.
-
-2002-02-13 Matt Fredette <fredette@netbsd.org>
-
- * m68k.h (EF_M68000): Define.
-
-2002-02-12 Alan Modra <amodra@bigpond.net.au>
-
- * ppc.h (DT_PPC64_OPD, DT_PPC64_OPDSZ): Define.
-
-2002-02-09 Richard Henderson <rth@redhat.com>
-
- * alpha.h (R_ALPHA_BRSGP): New.
-
-2002-02-08 Alexandre Oliva <aoliva@redhat.com>
-
- Contribute sh64-elf.
- 2002-01-23 Alexandre Oliva <aoliva@redhat.com>
- * sh.h (R_SH_GOTPLT32, R_SH_GOT_LOW16, R_SH_GOT_MEDLOW16,
- R_SH_GOT_MEDHI16, R_SH_GOT_HI16, R_SH_GOTPLT_LOW16,
- R_SH_GOTPLT_MEDLOW16, R_SH_GOTPLT_MEDHI16, R_SH_GOTPLT_HI16,
- R_SH_PLT_LOW16, R_SH_PLT_MEDLOW16, R_SH_PLT_MEDHI16,
- R_SH_PLT_HI16, R_SH_GOTOFF_LOW16, R_SH_GOTOFF_MEDLOW16,
- R_SH_GOTOFF_MEDHI16, R_SH_GOTOFF_HI16, R_SH_GOTPC_LOW16,
- R_SH_GOTPC_MEDLOW16, R_SH_GOTPC_MEDHI16, R_SH_GOTPC_HI16,
- R_SH_GOT10BY4, R_SH_GOTPLT10BY4, R_SH_GOT10BY8,
- R_SH_GOTPLT10BY8, R_SH_COPY64, R_SH_GLOB_DAT64, R_SH_JMP_SLOT64,
- R_SH_RELATIVE64): New relocs.
- (R_SH_FIRST_INVALID_RELOC_4): Adjust.
- 2001-05-16 Alexandre Oliva <aoliva@redhat.com>
- * sh.h: Renumbered and renamed some SH5 relocations to match
- official numbers and names; moved unmaching ones to the range
- 0xf2-0xff.
- 2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh.h (sh64_get_contents_type): Declare.
- (sh64_address_is_shmedia): Likewise.
- 2000-12-30 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh.h (sh64_elf_crange): New type.
- (struct sh64_section_data): New.
- (sh64_elf_section_data): New macro.
- (EF_SH5): Rename back from EF_SH64.
- 2000-12-18 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh.h (SHF_SH5_ISA32_MIXED, SHT_SH5_CR_SORTED,
- SH64_CRANGES_SECTION_NAME, SH64_CRANGE_SIZE,
- SH64_CRANGE_CR_ADDR_OFFSET, SH64_CRANGE_CR_SIZE_OFFSET,
- SH64_CRANGE_CR_TYPE_OFFSET): New macros.
- 2000-12-12 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh.h (EF_SH64): Don't define EF_SH64_ABI64.
- 2000-11-27 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh.h (EF_SH64_32BIT_ABI, EF_SH64_64BIT_ABI): Delete.
- (EF_SH64_ABI64): New.
- 2000-11-23 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh.h (EF_SH64): Rename from EF_SH5.
- (EF_SH64_32BIT_ABI): New.
- (EF_SH64_64BIT_ABI): New.
- (R_SH_PT_16, R_SH_SHMEDIA_CODE
- R_SH_IMMU5, R_SH_IMMS6, R_SH_IMMU6, R_SH_IMMS10, R_SH_IMMS10BY2,
- R_SH_IMMS10BY4, R_SH_IMMS10BY8, R_SH_IMMS16, R_SH_IMMU16,
- R_SH_IMM_LOW16, R_SH_IMM_LOW16_PCREL, R_SH_IMM_MEDLOW16,
- R_SH_IMM_MEDLOW16_PCREL, R_SH_IMM_MEDHI16, R_SH_IMM_MEDHI16_PCREL,
- R_SH_IMM_HI16, R_SH_IMM_HI16_PCREL, R_SH_64, R_SH_64_PCREL): New
- relocs.
- 2000-09-01 Ben Elliston <bje@redhat.com>
- * sh.h (EF_SH5): Define.
-
-2002-02-01 Hans-Peter Nilsson <hp@bitrange.com>
-
- * mmix.h: Tweak comments.
- (MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME): New.
- [BFD_ARCH_SIZE] (_bfd_mmix_prepare_linker_allocated_gregs,
- _bfd_mmix_finalize_linker_allocated_gregs,
- _bfd_mmix_check_all_relocs): Provide prototypes.
-
-2002-01-31 Ivan Guzvinec <ivang@opencores.org>
-
- * or32.h: New file.
- * common.h: Add support for or32 targets.
-
-2002-01-28 Jason Merrill <jason@redhat.com>
-
- * dwarf2.h: Sync with gcc version.
-
-2002-01-16 Alan Modra <amodra@bigpond.net.au>
-
- * ppc.h (DT_PPC64_GLINK): Define.
-
-2002-01-15 Richard Earnshaw <rearnsha@arm.com>
-
- * arm.h (F_VFP_FLOAT, EF_ARM_VFP_FLOAT): Define.
-
-2002-01-09 Jason Thorpe <thorpej@wasabisystems.com>
-
- * common.h: Update copyright years.
- (NT_NETBSDCORE_PROCINFO): Define.
- (NT_NETBSDCORE_FIRSTMACH): Define.
-
-2002-01-06 Steve Ellcey <sje@cup.hp.com>
-
- * ia64.h (ELF_STRING_ia64_unwind_hdr): New Macro for HP-UX.
- (SHT_IA_64_HP_OPT_ANOT): Ditto
- (PT_IA_64_HP_OPT_ANOT): Ditto
- (PT_IA_64_HP_HSL_ANOT): Ditto
- (PT_IA_64_HP_STACK): Ditto
- (SHN_IA_64_ANSI_COMMON): Ditto
-
-2001-12-17 Alan Modra <amodra@bigpond.net.au>
-
- * external.h (Elf_External_Sym_Shndx): Declare.
- * internal.h (struct elf_internal_sym <st_shndx>): Make it an
- unsigned int.
- * common.h (SHN_BAD): Define.
-
-2001-12-13 Jakub Jelinek <jakub@redhat.com>
-
- * elf/common.h (PT_GNU_EH_FRAME): Define.
-
-2001-12-11 Alan Modra <amodra@bigpond.net.au>
-
- * common.h (SHN_XINDEX): Comment typo fix.
- * internal.h (Elf_Internal_Ehdr): Change existing "unsigned short"
- size, count and index fields to "unsigned int".
-
-2001-12-07 Geoffrey Keating <geoffk@redhat.com>
- Richard Henderson <rth@redhat.com>
-
- * common.h (EM_XSTORMY16): Define.
- * xstormy16.h: New file.
-
-2001-11-15 Alan Modra <amodra@bigpond.net.au>
-
- * common.h (NT_ARCH): Define. Remove incorrect comment.
-
-2001-11-11 Geoffrey Keating <geoffk@redhat.com>
-
- * dwarf2.h (dwarf_line_number_ops): Add DWARF 3 opcodes.
-
-2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
-
- * mmix.h: New file.
-
-2001-10-23 Alan Modra <amodra@bigpond.net.au>
-
- * internal.h: White space changes to keep lines under 80 chars.
-
-2001-10-16 Jeff Holcomb <jeffh@redhat.com>
-
- * internal.h (elf_internal_shdr): Make contents a unsigned char *.
-
-2001-09-18 Alan Modra <amodra@bigpond.net.au>
-
- * internal.h (elf_internal_rela): Make r_addend a bfd_vma.
-
-2001-09-13 Alexandre Oliva <aoliva@redhat.com>
-
- * common.h (EM_OPENRISC_OLD): Renamed the old EM_OPENRISC entry.
-
-2001-09-12 Alexandre Oliva <aoliva@redhat.com>
-
- * common.h (EM_AVR_OLD): Renamed from...
- (EM_AVR): this, redefined as in the current ELF standard.
- (EM_PJ_OLD): Renamed from...
- (EM_PJ): this, redefined as in the current ELF standard.
- (EM_R30, EM_D10V, EM_D30V, EM_V850, EM_M32R, EM_MN10300,
- EM_MN10200, EM_OPENRISC, EM_ARC_A5, EM_XTENSA): Defined as in
- the current ELF standard.
- (EM_CYGNUS_ARC): Removed, unused for a long time.
-
-2001-09-04 Richard Henderson <rth@redhat.com>
-
- * alpha.h (R_ALPHA_OP*, R_ALPHA_IMMED*, R_ALPHA_GPVALUE): Remove.
- (R_ALPHA_GPREL16): Rename from R_ALPHA_IMMED_GP_16.
-
-2001-08-30 Eric Christopher <echristo@redhat.com>
-
- * mips.h: Remove E_MIPS_MACH_MIPS32_4K.
-
-2001-08-29 Jeff Law <law@redhat.com>
-
- * h8.h (EF_H8_MACH): New mask for encoded machine type.
- (E_H8_MACH_H8300, E_H8_MACH_H8300H, E_H8_MACH_H8300S): New
- machine types.
-
-2001-08-26 J"orn Rennecke <amylaar@redhat.com>
-
- * h8.h: New file.
-
-2001-08-27 Staffan Ulfberg <staffanu@swox.se>
-
- * ppc.h: Add relocs from the 64-bit PowerPC ELF ABI revision 1.2.
-
-2001-06-30 Daniel Berlin <dan@cgsoftware.com>
-
- * dwarf2.h: Remerge with gcc version,
- including all new DWARF 2.1 extensions.
-
-2001-06-29 James Cownie <jcownie@etnus.com>
-
- * dwarf2.h: Add DWARF 2.1 attribues.
-
-2001-06-15 Per Bothner <per@bothner.com>
-
- * dwarf2.h: Partial merge with gcc version.
- (enum dwarf_descrim_list): Fix typo -> dwarf_discrim_list.
- (DW_LANG_Java): Use value from dwarf 2.1 draft (also used in gcc).
-
-2001-05-15 Ralf Baechle <ralf@gnu.org>
-
- * common.h: Remove definition of EM_MIPS_RS4_BE. The constant was
- never in active use and is used otherwise by the ABI.
-
-2001-05-11 Jakub Jelinek <jakub@redhat.com>
-
- * ia64.h (ELF_STRING_ia64_unwind_once): Define.
- (ELF_STRING_ia64_unwind_info_once): Define.
-
-2001-05-07 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * external.h: Fix typo.
- * mips.h: Add/Extend many comments with reference to the MIPS ELF64
- spec v. 2.4, available at e.g.
- ftp://oss.sgi.com/pub/linux/mips/doc/ABI/ELF64.ps.
- (EF_MIPS_UCODE): Define.
- (EF_MIPS_OPTIONS_FIRST): Define.
- (EF_MIPS_ARCH_ASE): Define.
- (EF_MIPS_ARCH_ASE_MDMX): Define.
- (EF_MIPS_ARCH_ASE_M16): Define.
- (SHF_MIPS_ADDR): Renamed SHF_MIPS_ADDR32.
- (SHF_MIPS_STRING): Renamed SHF_MIPS_ADDR64.
- (SHF_MIPS_NODUPES): Define.
- (ELF64_MIPS_R_SSYM): New MIPS ELF 64 relocation info access macro.
- (ELF64_MIPS_R_TYPE3): Likewise.
- (ELF64_MIPS_R_TYPE2): Likewise.
- (ELF64_MIPS_R_TYPE): Likewise.
- (OHW_R10KLDL): Define.
-
-2001-04-24 Todd Fries <todd@fries.net>
-
- * sparc.h: Fix typo.
-
-2001-04-20 Johan Rydberg <jrydberg@opencores.org>
-
- * openrisc.h: New file.
- * common.h (EM_OPENRISC): New constant.
-
-2001-04-23 Bo Thorsen <bo@suse.de>
-
- * x86-64.h: Add vtable support.
-
-2001-03-23 Nick Clifton <nickc@redhat.com>
-
- * mips.h: Remove extraneous whitespace.
-
-2001-03-22 Hans-Peter Nilsson <hp@axis.com>
-
- * cris.h: Add leading comment about PC-relative location.
- (R_CRIS_COPY, R_CRIS_GLOB_DAT, R_CRIS_JUMP_SLOT, R_CRIS_RELATIVE,
- R_CRIS_16_GOT, R_CRIS_32_GOT, R_CRIS_16_GOTPLT, R_CRIS_32_GOTPLT,
- R_CRIS_32_GOTREL, R_CRIS_32_PLT_GOTREL, R_CRIS_32_PLT_PCREL):
- New relocs.
-
-2001-02-27 Philip Blundell <pb@futuretv.com>
-
- * arm.h: Add new definitions from ARM document SWS ESPC 0003 B-01.
- (EF_PIC, et al.): Rename to EF_ARM_xx.
-
-2001-02-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * common.h: Add linux target for S/390.
- * s390.h: New file.
-
-2001-01-11 Peter Targett <peter.targett@arccores.com>
-
- * arc.h (E_ARC_MACH_ARC5, E_ARC_MACH_ARC6, E_ARC_MACH_ARC7,
- E_ARC_MACH_ARC8): New definitions for cpu types.
-
- * common.h (EM_ARC): Change comment.
-
-2000-12-12 Nick Clifton <nickc@redhat.com>
-
- * mips.h: Fix formatting.
-
-2000-12-11 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (DT_HP_*): Define relative to OLD_DT_LOOS for hpux
- compatibility.
-
-2000-10-16 Chris Demetriou <cgd@sibyte.com>
-
- * mips.h (E_MIPS_ARCH_32): New constant.
- (E_MIPS_MACH_MIPS32, E_MIPS_MACH_MIPS32_4K): Replace the
- former with the latter.
-
- * mips.h (E_MIPS_ARCH_5, E_MIPS_ARCH_64): New definitions.
-
- * mips.h (E_MIPS_MACH_SB1): New constant.
-
-2000-11-30 Jan Hubicka <jh@suse.cz>
-
- * common.h (EM_X86_64): New macro.
- * x86-64.h: New file.
-
-2000-11-27 Hans-Peter Nilsson <hp@axis.com>
-
- * common.h (e_machine numbers): Clarify comments to describe how
- EM_* constants are assigned. Move EM_PJ from official section to
- ad-hoc section.
- (EM_CRIS): Correct comment to match official description.
- (EM_MMIX): Ditto.
-
-2000-11-22 Nick Clifton <nickc@redhat.com>
-
- * common.h (EM_JAVELIN): New machine number.
- (EM_FIREPATH): New machine number.
- (EM_ZSP): New machine number.
- (EM_MMIX): New machine number.
- (EM_HUANY): New machine number.
- (EM_PRISM): New machine number.
- (SHT_GROUP): New section type.
- (SHT_SYMTAB_SHNDX): New section type.
- (SHF_GROUP): New section flag.
- (SHN_XINDEX): New section index.
- (GRP_COMDAT): New section group flag.
-
-2000-11-20 H.J. Lu <hjl@gnu.org>
-
- * common.h (ELFOSABI_MONTEREY): Renamed to ...
- (ELFOSABI_AIX): This.
-
-2000-11-16 Richard Henderson <rth@redhat.com>
-
- Update relocations per August psABI docs.
- * ia64.h (R_IA64_SEGBASE): Remove.
- (R_IA64_LTV*): Renumber to 0x74 to 0x77.
- (R_IA64_EPLTMSB, R_IA64_EPLTLSB): Remove.
- (R_IA64_TPREL14, R_IA64_TPREL64I): New.
- (R_IA64_DTPMOD*): New.
- (R_IA64_DTPREL*): New.
-
-2000-09-29 Hans-Peter Nilsson <hp@axis.com>
-
- * cris.h (EF_CRIS_UNDERSCORE): New.
-
-2000-09-27 Alan Modra <alan@linuxcare.com.au>
-
- * hppa.h (R_PARISC_DIR14F): Add.
-
-2000-09-14 Alexandre Oliva <aoliva@redhat.com>
-
- * sh.h (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT,
- R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): Change
- numbers to the range from 160 to 167.
- (R_SH_FIRST_INVALID_RELOC): Adjust.
- (R_SH_FIRST_INVALID_RELOC_2, R_SH_LAST_INVALID_RELOC_2):
- New relocs to fill in the gap.
-
-2000-09-13 Anders Norlander <anorland@acc.umu.se>
-
- * mips.h (E_MIPS_MACH_4K): New define.
-
-2000-09-05 Alan Modra <alan@linuxcare.com.au>
-
- * hppa.h: Fix a comment.
- (R_PARISC_PCREL12F): Define.
- (R_PARISC_GNU_VTENTRY): Define.
- (R_PARISC_GNU_VTINHERIT): Define.
-
-2000-09-01 Alexandre Oliva <aoliva@redhat.com>
-
- * sh.h (R_SH_GOT32, R_SH_PLT32, R_SH_COPY, R_SH_GLOB_DAT,
- R_SH_JMP_SLOT, R_SH_RELATIVE, R_SH_GOTOFF, R_SH_GOTPC): New relocs.
- (R_SH_FIRST_INVALID_RELOC): Adjust.
-
-2000-08-14 Jim Wilson <wilson@cygnus.com>
-
- * ia64.h (EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP,
- EF_IA_64_NOFUNCDESC_CONS_GP, EF_IA_64_ABSOLUTE): Define.
-
-2000-08-07 Nick Clifton <nickc@cygnus.com>
-
- * ppc.h: Remove spurious CYGNUS LOCAL comments.
- * v850.h: Likewise.
-
-2000-07-22 Jason Eckhardt <jle@cygnus.com>
-
- * i860.h: New file.
- (elf_i860_reloc_type): Defined ELF32 i860 relocations.
-
-2000-07-20 Hans-Peter Nilsson <hp@axis.com>
-
- common.h (EM_CRIS): New machine number.
- cris.h: New file.
-
-2000-07-19 H.J. Lu <hjl@gnu.org>
-
- * common.h (DF_1_NODEFLIB): Renamed from DF_1_NODEPLIB.
-
-2000-07-19 H.J. Lu <hjl@gnu.org>
-
- * common.h (DT_CHECKSUM): Set to 0x6ffffdf8.
- (DTF_1_CONFEXP): It is 0x00000002 as suspected.
-
-2000-07-19 H.J. Lu <hjl@gnu.org>
-
- * common.h (DT_FEATURE): Renamed from DT_FEATURE_1.
- (DT_CONFIG): New. From Solaris 8.
- (DT_DEPAUDIT): Likewise.
- (DT_AUDIT): Likewise.
- (DT_PLTPAD): Likewise.
- (DT_MOVETAB): Likewise.
- (DF_1_NODEPLIB): Likewise.
- (DF_1_NODUMP): Likewise.
- (DF_1_CONLFAT): Likewise.
- (DT_CHECKSUM): Likewise. FIXME. Check the value on Solaris 8.
- (DTF_1_CONFEXP): Likewise.
-
-2000-07-18 H.J. Lu <hjl@gnu.org>
-
- * common.h (DT_FLAGS_1): Renamed from DT_1_FLAGS.
-
-2000-07-12 Alan Modra <alan@linuxcare.com.au>
-
- * internal.h (struct elf_internal_sym): Update comment for st_other.
-
-2000-07-10 Alan Modra <alan@linuxcare.com.au>
-
- * hppa.h: Add comments to all the relocs.
-
-2000-06-26 Marek Michalkiewicz <marekm@linux.org.pl>
-
- * avr.h (E_AVR_MACH_AVR5): Define.
-
-2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
-
- * m68hc11.h: New file, definitions for the Motorola 68hc11.
-
-2000-06-06 Alan Modra <alan@linuxcare.com.au>
-
- * reloc-macros.h (START_RELOC_NUMBERS): Don't define initial dummy
- -1 valued enum.
- (RELOC_NUMBER, FAKE_RELOC, EMPTY_RELOC): Append rather than
- prepend comma.
- (END_RELOC_NUMBERS): Give macro an arg to define as last enum.
-
- * alpha.h (R_ALPHA_max): Define via END_RELOC_NUMBERS rather than
- with EMPTY_RELOC.
- * arc.h (R_ARC_max): Likewise.
- * avr.h (R_AVR_max): Likewise.
- * fr30.h (R_FR30_max): Likewise.
- * hppa.h (R_PARISC_UNIMPLEMENTED): Likewise.
- * i960.h (R_960_max): Likewise.
- * m32r.h (R_M32R_max): Likewise.
- * m68k.h (R_68K_max): Likewise.
- * mcore.h (R_MCORE_max): Likewise.
- * mn10300.h (R_MN10300_MAX): Likewise.
- * pj.h (R_PJ_max): Likewise.
- * ppc.h (R_PPC_max): Likewise.
- * sh.h (R_SH_max): Likewise.
- * sparc.h (R_SPARC_max): Likewise.
- * v850.h (R_V850_max): Likewise.
-
- * arm.h (R_ARM_max): Define via END_RELOC_NUMBERS.
- * d10v.h (R_D10V_max): Likewise.
- * d30v.h (R_D30V_max): Likewise.
- * ia64.h (R_IA64_max): Likewise.
- * mips.h (R_MIPS_maxext): Likewise.
- * mn10200.h (R_MN10200_max): Likewise.
-
- * i386.h (R_386_max): Remove old RELOC_NUMBER definition, and
- define via END_RELOC_NUMBERS.
-
-2000-06-03 Alan Modra <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.
-
-2000-04-21 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.
- * arm.h: Merge in definitions of old reloc numbers from
- arm-oabi.h.
-
-2000-04-06 Nick Clifton <nickc@cygnus.com>
-
- * arm.h (EF_ARM_SYMSARESORTED): Define.
- (EF_ARM_EABIMASK): Define.
- (EF_ARM_EABI_VERSION): Define.
- (EF_ARM_EABI_UNKNOWN): Define.
- (EF_ARM_EABI_VER1): Define.
- (PF_ARM_PI): Define.
- (PF_ARM_ABS): Define.
-
-2000-04-05 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.h (R_SH_LOOP_START, R_SH_LOOP_END): New RELOC_NUMBERs.
-
-2000-03-27 Denis Chertykov <denisc@overta.ru>
-
- * avr.h: New file. AVR ELF support for BFD.
- * common.h: Add AVR magic number.
-
-2000-03-10 Geoffrey Keating <geoffk@cygnus.com>
-
- * mips.h: Add R_MIPS_GNU_REL_HI16, R_MIPS_GNU_REL_LO16,
- R_MIPS_GNU_REL16_S2, R_MIPS_PC64 and R_MIPS_PC32 relocation
- numbers.
-
-2000-02-23 Linas Vepstas <linas@linas.org>
-
- * i370.h: New file.
-
-2000-02-22 Nick Clifton <nickc@cygnus.com>
-
- * common.h (ELF_ST_OTHER): Remove definition.
- (ELF32_ST_OTHER): Remove definition.
- (ELF64_ST_OTHER): Remove definition.
-
-2000-02-22 H.J. Lu <hjl@gnu.org>
-
- * common.h (ELFOSABI_LINUX): Define.
-
-2000-02-17 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.h: (EF_SH_MACH_MASK, EF_SH_UNKNOWN, EF_SH1, EF_SH2): New macros.
- (EF_SH3, EF_SH_HAS_DSP, EF_SH_DSP, EF_SH3_DSP): Likewise.
- (EF_SH_HAS_FP, EF_SH3E, EF_SH4, EF_SH_MERGE_MACH): Likewise.
-
-2000-02-03 H.J. Lu <hjl@gnu.org>
-
- * arm-oabi.h: Duplicate changes made to arm.h on Jan. 27,
- 2000 by Thomas de Lellis <tdel@windriver.com>.
-
-2000-01-27 Thomas de Lellis <tdel@windriver.com>
-
- * arm.h (STT_ARM_TFUNC): Define in terms of STT_LOPROC.
- (STT_ARM_16BIT): New flag. Denotes a label that was defined in
- Thumb block but was does not identify a function.
-
-2000-01-20 Nick Clifton <nickc@cygnus.com>
-
- * common.h (EM_MCORE): Fix spelling of Motorola.
- * mcore.h (EM_MCORE): Fix spelling of Motorola.
-
-2000-01-13 Nick Clifton <nickc@cygnus.com>
-
- * common.h (EM_S370): Change comment - this is now the IBM
- System/370.
- (EM_IA_64): Change comment - this is now the IA-64.
-
-2000-01-11 Nick Clifton <nickc@cygnus.com>
-
- * common.h (DT_ENCODING): Fix definition of this value.
- (DT_LOOS): Fix definition of this value.
- (DT_HIOS): Fix definition of this value.
- (OLD_DT_LOOS): Value of DT_LOOS before Oct 4, 1999 draft
- of ELF spec changed it.
- (OLD_DT_HIOS): Value of DT_HIOS before Oct 4, 1999 draft
- of ELF spec changed it.
-
-2000-01-10 Egor Duda <deo@logos-m.ru>
-
- * common.h (NT_WIN32PSTATUS): Define. (cygwin elf core dumps).
-
-1999-12-28 Nick Clifton <nickc@cygnus.com>
-
- * mips.h (STO_*): Redefine in terms of STV_* values now in
- common.h.
-
-1999-12-27 Nick Clifton <nickc@cygnus.com>
-
- * common.h: Upgrade to match Oct4, 1999 Draft ELF ABI Spec.
- (EM_MIPS_RS3_LE): New machine number.
- (EM_RCE): New machine number.
- (EM_MMA): New machine number.
- (EM_PCP): New machine number.
- (EM_NCPU): New machine number.
- (EM_NDR1): New machine number.
- (EM_STARCORE): New machine number.
- (EM_ME16): New machine number.
- (EM_ST100): New machine number.
- (EM_TINYJ): New machine number.
- (EM_FX66): New machine number.
- (EM_ST9PLUS): New machine number.
- (EM_ST7): New machine number.
- (EM_68HC16): New machine number.
- (EM_68HC11): New machine number.
- (EM_68HC08): New machine number.
- (EM_68HC05): New machine number.
- (EM_SVX): New machine number.
- (EM_VAX): New machine number.
- (PF_MASKOS): Change value.
- (SHT_INIT_ARRAY): New value for sh_type field.
- (SHT_FINI_ARRAY): New value for sh_type field.
- (SHT_PREINIT_ARRAY): New value for sh_type field.
- (SHT_HIUSER): Change value.
- (SHF_MERGE): New valye for sh_flags field.
- (SHF_STRINGS): New valye for sh_flags field.
- (SHF_INFO_LINK): New valye for sh_flags field.
- (SHF_OS_NONCONFORMING): New valye for sh_flags field.
- (SHF_MASKOS): Change value.
- (ELF_ST_VISIBILITY): New macro.
- (ELF_ST_OTHER): New macro.
- (STT_COMMON): New symbol type.
- (STV_DEFAULT): Value for symbol visibility.
- (STV_INTERNAL): Value for symbol visibility.
- (STV_HIDDEN): Value for symbol visibility.
- (STV_PROTECTED): Value for symbol visibility.
- (DT_RUNPATH): New dynamic section tag.
- (DT_FLAGS): New dynamic section tag.
- (DT_ENCODING): New dynamic section tag.
- (DT_PREINIT_ARRAY): New dynamic section tag.
- (DT_PREINIT_ARRAYSZ): New dynamic section tag.
- (DT_LOPROC): New dynamic section tag index.
- (DT_HIPROC): New dynamic section tag index.
- (DF_ORIGIN): Value for dynamic section flag.
- (DF_SYMBOLIC): Value for dynamic section flag.
- (DF_TEXTREL): Value for dynamic section flag.
- (DF_BIND_NOW): Value for dynamic section flag.
-
-1999-12-09 Fred Fish <fnf@cygnus.com>
-
- * i960.h (reloc-macros.h): Include using relative dir elf/.
- * i386.h (reloc-macros.h): Include using relative dir elf/.
- * hppa.h (reloc-macros.h): Include using relative dir elf/.
-
-1999-12-07 Jim Blandy <jimb@cygnus.com>
-
- * common.h (NT_PRXFPREG): New definition.
-
-Wed Dec 1 03:02:15 1999 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (E_MN10300_MACH_AM33): Define.
-
-Mon Oct 11 22:42:37 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (PF_HP_PAGE_SIZE): Define.
- (PF_HP_FAR_SHARED, PF_HP_NEAR_SHARED, PF_HP_CODE): Likewise.
- (PF_HP_MODIFY, PF_HP_LAZYSWAP, PF_HP_SBP): Likewise.
-
-Mon Oct 4 17:42:38 1999 Doug Evans <devans@canuck.cygnus.com>
-
- * m32r.h (E_M32RX_ARCH): Define.
-
-1999-09-15 Ulrich Drepper <drepper@cygnus.com>
-
- * hppa.h: Add DT_HP_GST_SIZE, DT_HP_GST_VERSION, and DT_HP_GST_HASHVAL.
-
-1999-09-04 Steve Chamberlain <sac@pobox.com>
-
- * pj.h: New file.
- * common.h (EM_PJ): Define.
-
-1999-09-02 Ulrich Drepper <drepper@cygnus.com>
-
- * hppa.h: Add HPUX specific symbol type definitions.
-
- * hppa.h: Add HPUX specific dynamic and program header table
- specific definitions.
-
-1999-08-31 Scott Bambrough <scottb@netwinder.org>
-
- * common.h (NT_TASKSTRUCT): Define.
-
-1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
-
- * sparc.h (EF_SPARC_SUN_US3): Define in Cheetah extensions
- flag (as per SCD2.4.1).
-
-1999-07-16 Jakub Jelinek <jj@ultra.linux.cz>
-
- * sparc.h (ELF64_R_TYPE_DATA): Only use ELF64_R_TYPE bits, not
- ELF64_R_SYM bits.
-
-1999-06-21 Philip Blundell <pb@nexus.co.uk>
-
- * arm.h (EF_SOFT_FLOAT, F_SOFT_FLOAT): Define.
-
-1999-07-13 Andreas Schwab <schwab@suse.de>
-
- * m68k.h (EF_CPU32): Move definition inside multiple inclusion
- guard.
-
-1999-07-08 Richard Henderson <rth@cygnus.com>
-
- * sparc.h (ELF64_R_TYPE_DATA): Sign extend the value.
- (ELF64_R_TYPE_INFO): Mask out all but low 24 bits of data.
- (DT_SPARC_PLTFMT): Delete.
- Based on a patch from Jakub Jelinek.
-
-Mon Jun 21 16:36:02 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (elf_hppa_reloc_type): Renamed from elf32_hppa_reloc_type.
-
-1999-06-10 Jakub Jelinek <jj@ultra.linux.cz>
-
- * sparc.h (R_SPARC_max_std): Define.
-
-Wed Jun 9 15:16:34 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h: Update with various changes from newest PA ELF
- specifications.
-
-1999-06-03 Ian Lance Taylor <ian@zembu.com>
-
- * common.h (EM_PPC64): Define.
-
-1999-06-02 Stu Grossman <grossman@babylon-5.cygnus.com>
-
- * dwarf.h: Add LANG_JAVA.
- * dwarf2.h: Add DW_LANG_Java.
-
-1999-05-29 Nick Clifton <nickc@cygnus.com>
-
- * common.h (ELFOSABI_ARM): Define.
-
-1999-05-28 Nick Clifton <nickc@cygnus.com>
-
- * reloc-macros.h: Update comment.
-
-1999-05-28 Ian Lance Taylor <ian@zembu.com>
-
- * i960.h: New file.
-
-1999-05-16 Nick Clifton <nickc@cygnus.com>
-
- * mcore.h (R_MCORE_COPY): Define.
- (R_MCORE_GLOB_DAT): Define.
- (R_MCORE_JUMP_SLOT): Define.
-
-1999-05-15 Nick Clifton <nickc@cygnus.com>
-
- * mcore.h (R_MCORE_RELATIVE): Define.
-
-1999-05-05 Catherine Moore <clm@cygnus.com>
-
- * m68k.h (EF_CPU32): Define.
-
-1999-04-21 Nick Clifton <nickc@cygnus.com>
-
- * reloc-macros.h (START_RELOC_NUMBERS): Prepend an underscore to
- fake reloc entry name (if possible), in order to avoid conflicts
- with typedefs of the same name.
-
-1999-04-16 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips.h (EF_MIPS_32BITMODE): New.
-
-1999-04-08 Nick Clifton <nickc@cygnus.com>
-
- * mcore.h: New header file. Defines for Motorola's MCore
- processor.
-
-1999-04-08 Nick Clifton <nickc@cygnus.com>
-
- * common.h: Add new constants defined in: "System V Application
- Binary Interface - DRAFT - April 29, 1998" found at the web site:
- http://www.sco.com/developer/gabi/contents.html
-
- (EM_MMA): Removed. Replaced with EM_MCORE as Motorolla own this
- value.
-
-1999-03-31 Nick Clifton <nickc@cygnus.com>
-
- * reloc-macros.h: Fixed to not generate an enum with a trailing
- comma.
-
-1999-03-16 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips.h (E_MIPS_MACH_5000): New.
-
-1999-03-10 Ulrich Drepper <drepper@cygnus.com>
-
- * common.h: Add definitions for a few more Solaris ELF extensions.
-
-Thu Feb 18 18:58:26 1999 Ian Lance Taylor <ian@cygnus.com>
-
- * external.h: Only use attribute if __GNUC__ is defined.
-
-1999-02-17 Nick Clifton <nickc@cygnus.com>
-
- Patch submitted by: Scott Bambrough <scottb@corelcomputer.com>
-
- * external.h: struct Elf_External_Versym must be packed on
- ARM. Code uses sizeof(Elf_External_Versym) and assumes it is
- equal to sizeof(char[2]). Reported by Jim Pick <jim@jimpick.com>
-
-1999-02-02 Nick Clifton <nickc@cygnus.com>
-
- * dwarf2.h (DWARF2_External_ARange): New structure.
- (DWARF2_Internal_ARange): New structure.
-
-Mon Feb 1 11:33:56 1999 Catherine Moore <clm@cygnus.com>
-
- * arm.h: Renumber relocs to conform to standard.
- (EF_NEW_ABI): Define.
- (EF_OLD_ABI): Define.
- * arm-oabi.h: New file.
-
-1999-01-28 Nick Clifton <nickc@cygnus.com>
-
- * fr30.h: Add R_FR30_GNU_VT{INHERIT,ENTRY} relocs.
-
-1999-01-27 Nick Clifton <nickc@cygnus.com>
-
- * dwarf2.h: Add typedefs for structures found in dwarf2 sections.
-
-1998-12-16 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips.h (E_MIPS_MACH_4111): New.
-
-1998-12-15 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips.h (EF_MIPS_ABI,E_MIPS_ABI_O32,E_MIPS_ABI_O64,
- E_MIPS_ABI_EABI32,E_MIPS_ABI_EABI64):
-
-1998-12-03 Nick Clifton <nickc@cygnus.com>
-
- * fr30.h: Add R_FR30_48 reloc.
-
-1998-12-02 Ulrich Drepper <drepper@cygnus.com>
-
- * mips.h: Add external data type for conflict section.
-
- * mips.h: Add more LL_* options from Irix 6.5.
-
- * mips.h: Add R_MIPS_JALR and adjust R_MIPS_max appropriately.
-
-Mon Nov 30 15:25:58 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * sh.h (elf_sh_reloc_type): Add R_SH_FIRST_INVALID_RELOC,
- R_SH_LAST_INVALID_RELOC, R_SH_SWITCH8 and R_SH_max.
-
-Tue Nov 10 15:12:28 1998 Nick Clifton <nickc@cygnus.com>
-
- * common.h (EM_CYGNUS_FR30): Reduce to a 16 bit value.
-
-Tue Nov 10 15:17:28 1998 Catherine Moore <clm@cygnus.com>
-
- * d10v.h: Add vtable relocs.
-
-Wed Nov 4 15:56:50 1998 Nick Clifton <nickc@cygnus.com>
-
- * common.h (EM_CYGNUS_FR30): New machine number.
-
- * fr30.h: New file: Definitions for the FR30.
-
-Fri Oct 30 11:54:15 1998 Catherine Moore <clm@cygnus.com>
-
- From Philip Blundell <pb@nexus.co.uk>:
- * arm.h (R_ARM_COPY, et al.): New relocs, used by Linux for PIC.
- (EF_ALIGN8): New flag.
-
-Tue Oct 20 11:19:50 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * common.h (NT_LWPSTATUS): Close comment accidentally left open.
-
-Mon Oct 19 20:24:11 1998 Catherine Moore <clm@cygnus.com>
-
- * sh.h: Add vtable relocs.
-
-Mon Oct 19 01:44:42 1998 Felix Lee <flee@cygnus.com>
-
- * common.h (NT_PSTATUS, NT_FPREGS, NT_PSINFO,
- NT_LWPSTATUS,NT_LWPSINFO): added.
- * internal.h (Elf_Internal_Note): new structure members.
-
-Fri Oct 16 14:11:25 1998 Catherine Moore <clm@cygnus.com>
-
- * m32r.h: Add vtable relocs.
-
-Tue Oct 6 09:22:22 1998 Catherine Moore <clm@cygnus.com>
-
- * sparc.h: Add vtable relocs.
-
-Mon Oct 5 09:39:22 1998 Catherine Moore <clm@cygnus.com>
-
- * v850.h: Add vtable relocs.
-
-Sun Oct 4 21:17:51 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h (R_386_max): Change from 252 to 24.
-
-Mon Sep 21 12:24:44 1998 Catherine Moore <clm@cygnus.com>
-
- * i386.h: Change vtable reloc numbers.
-
-Sun Sep 20 00:54:22 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k.h: Add vtable relocs and R_68K_max.
-
-Tue Sep 15 09:56:49 CDT 1998 Catherine Moore <clm@cygnus.com>
-
- * arm.h: Add vtable relocs.
-
-Mon Aug 31 11:25:27 1998 Catherine Moore <clm@cygnus.com>
-
- * arm.h: Define STT_ARM_TFUNC. Remove ST_THUMB_xxxx
- definitions.
-
-Sat Aug 29 22:25:51 1998 Richard Henderson <rth@cygnus.com>
-
- * i386.h: Add vtable relocs.
-
-1998-08-25 16:42 Ulrich Drepper <drepper@cygnus.com>
-
- * common.h: Add SYMINFO_* macros to access Elf*_Syminfo information.
-
- * external.h: Add Elf_External_Syminfo definition.
-
- * internal.h: Add Elf_Internal_Syminfo, Elf32_Internal_Syminfo,
- and Elf64_Syminfo definitions.
-
-Sun Aug 9 20:26:49 CDT 1998 Catherine Moore <clm@cygnus.com>
-
- * arm.h: Add ST_THUMB definitions.
-
-Wed Aug 5 15:52:35 1998 Nick Clifton <nickc@cygnus.com>
-
- * arm.h: Add ELF header flags to specify compile time optins:
- EF_INTERWORK: New flag.
- EF_APCS_26: New flag.
- EF_APCS_FLOAT: New flag.
- EF_PIC: New flag.
-
-1998-07-31 21:28 Ulrich Drepper <drepper@cygnus.com>
-
- * mips.h: Add missing RHF_* constants.
-
-Fri Jul 31 10:01:40 1998 Catherine Moore <clm@cygnus.com>
-
- * arm.h: Add R_ARM_THM_PC9 relocation.
-
-1998-07-30 16:25 Ulrich Drepper <drepper@cygnus.com>
-
- * common.h: Add new DT_* entries and there flag macros from Solaris.
-
-Tue Jul 28 18:14:07 1998 Stan Cox <scox@equinox.cygnus.com>
-
- * sparc.h: (R_SPARC_REV32): Added for little endian data e.g. sparc 86x.
-
-Fri Jul 24 11:22:06 1998 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h: Add R_MN10300_24 relocation.
-
-1998-07-24 Ulrich Drepper <drepper@cygnus.com>
-
- * mips.h: Add MIPS64 relocation names and values.
-
-Wed Jul 22 19:29:00 Catherine Moore <clm@cygnus.com>
-
- * arm.h: Rename relocations.
-
-1998-07-22 Ulrich Drepper <drepper@cygnus.com>
-
- * ppc.h: Define enum as elf_ppc_reloc_type.
-
-Wed Jul 22 16:22:11 1998 Nick Clifton <nickc@cygnus.com>
-
- * reloc-macros.h: New file. Provides relocation macros:
- START_RELOC_NUMBERS, RELOC_NUMBER, FAKE_RELOC, EMPTY_RELOC and
- END_RELOC_NUMBERS used by other elf header files.
-
- * alpha.h: Use reloc-macros.h.
- * arc.h: Use reloc-macros.h.
- * arm.h: Use reloc-macros.h.
- * d10v.h: Use reloc-macros.h.
- * d30v.h: Use reloc-macros.h.
- * hppa.h: Use reloc-macros.h.
- * i386.h: Use reloc-macros.h.
- * m32r.h: Use reloc-macros.h.
- * m68k.h: Use reloc-macros.h.
- * mips.h: Use reloc-macros.h.
- * mn10200.h: Use reloc-macros.h.
- * mn10300.h: Use reloc-macros.h.
- * ppc.h: Use reloc-macros.h.
- * sh.h: Use reloc-macros.h.
- * sparc.h: Use reloc-macros.h.
- * v850.h: Use reloc-macros.h.
-
-1998-07-22 13:07 Ulrich Drepper <drepper@cygnus.com>
-
- * mn10300.h: Rewrite relocation definition using macros.
- * mips.h: Likewise.
- * ppc.h: Likewise.
- * alpha.h: Likewise.
- * arm.h: Likewise.
- * d10v.h: Likewise.
- * d30v.h: Likewise.
- * m32r.h: Likewise.
- * m68k.h: Likewise.
- * mn10200.h: Likewise.
- * sh.h: Likewise.
- * sparc.h: Likewise.
-
-1998-07-21 13:07 Ulrich Drepper <drepper@cygnus.com>
-
- * arm.h: New file.
- * d10v.h: New file.
- * d30v.h: New file.
- * i386.h: New file.
- * m68k.h: New file.
- * mn10200.h: New file.
- * sh.h: New file.
-
- * mips.h: Add R_MIPS_* and SHT_MIPS_* entries.
-
- * mn10300.h: Add R_MN10300_* entries.
-
- * ppc.h: Add R_PPC_* entries.
-
-1998-07-20 07:11 Ulrich Drepper <drepper@cygnus.com>
-
- * mips.h: Add ODK_*, OEX_*, OPAD_*, OHW_*, and OGP_* constants.
- Define Elf32_External_Lib.
-
-1998-07-19 15:24 Ulrich Drepper <drepper@cygnus.com>
-
- * mips.h (PT_MIPS_OPTIONS): New symbol.
- Add lots of DT_MIPS_* symbols.
-
-Fri Jun 26 10:46:35 1998 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h: New file.
-
-Thu Jun 18 19:27:56 1998 Nick Clifton <nickc@cygnus.com>
-
- * common.h (EM_960, EM_V800, EM_FR20, EM_RH32, EM_MMA,
- EM_OLD_ALPHA): Add these constants.
-
-Thu Jun 11 17:59:01 1998 Nick Clifton <nickc@cygnus.com>
-
- * common.h (EM_486, EM_S370): Add these constants.
-
-Tue Jun 9 09:35:29 1998 Nick Clifton <nickc@cygnus.com>
-
- * common.h (EM_ARM): Add this constant.
-
-Wed May 6 09:45:30 1998 Gavin Koch <gavin@cygnus.com>
-
- * mips.h (EF_MIPS_MACH,E_MIPS_MACH_*): Added.
-
-Sat Apr 25 18:35:06 1998 Richard Henderson <rth@cygnus.com>
-
- * alpha.h (STO_ALPHA_NOPV, STO_ALPHA_STD_GPLOAD): New.
-
-Wed Apr 15 15:42:45 1998 Richard Henderson <rth@cygnus.com>
-
- * common.h (EM_SPARC64): Move and rename to EM_OLD_SPARCV9.
- (EM_SPARCV9): New. This is the official ABI name and number.
-
-Sat Feb 28 17:04:41 1998 Richard Henderson <rth@cygnus.com>
-
- * alpha.h (EF_ALPHA_32BIT, EF_ALPHA_CANRELAX): New.
-
-Mon Dec 15 15:07:49 1997 Nick Clifton <nickc@cygnus.com>
-
- * m32r.h (EF_M32R_ARCH, E_M32R_ARCH): New flags to
- specify machine architecture.
-
-Fri Dec 5 11:20:08 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h: New constants: SHN_V850_SCOMMON, SHN_V850_TCOMMON,
- SHN_V850_ZCOMMON, SHT_V850_SCOMMON, SHT_V850_TCOMMON,
- SHT_V850_ZCOMMON to handle v850 common sections.
- enum reloc_type renamed to v850_reloc_type to avoid name
- conflict.
-
-Thu Oct 23 13:55:24 1997 Richard Henderson <rth@cygnus.com>
-
- * sparc.h (enum elf_sparc_reloc_type): Add UA64 & UA16.
-
-Thu Oct 23 00:42:04 1997 Richard Henderson <rth@dot.cygnus.com>
-
- * sparc.h (DT_SPARC_REGISTER): New macro.
- (DT_SPARC_PLTFMT): In support of old sparc64-linux .plts; will
- go away soon.
-
-Tue Sep 30 13:26:58 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc.h (EF_SPARC_HAL_R1, EF_SPARC_EXT_MASK): New macros.
- (EF_SPARCV9_{MM,TSO,PSO,RMO}): New macros.
- (SHN_BEFORE,SHN_AFTER): New macros.
- (SHF_EXCLUDE,SHF_ORDERED): New macros.
- (STT_REGISTER): New macro.
- (R_SPARC_GLOB_JMP): Deleted, but slot reserved.
- (R_SPARC_{DISP64,PLT64,HIX22,LOX10}): New relocations.
- (R_SPARC_{H44,M44,L44,REGISTER}): New relocations.
- (ELF64_R_TYPE_{DATA,ID,INFO}): New macros.
-
-Wed Sep 17 16:41:42 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h: Add R_V850_CALLT_6_7_OFFSET and R_V850_CALLT_16_16_OFFSET.
-
-Tue Sep 16 14:16:17 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h (reloc_type): Add R_V850_TDA_16_16_OFFSET.
-
-Wed Sep 3 15:11:14 1997 Richard Henderson <rth@cygnus.com>
-
- * mips.h: Correct typo in comment.
-
-Wed Sep 3 11:25:57 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h (reloc_type): Remove R_V850_16_PCREL.
-
-Tue Sep 2 17:41:05 1997 Nick Clifton <nickc@cygnus.com>
-
- * common.h: Remove magic number for V850E.
- * common.h: Remove magic number for V850EA.
- * v850.h: Add new flags for e_flags field in elf header.
-
-Mon Aug 25 16:06:47 1997 Nick Clifton <nickc@cygnus.com>
-
- * common.h (EM_CYGNUS_V850E): backend magic number for v850e.
- * common.h (EM_CYGNUS_V850EA): backend magic number for v850ea.
-
-Mon Aug 18 11:05:23 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h (reloc_type): Add 16 bit PC relative relocation.
-
-Fri Aug 15 05:10:09 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * arc.h (enum reloc): Move here from elf32-arc.c.
-
-Fri Aug 8 17:05:29 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * arc.h: New file.
- * common.h (EM_CYGNUS_ARC): Define.
-
-Mon Jun 16 14:46:12 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h (Elf_Internal_Ehdr): Change e_phoff and e_shoff from
- bfd_signed_vma to bfd_size_type, as they are not signed.
-
-Wed Mar 5 15:35:26 1997 Doug Evans <dje@seba.cygnus.com>
-
- * m32r.h (SHF_M32R_CAN_RELAX): Define.
-
-Mon Feb 24 17:49:01 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * external.h: Dump the 32/64 bit specific forms of the version
- structures, and just define them as size independent.
-
- * common.h (VERSYM_HIDDEN, VERSYM_VERSION): Define.
-
-Fri Feb 21 13:00:34 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * m32r.h (enum reloc_type): Add R_M32R_SDA16.
- (SHN_M32R_SCOMMON): Define.
-
-Wed Feb 19 15:35:31 1997 Ian Lance Taylor <ian@cygnus.com>
-
- From Eric Youngdale <eric@andante.jic.com>:
- * external.h, internal.h, common.h: Added new structures and
- definitions for ELF versions.
-
-Tue Feb 18 17:40:36 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * common.h (EM_CYGNUS_D30V): Define.
-
-Mon Jan 27 11:54:44 1997 Doug Evans <dje@seba.cygnus.com>
-
- * m32r.h (enum reloc_type): Add R_M32R_HI16_[SU]LO,R_M32R_LO16.
-
-Fri Jan 3 11:32:51 1997 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * v850.h (V850_OTHER_{TDA_BYTE,ERROR}): New bits for the st_other
- field.
- (SHN_V850_*): Remove v850 specific section indexes, which are not
- needed.
- (enum reloc_type): Move the v850 relocations here from
- elf32-v850.c
-
-Thu Jan 2 19:30:23 1997 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * v850.h: New file, provide V850 specific definitions.
-
-Tue Dec 31 14:44:32 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * common.h (DT_AUXILIARY): Define.
- (DT_FILTER): Define.
-
-Wed Dec 4 05:03:37 1996 Jason Merrill <jason@yorick.cygnus.com>
-
- * dwarf2.h: Update.
-
-Tue Nov 26 10:44:47 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (STO_MIPS16): Define.
-
-Tue Nov 12 15:45:42 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v.h: Remove empty file.
-
-Tue Oct 8 11:31:24 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (EF_MIPS_ABI2): Define.
-
-Thu Oct 3 10:01:40 1996 Jeffrey A Law (law@cygnus.com)
-
- * common.h: Break mn10x00 support into mn10200 and mn10300.
-
-Wed Oct 2 21:26:43 1996 Jeffrey A Law (law@cygnus.com)
-
- * common.h (EM_CYGNUS_MN10x00): Define.
-
-Mon Sep 23 09:18:04 1996 Doug Evans <dje@seba.cygnus.com>
-
- * m32r.h: New file.
-
-Fri Aug 30 17:06:21 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * common.h (EM_SH): Define.
-
-Tue Aug 20 14:47:54 1996 J.T. Conklin <jtc@hippo.cygnus.com>
-
- * common.h (EM_CYGNUS_V850): Define.
-
-Mon Aug 19 10:59:10 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * common.h (EM_CYGNUS_M32R): Define.
-
-Mon Jul 22 18:59:55 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (SHT_MIPS_IFACE, SHT_MIPS_CONTENT): Define.
- (SHT_MIPS_SYMBOL_LIB): Define.
- (SHF_MIPS_MERGE, SHF_MIPS_ADDR32, SHF_MIPS_ADDR64): Define.
- (SHF_MIPS_NOSTRIP, SHF_MIPS_LOCAL, SHF_MIPS_NAMES): Define.
-
-Thu Jul 18 19:12:15 1996 Stan Shebs <shebs@andros.cygnus.com>
-
- * dwarf2.h: New file.
-
-Jul 18 13:20:39 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * common.h (EM_CYGNUS_D10V): Define.
- * d10v.h: New file.
-
-Fri Jun 21 12:33:24 1996 Richard Henderson <rth@tamu.edu>
-
- * alpha.h: New file.
- * common.h (EM_ALPHA): Define.
-
-Fri May 31 17:28:05 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (Elf_External_Options, Elf_Internal_Options): Define.
- (bfd_mips_elf_swap_options_in): Declare.
- (bfd_mips_elf_swap_options_out): Declare.
- (ODK_*): Define.
- (Elf64_External_RegInfo, Elf64_Internal_RegInfo): Define.
- (bfd_mips_elf64_swap_reginfo_in): Declare.
- (bfd_mips_elf64_swap_reginfo_out): Declare.
-
-Thu May 30 12:35:57 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (E_MIPS_ARCH_4): Define.
-
-Wed May 29 15:35:33 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (Elf64_Mips_External_Rel): Define.
- (Elf64_Mips_Internal_Rel): Define.
- (Elf64_Mips_External_Rela, Elf64_Mips_Internal_Rela): Define.
- (RSS_*): Define.
-
-Mon Apr 22 18:26:30 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc.h (R_SPARC_[56]): Always define.
-
-Mon Feb 19 01:55:56 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc.h (R_SPARC_{PLT32,HIPLT22,LOPLT10,PCPLT32,PCPLT22,
- PCPLT10,5,6}): Don't define ifdef SPARC64_OLD_RELOCS.
-
-Tue Feb 6 11:33:58 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc.h (enum sparc_elf_reloc_type): Define.
-
-Wed Jan 17 09:09:16 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * common.h: Define EM_SPARC32PLUS.
- * sparc.h: New file.
-
-Thu Jan 11 16:27:34 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc.h (SHF_EXCLUDE, SHT_ORDERED): New fields from the abi.
-
-Thu Nov 30 16:47:18 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h (struct elf_segment_map): Add includes_filehdr and
- includes_phdrs fields.
-
-Tue Nov 28 16:58:10 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * internal.h (struct elf_segment_map): Define.
-
-Tue Oct 31 15:19:36 1995 Fred Fish <fnf@cygnus.com>
-
- * common.h, dwarf.h, external.h, hppa.h, internal.h,
- mips.h, ppc.h: Protect against multiple inclusions.
-
-Thu Sep 21 13:51:58 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc.h (EF_PPC_RELOCATABLE_LIB): Add new flag bit.
-
-Fri Sep 1 15:32:17 1995 Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>
-
- * mips.h: Add some definitions used on Irix 5.
-
-Tue Jun 20 10:18:28 1995 Jeff Law (law@snake.cs.utah.edu)
-
- * hppa.h (CPU_PA_RISC1_0): Protect from redefinitions.
- (CPU_PA_RISC1_1): Likewise.
-
-Wed Mar 8 18:14:37 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc.h: New file for PowerPC support.
-
-Tue Feb 14 13:59:13 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * common.h (EM_PPC): Use offical value of 20, not 17.
- (EM_PPC_OLD): Define this to be the old value of EM_PPC.
-
-Tue Jan 24 09:40:59 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * common.h (EM_PPC): New macro, PowerPC machine id.
-
-Tue Jan 17 10:51:38 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * mips.h (SHT_MIPS_MSYM, SHT_MIPS_DWARF, SHT_MIPS_EVENTS): Define.
-
-Mon Oct 17 13:43:59 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * internal.h (Elf_Internal_Shdr): Remove rawdata and size fields.
- Add bfd_section field.
-
-Tue May 24 16:11:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (Elf32_External_gptab): Define.
-
-Mon May 16 13:22:04 1994 Jeff Law (law@snake.cs.utah.edu)
-
- * common.h (EM_HPPA): Delete.
- (EM_PARISC): Add.
- * hppa.h: New file.
-
-Mon May 9 13:27:03 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * common.h (SHN_LORESERVE): Rename from SHN_LORESERV.
- (ELF32_R_TYPE, ELF32_R_INFO): Don't rely on size of unsigned char.
- (ELF64_R_TYPE): Don't rely on size of unsigned long.
-
-Mon Apr 25 15:53:09 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * internal.h (Elf_Internal_Shdr): Use PTR, not void *.
-
-Fri Mar 11 00:34:59 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * mips.h (SHN_MIPS_TEXT, SHN_MIPS_DATA): Define.
-
-Sat Mar 5 14:08:54 1994 Peter Schauer (pes@regent.e-technik.tu-muenchen.de)
-
- * internal.h: Remove Elf32_*, Elf64_* typedefs. These names
- cause conflicts with system headers, e.g. link.h in gdb/solib.c.
- Combine 32- and 64-bit versions of *_Internal_Dyn.
- * common.h: Replace uses of Elf64_Word, Elf64_Xword typedefs
- by their expansion.
- * mips.h: Replace uses of Elf32_Word, Elf32_Sword, Elf32_Addr
- typedefs by their expansion. Add DT_MIPS_RLD_MAP definition.
-
-Fri Feb 18 10:39:54 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * common.h (EM_CYGNUS_POWERPC): Define. This may be temporary,
- depending upon how quickly I can find a real PowerPC ABI.
-
-Mon Feb 7 08:27:13 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * internal.h: Change HOST_64_BIT to BFD_HOST_64_BIT.
-
-Wed Feb 2 14:12:18 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * common.h: Add comments regarding value of EM_HPPA and how to
- pick an unofficial value.
-
-Wed Nov 17 17:14:26 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (SHT_MIPS_OPTIONS): Define.
-
-Mon Nov 8 17:57:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h: Added some more MIPS ABI macro definitions.
-
-Wed Nov 3 22:07:17 1993 Ken Raeburn (raeburn@rtl.cygnus.com)
-
- * common.h (EM_MIPS_RS4_BE): New macro.
-
-Tue Oct 12 07:28:18 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.h: New file. MIPS ABI specific information.
-
-Mon Jun 21 13:13:43 1993 Ken Raeburn (raeburn@poseidon.cygnus.com)
-
- * internal.h: Combined 32- and 64-bit versions of all structures
- except *_Internal_Dyn. This will simply the assembler interface,
- and some bfd code.
-
-Tue May 25 02:00:16 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * external.h, internal.h, common.h: Added 64-bit versions of some
- structures and macros. Renamed old versions to put "32" in the
- name. Some are unchanged.
-
-Thu Apr 29 12:12:20 1993 Ken Raeburn (raeburn@deneb.cygnus.com)
-
- * common.h (EM_HPPA, NT_VERSION, STN_UNDEF, DT_*): New macros.
- * external.h (Elf_External_Dyn): New type.
-
- * internal.h (Elf_Intenral_Shdr): New field `size'.
- (Elf_Internal_Dyn): New type.
-
-Tue Apr 20 16:03:45 1993 Fred Fish (fnf@cygnus.com)
-
- * dwarf.h (LANG_CHILL): Change value to one randomly picked in
- the user defined range, to reduce probability of collisions.
-
-Sun Nov 15 09:34:02 1992 Fred Fish (fnf@cygnus.com)
-
- * dwarf.h (AT_src_coords): Whitespace change only.
- * dwarf.h (AT_body_begin, AT_body_end, LANG_MODULA2):
- Add from latest gcc.
- * dwarf.h (LANG_CHILL): Add as GNU extension.
-
-Sat Aug 1 13:46:53 1992 Fred Fish (fnf@cygnus.com)
-
- * dwarf.h: Replace with current version from gcc distribution.
-
-Fri Jun 19 19:05:09 1992 John Gilmore (gnu at cygnus.com)
-
- * internal.h: Add real struct tags to all the Type_Defs, so they
- can be used in prototypes where the Type_Defs are not known.
-
-Fri Apr 3 20:58:58 1992 Mark Eichin (eichin at cygnus.com)
-
- * common.h: added ELF_R_{SYM,TYPE,INFO} for handling relocation
- info
- added EM_MIPS, and corrected value of EM_860 based on System V ABI
- manual.
-
- * external.h: added Elf_External_{Rel,Rela}.
-
- * internal.h: added Elf_Internal_{Rel,Rela}.
- added rawdata to Elf_Internal_Shdr.
-
-Sat Nov 30 20:43:59 1991 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * common.h, dwarf.h, external.h, internal.h, ChangeLog; moved from
- ../elf-<foo>
+For older changes see ChangeLog-9103
Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
version-control: never
End:
diff --git a/include/elf/common.h b/include/elf/common.h
index 3c4fabec6cc..15aa5d9b11e 100644
--- a/include/elf/common.h
+++ b/include/elf/common.h
@@ -404,6 +404,10 @@
#define NT_NETBSD_IDENT 1
+/* Values for OpenBSD .note.openbsd.ident notes. Note name is "OpenBSD". */
+
+#define NT_OPENBSD_IDENT 1
+
/* Values for FreeBSD .note.ABI-tag notes. Note name is "FreeBSD". */
#define NT_FREEBSD_ABI_TAG 1
diff --git a/include/elf/frv.h b/include/elf/frv.h
index 08def62a329..8246a21bd41 100644
--- a/include/elf/frv.h
+++ b/include/elf/frv.h
@@ -35,6 +35,20 @@ START_RELOC_NUMBERS (elf_frv_reloc_type)
RELOC_NUMBER (R_FRV_GPREL32, 8)
RELOC_NUMBER (R_FRV_GPRELHI, 9)
RELOC_NUMBER (R_FRV_GPRELLO, 10)
+ RELOC_NUMBER (R_FRV_GOT12, 11)
+ RELOC_NUMBER (R_FRV_GOTHI, 12)
+ RELOC_NUMBER (R_FRV_GOTLO, 13)
+ RELOC_NUMBER (R_FRV_FUNCDESC, 14)
+ RELOC_NUMBER (R_FRV_FUNCDESC_GOT12, 15)
+ RELOC_NUMBER (R_FRV_FUNCDESC_GOTHI, 16)
+ RELOC_NUMBER (R_FRV_FUNCDESC_GOTLO, 17)
+ RELOC_NUMBER (R_FRV_FUNCDESC_VALUE, 18)
+ RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFF12, 19)
+ RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFFHI, 20)
+ RELOC_NUMBER (R_FRV_FUNCDESC_GOTOFFLO, 21)
+ RELOC_NUMBER (R_FRV_GOTOFF12, 22)
+ RELOC_NUMBER (R_FRV_GOTOFFHI, 23)
+ RELOC_NUMBER (R_FRV_GOTOFFLO, 24)
RELOC_NUMBER (R_FRV_GNU_VTINHERIT, 200)
RELOC_NUMBER (R_FRV_GNU_VTENTRY, 201)
END_RELOC_NUMBERS(R_FRV_max)
@@ -67,6 +81,7 @@ END_RELOC_NUMBERS(R_FRV_max)
#define EF_FRV_LIBPIC 0x00001000 /* -mlibrary-pic */
#define EF_FRV_G0 0x00002000 /* -G 0, no small data ptr */
#define EF_FRV_NOPACK 0x00004000 /* -mnopack */
+#define EF_FRV_FDPIC 0x00008000 /* -mfdpic */
#define EF_FRV_CPU_MASK 0xff000000 /* specific cpu bits */
#define EF_FRV_CPU_GENERIC 0x00000000 /* generic FRV */
@@ -78,7 +93,8 @@ END_RELOC_NUMBERS(R_FRV_max)
#define EF_FRV_CPU_FR550 0x06000000 /* FRV550 */
/* Mask of PIC related bits */
-#define EF_FRV_PIC_FLAGS (EF_FRV_PIC | EF_FRV_LIBPIC | EF_FRV_BIGPIC)
+#define EF_FRV_PIC_FLAGS (EF_FRV_PIC | EF_FRV_LIBPIC | EF_FRV_BIGPIC \
+ | EF_FRV_FDPIC)
/* Mask of all flags */
#define EF_FRV_ALL_FLAGS (EF_FRV_GPR_MASK | \
diff --git a/include/elf/m32r.h b/include/elf/m32r.h
index 2663f3abb3c..709d7923446 100644
--- a/include/elf/m32r.h
+++ b/include/elf/m32r.h
@@ -25,18 +25,48 @@
/* Relocations. */
START_RELOC_NUMBERS (elf_m32r_reloc_type)
RELOC_NUMBER (R_M32R_NONE, 0)
- RELOC_NUMBER (R_M32R_16, 1)
- RELOC_NUMBER (R_M32R_32, 2)
- RELOC_NUMBER (R_M32R_24, 3)
- RELOC_NUMBER (R_M32R_10_PCREL, 4)
- RELOC_NUMBER (R_M32R_18_PCREL, 5)
- RELOC_NUMBER (R_M32R_26_PCREL, 6)
- RELOC_NUMBER (R_M32R_HI16_ULO, 7)
- RELOC_NUMBER (R_M32R_HI16_SLO, 8)
- RELOC_NUMBER (R_M32R_LO16, 9)
- RELOC_NUMBER (R_M32R_SDA16, 10)
- RELOC_NUMBER (R_M32R_GNU_VTINHERIT, 11)
- RELOC_NUMBER (R_M32R_GNU_VTENTRY, 12)
+ /* REL relocations */
+ RELOC_NUMBER (R_M32R_16, 1) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_32, 2) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_24, 3) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_10_PCREL, 4) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_18_PCREL, 5) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_26_PCREL, 6) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_HI16_ULO, 7) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_HI16_SLO, 8) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_LO16, 9) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_SDA16, 10) /* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_GNU_VTINHERIT, 11)/* For backwards compatibility. */
+ RELOC_NUMBER (R_M32R_GNU_VTENTRY, 12) /* For backwards compatibility. */
+
+ /* RELA relocations */
+ RELOC_NUMBER (R_M32R_16_RELA, 33)
+ RELOC_NUMBER (R_M32R_32_RELA, 34)
+ RELOC_NUMBER (R_M32R_24_RELA, 35)
+ RELOC_NUMBER (R_M32R_10_PCREL_RELA, 36)
+ RELOC_NUMBER (R_M32R_18_PCREL_RELA, 37)
+ RELOC_NUMBER (R_M32R_26_PCREL_RELA, 38)
+ RELOC_NUMBER (R_M32R_HI16_ULO_RELA, 39)
+ RELOC_NUMBER (R_M32R_HI16_SLO_RELA, 40)
+ RELOC_NUMBER (R_M32R_LO16_RELA, 41)
+ RELOC_NUMBER (R_M32R_SDA16_RELA, 42)
+ RELOC_NUMBER (R_M32R_RELA_GNU_VTINHERIT, 43)
+ RELOC_NUMBER (R_M32R_RELA_GNU_VTENTRY, 44)
+
+ RELOC_NUMBER (R_M32R_GOT24, 48)
+ RELOC_NUMBER (R_M32R_26_PLTREL, 49)
+ RELOC_NUMBER (R_M32R_COPY, 50)
+ RELOC_NUMBER (R_M32R_GLOB_DAT, 51)
+ RELOC_NUMBER (R_M32R_JMP_SLOT, 52)
+ RELOC_NUMBER (R_M32R_RELATIVE, 53)
+ RELOC_NUMBER (R_M32R_GOTOFF, 54)
+ RELOC_NUMBER (R_M32R_GOTPC24, 55)
+ RELOC_NUMBER (R_M32R_GOT16_HI_ULO, 56)
+ RELOC_NUMBER (R_M32R_GOT16_HI_SLO, 57)
+ RELOC_NUMBER (R_M32R_GOT16_LO, 58)
+ RELOC_NUMBER (R_M32R_GOTPC_HI_ULO, 59)
+ RELOC_NUMBER (R_M32R_GOTPC_HI_SLO, 60)
+ RELOC_NUMBER (R_M32R_GOTPC_LO, 61)
END_RELOC_NUMBERS (R_M32R_max)
/* Processor specific section indices. These sections do not actually
diff --git a/include/fibheap.h b/include/fibheap.h
index fc37f9ef635..4eebaf13ba6 100644
--- a/include/fibheap.h
+++ b/include/fibheap.h
@@ -59,8 +59,13 @@ typedef struct fibnode
struct fibnode *right;
fibheapkey_t key;
void *data;
+#ifdef __GNUC__
+ __extension__ unsigned long int degree : 31;
+ __extension__ unsigned long int mark : 1;
+#else
unsigned int degree : 31;
unsigned int mark : 1;
+#endif
} *fibnode_t;
extern fibheap_t fibheap_new PARAMS ((void));
diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog
index 42cf9a5e4f5..8f0d6d76359 100644
--- a/include/opcode/ChangeLog
+++ b/include/opcode/ChangeLog
@@ -1,3102 +1,17 @@
-2003-10-21 Peter Barada <pbarada@mail.wm.sps.mot.com>
- Bernardo Innocenti <bernie@develer.com>
+2004-01-12 Anil Paranjpe <anilp1@KPITCummins.com>
+
+ * h8300.h (BITOP): Pass MEMRELAX flag.
- * m68k.h: Add MCFv4/MCF5528x support.
+2004-01-09 Anil Paranjpe <anilp1@KPITCummins.com>
-2003-10-19 Hans-Peter Nilsson <hp@bitrange.com>
-
- * mmix.h (JMP_INSN_BYTE): Define.
-
-2003-09-30 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h: Document +E, +F, +G, +H, and +I operand types.
- Update documentation of I, +B and +C operand types.
- (INSN_ISA64R2, ISA_MIPS64R2, CPU_MIPS64R2): New defines.
- (M_DEXT, M_DINS): New enum values.
-
-2003-09-04 Nick Clifton <nickc@redhat.com>
-
- * v850.h (PROCESSOR_V850E1): Define.
-
-2003-08-19 Alan Modra <amodra@bigpond.net.au>
-
- * ppc.h (PPC_OPCODE_440): Define. Formatting. Use hex for other
- PPC_OPCODE_* defines.
-
-2003-08-16 Jason Eckhardt <jle@rice.edu>
-
- * i860.h (fmov.ds): Expand as famov.ds.
- (fmov.sd): Expand as famov.sd.
- (pfmov.ds): Expand as pfamov.ds.
-
-2003-08-07 Michael Meissner <gnu@the-meissners.org>
-
- * cgen.h: Remove PARAM macro usage in all prototypes.
- (CGEN_EXTRACT_INFO): Use void * instead of PTR.
- (cgen_print_fn): Ditto.
- (CGEN_HW_ENTRY): Ditto.
- (CGEN_MAYBE_MULTI_IFLD): Ditto.
- (struct cgen_insn): Ditto.
- (CGEN_CPU_TABLE): Ditto.
-
-2003-08-07 Alan Modra <amodra@bigpond.net.au>
-
- * alpha.h: Remove PARAMS macro.
- * arc.h: Likewise.
- * d10v.h: Likewise.
- * d30v.h: Likewise.
- * i370.h: Likewise.
- * or32.h: Likewise.
- * pj.h: Likewise.
- * ppc.h: Likewise.
- * sparc.h: Likewise.
- * tic80.h: Likewise.
- * v850.h: Likewise.
-
-2003-07-18 Michael Snyder <msnyder@redhat.com>
-
- * include/opcode/h8sx.h (DO_MOVA1, DO_MOVA2): Reformatting.
-
-2003-07-15 Richard Sandiford <rsandifo@redhat.com>
-
- * mips.h (CPU_RM7000): New macro.
- (OPCODE_IS_MEMBER): Match CPU_RM7000 against 4650 insns.
-
-2003-07-09 Alexandre Oliva <aoliva@redhat.com>
-
- 2000-04-01 Alexandre Oliva <aoliva@cygnus.com>
- * mn10300.h (AM33_2): Renamed from AM33.
- 2000-03-31 Alexandre Oliva <aoliva@cygnus.com>
- * mn10300.h (AM332, FMT_D3): Defined.
- (MN10300_OPERAND_FSREG, MN10300_OPERAND_FDREG): Likewise.
- (MN10300_OPERAND_FPCR): Likewise.
-
-2003-07-01 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390.h (s390_opcode_cpu_val): Add enum for cpu type z990.
-
-2003-06-25 Richard Sandiford <rsandifo@redhat.com>
-
- * h8300.h (IMM2_NS, IMM8_NS, IMM16_NS): Remove.
- (IMM8U, IMM8U_NS): Define.
- (h8_opcodes): Use IMM8U_NS for mov.[wl] #xx:8,@yy.
-
-2003-06-25 Richard Sandiford <rsandifo@redhat.com>
-
- * h8300.h (h8_opcodes): Fix the mov.l @(dd:32,ERs),ERd and
- mov.l ERs,@(dd:32,ERd) entries.
-
-2003-06-23 H.J. Lu <hongjiu.lu@intel.com>
-
- * i386.h (i386_optab): Support Intel Precott New Instructions.
-
-2003-06-10 Gary Hade <garyhade@us.ibm.com>
-
- * ppc.h (PPC_OPERAND_DQ): Define.
-
-2003-06-10 Richard Sandiford <rsandifo@redhat.com>
-
- * h8300.h (IMM4_NS, IMM8_NS): New.
- (h8_opcodes): Replace IMM4 with IMM4_NS in mov.b and mov.w entries.
- Likewise IMM8 for mov.w and mov.l. Likewise IMM16U for mov.l.
-
-2003-06-03 Michael Snyder <msnyder@redhat.com>
-
- * h8300.h (enum h8_model): Add AV_H8S to distinguish from H8H.
- (ldc): Split ccr ops from exr ops (which are only available
- on H8S or H8SX).
- (stc): Ditto.
- (andc, orc, xorc): Ditto.
- (ldmac, stmac, clrmac, mac): Change access to AV_H8S.
-
-2003-06-03 Michael Snyder <msnyder@redhat.com>
- and Bernd Schmidt <bernds@redhat.com>
- and Alexandre Oliva <aoliva@redhat.com>
- * h8300.h: Add support for h8300sx instruction set.
-
-2003-05-23 Jason Eckhardt <jle@rice.edu>
-
- * i860.h (expand_type): Add XP_ONLY.
- (scyc.b): New XP instruction.
- (ldio.l): Likewise.
- (ldio.s): Likewise.
- (ldio.b): Likewise.
- (ldint.l): Likewise.
- (ldint.s): Likewise.
- (ldint.b): Likewise.
- (stio.l): Likewise.
- (stio.s): Likewise.
- (stio.b): Likewise.
- (pfld.q): Likewise.
-
-2003-05-20 Jason Eckhardt <jle@rice.edu>
-
- * i860.h (flush): Set lower 3 bits properly and use 'L'
- for the immediate operand type instead of 'i'.
-
-2003-05-20 Jason Eckhardt <jle@rice.edu>
-
- * i860.h (fzchks): Both S and R bits must be set.
- (pfzchks): Likewise.
- (faddp): Likewise.
- (pfaddp): Likewise.
- (fix.ss): Remove (invalid instruction).
- (pfix.ss): Likewise.
- (ftrunc.ss): Likewise.
- (pftrunc.ss): Likewise.
-
-2003-05-18 Jason Eckhardt <jle@rice.edu>
-
- * i860.h (form, pform): Add missing .dd suffix.
-
-2003-05-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11.h (M68HC12_BANK_VIRT): Define to 0x010000
-
-2003-04-07 Michael Snyder <msnyder@redhat.com>
-
- * h8300.h (ldc/stc): Fix up src/dst swaps.
-
-2003-04-09 J. Grant <jg-binutils@jguk.org>
-
- * mips.h: Correct comment typo.
-
-2003-03-21 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390.h (s390_opcode_arch_val): Rename to s390_opcode_mode_val.
- (S390_OPCODE_ESAME): Rename to S390_OPCODE_ZARCH.
- (s390_opcode): Remove architecture. Add modes and min_cpu.
-
-2003-03-17 D.Venkatasubramanian <dvenkat@noida.hcltech.com>
-
- * h8300.h (O_SYS_CMDLINE): New pseudo opcode for command line
- processing.
-
-2003-02-21 Noida D.Venkatasubramanian <dvenkat@noida.hcltech.com>
-
- * h8300.h (ldmac, stmac): Replace MACREG with MS32 and MD32.
-
-2003-01-23 Alan Modra <amodra@bigpond.net.au>
-
- * m68hc11.h (cpu6812s): Define.
-
-2003-01-07 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h: Fix missing space in comment.
- (INSN_ISA1, INSN_ISA2, INSN_ISA3, INSN_ISA4, INSN_ISA5)
- (INSN_ISA32, INSN_ISA32R2, INSN_ISA64): Shift values right
- by four bits.
-
-2003-01-02 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h: Update copyright years to include 2002 (which had
- been missed previously) and 2003. Make comments about "+A",
- "+B", and "+C" operand types more descriptive.
-
-2002-12-31 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h: Note that the "+D" operand type name is now used.
-
-2002-12-30 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h: Document "+" as the start of two-character operand
- type names, and add new "K", "+A", "+B", and "+C" operand types.
- (OP_MASK_INSMSB, OP_SH_INSMSB, OP_MASK_EXTMSB)
- (OP_SH_EXTMSB, INSN_ISA32R2, ISA_MIPS32R2, CPU_MIPS32R2): New
- defines.
-
-2002-12-24 Dmitry Diky <diwil@mail.ru>
-
- * msp430.h: New file. Defines msp430 opcodes.
-
-2002-12-30 D.Venkatasubramanian <dvenkat@noida.hcltech.com>
-
- * h8300.h: Added some more pseudo opcodes for system call
- processing.
-
-2002-12-19 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h (OP_OP_COP0, OP_OP_COP1, OP_OP_COP2, OP_OP_COP3)
- (OP_OP_LWC1, OP_OP_LWC2, OP_OP_LWC3, OP_OP_LDC1, OP_OP_LDC2)
- (OP_OP_LDC3, OP_OP_SWC1, OP_OP_SWC2, OP_OP_SWC3, OP_OP_SDC1)
- (OP_OP_SDC2, OP_OP_SDC3): Define.
-
-2002-12-16 Alan Modra <amodra@bigpond.net.au>
-
- * hppa.h (completer_chars): #if 0 out.
-
- * ns32k.h (struct ns32k_opcode): Constify "name", "operands" and
- "default_args".
- (struct not_wot): Constify "args".
- (struct not): Constify "name".
- (numopcodes): Delete.
- (endop): Delete.
-
-2002-12-13 Alan Modra <amodra@bigpond.net.au>
-
- * pj.h (pj_opc_info_t): Add union.
-
-2002-12-04 David Mosberger <davidm@hpl.hp.com>
-
- * ia64.h: Fix copyright message.
- (IA64_OPND_AR_CSD): New operand kind.
-
-2002-12-03 Richard Henderson <rth@redhat.com>
-
- * ia64.h (enum ia64_opnd): Add IA64_OPND_LDXMOV.
-
-2002-12-03 Alan Modra <amodra@bigpond.net.au>
-
- * cgen.h (struct cgen_maybe_multi_ifield): Add "const PTR p" to union.
- Constify "leaf" and "multi".
-
-2002-11-19 Klee Dienes <kdienes@apple.com>
-
- * h8300.h (h8_opcode): Remove 'noperands', 'idx', and 'size'
- fields.
- (h8_opcodes). Modify initializer and initializer macros to no
- longer initialize the removed fields.
-
-2002-11-19 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * tic4x.h (c4x_insts): Fixed LDHI constraint
-
-2002-11-18 Klee Dienes <kdienes@apple.com>
-
- * h8300.h (h8_opcode): Remove 'length' field.
- (h8_opcodes): Mark as 'const' (both the declaration and
- definition). Modify initializer and initializer macros to no
- longer initialize the length field.
-
-2002-11-18 Klee Dienes <kdienes@apple.com>
-
- * arc.h (arc_ext_opcodes): Declare as extern.
- (arc_ext_operands): Declare as extern.
- * i860.h (i860_opcodes): Declare as const.
-
-2002-11-18 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * tic4x.h: File reordering. Added enhanced opcodes.
-
-2002-11-16 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * tic4x.h: Major rewrite of entire file. Define instruction
- classes, and put each instruction into a class.
-
-2002-11-11 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * tic4x.h: Added new opcodes and corrected some bugs. Add support
- for new DSP types.
-
-2002-10-14 Alan Modra <amodra@bigpond.net.au>
-
- * cgen.h: Test __BFD_H_SEEN__ rather than BFD_VERSION_DATE.
-
-2002-09-30 Gavin Romig-Koch <gavin@redhat.com>
- Ken Raeburn <raeburn@cygnus.com>
- Aldy Hernandez <aldyh@redhat.com>
- Eric Christopher <echristo@redhat.com>
- Richard Sandiford <rsandifo@redhat.com>
-
- * mips.h: Update comment for new opcodes.
- (OP_MASK_VECBYTE, OP_SH_VECBYTE): New.
- (OP_MASK_VECALIGN, OP_SH_VECALIGN): New.
- (INSN_4111, INSN_4120, INSN_5400, INSN_5500): New.
- (CPU_VR4120, CPU_VR5400, CPU_VR5500): New.
- (OPCODE_IS_MEMBER): Handle the new CPU_* values and INSN_* flags.
- Don't match CPU_R4111 with INSN_4100.
-
-2002-08-19 Elena Zannoni <ezannoni@redhat.com>
-
- From matthew green <mrg@redhat.com>
-
- * ppc.h (PPC_OPCODE_SPE): New opcode flag for Powerpc e500
- instructions.
- (PPC_OPCODE_ISEL, PPC_OPCODE_BRLOCK, PPC_OPCODE_PMR,
- PPC_OPCODE_CACHELCK, PPC_OPCODE_RFMCI): New opcode flags for the
- e500x2 Integer select, branch locking, performance monitor,
- cache locking and machine check APUs, respectively.
- (PPC_OPCODE_EFS): New opcode type for efs* instructions.
- (PPC_OPCODE_CLASSIC): New opcode type for Classic PowerPC instructions.
-
-2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11.h (M6812_OP_PAGE): Define to identify call operand.
- (M68HC12_BANK_VIRT, M68HC12_BANK_MASK, M68HC12_BANK_BASE,
- M68HC12_BANK_SHIFT, M68HC12_BANK_PAGE_MASK): Define for 68HC12
- memory banks.
- (M6811_OC1M5, M6811_OC1M4, M6811_MODF): Fix value.
-
-2002-07-09 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips.h (INSN_MIPS16): New define.
-
-2002-07-08 Alan Modra <amodra@bigpond.net.au>
-
- * i386.h: Remove IgnoreSize from movsx and movzx.
-
-2002-06-08 Alan Modra <amodra@bigpond.net.au>
-
- * a29k.h: Replace CONST with const.
- (CONST): Don't define.
- * convex.h: Replace CONST with const.
- (CONST): Don't define.
- * dlx.h: Replace CONST with const.
- * or32.h (CONST): Don't define.
-
-2002-05-30 Chris G. Demetriou <cgd@broadcom.com>
-
- * mips.h (OP_SH_ALN, OP_MASK_ALN, OP_SH_VSEL, OP_MASK_VSEL)
- (MDMX_FMTSEL_IMM_QH, MDMX_FMTSEL_IMM_OB, MDMX_FMTSEL_VEC_QH)
- (MDMX_FMTSEL_VEC_OB, INSN_READ_MDMX_ACC, INSN_WRITE_MDMX_ACC)
- (INSN_MDMX): New constants, for MDMX support.
- (opcode character list): Add "O", "Q", "X", "Y", and "Z" for MDMX.
-
-2002-05-28 Kuang Hwa Lin <kuang@sbcglobal.net>
-
- * dlx.h: New file.
-
-2002-05-25 Alan Modra <amodra@bigpond.net.au>
-
- * ia64.h: Use #include "" instead of <> for local header files.
- * sparc.h: Likewise.
-
-2002-05-22 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips.h: Add M_DROL, M_DROL_I, M_DROR, M_DROR_I macro cases.
-
-2002-05-17 Andrey Volkov <avolkov@sources.redhat.com>
-
- * h8300.h: Corrected defs of all control regs
- and eepmov instr.
-
-2002-04-11 Alan Modra <amodra@bigpond.net.au>
-
- * i386.h: Add intel mode cmpsd and movsd.
- Put them before SSE2 insns, so that rep prefix works.
-
-2002-03-15 Chris G. Demetriou <cgd@broadcom.com>
-
- * mips.h (INSN_MIPS3D): New definition used to mark MIPS-3D
- instructions.
- (OPCODE_IS_MEMBER): Adjust comments to indicate that ASE bit masks
- may be passed along with the ISA bitmask.
-
-2002-03-05 Paul Koning <pkoning@equallogic.com>
-
- * pdp11.h: Add format codes for float instruction formats.
-
-2002-02-25 Alan Modra <amodra@bigpond.net.au>
-
- * ppc.h (PPC_OPCODE_POWER4, PPC_OPCODE_NOPOWER4): Define.
-
-Mon Feb 18 17:31:48 CET 2002 Jan Hubicka <jh@suse.cz>
-
- * i386.h (push,pop): Fix Reg64 to WordReg to allow 16bit operands.
-
-Mon Feb 11 12:53:19 CET 2002 Jan Hubicka <jh@suse.cz>
-
- * i386.h (push,pop): Allow 16bit operands in 64bit mode.
- (xchg): Fix.
- (in, out): Disable 64bit operands.
- (call, jmp): Avoid REX prefixes.
- (jcxz): Prohibit in 64bit mode
- (jrcxz, loop): Add 64bit variants.
- (movq): Fix patterns.
- (movmskps, pextrw, pinstrw): Add 64bit variants.
-
-2002-01-31 Ivan Guzvinec <ivang@opencores.org>
-
- * or32.h: New file.
-
-2002-01-22 Graydon Hoare <graydon@redhat.com>
-
- * cgen.h (CGEN_MAYBE_MULTI_IFLD): New structure.
- (CGEN_OPERAND): Add CGEN_MAYBE_MULTI_IFLD field.
-
-2002-01-21 Thomas Klausner <wiz@danbala.ifoer.tuwien.ac.at>
-
- * h8300.h: Comment typo fix.
-
-2002-01-03 matthew green <mrg@redhat.com>
-
- * ppc.h (PPC_OPCODE_BOOKE): BookE is not Motorola specific.
- (PPC_OPCODE_BOOKE64): Likewise.
-
-Mon Dec 31 16:45:41 2001 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (call, ret): Move to end of table.
- (addb, addib): PA2.0 variants should have been PA2.0W.
- (ldw, ldh, ldb, stw, sth, stb, stwa): Reorder to keep disassembler
- happy.
- (fldw, fldd, fstw, fstd, bb): Likewise.
- (short loads/stores): Tweak format specifier slightly to keep
- disassembler happy.
- (indexed loads/stores): Likewise.
- (absolute loads/stores): Likewise.
-
-2001-12-04 Alexandre Oliva <aoliva@redhat.com>
-
- * d10v.h (OPERAND_NOSP): New macro.
-
-2001-11-29 Alexandre Oliva <aoliva@redhat.com>
-
- * d10v.h (OPERAND_SP): New macro.
-
-2001-11-15 Alan Modra <amodra@bigpond.net.au>
-
- * ppc.h (struct powerpc_operand <insert, extract>): Add dialect param.
-
-2001-11-11 Timothy Wall <twall@alum.mit.edu>
-
- * tic54x.h: Revise opcode layout; don't really need a separate
- structure for parallel opcodes.
-
-2001-11-13 Zack Weinberg <zack@codesourcery.com>
- Alan Modra <amodra@bigpond.net.au>
-
- * i386.h (i386_optab): Add entries for "sldr", "smsw" and "str" to
- accept WordReg.
-
-2001-11-04 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h (OPCODE_IS_MEMBER): Remove extra space.
-
-2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
-
- * mmix.h: New file.
-
-2001-10-18 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h (OPCODE_IS_MEMBER): Add a no-op term to the end
- of the expression, to make source code merging easier.
-
-2001-10-17 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h: Sort coprocessor instruction argument characters
- in comment, add a few more words of description for "H".
-
-2001-10-17 Chris Demetriou <cgd@broadcom.com>
-
- * mips.h (INSN_SB1): New cpu-specific instruction bit.
- (OPCODE_IS_MEMBER): Allow instructions matching INSN_SB1
- if cpu is CPU_SB1.
-
-2001-10-17 matthew green <mrg@redhat.com>
-
- * ppc.h (PPC_OPCODE_BOOKE64): Fix typo.
-
-2001-10-12 matthew green <mrg@redhat.com>
-
- * ppc.h (PPC_OPCODE_BOOKE, PPC_OPCODE_BOOKE64, PPC_OPCODE_403): New
- opcode flags for BookE 32-bit, BookE 64-bit and PowerPC 403
- instructions, respectively.
-
-2001-09-27 Nick Clifton <nickc@cambridge.redhat.com>
-
- * v850.h: Remove spurious comment.
-
-2001-09-21 Nick Clifton <nickc@cambridge.redhat.com>
-
- * h8300.h: Fix compile time warning messages
-
-2001-09-04 Richard Henderson <rth@redhat.com>
-
- * alpha.h (struct alpha_operand): Pack elements into bitfields.
-
-2001-08-31 Eric Christopher <echristo@redhat.com>
-
- * mips.h: Remove CPU_MIPS32_4K.
-
-2001-08-27 Torbjorn Granlund <tege@swox.com>
-
- * ppc.h (PPC_OPERAND_DS): Define.
-
-2001-08-25 Andreas Jaeger <aj@suse.de>
-
- * d30v.h: Fix declaration of reg_name_cnt.
-
- * d10v.h: Fix declaration of d10v_reg_name_cnt.
-
- * arc.h: Add prototypes from opcodes/arc-opc.c.
-
-2001-08-16 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips.h (INSN_10000): Define.
- (OPCODE_IS_MEMBER): Check for INSN_10000.
-
-2001-08-10 Alan Modra <amodra@one.net.au>
-
- * ppc.h: Revert 2001-08-08.
-
-2001-08-10 Richard Sandiford <rsandifo@redhat.com>
-
- * mips.h (INSN_GP32): Remove.
- (OPCODE_IS_MEMBER): Remove gp32 parameter.
- (M_MOVE): New macro identifier.
-
-2001-08-08 Alan Modra <amodra@one.net.au>
-
- 1999-10-25 Torbjorn Granlund <tege@swox.com>
- * ppc.h (struct powerpc_operand): New field `reloc'.
-
-2001-08-01 Aldy Hernandez <aldyh@redhat.com>
-
- * mips.h (INSN_ISA_MASK): Nuke bits 12-15.
-
-2001-07-12 Jeff Johnston <jjohnstn@redhat.com>
-
- * cgen.h (CGEN_INSN): Add regex support.
- (build_insn_regex): Declare.
-
-2001-07-11 Frank Ch. Eigler <fche@redhat.com>
-
- * cgen.h (CGEN_MACH): Add insn_chunk_bitsize field.
- (cgen_cpu_desc): Ditto.
-
-2001-07-07 Ben Elliston <bje@redhat.com>
-
- * m88k.h: Clean up and reformat. Remove unused code.
-
-2001-06-14 Geoffrey Keating <geoffk@redhat.com>
-
- * cgen.h (cgen_keyword): Add nonalpha_chars field.
-
-2001-05-23 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips.h (CPU_R12000): Define.
-
-2001-05-23 John Healy <jhealy@redhat.com>
-
- * cgen.h: Increased CGEN_MAX_SYNTAX_ELEMENTS to 48.
-
-2001-05-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips.h (INSN_ISA_MASK): Define.
-
-2001-05-12 Alan Modra <amodra@one.net.au>
-
- * i386.h (i386_optab): Second operand of cvtps2dq is an xmm reg,
- not an mmx reg. Swap xmm/mmx regs on both movdq2q and movq2dq,
- and use InvMem as these insns must have register operands.
-
-2001-05-04 Alan Modra <amodra@one.net.au>
-
- * i386.h (i386_optab): Move InvMem to first operand of pmovmskb
- and pextrw to swap reg/rm assignments.
-
-2001-04-05 Hans-Peter Nilsson <hp@axis.com>
-
- * cris.h (enum cris_insn_version_usage): Correct comment for
- cris_ver_v3p.
-
-2001-03-24 Alan Modra <alan@linuxcare.com.au>
-
- * i386.h (i386_optab): Correct entry for "movntdq". Add "punpcklqdq".
- Add InvMem to first operand of "maskmovdqu".
-
-2001-03-22 Hans-Peter Nilsson <hp@axis.com>
-
- * cris.h (ADD_PC_INCR_OPCODE): New macro.
-
-2001-03-21 Kazu Hirata <kazu@hxi.com>
-
- * h8300.h: Fix formatting.
-
-2001-03-22 Alan Modra <alan@linuxcare.com.au>
-
- * i386.h (i386_optab): Add paddq, psubq.
-
-2001-03-19 Alan Modra <alan@linuxcare.com.au>
-
- * i386.h (REGNAM_AL, REGNAM_AX, REGNAM_EAX): Define.
-
-2001-02-28 Igor Shevlyakov <igor@windriver.com>
-
- * m68k.h: new defines for Coldfire V4. Update mcf to know
- about mcf5407.
-
-2001-02-18 lars brinkhoff <lars@nocrew.org>
-
- * pdp11.h: New file.
-
-2001-02-12 Jan Hubicka <jh@suse.cz>
-
- * i386.h (i386_optab): SSE integer converison instructions have
- 64bit versions on x86-64.
-
-2001-02-10 Nick Clifton <nickc@redhat.com>
-
- * mips.h: Remove extraneous whitespace. Formating change to allow
- for future contribution.
-
-2001-02-09 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390.h: New file.
-
-2001-02-02 Patrick Macdonald <patrickm@redhat.com>
-
- * cgen.h (CGEN_SYNTAX_CHAR_TYPE): Typedef as unsigned short.
- (CGEN_MAX_SYNTAX_ELEMENTS): Rename from CGEN_MAX_SYNTAX_BYTES.
- (CGEN_SYNTAX): Define using CGEN_MAX_SYNTAX_ELEMENTS.
-
-2001-01-24 Karsten Keil <kkeil@suse.de>
-
- * i386.h (i386_optab): Fix swapgs
-
-2001-01-14 Alan Modra <alan@linuxcare.com.au>
-
- * hppa.h: Describe new '<' and '>' operand types, and tidy
- existing comments.
- (pa_opcodes): Add entries for missing wide mode ldi,ldo,ldw,stw.
- Remove duplicate "ldw j(s,b),x". Sort some entries.
-
-2001-01-13 Jan Hubicka <jh@suse.cz>
-
- * i386.h (i386_optab): Fix pusha and ret templates.
-
-2001-01-11 Peter Targett <peter.targett@arccores.com>
-
- * arc.h (ARC_MACH_5, ARC_MACH_6, ARC_MACH_7, ARC_MACH_8): New
- definitions for masking cpu type.
- (arc_ext_operand_value) New structure for storing extended
- operands.
- (ARC_OPERAND_*) Flags for operand values.
-
-2001-01-10 Jan Hubicka <jh@suse.cz>
-
- * i386.h (pinsrw): Add.
- (pshufw): Remove.
- (cvttpd2dq): Fix operands.
- (cvttps2dq): Likewise.
- (movq2q): Rename to movdq2q.
-
-2001-01-10 Richard Schaal <richard.schaal@intel.com>
-
- * i386.h: Correct movnti instruction.
-
-2001-01-09 Jeff Johnston <jjohnstn@redhat.com>
-
- * cgen.h (CGEN_SYNTAX_CHAR_TYPE): New typedef based on max number
- of operands (unsigned char or unsigned short).
- (CGEN_SYNTAX): Changed to make array CGEN_SYNTAX_CHAR_TYPE.
- (CGEN_SYNTAX_CHAR): Changed to cast to unsigned char.
-
-2001-01-05 Jan Hubicka <jh@suse.cz>
-
- * i386.h (i386_optab): Make [sml]fence template to use immext field.
-
-2001-01-03 Jan Hubicka <jh@suse.cz>
-
- * i386.h (i386_optab): Fix 64bit pushf template; Add instructions
- introduced by Pentium4
-
-2000-12-30 Jan Hubicka <jh@suse.cz>
-
- * i386.h (i386_optab): Add "rex*" instructions;
- add swapgs; disable jmp/call far direct instructions for
- 64bit mode; add syscall and sysret; disable registers for 0xc6
- template. Add 'q' suffixes to extendable instructions, disable
- obsolete instructions, add new sign/zero extension ones.
- (i386_regtab): Add extended registers.
- (*Suf): Add No_qSuf.
- (q_Suf, wlq_Suf, bwlq_Suf): New.
-
-2000-12-20 Jan Hubicka <jh@suse.cz>
-
- * i386.h (i386_optab): Replace "Imm" with "EncImm".
- (i386_regtab): Add flags field.
-
-2000-12-12 Nick Clifton <nickc@redhat.com>
-
- * mips.h: Fix formatting.
-
-2000-12-01 Chris Demetriou <cgd@sibyte.com>
-
- mips.h (OP_MASK_SYSCALL, OP_SH_SYSCALL): Delete.
- (OP_MASK_CODE20, OP_SH_CODE20): Define, with values of old
- OP_*_SYSCALL definitions.
- (OP_SH_CODE19, OP_MASK_CODE19): Define, for use as
- 19 bit wait codes.
- (MIPS operand specifier comments): Remove 'm', add 'U' and
- 'J', and update the meaning of 'B' so that it's more general.
-
- * mips.h (INSN_ISA1, INSN_ISA2, INSN_ISA3, INSN_ISA4,
- INSN_ISA5): Renumber, redefine to mean the ISA at which the
- instruction was added.
- (INSN_ISA32): New constant.
- (INSN_4650, INSN_4010, INSN_4100, INSN_3900, INSN_GP32):
- Renumber to avoid new and/or renumbered INSN_* constants.
- (INSN_MIPS32): Delete.
- (ISA_UNKNOWN): New constant to indicate unknown ISA.
- (ISA_MIPS1, ISA_MIPS2, ISA_MIPS3, ISA_MIPS4, ISA_MIPS5,
- ISA_MIPS32): New constants, defined to be the mask of INSN_*
- constants available at that ISA level.
- (CPU_UNKNOWN): New constant to indicate unknown CPU.
- (CPU_4K, CPU_MIPS32_4K): Rename the former to the latter,
- define it with a unique value.
- (OPCODE_IS_MEMBER): Update for new ISA membership-related
- constant meanings.
-
- * mips.h (INSN_ISA64, ISA_MIPS5, ISA_MIPS64): New
- definitions.
-
- * mips.h (CPU_SB1): New constant.
-
-2000-10-20 Jakub Jelinek <jakub@redhat.com>
-
- * sparc.h (enum sparc_opcode_arch_val): Add SPARC_OPCODE_ARCH_V9B.
- Note that '3' is used for siam operand.
-
-2000-09-22 Jim Wilson <wilson@cygnus.com>
-
- * ia64.h (enum ia64_dependency_semantics): Add IA64_DVS_STOP.
-
-2000-09-13 Anders Norlander <anorland@acc.umu.se>
-
- * mips.h: Use defines instead of hard-coded processor numbers.
- (CPU_R2000, CPU_R3000, CPU_R3900, CPU_R4000, CPU_R4010,
- CPU_VR4100, CPU_R4111, CPU_R4300, CPU_R4400, CPU_R4600, CPU_R4650,
- CPU_R5000, CPU_R6000, CPU_R8000, CPU_R10000, CPU_MIPS32, CPU_4K,
- CPU_4KC, CPU_4KM, CPU_4KP): Define..
- (OPCODE_IS_MEMBER): Use new defines.
- (OP_MASK_SEL, OP_SH_SEL): Define.
- (OP_MASK_CODE20, OP_SH_CODE20): Define.
- Add 'P' to used characters.
- Use 'H' for coprocessor select field.
- Use 'm' for 20 bit breakpoint code.
- Document new arg characters and add to used characters.
- (INSN_MIPS32): New define for MIPS32 extensions.
- (OPCODE_IS_MEMBER): Recognize MIPS32 instructions.
-
-2000-09-05 Alan Modra <alan@linuxcare.com.au>
-
- * hppa.h: Mention cz completer.
-
-2000-08-16 Jim Wilson <wilson@cygnus.com>
-
- * ia64.h (IA64_OPCODE_POSTINC): New.
-
-2000-08-15 H.J. Lu <hjl@gnu.org>
-
- * i386.h: Swap the Intel syntax "movsx"/"movzx" due to the
- IgnoreSize change.
-
-2000-08-08 Jason Eckhardt <jle@cygnus.com>
-
- * i860.h: Small formatting adjustments.
-
-2000-07-29 Marek Michalkiewicz <marekm@linux.org.pl>
-
- * avr.h (AVR_UNDEF_P, AVR_SKIP_P, AVR_DISP0_P): New macros.
- Move related opcodes closer to each other.
- Minor changes in comments, list undefined opcodes.
-
-2000-07-26 Dave Brolley <brolley@redhat.com>
-
- * cgen.h (cgen_hw_lookup_by_num): Second parameter is unsigned.
-
-2000-07-22 Jason Eckhardt <jle@cygnus.com>
-
- * i860.h (btne, bte, bla): Changed these opcodes
- to use sbroff ('r') instead of split16 ('s').
- (J, K, L, M): New operand types for 16-bit aligned fields.
- (ld.x, {p}fld.x, fst.x, pst.d): Changed these opcodes to
- use I, J, K, L, M instead of just I.
- (T, U): New operand types for split 16-bit aligned fields.
- (st.x): Changed these opcodes to use S, T, U instead of just S.
- (andh, andnoth, orh, xorh): Deleted 3-register forms as they do not
- exist on the i860.
- (pfgt.sd, pfle.sd): Deleted these as they do not exist on the i860.
- (pfeq.ss, pfeq.dd): New opcodes.
- (st.s): Fixed incorrect mask bits.
- (fmlow): Fixed incorrect mask bits.
- (fzchkl, pfzchkl): Fixed incorrect mask bits.
- (faddz, pfaddz): Fixed incorrect mask bits.
- (form, pform): Fixed incorrect mask bits.
- (pfld.l): Fixed incorrect mask bits.
- (fst.q): Fixed incorrect mask bits.
- (all floating point opcodes): Fixed incorrect mask bits for
- handling of dual bit.
-
-2000-07-20 Hans-Peter Nilsson <hp@axis.com>
-
- cris.h: New file.
-
-2000-06-26 Marek Michalkiewicz <marekm@linux.org.pl>
-
- * avr.h (AVR_ISA_WRAP): Remove, now assumed if not AVR_ISA_MEGA.
- (AVR_ISA_ESPM): Remove, because ESPM removed in databook update.
- (AVR_ISA_85xx): Remove, all uses changed back to AVR_ISA_2xxx.
- (AVR_ISA_M83): Define for ATmega83, ATmega85.
- (espm): Remove, because ESPM removed in databook update.
- (eicall, eijmp): Move to the end of opcode table.
-
-2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
-
- * m68hc11.h: New file for support of Motorola 68hc11.
-
-Fri Jun 9 21:51:50 2000 Denis Chertykov <denisc@overta.ru>
-
- * avr.h: clr,lsl,rol, ... moved after add,adc, ...
-
-Wed Jun 7 21:39:54 2000 Denis Chertykov <denisc@overta.ru>
-
- * avr.h: New file with AVR opcodes.
-
-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.
- (SHORT_AR): Renumber so that it is at the end of the list of short
- instructions, not the end of the list of long instructions.
-
-2000-03-26 Alan Modra <alan@linuxcare.com>
-
- * i386.h: (UNIXWARE_COMPAT): Rename to SYSV386_COMPAT as the
- problem isn't really specific to Unixware.
- (OLDGCC_COMPAT): Define.
- (i386_optab): If !OLDGCC_COMPAT, don't handle fsubp etc. with
- destination %st(0).
- Fix lots of comments.
-
-2000-03-02 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * d30v.h:
- (SHORT_B2r, SHORT_B3, SHORT_B3r, SHORT_B3b, SHORT_B3br): Updated.
- (SHORT_D1r, SHORT_D2, SHORT_D2r, SHORT_D2Br, SHORT_U): Updated.
- (SHORT_F, SHORT_AF, SHORT_T, SHORT_A5, SHORT_CMP, SHORT_CMPU): Updated.
- (SHORT_A1, SHORT_AA, SHORT_RA, SHORT_MODINC, SHORT_MODDEC): Updated.
- (SHORT_C1, SHORT_C2, SHORT_UF, SHORT_A2, SHORT_NONE, LONG): Updated.
- (LONG_U, LONG_Ur, LONG_CMP, LONG_M, LONG_M2, LONG_2, LONG_2r): Updated.
- (LONG_2b, LONG_2br, LONG_D, LONG_Dr, LONG_Dbr): Updated.
-
-2000-02-25 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (fild, fistp): Change intel d_Suf form to fildd and
- fistpd without suffix.
-
-2000-02-24 Nick Clifton <nickc@cygnus.com>
-
- * cgen.h (cgen_cpu_desc): Rename field 'flags' to
- 'signed_overflow_ok_p'.
- Delete prototypes for cgen_set_flags() and cgen_get_flags().
-
-2000-02-24 Andrew Haley <aph@cygnus.com>
-
- * cgen.h (CGEN_INSN_MACH_HAS_P): New macro.
- (CGEN_CPU_TABLE): flags: new field.
- Add prototypes for new functions.
-
-2000-02-24 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: Add some more UNIXWARE_COMPAT comments.
-
-2000-02-23 Linas Vepstas <linas@linas.org>
-
- * i370.h: New file.
-
-2000-02-22 Chandra Chavva <cchavva@cygnus.com>
-
- * d30v.h (FLAG_NOT_WITH_ADDSUBppp): Redefined as operation
- cannot be combined in parallel with ADD/SUBppp.
-
-2000-02-22 Andrew Haley <aph@cygnus.com>
-
- * mips.h: (OPCODE_IS_MEMBER): Add comment.
-
-1999-12-30 Andrew Haley <aph@cygnus.com>
-
- * mips.h (OPCODE_IS_MEMBER): Add gp32 arg, which determines
- whether synthetic opcodes (e.g. move) generate 32-bit or 64-bit
- insns.
-
-2000-01-15 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: Qualify intel mode far call and jmp with x_Suf.
-
-1999-12-27 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: Add JumpAbsolute qualifier to all non-intel mode
- indirect jumps and calls. Add FF/3 call for intel mode.
-
-Wed Dec 1 03:05:25 1999 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h: Add new operand types. Add new instruction formats.
-
-Wed Nov 24 20:28:58 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (pa_opcodes): Correctly handle immediate for PA2.0 "bb"
- instruction.
-
-1999-11-18 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips.h (INSN_ISA5): New.
-
-1999-11-01 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips.h (OPCODE_IS_MEMBER): New.
-
-1999-10-29 Nick Clifton <nickc@cygnus.com>
-
- * d30v.h (SHORT_AR): Define.
-
-1999-10-18 Michael Meissner <meissner@cygnus.com>
-
- * alpha.h (alpha_num_opcodes): Convert to unsigned.
- (alpha_num_operands): Ditto.
-
-Sun Oct 10 01:46:56 1999 Jerry Quinn <jerry.quinn.adv91@alum.dartmouth.org>
-
- * hppa.h (pa_opcodes): Add load and store cache control to
- instructions. Add ordered access load and store.
-
- * hppa.h (pa_opcode): Add new entries for addb and addib.
-
- * hppa.h (pa_opcodes): Fix cmpb and cmpib entries.
-
- * hppa.h (pa_opcodes): Add entries for cmpb and cmpib.
-
-Thu Oct 7 00:12:25 MDT 1999 Diego Novillo <dnovillo@cygnus.com>
-
- * d10v.h: Add flag RESTRICTED_NUM3 for imm3 operands.
-
-Thu Sep 23 07:08:38 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * hppa.h (pa_opcodes): Add "call" and "ret". Clean up "b", "bve"
- and "be" using completer prefixes.
-
- * hppa.h (pa_opcodes): Add initializers to silence compiler.
-
- * hppa.h: Update comments about character usage.
-
-Mon Sep 20 03:55:31 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (pa_opcodes): Fix minor thinkos introduced while cleaning
- up the new fstw & bve instructions.
-
-Sun Sep 19 10:40:59 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (pa_opcodes): Add remaining PA2.0 integer load/store
- instructions.
-
- * hppa.h (pa_opcodes): Add remaining PA2.0 FP load/store instructions.
-
- * hppa.h (pa_opcodes): Add long offset double word load/store
- instructions.
-
- * hppa.h (pa_opcodes): Add FLAG_STRICT variants of FP loads and
- stores.
-
- * hppa.h (pa_opcodes): Handle PA2.0 fcnv, fcmp and ftest insns.
-
- * hppa.h (pa_opcodes): Finish support for PA2.0 "b" instructions.
-
- * hppa.h (pa_opcodes): Handle PA2.0 "bve" instructions.
-
- * hppa.h (pa_opcodes): Add new syntax "be" instructions.
-
- * hppa.h (pa_opcodes): Note use of 'M' and 'L'.
-
- * hppa.h (pa_opcodes): Add support for "b,l".
-
- * hppa.h (pa_opcodes): Add support for "b,gate".
-
-Sat Sep 18 11:41:16 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (pa_opcodes): Use 'fX' for first register operand
- in xmpyu.
-
- * hppa.h (pa_opcodes): Fix mask for probe and probei.
-
- * hppa.h (pa_opcodes): Fix mask for depwi.
-
-Tue Sep 7 13:44:25 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (pa_opcodes): Add "addil" variant which has the %r1 as
- an explicit output argument.
-
-Mon Sep 6 04:41:42 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h: Add strict variants of PA1.0/PA1.1 loads and stores.
- Add a few PA2.0 loads and store variants.
-
-1999-09-04 Steve Chamberlain <sac@pobox.com>
-
- * pj.h: New file.
-
-1999-08-29 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (i386_regtab): Move %st to top of table, and split off
- other fp reg entries.
- (i386_float_regtab): To here.
-
-Sat Aug 28 00:25:25 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * hppa.h (pa_opcodes): Replace 'f' by 'v'. Prefix float register args
- by 'f'.
-
- * hppa.h (pa_opcodes): Add extrd, extrw, depd, depdi, depw, depwi.
- Add supporting args.
-
- * hppa.h: Document new completers and args.
- * hppa.h (pa_opcodes): Add 64 bit patterns and pa2.0 syntax for uxor,
- uaddcm, dcor, addi, add, sub, subi, shladd, rfi, and probe. Add pa2.0
- extensions for ssm, rsm, pdtlb, pitlb. Add performance instructions
- pmenb and pmdis.
-
- * hppa.h (pa_opcodes): Add pa2.0 instructions hadd, hshl,
- hshr, hsub, mixh, mixw, permh.
-
- * hppa.h (pa_opcodes): Change completers in instructions to
- use 'c' prefix.
-
- * hppa.h (pa_opcodes): Add popbts, new forms of bb, havg,
- hshladd, hshradd, shrpd, and shrpw instructions. Update arg comments.
-
- * hppa.h (pa_opcodes): Change fmpyfadd, fmpynfadd, fneg,
- fnegabs to use 'I' instead of 'F'.
-
-1999-08-21 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: Add AMD athlon instructions, pfnacc, pfpnacc, pswapd.
- Document pf2iw and pi2fw as athlon insns. Remove pswapw.
- Alphabetically sort PIII insns.
-
-Wed Aug 18 18:14:40 1999 Doug Evans <devans@canuck.cygnus.com>
-
- * cgen.h (CGEN_INSN_MACH_HAS_P): New macro.
-
-Fri Aug 6 09:46:35 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * hppa.h (pa_opcodes): Add 64 bit versions of or, xor, and,
- and andcm. Add 32 and 64 bit version of cmpclr, cmpiclr.
-
- * hppa.h: Document 64 bit condition completers.
-
-Thu Aug 5 16:56:07 1999 Jerry Quinn <jquinn@nortelnetworks.com>
-
- * hppa.h (pa_opcodes): Change condition args to use '?' prefix.
-
-1999-08-04 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (i386_optab): Add DefaultSize modifier to all insns
- that implicitly modify %esp. #undef d_Suf, x_suf, sld_suf,
- sldx_suf, bwld_Suf, d_FP, x_FP, sld_FP, sldx_FP at end of table.
-
-Wed Jul 28 02:04:24 1999 Jerry Quinn <jquinn@nortelnetworks.com>
- Jeff Law <law@cygnus.com>
-
- * hppa.h (pa_opcodes): Add "pushnom" and "pushbts".
-
- * hppa.h (pa_opcodes): Mark all PA2.0 opcodes with FLAG_STRICT.
-
- * hppa.h (pa_opcodes): Change xmpyu, fmpyfadd,
- and fmpynfadd to use 'J' and 'K' instead of 'E' and 'X'.
-
-1999-07-13 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: Add "undocumented" AMD 3DNow! pf2iw, pi2fw, pswapw insns.
-
-Thu Jul 1 00:17:24 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (struct pa_opcode): Add new field "flags".
- (FLAGS_STRICT): Define.
-
-Fri Jun 25 04:22:04 1999 Jerry Quinn <jquinn@nortelnetworks.com>
- Jeff Law <law@cygnus.com>
-
- * hppa.h (pa_opcodes): Add pa2.0 clrbts instruction.
-
- * hppa.h (pa_opcodes): Add entries for mfia and mtsarcm instructions.
-
-1999-06-23 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: Allow `l' suffix on bswap. Allow `w' suffix on arpl,
- lldt, lmsw, ltr, str, verr, verw. Add FP flag to fcmov*. Add FP
- flag to fcomi and friends.
-
-Fri May 28 15:26:11 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (pa_opcodes): Move integer arithmetic instructions after
- integer logical instructions.
-
-1999-05-28 Linus Nordberg <linus.nordberg@canit.se>
-
- * m68k.h: Document new formats `E', `G', `H' and new places `N',
- `n', `o'.
-
- * m68k.h: Define mcf5206e, mcf5307, mcf. Document new format `u'
- and new places `m', `M', `h'.
-
-Thu May 27 04:13:54 1999 Joel Sherrill (joel@OARcorp.com
-
- * hppa.h (pa_opcodes): Add several processor specific system
- instructions.
-
-Wed May 26 16:57:44 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (pa_opcodes): Add second entry for "comb", "comib",
- "addb", and "addib" to be used by the disassembler.
-
-1999-05-12 Alan Modra <alan@apri.levels.unisa.edu.au>
-
- * i386.h (ReverseModrm): Remove all occurences.
- (InvMem): Add to control/debug/test mov insns, movhlps, movlhps,
- movmskps, pextrw, pmovmskb, maskmovq.
- Change NoSuf to FP on all MMX, XMM and AMD insns as these all
- ignore the data size prefix.
-
- * i386.h (i386_optab, i386_regtab): Add support for PIII SIMD.
- Mostly stolen from Doug Ledford <dledford@redhat.com>
-
-Sat May 8 23:27:35 1999 Richard Henderson <rth@cygnus.com>
-
- * ppc.h (PPC_OPCODE_64_BRIDGE): New.
-
-1999-04-14 Doug Evans <devans@casey.cygnus.com>
-
- * cgen.h (CGEN_ATTR): Delete member num_nonbools.
- (CGEN_ATTR_TYPE): Update.
- (CGEN_ATTR_MASK): Number booleans starting at 0.
- (CGEN_ATTR_VALUE): Update.
- (CGEN_INSN_ATTR): Update.
-
-Mon Apr 12 23:43:27 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (fmpyfadd, fmpynfadd, fneg, fnegabs): New PA2.0
- instructions.
-
-Tue Mar 23 11:24:38 1999 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (bb, bvb): Tweak opcode/mask.
-
-
-1999-03-22 Doug Evans <devans@casey.cygnus.com>
-
- * cgen.h (CGEN_ISA,CGEN_MACH): New typedefs.
- (struct cgen_cpu_desc): Rename member mach to machs. New member isas.
- New members word_bitsize,default_insn_bitsize,base_insn-bitsize,
- min_insn_bitsize,max_insn_bitsize,isa_table,mach_table,rebuild_tables.
- Delete member max_insn_size.
- (enum cgen_cpu_open_arg): New enum.
- (cpu_open): Update prototype.
- (cpu_open_1): Declare.
- (cgen_set_cpu): Delete.
-
-1999-03-11 Doug Evans <devans@casey.cygnus.com>
-
- * cgen.h (CGEN_HW_TABLE): Delete `num_init_entries' member.
- (CGEN_OPERAND_NIL): New macro.
- (CGEN_OPERAND): New member `type'.
- (@arch@_cgen_operand_table): Delete decl.
- (CGEN_OPERAND_INDEX,CGEN_OPERAND_TYPE,CGEN_OPERAND_ENTRY): Delete.
- (CGEN_OPERAND_TABLE): New struct.
- (cgen_operand_lookup_by_name,cgen_operand_lookup_by_num): Declare.
- (CGEN_OPINST): Pointer to operand table entry replaced with enum.
- (CGEN_CPU_TABLE): New member `isa'. Change member `operand_table',
- now a CGEN_OPERAND_TABLE. Add CGEN_CPU_DESC arg to
- {get,set}_{int,vma}_operand.
- (@arch@_cgen_cpu_open): New arg `isa'.
- (cgen_set_cpu): Ditto.
-
-Fri Feb 26 02:36:45 1999 Richard Henderson <rth@cygnus.com>
-
- * i386.h: Fill in cmov and fcmov alternates. Add fcomi short forms.
-
-1999-02-25 Doug Evans <devans@casey.cygnus.com>
-
- * cgen.h (enum cgen_asm_type): Add CGEN_ASM_NONE.
- (CGEN_HW_ENTRY): Delete member `next'. Change type of `type' to
- enum cgen_hw_type.
- (CGEN_HW_TABLE): New struct.
- (hw_table): Delete declaration.
- (CGEN_OPERAND): Change member hw to hw_type, change type from pointer
- to table entry to enum.
- (CGEN_OPINST): Ditto.
- (CGEN_CPU_TABLE): Change member hw_list to hw_table.
-
-Sat Feb 13 14:13:44 1999 Richard Henderson <rth@cygnus.com>
-
- * alpha.h (AXP_OPCODE_EV6): New.
- (AXP_OPCODE_NOPAL): Include it.
-
-1999-02-09 Doug Evans <devans@casey.cygnus.com>
-
- * cgen.h (CGEN_CPU_DESC): Renamed from CGEN_OPCODE_DESC.
- All uses updated. New members int_insn_p, max_insn_size,
- parse_operand,insert_operand,extract_operand,print_operand,
- sizeof_fields,set_fields_bitsize,get_int_operand,set_int_operand,
- get_vma_operand,set_vma_operand,parse_handlers,insert_handlers,
- extract_handlers,print_handlers.
- (CGEN_ATTR): Change type of num_nonbools to unsigned int.
- (CGEN_ATTR_BOOL_OFFSET): New macro.
- (CGEN_ATTR_MASK): Subtract it to compute bit number.
- (CGEN_ATTR_VALUE): Redo bool/nonbool attr calculation.
- (cgen_opcode_handler): Renamed from cgen_base.
- (CGEN_HW_ATTR_VALUE): Renamed from CGEN_HW_ATTR, all uses updated.
- (CGEN_OPERAND_ATTR_VALUE): Renamed from CGEN_OPERAND_ATTR,
- all uses updated.
- (CGEN_OPERAND_INDEX): Rewrite to use table entry, not global.
- (enum cgen_opinst_type): Renamed from cgen_operand_instance_type.
- (CGEN_IFLD_ATTR_VALUE): Renamed from CGEN_IFLD_ATTR, all uses updated.
- (CGEN_OPCODE,CGEN_IBASE): New types.
- (CGEN_INSN): Rewrite.
- (CGEN_{ASM,DIS}_HASH*): Delete.
- (init_opcode_table,init_ibld_table): Declare.
- (CGEN_INSN_ATTR): New type.
-
-Mon Feb 1 21:09:14 1999 Catherine Moore <clm@cygnus.com>
-
- * i386.h (d_Suf, x_Suf, sld_Suf, sldx_Suf, bwld_Suf): Define.
- (x_FP, d_FP, dls_FP, sldx_FP): Define.
- Change *Suf definitions to include x and d suffixes.
- (movsx): Use w_Suf and b_Suf.
- (movzx): Likewise.
- (movs): Use bwld_Suf.
- (fld): Change ordering. Use sld_FP.
- (fild): Add Intel Syntax equivalent of fildq.
- (fst): Use sld_FP.
- (fist): Use sld_FP.
- (fstp): Use sld_FP. Add x_FP version.
- (fistp): LLongMem version for Intel Syntax.
- (fcom, fcomp): Use sld_FP.
- (fadd, fiadd, fsub): Use sld_FP.
- (fsubr): Use sld_FP.
- (fmul, fimul, fdvi, fidiv, fdivr): Use sld_FP.
-
-1999-01-27 Doug Evans <devans@casey.cygnus.com>
-
- * cgen.h (enum cgen_mode): Add CGEN_MODE_TARGET_MAX, CGEN_MODE_INT,
- CGEN_MODE_UINT.
-
-1999-01-16 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (bv): Fix mask.
-
-1999-01-05 Doug Evans <devans@casey.cygnus.com>
-
- * cgen.h (CGEN_ATTR_VALUE_TYPE): New typedef.
- (CGEN_ATTR): Use it.
- (CGEN_ATTR_TYPE,CGEN_ATTR_ENTRY): Ditto.
- (CGEN_ATTR_TABLE): New member dfault.
-
-1998-12-30 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips.h (MIPS16_INSN_BRANCH): New.
-
-Wed Dec 9 10:38:48 1998 David Taylor <taylor@texas.cygnus.com>
-
- The following is part of a change made by Edith Epstein
- <eepstein@sophia.cygnus.com> as part of a project to merge in
- changes by HP; HP did not create ChangeLog entries.
-
- * hppa.h (completer_chars): list of chars to not put a space
- after.
-
-Sun Dec 6 13:21:34 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h (i386_optab): Permit w suffix on processor control and
- status word instructions.
-
-1998-11-30 Doug Evans <devans@casey.cygnus.com>
-
- * cgen.h (struct cgen_hw_entry): Delete const on attrs member.
- (struct cgen_keyword_entry): Ditto.
- (struct cgen_operand): Ditto.
- (CGEN_IFLD): New typedef, with associated access macros.
- (CGEN_IFMT): New typedef, with associated access macros.
- (CGEN_IFMT): Renamed from CGEN_FORMAT. New member `iflds'.
- (CGEN_IVALUE): New typedef.
- (struct cgen_insn): Delete const on syntax,attrs members.
- `format' now points to format data. Type of `value' is now
- CGEN_IVALUE.
- (struct cgen_opcode_table): New member ifld_table.
-
-1998-11-18 Doug Evans <devans@casey.cygnus.com>
-
- * cgen.h (cgen_extract_fn): Update type of `base_insn' arg.
- (CGEN_OPERAND_INSTANCE): New member `attrs'.
- (CGEN_OPERAND_INSTANCE_{ATTRS,ATTR}): New macros.
- (cgen_dis_lookup_insn): Update type of `base_insn' arg.
- (cgen_opcode_table): Update type of dis_hash fn.
- (extract_operand): Update type of `insn_value' arg.
-
-Thu Oct 29 11:38:36 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * cgen.h (CGEN_VERSION_{MAJOR,MINOR,FIXLEVEL}): Delete.
-
-Tue Oct 27 08:57:59 1998 Gavin Romig-Koch <gavin@cygnus.com>
-
- * mips.h (INSN_MULT): Added.
-
-Tue Oct 20 11:31:34 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (MAX_MNEM_SIZE): Rename from MAX_OPCODE_SIZE.
-
-Mon Oct 19 12:50:00 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (CGEN_INSN_INT): New typedef.
- (CGEN_INT_INSN_P): Renamed from CGEN_INT_INSN.
- (CGEN_INSN_BYTES): Renamed from cgen_insn_t.
- (CGEN_INSN_BYTES_PTR): New typedef.
- (CGEN_EXTRACT_INFO): New typedef.
- (cgen_insert_fn,cgen_extract_fn): Update.
- (cgen_opcode_table): New member `insn_endian'.
- (assemble_insn,lookup_insn,lookup_get_insn_operands): Update.
- (insert_operand,extract_operand): Update.
- (cgen_get_insn_value,cgen_put_insn_value): Add prototypes.
-
-Fri Oct 9 13:38:13 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (CGEN_ATTR_BOOLS): New macro.
- (struct CGEN_HW_ENTRY): New member `attrs'.
- (CGEN_HW_ATTR): New macro.
- (struct CGEN_OPERAND_INSTANCE): New member `name'.
- (CGEN_INSN_INVALID_P): New macro.
-
-Mon Oct 5 00:21:07 1998 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h: Add "fid".
-
-Sun Oct 4 21:00:00 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- From Robert Andrew Dale <rob@nb.net>
- * i386.h (i386_optab): Add AMD 3DNow! instructions.
- (AMD_3DNOW_OPCODE): Define.
-
-Tue Sep 22 17:53:47 1998 Nick Clifton <nickc@cygnus.com>
-
- * d30v.h (EITHER_BUT_PREFER_MU): Define.
-
-Mon Aug 10 14:09:38 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * cgen.h (cgen_insn): #if 0 out element `cdx'.
-
-Mon Aug 3 12:21:57 1998 Doug Evans <devans@seba.cygnus.com>
-
- Move all global state data into opcode table struct, and treat
- opcode table as something that is "opened/closed".
- * cgen.h (CGEN_OPCODE_DESC): New type.
- (all fns): New first arg of opcode table descriptor.
- (cgen_set_parse_operand_fn): Add prototype.
- (cgen_current_machine,cgen_current_endian): Delete.
- (CGEN_OPCODE_TABLE): New members mach,endian,operand_table,
- parse_operand_fn,asm_hash_table,asm_hash_table_entries,
- dis_hash_table,dis_hash_table_entries.
- (opcode_open,opcode_close): Add prototypes.
-
- * cgen.h (cgen_insn): New element `cdx'.
-
-Thu Jul 30 21:44:25 1998 Frank Ch. Eigler <fche@cygnus.com>
-
- * d30v.h (FLAG_LKR): New flag for "left-kills-right" instructions.
-
-Tue Jul 28 10:59:07 1998 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h: Add "no_match_operands" field for instructions.
- (MN10300_MAX_OPERANDS): Define.
-
-Fri Jul 24 11:44:24 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * cgen.h (cgen_macro_insn_count): Declare.
-
-Tue Jul 21 13:12:13 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (CGEN_VERSION_{MAJOR,MINOR,FIXLEVEL}): Define.
- (cgen_insert_fn,cgen_extract_fn): New arg `pc'.
- (get_operand,put_operand): Replaced with get_{int,vma}_operand,
- set_{int,vma}_operand.
-
-Fri Jun 26 11:09:06 1998 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h: Add "machine" field for instructions.
- (MN103, AM30): Define machine types.
-
-Fri Jun 19 16:09:09 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: Use FP, not sl_Suf, for fxsave and fxrstor.
-
-1998-06-18 Ulrich Drepper <drepper@cygnus.com>
-
- * i386.h: Add support for fxsave, fxrstor, sysenter and sysexit.
-
-Sat Jun 13 11:31:35 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (i386_optab): Add general form of aad and aam. Add ud2a
- and ud2b.
- (i386_regtab): Allow cr0..7, db0..7, dr0..7, tr0..7, not just
- those that happen to be implemented on pentiums.
-
-Tue Jun 9 12:16:01 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: Change occurences of Data16 to Size16, Data32 to Size32,
- IgnoreDataSize to IgnoreSize. Flag address and data size prefixes
- with Size16|IgnoreSize or Size32|IgnoreSize.
-
-Mon Jun 8 12:15:52 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (REPNE): Rename to REPNE_PREFIX_OPCODE.
- (REPE): Rename to REPE_PREFIX_OPCODE.
- (i386_regtab_end): Remove.
- (i386_prefixtab, i386_prefixtab_end): Remove.
- (i386_optab): Use NULL as sentinel rather than "" to suit rewrite
- of md_begin.
- (MAX_OPCODE_SIZE): Define.
- (i386_optab_end): Remove.
- (sl_Suf): Define.
- (sl_FP): Use sl_Suf.
-
- * i386.h (i386_optab): Allow 16 bit displacement for `mov
- mem,acc'. Combine 16 and 32 bit forms of various insns. Allow 16
- bit form of ljmp. Add IsPrefix modifier to prefixes. Add addr32,
- data32, dword, and adword prefixes.
- (i386_regtab): Add BaseIndex modifier to valid 16 bit base/index
- regs.
-
-Fri Jun 5 23:42:43 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (i386_regtab): Remove BaseIndex modifier from esp.
-
- * i386.h: Allow `l' suffix on fld, fst, fstp, fcom, fcomp with
- register operands, because this is a common idiom. Flag them with
- a warning. Allow illegal faddp, fsubp, fsubrp, fmulp, fdivp,
- fdivrp because gcc erroneously generates them. Also flag with a
- warning.
-
- * i386.h: Add suffix modifiers to most insns, and tighter operand
- checks in some cases. Fix a number of UnixWare compatibility
- issues with float insns. Merge some floating point opcodes, using
- new FloatMF modifier.
- (WORD_PREFIX_OPCODE): Rename to DATA_PREFIX_OPCODE for
- consistency.
-
- * i386.h: Change occurence of ShortformW to W|ShortForm. Add
- IgnoreDataSize where appropriate.
-
-Wed Jun 3 18:28:45 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: (one_byte_segment_defaults): Remove.
- (two_byte_segment_defaults): Remove.
- (i386_regtab): Add BaseIndex to 32 bit regs reg_type.
-
-Fri May 15 15:59:04 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (cgen_hw_lookup_by_name): Renamed from cgen_hw_lookup.
- (cgen_hw_lookup_by_num): Declare.
-
-Thu May 7 09:27:58 1998 Frank Ch. Eigler <fche@cygnus.com>
-
- * mips.h (OP_{SH,MASK}_CODE2): Added "q" operand format for lower
- ten bits of MIPS ISA1 "break" instruction, and for "sdbbp"
-
-Thu May 7 02:14:08 1998 Doug Evans <devans@charmed.cygnus.com>
-
- * cgen.h (cgen_asm_init_parse): Delete.
- (cgen_save_fixups,cgen_restore_fixups,cgen_swap_fixups): Delete.
- (cgen_asm_record_register,cgen_asm_finish_insn): Delete.
-
-Mon Apr 27 10:13:11 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (CGEN_ATTR_TYPE): Delete `const', moved to uses.
- (cgen_asm_finish_insn): Update prototype.
- (cgen_insn): New members num, data.
- (CGEN_INSN_TABLE): Members asm_hash, asm_hash_table_size,
- dis_hash, dis_hash_table_size moved to ...
- (CGEN_OPCODE_TABLE). Here. Renamed from CGEN_OPCODE_DATA.
- All uses updated. New members asm_hash_p, dis_hash_p.
- (CGEN_MINSN_EXPANSION): New struct.
- (cgen_expand_macro_insn): Declare.
- (cgen_macro_insn_count): Declare.
- (get_insn_operands): Update prototype.
- (lookup_get_insn_operands): Declare.
-
-Tue Apr 21 17:11:32 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (i386_optab): Change iclrKludge and imulKludge to
- regKludge. Add operands types for string instructions.
-
-Mon Apr 20 14:40:29 1998 Tom Tromey <tromey@cygnus.com>
-
- * i386.h (X): Renamed from `Z_' to preserve formatting of opcode
- table.
-
-Sun Apr 19 13:54:06 1998 Tom Tromey <tromey@cygnus.com>
-
- * i386.h (Z_): Renamed from `_' to avoid clash with common alias
- for `gettext'.
-
-Fri Apr 3 12:04:48 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h: Remove NoModrm flag from all insns: it's never checked.
- Add IsString flag to string instructions.
- (IS_STRING): Don't define.
- (LOCK_PREFIX_OPCODE, CS_PREFIX_OPCODE, DS_PREFIX_OPCODE): Define.
- (ES_PREFIX_OPCODE, FS_PREFIX_OPCODE, GS_PREFIX_OPCODE): Define.
- (SS_PREFIX_OPCODE): Define.
-
-Mon Mar 30 21:31:56 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h: Revert March 24 patch; no more LinearAddress.
-
-Mon Mar 30 10:25:54 1998 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (i386_optab): Remove fwait (9b) from all floating point
- instructions, and instead add FWait opcode modifier. Add short
- form of fldenv and fstenv.
- (FWAIT_OPCODE): Define.
-
- * i386.h (i386_optab): Change second operand constraint of `mov
- sreg,reg|mem' instruction from Reg16|Mem to WordReg|WordMem to
- allow legal instructions such as `movl %gs,%esi'
-
-Fri Mar 27 18:30:52 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * h8300.h: Various changes to fully bracket initializers.
-
-Tue Mar 24 18:32:47 1998 H.J. Lu <hjl@gnu.org>
-
- * i386.h: Set LinearAddress for lidt and lgdt.
-
-Mon Mar 2 10:44:07 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (CGEN_BOOL_ATTR): New macro.
-
-Thu Feb 26 15:54:31 1998 Michael Meissner <meissner@cygnus.com>
-
- * d30v.h (FLAG_DELAY): New flag for delayed branches/jumps.
-
-Mon Feb 23 10:38:21 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (CGEN_CAT3): Delete. Use CONCAT3 now.
- (cgen_insn): Record syntax and format entries here, rather than
- separately.
-
-Tue Feb 17 21:42:56 1998 Nick Clifton <nickc@cygnus.com>
-
- * cgen.h (CGEN_SYNTAX_MAKE_FIELD): New macro.
-
-Tue Feb 17 16:00:56 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (cgen_insert_fn): Change type of result to const char *.
- (cgen_parse_{signed,unsigned}_integer): Delete min,max arguments.
- (CGEN_{INSN,KEYWORD,OPERAND}_NBOOL_ATTRS): Renamed from ..._MAX_ATTRS.
-
-Thu Feb 12 18:30:41 1998 Doug Evans <devans@canuck.cygnus.com>
-
- * cgen.h (lookup_insn): New argument alias_p.
-
-Thu Feb 12 03:41:00 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
-
-Fix rac to accept only a0:
- * d10v.h (OPERAND_ACC): Split into:
- (OPERAND_ACC0, OPERAND_ACC1) .
- (OPERAND_GPR): Define.
-
-Wed Feb 11 17:31:53 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (CGEN_FIELDS): Define here.
- (CGEN_HW_ENTRY): New member `type'.
- (hw_list): Delete decl.
- (enum cgen_mode): Declare.
- (CGEN_OPERAND): New member `hw'.
- (enum cgen_operand_instance_type): Declare.
- (CGEN_OPERAND_INSTANCE): New type.
- (CGEN_INSN): New member `operands'.
- (CGEN_OPCODE_DATA): Make hw_list const.
- (get_insn_operands,lookup_insn): Add prototypes for.
-
-Tue Feb 3 17:11:23 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (CGEN_INSN_MAX_ATTRS): Renamed from CGEN_MAX_INSN_ATTRS.
- (CGEN_HW_ENTRY): Move `next' entry to end of struct.
- (CGEN_KEYWORD_MAX_ATTRS): Renamed from CGEN_MAX_KEYWORD_ATTRS.
- (CGEN_OPERAND_MAX_ATTRS): Renamed from CGEN_MAX_OPERAND_ATTRS.
-
-Mon Feb 2 19:19:15 1998 Ian Lance Taylor <ian@cygnus.com>
-
- * cgen.h: Correct typo in comment end marker.
-
-Mon Feb 2 17:10:38 1998 Steve Haworth <steve@pm.cse.rmit.EDU.AU>
-
- * tic30.h: New file.
-
-Thu Jan 22 17:54:56 1998 Nick Clifton <nickc@cygnus.com>
-
- * cgen.h: Add prototypes for cgen_save_fixups(),
- cgen_restore_fixups(), and cgen_swap_fixups(). Change prototype
- of cgen_asm_finish_insn() to return a char *.
-
-Wed Jan 14 17:21:43 1998 Nick Clifton <nickc@cygnus.com>
-
- * cgen.h: Formatting changes to improve readability.
-
-Mon Jan 12 11:37:36 1998 Doug Evans <devans@seba.cygnus.com>
-
- * cgen.h (*): Clean up pass over `struct foo' usage.
- (CGEN_ATTR): Make unsigned char.
- (CGEN_ATTR_TYPE): Update.
- (CGEN_ATTR_{ENTRY,TABLE}): New types.
- (cgen_base): Move member `attrs' to cgen_insn.
- (CGEN_KEYWORD): New member `null_entry'.
- (CGEN_{SYNTAX,FORMAT}): New types.
- (cgen_insn): Format and syntax separated from each other.
-
-Tue Dec 16 15:15:52 1997 Michael Meissner <meissner@cygnus.com>
-
- * d30v.h (d30v_opcode): Reorder flags somewhat, add new flags for
- 2 word load/store, ADDppp/SUBppp, 16/32 bit multiply. Make
- flags_{used,set} long.
- (d30v_operand): Make flags field long.
-
-Mon Dec 1 12:24:44 1997 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
-
- * m68k.h: Fix comment describing operand types.
-
-Sun Nov 23 22:31:27 1997 Michael Meissner <meissner@cygnus.com>
-
- * d30v.h (SHORT_CMPU): Add case for cmpu instruction, and move
- everything else after down.
-
-Tue Nov 18 18:45:14 1997 J"orn Rennecke <amylaar@cygnus.co.uk>
-
- * d10v.h (OPERAND_FLAG): Split into:
- (OPERAND_FFLAG, OPERAND_CFLAG) .
-
-Thu Nov 13 11:04:24 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips.h (struct mips_opcode): Changed comments to reflect new
- field usage.
-
-Fri Oct 24 22:36:20 1997 Ken Raeburn <raeburn@cygnus.com>
-
- * mips.h: Added to comments a quick-ref list of all assigned
- operand type characters.
- (OP_{MASK,SH}_PERFREG): New macros.
-
-Wed Oct 22 17:28:33 1997 Richard Henderson <rth@cygnus.com>
-
- * sparc.h: Add '_' and '/' for v9a asr's.
- Patch from David Miller <davem@vger.rutgers.edu>
-
-Tue Oct 14 13:22:29 1997 Jeffrey A Law (law@cygnus.com)
-
- * h8300.h: Bit ops with absolute addresses not in the 8 bit
- area are not available in the base model (H8/300).
-
-Thu Sep 25 13:03:41 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k.h: Remove documentation of ` operand specifier.
-
-Wed Sep 24 19:00:34 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k.h: Document q and v operand specifiers.
-
-Mon Sep 15 18:28:37 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h (struct v850_opcode): Add processors field.
- (PROCESSOR_V850, PROCESSOR_ALL): New bit constants.
- (PROCESSOR_V850E, PROCESSOR_NOT_V850): New bit constants.
- (PROCESSOR_V850EA): New bit constants.
-
-Mon Sep 15 11:29:43 1997 Ken Raeburn <raeburn@cygnus.com>
-
- Merge changes from Martin Hunt:
-
- * d30v.h: Allow up to 64 control registers. Add
- SHORT_A5S format.
-
- * d30v.h (LONG_Db): New form for delayed branches.
-
- * d30v.h: (LONG_Db): New form for repeati.
-
- * d30v.h (SHORT_D2B): New form.
-
- * d30v.h (SHORT_A2): New form.
-
- * d30v.h (OPERAND_2REG): Add new operand to indicate 2
- registers are used. Needed for VLIW optimization.
-
-Mon Sep 8 14:05:45 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * cgen.h: Move assembler interface section
- up so cgen_parse_operand_result is defined for cgen_parse_address.
- (cgen_parse_address): Update prototype.
-
-Tue Sep 2 15:32:32 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h (V850_OPREAND_ADJUST_SHORT_MEMORY): Removed.
-
-Tue Aug 26 12:21:52 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h (two_byte_segment_defaults): Correct base register 5 in
- modes 1 and 2 to be ss rather than ds. From Gabriel Paubert
- <paubert@iram.es>.
-
- * i386.h: Set ud2 to 0x0f0b. From Gabriel Paubert
- <paubert@iram.es>.
-
- * i386.h: Comment fixes for ficom[p]?{s,l} from Gabriel Paubert
- <paubert@iram.es>.
-
- * i386.h (JUMP_ON_CX_ZERO): Uncomment (define again).
- (JUMP_ON_ECX_ZERO): Remove commented out macro.
-
-Fri Aug 22 10:38:29 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h (V850_NOT_R0): New flag.
-
-Mon Aug 18 11:05:58 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h (struct v850_opcode): Remove flags field.
-
-Wed Aug 13 18:45:48 1997 Nick Clifton <nickc@cygnus.com>
-
- * v850.h (struct v850_opcode): Add flags field.
- (struct v850_operand): Extend meaning of 'bits' and 'shift'
- fields.
- (V850E_INSTRUCTION, V850EA_INSTRUCTION): New flags.
- (V850E_PUSH_POP, V850E_IMMEDIATE16, V850E_IMMEDIATE32): New flags.
-
-Fri Aug 8 16:58:42 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * arc.h: New file.
-
-Thu Jul 24 21:16:58 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc.h (sparc_opcodes): Declare as const.
-
-Thu Jul 10 12:53:25 1997 Jeffrey A Law (law@cygnus.com)
-
- * mips.h (FP_S, FP_D): Define. Bitmasks indicating if an insn
- uses single or double precision floating point resources.
- (INSN_NO_ISA, INSN_ISA1): Define.
- (cpu specific INSN macros): Tweak into bitmasks outside the range
- of INSN_ISA field.
-
-Mon Jun 16 14:10:00 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- * i386.h: Fix pand opcode.
-
-Mon Jun 2 11:35:09 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips.h: Widen INSN_ISA and move it to a more convenient
- bit position. Add INSN_3900.
-
-Tue May 20 11:25:29 1997 Gavin Koch <gavin@cygnus.com>
-
- * mips.h (struct mips_opcode): added new field membership.
-
-Mon May 12 16:26:50 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- * i386.h (movd): only Reg32 is allowed.
-
- * i386.h: add fcomp and ud2. From Wayne Scott
- <wscott@ichips.intel.com>.
-
-Mon May 5 17:16:21 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h: Add MMX instructions.
-
-Mon May 5 12:45:19 1997 H.J. Lu <hjl@gnu.ai.mit.edu>
-
- * i386.h: Remove W modifier from conditional move instructions.
-
-Mon Apr 14 14:56:58 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h: Change the opcodes for fsubp, fsubrp, fdivp, and fdivrp
- with no arguments to match that generated by the UnixWare
- assembler.
-
-Thu Apr 10 14:35:00 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * cgen.h (<cpu>_cgen_assemble_insn): New arg for errmsg.
- (cgen_parse_operand_fn): Declare.
- (cgen_init_parse_operand): Declare.
- (cgen_parse_operand): Renamed from cgen_asm_parse_operand,
- new argument `want'.
- (enum cgen_parse_operand_result): Renamed from cgen_asm_result.
- (enum cgen_parse_operand_type): New enum.
-
-Sat Apr 5 13:14:05 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h: Revert last patch for the NON_BROKEN_OPCODES cases.
-
-Fri Apr 4 11:46:11 1997 Doug Evans <dje@canuck.cygnus.com>
-
- * cgen.h: New file.
-
-Fri Apr 4 14:02:32 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h: Correct opcode values for fsubp, fsubrp, fdivp, and
- fdivrp.
-
-Tue Mar 25 22:57:26 1997 Stu Grossman (grossman@critters.cygnus.com)
-
- * v850.h (extract): Make unsigned.
-
-Mon Mar 24 14:38:15 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h: Add iclr.
-
-Thu Mar 20 19:49:10 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h: Change DW to W for cmpxchg and xadd, since they don't
- take a direction bit.
-
-Sat Mar 15 19:03:29 1997 H.J. Lu <hjl@lucon.org>
-
- * sparc.h (sparc_opcode_lookup_arch): Use full prototype.
-
-Fri Mar 14 15:22:01 1997 Ian Lance Taylor <ian@cygnus.com>
-
- * sparc.h: Include <ansidecl.h>. Update function declarations to
- use prototypes, and to use const when appropriate.
-
-Thu Mar 6 14:18:30 1997 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (MN10300_OPERAND_RELAX): Define.
-
-Mon Feb 24 15:15:56 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v.h: Change pre_defined_registers to
- d10v_predefined_registers and reg_name_cnt to d10v_reg_name_cnt.
-
-Sat Feb 22 21:25:00 1997 Dawn Perchik <dawn@cygnus.com>
-
- * mips.h: Add macros for cop0, cop1 cop2 and cop3.
- Change mips_opcodes from const array to a pointer,
- and change bfd_mips_num_opcodes from const int to int,
- so that we can increase the size of the mips opcodes table
- dynamically.
-
-Fri Feb 21 16:34:18 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d30v.h (FLAG_X): Remove unused flag.
-
-Tue Feb 18 17:37:20 1997 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d30v.h: New file.
-
-Fri Feb 14 13:16:15 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (PDS_NAME): Macro to access name field of predefined symbols.
- (PDS_VALUE): Macro to access value field of predefined symbols.
- (tic80_next_predefined_symbol): Add prototype.
-
-Mon Feb 10 10:32:17 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (tic80_symbol_to_value): Change prototype to match
- change in function, added class parameter.
-
-Thu Feb 6 17:30:15 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (TIC80_OPERAND_ENDMASK): Add for flagging TIc80
- endmask fields, which are somewhat weird in that 0 and 32 are
- treated exactly the same.
-
-Thu Jan 30 13:46:18 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h: Change all the OPERAND defines to use the form (1 << X)
- rather than a constant that is 2**X. Reorder them to put bits for
- operands that have symbolic names in the upper bits, so they can
- be packed into an int where the lower bits contain the value that
- corresponds to that symbolic name.
- (predefined_symbo): Add struct.
- (tic80_predefined_symbols): Declare array of translations.
- (tic80_num_predefined_symbols): Declare size of that array.
- (tic80_value_to_symbol): Declare function.
- (tic80_symbol_to_value): Declare function.
-
-Wed Jan 29 09:37:25 1997 Jeffrey A Law (law@cygnus.com)
-
- * mn10200.h (MN10200_OPERAND_RELAX): Define.
-
-Sat Jan 18 15:18:59 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (TIC80_NO_R0_DEST): Add for opcodes where r0 cannot
- be the destination register.
-
-Thu Jan 16 20:48:55 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (struct tic80_opcode): Change "format" field to "flags".
- (FMT_UNUSED, FMT_SI, FMT_LI, FMT_REG): Delete.
- (TIC80_VECTOR): Define a flag bit for the flags. This one means
- that the opcode can have two vector instructions in a single
- 32 bit word and we have to encode/decode both.
-
-Tue Jan 14 19:37:09 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (TIC80_OPERAND_PCREL): Renamed from
- TIC80_OPERAND_RELATIVE for PC relative.
- (TIC80_OPERAND_BASEREL): New flag bit for register
- base relative.
-
-Mon Jan 13 15:56:38 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (TIC80_OPERAND_FLOAT): Add for floating point operands.
-
-Mon Jan 6 10:51:15 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (TIC80_OPERAND_SCALED): Operand may have optional
- ":s" modifier for scaling.
-
-Sun Jan 5 12:12:19 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (TIC80_OPERAND_M_SI): Add operand modifier for ":m".
- (TIC80_OPERAND_M_LI): Ditto
-
-Sat Jan 4 19:02:44 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (TIC80_OPERAND_BITNUM): Renamed from TIC80_OPERAND_CC_SZ.
- (TIC80_OPERAND_CC): New define for condition code operand.
- (TIC80_OPERAND_CR): New define for control register operand.
-
-Fri Jan 3 16:22:23 1997 Fred Fish <fnf@cygnus.com>
-
- * tic80.h (struct tic80_opcode): Name changed.
- (struct tic80_opcode): Remove format field.
- (struct tic80_operand): Add insertion and extraction functions.
- (TIC80_OPERAND_*): Remove old bogus values, start adding new
- correct ones.
- (FMT_*): Ditto.
-
-Tue Dec 31 15:05:41 1996 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * v850.h (V850_OPERAND_ADJUST_SHORT_MEMORY): New flag to adjust
- type IV instruction offsets.
-
-Fri Dec 27 22:23:10 1996 Fred Fish <fnf@cygnus.com>
-
- * tic80.h: New file.
-
-Wed Dec 18 10:06:31 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10200.h (MN10200_OPERAND_NOCHECK): Define.
-
-Sat Dec 14 10:48:31 1996 Fred Fish <fnf@ninemoons.com>
-
- * mn10200.h: Fix comment, mn10200_operand not powerpc_operand.
- * mn10300.h: Fix comment, mn10300_operand not powerpc_operand.
- * v850.h: Fix comment, v850_operand not powerpc_operand.
-
-Mon Dec 9 16:45:39 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10200.h: Flesh out structures and definitions needed by
- the mn10200 assembler & disassembler.
-
-Tue Nov 26 10:46:56 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h: Add mips16 definitions.
-
-Mon Nov 25 17:56:54 1996 J.T. Conklin <jtc@cygnus.com>
-
- * m68k.h: Document new <, >, m, n, o and p operand specifiers.
-
-Wed Nov 20 10:59:41 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (MN10300_OPERAND_PCREL): Define.
- (MN10300_OPERAND_MEMADDR): Define.
-
-Tue Nov 19 13:30:40 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (MN10300_OPERAND_REG_LIST): Define.
-
-Wed Nov 6 13:41:08 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (MN10300_OPERAND_SPLIT): Define.
-
-Tue Nov 5 13:26:12 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (MN10300_OPERAND_EXTENDED): Define.
-
-Mon Nov 4 12:52:48 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (MN10300_OPERAND_REPEATED): Define.
-
-Fri Nov 1 10:31:02 1996 Richard Henderson <rth@tamu.edu>
-
- * alpha.h: Don't include "bfd.h"; private relocation types are now
- negative to minimize problems with shared libraries. Organize
- instruction subsets by AMASK extensions and PALcode
- implementation.
- (struct alpha_operand): Move flags slot for better packing.
-
-Tue Oct 29 12:19:10 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850.h (V850_OPERAND_RELAX): New operand flag.
-
-Thu Oct 10 14:29:11 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (FMT_*): Move operand format definitions
- here.
-
-Tue Oct 8 14:48:07 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (MN10300_OPERAND_PAREN): Define.
-
-Mon Oct 7 16:52:11 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10300.h (mn10300_opcode): Add "format" field.
- (MN10300_OPERAND_*): Define.
-
-Thu Oct 3 10:33:46 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10x00.h: Delete.
- * mn10200.h, mn10300.h: New files.
-
-Wed Oct 2 21:31:26 1996 Jeffrey A Law (law@cygnus.com)
-
- * mn10x00.h: New file.
-
-Fri Sep 27 18:26:46 1996 Stu Grossman (grossman@critters.cygnus.com)
-
- * v850.h: Add new flag to indicate this instruction uses a PC
- displacement.
-
-Fri Sep 13 14:58:13 1996 Jeffrey A Law (law@cygnus.com)
-
- * h8300.h (stmac): Add missing instruction.
-
-Sat Aug 31 16:02:03 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850.h (v850_opcode): Remove "size" field. Add "memop"
- field.
-
-Fri Aug 23 10:39:08 1996 Jeffrey A Law (law@cygnus.com)
-
- * v850.h (V850_OPERAND_EP): Define.
-
- * v850.h (v850_opcode): Add size field.
-
-Thu Aug 22 16:51:25 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * v850.h (v850_operands): Add insert and extract fields, pointers
- to functions used to handle unusual operand encoding.
- (V850_OPERAND_REG, V850_OPERAND_SRG, V850_OPERAND_CC,
- V850_OPERAND_SIGNED): Defined.
-
-Wed Aug 21 17:45:10 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * v850.h (v850_operands): Add flags field.
- (OPERAND_REG, OPERAND_NUM): Defined.
-
-Tue Aug 20 14:52:02 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * v850.h: New file.
-
-Fri Aug 16 14:44:15 1996 James G. Smith <jsmith@cygnus.co.uk>
-
- * mips.h (OP_SH_LOCC, OP_SH_HICC, OP_MASK_CC, OP_SH_COP1NORM,
- OP_MASK_COP1NORM, OP_SH_COP1SPEC, OP_MASK_COP1SPEC,
- OP_MASK_COP1SCLR, OP_MASK_COP1CMP, OP_SH_COP1CMP, OP_SH_FORMAT,
- OP_MASK_FORMAT, OP_SH_TRUE, OP_MASK_TRUE, OP_SH_GE, OP_MASK_GE,
- OP_SH_UNSIGNED, OP_MASK_UNSIGNED, OP_SH_HINT, OP_MASK_HINT):
- Defined.
-
-Fri Aug 16 00:15:15 1996 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h (pitlb, pitlbe, iitlba, iitlbp, fic, fice): Accept
- a 3 bit space id instead of a 2 bit space id.
-
-Thu Aug 15 13:11:46 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v.h: Add some additional defines to support the
- assembler in determining which operations can be done in parallel.
-
-Tue Aug 6 11:13:22 1996 Jeffrey A Law (law@cygnus.com)
-
- * h8300.h (SN): Define.
- (eepmov.b): Renamed from "eepmov"
- (nop, bpt, rte, rts, sleep, clrmac): These have no size associated
- with them.
-
-Fri Jul 26 11:47:10 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v.h (OPERAND_SHIFT): New operand flag.
-
-Thu Jul 25 12:06:22 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v.h: Changes for divs, parallel-only instructions, and
- signed numbers.
-
-Mon Jul 22 11:21:15 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v.h (pd_reg): Define. Putting the definition here allows
- the assembler and disassembler to share the same struct.
-
-Mon Jul 22 12:15:25 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i960.h (i960_opcodes): "halt" takes an argument. From Stephen
- Williams <steve@icarus.com>.
-
-Wed Jul 17 14:46:38 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
-
- * d10v.h: New file.
-
-Thu Jul 11 12:09:15 1996 Jeffrey A Law (law@cygnus.com)
-
- * h8300.h (band, bclr): Force high bit of immediate nibble to zero.
-
-Wed Jul 3 14:30:12 1996 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * m68k.h (mcf5200): New macro.
- Document names of coldfire control registers.
-
-Tue Jul 2 23:05:45 1996 Jeffrey A Law (law@cygnus.com)
-
- * h8300.h (SRC_IN_DST): Define.
-
- * h8300.h (UNOP3): Mark the register operand in this insn
- as a source operand, not a destination operand.
- (SHIFT_2, SHIFT_IMM): Remove. Eliminate all references.
- (UNOP3): Change SHIFT_IMM to IMM for H8/S bitops. Mark
- register operand with SRC_IN_DST.
-
-Fri Jun 21 13:52:17 1996 Richard Henderson <rth@tamu.edu>
-
- * alpha.h: New file.
-
-Thu Jun 20 15:02:57 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * rs6k.h: Remove obsolete file.
-
-Wed Jun 19 15:29:38 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h: Correct opcode values for faddp, fsubp, fsubrp, fmulp,
- fdivp, and fdivrp. Add ffreep.
-
-Tue Jun 18 16:06:00 1996 Jeffrey A. Law <law@rtl.cygnus.com>
-
- * h8300.h: Reorder various #defines for readability.
- (ABS32SRC, ABS32DST, DSP32LIST, ABS32LIST, A32LIST): Define.
- (BITOP): Accept additional (unused) argument. All callers changed.
- (EBITOP): Likewise.
- (O_LAST): Bump.
- (ldc, stc, movb, movw, movl): Use 32bit offsets and absolutes.
-
- * h8300.h (EXR, SHIFT_2, MACREG, SHIFT_IMM, RDINC): Define.
- (O_TAS, O_CLRMAC, O_LDMAC, O_MAC, O_LDM, O_STM): Define.
- (BITOP, EBITOP): Handle new H8/S addressing modes for
- bit insns.
- (UNOP3): Handle new shift/rotate insns on the H8/S.
- (insns using exr): New instructions.
- (tas, mac, ldmac, clrmac, ldm, stm): New instructions.
-
-Thu May 23 16:56:48 1996 Jeffrey A Law (law@cygnus.com)
-
- * h8300.h (add.l): Undo Apr 5th change. The manual I had
- was incorrect.
-
-Mon May 6 23:38:22 1996 Jeffrey A Law (law@cygnus.com)
-
- * h8300.h (START): Remove.
- (MEMRELAX): Define. Mark absolute memory operands in mov.b, mov.w
- and mov.l insns that can be relaxed.
-
-Tue Apr 30 18:30:58 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i386.h: Remove Abs32 from lcall.
-
-Mon Apr 22 17:09:23 1996 Doug Evans <dje@blues.cygnus.com>
-
- * sparc.h (SPARC_OPCODE_ARCH_V9_P): New macro.
- (SLCPOP): New macro.
- Mark X,Y opcode letters as in use.
-
-Thu Apr 11 17:28:18 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * sparc.h (F_FLOAT, F_FBR): Define.
-
-Fri Apr 5 16:55:34 1996 Jeffrey A Law (law@cygnus.com)
-
- * h8300.h (ABS8MEM): Renamed from ABSMOV. Remove ABSMOV
- from all insns.
- (ABS8SRC,ABS8DST): Add ABS8MEM.
- (add.l): Fix reg+reg variant.
- (eepmov.w): Renamed from eepmovw.
- (ldc,stc): Fix many cases.
-
-Sun Mar 31 13:30:03 1996 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc.h (SPARC_OPCODE_ARCH_MASK): New macro.
-
-Thu Mar 7 15:08:23 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc.h (O): Mark operand letter as in use.
-
-Tue Feb 20 20:46:21 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc.h (sparc_{encode,decode}_sparclet_cpreg): Declare.
- Mark operand letters uU as in use.
-
-Mon Feb 19 01:59:08 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc.h (sparc_opcode_arch_val): Add SPARC_OPCODE_ARCH_SPARCLET.
- (sparc_opcode_arch): Delete member `conflicts'. Add `supported'.
- (SPARC_OPCODE_SUPPORTED): New macro.
- (SPARC_OPCODE_CONFLICT_P): Rewrite.
- (F_NOTV9): Delete.
-
-Fri Feb 16 12:23:34 1996 Jeffrey A Law (law@cygnus.com)
-
- * sparc.h (sparc_opcode_lookup_arch) Make return type in
- declaration consistent with return type in definition.
-
-Wed Feb 14 18:14:11 1996 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * i386.h (i386_optab): Remove Data32 from pushf and popf.
-
-Thu Feb 8 14:27:21 1996 James Carlson <carlson@xylogics.com>
-
- * i386.h (i386_regtab): Add 80486 test registers.
-
-Mon Feb 5 18:35:46 1996 Ian Lance Taylor <ian@cygnus.com>
-
- * i960.h (I_HX): Define.
- (i960_opcodes): Add HX instruction.
-
-Mon Jan 29 12:43:39 1996 Ken Raeburn <raeburn@cygnus.com>
-
- * i386.h: Fix waiting forms of finit, fstenv, fsave, fstsw, fstcw,
- and fclex.
-
-Wed Jan 24 22:36:59 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc.h (enum sparc_opcode_arch_val): Replaces sparc_architecture.
- (SPARC_OPCODE_CONFLICT_P): Renamed from ARCHITECTURES_CONFLICT_P.
- (bfd_* defines): Delete.
- (sparc_opcode_archs): Replaces architecture_pname.
- (sparc_opcode_lookup_arch): Declare.
- (NUMOPCODES): Delete.
-
-Mon Jan 22 08:24:32 1996 Doug Evans <dje@charmed.cygnus.com>
-
- * sparc.h (enum sparc_architecture): Add v9a.
- (ARCHITECTURES_CONFLICT_P): Update.
-
-Thu Dec 28 13:27:53 1995 John Hassey <hassey@rtp.dg.com>
-
- * i386.h: Added Pentium Pro instructions.
-
-Thu Nov 2 22:59:22 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k.h: Document new 'W' operand place.
-
-Tue Oct 24 10:49:10 1995 Jeffrey A Law (law@cygnus.com)
-
- * hppa.h: Add lci and syncdma instructions.
-
-Mon Oct 23 11:09:16 1995 James G. Smith <jsmith@pasanda.cygnus.co.uk>
-
- * mips.h: Added INSN_4100 flag to mark NEC VR4100 specific
- instructions.
-
-Mon Oct 16 10:28:15 1995 Michael Meissner <meissner@tiktok.cygnus.com>
-
- * ppc.h (PPC_OPCODE_{COMMON,ANY}): New opcode flags for
- assembler's -mcom and -many switches.
-
-Wed Oct 11 16:56:33 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * i386.h: Fix cmpxchg8b extension opcode description.
-
-Thu Oct 5 18:03:36 1995 Ken Raeburn <raeburn@cygnus.com>
-
- * i386.h: Add Pentium instructions wrmsr, rdtsc, rdmsr, cmpxchg8b,
- and register cr4.
-
-Tue Sep 19 15:26:43 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68k.h: Change comment: split type P into types 0, 1 and 2.
-
-Wed Aug 30 13:50:55 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc.h (sparc_{encode,decode}_prefetch): Declare.
-
-Tue Aug 29 15:34:58 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc.h (sparc_{encode,decode}_{asi,membar}): Declare.
-
-Wed Aug 2 18:32:19 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * m68kmri.h: Remove.
-
- * m68k.h: Move tables into opcodes/m68k-opc.c, leaving just the
- declarations. Remove F_ALIAS and flag field of struct
- m68k_opcode. Change arch field of struct m68k_opcode to unsigned
- int. Make name and args fields of struct m68k_opcode const.
-
-Wed Aug 2 08:16:46 1995 Doug Evans <dje@canuck.cygnus.com>
-
- * sparc.h (F_NOTV9): Define.
-
-Tue Jul 11 14:20:42 1995 Jeff Spiegel <jeffs@lsil.com>
-
- * mips.h (INSN_4010): Define.
-
-Wed Jun 21 18:49:51 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * m68k.h (TBL1): Reverse sense of "round" argument in result.
-
- Changes from Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>:
- * m68k.h: Fix argument descriptions of coprocessor
- instructions to allow only alterable operands where appropriate.
- [!NO_DEFAULT_SIZES]: An omitted size defaults to `w'.
- (m68k_opcode_aliases): Add more aliases.
-
-Fri Apr 14 22:15:34 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * m68k.h: Added explcitly short-sized conditional branches, and a
- bunch of aliases (fmov*, ftest*, tdivul) to support gcc's
- svr4-based configurations.
-
-Mon Mar 13 21:30:01 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- Mon Feb 27 08:36:39 1995 Bryan Ford <baford@cs.utah.edu>
- * i386.h: added missing Data16/Data32 flags to a few instructions.
-
-Wed Mar 8 15:19:53 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (OP_MASK_FR, OP_SH_FR): Define.
- (OP_MASK_BCC, OP_SH_BCC): Define.
- (OP_MASK_PREFX, OP_SH_PREFX): Define.
- (OP_MASK_CCC, OP_SH_CCC): Define.
- (INSN_READ_FPR_R): Define.
- (INSN_RFE): Delete.
-
-Wed Mar 8 03:13:23 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * m68k.h (enum m68k_architecture): Deleted.
- (struct m68k_opcode_alias): New type.
- (m68k_opcodes): Now const. Deleted opcode aliases with exactly
- matching constraints, values and flags. As a side effect of this,
- the MOTOROLA_SYNTAX_ONLY and MIT_SYNTAX_ONLY macros, which so far
- as I know were never used, now may need re-examining.
- (numopcodes): Now const.
- (m68k_opcode_aliases, numaliases): New variables.
- (endop): Deleted.
- [DONT_DEFINE_TABLE]: Declare numopcodes, numaliases, and
- m68k_opcode_aliases; update declaration of m68k_opcodes.
-
-Mon Mar 6 10:02:00 1995 Jeff Law (law@snake.cs.utah.edu)
-
- * hppa.h (delay_type): Delete unused enumeration.
- (pa_opcode): Replace unused delayed field with an architecture
- field.
- (pa_opcodes): Mark each instruction as either PA1.0 or PA1.1.
-
-Fri Mar 3 16:10:24 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (INSN_ISA4): Define.
-
-Fri Feb 24 19:13:37 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (M_DLA_AB, M_DLI): Define.
-
-Thu Feb 23 17:33:09 1995 Jeff Law (law@snake.cs.utah.edu)
-
- * hppa.h (fstwx): Fix single-bit error.
-
-Wed Feb 15 12:19:52 1995 Ian Lance Taylor <ian@cygnus.com>
-
- * mips.h (M_ULD, M_ULD_A, M_USD, M_USD_A): Define.
-
-Mon Feb 6 10:35:23 1995 J.T. Conklin <jtc@rtl.cygnus.com>
-
- * i386.h: added cpuid instruction , and dr[0-7] aliases for the
- debug registers. From Charles Hannum (mycroft@netbsd.org).
-
-Mon Feb 6 03:31:54 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- Changes from Bryan Ford <baford@schirf.cs.utah.edu> for 16-bit
- i386 support:
- * i386.h (MOV_AX_DISP32): New macro.
- (i386_optab): Added Data16 and Data32 as needed. Added "w" forms
- of several call/return instructions.
- (ADDR_PREFIX_OPCODE): New macro.
-
-Mon Jan 23 16:45:43 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- Sat Jan 21 17:50:38 1995 Pat Rankin (rankin@eql.caltech.edu)
-
- * vax.h (struct vot_wot, field `args'): Make it pointer to const
- char.
- (struct vot, field `name'): ditto.
-
-Thu Jan 19 14:47:53 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
-
- * vax.h: Supply and properly group all values in end sentinel.
-
-Tue Jan 17 10:55:30 1995 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * mips.h (INSN_ISA, INSN_4650): Define.
-
-Wed Oct 19 13:34:17 1994 Ian Lance Taylor <ian@sanguine.cygnus.com>
-
- * a29k.h: Add operand type 'I' for `inv' and `iretinv'. On
- systems with a separate instruction and data cache, such as the
- 29040, these instructions take an optional argument.
-
-Wed Sep 14 17:44:20 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * mips.h (INSN_STORE_MEMORY): Correct value to not conflict with
- INSN_TRAP.
-
-Tue Sep 6 11:39:08 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
-
- * mips.h (INSN_STORE_MEMORY): Define.
-
-Thu Jul 28 19:28:07 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * sparc.h: Document new operand type 'x'.
-
-Tue Jul 26 17:48:05 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * i960.h (I_CX2): New instruction category. It includes
- instructions available on Cx and Jx processors.
- (I_JX): New instruction category, for JX-only instructions.
- (i960_opcodes): Put eshro and sysctl in I_CX2 category. Added
- Jx-only instructions, in I_JX category.
-
-Wed Jul 13 18:43:47 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * ns32k.h (endop): Made pointer const too.
-
-Sun Jul 10 11:01:09 1994 Ian Dall (dall@hfrd.dsto.gov.au)
-
- * ns32k.h: Drop Q operand type as there is no correct use
- for it. Add I and Z operand types which allow better checking.
-
-Thu Jul 7 12:34:48 1994 Steve Chamberlain (sac@jonny.cygnus.com)
-
- * h8300.h (xor.l) :fix bit pattern.
- (L_2): New size of operand.
- (trapa): Use it.
-
-Fri Jun 10 16:38:11 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * m68k.h: Move "trap" before "tpcc" to change disassembly.
-
-Fri Jun 3 15:57:36 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * sparc.h: Include v9 definitions.
-
-Thu Jun 2 12:23:17 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * m68k.h (m68060): Defined.
- (m68040up, mfloat, mmmu): Include it.
- (struct m68k_opcode): Widen `arch' field.
- (m68k_opcodes): Updated for M68060. Removed comments that were
- instructions commented out by "JF" years ago.
-
-Thu Apr 28 18:31:14 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * m68k.h (struct m68k_opcode): Shorten `arch' field to 8 bits, and
- add a one-bit `flags' field.
- (F_ALIAS): New macro.
-
-Wed Apr 27 11:29:52 1994 Steve Chamberlain (sac@cygnus.com)
-
- * h8300.h (dec, inc): Get encoding right.
-
-Mon Apr 4 13:12:43 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc.h (struct powerpc_operand): Removed signedp field; just use
- a flag instead.
- (PPC_OPERAND_SIGNED): Define.
- (PPC_OPERAND_SIGNOPT): Define.
-
-Thu Mar 31 19:34:08 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * i386.h (IS_JUMP_ON_ECX_ZERO, "jcxz" pattern): Operand size
- prefix is 0x66, not 0x67. Patch from H.J. Lu (hlu@nynexst.com).
-
-Thu Mar 3 15:51:05 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * i386.h: Reverse last change. It'll be handled in gas instead.
-
-Thu Feb 24 15:29:05 1994 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * i386.h (sar): Disabled the two-operand Imm1 form, since it was
- slower on the 486 and used the implicit shift count despite the
- explicit operand. The one-operand form is still available to get
- the shorter form with the implicit shift count.
-
-Thu Feb 17 12:27:52 1994 Torbjorn Granlund (tege@mexican.cygnus.com)
-
- * hppa.h: Fix typo in fstws arg string.
-
-Wed Feb 9 21:23:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc.h (struct powerpc_opcode): Make operands field unsigned.
-
-Mon Feb 7 19:14:58 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc.h (PPC_OPCODE_601): Define.
-
-Fri Feb 4 23:43:50 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * hppa.h (addb): Use '@' for addb and addib pseudo ops.
- (so we can determine valid completers for both addb and addb[tf].)
-
- * hppa.h (xmpyu): No floating point format specifier for the
- xmpyu instruction.
-
-Fri Feb 4 23:36:52 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc.h (PPC_OPERAND_NEXT): Define.
- (PPC_OPERAND_NEGATIVE): Change value to make room for above.
- (struct powerpc_macro): Define.
- (powerpc_macros, powerpc_num_macros): Declare.
-
-Fri Jan 21 19:13:50 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * ppc.h: New file. Header file for PowerPC opcode table.
-
-Mon Jan 17 00:14:23 1994 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * hppa.h: More minor template fixes for sfu and copr (to allow
- for easier disassembly).
-
- * hppa.h: Fix templates for all the sfu and copr instructions.
-
-Wed Dec 15 15:12:42 1993 Ken Raeburn (raeburn@cujo.cygnus.com)
-
- * i386.h (push): Permit Imm16 operand too.
-
-Sat Dec 11 16:14:06 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * h8300.h (andc): Exists in base arch.
-
-Wed Dec 1 12:15:32 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * From Hisashi MINAMINO <minamino@sramhc.sra.co.jp>
- * hppa.h: #undef NONE to avoid conflict with hiux include files.
-
-Sun Nov 21 22:06:57 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * hppa.h: Add FP quadword store instructions.
-
-Wed Nov 17 17:13:16 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h: (M_J_A): Added.
- (M_LA): Removed.
-
-Mon Nov 8 12:12:47 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (OP_MASK_CACHE, OP_SH_CACHE): Define. From Ted Lemon
- <mellon@pepper.ncd.com>.
-
-Sun Nov 7 00:30:11 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
-
- * hppa.h: Immediate field in probei instructions is unsigned,
- not low-sign extended.
-
-Wed Nov 3 10:30:00 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * m88k.h (RRI10MASK): Change from 0xfc00ffe0 to 0xfc00fc00.
-
-Tue Nov 2 12:41:30 1993 Ken Raeburn (raeburn@rover.cygnus.com)
-
- * i386.h: Add "fxch" without operand.
-
-Mon Nov 1 18:13:03 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (M_JAL_1, M_JAL_2, M_JAL_A): Added.
-
-Sat Oct 2 22:26:11 1993 Jeffrey A Law (law@snake.cs.utah.edu)
-
- * hppa.h: Add gfw and gfr to the opcode table.
-
-Wed Sep 29 16:23:00 1993 K. Richard Pixley (rich@sendai.cygnus.com)
-
- * m88k.h: extended to handle m88110.
-
-Tue Sep 28 19:19:08 1993 Jeffrey A Law (law@snake.cs.utah.edu)
-
- * hppa.h (be, ble): Use operand type 'z' to denote absolute branch
- addresses.
-
-Tue Sep 14 14:04:35 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * i960.h (i960_opcodes): Properly bracket initializers.
-
-Mon Sep 13 12:50:52 1993 K. Richard Pixley (rich@sendai.cygnus.com)
-
- * m88k.h (BOFLAG): rewrite to avoid nested comment.
-
-Mon Sep 13 15:46:06 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * m68k.h (two): Protect second argument with parentheses.
-
-Fri Sep 10 16:29:47 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * i386.h (i386_optab): Added new instruction "rsm" (for i386sl).
- Deleted old in/out instructions in "#if 0" section.
-
-Thu Sep 9 17:42:19 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * i386.h (i386_optab): Properly bracket initializers.
-
-Wed Aug 25 13:50:56 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * hppa.h (pa_opcode): Use '|' for movb and movib insns. (From
- Jeff Law, law@cs.utah.edu).
-
-Mon Aug 23 16:55:03 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * i386.h (lcall): Accept Imm32 operand also.
-
-Mon Aug 23 12:43:11 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (M_ABSU): Removed (absolute value of unsigned number??).
- (M_DABS): Added.
-
-Thu Aug 19 15:08:37 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h (INSN_*): Changed values. Removed unused definitions.
- Added INSN_COND_BRANCH_LIKELY, INSN_ISA2 and INSN_ISA3. Split
- INSN_LOAD_DELAY into INSN_LOAD_MEMORY_DELAY and
- INSN_LOAD_COPROC_DELAY. Split INSN_COPROC_DELAY into
- INSN_COPROC_MOVE_DELAY and INSN_COPROC_MEMORY_DELAY.
- (M_*): Added new values for r6000 and r4000 macros.
- (ANY_DELAY): Removed.
-
-Wed Aug 18 15:37:48 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h: Added M_LI_S and M_LI_SS.
-
-Tue Aug 17 07:08:08 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- * h8300.h: Get some rare mov.bs correct.
-
-Thu Aug 5 09:15:17 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
-
- * sparc.h: Don't define const ourself; rely on ansidecl.h having
- been included.
-
-Fri Jul 30 18:41:11 1993 John Gilmore (gnu@cygnus.com)
-
- * sparc.h (F_JSR, F_UNBR, F_CONDBR): Add new flags to mark
- jump instructions, for use in disassemblers.
-
-Thu Jul 22 07:25:27 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * m88k.h: Make bitfields just unsigned, not unsigned long or
- unsigned short.
-
-Wed Jul 21 11:55:31 1993 Jim Kingdon (kingdon@deneb.cygnus.com)
-
- * hppa.h: New argument type 'y'. Use in various float instructions.
-
-Mon Jul 19 17:17:03 1993 Jim Kingdon (kingdon@deneb.cygnus.com)
-
- * hppa.h (break): First immediate field is unsigned.
-
- * hppa.h: Add rfir instruction.
-
-Sun Jul 18 16:28:08 1993 Jim Kingdon (kingdon@rtl.cygnus.com)
-
- * mips.h: Split the actual table out into ../../opcodes/mips-opc.c.
-
-Fri Jul 16 09:59:29 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.h: Reworked the hazard information somewhat, and fixed some
- bugs in the instruction hazard descriptions.
-
-Thu Jul 15 12:42:01 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * m88k.h: Corrected a couple of opcodes.
-
-Tue Jul 6 15:17:35 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * mips.h: Replaced with version from Ralph Campbell and OSF. The
- new version includes instruction hazard information, but is
- otherwise reasonably similar.
-
-Thu Jul 1 20:36:17 1993 Doug Evans (dje@canuck.cygnus.com)
-
- * h8300.h: Fix typo in UNOP3 (affected sh[al][lr].l).
-
-Fri Jun 11 18:38:44 1993 Ken Raeburn (raeburn@cygnus.com)
-
- Patches from Jeff Law, law@cs.utah.edu:
- * hppa.h: Clean up some of the OLD_TABLE, non-OLD_TABLE braindamage.
- Make the tables be the same for the following instructions:
- "bb", "addb[tf]", "addib[tf]", "add", "add[loc]", "addco",
- "sh[123]add", "sh[123]add[lo]", "sub", "sub[obt]", "sub[bt]o",
- "ds", "comclr", "addi", "addi[ot]", "addito", "subi", "subio",
- "comiclr", "fadd", "fsub", "fmpy", "fdiv", "fsqrt", "fabs",
- "frnd", "fcpy", "fcnvff", "fcnvxf", "fcnvfx", "fcnvfxt",
- "fcmp", and "ftest".
-
- * hppa.h: Make new and old tables the same for "break", "mtctl",
- "mfctl", "bb", "ssm", "rsm", "xmpyu", "fmpyadd", "fmpysub".
- Fix typo in last patch. Collapse several #ifdefs into a
- single #ifdef.
-
- * hppa.h: Delete remaining OLD_TABLE code. Bring some
- of the comments up-to-date.
-
- * hppa.h: Update "free list" of letters and update
- comments describing each letter's function.
-
-Thu Jul 8 09:05:26 1993 Doug Evans (dje@canuck.cygnus.com)
-
- * h8300.h: Lots of little fixes for the h8/300h.
-
-Tue Jun 8 12:16:03 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- Support for H8/300-H
- * h8300.h: Lots of new opcodes.
-
-Fri Jun 4 15:41:37 1993 Steve Chamberlain (sac@phydeaux.cygnus.com)
-
- * h8300.h: checkpoint, includes H8/300-H opcodes.
-
-Thu Jun 3 15:42:59 1993 Stu Grossman (grossman@cygnus.com)
-
- * Patches from Jeffrey Law <law@cs.utah.edu>.
- * hppa.h: Rework single precision FP
- instructions so that they correctly disassemble code
- PA1.1 code.
-
-Thu May 27 19:21:22 1993 Bruce Bauman (boot@osf.org)
-
- * i386.h (i386_optab, mov pattern): Remove Mem16 restriction from
- mov to allow instructions like mov ss,xyz(ecx) to assemble.
-
-Tue May 25 00:39:40 1993 Ken Raeburn (raeburn@cygnus.com)
-
- * hppa.h: Use new version from Utah if OLD_TABLE isn't defined;
- gdb will define it for now.
-
-Mon May 24 15:20:06 1993 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * sparc.h: Don't end enumerator list with comma.
-
-Fri May 14 15:15:50 1993 Ian Lance Taylor (ian@cygnus.com)
-
- * Based on patches from davidj@ICSI.Berkeley.EDU (David Johnson):
- * mips.h (OP_MASK_COPZ, OP_SH_COPZ): Define.
- ("bc2t"): Correct typo.
- ("[ls]wc[023]"): Use T rather than t.
- ("c[0123]"): Define general coprocessor instructions.
-
-Mon May 10 06:02:25 1993 Ken Raeburn (raeburn@kr-pc.cygnus.com)
-
- * m68k.h: Move split point for gcc compilation more towards
- middle.
-
-Fri Apr 9 13:26:16 1993 Jim Kingdon (kingdon@cygnus.com)
-
- * rs6k.h: Clean up instructions for primary opcode 19 (many were
- simply wrong, ics, rfi, & rfsvc were missing).
- Add "a" to opr_ext for "bb". Doc fix.
-
-Thu Mar 18 13:45:31 1993 Per Bothner (bothner@rtl.cygnus.com)
-
- * i386.h: 486 extensions from John Hassey (hassey@dg-rtp.dg.com).
- * mips.h: Add casts, to suppress warnings about shifting too much.
- * m68k.h: Document the placement code '9'.
-
-Thu Feb 18 02:03:14 1993 John Gilmore (gnu@cygnus.com)
-
- * m68k.h (BREAK_UP_BIG_DECL, AND_OTHER_PART): Add kludge which
- allows callers to break up the large initialized struct full of
- opcodes into two half-sized ones. This permits GCC to compile
- this module, since it takes exponential space for initializers.
- (numopcodes, endop): Revise to use AND_OTHER_PART in size calcs.
-
-Thu Feb 4 02:06:56 1993 John Gilmore (gnu@cygnus.com)
-
- * a29k.h: Remove RCS crud, update GPL to v2, update copyrights.
- * convex.h: Added, from GDB's convx-opcode.h. Added CONST to all
- initialized structs in it.
-
-Thu Jan 28 21:32:22 1993 John Gilmore (gnu@cygnus.com)
-
- Delta 88 changes inspired by Carl Greco, <cgreco@Creighton.Edu>:
- * m88k.h (PMEM): Avoid previous definition from <sys/param.h>.
- (AND): Change to AND_ to avoid ansidecl.h `AND' conflict.
-
-Sat Jan 23 18:10:49 PST 1993 Ralph Campbell (ralphc@pyramid.com)
-
- * mips.h: document "i" and "j" operands correctly.
-
-Thu Jan 7 15:58:13 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
-
- * mips.h: Removed endianness dependency.
-
-Sun Jan 3 14:13:35 1993 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * h8300.h: include info on number of cycles per instruction.
-
-Mon Dec 21 21:29:08 1992 Stu Grossman (grossman at cygnus.com)
-
- * hppa.h: Move handy aliases to the front. Fix masks for extract
- and deposit instructions.
-
-Sat Dec 12 16:09:48 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * i386.h: accept shld and shrd both with and without the shift
- count argument, which is always %cl.
-
-Fri Nov 27 17:13:18 1992 Ken Raeburn (raeburn at cygnus.com)
-
- * i386.h (i386_optab_end, i386_regtab_end): Now const.
- (one_byte_segment_defaults, two_byte_segment_defaults,
- i386_prefixtab_end): Ditto.
-
-Mon Nov 23 10:47:25 1992 Ken Raeburn (raeburn@cygnus.com)
-
- * vax.h (bb*): Use "v" (bitfield type), not "a" (address operand)
- for operand 2; from John Carr, jfc@dsg.dec.com.
-
-Wed Nov 4 07:36:49 1992 Ken Raeburn (raeburn@cygnus.com)
-
- * m68k.h: Define FIXED_SIZE_BRANCH, so bsr and bra instructions
- always use 16-bit offsets. Makes calculated-size jump tables
- feasible.
-
-Fri Oct 16 22:52:43 1992 Ken Raeburn (raeburn@cygnus.com)
-
- * i386.h: Fix one-operand forms of in* and out* patterns.
-
-Tue Sep 22 14:08:14 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * m68k.h: Added CPU32 support.
-
-Tue Sep 22 00:38:41 1992 John Gilmore (gnu@cygnus.com)
-
- * mips.h (break): Disassemble the argument. Patch from
- jonathan@cs.stanford.edu (Jonathan Stone).
-
-Wed Sep 9 11:25:28 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * m68k.h: merged Motorola and MIT syntax.
-
-Thu Sep 3 09:33:22 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * m68k.h (pmove): make the tests less strict, the 68k book is
- wrong.
-
-Tue Aug 25 23:25:19 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
-
- * m68k.h (m68ec030): Defined as alias for 68030.
- (m68k_opcodes): New type characters "3" for 68030 MMU regs and "t"
- for immediate 0-7 added. Set up some opcodes (ptest, bkpt) to use
- them. Tightened description of "fmovex" to distinguish it from
- some "pmove" encodings. Added "pmove" for 68030 MMU regs, cleaned
- up descriptions that claimed versions were available for chips not
- supporting them. Added "pmovefd".
-
-Mon Aug 24 12:04:51 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * m68k.h: fix where the . goes in divull
-
-Wed Aug 19 11:22:24 1992 Ian Lance Taylor (ian@cygnus.com)
-
- * m68k.h: the cas2 instruction is supposed to be written with
- indirection on the last two operands, which can be either data or
- address registers. Added a new operand type 'r' which accepts
- either register type. Added new cases for cas2l and cas2w which
- use them. Corrected masks for cas2 which failed to recognize use
- of address register.
-
-Fri Aug 14 14:20:38 1992 Per Bothner (bothner@cygnus.com)
-
- * m68k.h: Merged in patches (mostly m68040-specific) from
- Colin Smith <colin@wrs.com>.
-
- * m68k.h: Merged m68kmri.h and m68k.h (using the former as a
- base). Also cleaned up duplicates, re-ordered instructions for
- the sake of dis-assembling (so aliases come after standard names).
- * m68kmri.h: Now just defines some macros, and #includes m68k.h.
-
-Wed Aug 12 16:38:15 1992 Steve Chamberlain (sac@thepub.cygnus.com)
-
- * m68kmri.h: added various opcodes. Moved jbxx to bxxes. Filled in
- all missing .s
-
-Mon Aug 10 23:22:33 1992 Ken Raeburn (raeburn@cygnus.com)
-
- * sparc.h: Moved tables to BFD library.
-
- * i386.h (i386_optab): Add fildq, fistpq aliases used by gcc.
-
-Sun Jun 28 13:29:03 1992 Fred Fish (fnf@cygnus.com)
-
- * h8300.h: Finish filling in all the holes in the opcode table,
- so that the Lucid C compiler can digest this as well...
-
-Fri Jun 26 21:27:17 1992 John Gilmore (gnu at cygnus.com)
-
- * i386.h: Add setc, setnc, addr16, data16, repz, repnz aliases.
- Fix opcodes on various sizes of fild/fist instructions
- (16bit=no suffix, 32bit="l" suffix, 64bit="ll" suffix).
- Use tabs to indent for comments. Fixes suggested by Minh Tran-Le.
-
-Thu Jun 25 16:13:26 1992 Stu Grossman (grossman at cygnus.com)
-
- * h8300.h: Fill in all the holes in the opcode table so that the
- losing HPUX C compiler can digest this...
-
-Thu Jun 11 12:15:25 1992 John Gilmore (gnu at cygnus.com)
-
- * mips.h: Fix decoding of coprocessor instructions, somewhat.
- (Fix by Eric Anderson, 3jean@maas-neotek.arc.nasa.gov.)
-
-Thu May 28 11:17:44 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
-
- * sparc.h: Add new architecture variant sparclite; add its scan
- and divscc opcodes. Define ARCHITECTURES_CONFLICT_P macro.
-
-Tue May 5 14:23:27 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * mips.h: Add some more opcode synonyms (from Frank Yellin,
- fy@lucid.com).
-
-Thu Apr 16 18:25:26 1992 Per Bothner (bothner@cygnus.com)
-
- * rs6k.h: New version from IBM (Metin).
-
-Thu Apr 9 00:31:19 1992 Per Bothner (bothner@rtl.cygnus.com)
-
- * rs6k.h: Fix incorrect extended opcode for instructions `fm'
- and `fd'. (From metin@ibmpa.awdpa.ibm.com (Metin G. Ozisik).)
-
-Tue Apr 7 13:38:47 1992 Stu Grossman (grossman at cygnus.com)
-
- * rs6k.h: Move from ../../gdb/rs6k-opcode.h.
-
-Fri Apr 3 11:30:20 1992 Fred Fish (fnf@cygnus.com)
-
- * m68k.h (one, two): Cast macro args to unsigned to suppress
- complaints from compiler and lint about integer overflow during
- shift.
-
-Sun Mar 29 12:22:08 1992 John Gilmore (gnu at cygnus.com)
-
- * sparc.h (OP): Avoid signed overflow when shifting to high order bit.
-
-Fri Mar 6 00:22:38 1992 John Gilmore (gnu at cygnus.com)
-
- * mips.h: Make bitfield layout depend on the HOST compiler,
- not on the TARGET system.
-
-Fri Feb 21 01:29:51 1992 K. Richard Pixley (rich@cygnus.com)
-
- * i386.h: added inb, inw, outb, outw opcodes, added att syntax for
- scmp, slod, smov, ssca, ssto. Curtesy Minh Tran-Le
- <TRANLE@INTELLICORP.COM>.
-
-Thu Jan 30 07:31:44 1992 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * h8300.h: turned op_type enum into #define list
-
-Thu Jan 30 01:07:24 1992 John Gilmore (gnu at cygnus.com)
-
- * sparc.h: Remove "cypress" architecture. Remove "fitox" and
- similar instructions -- they've been renamed to "fitoq", etc.
- REALLY fix tsubcctv. Fix "fcmpeq" and "fcmpq" which had wrong
- number of arguments.
- * h8300.h: Remove extra ; which produces compiler warning.
-
-Tue Jan 28 22:59:22 1992 Stu Grossman (grossman at cygnus.com)
-
- * sparc.h: fix opcode for tsubcctv.
-
-Tue Jan 7 17:19:39 1992 K. Richard Pixley (rich at cygnus.com)
-
- * sparc.h: fba and cba are now aliases for fb and cb respectively.
-
-Fri Dec 27 10:55:50 1991 Per Bothner (bothner at cygnus.com)
-
- * sparc.h (nop): Made the 'lose' field be even tighter,
- so only a standard 'nop' is disassembled as a nop.
-
-Sun Dec 22 12:18:18 1991 Michael Tiemann (tiemann at cygnus.com)
-
- * sparc.h (nop): Add RD_GO to `lose' so that only %g0 in dest is
- disassembled as a nop.
-
-Wed Dec 18 17:19:44 1991 Stu Grossman (grossman at cygnus.com)
-
- * m68k.h, sparc.h: ANSIfy enums.
-
-Tue Dec 10 00:22:20 1991 K. Richard Pixley (rich at rtl.cygnus.com)
-
- * sparc.h: fix a typo.
-
-Sat Nov 30 20:40:51 1991 Steve Chamberlain (sac at rtl.cygnus.com)
-
- * a29k.h, arm.h, h8300.h, i386.h, i860.h, i960.h , m68k.h,
- m88k.h, mips.h , np1.h, ns32k.h, pn.h, pyr.h, sparc.h, tahoe.h,
- vax.h: Renamed from ../<foo>-opcode.h.
+ * h8300.h (BITOP): Dissallow operations on @aa:16 and @aa:32
+ except for the H8S.
+For older changes see ChangeLog-9103
Local Variables:
+mode: change-log
+left-margin: 8
+fill-column: 74
version-control: never
End:
diff --git a/include/opcode/h8300.h b/include/opcode/h8300.h
index 20793a0a94b..76d42e58a72 100644
--- a/include/opcode/h8300.h
+++ b/include/opcode/h8300.h
@@ -1,5 +1,5 @@
/* Opcode table for the H8/300
- Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1998, 2000, 2002, 2003
+ Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1998, 2000, 2002, 2003, 2004
Free Software Foundation, Inc.
Written by Steve Chamberlain <sac@cygnus.com>.
@@ -26,7 +26,8 @@
typedef int op_type;
-enum h8_flags {
+enum h8_flags
+{
L_2 = 0x10,
L_3 = 0x20,
/* 3 bit constant, zero not accepted. */
@@ -225,7 +226,8 @@ enum h8_flags {
#endif
};
-enum ctrlreg {
+enum ctrlreg
+{
C_CCR = 0,
C_EXR = 1,
C_MACH = 2,
@@ -247,7 +249,8 @@ struct arg
};
/* Availability of instructions on processor models. */
-enum h8_model {
+enum h8_model
+{
AV_H8,
AV_H8H,
AV_H8S,
@@ -304,7 +307,7 @@ struct h8_opcode
#define A24LIST L_24, DATA5
#define A32LIST L_32, DATA7
-/* Extended Operand Prefixes: */
+/* Extended Operand Prefixes: */
#define PREFIX_010 0x0, 0x1, 0x0
#define PREFIX_015 0x0, 0x1, 0x5
@@ -383,7 +386,7 @@ struct h8_opcode
#define PREFIX_7A7C 0x7, 0xa, 0x7, 0xc
-/* Source standard fragment: */
+/* Source standard fragment: */
#define FROM_IND 0, RSIND
#define FROM_POSTINC 8, RSPOSTINC
#define FROM_POSTDEC 10, RSPOSTDEC
@@ -401,7 +404,7 @@ struct h8_opcode
#define FROM_ABS16 4, B30 | IGNORE
#define FROM_ABS32 4, B31 | IGNORE
-/* Destination standard fragment: */
+/* Destination standard fragment: */
#define TO_IND 0, RDIND
#define TO_IND_MOV 0, RDIND | B30
#define TO_POSTINC 8, RDPOSTINC
@@ -425,7 +428,7 @@ struct h8_opcode
#define TO_ABS16 4, B30 | IGNORE
#define TO_ABS32 4, B31 | IGNORE
-/* Source fragment for three-word instruction: */
+/* Source fragment for three-word instruction: */
#define TFROM_IND 6, 9, B30 | RSIND, 12
#define TFROM_DISP2 6, 9, B30 | DISPREG, 12
#define TFROM_ABS16 6, 11, B30 | B20 | B10 | IGNORE, 12, ABS16LIST
@@ -445,7 +448,7 @@ struct h8_opcode
#define TFROM_ABS16W 6, 11, 1, 12, ABS16LIST
#define TFROM_ABS32W 6, 11, 3, 12, ABS32LIST
-/* Source fragment for three-word instruction: */
+/* Source fragment for three-word instruction: */
#define TFROM_IND_B 6, 8, B30 | RSIND, 12
#define TFROM_ABS16_B 6, 10, B30 | B20 | B10 | IGNORE, 12, ABS16LIST
#define TFROM_ABS32_B 6, 10, B30 | B20 | B11 | IGNORE, 12, ABS32LIST
@@ -467,7 +470,7 @@ struct h8_opcode
#define TFROM_ABS16W_B 6, 10, 1, 12, ABS16LIST
#define TFROM_ABS32W_B 6, 10, 3, 12, ABS32LIST
-/* Extended Operand Class Expanders: */
+/* Extended Operand Class Expanders: */
#define MOVFROM_STD(CODE, PREFIX, NAME, SRC, SRC_INFIX) \
{CODE, AV_H8SX, 0, NAME, {{SRC, RDIND, E}}, {{PREFIX, SRC_INFIX, TO_IND_MOV, E}}}, \
@@ -577,9 +580,7 @@ struct h8_opcode
{CODE, AV_H8, 4, NAME, {{ABS16SRC, DST, E}}, {{ 6, OP2, 0, DST, RELAX16 | ABS16LIST, E}}}, \
{CODE, AV_H8, 6, NAME, {{ABS32SRC, DST, E}}, {{ 6, OP2, 2, DST, MEMRELAX | ABS32LIST, E}}}
-/*
- * Expansion macros for two-word (plus data) instructions.
- */
+/* Expansion macros for two-word (plus data) instructions. */
/* Expansion from one source to "standard" destinations. */
#define EXPAND2_STD_SRC(CODE, WEIGHT, NAME, SRC, PREFIX, NIB1, NIB2) \
@@ -661,9 +662,7 @@ struct h8_opcode
{CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXW32D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP32W, OPCODE, IGNORE, DSTDISP32LIST, E}}}, \
{CODE, AV_H8SX, 0, NAME, {{RSIND, INDEXL32D, E}}, {{0x7, 0xc, BIT | RSIND, 0x5, TO_DISP32L, OPCODE, IGNORE, DSTDISP32LIST, E}}}
-/*
- * Expansion macros for three word (plus data) instructions.
- */
+/* Expansion macros for three word (plus data) instructions. */
#define EXPAND3_STD_SRC(CODE, WEIGHT, NAME, SRC, PREFIX, INFIX, OPCODE) \
{CODE, AV_H8SX, 0, NAME, {{SRC, RDPOSTINC, E}}, {{PREFIX, INFIX, 8, RDPOSTINC, OPCODE, B30 | IGNORE, E}}}, \
@@ -749,9 +748,7 @@ struct h8_opcode
EXPAND3_L_SRC (CODE, 4, NAME, INDEXL32, PREFIX_78R7W, TFROM_DISP32L_B, OPCODE)
-/*
- * Use the expansion macros to fill out the opcode table.
- */
+/* Use the expansion macros to fill out the opcode table. */
#define EXPAND_FROM_REG8(CODE, NAME, OP1, OP2, OP3) \
{CODE, AV_H8SX, 0, NAME, {{RS8, RDIND, E}}, {{0x7, 0xd, B30 | RDIND, IGNORE, OP1, OP2, RS8, IGNORE, E}}}, \
@@ -892,16 +889,14 @@ struct h8_opcode
EXPAND_STD_MATRIX_L (CODE, NAME, OP1)
-/*
- * Old expanders:
- */
+/* Old expanders: */
#define BITOP(code, imm, name, op00, op01, op10, op11, op20, op21, op30, op4) \
{code, AV_H8, 2, name, {{imm, RD8, E}}, {{op00, op01, imm, RD8, E}}}, \
{code, AV_H8, 6, name, {{imm, RDIND, E}}, {{op10, op11, B30 | RDIND, 0, op00, op01, imm, 0, E}}}, \
{code, AV_H8, 6, name, {{imm, ABS8DST, E}}, {{op20, op21, DSTABS8LIST, op00, op01, imm, 0, E}}}, \
- {code, AV_H8H, 6, name, {{imm, ABS16DST, E}}, {{0x6, 0xa, 0x1, op30, DST | ABS16LIST, op00, op01, imm, op4, E}}}, \
- {code, AV_H8H, 6, name, {{imm, ABS32DST, E}}, {{0x6, 0xa, 0x3, op30, DST | ABS32LIST, op00, op01, imm, op4, E}}}
+ {code, AV_H8S, 6, name, {{imm, ABS16DST, E}}, {{0x6, 0xa, 0x1, op30, DST | MEMRELAX | ABS16LIST , op00, op01, imm, op4, E}}}, \
+ {code, AV_H8S, 6, name, {{imm, ABS32DST, E}}, {{0x6, 0xa, 0x3, op30, DST | MEMRELAX | ABS32LIST , op00, op01, imm, op4, E}}}
#define BITOP_B(code, imm, name, op00, op01, op10, op11, op20, op21, op30, op4) \
{code, AV_H8SX, 0, name, {{imm, RDIND, E}}, {{op10, op11, B30 | RDIND, 0, op00, op01, imm, op4, E}}}, \
@@ -1047,11 +1042,12 @@ struct h8_opcode
#define PREFIXLDC 0x0, 0x1, 0x4, B30 | CCR_EXR | DST
#define PREFIXSTC 0x0, 0x1, 0x4, B30 | CCR_EXR | SRC
-#define O(op, size) (op*4+size)
+#define O(op, size) (op * 4 + size)
#define OP_SIZE(HOW) (HOW % 4)
#define OP_KIND(HOW) (HOW / 4)
-enum h8_asm_codes {
+enum h8_asm_codes
+{
O_RECOMPILE = 0,
O_ADD,
O_ADDX,
@@ -1182,7 +1178,8 @@ enum h8_asm_codes {
/* End of System Call specific Changes. */
};
-enum h8_size {
+enum h8_size
+{
SB = 0,
SW = 1,
SL = 2,
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index cd7200d0404..10c7f4690e6 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,195 @@
+2004-01-25 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * configure.ac: Add m4_pattern_allow(LIBOBJS).
+ * configure: Regenerate.
+
+2004-01-22 DJ Delorie <dj@redhat.com>
+
+ * Makefile.in: Convert to ./ throughout. Rebuild dependencies
+ with explicit build rules.
+ (VPATH): Remove.
+ (.c.o): Poison.
+ * configure.ac (pexecute, LIBOBJS): Add ./ .
+ * maint-tool: Build dependencies with explicit rules.
+
+2004-01-15 Kazu Hirata <kazu@cs.umass.edu>
+
+ * strdup.c (strdup): Constify the argument.
+
+2004-01-14 Loren J. Rittle <ljrittle@acm.org>
+
+ * Makefile.in (distclean): Remove config.cache.
+
+2004-01-13 Daniel Jacobowitz <drow@mvista.com>
+
+ * cp-demangle.c (d_make_comp): DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE
+ takes two parameters.
+ * cp-demint.c (cplus_demangle_fill_component): Likewise.
+
+2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cp-demangle.c: Include "cp-demangle.h". If IN_GLIBCPP_V3 is
+ defined, rename some functions which are to become static via
+ #define.
+ (CP_STATIC_IF_GLIBCPP_V3): Define.
+ (struct d_operator_info): Move definition to cp-demangle.h, and
+ rename to demangle_operator_info. Change all uses.
+ (enum d_builtin_type_print): Move definition to cp-demangle.h.
+ (struct d_builtin_type_info): Move definition to cp-demangle.h,
+ and rename to demangle_builtin_type_info. Change all uses.
+ (enum d_comp_type): Move definition to include/demangle.h, and
+ rename to demangle_component_type, and change all enums to start
+ with DEMANGLE_COMPONENT_ instead of D_. Change all uses.
+ (struct d_comp): Move definition to include/demangle.h, and rename
+ to demangle_component. Change all uses.
+ (struct d_info): Move definition to cp-demangle.h.
+ (cplus_demangle_fill_name): New function.
+ (cplus_demangle_fill_extended_operator): New function.
+ (cplus_demangle_fill_ctor): New function.
+ (cplus_demangle_fill_dtor): New function.
+ (d_make_empty): Remove type parameter. Change all callers.
+ (d_make_name): Use cplus_demangle_fill_name.
+ (d_make_extended_operator): Use
+ cplus_demangle_fill_extended_operator.
+ (d_make_ctor): Use cplus_demangle_fill_ctor.
+ (d_make_dtor): Use cplus_demangle_fill_dtor.
+ (cplus_demangle_mangled_name): Rename from d_mangled_name. Make
+ non-static by default. Change all callers.
+ (cplus_demangle_operators): Rename from d_operators. Change all
+ uses. Make non-static by default. Add sentinel at end of array.
+ (d_operator_name): Adjust initialization of high for new sentinel
+ in cplus_demangle_operators.
+ (cplus_demangle_builtin_types): Rename from d_builtin_types.
+ Change all uses. Make non-static by default. Change initializer
+ to use D_BUILTIN_TYPE_COUNT instead of magic number 26.
+ (cplus_demangle_type): Rename from d_type. Make non-static by
+ default. Change all callers.
+ (cplus_demangle_init_info): Rename from d_init_info. Make
+ non-static by default. Change all callers.
+ * cp-demangle.h: New file.
+ * cp-demint.c: New file.
+ * Makefile.in: Rebuild dependencies.
+ (CFILES): Add cp-demint.c.
+ (REQUIRED_OFILES): Add cp-demint.o.
+
+2004-01-09 Kelley Cook <kcook@gcc.gnu.org>
+
+ * configure.in: Rename file to ...
+ * configure.ac: ... this.
+ * Makefile.in: Update a comment for above change.
+ * README: Likewise.
+ * config.in: Regenerate.
+
+2004-01-02 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cp-demangle.c (d_encoding): When DMGL_PARAMS is not set, strip
+ CV-qualifiers from D_COMP_LOCAL_NAME right subtree.
+ * cplus-dem.c (demangle_arm_hp_template): Set DMGL_PARAMS when
+ demangling template parameters.
+ * testsuite/test-demangle.c (fail): New static function.
+ (main): Support new options in input file: --no-params,
+ --is-v3-ctor, and --is-v3-dtor.
+ * testsuite/demangle-expected: Add --no-params to most tests, and
+ add the correct result when parameters are not demangled. Add
+ some simple tests for V3 constructor/destructor recognition.
+
+2003-12-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * cp-demangle.c (is_ctor_or_dtor): Fix error in last change.
+
+2003-12-22 Daniel Jacobowitz <drow@mvista.com>
+
+ PR debug/13272
+ * Makefile.in (lbasename.o): Depend on filenames.h.
+ * lbasename.c: Include "filenames.h" instead of defining
+ its macros locally.
+
+2003-12-22 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cp-demangle.c (CP_DYNAMIC_ARRAYS): Define if compiler supports
+ dynamic arrays.
+ (struct d_operator_info): Add len field.
+ (struct d_builtin_type_info): Add len and java_len fields.
+ (struct d_standard_sub_info): Add simple_len, full_len, and
+ set_last_name_len fields.
+ (struct d_comp): Add len field to s_string.
+ (struct d_info): Add send, did_subs, and expansion fields.
+ (d_append_string_constant): Define.
+ (d_append_string): Remove. Change all users to use
+ d_append_string_constant or d_append_buffer instead.
+ (d_make_sub): Add len parameter. Change all callers.
+ (d_name): Increase expansion when substituting std::.
+ (d_unqualified_name): Increase expansion for an operator.
+ (d_number): Don't use multiplication for negative numbers.
+ (d_identifier): Make sure there are enough characters in the
+ string for the specified length. Adjust expansion for an
+ anonymous namespace.
+ (d_operators): Initialize len field.
+ (d_special_name, d_ctor_dtor_name): Increase expansion.
+ (d_builtin_types): Initialize len and java_len fields.
+ (d_type): Increase expansion for a builtin type.
+ (d_cv_qualifiers): Increase expansion for each qualifier.
+ (d_bare_function_type): Decrease expansion when removing single
+ void parameter.
+ (d_template_param): Increment did_subs.
+ (d_expression): Increase expansion for an operator.
+ (d_expr_primary): Decrease expansion for a type we will print
+ specially.
+ (standard_subs): Initialize new fields.
+ (d_substitution): Increment did_subs when doing a normal
+ substitution. Increase expansion for a special substitution.
+ (d_print): Add estimate parameter. Change all callers.
+ (d_print_comp) [D_COMP_NAME]: Handle C++ case inline.
+ (d_print_comp) [D_COMP_BINARY]: Use length to avoid strcmp call.
+ (d_print_java_identifier): Rename from d_print_identifier. Handle
+ only Java case. Change caller.
+ (d_init_info): Change return type to void. Change all callers.
+ Initialize send, did_subs, and expansion fields. Do not
+ initialize comps and subs fields.
+ (d_demangle): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and subs
+ arrays on stack. Make an estimate of the length of the demangled
+ name. Ifdef CP_DEMANGLE_DEBUG, print estimation failures.
+ (is_ctor_or_dtor): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and
+ subs arrays on stack.
+
+2003-12-20 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cp-demangle.c (d_identifier): In Java mode, skip an optional '$'
+ after the identifier.
+ * testsuite/demangle-expected: Add test case.
+
+2003-12-19 Ian Lance Taylor <ian@wasabisystems.com>
+
+ Fix for PR c++/13447:
+ * cp-demangle.c (enum d_comp_type): Add D_COMP_LOCAL_NAME.
+ (d_dump, d_make_comp): Handle D_COMP_LOCAL_NAME.
+ (is_ctor_dtor_or_conversion): Handle D_COMP_LOCAL_NAME like
+ D_COMP_QUAL_NAME.
+ (is_ctor_or_dtor): Likewise.
+ (d_local_name): Use D_COMP_LOCAL_NAME rather than
+ D_COMP_QUAL_NAME.
+ (d_print_comp) [D_COMP_LOCAL_NAME]: New.
+ (d_prinT_comp) [D_COMP_TYPED_NAME]: If the left tree is
+ D_COMP_LOCAL_NAME, pull any qualifiers off its right subtree.
+ (d_print_mod_list): Handle D_COMP_LOCAL_NAME.
+ * testsuite/demangle-expected: Add two test cases.
+
+ * cp-demangle.c (d_print_function_type): Clear the global modifier
+ list when printing the modifiers, not just when printing the
+ function parameters.
+ * testsuite/demangle-expected: Add two test cases.
+
+2003-12-15 Ian Lance Taylor <ian@wasabisystems.com>
+
+ * cp-demangle.c (d_print_function_type): Print the function
+ parameters with no modifiers.
+ * testsuite/demangle-expected: Add test case.
+
+ * cp-demangle.c (d_demangle): If DMGL_PARAMS is not set, don't
+ expect that we've read the entire string.
+ (is_ctor_or_dtor): Don't expect that we've read the entire
+ string--reverse patch of 2003-11-29.
+
2003-12-15 Brendan Kehoe <brendan@zen.org>
* libiberty/Makefile.in (floatformat.o): Add dependency on
diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in
index 5fff39be8b8..bbb5c2a7929 100644
--- a/libiberty/Makefile.in
+++ b/libiberty/Makefile.in
@@ -1,6 +1,6 @@
#
# Makefile
-# Copyright (C) 1990, 91-99, 2000, 2001, 2002, 2003
+# Copyright (C) 1990, 91-99, 2000, 2001, 2002, 2003, 2004
# Free Software Foundation
#
# This file is part of the libiberty library.
@@ -28,7 +28,6 @@
libiberty_topdir = @libiberty_topdir@
srcdir = @srcdir@
-VPATH = @srcdir@
prefix = @prefix@
@@ -70,8 +69,8 @@ PICFLAG =
MAKEOVERRIDES =
-TARGETLIB = libiberty.a
-TESTLIB = testlib.a
+TARGETLIB = ./libiberty.a
+TESTLIB = ./testlib.a
LIBOBJS = @LIBOBJS@
@@ -118,19 +117,19 @@ installcheck: installcheck-subdir
INCDIR=$(srcdir)/$(MULTISRCTOP)../include
COMPILE.c = $(CC) -c @DEFS@ $(LIBCFLAGS) -I. -I$(INCDIR) $(HDEFINES) @ac_libiberty_warn_cflags@
+
+# Just to make sure we don't use a built-in rule with VPATH
.c.o:
- if [ x"$(PICFLAG)" != x ]; then \
- $(COMPILE.c) $(PICFLAG) $< -o pic/$@; \
- else true; fi
- $(COMPILE.c) $< $(OUTPUT_OPTION)
+ false
# NOTE: If you add new files to the library, add them to this list
# (alphabetical), and add them to REQUIRED_OFILES, or
-# CONFIGURED_OFILES and funcs in configure.in.
+# CONFIGURED_OFILES and funcs in configure.ac. Also run "make maint-deps"
+# to build the new rules.
CFILES = alloca.c argv.c asprintf.c atexit.c \
basename.c bcmp.c bcopy.c bsearch.c bzero.c \
calloc.c choose-temp.c clock.c concat.c cp-demangle.c \
- cplus-dem.c \
+ cp-demint.c cplus-dem.c \
dyn-string.c \
fdmatch.c ffs.c fibheap.c floatformat.c fnmatch.c \
getcwd.c getopt.c getopt1.c getpagesize.c getpwd.c getruntime.c \
@@ -158,45 +157,45 @@ CFILES = alloca.c argv.c asprintf.c atexit.c \
# These are always included in the library. The first four are listed
# first and by compile time to optimize parallel builds.
-REQUIRED_OFILES = regex.o cplus-dem.o cp-demangle.o md5.o \
- alloca.o argv.o \
- choose-temp.o concat.o \
- dyn-string.o \
- fdmatch.o fibheap.o floatformat.o fnmatch.o \
- getopt.o getopt1.o getpwd.o getruntime.o \
- hashtab.o hex.o \
- lbasename.o \
- lrealpath.o \
- make-relative-prefix.o \
- make-temp-file.o \
- objalloc.o obstack.o \
- partition.o physmem.o @pexecute@ \
- safe-ctype.o sort.o spaces.o splay-tree.o strerror.o \
- strsignal.o \
- ternary.o \
- xatexit.o xexit.o xmalloc.o xmemdup.o xstrdup.o xstrerror.o
+REQUIRED_OFILES = ./regex.o ./cplus-dem.o ./cp-demangle.o ./cp-demint.o ./md5.o \
+ ./alloca.o ./argv.o \
+ ./choose-temp.o ./concat.o \
+ ./dyn-string.o \
+ ./fdmatch.o ./fibheap.o ./floatformat.o ./fnmatch.o \
+ ./getopt.o ./getopt1.o ./getpwd.o ./getruntime.o \
+ ./hashtab.o ./hex.o \
+ ./lbasename.o \
+ ./lrealpath.o \
+ ./make-relative-prefix.o \
+ ./make-temp-file.o \
+ ./objalloc.o ./obstack.o \
+ ./partition.o ./physmem.o @pexecute@ \
+ ./safe-ctype.o ./sort.o ./spaces.o ./splay-tree.o ./strerror.o \
+ ./strsignal.o \
+ ./ternary.o \
+ ./xatexit.o ./xexit.o ./xmalloc.o ./xmemdup.o ./xstrdup.o ./xstrerror.o
# These are all the objects that configure may add to the library via
# $funcs or EXTRA_OFILES. This list exists here only for "make
# maint-missing" and "make check".
-CONFIGURED_OFILES = asprintf.o atexit.o \
- basename.o bcmp.o bcopy.o bsearch.o bzero.o \
- calloc.o clock.o copysign.o \
- _doprnt.o \
- ffs.o \
- getcwd.o getpagesize.o \
- index.o insque.o \
- memchr.o memcmp.o memcpy.o memmove.o mempcpy.o memset.o mkstemps.o \
- pex-djgpp.o pex-mpw.o pex-msdos.o pex-os2.o \
- pex-unix.o pex-win32.o \
- putenv.o \
- random.o rename.o rindex.o \
- setenv.o sigsetmask.o snprintf.o stpcpy.o stpncpy.o strcasecmp.o \
- strchr.o strdup.o strncasecmp.o strncmp.o strrchr.o strstr.o \
- strtod.o strtol.o strtoul.o \
- tmpnam.o \
- vasprintf.o vfork.o vfprintf.o vprintf.o vsnprintf.o vsprintf.o \
- waitpid.o
+CONFIGURED_OFILES = ./asprintf.o ./atexit.o \
+ ./basename.o ./bcmp.o ./bcopy.o ./bsearch.o ./bzero.o \
+ ./calloc.o ./clock.o ./copysign.o \
+ ./_doprnt.o \
+ ./ffs.o \
+ ./getcwd.o ./getpagesize.o \
+ ./index.o ./insque.o \
+ ./memchr.o ./memcmp.o ./memcpy.o ./memmove.o ./mempcpy.o ./memset.o ./mkstemps.o \
+ ./pex-djgpp.o ./pex-mpw.o ./pex-msdos.o ./pex-os2.o \
+ ./pex-unix.o ./pex-win32.o \
+ ./putenv.o \
+ ./random.o ./rename.o ./rindex.o \
+ ./setenv.o ./sigsetmask.o ./snprintf.o ./stpcpy.o ./stpncpy.o ./strcasecmp.o \
+ ./strchr.o ./strdup.o ./strncasecmp.o ./strncmp.o ./strrchr.o ./strstr.o \
+ ./strtod.o ./strtol.o ./strtoul.o \
+ ./tmpnam.o \
+ ./vasprintf.o ./vfork.o ./vfprintf.o ./vprintf.o ./vsnprintf.o ./vsprintf.o \
+ ./waitpid.o
# These files are installed if the library has been configured to do so.
INSTALLED_HEADERS = \
@@ -376,7 +375,7 @@ clean: clean-subdir
distclean: distclean-subdir
$(MAKE) SUBDIRS="" clean
@$(MULTICLEAN) multi-clean DO=distclean
- -rm -f *~ Makefile config.status xhost-mkfrag TAGS multilib.out
+ -rm -f *~ Makefile config.cache config.status xhost-mkfrag TAGS multilib.out
-rm -f config.log
-rmdir testsuite 2>/dev/null
maintainer-clean realclean: maintainer-clean-subdir
@@ -390,8 +389,8 @@ Makefile: $(srcdir)/Makefile.in config.status
# Depending on Makefile makes sure that config.status has been re-run
# if needed. This prevents problems with parallel builds.
config.h: stamp-h ; @true
-stamp-h: config.in config.status Makefile
- CONFIG_FILES= CONFIG_HEADERS=config.h:config.in $(SHELL) ./config.status
+stamp-h: $(srcdir)/config.in config.status Makefile
+ CONFIG_FILES= CONFIG_HEADERS=config.h:$(srcdir)/config.in $(SHELL) ./config.status
config.status: $(srcdir)/configure $(srcdir)/config.table
$(SHELL) ./config.status --recheck
@@ -415,110 +414,643 @@ $(CONFIGURED_OFILES): stamp-picdir
# The dependencies in the remainder of this file are automatically
# generated by "make maint-deps". Manual edits will be lost.
-_doprnt.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/safe-ctype.h
-alloca.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-argv.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-asprintf.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-atexit.o: config.h
-basename.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+./_doprnt.o: $(srcdir)/_doprnt.c config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/safe-ctype.h
-bsearch.o: config.h $(INCDIR)/ansidecl.h
-calloc.o: $(INCDIR)/ansidecl.h
-choose-temp.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-clock.o: config.h
-concat.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-copysign.o: $(INCDIR)/ansidecl.h
-cp-demangle.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/demangle.h \
- $(INCDIR)/dyn-string.h $(INCDIR)/getopt.h $(INCDIR)/libiberty.h
-cplus-dem.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/demangle.h \
- $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
-dyn-string.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/dyn-string.h \
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/_doprnt.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/_doprnt.c $(OUTPUT_OPTION)
+
+./alloca.o: $(srcdir)/alloca.c config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h
-fdmatch.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-fibheap.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/fibheap.h \
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/alloca.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/alloca.c $(OUTPUT_OPTION)
+
+./argv.o: $(srcdir)/argv.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/argv.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/argv.c $(OUTPUT_OPTION)
+
+./asprintf.o: $(srcdir)/asprintf.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/asprintf.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/asprintf.c $(OUTPUT_OPTION)
+
+./atexit.o: $(srcdir)/atexit.c config.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/atexit.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/atexit.c $(OUTPUT_OPTION)
+
+./basename.o: $(srcdir)/basename.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ $(INCDIR)/safe-ctype.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/basename.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/basename.c $(OUTPUT_OPTION)
+
+./bcmp.o: $(srcdir)/bcmp.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/bcmp.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/bcmp.c $(OUTPUT_OPTION)
+
+./bcopy.o: $(srcdir)/bcopy.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/bcopy.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/bcopy.c $(OUTPUT_OPTION)
+
+./bsearch.o: $(srcdir)/bsearch.c config.h $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/bsearch.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/bsearch.c $(OUTPUT_OPTION)
+
+./bzero.o: $(srcdir)/bzero.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/bzero.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/bzero.c $(OUTPUT_OPTION)
+
+./calloc.o: $(srcdir)/calloc.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/calloc.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/calloc.c $(OUTPUT_OPTION)
+
+./choose-temp.o: $(srcdir)/choose-temp.c config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h
-floatformat.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/floatformat.h \
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/choose-temp.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/choose-temp.c $(OUTPUT_OPTION)
+
+./clock.o: $(srcdir)/clock.c config.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/clock.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/clock.c $(OUTPUT_OPTION)
+
+./concat.o: $(srcdir)/concat.c config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h
-fnmatch.o: config.h $(INCDIR)/fnmatch.h $(INCDIR)/safe-ctype.h
-getcwd.o: config.h
-getopt.o: config.h $(INCDIR)/getopt.h
-getopt1.o: config.h $(INCDIR)/getopt.h
-getpagesize.o: config.h
-getpwd.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-getruntime.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-hashtab.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/hashtab.h \
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/concat.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/concat.c $(OUTPUT_OPTION)
+
+./copysign.o: $(srcdir)/copysign.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/copysign.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/copysign.c $(OUTPUT_OPTION)
+
+./cp-demangle.o: $(srcdir)/cp-demangle.c config.h $(INCDIR)/ansidecl.h \
+ $(srcdir)/cp-demangle.h $(INCDIR)/demangle.h \
+ $(INCDIR)/dyn-string.h $(INCDIR)/getopt.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/cp-demangle.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/cp-demangle.c $(OUTPUT_OPTION)
+
+./cp-demint.o: $(srcdir)/cp-demint.c config.h $(INCDIR)/ansidecl.h \
+ $(srcdir)/cp-demangle.h $(INCDIR)/demangle.h \
$(INCDIR)/libiberty.h
-hex.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/cp-demint.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/cp-demint.c $(OUTPUT_OPTION)
+
+./cplus-dem.o: $(srcdir)/cplus-dem.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/demangle.h $(INCDIR)/libiberty.h \
+ $(INCDIR)/safe-ctype.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/cplus-dem.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/cplus-dem.c $(OUTPUT_OPTION)
+
+./dyn-string.o: $(srcdir)/dyn-string.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/dyn-string.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/dyn-string.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/dyn-string.c $(OUTPUT_OPTION)
+
+./fdmatch.o: $(srcdir)/fdmatch.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/fdmatch.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/fdmatch.c $(OUTPUT_OPTION)
+
+./ffs.o: $(srcdir)/ffs.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/ffs.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/ffs.c $(OUTPUT_OPTION)
+
+./fibheap.o: $(srcdir)/fibheap.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/fibheap.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/fibheap.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/fibheap.c $(OUTPUT_OPTION)
+
+./floatformat.o: $(srcdir)/floatformat.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/floatformat.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/floatformat.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/floatformat.c $(OUTPUT_OPTION)
+
+./fnmatch.o: $(srcdir)/fnmatch.c config.h $(INCDIR)/fnmatch.h \
$(INCDIR)/safe-ctype.h
-lbasename.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/fnmatch.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/fnmatch.c $(OUTPUT_OPTION)
+
+./getcwd.o: $(srcdir)/getcwd.c config.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/getcwd.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/getcwd.c $(OUTPUT_OPTION)
+
+./getopt.o: $(srcdir)/getopt.c config.h $(INCDIR)/getopt.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/getopt.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/getopt.c $(OUTPUT_OPTION)
+
+./getopt1.o: $(srcdir)/getopt1.c config.h $(INCDIR)/getopt.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/getopt1.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/getopt1.c $(OUTPUT_OPTION)
+
+./getpagesize.o: $(srcdir)/getpagesize.c config.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/getpagesize.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/getpagesize.c $(OUTPUT_OPTION)
+
+./getpwd.o: $(srcdir)/getpwd.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/getpwd.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/getpwd.c $(OUTPUT_OPTION)
+
+./getruntime.o: $(srcdir)/getruntime.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/getruntime.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/getruntime.c $(OUTPUT_OPTION)
+
+./hashtab.o: $(srcdir)/hashtab.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/hashtab.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/hashtab.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/hashtab.c $(OUTPUT_OPTION)
+
+./hex.o: $(srcdir)/hex.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ $(INCDIR)/safe-ctype.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/hex.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/hex.c $(OUTPUT_OPTION)
+
+./index.o: $(srcdir)/index.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/index.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/index.c $(OUTPUT_OPTION)
+
+./insque.o: $(srcdir)/insque.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/insque.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/insque.c $(OUTPUT_OPTION)
+
+./lbasename.o: $(srcdir)/lbasename.c $(INCDIR)/ansidecl.h $(INCDIR)/filenames.h \
+ $(INCDIR)/libiberty.h $(INCDIR)/safe-ctype.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/lbasename.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/lbasename.c $(OUTPUT_OPTION)
+
+./lrealpath.o: $(srcdir)/lrealpath.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/lrealpath.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/lrealpath.c $(OUTPUT_OPTION)
+
+./make-relative-prefix.o: $(srcdir)/make-relative-prefix.c config.h \
+ $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/make-relative-prefix.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/make-relative-prefix.c $(OUTPUT_OPTION)
+
+./make-temp-file.o: $(srcdir)/make-temp-file.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/make-temp-file.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/make-temp-file.c $(OUTPUT_OPTION)
+
+./md5.o: $(srcdir)/md5.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/md5.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/md5.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/md5.c $(OUTPUT_OPTION)
+
+./memchr.o: $(srcdir)/memchr.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/memchr.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/memchr.c $(OUTPUT_OPTION)
+
+./memcmp.o: $(srcdir)/memcmp.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/memcmp.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/memcmp.c $(OUTPUT_OPTION)
+
+./memcpy.o: $(srcdir)/memcpy.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/memcpy.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/memcpy.c $(OUTPUT_OPTION)
+
+./memmove.o: $(srcdir)/memmove.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/memmove.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/memmove.c $(OUTPUT_OPTION)
+
+./mempcpy.o: $(srcdir)/mempcpy.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/mempcpy.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/mempcpy.c $(OUTPUT_OPTION)
+
+./memset.o: $(srcdir)/memset.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/memset.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/memset.c $(OUTPUT_OPTION)
+
+./mkstemps.o: $(srcdir)/mkstemps.c config.h $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/mkstemps.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/mkstemps.c $(OUTPUT_OPTION)
+
+./mpw.o: $(srcdir)/mpw.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/mpw.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/mpw.c $(OUTPUT_OPTION)
+
+./msdos.o: $(srcdir)/msdos.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/msdos.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/msdos.c $(OUTPUT_OPTION)
+
+./objalloc.o: $(srcdir)/objalloc.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/objalloc.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/objalloc.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/objalloc.c $(OUTPUT_OPTION)
+
+./obstack.o: $(srcdir)/obstack.c config.h $(INCDIR)/obstack.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/obstack.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/obstack.c $(OUTPUT_OPTION)
+
+./partition.o: $(srcdir)/partition.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(INCDIR)/partition.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/partition.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/partition.c $(OUTPUT_OPTION)
+
+./pex-djgpp.o: $(srcdir)/pex-djgpp.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(srcdir)/pex-common.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-djgpp.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/pex-djgpp.c $(OUTPUT_OPTION)
+
+./pex-mpw.o: $(srcdir)/pex-mpw.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(srcdir)/pex-common.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-mpw.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/pex-mpw.c $(OUTPUT_OPTION)
+
+./pex-msdos.o: $(srcdir)/pex-msdos.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(srcdir)/pex-common.h \
$(INCDIR)/safe-ctype.h
-lrealpath.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-make-relative-prefix.o: config.h $(INCDIR)/ansidecl.h \
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-msdos.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/pex-msdos.c $(OUTPUT_OPTION)
+
+./pex-os2.o: $(srcdir)/pex-os2.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(srcdir)/pex-common.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-os2.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/pex-os2.c $(OUTPUT_OPTION)
+
+./pex-unix.o: $(srcdir)/pex-unix.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(srcdir)/pex-common.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-unix.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/pex-unix.c $(OUTPUT_OPTION)
+
+./pex-win32.o: $(srcdir)/pex-win32.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(srcdir)/pex-common.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/pex-win32.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/pex-win32.c $(OUTPUT_OPTION)
+
+./physmem.o: $(srcdir)/physmem.c config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h
-make-temp-file.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-md5.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/md5.h
-memchr.o: $(INCDIR)/ansidecl.h
-memcmp.o: $(INCDIR)/ansidecl.h
-memcpy.o: $(INCDIR)/ansidecl.h
-memmove.o: $(INCDIR)/ansidecl.h
-mempcpy.o: $(INCDIR)/ansidecl.h
-memset.o: $(INCDIR)/ansidecl.h
-mkstemps.o: config.h $(INCDIR)/ansidecl.h
-objalloc.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/objalloc.h
-obstack.o: config.h $(INCDIR)/obstack.h
-partition.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
- $(INCDIR)/partition.h
-pex-djgpp.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
- $(srcdir)/pex-common.h
-pex-mpw.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
- $(srcdir)/pex-common.h
-pex-msdos.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
- $(srcdir)/pex-common.h $(INCDIR)/safe-ctype.h
-pex-os2.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
- $(srcdir)/pex-common.h
-pex-unix.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
- $(srcdir)/pex-common.h
-pex-win32.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
- $(srcdir)/pex-common.h
-physmem.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-putenv.o: config.h $(INCDIR)/ansidecl.h
-random.o: $(INCDIR)/ansidecl.h
-regex.o: config.h $(INCDIR)/xregex.h $(INCDIR)/xregex2.h
-rename.o: config.h $(INCDIR)/ansidecl.h
-safe-ctype.o: $(INCDIR)/ansidecl.h $(INCDIR)/safe-ctype.h
-setenv.o: config.h $(INCDIR)/ansidecl.h
-sigsetmask.o: $(INCDIR)/ansidecl.h
-snprintf.o: $(INCDIR)/ansidecl.h
-sort.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/physmem.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/physmem.c $(OUTPUT_OPTION)
+
+./putenv.o: $(srcdir)/putenv.c config.h $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/putenv.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/putenv.c $(OUTPUT_OPTION)
+
+./random.o: $(srcdir)/random.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/random.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/random.c $(OUTPUT_OPTION)
+
+./regex.o: $(srcdir)/regex.c config.h $(INCDIR)/xregex.h $(INCDIR)/xregex2.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/regex.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/regex.c $(OUTPUT_OPTION)
+
+./rename.o: $(srcdir)/rename.c config.h $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/rename.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/rename.c $(OUTPUT_OPTION)
+
+./rindex.o: $(srcdir)/rindex.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/rindex.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/rindex.c $(OUTPUT_OPTION)
+
+./safe-ctype.o: $(srcdir)/safe-ctype.c $(INCDIR)/ansidecl.h \
+ $(INCDIR)/safe-ctype.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/safe-ctype.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/safe-ctype.c $(OUTPUT_OPTION)
+
+./setenv.o: $(srcdir)/setenv.c config.h $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/setenv.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/setenv.c $(OUTPUT_OPTION)
+
+./sigsetmask.o: $(srcdir)/sigsetmask.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/sigsetmask.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/sigsetmask.c $(OUTPUT_OPTION)
+
+./snprintf.o: $(srcdir)/snprintf.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/snprintf.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/snprintf.c $(OUTPUT_OPTION)
+
+./sort.o: $(srcdir)/sort.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
$(INCDIR)/sort.h
-spaces.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-splay-tree.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
- $(INCDIR)/splay-tree.h
-stpcpy.o: $(INCDIR)/ansidecl.h
-stpncpy.o: $(INCDIR)/ansidecl.h
-strcasecmp.o: $(INCDIR)/ansidecl.h
-strchr.o: $(INCDIR)/ansidecl.h
-strdup.o: $(INCDIR)/ansidecl.h
-strerror.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-strncasecmp.o: $(INCDIR)/ansidecl.h
-strncmp.o: $(INCDIR)/ansidecl.h
-strrchr.o: $(INCDIR)/ansidecl.h
-strsignal.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-strtod.o: $(INCDIR)/ansidecl.h $(INCDIR)/safe-ctype.h
-strtol.o: config.h $(INCDIR)/safe-ctype.h
-strtoul.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/safe-ctype.h
-ternary.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h \
- $(INCDIR)/ternary.h
-vasprintf.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-vfork.o: $(INCDIR)/ansidecl.h
-vfprintf.o: $(INCDIR)/ansidecl.h
-vprintf.o: $(INCDIR)/ansidecl.h
-vsnprintf.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-vsprintf.o: $(INCDIR)/ansidecl.h
-waitpid.o: config.h
-xatexit.o: $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-xexit.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-xmalloc.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-xmemdup.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-xstrdup.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
-xstrerror.o: config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/sort.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/sort.c $(OUTPUT_OPTION)
+
+./spaces.o: $(srcdir)/spaces.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/spaces.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/spaces.c $(OUTPUT_OPTION)
+
+./splay-tree.o: $(srcdir)/splay-tree.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(INCDIR)/splay-tree.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/splay-tree.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/splay-tree.c $(OUTPUT_OPTION)
+
+./stpcpy.o: $(srcdir)/stpcpy.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/stpcpy.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/stpcpy.c $(OUTPUT_OPTION)
+
+./stpncpy.o: $(srcdir)/stpncpy.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/stpncpy.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/stpncpy.c $(OUTPUT_OPTION)
+
+./strcasecmp.o: $(srcdir)/strcasecmp.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strcasecmp.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strcasecmp.c $(OUTPUT_OPTION)
+
+./strchr.o: $(srcdir)/strchr.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strchr.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strchr.c $(OUTPUT_OPTION)
+
+./strdup.o: $(srcdir)/strdup.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strdup.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strdup.c $(OUTPUT_OPTION)
+
+./strerror.o: $(srcdir)/strerror.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strerror.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strerror.c $(OUTPUT_OPTION)
+
+./strncasecmp.o: $(srcdir)/strncasecmp.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strncasecmp.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strncasecmp.c $(OUTPUT_OPTION)
+
+./strncmp.o: $(srcdir)/strncmp.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strncmp.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strncmp.c $(OUTPUT_OPTION)
+
+./strrchr.o: $(srcdir)/strrchr.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strrchr.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strrchr.c $(OUTPUT_OPTION)
+
+./strsignal.o: $(srcdir)/strsignal.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strsignal.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strsignal.c $(OUTPUT_OPTION)
+
+./strstr.o: $(srcdir)/strstr.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strstr.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strstr.c $(OUTPUT_OPTION)
+
+./strtod.o: $(srcdir)/strtod.c $(INCDIR)/ansidecl.h $(INCDIR)/safe-ctype.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strtod.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strtod.c $(OUTPUT_OPTION)
+
+./strtol.o: $(srcdir)/strtol.c config.h $(INCDIR)/safe-ctype.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strtol.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strtol.c $(OUTPUT_OPTION)
+
+./strtoul.o: $(srcdir)/strtoul.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/safe-ctype.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/strtoul.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/strtoul.c $(OUTPUT_OPTION)
+
+./ternary.o: $(srcdir)/ternary.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h $(INCDIR)/ternary.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/ternary.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/ternary.c $(OUTPUT_OPTION)
+
+./tmpnam.o: $(srcdir)/tmpnam.c
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/tmpnam.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/tmpnam.c $(OUTPUT_OPTION)
+
+./vasprintf.o: $(srcdir)/vasprintf.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/vasprintf.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/vasprintf.c $(OUTPUT_OPTION)
+
+./vfork.o: $(srcdir)/vfork.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/vfork.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/vfork.c $(OUTPUT_OPTION)
+
+./vfprintf.o: $(srcdir)/vfprintf.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/vfprintf.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/vfprintf.c $(OUTPUT_OPTION)
+
+./vprintf.o: $(srcdir)/vprintf.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/vprintf.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/vprintf.c $(OUTPUT_OPTION)
+
+./vsnprintf.o: $(srcdir)/vsnprintf.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/vsnprintf.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/vsnprintf.c $(OUTPUT_OPTION)
+
+./vsprintf.o: $(srcdir)/vsprintf.c $(INCDIR)/ansidecl.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/vsprintf.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/vsprintf.c $(OUTPUT_OPTION)
+
+./waitpid.o: $(srcdir)/waitpid.c config.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/waitpid.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/waitpid.c $(OUTPUT_OPTION)
+
+./xatexit.o: $(srcdir)/xatexit.c $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/xatexit.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/xatexit.c $(OUTPUT_OPTION)
+
+./xexit.o: $(srcdir)/xexit.c config.h $(INCDIR)/ansidecl.h $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/xexit.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/xexit.c $(OUTPUT_OPTION)
+
+./xmalloc.o: $(srcdir)/xmalloc.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/xmalloc.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/xmalloc.c $(OUTPUT_OPTION)
+
+./xmemdup.o: $(srcdir)/xmemdup.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/xmemdup.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/xmemdup.c $(OUTPUT_OPTION)
+
+./xstrdup.o: $(srcdir)/xstrdup.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/xstrdup.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/xstrdup.c $(OUTPUT_OPTION)
+
+./xstrerror.o: $(srcdir)/xstrerror.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/xstrerror.c -o pic/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/xstrerror.c $(OUTPUT_OPTION)
+
diff --git a/libiberty/README b/libiberty/README
index e8e9b338350..886bd67bc9d 100644
--- a/libiberty/README
+++ b/libiberty/README
@@ -34,7 +34,7 @@ name of the function must be the same as the name of the file.
* Add the source file name to CFILES.
* Add the function to name to the funcs shell variable in
- configure.in.
+ configure.ac.
* Add the function to the AC_CHECK_FUNCS lists just after the
setting of the funcs shell variable. These AC_CHECK_FUNCS calls
diff --git a/libiberty/config.in b/libiberty/config.in
index 50ed3266852..8e5071aec7b 100644
--- a/libiberty/config.in
+++ b/libiberty/config.in
@@ -1,339 +1,376 @@
-/* config.in. Generated automatically from configure.in by autoheader. */
-
-/* Define to empty if the keyword does not work. */
-#undef const
-
-/* Define if you have a working `mmap' system call. */
-#undef HAVE_MMAP
-
-/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
-#undef HAVE_SYS_WAIT_H
-
-/* Define if you have <vfork.h>. */
-#undef HAVE_VFORK_H
-
-/* Define as __inline if that's what the C compiler calls it. */
-#undef inline
-
-/* Define if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* Define to `int' if <sys/types.h> doesn't define. */
-#undef pid_t
-
-/* Define if you need to in order for stat and other things to work. */
-#undef _POSIX_SOURCE
-
-/* Define if you have the ANSI C header files. */
-#undef STDC_HEADERS
+/* config.in. Generated from configure.ac by autoheader. */
+/* Define to `unsigned long' if <sys/types.h> doesn't define. */
+#undef uintptr_t
-/* Define if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-/* Define vfork as fork if vfork does not work. */
-#undef vfork
+/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+#undef BYTEORDER
-/* Define to `unsigned long' if <sys/types.h> doesn't define. */
-#undef uintptr_t
+/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
+ This function is required for alloca.c support on those systems. */
+#undef CRAY_STACKSEG_END
-/* Define if you have the _doprnt function. */
-#undef HAVE__DOPRNT
+/* Define to 1 if you have the <alloca.h> header file. */
+#undef HAVE_ALLOCA_H
-/* Define if you have the asprintf function. */
+/* Define to 1 if you have the `asprintf' function. */
#undef HAVE_ASPRINTF
-/* Define if you have the atexit function. */
+/* Define to 1 if you have the `atexit' function. */
#undef HAVE_ATEXIT
-/* Define if you have the basename function. */
+/* Define to 1 if you have the `basename' function. */
#undef HAVE_BASENAME
-/* Define if you have the bcmp function. */
+/* Define to 1 if you have the `bcmp' function. */
#undef HAVE_BCMP
-/* Define if you have the bcopy function. */
+/* Define to 1 if you have the `bcopy' function. */
#undef HAVE_BCOPY
-/* Define if you have the bsearch function. */
+/* Define to 1 if you have the `bsearch' function. */
#undef HAVE_BSEARCH
-/* Define if you have the bzero function. */
+/* Define to 1 if you have the `bzero' function. */
#undef HAVE_BZERO
-/* Define if you have the calloc function. */
+/* Define to 1 if you have the `calloc' function. */
#undef HAVE_CALLOC
-/* Define if you have the canonicalize_file_name function. */
+/* Define to 1 if you have the `canonicalize_file_name' function. */
#undef HAVE_CANONICALIZE_FILE_NAME
-/* Define if you have the clock function. */
+/* Define to 1 if you have the `clock' function. */
#undef HAVE_CLOCK
-/* Define if you have the ffs function. */
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `ffs' function. */
#undef HAVE_FFS
-/* Define if you have the getcwd function. */
+/* Define to 1 if you have the `fork' function. */
+#undef HAVE_FORK
+
+/* Define to 1 if you have the `getcwd' function. */
#undef HAVE_GETCWD
-/* Define if you have the getpagesize function. */
+/* Define to 1 if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE
-/* Define if you have the getrusage function. */
+/* Define to 1 if you have the `getrusage' function. */
#undef HAVE_GETRUSAGE
-/* Define if you have the getsysinfo function. */
+/* Define to 1 if you have the `getsysinfo' function. */
#undef HAVE_GETSYSINFO
-/* Define if you have the gettimeofday function. */
+/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
-/* Define if you have the index function. */
+/* Define to 1 if you have the `index' function. */
#undef HAVE_INDEX
-/* Define if you have the insque function. */
+/* Define to 1 if you have the `insque' function. */
#undef HAVE_INSQUE
-/* Define if you have the memchr function. */
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <limits.h> header file. */
+#undef HAVE_LIMITS_H
+
+/* Define to 1 if you have the <machine/hal_sysinfo.h> header file. */
+#undef HAVE_MACHINE_HAL_SYSINFO_H
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#undef HAVE_MALLOC_H
+
+/* Define to 1 if you have the `memchr' function. */
#undef HAVE_MEMCHR
-/* Define if you have the memcmp function. */
+/* Define to 1 if you have the `memcmp' function. */
#undef HAVE_MEMCMP
-/* Define if you have the memcpy function. */
+/* Define to 1 if you have the `memcpy' function. */
#undef HAVE_MEMCPY
-/* Define if you have the memmove function. */
+/* Define to 1 if you have the `memmove' function. */
#undef HAVE_MEMMOVE
-/* Define if you have the mempcpy function. */
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mempcpy' function. */
#undef HAVE_MEMPCPY
-/* Define if you have the memset function. */
+/* Define to 1 if you have the `memset' function. */
#undef HAVE_MEMSET
-/* Define if you have the mkstemps function. */
+/* Define to 1 if you have the `mkstemps' function. */
#undef HAVE_MKSTEMPS
-/* Define if you have the on_exit function. */
+/* Define to 1 if you have a working `mmap' system call. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the `on_exit' function. */
#undef HAVE_ON_EXIT
-/* Define if you have the psignal function. */
+/* Define to 1 if you have the `psignal' function. */
#undef HAVE_PSIGNAL
-/* Define if you have the pstat_getdynamic function. */
+/* Define to 1 if you have the `pstat_getdynamic' function. */
#undef HAVE_PSTAT_GETDYNAMIC
-/* Define if you have the pstat_getstatic function. */
+/* Define to 1 if you have the `pstat_getstatic' function. */
#undef HAVE_PSTAT_GETSTATIC
-/* Define if you have the putenv function. */
+/* Define to 1 if you have the `putenv' function. */
#undef HAVE_PUTENV
-/* Define if you have the random function. */
+/* Define to 1 if you have the `random' function. */
#undef HAVE_RANDOM
-/* Define if you have the realpath function. */
+/* Define to 1 if you have the `realpath' function. */
#undef HAVE_REALPATH
-/* Define if you have the rename function. */
+/* Define to 1 if you have the `rename' function. */
#undef HAVE_RENAME
-/* Define if you have the rindex function. */
+/* Define to 1 if you have the `rindex' function. */
#undef HAVE_RINDEX
-/* Define if you have the sbrk function. */
+/* Define to 1 if you have the `sbrk' function. */
#undef HAVE_SBRK
-/* Define if you have the setenv function. */
+/* Define to 1 if you have the `setenv' function. */
#undef HAVE_SETENV
-/* Define if you have the sigsetmask function. */
+/* Define to 1 if you have the `sigsetmask' function. */
#undef HAVE_SIGSETMASK
-/* Define if you have the snprintf function. */
+/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF
-/* Define if you have the stpcpy function. */
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `stpcpy' function. */
#undef HAVE_STPCPY
-/* Define if you have the stpncpy function. */
+/* Define to 1 if you have the `stpncpy' function. */
#undef HAVE_STPNCPY
-/* Define if you have the strcasecmp function. */
+/* Define to 1 if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP
-/* Define if you have the strchr function. */
+/* Define to 1 if you have the `strchr' function. */
#undef HAVE_STRCHR
-/* Define if you have the strdup function. */
+/* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP
-/* Define if you have the strerror function. */
+/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
-/* Define if you have the strncasecmp function. */
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strncasecmp' function. */
#undef HAVE_STRNCASECMP
-/* Define if you have the strrchr function. */
+/* Define to 1 if you have the `strrchr' function. */
#undef HAVE_STRRCHR
-/* Define if you have the strsignal function. */
+/* Define to 1 if you have the `strsignal' function. */
#undef HAVE_STRSIGNAL
-/* Define if you have the strstr function. */
+/* Define to 1 if you have the `strstr' function. */
#undef HAVE_STRSTR
-/* Define if you have the strtod function. */
+/* Define to 1 if you have the `strtod' function. */
#undef HAVE_STRTOD
-/* Define if you have the strtol function. */
+/* Define to 1 if you have the `strtol' function. */
#undef HAVE_STRTOL
-/* Define if you have the strtoul function. */
+/* Define to 1 if you have the `strtoul' function. */
#undef HAVE_STRTOUL
-/* Define if you have the sysconf function. */
+/* Define to 1 if you have the `sysconf' function. */
#undef HAVE_SYSCONF
-/* Define if you have the sysctl function. */
+/* Define to 1 if you have the `sysctl' function. */
#undef HAVE_SYSCTL
-/* Define if you have the sysmp function. */
+/* Define to 1 if you have the `sysmp' function. */
#undef HAVE_SYSMP
-/* Define if you have the table function. */
-#undef HAVE_TABLE
+/* Define if you have the sys_errlist variable. */
+#undef HAVE_SYS_ERRLIST
-/* Define if you have the times function. */
-#undef HAVE_TIMES
+/* Define to 1 if you have the <sys/file.h> header file. */
+#undef HAVE_SYS_FILE_H
-/* Define if you have the tmpnam function. */
-#undef HAVE_TMPNAM
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#undef HAVE_SYS_MMAN_H
-/* Define if you have the vasprintf function. */
-#undef HAVE_VASPRINTF
+/* Define if you have the sys_nerr variable. */
+#undef HAVE_SYS_NERR
-/* Define if you have the vfprintf function. */
-#undef HAVE_VFPRINTF
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
-/* Define if you have the vprintf function. */
-#undef HAVE_VPRINTF
+/* Define to 1 if you have the <sys/pstat.h> header file. */
+#undef HAVE_SYS_PSTAT_H
-/* Define if you have the vsnprintf function. */
-#undef HAVE_VSNPRINTF
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
-/* Define if you have the vsprintf function. */
-#undef HAVE_VSPRINTF
+/* Define if you have the sys_siglist variable. */
+#undef HAVE_SYS_SIGLIST
-/* Define if you have the waitpid function. */
-#undef HAVE_WAITPID
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
-/* Define if you have the <alloca.h> header file. */
-#undef HAVE_ALLOCA_H
+/* Define to 1 if you have the <sys/sysctl.h> header file. */
+#undef HAVE_SYS_SYSCTL_H
-/* Define if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
+/* Define to 1 if you have the <sys/sysinfo.h> header file. */
+#undef HAVE_SYS_SYSINFO_H
-/* Define if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
+/* Define to 1 if you have the <sys/sysmp.h> header file. */
+#undef HAVE_SYS_SYSMP_H
-/* Define if you have the <machine/hal_sysinfo.h> header file. */
-#undef HAVE_MACHINE_HAL_SYSINFO_H
+/* Define to 1 if you have the <sys/systemcfg.h> header file. */
+#undef HAVE_SYS_SYSTEMCFG_H
-/* Define if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
+/* Define to 1 if you have the <sys/table.h> header file. */
+#undef HAVE_SYS_TABLE_H
-/* Define if you have the <string.h> header file. */
-#undef HAVE_STRING_H
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
-/* Define if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
-/* Define if you have the <sys/file.h> header file. */
-#undef HAVE_SYS_FILE_H
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
-/* Define if you have the <sys/mman.h> header file. */
-#undef HAVE_SYS_MMAN_H
+/* Define to 1 if you have the `table' function. */
+#undef HAVE_TABLE
-/* Define if you have the <sys/param.h> header file. */
-#undef HAVE_SYS_PARAM_H
+/* Define to 1 if you have the `times' function. */
+#undef HAVE_TIMES
-/* Define if you have the <sys/pstat.h> header file. */
-#undef HAVE_SYS_PSTAT_H
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
-/* Define if you have the <sys/resource.h> header file. */
-#undef HAVE_SYS_RESOURCE_H
+/* Define to 1 if you have the `tmpnam' function. */
+#undef HAVE_TMPNAM
-/* Define if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
+/* Define if you have the \`uintptr_t' type. */
+#undef HAVE_UINTPTR_T
-/* Define if you have the <sys/sysctl.h> header file. */
-#undef HAVE_SYS_SYSCTL_H
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
-/* Define if you have the <sys/sysinfo.h> header file. */
-#undef HAVE_SYS_SYSINFO_H
+/* Define to 1 if you have the `vasprintf' function. */
+#undef HAVE_VASPRINTF
-/* Define if you have the <sys/sysmp.h> header file. */
-#undef HAVE_SYS_SYSMP_H
+/* Define to 1 if you have the `vfork' function. */
+#undef HAVE_VFORK
-/* Define if you have the <sys/systemcfg.h> header file. */
-#undef HAVE_SYS_SYSTEMCFG_H
+/* Define to 1 if you have the <vfork.h> header file. */
+#undef HAVE_VFORK_H
-/* Define if you have the <sys/table.h> header file. */
-#undef HAVE_SYS_TABLE_H
+/* Define to 1 if you have the `vfprintf' function. */
+#undef HAVE_VFPRINTF
-/* Define if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
+/* Define to 1 if you have the `vprintf' function. */
+#undef HAVE_VPRINTF
-/* Define if you have the <time.h> header file. */
-#undef HAVE_TIME_H
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
-/* Define if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
+/* Define to 1 if you have the `vsprintf' function. */
+#undef HAVE_VSPRINTF
-/* Define if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
+/* Define to 1 if you have the `waitpid' function. */
+#undef HAVE_WAITPID
-/* whether byteorder is bigendian */
-#undef WORDS_BIGENDIAN
+/* Define to 1 if `fork' works. */
+#undef HAVE_WORKING_FORK
+
+/* Define to 1 if `vfork' works. */
+#undef HAVE_WORKING_VFORK
+
+/* Define to 1 if you have the `_doprnt' function. */
+#undef HAVE__DOPRNT
+
+/* Define if you have the _system_configuration variable. */
+#undef HAVE__SYSTEM_CONFIGURATION
/* Define if the host machine stores words of multi-word integers in
big-endian order. */
#undef HOST_WORDS_BIG_ENDIAN
-/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
-#undef BYTEORDER
+/* Define if canonicalize_file_name is not declared in system header files. */
+#undef NEED_DECLARATION_CANONICALIZE_FILE_NAME
/* Define if errno must be declared even when <errno.h> is included. */
#undef NEED_DECLARATION_ERRNO
-/* Define if you have the `uintptr_t' type. */
-#undef HAVE_UINTPTR_T
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
-/* Define if you have the sys_errlist variable. */
-#undef HAVE_SYS_ERRLIST
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
-/* Define if you have the sys_nerr variable. */
-#undef HAVE_SYS_NERR
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
-/* Define if you have the sys_siglist variable. */
-#undef HAVE_SYS_SIGLIST
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
-/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP
- systems. This function is required for alloca.c support on those
- systems. */
-#undef CRAY_STACKSEG_END
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
-/* Define if you know the direction of stack growth for your system;
- otherwise it will be automatically deduced at run-time.
- STACK_DIRECTION > 0 => grows toward higher addresses
- STACK_DIRECTION < 0 => grows toward lower addresses
- STACK_DIRECTION = 0 => direction of growth unknown */
+/* Define if you know the direction of stack growth for your system; otherwise
+ it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows
+ toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses
+ STACK_DIRECTION = 0 => direction of growth unknown */
#undef STACK_DIRECTION
-/* Define if you have the _system_configuration variable. */
-#undef HAVE__SYSTEM_CONFIGURATION
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
-/* Define if canonicalize_file_name is not declared in system header files. */
-#undef NEED_DECLARATION_CANONICALIZE_FILE_NAME
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#undef TIME_WITH_SYS_TIME
+
+/* whether byteorder is bigendian */
+#undef WORDS_BIGENDIAN
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define as `__inline' if that's what the C compiler calls it, or to nothing
+ if it is not supported. */
+#undef inline
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef pid_t
+
+/* Define to `unsigned long' if <sys/types.h> does not define. */
+#undef uintptr_t
+
+/* Define as `fork' if `vfork' does not work. */
+#undef vfork
diff --git a/libiberty/configure b/libiberty/configure
index 71f14e8a93c..2f65976692d 100755
--- a/libiberty/configure
+++ b/libiberty/configure
@@ -5679,11 +5679,11 @@ fi
# Figure out which version of pexecute to use.
case "${host}" in
- *-*-mingw* | *-*-winnt*) pexecute=pex-win32.o ;;
- *-*-msdosdjgpp*) pexecute=pex-djgpp.o ;;
- *-*-msdos*) pexecute=pex-msdos.o ;;
- *-*-os2-emx*) pexecute=pex-os2.o ;;
- *) pexecute=pex-unix.o ;;
+ *-*-mingw* | *-*-winnt*) pexecute=./pex-win32.o ;;
+ *-*-msdosdjgpp*) pexecute=./pex-djgpp.o ;;
+ *-*-msdos*) pexecute=./pex-msdos.o ;;
+ *-*-os2-emx*) pexecute=./pex-os2.o ;;
+ *) pexecute=./pex-unix.o ;;
esac
@@ -6134,6 +6134,16 @@ else
fi
+
+L=""
+for l in x $LIBOBJS; do
+ case $l in
+ x) ;;
+ *) L="$L ./$l" ;;
+ esac
+done
+LIBOBJS="$L"
+
# We need multilib support, but only if configuring for the target.
ac_config_files="$ac_config_files Makefile testsuite/Makefile"
ac_config_commands="$ac_config_commands default"
diff --git a/libiberty/configure.in b/libiberty/configure.in
deleted file mode 100644
index eb8a99daa08..00000000000
--- a/libiberty/configure.in
+++ /dev/null
@@ -1,520 +0,0 @@
-dnl Process this file with autoconf to produce a configure script
-
-AC_PREREQ(2.57)
-AC_INIT(xmalloc.c)
-
-# This works around the fact that libtool configuration may change LD
-# for this particular configuration, but some shells, instead of
-# keeping the changes in LD private, export them just because LD is
-# exported. We don't use libtool yet, but some day we might, so...
-ORIGINAL_LD_FOR_MULTILIBS=$LD
-
-dnl We use these options to decide which functions to include.
-AC_ARG_WITH(target-subdir,
-[ --with-target-subdir=SUBDIR Configuring in a subdirectory for target])
-AC_ARG_WITH(build-subdir,
-[ --with-build-subdir=SUBDIR Configuring in a subdirectory for build])
-AC_ARG_WITH(cross-host,
-[ --with-cross-host=HOST Configuring with a cross compiler])
-AC_ARG_WITH(newlib,
-[ --with-newlib Configuring with newlib])
-
-if test "${srcdir}" = "."; then
- if test -n "${with_build_subdir}"; then
- libiberty_topdir="${srcdir}/../.."
- with_target_subdir=
- elif test -z "${with_target_subdir}"; then
- libiberty_topdir="${srcdir}/.."
- else
- if test "${with_target_subdir}" != "."; then
- libiberty_topdir="${srcdir}/${with_multisrctop}../.."
- else
- libiberty_topdir="${srcdir}/${with_multisrctop}.."
- fi
- fi
-else
- libiberty_topdir="${srcdir}/.."
-fi
-AC_SUBST(libiberty_topdir)
-AC_CONFIG_AUX_DIR($libiberty_topdir)
-
-dnl Very limited version of automake's enable-maintainer-mode
-
-AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
- dnl maintainer-mode is disabled by default
- AC_ARG_ENABLE(maintainer-mode,
-[ --enable-maintainer-mode
- enable make rules and dependencies not useful
- (and sometimes confusing) to the casual installer],
- maintainer_mode=$enableval,
- maintainer_mode=no)
-
-AC_MSG_RESULT($maintainer_mode)
-
-if test "$maintainer_mode" = "yes"; then
- MAINT=''
- NOTMAINT='#'
-else
- MAINT='#'
- NOTMAINT=''
-fi
-AC_SUBST(MAINT)dnl
-AC_SUBST(NOTMAINT)dnl
-
-# Do we have a single-tree copy of texinfo? Even if we do, we can't
-# rely on it - libiberty is built before texinfo.
-AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo, )
-if test "x$MAKEINFO" = "x"; then
- MAKEINFO="@echo makeinfo missing; true"
- BUILD_INFO=
-else
- BUILD_INFO=info
- case "$MAKEINFO" in
- */missing\ makeinfo*)
- BUILD_INFO=
- AC_MSG_WARN([
-*** Makeinfo is missing. Info documentation will not be built.])
- ;;
- *)
- case x"`$MAKEINFO --version | grep 'GNU texinfo'`" in
- x*\ [[1-3]].* )
- MAKEINFO="@echo $MAKEINFO is too old, 4.0 or newer required; true"
- BUILD_INFO=
- AC_MSG_WARN([
-*** Makeinfo is too old. Info documentation will not be built.])
- ;;
- esac
- ;;
- esac
-fi
-AC_SUBST(MAKEINFO)
-AC_SUBST(BUILD_INFO)
-
-AC_CHECK_PROG(PERL, perl, perl, )
-if test x"$PERL" = x""; then
- HAVE_PERL='#'
-else
- HAVE_PERL=''
-fi
-AC_SUBST(HAVE_PERL)
-
-AC_CANONICAL_HOST
-
-dnl When we start using automake:
-dnl AM_INIT_AUTOMAKE(libiberty, 1.0)
-
-dnl These must be called before AM_PROG_LIBTOOL, because it may want
-dnl to call AC_CHECK_PROG.
-AC_CHECK_TOOL(AR, ar)
-AC_CHECK_TOOL(RANLIB, ranlib, :)
-
-GCC_NO_EXECUTABLES
-AC_PROG_CC
-AC_PROG_CPP_WERROR
-
-if test x$GCC = xyes; then
- ac_libiberty_warn_cflags='-W -Wall -Wtraditional -pedantic'
-fi
-AC_SUBST(ac_libiberty_warn_cflags)
-
-AC_PROG_CC_C_O
-# autoconf is lame and doesn't give us any substitution variable for this.
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
- NO_MINUS_C_MINUS_O=yes
-else
- OUTPUT_OPTION='-o $@'
-fi
-AC_SUBST(NO_MINUS_C_MINUS_O)
-AC_SUBST(OUTPUT_OPTION)
-
-AC_C_CONST
-AC_C_INLINE
-AC_C_BIGENDIAN_CROSS
-
-dnl When we start using libtool:
-dnl Default to a non shared library. This may be overridden by the
-dnl configure option --enable-shared.
-dnl AM_DISABLE_SHARED
-
-dnl When we start using libtool:
-dnl AM_PROG_LIBTOOL
-
-dnl When we start using automake:
-dnl AM_CONFIG_HEADER(config.h:config.in)
-AC_CONFIG_HEADER(config.h:config.in)
-
-dnl When we start using automake:
-dnl AM_MAINTAINER_MODE
-dnl AC_EXEEXT
-
-dnl When we start using automake:
-dnl AM_PROG_INSTALL
-AC_PROG_INSTALL
-
-. ${srcdir}/config.table
-host_makefile_frag=${frag}
-AC_SUBST_FILE(host_makefile_frag)
-
-# It's OK to check for header files. Although the compiler may not be
-# able to link anything, it had better be able to at least compile
-# something.
-AC_CHECK_HEADERS(sys/file.h sys/param.h limits.h stdlib.h malloc.h string.h unistd.h strings.h sys/time.h time.h sys/resource.h sys/stat.h sys/mman.h fcntl.h alloca.h sys/pstat.h sys/sysmp.h sys/sysinfo.h machine/hal_sysinfo.h sys/table.h sys/sysctl.h sys/systemcfg.h)
-AC_HEADER_SYS_WAIT
-AC_HEADER_TIME
-
-libiberty_AC_DECLARE_ERRNO
-
-AC_CHECK_TYPE(uintptr_t, unsigned long)
-# Given the above check, we always have uintptr_t or a fallback
-# definition. So define HAVE_UINTPTR_T in case any imported code
-# relies on it.
-AC_DEFINE(HAVE_UINTPTR_T, 1, [Define if you have the \`uintptr_t' type.])
-
-AC_TYPE_PID_T
-
-# This is the list of functions which libiberty will provide if they
-# are not available on the host.
-
-funcs="asprintf"
-funcs="$funcs atexit"
-funcs="$funcs basename"
-funcs="$funcs bcmp"
-funcs="$funcs bcopy"
-funcs="$funcs bsearch"
-funcs="$funcs bzero"
-funcs="$funcs calloc"
-funcs="$funcs clock"
-funcs="$funcs ffs"
-funcs="$funcs getcwd"
-funcs="$funcs getpagesize"
-funcs="$funcs index"
-funcs="$funcs insque"
-funcs="$funcs memchr"
-funcs="$funcs memcmp"
-funcs="$funcs memcpy"
-funcs="$funcs memmove"
-funcs="$funcs mempcpy"
-funcs="$funcs memset"
-funcs="$funcs mkstemps"
-funcs="$funcs putenv"
-funcs="$funcs random"
-funcs="$funcs rename"
-funcs="$funcs rindex"
-funcs="$funcs setenv"
-funcs="$funcs snprintf"
-funcs="$funcs sigsetmask"
-funcs="$funcs stpcpy"
-funcs="$funcs stpncpy"
-funcs="$funcs strcasecmp"
-funcs="$funcs strchr"
-funcs="$funcs strdup"
-funcs="$funcs strncasecmp"
-funcs="$funcs strrchr"
-funcs="$funcs strstr"
-funcs="$funcs strtod"
-funcs="$funcs strtol"
-funcs="$funcs strtoul"
-funcs="$funcs tmpnam"
-funcs="$funcs vasprintf"
-funcs="$funcs vfprintf"
-funcs="$funcs vprintf"
-funcs="$funcs vsnprintf"
-funcs="$funcs vsprintf"
-funcs="$funcs waitpid"
-
-# Also in the old function.def file: alloca, vfork, getopt.
-
-vars="sys_errlist sys_nerr sys_siglist"
-
-checkfuncs="getrusage on_exit psignal strerror strsignal sysconf times sbrk gettimeofday"
-checkfuncs="$checkfuncs realpath canonicalize_file_name pstat_getstatic pstat_getdynamic sysmp"
-checkfuncs="$checkfuncs getsysinfo table sysctl"
-
-# These are neither executed nor required, but they help keep
-# autoheader happy without adding a bunch of text to acconfig.h.
-if test "x" = "y"; then
- AC_CHECK_FUNCS(asprintf atexit basename bcmp bcopy bsearch bzero calloc clock \
- getcwd getpagesize index insque mkstemps memchr memcmp memcpy \
- memmove mempcpy memset putenv random rename rindex sigsetmask \
- strcasecmp setenv stpcpy stpncpy strchr strdup strncasecmp strrchr strstr \
- strtod strtol strtoul tmpnam vasprintf vfprintf vprintf \
- vsprintf waitpid getrusage on_exit psignal strerror strsignal \
- sysconf times sbrk gettimeofday ffs snprintf vsnprintf \
- pstat_getstatic pstat_getdynamic sysmp getsysinfo table sysctl \
- realpath canonicalize_file_name)
- AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.])
- AC_DEFINE(HAVE_SYS_NERR, 1, [Define if you have the sys_nerr variable.])
- AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.])
-fi
-
-# For each of these functions, if the host does not provide the
-# function we want to put FN.o in LIBOBJS, and if the host does
-# provide the function, we want to define HAVE_FN in config.h.
-
-setobjs=
-CHECK=
-target_header_dir=
-if test -n "${with_target_subdir}"; then
-
- # We are being configured as a target library. AC_REPLACE_FUNCS
- # may not work correctly, because the compiler may not be able to
- # link executables. Note that we may still be being configured
- # native.
-
- # If we are being configured for newlib, we know which functions
- # newlib provide and which ones we will be expected to provide.
-
- if test "x${with_newlib}" = "xyes"; then
- AC_LIBOBJ([asprintf])
- AC_LIBOBJ([basename])
- AC_LIBOBJ([insque])
- AC_LIBOBJ([random])
- AC_LIBOBJ([strdup])
- AC_LIBOBJ([vasprintf])
-
- for f in $funcs; do
- case "$f" in
- asprintf | basename | insque | random | strdup | vasprintf)
- ;;
- *)
- n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- AC_DEFINE_UNQUOTED($n)
- ;;
- esac
- done
-
- # newlib doesnt provide any of the variables in $vars, so we
- # dont have to check them here.
-
- # Of the functions in $checkfuncs, newlib only has strerror.
- AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR)
-
- setobjs=yes
-
- fi
-
- # We may wish to install the target headers somewhere.
- AC_ARG_ENABLE(install-libiberty,
- [ --enable-install-libiberty Install headers for end users],
- enable_install_libiberty=$enableval,
- enable_install_libiberty=no)dnl
-
- # Option parsed, now set things appropriately.
- case x"$enable_install_libiberty" in
- xyes|x)
- target_header_dir=libiberty
- ;;
- xno)
- target_header_dir=
- ;;
- *)
- # This could be sanity-checked in various ways...
- target_header_dir="${enable_install_libiberty}"
- ;;
- esac
-
-
-else
-
- # Not a target library, so we set things up to run the test suite.
- CHECK=check-cplus-dem
-
-fi
-
-AC_SUBST(CHECK)
-AC_SUBST(target_header_dir)
-
-case "${host}" in
- *-*-cygwin* | *-*-mingw*)
- AC_DEFINE_NOAUTOHEADER(HAVE_SYS_ERRLIST)
- AC_DEFINE_NOAUTOHEADER(HAVE_SYS_NERR)
- ;;
-esac
-
-if test -z "${setobjs}"; then
- case "${host}" in
-
- *-*-vxworks*)
- # Handle VxWorks configuration specially, since on VxWorks the
- # libraries are actually on the target board, not in the file
- # system.
- AC_LIBOBJ([basename])
- AC_LIBOBJ([getpagesize])
- AC_LIBOBJ([insque])
- AC_LIBOBJ([random])
- AC_LIBOBJ([strcasecmp])
- AC_LIBOBJ([strncasecmp])
- AC_LIBOBJ([strdup])
- AC_LIBOBJ([vfork])
- AC_LIBOBJ([waitpid])
- AC_LIBOBJ([vasprintf])
- for f in $funcs; do
- case "$f" in
- basename | getpagesize | insque | random | strcasecmp)
- ;;
- strncasecmp | strdup | vfork | waitpid | vasprintf)
- ;;
- *)
- n=HAVE_`echo $f | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- AC_DEFINE_UNQUOTED($n)
- ;;
- esac
- done
-
- # VxWorks doesn't provide any of the variables in $vars, so we
- # don't have to check them here.
-
- # Of the functions in $checkfuncs, VxWorks only has strerror.
- AC_DEFINE_NOAUTOHEADER(HAVE_STRERROR)
-
- setobjs=yes
- ;;
-
- esac
-fi
-
-if test -z "${setobjs}"; then
-
- case "${host}" in
-
- *-*-cygwin*)
- # The Cygwin library actually uses a couple of files from
- # libiberty when it is built. If we are building a native
- # Cygwin, and we run the tests, we will appear to have these
- # files. However, when we go on to build winsup, we will wind up
- # with a library which does not have the files, since they should
- # have come from libiberty.
-
- # We handle this by removing the functions the winsup library
- # provides from our shell variables, so that they appear to be
- # missing.
-
- # DJ - only if we're *building* cygwin, not just building *with* cygwin
-
- if test -n "${with_target_subdir}"
- then
- funcs="`echo $funcs | sed -e 's/random//'`"
- AC_LIBOBJ([random])
- vars="`echo $vars | sed -e 's/sys_siglist//'`"
- checkfuncs="`echo $checkfuncs | sed -e 's/strsignal//' -e 's/psignal//'`"
- fi
- ;;
-
- *-*-mingw32*)
- # Under mingw32, sys_nerr and sys_errlist exist, but they are
- # macros, so the test below won't find them.
- libiberty_cv_var_sys_nerr=yes
- libiberty_cv_var_sys_errlist=yes
- ;;
-
- *-*-uwin*)
- # Under some versions of uwin, vfork is notoriously buggy and the test
- # can hang configure; on other versions, vfork exists just as a stub.
- # FIXME: This should be removed once vfork in uwin's runtime is fixed.
- ac_cv_func_vfork_works=no
- # Under uwin 2.0+, sys_nerr and sys_errlist exist, but they are
- # macros (actually, these are imported from a DLL, but the end effect
- # is the same), so the test below won't find them.
- libiberty_cv_var_sys_nerr=yes
- libiberty_cv_var_sys_errlist=yes
- ;;
-
- *-*-*vms*)
- # Under VMS, vfork works very different than on Unix. The standard test
- # won't work, and it isn't easily adaptable. It makes more sense to
- # just force it.
- ac_cv_func_vfork_works=yes
- ;;
-
- esac
-
- # We haven't set the list of objects yet. Use the standard autoconf
- # tests. This will only work if the compiler works.
- AC_ISC_POSIX
- AC_REPLACE_FUNCS($funcs)
- libiberty_AC_FUNC_C_ALLOCA
- AC_FUNC_VFORK
- if test $ac_cv_func_vfork_works = no; then
- AC_LIBOBJ([vfork])
- fi
- # We only need _doprnt if we might use it to implement v*printf.
- if test $ac_cv_func_vprintf != yes \
- || test $ac_cv_func_vfprintf != yes \
- || test $ac_cv_func_vsprintf != yes; then
- AC_REPLACE_FUNCS(_doprnt)
- else
- AC_CHECK_FUNCS(_doprnt)
- fi
-
- for v in $vars; do
- AC_MSG_CHECKING([for $v])
- AC_CACHE_VAL(libiberty_cv_var_$v,
- [AC_TRY_LINK([int *p;], [extern int $v []; p = $v;],
- [eval "libiberty_cv_var_$v=yes"],
- [eval "libiberty_cv_var_$v=no"])])
- if eval "test \"`echo '$libiberty_cv_var_'$v`\" = yes"; then
- AC_MSG_RESULT(yes)
- n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- AC_DEFINE_UNQUOTED($n)
- else
- AC_MSG_RESULT(no)
- fi
- done
-
- # special check for _system_configuration because AIX <4.3.2 do not
- # contain the `physmem' member.
- AC_MSG_CHECKING([for external symbol _system_configuration])
- AC_TRY_COMPILE([#include <sys/systemcfg.h>],
- [double x = _system_configuration.physmem;],
- [AC_MSG_RESULT([yes])
- AC_DEFINE(HAVE__SYSTEM_CONFIGURATION, 1,
- [Define if you have the _system_configuration variable.])],
- [AC_MSG_RESULT([no])])
-
- AC_CHECK_FUNCS($checkfuncs)
- libiberty_NEED_DECLARATION(canonicalize_file_name)
-fi
-
-# Figure out which version of pexecute to use.
-case "${host}" in
- *-*-mingw* | *-*-winnt*) pexecute=pex-win32.o ;;
- *-*-msdosdjgpp*) pexecute=pex-djgpp.o ;;
- *-*-msdos*) pexecute=pex-msdos.o ;;
- *-*-os2-emx*) pexecute=pex-os2.o ;;
- *) pexecute=pex-unix.o ;;
-esac
-AC_SUBST(pexecute)
-
-libiberty_AC_FUNC_STRNCMP
-
-# Install a library built with a cross compiler in $(tooldir) rather
-# than $(libdir).
-if test -z "${with_cross_host}"; then
- INSTALL_DEST=libdir
-else
- INSTALL_DEST=tooldir
-fi
-AC_SUBST(INSTALL_DEST)
-
-# We need multilib support, but only if configuring for the target.
-AC_OUTPUT(Makefile testsuite/Makefile,
-[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
-if test -n "$CONFIG_FILES"; then
- if test -n "${with_build_subdir}" || test -n "${with_target_subdir}"; then
- # FIXME: We shouldn't need to set ac_file
- ac_file=Makefile
- LD="${ORIGINAL_LD_FOR_MULTILIBS}"
- . ${libiberty_topdir}/config-ml.in
- fi
-fi],
-srcdir=${srcdir}
-host=${host}
-target=${target}
-with_target_subdir=${with_target_subdir}
-with_build_subdir=${with_build_subdir}
-with_multisubdir=${with_multisubdir}
-ac_configure_args="--enable-multilib ${ac_configure_args}"
-CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-ORIGINAL_LD_FOR_MULTILIBS="${ORIGINAL_LD_FOR_MULTILIBS}"
-libiberty_topdir=${libiberty_topdir}
-)
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 7a806dc44b2..19f191ed8b8 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -1,5 +1,5 @@
/* Demangler for g++ V3 ABI.
- Copyright (C) 2003 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@wasabisystems.com>.
This file is part of the libiberty library, which is part of GCC.
@@ -45,6 +45,22 @@
enum gnu_v3_ctor_kinds is_gnu_v3_mangled_ctor (const char *name)
enum gnu_v3_dtor_kinds is_gnu_v3_mangled_dtor (const char *name)
+ Also, the interface to the component list is public, and defined in
+ demangle.h. The interface consists of these types, which are
+ defined in demangle.h:
+ enum demangle_component_type
+ struct demangle_component
+ and these functions defined in this file:
+ cplus_demangle_fill_name
+ cplus_demangle_fill_extended_operator
+ cplus_demangle_fill_ctor
+ cplus_demangle_fill_dtor
+ cplus_demangle_print
+ and other functions defined in the file cp-demint.c.
+
+ This file also defines some other functions and variables which are
+ only to be used by the file cp-demint.c.
+
Preprocessor macros you can define while compiling this file:
IN_LIBGCC2
@@ -54,7 +70,8 @@
instead of cplus_demangle_v3() and java_demangle_v3().
IN_GLIBCPP_V3
- If defined, this file defines only __cxa_demangle().
+ If defined, this file defines only __cxa_demangle(), and no other
+ publically visible functions or variables.
STANDALONE_DEMANGLER
If defined, this file defines a main() function which demangles
@@ -81,6 +98,68 @@
#include "ansidecl.h"
#include "libiberty.h"
#include "demangle.h"
+#include "cp-demangle.h"
+
+/* If IN_GLIBCPP_V3 is defined, some functions are made static. We
+ also rename them via #define to avoid compiler errors when the
+ static definition conflicts with the extern declaration in a header
+ file. */
+#ifdef IN_GLIBCPP_V3
+
+#define CP_STATIC_IF_GLIBCPP_V3 static
+
+#define cplus_demangle_fill_name d_fill_name
+static int
+d_fill_name PARAMS ((struct demangle_component *, const char *, int));
+
+#define cplus_demangle_fill_extended_operator d_fill_extended_operator
+static int
+d_fill_extended_operator PARAMS ((struct demangle_component *, int,
+ struct demangle_component *));
+
+#define cplus_demangle_fill_ctor d_fill_ctor
+static int
+d_fill_ctor PARAMS ((struct demangle_component *, enum gnu_v3_ctor_kinds,
+ struct demangle_component *));
+
+#define cplus_demangle_fill_dtor d_fill_dtor
+static int
+d_fill_dtor PARAMS ((struct demangle_component *, enum gnu_v3_dtor_kinds,
+ struct demangle_component *));
+
+#define cplus_demangle_mangled_name d_mangled_name
+static struct demangle_component *
+d_mangled_name PARAMS ((struct d_info *, int));
+
+#define cplus_demangle_type d_type
+static struct demangle_component *
+d_type PARAMS ((struct d_info *));
+
+#define cplus_demangle_print d_print
+static char *
+d_print PARAMS ((int, const struct demangle_component *, int, size_t *));
+
+#define cplus_demangle_init_info d_init_info
+static void
+d_init_info PARAMS ((const char *, int, size_t, struct d_info *));
+
+#else /* ! defined(IN_GLIBCPP_V3) */
+#define CP_STATIC_IF_GLIBCPP_V3
+#endif /* ! defined(IN_GLIBCPP_V3) */
+
+/* See if the compiler supports dynamic arrays. */
+
+#ifdef __GNUC__
+#define CP_DYNAMIC_ARRAYS
+#else
+#ifdef __STDC__
+#ifdef __STDC_VERSION__
+#if __STDC_VERSION__ >= 199901L
+#define CP_DYNAMIC_ARRAYS
+#endif /* __STDC__VERSION >= 199901L */
+#endif /* defined (__STDC_VERSION__) */
+#endif /* defined (__STDC__) */
+#endif /* ! defined (__GNUC__) */
/* We avoid pulling in the ctype tables, to prevent pulling in
additional unresolved symbols when this code is used in a library.
@@ -101,46 +180,6 @@
#define ANONYMOUS_NAMESPACE_PREFIX_LEN \
(sizeof (ANONYMOUS_NAMESPACE_PREFIX) - 1)
-/* Information we keep for operators. */
-
-struct d_operator_info
-{
- /* Mangled name. */
- const char *code;
- /* Real name. */
- const char *name;
- /* Number of arguments. */
- int args;
-};
-
-/* How to print the value of a builtin type. */
-
-enum d_builtin_type_print
-{
- /* Print as (type)val. */
- D_PRINT_DEFAULT,
- /* Print as integer. */
- D_PRINT_INT,
- /* Print as long, with trailing `l'. */
- D_PRINT_LONG,
- /* Print as bool. */
- D_PRINT_BOOL,
- /* Print in usual way, but here to detect void. */
- D_PRINT_VOID
-};
-
-/* Information we keep for a builtin type. */
-
-struct d_builtin_type_info
-{
- /* Type name. */
- const char *name;
- /* Type name when using Java. */
- const char *java_name;
- /* How to print a value of this type. */
- enum d_builtin_type_print print;
-};
-
/* Information we keep for the standard substitutions. */
struct d_standard_sub_info
@@ -149,228 +188,26 @@ struct d_standard_sub_info
char code;
/* The simple string it expands to. */
const char *simple_expansion;
+ /* The length of the simple expansion. */
+ int simple_len;
/* The results of a full, verbose, expansion. This is used when
qualifying a constructor/destructor, or when in verbose mode. */
const char *full_expansion;
+ /* The length of the full expansion. */
+ int full_len;
/* What to set the last_name field of d_info to; NULL if we should
not set it. This is only relevant when qualifying a
constructor/destructor. */
const char *set_last_name;
+ /* The length of set_last_name. */
+ int set_last_name_len;
};
-/* Component types found in mangled names. */
-
-enum d_comp_type
-{
- /* A name. */
- D_COMP_NAME,
- /* A qualified name. */
- D_COMP_QUAL_NAME,
- /* A typed name. */
- D_COMP_TYPED_NAME,
- /* A template. */
- D_COMP_TEMPLATE,
- /* A template parameter. */
- D_COMP_TEMPLATE_PARAM,
- /* A constructor. */
- D_COMP_CTOR,
- /* A destructor. */
- D_COMP_DTOR,
- /* A vtable. */
- D_COMP_VTABLE,
- /* A VTT structure. */
- D_COMP_VTT,
- /* A construction vtable. */
- D_COMP_CONSTRUCTION_VTABLE,
- /* A typeinfo structure. */
- D_COMP_TYPEINFO,
- /* A typeinfo name. */
- D_COMP_TYPEINFO_NAME,
- /* A typeinfo function. */
- D_COMP_TYPEINFO_FN,
- /* A thunk. */
- D_COMP_THUNK,
- /* A virtual thunk. */
- D_COMP_VIRTUAL_THUNK,
- /* A covariant thunk. */
- D_COMP_COVARIANT_THUNK,
- /* A Java class. */
- D_COMP_JAVA_CLASS,
- /* A guard variable. */
- D_COMP_GUARD,
- /* A reference temporary. */
- D_COMP_REFTEMP,
- /* A standard substitution. */
- D_COMP_SUB_STD,
- /* The restrict qualifier. */
- D_COMP_RESTRICT,
- /* The volatile qualifier. */
- D_COMP_VOLATILE,
- /* The const qualifier. */
- D_COMP_CONST,
- /* The restrict qualifier modifying a member function. */
- D_COMP_RESTRICT_THIS,
- /* The volatile qualifier modifying a member function. */
- D_COMP_VOLATILE_THIS,
- /* The const qualifier modifying a member function. */
- D_COMP_CONST_THIS,
- /* A vendor qualifier. */
- D_COMP_VENDOR_TYPE_QUAL,
- /* A pointer. */
- D_COMP_POINTER,
- /* A reference. */
- D_COMP_REFERENCE,
- /* A complex type. */
- D_COMP_COMPLEX,
- /* An imaginary type. */
- D_COMP_IMAGINARY,
- /* A builtin type. */
- D_COMP_BUILTIN_TYPE,
- /* A vendor's builtin type. */
- D_COMP_VENDOR_TYPE,
- /* A function type. */
- D_COMP_FUNCTION_TYPE,
- /* An array type. */
- D_COMP_ARRAY_TYPE,
- /* A pointer to member type. */
- D_COMP_PTRMEM_TYPE,
- /* An argument list. */
- D_COMP_ARGLIST,
- /* A template argument list. */
- D_COMP_TEMPLATE_ARGLIST,
- /* An operator. */
- D_COMP_OPERATOR,
- /* An extended operator. */
- D_COMP_EXTENDED_OPERATOR,
- /* A typecast. */
- D_COMP_CAST,
- /* A unary expression. */
- D_COMP_UNARY,
- /* A binary expression. */
- D_COMP_BINARY,
- /* Arguments to a binary expression. */
- D_COMP_BINARY_ARGS,
- /* A trinary expression. */
- D_COMP_TRINARY,
- /* Arguments to a trinary expression. */
- D_COMP_TRINARY_ARG1,
- D_COMP_TRINARY_ARG2,
- /* A literal. */
- D_COMP_LITERAL,
- /* A negative literal. */
- D_COMP_LITERAL_NEG
-};
-
-/* A component of the mangled name. */
-
-struct d_comp
-{
- /* The type of this component. */
- enum d_comp_type type;
- union
- {
- /* For D_COMP_NAME. */
- struct
- {
- /* A pointer to the name (not NULL terminated) and it's
- length. */
- const char *s;
- int len;
- } s_name;
-
- /* For D_COMP_OPERATOR. */
- struct
- {
- /* Operator. */
- const struct d_operator_info *op;
- } s_operator;
-
- /* For D_COMP_EXTENDED_OPERATOR. */
- struct
- {
- /* Number of arguments. */
- int args;
- /* Name. */
- struct d_comp *name;
- } s_extended_operator;
-
- /* For D_COMP_CTOR. */
- struct
- {
- enum gnu_v3_ctor_kinds kind;
- struct d_comp *name;
- } s_ctor;
-
- /* For D_COMP_DTOR. */
- struct
- {
- enum gnu_v3_dtor_kinds kind;
- struct d_comp *name;
- } s_dtor;
-
- /* For D_COMP_BUILTIN_TYPE. */
- struct
- {
- const struct d_builtin_type_info *type;
- } s_builtin;
-
- /* For D_COMP_SUB_STD. */
- struct
- {
- const char* string;
- } s_string;
-
- /* For D_COMP_TEMPLATE_PARAM. */
- struct
- {
- long number;
- } s_number;
-
- /* For other types. */
- struct
- {
- struct d_comp *left;
- struct d_comp *right;
- } s_binary;
-
- } u;
-};
+/* Accessors for subtrees of struct demangle_component. */
#define d_left(dc) ((dc)->u.s_binary.left)
#define d_right(dc) ((dc)->u.s_binary.right)
-/* The information structure we pass around. */
-
-struct d_info
-{
- /* The string we are demangling. */
- const char *s;
- /* The options passed to the demangler. */
- int options;
- /* The next character in the string to consider. */
- const char *n;
- /* The array of components. */
- struct d_comp *comps;
- /* The index of the next available component. */
- int next_comp;
- /* The number of available component structures. */
- int num_comps;
- /* The array of substitutions. */
- struct d_comp **subs;
- /* The index of the next substitution. */
- int next_sub;
- /* The number of available entries in the subs array. */
- int num_subs;
- /* The last name we saw, for constructors and destructors. */
- struct d_comp *last_name;
-};
-
-#define d_peek_char(di) (*((di)->n))
-#define d_peek_next_char(di) ((di)->n[1])
-#define d_advance(di, i) ((di)->n += (i))
-#define d_next_char(di) (*((di)->n++))
-#define d_str(di) ((di)->n)
-
/* A list of templates. This is used while printing. */
struct d_print_template
@@ -378,7 +215,7 @@ struct d_print_template
/* Next template on the list. */
struct d_print_template *next;
/* This template. */
- const struct d_comp *template;
+ const struct demangle_component *template;
};
/* A list of type modifiers. This is used while printing. */
@@ -389,7 +226,7 @@ struct d_print_mod
in which they appeared in the mangled string. */
struct d_print_mod *next;
/* The modifier. */
- const struct d_comp *mod;
+ const struct demangle_component *mod;
/* Whether this modifier was printed. */
int printed;
/* The list of templates which applies to this modifier. */
@@ -442,105 +279,193 @@ struct d_print_info
} \
while (0)
-#define d_append_string(dpi, s) \
- do \
- { \
- size_t d_append_string_len = strlen (s); \
- d_append_buffer ((dpi), (s), d_append_string_len); \
- } \
- while (0)
+#define d_append_string_constant(dpi, s) \
+ d_append_buffer (dpi, (s), sizeof (s) - 1)
#define d_last_char(dpi) \
((dpi)->buf == NULL || (dpi)->len == 0 ? '\0' : (dpi)->buf[(dpi)->len - 1])
#ifdef CP_DEMANGLE_DEBUG
-static void d_dump PARAMS ((struct d_comp *, int));
+static void
+d_dump PARAMS ((struct demangle_component *, int));
#endif
-static struct d_comp *d_make_empty PARAMS ((struct d_info *,
- enum d_comp_type));
-static struct d_comp *d_make_comp PARAMS ((struct d_info *, enum d_comp_type,
- struct d_comp *, struct d_comp *));
-static struct d_comp *d_make_name PARAMS ((struct d_info *, const char *,
- int));
-static struct d_comp *d_make_builtin_type PARAMS ((struct d_info *,
- const struct d_builtin_type_info *));
-static struct d_comp *d_make_operator PARAMS ((struct d_info *,
- const struct d_operator_info *));
-static struct d_comp *d_make_extended_operator PARAMS ((struct d_info *,
- int,
- struct d_comp *));
-static struct d_comp *d_make_ctor PARAMS ((struct d_info *,
- enum gnu_v3_ctor_kinds,
- struct d_comp *));
-static struct d_comp *d_make_dtor PARAMS ((struct d_info *,
- enum gnu_v3_dtor_kinds,
- struct d_comp *));
-static struct d_comp *d_make_template_param PARAMS ((struct d_info *, long));
-static struct d_comp *d_make_sub PARAMS ((struct d_info *, const char *));
-static struct d_comp *d_mangled_name PARAMS ((struct d_info *, int));
-static int has_return_type PARAMS ((struct d_comp *));
-static int is_ctor_dtor_or_conversion PARAMS ((struct d_comp *));
-static struct d_comp *d_encoding PARAMS ((struct d_info *, int));
-static struct d_comp *d_name PARAMS ((struct d_info *));
-static struct d_comp *d_nested_name PARAMS ((struct d_info *));
-static struct d_comp *d_prefix PARAMS ((struct d_info *));
-static struct d_comp *d_unqualified_name PARAMS ((struct d_info *));
-static struct d_comp *d_source_name PARAMS ((struct d_info *));
-static long d_number PARAMS ((struct d_info *));
-static struct d_comp *d_identifier PARAMS ((struct d_info *, int));
-static struct d_comp *d_operator_name PARAMS ((struct d_info *));
-static struct d_comp *d_special_name PARAMS ((struct d_info *));
-static int d_call_offset PARAMS ((struct d_info *, int));
-static struct d_comp *d_ctor_dtor_name PARAMS ((struct d_info *));
-static struct d_comp *d_type PARAMS ((struct d_info *));
-static struct d_comp **d_cv_qualifiers PARAMS ((struct d_info *,
- struct d_comp **, int));
-static struct d_comp *d_function_type PARAMS ((struct d_info *));
-static struct d_comp *d_bare_function_type PARAMS ((struct d_info *, int));
-static struct d_comp *d_class_enum_type PARAMS ((struct d_info *));
-static struct d_comp *d_array_type PARAMS ((struct d_info *));
-static struct d_comp *d_pointer_to_member_type PARAMS ((struct d_info *));
-static struct d_comp *d_template_param PARAMS ((struct d_info *));
-static struct d_comp *d_template_args PARAMS ((struct d_info *));
-static struct d_comp *d_template_arg PARAMS ((struct d_info *));
-static struct d_comp *d_expression PARAMS ((struct d_info *));
-static struct d_comp *d_expr_primary PARAMS ((struct d_info *));
-static struct d_comp *d_local_name PARAMS ((struct d_info *));
-static int d_discriminator PARAMS ((struct d_info *));
-static int d_add_substitution PARAMS ((struct d_info *, struct d_comp *));
-static struct d_comp *d_substitution PARAMS ((struct d_info *, int));
-static void d_print_resize PARAMS ((struct d_print_info *, size_t));
-static void d_print_append_char PARAMS ((struct d_print_info *, int));
-static void d_print_append_buffer PARAMS ((struct d_print_info *, const char *,
- size_t));
-static void d_print_error PARAMS ((struct d_print_info *));
-static char *d_print PARAMS ((int, const struct d_comp *, size_t *));
-static void d_print_comp PARAMS ((struct d_print_info *,
- const struct d_comp *));
-static void d_print_identifier PARAMS ((struct d_print_info *, const char *,
- int));
-static void d_print_mod_list PARAMS ((struct d_print_info *,
- struct d_print_mod *, int));
-static void d_print_mod PARAMS ((struct d_print_info *,
- const struct d_comp *));
-static void d_print_function_type PARAMS ((struct d_print_info *,
- const struct d_comp *,
- struct d_print_mod *));
-static void d_print_array_type PARAMS ((struct d_print_info *,
- const struct d_comp *,
- struct d_print_mod *));
-static void d_print_expr_op PARAMS ((struct d_print_info *,
- const struct d_comp *));
-static void d_print_cast PARAMS ((struct d_print_info *,
- const struct d_comp *));
-static int d_init_info PARAMS ((const char *, int, size_t, struct d_info *));
-static char *d_demangle PARAMS ((const char *, int, size_t *));
+
+static struct demangle_component *
+d_make_empty PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_make_comp PARAMS ((struct d_info *, enum demangle_component_type,
+ struct demangle_component *,
+ struct demangle_component *));
+
+static struct demangle_component *
+d_make_name PARAMS ((struct d_info *, const char *, int));
+
+static struct demangle_component *
+d_make_builtin_type PARAMS ((struct d_info *,
+ const struct demangle_builtin_type_info *));
+
+static struct demangle_component *
+d_make_operator PARAMS ((struct d_info *,
+ const struct demangle_operator_info *));
+
+static struct demangle_component *
+d_make_extended_operator PARAMS ((struct d_info *, int,
+ struct demangle_component *));
+
+static struct demangle_component *
+d_make_ctor PARAMS ((struct d_info *, enum gnu_v3_ctor_kinds,
+ struct demangle_component *));
+
+static struct demangle_component *
+d_make_dtor PARAMS ((struct d_info *, enum gnu_v3_dtor_kinds,
+ struct demangle_component *));
+
+static struct demangle_component *
+d_make_template_param PARAMS ((struct d_info *, long));
+
+static struct demangle_component *
+d_make_sub PARAMS ((struct d_info *, const char *, int));
+
+static int
+has_return_type PARAMS ((struct demangle_component *));
+
+static int
+is_ctor_dtor_or_conversion PARAMS ((struct demangle_component *));
+
+static struct demangle_component *
+d_encoding PARAMS ((struct d_info *, int));
+
+static struct demangle_component *
+d_name PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_nested_name PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_prefix PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_unqualified_name PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_source_name PARAMS ((struct d_info *));
+
+static long
+d_number PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_identifier PARAMS ((struct d_info *, int));
+
+static struct demangle_component *
+d_operator_name PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_special_name PARAMS ((struct d_info *));
+
+static int
+d_call_offset PARAMS ((struct d_info *, int));
+
+static struct demangle_component *
+d_ctor_dtor_name PARAMS ((struct d_info *));
+
+static struct demangle_component **
+d_cv_qualifiers PARAMS ((struct d_info *, struct demangle_component **, int));
+
+static struct demangle_component *
+d_function_type PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_bare_function_type PARAMS ((struct d_info *, int));
+
+static struct demangle_component *
+d_class_enum_type PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_array_type PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_pointer_to_member_type PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_template_param PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_template_args PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_template_arg PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_expression PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_expr_primary PARAMS ((struct d_info *));
+
+static struct demangle_component *
+d_local_name PARAMS ((struct d_info *));
+
+static int
+d_discriminator PARAMS ((struct d_info *));
+
+static int
+d_add_substitution PARAMS ((struct d_info *, struct demangle_component *));
+
+static struct demangle_component *
+d_substitution PARAMS ((struct d_info *, int));
+
+static void
+d_print_resize PARAMS ((struct d_print_info *, size_t));
+
+static void
+d_print_append_char PARAMS ((struct d_print_info *, int));
+
+static void
+d_print_append_buffer PARAMS ((struct d_print_info *, const char *, size_t));
+
+static void
+d_print_error PARAMS ((struct d_print_info *));
+
+static void
+d_print_comp PARAMS ((struct d_print_info *,
+ const struct demangle_component *));
+
+static void
+d_print_java_identifier PARAMS ((struct d_print_info *, const char *, int));
+
+static void
+d_print_mod_list PARAMS ((struct d_print_info *, struct d_print_mod *, int));
+
+static void
+d_print_mod PARAMS ((struct d_print_info *,
+ const struct demangle_component *));
+
+static void
+d_print_function_type PARAMS ((struct d_print_info *,
+ const struct demangle_component *,
+ struct d_print_mod *));
+
+static void
+d_print_array_type PARAMS ((struct d_print_info *,
+ const struct demangle_component *,
+ struct d_print_mod *));
+
+static void
+d_print_expr_op PARAMS ((struct d_print_info *,
+ const struct demangle_component *));
+
+static void
+d_print_cast PARAMS ((struct d_print_info *,
+ const struct demangle_component *));
+
+static char *
+d_demangle PARAMS ((const char *, int, size_t *));
#ifdef CP_DEMANGLE_DEBUG
static void
d_dump (dc, indent)
- struct d_comp *dc;
+ struct demangle_component *dc;
int indent;
{
int i;
@@ -553,156 +478,159 @@ d_dump (dc, indent)
switch (dc->type)
{
- case D_COMP_NAME:
+ case DEMANGLE_COMPONENT_NAME:
printf ("name '%.*s'\n", dc->u.s_name.len, dc->u.s_name.s);
return;
- case D_COMP_TEMPLATE_PARAM:
+ case DEMANGLE_COMPONENT_TEMPLATE_PARAM:
printf ("template parameter %ld\n", dc->u.s_number.number);
return;
- case D_COMP_CTOR:
+ case DEMANGLE_COMPONENT_CTOR:
printf ("constructor %d\n", (int) dc->u.s_ctor.kind);
d_dump (dc->u.s_ctor.name, indent + 2);
return;
- case D_COMP_DTOR:
+ case DEMANGLE_COMPONENT_DTOR:
printf ("destructor %d\n", (int) dc->u.s_dtor.kind);
d_dump (dc->u.s_dtor.name, indent + 2);
return;
- case D_COMP_SUB_STD:
+ case DEMANGLE_COMPONENT_SUB_STD:
printf ("standard substitution %s\n", dc->u.s_string.string);
return;
- case D_COMP_BUILTIN_TYPE:
+ case DEMANGLE_COMPONENT_BUILTIN_TYPE:
printf ("builtin type %s\n", dc->u.s_builtin.type->name);
return;
- case D_COMP_OPERATOR:
+ case DEMANGLE_COMPONENT_OPERATOR:
printf ("operator %s\n", dc->u.s_operator.op->name);
return;
- case D_COMP_EXTENDED_OPERATOR:
+ case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
printf ("extended operator with %d args\n",
dc->u.s_extended_operator.args);
d_dump (dc->u.s_extended_operator.name, indent + 2);
return;
- case D_COMP_QUAL_NAME:
+ case DEMANGLE_COMPONENT_QUAL_NAME:
printf ("qualified name\n");
break;
- case D_COMP_TYPED_NAME:
+ case DEMANGLE_COMPONENT_LOCAL_NAME:
+ printf ("local name\n");
+ break;
+ case DEMANGLE_COMPONENT_TYPED_NAME:
printf ("typed name\n");
break;
- case D_COMP_TEMPLATE:
+ case DEMANGLE_COMPONENT_TEMPLATE:
printf ("template\n");
break;
- case D_COMP_VTABLE:
+ case DEMANGLE_COMPONENT_VTABLE:
printf ("vtable\n");
break;
- case D_COMP_VTT:
+ case DEMANGLE_COMPONENT_VTT:
printf ("VTT\n");
break;
- case D_COMP_CONSTRUCTION_VTABLE:
+ case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:
printf ("construction vtable\n");
break;
- case D_COMP_TYPEINFO:
+ case DEMANGLE_COMPONENT_TYPEINFO:
printf ("typeinfo\n");
break;
- case D_COMP_TYPEINFO_NAME:
+ case DEMANGLE_COMPONENT_TYPEINFO_NAME:
printf ("typeinfo name\n");
break;
- case D_COMP_TYPEINFO_FN:
+ case DEMANGLE_COMPONENT_TYPEINFO_FN:
printf ("typeinfo function\n");
break;
- case D_COMP_THUNK:
+ case DEMANGLE_COMPONENT_THUNK:
printf ("thunk\n");
break;
- case D_COMP_VIRTUAL_THUNK:
+ case DEMANGLE_COMPONENT_VIRTUAL_THUNK:
printf ("virtual thunk\n");
break;
- case D_COMP_COVARIANT_THUNK:
+ case DEMANGLE_COMPONENT_COVARIANT_THUNK:
printf ("covariant thunk\n");
break;
- case D_COMP_JAVA_CLASS:
+ case DEMANGLE_COMPONENT_JAVA_CLASS:
printf ("java class\n");
break;
- case D_COMP_GUARD:
+ case DEMANGLE_COMPONENT_GUARD:
printf ("guard\n");
break;
- case D_COMP_REFTEMP:
+ case DEMANGLE_COMPONENT_REFTEMP:
printf ("reference temporary\n");
break;
- case D_COMP_RESTRICT:
+ case DEMANGLE_COMPONENT_RESTRICT:
printf ("restrict\n");
break;
- case D_COMP_VOLATILE:
+ case DEMANGLE_COMPONENT_VOLATILE:
printf ("volatile\n");
break;
- case D_COMP_CONST:
+ case DEMANGLE_COMPONENT_CONST:
printf ("const\n");
break;
- case D_COMP_RESTRICT_THIS:
+ case DEMANGLE_COMPONENT_RESTRICT_THIS:
printf ("restrict this\n");
break;
- case D_COMP_VOLATILE_THIS:
+ case DEMANGLE_COMPONENT_VOLATILE_THIS:
printf ("volatile this\n");
break;
- case D_COMP_CONST_THIS:
+ case DEMANGLE_COMPONENT_CONST_THIS:
printf ("const this\n");
break;
- case D_COMP_VENDOR_TYPE_QUAL:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
printf ("vendor type qualifier\n");
break;
- case D_COMP_POINTER:
+ case DEMANGLE_COMPONENT_POINTER:
printf ("pointer\n");
break;
- case D_COMP_REFERENCE:
+ case DEMANGLE_COMPONENT_REFERENCE:
printf ("reference\n");
break;
- case D_COMP_COMPLEX:
+ case DEMANGLE_COMPONENT_COMPLEX:
printf ("complex\n");
break;
- case D_COMP_IMAGINARY:
+ case DEMANGLE_COMPONENT_IMAGINARY:
printf ("imaginary\n");
break;
- case D_COMP_VENDOR_TYPE:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE:
printf ("vendor type\n");
break;
- case D_COMP_FUNCTION_TYPE:
+ case DEMANGLE_COMPONENT_FUNCTION_TYPE:
printf ("function type\n");
break;
- case D_COMP_ARRAY_TYPE:
+ case DEMANGLE_COMPONENT_ARRAY_TYPE:
printf ("array type\n");
break;
- case D_COMP_PTRMEM_TYPE:
+ case DEMANGLE_COMPONENT_PTRMEM_TYPE:
printf ("pointer to member type\n");
break;
- case D_COMP_ARGLIST:
+ case DEMANGLE_COMPONENT_ARGLIST:
printf ("argument list\n");
break;
- case D_COMP_TEMPLATE_ARGLIST:
+ case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
printf ("template argument list\n");
break;
- case D_COMP_CAST:
+ case DEMANGLE_COMPONENT_CAST:
printf ("cast\n");
break;
- case D_COMP_UNARY:
+ case DEMANGLE_COMPONENT_UNARY:
printf ("unary operator\n");
break;
- case D_COMP_BINARY:
+ case DEMANGLE_COMPONENT_BINARY:
printf ("binary operator\n");
break;
- case D_COMP_BINARY_ARGS:
+ case DEMANGLE_COMPONENT_BINARY_ARGS:
printf ("binary operator arguments\n");
break;
- case D_COMP_TRINARY:
+ case DEMANGLE_COMPONENT_TRINARY:
printf ("trinary operator\n");
break;
- case D_COMP_TRINARY_ARG1:
+ case DEMANGLE_COMPONENT_TRINARY_ARG1:
printf ("trinary operator arguments 1\n");
break;
- case D_COMP_TRINARY_ARG2:
+ case DEMANGLE_COMPONENT_TRINARY_ARG2:
printf ("trinary operator arguments 1\n");
break;
- case D_COMP_LITERAL:
+ case DEMANGLE_COMPONENT_LITERAL:
printf ("literal\n");
break;
- case D_COMP_LITERAL_NEG:
+ case DEMANGLE_COMPONENT_LITERAL_NEG:
printf ("negative literal\n");
break;
}
@@ -713,33 +641,105 @@ d_dump (dc, indent)
#endif /* CP_DEMANGLE_DEBUG */
+/* Fill in a DEMANGLE_COMPONENT_NAME. */
+
+CP_STATIC_IF_GLIBCPP_V3
+int
+cplus_demangle_fill_name (p, s, len)
+ struct demangle_component *p;
+ const char *s;
+ int len;
+{
+ if (p == NULL || s == NULL || len == 0)
+ return 0;
+ p->type = DEMANGLE_COMPONENT_NAME;
+ p->u.s_name.s = s;
+ p->u.s_name.len = len;
+ return 1;
+}
+
+/* Fill in a DEMANGLE_COMPONENT_EXTENDED_OPERATOR. */
+
+CP_STATIC_IF_GLIBCPP_V3
+int
+cplus_demangle_fill_extended_operator (p, args, name)
+ struct demangle_component *p;
+ int args;
+ struct demangle_component *name;
+{
+ if (p == NULL || args < 0 || name == NULL)
+ return 0;
+ p->type = DEMANGLE_COMPONENT_EXTENDED_OPERATOR;
+ p->u.s_extended_operator.args = args;
+ p->u.s_extended_operator.name = name;
+ return 1;
+}
+
+/* Fill in a DEMANGLE_COMPONENT_CTOR. */
+
+CP_STATIC_IF_GLIBCPP_V3
+int
+cplus_demangle_fill_ctor (p, kind, name)
+ struct demangle_component *p;
+ enum gnu_v3_ctor_kinds kind;
+ struct demangle_component *name;
+{
+ if (p == NULL
+ || name == NULL
+ || (kind < gnu_v3_complete_object_ctor
+ && kind > gnu_v3_complete_object_allocating_ctor))
+ return 0;
+ p->type = DEMANGLE_COMPONENT_CTOR;
+ p->u.s_ctor.kind = kind;
+ p->u.s_ctor.name = name;
+ return 1;
+}
+
+/* Fill in a DEMANGLE_COMPONENT_DTOR. */
+
+CP_STATIC_IF_GLIBCPP_V3
+int
+cplus_demangle_fill_dtor (p, kind, name)
+ struct demangle_component *p;
+ enum gnu_v3_dtor_kinds kind;
+ struct demangle_component *name;
+{
+ if (p == NULL
+ || name == NULL
+ || (kind < gnu_v3_deleting_dtor
+ && kind > gnu_v3_base_object_dtor))
+ return 0;
+ p->type = DEMANGLE_COMPONENT_DTOR;
+ p->u.s_dtor.kind = kind;
+ p->u.s_dtor.name = name;
+ return 1;
+}
+
/* Add a new component. */
-static struct d_comp *
-d_make_empty (di, type)
+static struct demangle_component *
+d_make_empty (di)
struct d_info *di;
- enum d_comp_type type;
{
- struct d_comp *p;
+ struct demangle_component *p;
if (di->next_comp >= di->num_comps)
return NULL;
p = &di->comps[di->next_comp];
- p->type = type;
++di->next_comp;
return p;
}
/* Add a new generic component. */
-static struct d_comp *
+static struct demangle_component *
d_make_comp (di, type, left, right)
struct d_info *di;
- enum d_comp_type type;
- struct d_comp *left;
- struct d_comp *right;
+ enum demangle_component_type type;
+ struct demangle_component *left;
+ struct demangle_component *right;
{
- struct d_comp *p;
+ struct demangle_component *p;
/* We check for errors here. A typical error would be a NULL return
from a subroutine. We catch those here, and return NULL
@@ -747,64 +747,65 @@ d_make_comp (di, type, left, right)
switch (type)
{
/* These types require two parameters. */
- case D_COMP_QUAL_NAME:
- case D_COMP_TYPED_NAME:
- case D_COMP_TEMPLATE:
- case D_COMP_VENDOR_TYPE_QUAL:
- case D_COMP_PTRMEM_TYPE:
- case D_COMP_UNARY:
- case D_COMP_BINARY:
- case D_COMP_BINARY_ARGS:
- case D_COMP_TRINARY:
- case D_COMP_TRINARY_ARG1:
- case D_COMP_TRINARY_ARG2:
- case D_COMP_LITERAL:
- case D_COMP_LITERAL_NEG:
+ case DEMANGLE_COMPONENT_QUAL_NAME:
+ case DEMANGLE_COMPONENT_LOCAL_NAME:
+ case DEMANGLE_COMPONENT_TYPED_NAME:
+ case DEMANGLE_COMPONENT_TEMPLATE:
+ case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
+ case DEMANGLE_COMPONENT_PTRMEM_TYPE:
+ case DEMANGLE_COMPONENT_UNARY:
+ case DEMANGLE_COMPONENT_BINARY:
+ case DEMANGLE_COMPONENT_BINARY_ARGS:
+ case DEMANGLE_COMPONENT_TRINARY:
+ case DEMANGLE_COMPONENT_TRINARY_ARG1:
+ case DEMANGLE_COMPONENT_TRINARY_ARG2:
+ case DEMANGLE_COMPONENT_LITERAL:
+ case DEMANGLE_COMPONENT_LITERAL_NEG:
if (left == NULL || right == NULL)
return NULL;
break;
/* These types only require one parameter. */
- case D_COMP_VTABLE:
- case D_COMP_VTT:
- case D_COMP_CONSTRUCTION_VTABLE:
- case D_COMP_TYPEINFO:
- case D_COMP_TYPEINFO_NAME:
- case D_COMP_TYPEINFO_FN:
- case D_COMP_THUNK:
- case D_COMP_VIRTUAL_THUNK:
- case D_COMP_COVARIANT_THUNK:
- case D_COMP_JAVA_CLASS:
- case D_COMP_GUARD:
- case D_COMP_REFTEMP:
- case D_COMP_POINTER:
- case D_COMP_REFERENCE:
- case D_COMP_COMPLEX:
- case D_COMP_IMAGINARY:
- case D_COMP_VENDOR_TYPE:
- case D_COMP_ARGLIST:
- case D_COMP_TEMPLATE_ARGLIST:
- case D_COMP_CAST:
+ case DEMANGLE_COMPONENT_VTABLE:
+ case DEMANGLE_COMPONENT_VTT:
+ case DEMANGLE_COMPONENT_TYPEINFO:
+ case DEMANGLE_COMPONENT_TYPEINFO_NAME:
+ case DEMANGLE_COMPONENT_TYPEINFO_FN:
+ case DEMANGLE_COMPONENT_THUNK:
+ case DEMANGLE_COMPONENT_VIRTUAL_THUNK:
+ case DEMANGLE_COMPONENT_COVARIANT_THUNK:
+ case DEMANGLE_COMPONENT_JAVA_CLASS:
+ case DEMANGLE_COMPONENT_GUARD:
+ case DEMANGLE_COMPONENT_REFTEMP:
+ case DEMANGLE_COMPONENT_POINTER:
+ case DEMANGLE_COMPONENT_REFERENCE:
+ case DEMANGLE_COMPONENT_COMPLEX:
+ case DEMANGLE_COMPONENT_IMAGINARY:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE:
+ case DEMANGLE_COMPONENT_ARGLIST:
+ case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
+ case DEMANGLE_COMPONENT_CAST:
if (left == NULL)
return NULL;
break;
/* This needs a right parameter, but the left parameter can be
empty. */
- case D_COMP_ARRAY_TYPE:
+ case DEMANGLE_COMPONENT_ARRAY_TYPE:
if (right == NULL)
return NULL;
break;
/* These are allowed to have no parameters--in some cases they
will be filled in later. */
- case D_COMP_FUNCTION_TYPE:
- case D_COMP_RESTRICT:
- case D_COMP_VOLATILE:
- case D_COMP_CONST:
- case D_COMP_RESTRICT_THIS:
- case D_COMP_VOLATILE_THIS:
- case D_COMP_CONST_THIS:
+ case DEMANGLE_COMPONENT_FUNCTION_TYPE:
+ case DEMANGLE_COMPONENT_RESTRICT:
+ case DEMANGLE_COMPONENT_VOLATILE:
+ case DEMANGLE_COMPONENT_CONST:
+ case DEMANGLE_COMPONENT_RESTRICT_THIS:
+ case DEMANGLE_COMPONENT_VOLATILE_THIS:
+ case DEMANGLE_COMPONENT_CONST_THIS:
break;
/* Other types should not be seen here. */
@@ -812,9 +813,10 @@ d_make_comp (di, type, left, right)
return NULL;
}
- p = d_make_empty (di, type);
+ p = d_make_empty (di);
if (p != NULL)
{
+ p->type = type;
p->u.s_binary.left = left;
p->u.s_binary.right = right;
}
@@ -823,147 +825,141 @@ d_make_comp (di, type, left, right)
/* Add a new name component. */
-static struct d_comp *
+static struct demangle_component *
d_make_name (di, s, len)
struct d_info *di;
const char *s;
int len;
{
- struct d_comp *p;
+ struct demangle_component *p;
- if (s == NULL || len == 0)
+ p = d_make_empty (di);
+ if (! cplus_demangle_fill_name (p, s, len))
return NULL;
- p = d_make_empty (di, D_COMP_NAME);
- if (p != NULL)
- {
- p->u.s_name.s = s;
- p->u.s_name.len = len;
- }
return p;
}
/* Add a new builtin type component. */
-static struct d_comp *
+static struct demangle_component *
d_make_builtin_type (di, type)
struct d_info *di;
- const struct d_builtin_type_info *type;
+ const struct demangle_builtin_type_info *type;
{
- struct d_comp *p;
+ struct demangle_component *p;
if (type == NULL)
return NULL;
- p = d_make_empty (di, D_COMP_BUILTIN_TYPE);
+ p = d_make_empty (di);
if (p != NULL)
- p->u.s_builtin.type = type;
+ {
+ p->type = DEMANGLE_COMPONENT_BUILTIN_TYPE;
+ p->u.s_builtin.type = type;
+ }
return p;
}
/* Add a new operator component. */
-static struct d_comp *
+static struct demangle_component *
d_make_operator (di, op)
struct d_info *di;
- const struct d_operator_info *op;
+ const struct demangle_operator_info *op;
{
- struct d_comp *p;
+ struct demangle_component *p;
- p = d_make_empty (di, D_COMP_OPERATOR);
+ p = d_make_empty (di);
if (p != NULL)
- p->u.s_operator.op = op;
+ {
+ p->type = DEMANGLE_COMPONENT_OPERATOR;
+ p->u.s_operator.op = op;
+ }
return p;
}
/* Add a new extended operator component. */
-static struct d_comp *
+static struct demangle_component *
d_make_extended_operator (di, args, name)
struct d_info *di;
int args;
- struct d_comp *name;
+ struct demangle_component *name;
{
- struct d_comp *p;
+ struct demangle_component *p;
- if (name == NULL)
+ p = d_make_empty (di);
+ if (! cplus_demangle_fill_extended_operator (p, args, name))
return NULL;
- p = d_make_empty (di, D_COMP_EXTENDED_OPERATOR);
- if (p != NULL)
- {
- p->u.s_extended_operator.args = args;
- p->u.s_extended_operator.name = name;
- }
return p;
}
/* Add a new constructor component. */
-static struct d_comp *
+static struct demangle_component *
d_make_ctor (di, kind, name)
struct d_info *di;
enum gnu_v3_ctor_kinds kind;
- struct d_comp *name;
+ struct demangle_component *name;
{
- struct d_comp *p;
+ struct demangle_component *p;
- if (name == NULL)
+ p = d_make_empty (di);
+ if (! cplus_demangle_fill_ctor (p, kind, name))
return NULL;
- p = d_make_empty (di, D_COMP_CTOR);
- if (p != NULL)
- {
- p->u.s_ctor.kind = kind;
- p->u.s_ctor.name = name;
- }
return p;
}
/* Add a new destructor component. */
-static struct d_comp *
+static struct demangle_component *
d_make_dtor (di, kind, name)
struct d_info *di;
enum gnu_v3_dtor_kinds kind;
- struct d_comp *name;
+ struct demangle_component *name;
{
- struct d_comp *p;
+ struct demangle_component *p;
- if (name == NULL)
+ p = d_make_empty (di);
+ if (! cplus_demangle_fill_dtor (p, kind, name))
return NULL;
- p = d_make_empty (di, D_COMP_DTOR);
- if (p != NULL)
- {
- p->u.s_dtor.kind = kind;
- p->u.s_dtor.name = name;
- }
return p;
}
/* Add a new template parameter. */
-static struct d_comp *
+static struct demangle_component *
d_make_template_param (di, i)
struct d_info *di;
long i;
{
- struct d_comp *p;
+ struct demangle_component *p;
- p = d_make_empty (di, D_COMP_TEMPLATE_PARAM);
+ p = d_make_empty (di);
if (p != NULL)
- p->u.s_number.number = i;
+ {
+ p->type = DEMANGLE_COMPONENT_TEMPLATE_PARAM;
+ p->u.s_number.number = i;
+ }
return p;
}
/* Add a new standard substitution component. */
-static struct d_comp *
-d_make_sub (di, name)
+static struct demangle_component *
+d_make_sub (di, name, len)
struct d_info *di;
const char *name;
+ int len;
{
- struct d_comp *p;
+ struct demangle_component *p;
- p = d_make_empty (di, D_COMP_SUB_STD);
+ p = d_make_empty (di);
if (p != NULL)
- p->u.s_string.string = name;
+ {
+ p->type = DEMANGLE_COMPONENT_SUB_STD;
+ p->u.s_string.string = name;
+ p->u.s_string.len = len;
+ }
return p;
}
@@ -971,8 +967,9 @@ d_make_sub (di, name)
TOP_LEVEL is non-zero when called at the top level. */
-static struct d_comp *
-d_mangled_name (di, top_level)
+CP_STATIC_IF_GLIBCPP_V3
+struct demangle_component *
+cplus_demangle_mangled_name (di, top_level)
struct d_info *di;
int top_level;
{
@@ -994,7 +991,7 @@ d_mangled_name (di, top_level)
static int
has_return_type (dc)
- struct d_comp *dc;
+ struct demangle_component *dc;
{
if (dc == NULL)
return 0;
@@ -1002,11 +999,11 @@ has_return_type (dc)
{
default:
return 0;
- case D_COMP_TEMPLATE:
+ case DEMANGLE_COMPONENT_TEMPLATE:
return ! is_ctor_dtor_or_conversion (d_left (dc));
- case D_COMP_RESTRICT_THIS:
- case D_COMP_VOLATILE_THIS:
- case D_COMP_CONST_THIS:
+ case DEMANGLE_COMPONENT_RESTRICT_THIS:
+ case DEMANGLE_COMPONENT_VOLATILE_THIS:
+ case DEMANGLE_COMPONENT_CONST_THIS:
return has_return_type (d_left (dc));
}
}
@@ -1016,7 +1013,7 @@ has_return_type (dc)
static int
is_ctor_dtor_or_conversion (dc)
- struct d_comp *dc;
+ struct demangle_component *dc;
{
if (dc == NULL)
return 0;
@@ -1024,11 +1021,12 @@ is_ctor_dtor_or_conversion (dc)
{
default:
return 0;
- case D_COMP_QUAL_NAME:
+ case DEMANGLE_COMPONENT_QUAL_NAME:
+ case DEMANGLE_COMPONENT_LOCAL_NAME:
return is_ctor_dtor_or_conversion (d_right (dc));
- case D_COMP_CTOR:
- case D_COMP_DTOR:
- case D_COMP_CAST:
+ case DEMANGLE_COMPONENT_CTOR:
+ case DEMANGLE_COMPONENT_DTOR:
+ case DEMANGLE_COMPONENT_CAST:
return 1;
}
}
@@ -1042,7 +1040,7 @@ is_ctor_dtor_or_conversion (dc)
parameters. We only set this at the top level, because otherwise
we would not correctly demangle names in local scopes. */
-static struct d_comp *
+static struct demangle_component *
d_encoding (di, top_level)
struct d_info *di;
int top_level;
@@ -1053,7 +1051,7 @@ d_encoding (di, top_level)
return d_special_name (di);
else
{
- struct d_comp *dc;
+ struct demangle_component *dc;
dc = d_name (di);
@@ -1062,17 +1060,34 @@ d_encoding (di, top_level)
/* Strip off any initial CV-qualifiers, as they really apply
to the `this' parameter, and they were not output by the
v2 demangler without DMGL_PARAMS. */
- while (dc->type == D_COMP_RESTRICT_THIS
- || dc->type == D_COMP_VOLATILE_THIS
- || dc->type == D_COMP_CONST_THIS)
+ while (dc->type == DEMANGLE_COMPONENT_RESTRICT_THIS
+ || dc->type == DEMANGLE_COMPONENT_VOLATILE_THIS
+ || dc->type == DEMANGLE_COMPONENT_CONST_THIS)
dc = d_left (dc);
+
+ /* If the top level is a DEMANGLE_COMPONENT_LOCAL_NAME, then
+ there may be CV-qualifiers on its right argument which
+ really apply here; this happens when parsing a class
+ which is local to a function. */
+ if (dc->type == DEMANGLE_COMPONENT_LOCAL_NAME)
+ {
+ struct demangle_component *dcr;
+
+ dcr = d_right (dc);
+ while (dcr->type == DEMANGLE_COMPONENT_RESTRICT_THIS
+ || dcr->type == DEMANGLE_COMPONENT_VOLATILE_THIS
+ || dcr->type == DEMANGLE_COMPONENT_CONST_THIS)
+ dcr = d_left (dcr);
+ dc->u.s_binary.right = dcr;
+ }
+
return dc;
}
peek = d_peek_char (di);
if (peek == '\0' || peek == 'E')
return dc;
- return d_make_comp (di, D_COMP_TYPED_NAME, dc,
+ return d_make_comp (di, DEMANGLE_COMPONENT_TYPED_NAME, dc,
d_bare_function_type (di, has_return_type (dc)));
}
}
@@ -1089,12 +1104,12 @@ d_encoding (di, top_level)
::= <substitution>
*/
-static struct d_comp *
+static struct demangle_component *
d_name (di)
struct d_info *di;
{
char peek = d_peek_char (di);
- struct d_comp *dc;
+ struct demangle_component *dc;
switch (peek)
{
@@ -1116,8 +1131,10 @@ d_name (di)
else
{
d_advance (di, 2);
- dc = d_make_comp (di, D_COMP_QUAL_NAME, d_make_name (di, "std", 3),
+ dc = d_make_comp (di, DEMANGLE_COMPONENT_QUAL_NAME,
+ d_make_name (di, "std", 3),
d_unqualified_name (di));
+ di->expansion += 3;
subst = 0;
}
@@ -1138,7 +1155,8 @@ d_name (di)
if (! d_add_substitution (di, dc))
return NULL;
}
- dc = d_make_comp (di, D_COMP_TEMPLATE, dc, d_template_args (di));
+ dc = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, dc,
+ d_template_args (di));
}
return dc;
@@ -1153,7 +1171,8 @@ d_name (di)
candidate. */
if (! d_add_substitution (di, dc))
return NULL;
- dc = d_make_comp (di, D_COMP_TEMPLATE, dc, d_template_args (di));
+ dc = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, dc,
+ d_template_args (di));
}
return dc;
}
@@ -1163,12 +1182,12 @@ d_name (di)
::= N [<CV-qualifiers>] <template-prefix> <template-args> E
*/
-static struct d_comp *
+static struct demangle_component *
d_nested_name (di)
struct d_info *di;
{
- struct d_comp *ret;
- struct d_comp **pret;
+ struct demangle_component *ret;
+ struct demangle_component **pret;
if (d_next_char (di) != 'N')
return NULL;
@@ -1198,17 +1217,17 @@ d_nested_name (di)
::= <substitution>
*/
-static struct d_comp *
+static struct demangle_component *
d_prefix (di)
struct d_info *di;
{
- struct d_comp *ret = NULL;
+ struct demangle_component *ret = NULL;
while (1)
{
char peek;
- enum d_comp_type comb_type;
- struct d_comp *dc;
+ enum demangle_component_type comb_type;
+ struct demangle_component *dc;
peek = d_peek_char (di);
if (peek == '\0')
@@ -1218,7 +1237,7 @@ d_prefix (di)
that in the grammar. The older code does not accept a
<template-param> here. */
- comb_type = D_COMP_QUAL_NAME;
+ comb_type = DEMANGLE_COMPONENT_QUAL_NAME;
if (IS_DIGIT (peek)
|| IS_LOWER (peek)
|| peek == 'C'
@@ -1230,7 +1249,7 @@ d_prefix (di)
{
if (ret == NULL)
return NULL;
- comb_type = D_COMP_TEMPLATE;
+ comb_type = DEMANGLE_COMPONENT_TEMPLATE;
dc = d_template_args (di);
}
else if (peek == 'T')
@@ -1258,7 +1277,7 @@ d_prefix (di)
::= <source-name>
*/
-static struct d_comp *
+static struct demangle_component *
d_unqualified_name (di)
struct d_info *di;
{
@@ -1268,7 +1287,14 @@ d_unqualified_name (di)
if (IS_DIGIT (peek))
return d_source_name (di);
else if (IS_LOWER (peek))
- return d_operator_name (di);
+ {
+ struct demangle_component *ret;
+
+ ret = d_operator_name (di);
+ if (ret != NULL && ret->type == DEMANGLE_COMPONENT_OPERATOR)
+ di->expansion += sizeof "operator" + ret->u.s_operator.op->len - 2;
+ return ret;
+ }
else if (peek == 'C' || peek == 'D')
return d_ctor_dtor_name (di);
else
@@ -1277,12 +1303,12 @@ d_unqualified_name (di)
/* <source-name> ::= <(positive length) number> <identifier> */
-static struct d_comp *
+static struct demangle_component *
d_source_name (di)
struct d_info *di;
{
long len;
- struct d_comp *ret;
+ struct demangle_component *ret;
len = d_number (di);
if (len <= 0)
@@ -1298,15 +1324,15 @@ static long
d_number (di)
struct d_info *di;
{
- int sign;
+ int negative;
char peek;
long ret;
- sign = 1;
+ negative = 0;
peek = d_peek_char (di);
if (peek == 'n')
{
- sign = -1;
+ negative = 1;
d_advance (di, 1);
peek = d_peek_char (di);
}
@@ -1315,7 +1341,11 @@ d_number (di)
while (1)
{
if (! IS_DIGIT (peek))
- return ret * sign;
+ {
+ if (negative)
+ ret = - ret;
+ return ret;
+ }
ret = ret * 10 + peek - '0';
d_advance (di, 1);
peek = d_peek_char (di);
@@ -1324,7 +1354,7 @@ d_number (di)
/* identifier ::= <(unqualified source code identifier)> */
-static struct d_comp *
+static struct demangle_component *
d_identifier (di, len)
struct d_info *di;
int len;
@@ -1332,8 +1362,19 @@ d_identifier (di, len)
const char *name;
name = d_str (di);
+
+ if (di->send - name < len)
+ return NULL;
+
d_advance (di, len);
+ /* A Java mangled name may have a trailing '$' if it is a C++
+ keyword. This '$' is not included in the length count. We just
+ ignore the '$'. */
+ if ((di->options & DMGL_JAVA) != 0
+ && d_peek_char (di) == '$')
+ d_advance (di, 1);
+
/* Look for something which looks like a gcc encoding of an
anonymous namespace, and replace it with a more user friendly
name. */
@@ -1346,8 +1387,11 @@ d_identifier (di, len)
s = name + ANONYMOUS_NAMESPACE_PREFIX_LEN;
if ((*s == '.' || *s == '_' || *s == '$')
&& s[1] == 'N')
- return d_make_name (di, "(anonymous namespace)",
- sizeof "(anonymous namespace)" - 1);
+ {
+ di->expansion -= len - sizeof "(anonymous namespace)";
+ return d_make_name (di, "(anonymous namespace)",
+ sizeof "(anonymous namespace)" - 1);
+ }
}
return d_make_name (di, name, len);
@@ -1358,60 +1402,64 @@ d_identifier (di, len)
::= v <digit> <source-name>
*/
-static const struct d_operator_info d_operators[] =
-{
- { "aN", "&=", 2 },
- { "aS", "=", 2 },
- { "aa", "&&", 2 },
- { "ad", "&", 1 },
- { "an", "&", 2 },
- { "cl", "()", 0 },
- { "cm", ",", 2 },
- { "co", "~", 1 },
- { "dV", "/=", 2 },
- { "da", "delete[]", 1 },
- { "de", "*", 1 },
- { "dl", "delete", 1 },
- { "dv", "/", 2 },
- { "eO", "^=", 2 },
- { "eo", "^", 2 },
- { "eq", "==", 2 },
- { "ge", ">=", 2 },
- { "gt", ">", 2 },
- { "ix", "[]", 2 },
- { "lS", "<<=", 2 },
- { "le", "<=", 2 },
- { "ls", "<<", 2 },
- { "lt", "<", 2 },
- { "mI", "-=", 2 },
- { "mL", "*=", 2 },
- { "mi", "-", 2 },
- { "ml", "*", 2 },
- { "mm", "--", 1 },
- { "na", "new[]", 1 },
- { "ne", "!=", 2 },
- { "ng", "-", 1 },
- { "nt", "!", 1 },
- { "nw", "new", 1 },
- { "oR", "|=", 2 },
- { "oo", "||", 2 },
- { "or", "|", 2 },
- { "pL", "+=", 2 },
- { "pl", "+", 2 },
- { "pm", "->*", 2 },
- { "pp", "++", 1 },
- { "ps", "+", 1 },
- { "pt", "->", 2 },
- { "qu", "?", 3 },
- { "rM", "%=", 2 },
- { "rS", ">>=", 2 },
- { "rm", "%", 2 },
- { "rs", ">>", 2 },
- { "st", "sizeof ", 1 },
- { "sz", "sizeof ", 1 }
+#define NL(s) s, (sizeof s) - 1
+
+CP_STATIC_IF_GLIBCPP_V3
+const struct demangle_operator_info cplus_demangle_operators[] =
+{
+ { "aN", NL ("&="), 2 },
+ { "aS", NL ("="), 2 },
+ { "aa", NL ("&&"), 2 },
+ { "ad", NL ("&"), 1 },
+ { "an", NL ("&"), 2 },
+ { "cl", NL ("()"), 0 },
+ { "cm", NL (","), 2 },
+ { "co", NL ("~"), 1 },
+ { "dV", NL ("/="), 2 },
+ { "da", NL ("delete[]"), 1 },
+ { "de", NL ("*"), 1 },
+ { "dl", NL ("delete"), 1 },
+ { "dv", NL ("/"), 2 },
+ { "eO", NL ("^="), 2 },
+ { "eo", NL ("^"), 2 },
+ { "eq", NL ("=="), 2 },
+ { "ge", NL (">="), 2 },
+ { "gt", NL (">"), 2 },
+ { "ix", NL ("[]"), 2 },
+ { "lS", NL ("<<="), 2 },
+ { "le", NL ("<="), 2 },
+ { "ls", NL ("<<"), 2 },
+ { "lt", NL ("<"), 2 },
+ { "mI", NL ("-="), 2 },
+ { "mL", NL ("*="), 2 },
+ { "mi", NL ("-"), 2 },
+ { "ml", NL ("*"), 2 },
+ { "mm", NL ("--"), 1 },
+ { "na", NL ("new[]"), 1 },
+ { "ne", NL ("!="), 2 },
+ { "ng", NL ("-"), 1 },
+ { "nt", NL ("!"), 1 },
+ { "nw", NL ("new"), 1 },
+ { "oR", NL ("|="), 2 },
+ { "oo", NL ("||"), 2 },
+ { "or", NL ("|"), 2 },
+ { "pL", NL ("+="), 2 },
+ { "pl", NL ("+"), 2 },
+ { "pm", NL ("->*"), 2 },
+ { "pp", NL ("++"), 1 },
+ { "ps", NL ("+"), 1 },
+ { "pt", NL ("->"), 2 },
+ { "qu", NL ("?"), 3 },
+ { "rM", NL ("%="), 2 },
+ { "rS", NL (">>="), 2 },
+ { "rm", NL ("%"), 2 },
+ { "rs", NL (">>"), 2 },
+ { "st", NL ("sizeof "), 1 },
+ { "sz", NL ("sizeof "), 1 },
+ { NULL, NULL, 0, 0 }
};
-static struct d_comp *
+static struct demangle_component *
d_operator_name (di)
struct d_info *di;
{
@@ -1423,19 +1471,25 @@ d_operator_name (di)
if (c1 == 'v' && IS_DIGIT (c2))
return d_make_extended_operator (di, c2 - '0', d_source_name (di));
else if (c1 == 'c' && c2 == 'v')
- return d_make_comp (di, D_COMP_CAST, d_type (di), NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_CAST,
+ cplus_demangle_type (di), NULL);
else
{
+ /* LOW is the inclusive lower bound. */
int low = 0;
- int high = sizeof (d_operators) / sizeof (d_operators[0]);
+ /* HIGH is the exclusive upper bound. We subtract one to ignore
+ the sentinel at the end of the array. */
+ int high = ((sizeof (cplus_demangle_operators)
+ / sizeof (cplus_demangle_operators[0]))
+ - 1);
while (1)
{
int i;
- const struct d_operator_info *p;
+ const struct demangle_operator_info *p;
i = low + (high - low) / 2;
- p = d_operators + i;
+ p = cplus_demangle_operators + i;
if (c1 == p->code[0] && c2 == p->code[1])
return d_make_operator (di, p);
@@ -1464,68 +1518,79 @@ d_operator_name (di)
::= GR <name>
*/
-static struct d_comp *
+static struct demangle_component *
d_special_name (di)
struct d_info *di;
{
char c;
+ di->expansion += 20;
c = d_next_char (di);
if (c == 'T')
{
switch (d_next_char (di))
{
case 'V':
- return d_make_comp (di, D_COMP_VTABLE, d_type (di), NULL);
+ di->expansion -= 5;
+ return d_make_comp (di, DEMANGLE_COMPONENT_VTABLE,
+ cplus_demangle_type (di), NULL);
case 'T':
- return d_make_comp (di, D_COMP_VTT, d_type (di), NULL);
+ di->expansion -= 10;
+ return d_make_comp (di, DEMANGLE_COMPONENT_VTT,
+ cplus_demangle_type (di), NULL);
case 'I':
- return d_make_comp (di, D_COMP_TYPEINFO, d_type (di), NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_TYPEINFO,
+ cplus_demangle_type (di), NULL);
case 'S':
- return d_make_comp (di, D_COMP_TYPEINFO_NAME, d_type (di), NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_TYPEINFO_NAME,
+ cplus_demangle_type (di), NULL);
case 'h':
if (! d_call_offset (di, 'h'))
return NULL;
- return d_make_comp (di, D_COMP_THUNK, d_encoding (di, 0), NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_THUNK,
+ d_encoding (di, 0), NULL);
case 'v':
if (! d_call_offset (di, 'v'))
return NULL;
- return d_make_comp (di, D_COMP_VIRTUAL_THUNK, d_encoding (di, 0),
- NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_VIRTUAL_THUNK,
+ d_encoding (di, 0), NULL);
case 'c':
if (! d_call_offset (di, '\0'))
return NULL;
if (! d_call_offset (di, '\0'))
return NULL;
- return d_make_comp (di, D_COMP_COVARIANT_THUNK, d_encoding (di, 0),
- NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_COVARIANT_THUNK,
+ d_encoding (di, 0), NULL);
case 'C':
{
- struct d_comp *derived_type;
+ struct demangle_component *derived_type;
long offset;
- struct d_comp *base_type;
+ struct demangle_component *base_type;
- derived_type = d_type (di);
+ derived_type = cplus_demangle_type (di);
offset = d_number (di);
if (offset < 0)
return NULL;
if (d_next_char (di) != '_')
return NULL;
- base_type = d_type (di);
+ base_type = cplus_demangle_type (di);
/* We don't display the offset. FIXME: We should display
it in verbose mode. */
- return d_make_comp (di, D_COMP_CONSTRUCTION_VTABLE, base_type,
- derived_type);
+ di->expansion += 5;
+ return d_make_comp (di, DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE,
+ base_type, derived_type);
}
case 'F':
- return d_make_comp (di, D_COMP_TYPEINFO_FN, d_type (di), NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_TYPEINFO_FN,
+ cplus_demangle_type (di), NULL);
case 'J':
- return d_make_comp (di, D_COMP_JAVA_CLASS, d_type (di), NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_JAVA_CLASS,
+ cplus_demangle_type (di), NULL);
default:
return NULL;
@@ -1536,10 +1601,11 @@ d_special_name (di)
switch (d_next_char (di))
{
case 'V':
- return d_make_comp (di, D_COMP_GUARD, d_name (di), NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_GUARD, d_name (di), NULL);
case 'R':
- return d_make_comp (di, D_COMP_REFTEMP, d_name (di), NULL);
+ return d_make_comp (di, DEMANGLE_COMPONENT_REFTEMP, d_name (di),
+ NULL);
default:
return NULL;
@@ -1599,10 +1665,17 @@ d_call_offset (di, c)
::= D2
*/
-static struct d_comp *
+static struct demangle_component *
d_ctor_dtor_name (di)
struct d_info *di;
{
+ if (di->last_name != NULL)
+ {
+ if (di->last_name->type == DEMANGLE_COMPONENT_NAME)
+ di->expansion += di->last_name->u.s_name.len;
+ else if (di->last_name->type == DEMANGLE_COMPONENT_SUB_STD)
+ di->expansion += di->last_name->u.s_string.len;
+ }
switch (d_next_char (di))
{
case 'C':
@@ -1671,42 +1744,45 @@ d_ctor_dtor_name (di)
::= u <source-name>
*/
-static const struct d_builtin_type_info d_builtin_types[26] =
-{
- /* a */ { "signed char", "signed char", D_PRINT_INT },
- /* b */ { "bool", "boolean", D_PRINT_BOOL },
- /* c */ { "char", "byte", D_PRINT_INT },
- /* d */ { "double", "double", D_PRINT_DEFAULT },
- /* e */ { "long double", "long double", D_PRINT_DEFAULT },
- /* f */ { "float", "float", D_PRINT_DEFAULT },
- /* g */ { "__float128", "__float128", D_PRINT_DEFAULT },
- /* h */ { "unsigned char", "unsigned char", D_PRINT_INT },
- /* i */ { "int", "int", D_PRINT_INT },
- /* j */ { "unsigned int", "unsigned", D_PRINT_INT },
- /* k */ { NULL, NULL, D_PRINT_DEFAULT },
- /* l */ { "long", "long", D_PRINT_LONG },
- /* m */ { "unsigned long", "unsigned long", D_PRINT_LONG },
- /* n */ { "__int128", "__int128", D_PRINT_DEFAULT },
- /* o */ { "unsigned __int128", "unsigned __int128", D_PRINT_DEFAULT },
- /* p */ { NULL, NULL, D_PRINT_DEFAULT },
- /* q */ { NULL, NULL, D_PRINT_DEFAULT },
- /* r */ { NULL, NULL, D_PRINT_DEFAULT },
- /* s */ { "short", "short", D_PRINT_INT },
- /* t */ { "unsigned short", "unsigned short", D_PRINT_INT },
- /* u */ { NULL, NULL, D_PRINT_DEFAULT },
- /* v */ { "void", "void", D_PRINT_VOID },
- /* w */ { "wchar_t", "char", D_PRINT_INT },
- /* x */ { "long long", "long", D_PRINT_DEFAULT },
- /* y */ { "unsigned long long", "unsigned long long", D_PRINT_DEFAULT },
- /* z */ { "...", "...", D_PRINT_DEFAULT },
+CP_STATIC_IF_GLIBCPP_V3
+const struct demangle_builtin_type_info
+cplus_demangle_builtin_types[D_BUILTIN_TYPE_COUNT] =
+{
+ /* a */ { NL ("signed char"), NL ("signed char"), D_PRINT_INT },
+ /* b */ { NL ("bool"), NL ("boolean"), D_PRINT_BOOL },
+ /* c */ { NL ("char"), NL ("byte"), D_PRINT_INT },
+ /* d */ { NL ("double"), NL ("double"), D_PRINT_DEFAULT },
+ /* e */ { NL ("long double"), NL ("long double"), D_PRINT_DEFAULT },
+ /* f */ { NL ("float"), NL ("float"), D_PRINT_DEFAULT },
+ /* g */ { NL ("__float128"), NL ("__float128"), D_PRINT_DEFAULT },
+ /* h */ { NL ("unsigned char"), NL ("unsigned char"), D_PRINT_INT },
+ /* i */ { NL ("int"), NL ("int"), D_PRINT_INT },
+ /* j */ { NL ("unsigned int"), NL ("unsigned"), D_PRINT_INT },
+ /* k */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
+ /* l */ { NL ("long"), NL ("long"), D_PRINT_LONG },
+ /* m */ { NL ("unsigned long"), NL ("unsigned long"), D_PRINT_LONG },
+ /* n */ { NL ("__int128"), NL ("__int128"), D_PRINT_DEFAULT },
+ /* o */ { NL ("unsigned __int128"), NL ("unsigned __int128"), D_PRINT_DEFAULT },
+ /* p */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
+ /* q */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
+ /* r */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
+ /* s */ { NL ("short"), NL ("short"), D_PRINT_INT },
+ /* t */ { NL ("unsigned short"), NL ("unsigned short"), D_PRINT_INT },
+ /* u */ { NULL, 0, NULL, 0, D_PRINT_DEFAULT },
+ /* v */ { NL ("void"), NL ("void"), D_PRINT_VOID },
+ /* w */ { NL ("wchar_t"), NL ("char"), D_PRINT_INT },
+ /* x */ { NL ("long long"), NL ("long"), D_PRINT_DEFAULT },
+ /* y */ { NL ("unsigned long long"), NL ("unsigned long long"), D_PRINT_DEFAULT },
+ /* z */ { NL ("..."), NL ("..."), D_PRINT_DEFAULT },
};
-static struct d_comp *
-d_type (di)
+CP_STATIC_IF_GLIBCPP_V3
+struct demangle_component *
+cplus_demangle_type (di)
struct d_info *di;
{
char peek;
- struct d_comp *ret;
+ struct demangle_component *ret;
int can_subst;
/* The ABI specifies that when CV-qualifiers are used, the base type
@@ -1727,12 +1803,12 @@ d_type (di)
peek = d_peek_char (di);
if (peek == 'r' || peek == 'V' || peek == 'K')
{
- struct d_comp **pret;
+ struct demangle_component **pret;
pret = d_cv_qualifiers (di, &ret, 0);
if (pret == NULL)
return NULL;
- *pret = d_type (di);
+ *pret = cplus_demangle_type (di);
if (! d_add_substitution (di, ret))
return NULL;
return ret;
@@ -1746,14 +1822,17 @@ d_type (di)
case 'h': case 'i': case 'j': case 'l': case 'm': case 'n':
case 'o': case 's': case 't':
case 'v': case 'w': case 'x': case 'y': case 'z':
- ret = d_make_builtin_type (di, &d_builtin_types[peek - 'a']);
+ ret = d_make_builtin_type (di,
+ &cplus_demangle_builtin_types[peek - 'a']);
+ di->expansion += ret->u.s_builtin.type->len;
can_subst = 0;
d_advance (di, 1);
break;
case 'u':
d_advance (di, 1);
- ret = d_make_comp (di, D_COMP_VENDOR_TYPE, d_source_name (di), NULL);
+ ret = d_make_comp (di, DEMANGLE_COMPONENT_VENDOR_TYPE,
+ d_source_name (di), NULL);
break;
case 'F':
@@ -1784,7 +1863,8 @@ d_type (di)
candidate. */
if (! d_add_substitution (di, ret))
return NULL;
- ret = d_make_comp (di, D_COMP_TEMPLATE, ret, d_template_args (di));
+ ret = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, ret,
+ d_template_args (di));
}
break;
@@ -1803,7 +1883,7 @@ d_type (di)
/* The substituted name may have been a template name and
may be followed by tepmlate args. */
if (d_peek_char (di) == 'I')
- ret = d_make_comp (di, D_COMP_TEMPLATE, ret,
+ ret = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, ret,
d_template_args (di));
else
can_subst = 0;
@@ -1815,7 +1895,7 @@ d_type (di)
a new substitution candidate. However, if the
substitution was followed by template arguments, then
the whole thing is a substitution candidate. */
- if (ret != NULL && ret->type == D_COMP_SUB_STD)
+ if (ret != NULL && ret->type == DEMANGLE_COMPONENT_SUB_STD)
can_subst = 0;
}
}
@@ -1823,28 +1903,33 @@ d_type (di)
case 'P':
d_advance (di, 1);
- ret = d_make_comp (di, D_COMP_POINTER, d_type (di), NULL);
+ ret = d_make_comp (di, DEMANGLE_COMPONENT_POINTER,
+ cplus_demangle_type (di), NULL);
break;
case 'R':
d_advance (di, 1);
- ret = d_make_comp (di, D_COMP_REFERENCE, d_type (di), NULL);
+ ret = d_make_comp (di, DEMANGLE_COMPONENT_REFERENCE,
+ cplus_demangle_type (di), NULL);
break;
case 'C':
d_advance (di, 1);
- ret = d_make_comp (di, D_COMP_COMPLEX, d_type (di), NULL);
+ ret = d_make_comp (di, DEMANGLE_COMPONENT_COMPLEX,
+ cplus_demangle_type (di), NULL);
break;
case 'G':
d_advance (di, 1);
- ret = d_make_comp (di, D_COMP_IMAGINARY, d_type (di), NULL);
+ ret = d_make_comp (di, DEMANGLE_COMPONENT_IMAGINARY,
+ cplus_demangle_type (di), NULL);
break;
case 'U':
d_advance (di, 1);
ret = d_source_name (di);
- ret = d_make_comp (di, D_COMP_VENDOR_TYPE_QUAL, d_type (di), ret);
+ ret = d_make_comp (di, DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL,
+ cplus_demangle_type (di), ret);
break;
default:
@@ -1862,10 +1947,10 @@ d_type (di)
/* <CV-qualifiers> ::= [r] [V] [K] */
-static struct d_comp **
+static struct demangle_component **
d_cv_qualifiers (di, pret, member_fn)
struct d_info *di;
- struct d_comp **pret;
+ struct demangle_component **pret;
int member_fn;
{
char peek;
@@ -1873,15 +1958,30 @@ d_cv_qualifiers (di, pret, member_fn)
peek = d_peek_char (di);
while (peek == 'r' || peek == 'V' || peek == 'K')
{
- enum d_comp_type t;
+ enum demangle_component_type t;
d_advance (di, 1);
if (peek == 'r')
- t = member_fn ? D_COMP_RESTRICT_THIS: D_COMP_RESTRICT;
+ {
+ t = (member_fn
+ ? DEMANGLE_COMPONENT_RESTRICT_THIS
+ : DEMANGLE_COMPONENT_RESTRICT);
+ di->expansion += sizeof "restrict";
+ }
else if (peek == 'V')
- t = member_fn ? D_COMP_VOLATILE_THIS : D_COMP_VOLATILE;
+ {
+ t = (member_fn
+ ? DEMANGLE_COMPONENT_VOLATILE_THIS
+ : DEMANGLE_COMPONENT_VOLATILE);
+ di->expansion += sizeof "volatile";
+ }
else
- t = member_fn ? D_COMP_CONST_THIS: D_COMP_CONST;
+ {
+ t = (member_fn
+ ? DEMANGLE_COMPONENT_CONST_THIS
+ : DEMANGLE_COMPONENT_CONST);
+ di->expansion += sizeof "const";
+ }
*pret = d_make_comp (di, t, NULL, NULL);
if (*pret == NULL)
@@ -1896,11 +1996,11 @@ d_cv_qualifiers (di, pret, member_fn)
/* <function-type> ::= F [Y] <bare-function-type> E */
-static struct d_comp *
+static struct demangle_component *
d_function_type (di)
struct d_info *di;
{
- struct d_comp *ret;
+ struct demangle_component *ret;
if (d_next_char (di) != 'F')
return NULL;
@@ -1918,14 +2018,14 @@ d_function_type (di)
/* <bare-function-type> ::= <type>+ */
-static struct d_comp *
+static struct demangle_component *
d_bare_function_type (di, has_return_type)
struct d_info *di;
int has_return_type;
{
- struct d_comp *return_type;
- struct d_comp *tl;
- struct d_comp **ptl;
+ struct demangle_component *return_type;
+ struct demangle_component *tl;
+ struct demangle_component **ptl;
return_type = NULL;
tl = NULL;
@@ -1933,12 +2033,12 @@ d_bare_function_type (di, has_return_type)
while (1)
{
char peek;
- struct d_comp *type;
+ struct demangle_component *type;
peek = d_peek_char (di);
if (peek == '\0' || peek == 'E')
break;
- type = d_type (di);
+ type = cplus_demangle_type (di);
if (type == NULL)
return NULL;
if (has_return_type)
@@ -1948,7 +2048,7 @@ d_bare_function_type (di, has_return_type)
}
else
{
- *ptl = d_make_comp (di, D_COMP_ARGLIST, type, NULL);
+ *ptl = d_make_comp (di, DEMANGLE_COMPONENT_ARGLIST, type, NULL);
if (*ptl == NULL)
return NULL;
ptl = &d_right (*ptl);
@@ -1963,16 +2063,19 @@ d_bare_function_type (di, has_return_type)
/* If we have a single parameter type void, omit it. */
if (d_right (tl) == NULL
- && d_left (tl)->type == D_COMP_BUILTIN_TYPE
+ && d_left (tl)->type == DEMANGLE_COMPONENT_BUILTIN_TYPE
&& d_left (tl)->u.s_builtin.type->print == D_PRINT_VOID)
- tl = NULL;
+ {
+ di->expansion -= d_left (tl)->u.s_builtin.type->len;
+ tl = NULL;
+ }
- return d_make_comp (di, D_COMP_FUNCTION_TYPE, return_type, tl);
+ return d_make_comp (di, DEMANGLE_COMPONENT_FUNCTION_TYPE, return_type, tl);
}
/* <class-enum-type> ::= <name> */
-static struct d_comp *
+static struct demangle_component *
d_class_enum_type (di)
struct d_info *di;
{
@@ -1983,12 +2086,12 @@ d_class_enum_type (di)
::= A [<(dimension) expression>] _ <(element) type>
*/
-static struct d_comp *
+static struct demangle_component *
d_array_type (di)
struct d_info *di;
{
char peek;
- struct d_comp *dim;
+ struct demangle_component *dim;
if (d_next_char (di) != 'A')
return NULL;
@@ -2021,23 +2124,24 @@ d_array_type (di)
if (d_next_char (di) != '_')
return NULL;
- return d_make_comp (di, D_COMP_ARRAY_TYPE, dim, d_type (di));
+ return d_make_comp (di, DEMANGLE_COMPONENT_ARRAY_TYPE, dim,
+ cplus_demangle_type (di));
}
/* <pointer-to-member-type> ::= M <(class) type> <(member) type> */
-static struct d_comp *
+static struct demangle_component *
d_pointer_to_member_type (di)
struct d_info *di;
{
- struct d_comp *cl;
- struct d_comp *mem;
- struct d_comp **pmem;
+ struct demangle_component *cl;
+ struct demangle_component *mem;
+ struct demangle_component **pmem;
if (d_next_char (di) != 'M')
return NULL;
- cl = d_type (di);
+ cl = cplus_demangle_type (di);
/* The ABI specifies that any type can be a substitution source, and
that M is followed by two types, and that when a CV-qualified
@@ -2050,21 +2154,21 @@ d_pointer_to_member_type (di)
g++ does not work that way. g++ treats only the CV-qualified
member function as a substitution source. FIXME. So to work
with g++, we need to pull off the CV-qualifiers here, in order to
- avoid calling add_substitution() in d_type(). */
+ avoid calling add_substitution() in cplus_demangle_type(). */
pmem = d_cv_qualifiers (di, &mem, 1);
if (pmem == NULL)
return NULL;
- *pmem = d_type (di);
+ *pmem = cplus_demangle_type (di);
- return d_make_comp (di, D_COMP_PTRMEM_TYPE, cl, mem);
+ return d_make_comp (di, DEMANGLE_COMPONENT_PTRMEM_TYPE, cl, mem);
}
/* <template-param> ::= T_
::= T <(parameter-2 non-negative) number> _
*/
-static struct d_comp *
+static struct demangle_component *
d_template_param (di)
struct d_info *di;
{
@@ -2086,18 +2190,20 @@ d_template_param (di)
if (d_next_char (di) != '_')
return NULL;
+ ++di->did_subs;
+
return d_make_template_param (di, param);
}
/* <template-args> ::= I <template-arg>+ E */
-static struct d_comp *
+static struct demangle_component *
d_template_args (di)
struct d_info *di;
{
- struct d_comp *hold_last_name;
- struct d_comp *al;
- struct d_comp **pal;
+ struct demangle_component *hold_last_name;
+ struct demangle_component *al;
+ struct demangle_component **pal;
/* Preserve the last name we saw--don't let the template arguments
clobber it, as that would give us the wrong name for a subsequent
@@ -2111,13 +2217,13 @@ d_template_args (di)
pal = &al;
while (1)
{
- struct d_comp *a;
+ struct demangle_component *a;
a = d_template_arg (di);
if (a == NULL)
return NULL;
- *pal = d_make_comp (di, D_COMP_TEMPLATE_ARGLIST, a, NULL);
+ *pal = d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE_ARGLIST, a, NULL);
if (*pal == NULL)
return NULL;
pal = &d_right (*pal);
@@ -2139,11 +2245,11 @@ d_template_args (di)
::= <expr-primary>
*/
-static struct d_comp *
+static struct demangle_component *
d_template_arg (di)
struct d_info *di;
{
- struct d_comp *ret;
+ struct demangle_component *ret;
switch (d_peek_char (di))
{
@@ -2158,7 +2264,7 @@ d_template_arg (di)
return d_expr_primary (di);
default:
- return d_type (di);
+ return cplus_demangle_type (di);
}
}
@@ -2172,7 +2278,7 @@ d_template_arg (di)
::= <expr-primary>
*/
-static struct d_comp *
+static struct demangle_component *
d_expression (di)
struct d_info *di;
{
@@ -2185,43 +2291,47 @@ d_expression (di)
return d_template_param (di);
else if (peek == 's' && d_peek_next_char (di) == 'r')
{
- struct d_comp *type;
- struct d_comp *name;
+ struct demangle_component *type;
+ struct demangle_component *name;
d_advance (di, 2);
- type = d_type (di);
+ type = cplus_demangle_type (di);
name = d_unqualified_name (di);
if (d_peek_char (di) != 'I')
- return d_make_comp (di, D_COMP_QUAL_NAME, type, name);
+ return d_make_comp (di, DEMANGLE_COMPONENT_QUAL_NAME, type, name);
else
- return d_make_comp (di, D_COMP_QUAL_NAME, type,
- d_make_comp (di, D_COMP_TEMPLATE, name,
+ return d_make_comp (di, DEMANGLE_COMPONENT_QUAL_NAME, type,
+ d_make_comp (di, DEMANGLE_COMPONENT_TEMPLATE, name,
d_template_args (di)));
}
else
{
- struct d_comp *op;
+ struct demangle_component *op;
int args;
op = d_operator_name (di);
if (op == NULL)
return NULL;
- if (op->type == D_COMP_OPERATOR
+ if (op->type == DEMANGLE_COMPONENT_OPERATOR)
+ di->expansion += op->u.s_operator.op->len - 2;
+
+ if (op->type == DEMANGLE_COMPONENT_OPERATOR
&& strcmp (op->u.s_operator.op->code, "st") == 0)
- return d_make_comp (di, D_COMP_UNARY, op, d_type (di));
+ return d_make_comp (di, DEMANGLE_COMPONENT_UNARY, op,
+ cplus_demangle_type (di));
switch (op->type)
{
default:
return NULL;
- case D_COMP_OPERATOR:
+ case DEMANGLE_COMPONENT_OPERATOR:
args = op->u.s_operator.op->args;
break;
- case D_COMP_EXTENDED_OPERATOR:
+ case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
args = op->u.s_extended_operator.args;
break;
- case D_COMP_CAST:
+ case DEMANGLE_COMPONENT_CAST:
args = 1;
break;
}
@@ -2229,27 +2339,32 @@ d_expression (di)
switch (args)
{
case 1:
- return d_make_comp (di, D_COMP_UNARY, op, d_expression (di));
+ return d_make_comp (di, DEMANGLE_COMPONENT_UNARY, op,
+ d_expression (di));
case 2:
{
- struct d_comp *left;
+ struct demangle_component *left;
left = d_expression (di);
- return d_make_comp (di, D_COMP_BINARY, op,
- d_make_comp (di, D_COMP_BINARY_ARGS, left,
+ return d_make_comp (di, DEMANGLE_COMPONENT_BINARY, op,
+ d_make_comp (di,
+ DEMANGLE_COMPONENT_BINARY_ARGS,
+ left,
d_expression (di)));
}
case 3:
{
- struct d_comp *first;
- struct d_comp *second;
+ struct demangle_component *first;
+ struct demangle_component *second;
first = d_expression (di);
second = d_expression (di);
- return d_make_comp (di, D_COMP_TRINARY, op,
- d_make_comp (di, D_COMP_TRINARY_ARG1, first,
+ return d_make_comp (di, DEMANGLE_COMPONENT_TRINARY, op,
+ d_make_comp (di,
+ DEMANGLE_COMPONENT_TRINARY_ARG1,
+ first,
d_make_comp (di,
- D_COMP_TRINARY_ARG2,
+ DEMANGLE_COMPONENT_TRINARY_ARG2,
second,
d_expression (di))));
}
@@ -2264,23 +2379,29 @@ d_expression (di)
::= L <mangled-name> E
*/
-static struct d_comp *
+static struct demangle_component *
d_expr_primary (di)
struct d_info *di;
{
- struct d_comp *ret;
+ struct demangle_component *ret;
if (d_next_char (di) != 'L')
return NULL;
if (d_peek_char (di) == '_')
- ret = d_mangled_name (di, 0);
+ ret = cplus_demangle_mangled_name (di, 0);
else
{
- struct d_comp *type;
- enum d_comp_type t;
+ struct demangle_component *type;
+ enum demangle_component_type t;
const char *s;
- type = d_type (di);
+ type = cplus_demangle_type (di);
+
+ /* If we have a type we know how to print, we aren't going to
+ print the type name itself. */
+ if (type->type == DEMANGLE_COMPONENT_BUILTIN_TYPE
+ && type->u.s_builtin.type->print != D_PRINT_DEFAULT)
+ di->expansion -= type->u.s_builtin.type->len;
/* Rather than try to interpret the literal value, we just
collect it as a string. Note that it's possible to have a
@@ -2293,10 +2414,10 @@ d_expr_primary (di)
constant in any readable form anyhow. We don't attempt to
handle these cases. */
- t = D_COMP_LITERAL;
+ t = DEMANGLE_COMPONENT_LITERAL;
if (d_peek_char (di) == 'n')
{
- t = D_COMP_LITERAL_NEG;
+ t = DEMANGLE_COMPONENT_LITERAL_NEG;
d_advance (di, 1);
}
s = d_str (di);
@@ -2313,11 +2434,11 @@ d_expr_primary (di)
::= Z <(function) encoding> E s [<discriminator>]
*/
-static struct d_comp *
+static struct demangle_component *
d_local_name (di)
struct d_info *di;
{
- struct d_comp *function;
+ struct demangle_component *function;
if (d_next_char (di) != 'Z')
return NULL;
@@ -2332,18 +2453,18 @@ d_local_name (di)
d_advance (di, 1);
if (! d_discriminator (di))
return NULL;
- return d_make_comp (di, D_COMP_QUAL_NAME, function,
+ return d_make_comp (di, DEMANGLE_COMPONENT_LOCAL_NAME, function,
d_make_name (di, "string literal",
sizeof "string literal" - 1));
}
else
{
- struct d_comp *name;
+ struct demangle_component *name;
name = d_name (di);
if (! d_discriminator (di))
return NULL;
- return d_make_comp (di, D_COMP_QUAL_NAME, function, name);
+ return d_make_comp (di, DEMANGLE_COMPONENT_LOCAL_NAME, function, name);
}
}
@@ -2372,7 +2493,7 @@ d_discriminator (di)
static int
d_add_substitution (di, dc)
struct d_info *di;
- struct d_comp *dc;
+ struct demangle_component *dc;
{
if (dc == NULL)
return 0;
@@ -2404,24 +2525,30 @@ d_add_substitution (di, dc)
static const struct d_standard_sub_info standard_subs[] =
{
- { 't', "std", "std", NULL },
- { 'a', "std::allocator", "std::allocator", "allocator" },
- { 'b', "std::basic_string", "std::basic_string", "basic_string" },
- { 's', "std::string",
- "std::basic_string<char, std::char_traits<char>, std::allocator<char> >",
- "basic_string" },
- { 'i', "std::istream",
- "std::basic_istream<char, std::char_traits<char> >",
- "basic_istream" },
- { 'o', "std::ostream",
- "std::basic_ostream<char, std::char_traits<char> >",
- "basic_ostream" },
- { 'd', "std::iostream",
- "std::basic_iostream<char, std::char_traits<char> >",
- "basic_iostream" }
+ { 't', NL ("std"),
+ NL ("std"),
+ NULL, 0 },
+ { 'a', NL ("std::allocator"),
+ NL ("std::allocator"),
+ NL ("allocator") },
+ { 'b', NL ("std::basic_string"),
+ NL ("std::basic_string"),
+ NL ("basic_string") },
+ { 's', NL ("std::string"),
+ NL ("std::basic_string<char, std::char_traits<char>, std::allocator<char> >"),
+ NL ("basic_string") },
+ { 'i', NL ("std::istream"),
+ NL ("std::basic_istream<char, std::char_traits<char> >"),
+ NL ("basic_istream") },
+ { 'o', NL ("std::ostream"),
+ NL ("std::basic_ostream<char, std::char_traits<char> >"),
+ NL ("basic_ostream") },
+ { 'd', NL ("std::iostream"),
+ NL ("std::basic_iostream<char, std::char_traits<char> >"),
+ NL ("basic_iostream") }
};
-static struct d_comp *
+static struct demangle_component *
d_substitution (di, prefix)
struct d_info *di;
int prefix;
@@ -2457,6 +2584,8 @@ d_substitution (di, prefix)
if (id >= di->next_sub)
return NULL;
+ ++di->did_subs;
+
return di->subs[id];
}
else
@@ -2481,12 +2610,24 @@ d_substitution (di, prefix)
{
if (c == p->code)
{
+ const char *s;
+ int len;
+
if (p->set_last_name != NULL)
- di->last_name = d_make_sub (di, p->set_last_name);
+ di->last_name = d_make_sub (di, p->set_last_name,
+ p->set_last_name_len);
if (verbose)
- return d_make_sub (di, p->full_expansion);
+ {
+ s = p->full_expansion;
+ len = p->full_len;
+ }
else
- return d_make_sub (di, p->simple_expansion);
+ {
+ s = p->simple_expansion;
+ len = p->simple_len;
+ }
+ di->expansion += len;
+ return d_make_sub (di, s, len);
}
}
@@ -2578,22 +2719,27 @@ d_print_error (dpi)
dpi->buf = NULL;
}
-/* Turn components into a human readable string. Returns a string
- allocated by malloc, or NULL on error. On success, this sets *PALC
- to the size of the allocated buffer. On failure, this sets *PALC
- to 0 for a bad parse, or to 1 for a memory allocation failure. */
+/* Turn components into a human readable string. OPTIONS is the
+ options bits passed to the demangler. DC is the tree to print.
+ ESTIMATE is a guess at the length of the result. This returns a
+ string allocated by malloc, or NULL on error. On success, this
+ sets *PALC to the size of the allocated buffer. On failure, this
+ sets *PALC to 0 for a bad parse, or to 1 for a memory allocation
+ failure. */
-static char *
-d_print (options, dc, palc)
+CP_STATIC_IF_GLIBCPP_V3
+char *
+cplus_demangle_print (options, dc, estimate, palc)
int options;
- const struct d_comp *dc;
+ const struct demangle_component *dc;
+ int estimate;
size_t *palc;
{
struct d_print_info dpi;
dpi.options = options;
- dpi.alc = 64;
+ dpi.alc = estimate + 1;
dpi.buf = malloc (dpi.alc);
if (dpi.buf == NULL)
{
@@ -2624,7 +2770,7 @@ d_print (options, dc, palc)
static void
d_print_comp (dpi, dc)
struct d_print_info *dpi;
- const struct d_comp *dc;
+ const struct demangle_component *dc;
{
if (dc == NULL)
{
@@ -2636,20 +2782,27 @@ d_print_comp (dpi, dc)
switch (dc->type)
{
- case D_COMP_NAME:
- d_print_identifier (dpi, dc->u.s_name.s, dc->u.s_name.len);
+ case DEMANGLE_COMPONENT_NAME:
+ if ((dpi->options & DMGL_JAVA) == 0)
+ d_append_buffer (dpi, dc->u.s_name.s, dc->u.s_name.len);
+ else
+ d_print_java_identifier (dpi, dc->u.s_name.s, dc->u.s_name.len);
return;
- case D_COMP_QUAL_NAME:
+ case DEMANGLE_COMPONENT_QUAL_NAME:
+ case DEMANGLE_COMPONENT_LOCAL_NAME:
d_print_comp (dpi, d_left (dc));
- d_append_string (dpi, (dpi->options & DMGL_JAVA) == 0 ? "::" : ".");
+ if ((dpi->options & DMGL_JAVA) == 0)
+ d_append_string_constant (dpi, "::");
+ else
+ d_append_char (dpi, '.');
d_print_comp (dpi, d_right (dc));
return;
- case D_COMP_TYPED_NAME:
+ case DEMANGLE_COMPONENT_TYPED_NAME:
{
struct d_print_mod *hold_modifiers;
- struct d_comp *typed_name;
+ struct demangle_component *typed_name;
struct d_print_mod adpm[4];
unsigned int i;
struct d_print_template dpt;
@@ -2675,9 +2828,9 @@ d_print_comp (dpi, dc)
adpm[i].templates = dpi->templates;
++i;
- if (typed_name->type != D_COMP_RESTRICT_THIS
- && typed_name->type != D_COMP_VOLATILE_THIS
- && typed_name->type != D_COMP_CONST_THIS)
+ if (typed_name->type != DEMANGLE_COMPONENT_RESTRICT_THIS
+ && typed_name->type != DEMANGLE_COMPONENT_VOLATILE_THIS
+ && typed_name->type != DEMANGLE_COMPONENT_CONST_THIS)
break;
typed_name = d_left (typed_name);
@@ -2685,16 +2838,48 @@ d_print_comp (dpi, dc)
/* If typed_name is a template, then it applies to the
function type as well. */
- if (typed_name->type == D_COMP_TEMPLATE)
+ if (typed_name->type == DEMANGLE_COMPONENT_TEMPLATE)
{
dpt.next = dpi->templates;
dpi->templates = &dpt;
dpt.template = typed_name;
}
+ /* If typed_name is a DEMANGLE_COMPONENT_LOCAL_NAME, then
+ there may be CV-qualifiers on its right argument which
+ really apply here; this happens when parsing a class which
+ is local to a function. */
+ if (typed_name->type == DEMANGLE_COMPONENT_LOCAL_NAME)
+ {
+ struct demangle_component *local_name;
+
+ local_name = d_right (typed_name);
+ while (local_name->type == DEMANGLE_COMPONENT_RESTRICT_THIS
+ || local_name->type == DEMANGLE_COMPONENT_VOLATILE_THIS
+ || local_name->type == DEMANGLE_COMPONENT_CONST_THIS)
+ {
+ if (i >= sizeof adpm / sizeof adpm[0])
+ {
+ d_print_error (dpi);
+ return;
+ }
+
+ adpm[i] = adpm[i - 1];
+ adpm[i].next = &adpm[i - 1];
+ dpi->modifiers = &adpm[i];
+
+ adpm[i - 1].mod = local_name;
+ adpm[i - 1].printed = 0;
+ adpm[i - 1].templates = dpi->templates;
+ ++i;
+
+ local_name = d_left (local_name);
+ }
+ }
+
d_print_comp (dpi, d_right (dc));
- if (typed_name->type == D_COMP_TEMPLATE)
+ if (typed_name->type == DEMANGLE_COMPONENT_TEMPLATE)
dpi->templates = dpt.next;
/* If the modifiers didn't get printed by the type, print them
@@ -2714,7 +2899,7 @@ d_print_comp (dpi, dc)
return;
}
- case D_COMP_TEMPLATE:
+ case DEMANGLE_COMPONENT_TEMPLATE:
{
struct d_print_mod *hold_dpm;
@@ -2741,10 +2926,10 @@ d_print_comp (dpi, dc)
return;
}
- case D_COMP_TEMPLATE_PARAM:
+ case DEMANGLE_COMPONENT_TEMPLATE_PARAM:
{
long i;
- struct d_comp *a;
+ struct demangle_component *a;
struct d_print_template *hold_dpt;
if (dpi->templates == NULL)
@@ -2757,7 +2942,7 @@ d_print_comp (dpi, dc)
a != NULL;
a = d_right (a))
{
- if (a->type != D_COMP_TEMPLATE_ARGLIST)
+ if (a->type != DEMANGLE_COMPONENT_TEMPLATE_ARGLIST)
{
d_print_error (dpi);
return;
@@ -2787,92 +2972,92 @@ d_print_comp (dpi, dc)
return;
}
- case D_COMP_CTOR:
+ case DEMANGLE_COMPONENT_CTOR:
d_print_comp (dpi, dc->u.s_ctor.name);
return;
- case D_COMP_DTOR:
+ case DEMANGLE_COMPONENT_DTOR:
d_append_char (dpi, '~');
d_print_comp (dpi, dc->u.s_dtor.name);
return;
- case D_COMP_VTABLE:
- d_append_string (dpi, "vtable for ");
+ case DEMANGLE_COMPONENT_VTABLE:
+ d_append_string_constant (dpi, "vtable for ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_VTT:
- d_append_string (dpi, "VTT for ");
+ case DEMANGLE_COMPONENT_VTT:
+ d_append_string_constant (dpi, "VTT for ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_CONSTRUCTION_VTABLE:
- d_append_string (dpi, "construction vtable for ");
+ case DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE:
+ d_append_string_constant (dpi, "construction vtable for ");
d_print_comp (dpi, d_left (dc));
- d_append_string (dpi, "-in-");
+ d_append_string_constant (dpi, "-in-");
d_print_comp (dpi, d_right (dc));
return;
- case D_COMP_TYPEINFO:
- d_append_string (dpi, "typeinfo for ");
+ case DEMANGLE_COMPONENT_TYPEINFO:
+ d_append_string_constant (dpi, "typeinfo for ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_TYPEINFO_NAME:
- d_append_string (dpi, "typeinfo name for ");
+ case DEMANGLE_COMPONENT_TYPEINFO_NAME:
+ d_append_string_constant (dpi, "typeinfo name for ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_TYPEINFO_FN:
- d_append_string (dpi, "typeinfo fn for ");
+ case DEMANGLE_COMPONENT_TYPEINFO_FN:
+ d_append_string_constant (dpi, "typeinfo fn for ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_THUNK:
- d_append_string (dpi, "non-virtual thunk to ");
+ case DEMANGLE_COMPONENT_THUNK:
+ d_append_string_constant (dpi, "non-virtual thunk to ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_VIRTUAL_THUNK:
- d_append_string (dpi, "virtual thunk to ");
+ case DEMANGLE_COMPONENT_VIRTUAL_THUNK:
+ d_append_string_constant (dpi, "virtual thunk to ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_COVARIANT_THUNK:
- d_append_string (dpi, "covariant return thunk to ");
+ case DEMANGLE_COMPONENT_COVARIANT_THUNK:
+ d_append_string_constant (dpi, "covariant return thunk to ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_JAVA_CLASS:
- d_append_string (dpi, "java Class for ");
+ case DEMANGLE_COMPONENT_JAVA_CLASS:
+ d_append_string_constant (dpi, "java Class for ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_GUARD:
- d_append_string (dpi, "guard variable for ");
+ case DEMANGLE_COMPONENT_GUARD:
+ d_append_string_constant (dpi, "guard variable for ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_REFTEMP:
- d_append_string (dpi, "reference temporary for ");
+ case DEMANGLE_COMPONENT_REFTEMP:
+ d_append_string_constant (dpi, "reference temporary for ");
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_SUB_STD:
- d_append_string (dpi, dc->u.s_string.string);
+ case DEMANGLE_COMPONENT_SUB_STD:
+ d_append_buffer (dpi, dc->u.s_string.string, dc->u.s_string.len);
return;
- case D_COMP_RESTRICT:
- case D_COMP_VOLATILE:
- case D_COMP_CONST:
- case D_COMP_RESTRICT_THIS:
- case D_COMP_VOLATILE_THIS:
- case D_COMP_CONST_THIS:
- case D_COMP_VENDOR_TYPE_QUAL:
- case D_COMP_POINTER:
- case D_COMP_REFERENCE:
- case D_COMP_COMPLEX:
- case D_COMP_IMAGINARY:
+ case DEMANGLE_COMPONENT_RESTRICT:
+ case DEMANGLE_COMPONENT_VOLATILE:
+ case DEMANGLE_COMPONENT_CONST:
+ case DEMANGLE_COMPONENT_RESTRICT_THIS:
+ case DEMANGLE_COMPONENT_VOLATILE_THIS:
+ case DEMANGLE_COMPONENT_CONST_THIS:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
+ case DEMANGLE_COMPONENT_POINTER:
+ case DEMANGLE_COMPONENT_REFERENCE:
+ case DEMANGLE_COMPONENT_COMPLEX:
+ case DEMANGLE_COMPONENT_IMAGINARY:
{
/* We keep a list of modifiers on the stack. */
struct d_print_mod dpm;
@@ -2895,18 +3080,20 @@ d_print_comp (dpi, dc)
return;
}
- case D_COMP_BUILTIN_TYPE:
+ case DEMANGLE_COMPONENT_BUILTIN_TYPE:
if ((dpi->options & DMGL_JAVA) == 0)
- d_append_string (dpi, dc->u.s_builtin.type->name);
+ d_append_buffer (dpi, dc->u.s_builtin.type->name,
+ dc->u.s_builtin.type->len);
else
- d_append_string (dpi, dc->u.s_builtin.type->java_name);
+ d_append_buffer (dpi, dc->u.s_builtin.type->java_name,
+ dc->u.s_builtin.type->java_len);
return;
- case D_COMP_VENDOR_TYPE:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE:
d_print_comp (dpi, d_left (dc));
return;
- case D_COMP_FUNCTION_TYPE:
+ case DEMANGLE_COMPONENT_FUNCTION_TYPE:
{
if (d_left (dc) != NULL)
{
@@ -2936,7 +3123,7 @@ d_print_comp (dpi, dc)
return;
}
- case D_COMP_ARRAY_TYPE:
+ case DEMANGLE_COMPONENT_ARRAY_TYPE:
{
struct d_print_mod dpm;
@@ -2961,7 +3148,7 @@ d_print_comp (dpi, dc)
return;
}
- case D_COMP_PTRMEM_TYPE:
+ case DEMANGLE_COMPONENT_PTRMEM_TYPE:
{
struct d_print_mod dpm;
@@ -2979,7 +3166,7 @@ d_print_comp (dpi, dc)
{
d_append_char (dpi, ' ');
d_print_comp (dpi, d_left (dc));
- d_append_string (dpi, "::*");
+ d_append_string_constant (dpi, "::*");
}
dpi->modifiers = dpm.next;
@@ -2987,56 +3174,57 @@ d_print_comp (dpi, dc)
return;
}
- case D_COMP_ARGLIST:
- case D_COMP_TEMPLATE_ARGLIST:
+ case DEMANGLE_COMPONENT_ARGLIST:
+ case DEMANGLE_COMPONENT_TEMPLATE_ARGLIST:
d_print_comp (dpi, d_left (dc));
if (d_right (dc) != NULL)
{
- d_append_string (dpi, ", ");
+ d_append_string_constant (dpi, ", ");
d_print_comp (dpi, d_right (dc));
}
return;
- case D_COMP_OPERATOR:
+ case DEMANGLE_COMPONENT_OPERATOR:
{
char c;
- d_append_string (dpi, "operator");
+ d_append_string_constant (dpi, "operator");
c = dc->u.s_operator.op->name[0];
if (IS_LOWER (c))
d_append_char (dpi, ' ');
- d_append_string (dpi, dc->u.s_operator.op->name);
+ d_append_buffer (dpi, dc->u.s_operator.op->name,
+ dc->u.s_operator.op->len);
return;
}
- case D_COMP_EXTENDED_OPERATOR:
- d_append_string (dpi, "operator ");
+ case DEMANGLE_COMPONENT_EXTENDED_OPERATOR:
+ d_append_string_constant (dpi, "operator ");
d_print_comp (dpi, dc->u.s_extended_operator.name);
return;
- case D_COMP_CAST:
- d_append_string (dpi, "operator ");
+ case DEMANGLE_COMPONENT_CAST:
+ d_append_string_constant (dpi, "operator ");
d_print_cast (dpi, dc);
return;
- case D_COMP_UNARY:
- if (d_left (dc)->type != D_COMP_CAST)
+ case DEMANGLE_COMPONENT_UNARY:
+ if (d_left (dc)->type != DEMANGLE_COMPONENT_CAST)
d_print_expr_op (dpi, d_left (dc));
else
{
- d_append_string (dpi, "((");
+ d_append_string_constant (dpi, "((");
d_print_cast (dpi, d_left (dc));
d_append_char (dpi, ')');
}
d_append_char (dpi, '(');
d_print_comp (dpi, d_right (dc));
d_append_char (dpi, ')');
- if (d_left (dc)->type == D_COMP_CAST)
+ if (d_left (dc)->type == DEMANGLE_COMPONENT_CAST)
d_append_char (dpi, ')');
return;
- case D_COMP_BINARY:
- if (d_right (dc)->type != D_COMP_BINARY_ARGS)
+ case DEMANGLE_COMPONENT_BINARY:
+ if (d_right (dc)->type != DEMANGLE_COMPONENT_BINARY_ARGS)
{
d_print_error (dpi);
return;
@@ -3045,64 +3233,66 @@ d_print_comp (dpi, dc)
/* We wrap an expression which uses the greater-than operator in
an extra layer of parens so that it does not get confused
with the '>' which ends the template parameters. */
- if (d_left (dc)->type == D_COMP_OPERATOR
- && strcmp (d_left (dc)->u.s_operator.op->name, ">") == 0)
+ if (d_left (dc)->type == DEMANGLE_COMPONENT_OPERATOR
+ && d_left (dc)->u.s_operator.op->len == 1
+ && d_left (dc)->u.s_operator.op->name[0] == '>')
d_append_char (dpi, '(');
d_append_char (dpi, '(');
d_print_comp (dpi, d_left (d_right (dc)));
- d_append_string (dpi, ") ");
+ d_append_string_constant (dpi, ") ");
d_print_expr_op (dpi, d_left (dc));
- d_append_string (dpi, " (");
+ d_append_string_constant (dpi, " (");
d_print_comp (dpi, d_right (d_right (dc)));
d_append_char (dpi, ')');
- if (d_left (dc)->type == D_COMP_OPERATOR
- && strcmp (d_left (dc)->u.s_operator.op->name, ">") == 0)
+ if (d_left (dc)->type == DEMANGLE_COMPONENT_OPERATOR
+ && d_left (dc)->u.s_operator.op->len == 1
+ && d_left (dc)->u.s_operator.op->name[0] == '>')
d_append_char (dpi, ')');
return;
- case D_COMP_BINARY_ARGS:
- /* We should only see this as part of D_COMP_BINARY. */
+ case DEMANGLE_COMPONENT_BINARY_ARGS:
+ /* We should only see this as part of DEMANGLE_COMPONENT_BINARY. */
d_print_error (dpi);
return;
- case D_COMP_TRINARY:
- if (d_right (dc)->type != D_COMP_TRINARY_ARG1
- || d_right (d_right (dc))->type != D_COMP_TRINARY_ARG2)
+ case DEMANGLE_COMPONENT_TRINARY:
+ if (d_right (dc)->type != DEMANGLE_COMPONENT_TRINARY_ARG1
+ || d_right (d_right (dc))->type != DEMANGLE_COMPONENT_TRINARY_ARG2)
{
d_print_error (dpi);
return;
}
d_append_char (dpi, '(');
d_print_comp (dpi, d_left (d_right (dc)));
- d_append_string (dpi, ") ");
+ d_append_string_constant (dpi, ") ");
d_print_expr_op (dpi, d_left (dc));
- d_append_string (dpi, " (");
+ d_append_string_constant (dpi, " (");
d_print_comp (dpi, d_left (d_right (d_right (dc))));
- d_append_string (dpi, ") : (");
+ d_append_string_constant (dpi, ") : (");
d_print_comp (dpi, d_right (d_right (d_right (dc))));
d_append_char (dpi, ')');
return;
- case D_COMP_TRINARY_ARG1:
- case D_COMP_TRINARY_ARG2:
- /* We should only see these are part of D_COMP_TRINARY. */
+ case DEMANGLE_COMPONENT_TRINARY_ARG1:
+ case DEMANGLE_COMPONENT_TRINARY_ARG2:
+ /* We should only see these are part of DEMANGLE_COMPONENT_TRINARY. */
d_print_error (dpi);
return;
- case D_COMP_LITERAL:
- case D_COMP_LITERAL_NEG:
+ case DEMANGLE_COMPONENT_LITERAL:
+ case DEMANGLE_COMPONENT_LITERAL_NEG:
/* For some builtin types, produce simpler output. */
- if (d_left (dc)->type == D_COMP_BUILTIN_TYPE)
+ if (d_left (dc)->type == DEMANGLE_COMPONENT_BUILTIN_TYPE)
{
switch (d_left (dc)->u.s_builtin.type->print)
{
case D_PRINT_INT:
- if (d_right (dc)->type == D_COMP_NAME)
+ if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME)
{
- if (dc->type == D_COMP_LITERAL_NEG)
+ if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG)
d_append_char (dpi, '-');
d_print_comp (dpi, d_right (dc));
return;
@@ -3110,9 +3300,9 @@ d_print_comp (dpi, dc)
break;
case D_PRINT_LONG:
- if (d_right (dc)->type == D_COMP_NAME)
+ if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME)
{
- if (dc->type == D_COMP_LITERAL_NEG)
+ if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG)
d_append_char (dpi, '-');
d_print_comp (dpi, d_right (dc));
d_append_char (dpi, 'l');
@@ -3121,17 +3311,17 @@ d_print_comp (dpi, dc)
break;
case D_PRINT_BOOL:
- if (d_right (dc)->type == D_COMP_NAME
+ if (d_right (dc)->type == DEMANGLE_COMPONENT_NAME
&& d_right (dc)->u.s_name.len == 1
- && dc->type == D_COMP_LITERAL)
+ && dc->type == DEMANGLE_COMPONENT_LITERAL)
{
switch (d_right (dc)->u.s_name.s[0])
{
case '0':
- d_append_string (dpi, "false");
+ d_append_string_constant (dpi, "false");
return;
case '1':
- d_append_string (dpi, "true");
+ d_append_string_constant (dpi, "true");
return;
default:
break;
@@ -3147,7 +3337,7 @@ d_print_comp (dpi, dc)
d_append_char (dpi, '(');
d_print_comp (dpi, d_left (dc));
d_append_char (dpi, ')');
- if (dc->type == D_COMP_LITERAL_NEG)
+ if (dc->type == DEMANGLE_COMPONENT_LITERAL_NEG)
d_append_char (dpi, '-');
d_print_comp (dpi, d_right (dc));
return;
@@ -3158,64 +3348,58 @@ d_print_comp (dpi, dc)
}
}
-/* Print an identifier. */
+/* Print a Java dentifier. For Java we try to handle encoded extended
+ Unicode characters. The C++ ABI doesn't mention Unicode encoding,
+ so we don't it for C++. Characters are encoded as
+ __U<hex-char>+_. */
static void
-d_print_identifier (dpi, name, len)
+d_print_java_identifier (dpi, name, len)
struct d_print_info *dpi;
const char *name;
int len;
{
- if ((dpi->options & DMGL_JAVA) == 0)
- d_append_buffer (dpi, name, len);
- else
- {
- const char *p;
- const char *end;
+ const char *p;
+ const char *end;
- /* For Java we try to handle encoded extended Unicode
- characters. The C++ ABI doesn't mention Unicode encoding, so
- we don't it for C++. Characters are encoded as
- __U<hex-char>+_. */
- end = name + len;
- for (p = name; p < end; ++p)
+ end = name + len;
+ for (p = name; p < end; ++p)
+ {
+ if (end - p > 3
+ && p[0] == '_'
+ && p[1] == '_'
+ && p[2] == 'U')
{
- if (end - p > 3
- && p[0] == '_'
- && p[1] == '_'
- && p[2] == 'U')
+ unsigned long c;
+ const char *q;
+
+ c = 0;
+ for (q = p + 3; q < end; ++q)
{
- unsigned long c;
- const char *q;
+ int dig;
+
+ if (IS_DIGIT (*q))
+ dig = *q - '0';
+ else if (*q >= 'A' && *q <= 'F')
+ dig = *q - 'A' + 10;
+ else if (*q >= 'a' && *q <= 'f')
+ dig = *q - 'a' + 10;
+ else
+ break;
- c = 0;
- for (q = p + 3; q < end; ++q)
- {
- int dig;
-
- if (IS_DIGIT (*q))
- dig = *q - '0';
- else if (*q >= 'A' && *q <= 'F')
- dig = *q - 'A' + 10;
- else if (*q >= 'a' && *q <= 'f')
- dig = *q - 'a' + 10;
- else
- break;
-
- c = c * 16 + dig;
- }
- /* If the Unicode character is larger than 256, we don't
- try to deal with it here. FIXME. */
- if (q < end && *q == '_' && c < 256)
- {
- d_append_char (dpi, c);
- p = q;
- continue;
- }
+ c = c * 16 + dig;
+ }
+ /* If the Unicode character is larger than 256, we don't try
+ to deal with it here. FIXME. */
+ if (q < end && *q == '_' && c < 256)
+ {
+ d_append_char (dpi, c);
+ p = q;
+ continue;
}
-
- d_append_char (dpi, *p);
}
+
+ d_append_char (dpi, *p);
}
}
@@ -3235,9 +3419,9 @@ d_print_mod_list (dpi, mods, suffix)
if (mods->printed
|| (! suffix
- && (mods->mod->type == D_COMP_RESTRICT_THIS
- || mods->mod->type == D_COMP_VOLATILE_THIS
- || mods->mod->type == D_COMP_CONST_THIS)))
+ && (mods->mod->type == DEMANGLE_COMPONENT_RESTRICT_THIS
+ || mods->mod->type == DEMANGLE_COMPONENT_VOLATILE_THIS
+ || mods->mod->type == DEMANGLE_COMPONENT_CONST_THIS)))
{
d_print_mod_list (dpi, mods->next, suffix);
return;
@@ -3248,18 +3432,49 @@ d_print_mod_list (dpi, mods, suffix)
hold_dpt = dpi->templates;
dpi->templates = mods->templates;
- if (mods->mod->type == D_COMP_FUNCTION_TYPE)
+ if (mods->mod->type == DEMANGLE_COMPONENT_FUNCTION_TYPE)
{
d_print_function_type (dpi, mods->mod, mods->next);
dpi->templates = hold_dpt;
return;
}
- else if (mods->mod->type == D_COMP_ARRAY_TYPE)
+ else if (mods->mod->type == DEMANGLE_COMPONENT_ARRAY_TYPE)
{
d_print_array_type (dpi, mods->mod, mods->next);
dpi->templates = hold_dpt;
return;
}
+ else if (mods->mod->type == DEMANGLE_COMPONENT_LOCAL_NAME)
+ {
+ struct d_print_mod *hold_modifiers;
+ struct demangle_component *dc;
+
+ /* When this is on the modifier stack, we have pulled any
+ qualifiers off the right argument already. Otherwise, we
+ print it as usual, but don't let the left argument see any
+ modifiers. */
+
+ hold_modifiers = dpi->modifiers;
+ dpi->modifiers = NULL;
+ d_print_comp (dpi, d_left (mods->mod));
+ dpi->modifiers = hold_modifiers;
+
+ if ((dpi->options & DMGL_JAVA) == 0)
+ d_append_string_constant (dpi, "::");
+ else
+ d_append_char (dpi, '.');
+
+ dc = d_right (mods->mod);
+ while (dc->type == DEMANGLE_COMPONENT_RESTRICT_THIS
+ || dc->type == DEMANGLE_COMPONENT_VOLATILE_THIS
+ || dc->type == DEMANGLE_COMPONENT_CONST_THIS)
+ dc = d_left (dc);
+
+ d_print_comp (dpi, dc);
+
+ dpi->templates = hold_dpt;
+ return;
+ }
d_print_mod (dpi, mods->mod);
@@ -3273,47 +3488,47 @@ d_print_mod_list (dpi, mods, suffix)
static void
d_print_mod (dpi, mod)
struct d_print_info *dpi;
- const struct d_comp *mod;
+ const struct demangle_component *mod;
{
switch (mod->type)
{
- case D_COMP_RESTRICT:
- case D_COMP_RESTRICT_THIS:
- d_append_string (dpi, " restrict");
+ case DEMANGLE_COMPONENT_RESTRICT:
+ case DEMANGLE_COMPONENT_RESTRICT_THIS:
+ d_append_string_constant (dpi, " restrict");
return;
- case D_COMP_VOLATILE:
- case D_COMP_VOLATILE_THIS:
- d_append_string (dpi, " volatile");
+ case DEMANGLE_COMPONENT_VOLATILE:
+ case DEMANGLE_COMPONENT_VOLATILE_THIS:
+ d_append_string_constant (dpi, " volatile");
return;
- case D_COMP_CONST:
- case D_COMP_CONST_THIS:
- d_append_string (dpi, " const");
+ case DEMANGLE_COMPONENT_CONST:
+ case DEMANGLE_COMPONENT_CONST_THIS:
+ d_append_string_constant (dpi, " const");
return;
- case D_COMP_VENDOR_TYPE_QUAL:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
d_append_char (dpi, ' ');
d_print_comp (dpi, d_right (mod));
return;
- case D_COMP_POINTER:
+ case DEMANGLE_COMPONENT_POINTER:
/* There is no pointer symbol in Java. */
if ((dpi->options & DMGL_JAVA) == 0)
d_append_char (dpi, '*');
return;
- case D_COMP_REFERENCE:
+ case DEMANGLE_COMPONENT_REFERENCE:
d_append_char (dpi, '&');
return;
- case D_COMP_COMPLEX:
- d_append_string (dpi, "complex ");
+ case DEMANGLE_COMPONENT_COMPLEX:
+ d_append_string_constant (dpi, "complex ");
return;
- case D_COMP_IMAGINARY:
- d_append_string (dpi, "imaginary ");
+ case DEMANGLE_COMPONENT_IMAGINARY:
+ d_append_string_constant (dpi, "imaginary ");
return;
- case D_COMP_PTRMEM_TYPE:
+ case DEMANGLE_COMPONENT_PTRMEM_TYPE:
if (d_last_char (dpi) != '(')
d_append_char (dpi, ' ');
d_print_comp (dpi, d_left (mod));
- d_append_string (dpi, "::*");
+ d_append_string_constant (dpi, "::*");
return;
- case D_COMP_TYPED_NAME:
+ case DEMANGLE_COMPONENT_TYPED_NAME:
d_print_comp (dpi, d_left (mod));
return;
default:
@@ -3329,12 +3544,13 @@ d_print_mod (dpi, mod)
static void
d_print_function_type (dpi, dc, mods)
struct d_print_info *dpi;
- const struct d_comp *dc;
+ const struct demangle_component *dc;
struct d_print_mod *mods;
{
int need_paren;
int saw_mod;
struct d_print_mod *p;
+ struct d_print_mod *hold_modifiers;
need_paren = 0;
saw_mod = 0;
@@ -3346,20 +3562,20 @@ d_print_function_type (dpi, dc, mods)
saw_mod = 1;
switch (p->mod->type)
{
- case D_COMP_RESTRICT:
- case D_COMP_VOLATILE:
- case D_COMP_CONST:
- case D_COMP_VENDOR_TYPE_QUAL:
- case D_COMP_POINTER:
- case D_COMP_REFERENCE:
- case D_COMP_COMPLEX:
- case D_COMP_IMAGINARY:
- case D_COMP_PTRMEM_TYPE:
+ case DEMANGLE_COMPONENT_RESTRICT:
+ case DEMANGLE_COMPONENT_VOLATILE:
+ case DEMANGLE_COMPONENT_CONST:
+ case DEMANGLE_COMPONENT_VENDOR_TYPE_QUAL:
+ case DEMANGLE_COMPONENT_POINTER:
+ case DEMANGLE_COMPONENT_REFERENCE:
+ case DEMANGLE_COMPONENT_COMPLEX:
+ case DEMANGLE_COMPONENT_IMAGINARY:
+ case DEMANGLE_COMPONENT_PTRMEM_TYPE:
need_paren = 1;
break;
- case D_COMP_RESTRICT_THIS:
- case D_COMP_VOLATILE_THIS:
- case D_COMP_CONST_THIS:
+ case DEMANGLE_COMPONENT_RESTRICT_THIS:
+ case DEMANGLE_COMPONENT_VOLATILE_THIS:
+ case DEMANGLE_COMPONENT_CONST_THIS:
break;
default:
break;
@@ -3388,6 +3604,9 @@ d_print_function_type (dpi, dc, mods)
d_append_char (dpi, '(');
}
+ hold_modifiers = dpi->modifiers;
+ dpi->modifiers = NULL;
+
d_print_mod_list (dpi, mods, 0);
if (need_paren)
@@ -3401,6 +3620,8 @@ d_print_function_type (dpi, dc, mods)
d_append_char (dpi, ')');
d_print_mod_list (dpi, mods, 1);
+
+ dpi->modifiers = hold_modifiers;
}
/* Print an array type, except for the element type. */
@@ -3408,7 +3629,7 @@ d_print_function_type (dpi, dc, mods)
static void
d_print_array_type (dpi, dc, mods)
struct d_print_info *dpi;
- const struct d_comp *dc;
+ const struct demangle_component *dc;
struct d_print_mod *mods;
{
int need_space;
@@ -3425,7 +3646,7 @@ d_print_array_type (dpi, dc, mods)
if (p->printed)
break;
- if (p->mod->type == D_COMP_ARRAY_TYPE)
+ if (p->mod->type == DEMANGLE_COMPONENT_ARRAY_TYPE)
{
need_space = 0;
break;
@@ -3439,7 +3660,7 @@ d_print_array_type (dpi, dc, mods)
}
if (need_paren)
- d_append_string (dpi, " (");
+ d_append_string_constant (dpi, " (");
d_print_mod_list (dpi, mods, 0);
@@ -3463,10 +3684,11 @@ d_print_array_type (dpi, dc, mods)
static void
d_print_expr_op (dpi, dc)
struct d_print_info *dpi;
- const struct d_comp *dc;
+ const struct demangle_component *dc;
{
- if (dc->type == D_COMP_OPERATOR)
- d_append_string (dpi, dc->u.s_operator.op->name);
+ if (dc->type == DEMANGLE_COMPONENT_OPERATOR)
+ d_append_buffer (dpi, dc->u.s_operator.op->name,
+ dc->u.s_operator.op->len);
else
d_print_comp (dpi, dc);
}
@@ -3476,9 +3698,9 @@ d_print_expr_op (dpi, dc)
static void
d_print_cast (dpi, dc)
struct d_print_info *dpi;
- const struct d_comp *dc;
+ const struct demangle_component *dc;
{
- if (d_left (dc)->type != D_COMP_TEMPLATE)
+ if (d_left (dc)->type != DEMANGLE_COMPONENT_TEMPLATE)
d_print_comp (dpi, d_left (dc));
else
{
@@ -3518,14 +3740,16 @@ d_print_cast (dpi, dc)
/* Initialize the information structure we use to pass around
information. */
-static int
-d_init_info (mangled, options, len, di)
+CP_STATIC_IF_GLIBCPP_V3
+void
+cplus_demangle_init_info (mangled, options, len, di)
const char *mangled;
int options;
size_t len;
struct d_info *di;
{
di->s = mangled;
+ di->send = mangled + len;
di->options = options;
di->n = mangled;
@@ -3534,29 +3758,17 @@ d_init_info (mangled, options, len, di)
the mangled string. Most components correspond directly to
chars, but the ARGLIST types are exceptions. */
di->num_comps = 2 * len;
- di->comps = (struct d_comp *) malloc (di->num_comps
- * sizeof (struct d_comp));
di->next_comp = 0;
/* Similarly, we can not need more substitutions than there are
chars in the mangled string. */
di->num_subs = len;
- di->subs = (struct d_comp **) malloc (di->num_subs
- * sizeof (struct d_comp *));
di->next_sub = 0;
+ di->did_subs = 0;
di->last_name = NULL;
- if (di->comps == NULL || di->subs == NULL)
- {
- if (di->comps != NULL)
- free (di->comps);
- if (di->subs != NULL)
- free (di->subs);
- return 0;
- }
-
- return 1;
+ di->expansion = 0;
}
/* Entry point for the demangler. If MANGLED is a g++ v3 ABI mangled
@@ -3575,7 +3787,8 @@ d_demangle (mangled, options, palc)
size_t len;
int type;
struct d_info di;
- struct d_comp *dc;
+ struct demangle_component *dc;
+ int estimate;
char *ret;
*palc = 0;
@@ -3611,39 +3824,82 @@ d_demangle (mangled, options, palc)
type = 1;
}
- if (! d_init_info (mangled, options, len, &di))
- {
- *palc = 1;
- return NULL;
- }
+ cplus_demangle_init_info (mangled, options, len, &di);
- if (! type)
- dc = d_mangled_name (&di, 1);
- else
- dc = d_type (&di);
+ {
+#ifdef CP_DYNAMIC_ARRAYS
+ __extension__ struct demangle_component comps[di.num_comps];
+ __extension__ struct demangle_component *subs[di.num_subs];
+
+ di.comps = &comps[0];
+ di.subs = &subs[0];
+#else
+ di.comps = ((struct demangle_component *)
+ malloc (di.num_comps * sizeof (struct demangle_component)));
+ di.subs = ((struct demangle_component **)
+ malloc (di.num_subs * sizeof (struct demangle_component *)));
+ if (di.comps == NULL || di.subs == NULL)
+ {
+ if (di.comps != NULL)
+ free (di.comps);
+ if (di.subs != NULL)
+ free (di.subs);
+ *palc = 1;
+ return NULL;
+ }
+#endif
+
+ if (! type)
+ dc = cplus_demangle_mangled_name (&di, 1);
+ else
+ dc = cplus_demangle_type (&di);
- /* If DMGL_PARAMS is set, then if we didn't consume the entire
- mangled string, then we didn't successfully demangle it. If
- DMGL_PARAMS is not set, we didn't look at the trailing
- parameters. */
- if (((options & DMGL_PARAMS) != 0) && d_peek_char (&di) != '\0')
- dc = NULL;
+ /* If DMGL_PARAMS is set, then if we didn't consume the entire
+ mangled string, then we didn't successfully demangle it. If
+ DMGL_PARAMS is not set, we didn't look at the trailing
+ parameters. */
+ if (((options & DMGL_PARAMS) != 0) && d_peek_char (&di) != '\0')
+ dc = NULL;
#ifdef CP_DEMANGLE_DEBUG
- if (dc == NULL)
- printf ("failed demangling\n");
- else
- d_dump (dc, 0);
+ if (dc == NULL)
+ printf ("failed demangling\n");
+ else
+ d_dump (dc, 0);
#endif
- free (di.subs);
- di.subs = NULL;
+ /* We try to guess the length of the demangled string, to minimize
+ calls to realloc during demangling. */
+ estimate = len + di.expansion + 10 * di.did_subs;
+ estimate += estimate / 8;
- ret = NULL;
- if (dc != NULL)
- ret = d_print (options, dc, palc);
+ ret = NULL;
+ if (dc != NULL)
+ ret = cplus_demangle_print (options, dc, estimate, palc);
- free (di.comps);
+#ifndef CP_DYNAMIC_ARRAYS
+ free (di.comps);
+ free (di.subs);
+#endif
+
+#ifdef CP_DEMANGLE_DEBUG
+ if (ret != NULL)
+ {
+ int rlen;
+
+ rlen = strlen (ret);
+ if (rlen > 2 * estimate)
+ printf ("*** Length %d much greater than estimate %d\n",
+ rlen, estimate);
+ else if (rlen > estimate)
+ printf ("*** Length %d greater than estimate %d\n",
+ rlen, estimate);
+ else if (rlen < estimate / 2)
+ printf ("*** Length %d much less than estimate %d\n",
+ rlen, estimate);
+ }
+#endif
+ }
return ret;
}
@@ -3820,53 +4076,78 @@ is_ctor_or_dtor (mangled, ctor_kind, dtor_kind)
enum gnu_v3_dtor_kinds *dtor_kind;
{
struct d_info di;
- struct d_comp *dc;
+ struct demangle_component *dc;
int ret;
*ctor_kind = (enum gnu_v3_ctor_kinds) 0;
*dtor_kind = (enum gnu_v3_dtor_kinds) 0;
- if (! d_init_info (mangled, DMGL_GNU_V3, strlen (mangled), &di))
- return 0;
+ cplus_demangle_init_info (mangled, DMGL_GNU_V3, strlen (mangled), &di);
- dc = d_mangled_name (&di, 1);
+ {
+#ifdef CP_DYNAMIC_ARRAYS
+ __extension__ struct demangle_component comps[di.num_comps];
+ __extension__ struct demangle_component *subs[di.num_subs];
+
+ di.comps = &comps[0];
+ di.subs = &subs[0];
+#else
+ di.comps = ((struct demangle_component *)
+ malloc (di.num_comps * sizeof (struct demangle_component)));
+ di.subs = ((struct demangle_component **)
+ malloc (di.num_subs * sizeof (struct demangle_component *)));
+ if (di.comps == NULL || di.subs == NULL)
+ {
+ if (di.comps != NULL)
+ free (di.comps);
+ if (di.subs != NULL)
+ free (di.subs);
+ return 0;
+ }
+#endif
- /* Note that because we did not pass DMGL_PARAMS, we don't expect to
- demangle the entire string. */
+ dc = cplus_demangle_mangled_name (&di, 1);
- ret = 0;
- while (dc != NULL)
- {
- switch (dc->type)
- {
- default:
- dc = NULL;
- break;
- case D_COMP_TYPED_NAME:
- case D_COMP_TEMPLATE:
- case D_COMP_RESTRICT_THIS:
- case D_COMP_VOLATILE_THIS:
- case D_COMP_CONST_THIS:
- dc = d_left (dc);
- break;
- case D_COMP_QUAL_NAME:
- dc = d_right (dc);
- break;
- case D_COMP_CTOR:
- *ctor_kind = dc->u.s_ctor.kind;
- ret = 1;
- dc = NULL;
- break;
- case D_COMP_DTOR:
- *dtor_kind = dc->u.s_dtor.kind;
- ret = 1;
- dc = NULL;
- break;
- }
- }
+ /* Note that because we did not pass DMGL_PARAMS, we don't expect
+ to demangle the entire string. */
+
+ ret = 0;
+ while (dc != NULL)
+ {
+ switch (dc->type)
+ {
+ default:
+ dc = NULL;
+ break;
+ case DEMANGLE_COMPONENT_TYPED_NAME:
+ case DEMANGLE_COMPONENT_TEMPLATE:
+ case DEMANGLE_COMPONENT_RESTRICT_THIS:
+ case DEMANGLE_COMPONENT_VOLATILE_THIS:
+ case DEMANGLE_COMPONENT_CONST_THIS:
+ dc = d_left (dc);
+ break;
+ case DEMANGLE_COMPONENT_QUAL_NAME:
+ case DEMANGLE_COMPONENT_LOCAL_NAME:
+ dc = d_right (dc);
+ break;
+ case DEMANGLE_COMPONENT_CTOR:
+ *ctor_kind = dc->u.s_ctor.kind;
+ ret = 1;
+ dc = NULL;
+ break;
+ case DEMANGLE_COMPONENT_DTOR:
+ *dtor_kind = dc->u.s_dtor.kind;
+ ret = 1;
+ dc = NULL;
+ break;
+ }
+ }
- free (di.subs);
- free (di.comps);
+#ifndef CP_DYNAMIC_ARRAYS
+ free (di.subs);
+ free (di.comps);
+#endif
+ }
return ret;
}
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index 5e2e7a7126c..f3c4464f184 100644
--- a/libiberty/cplus-dem.c
+++ b/libiberty/cplus-dem.c
@@ -1,6 +1,6 @@
/* Demangler for GNU C++
Copyright 1989, 1991, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Written by James Clark (jjc@jclark.uucp)
Rewritten by Fred Fish (fnf@cygnus.com) for ARM and Lucid demangling
Modified by Satish Pai (pai@apollo.hp.com) for HP demangling
@@ -2318,6 +2318,7 @@ demangle_arm_hp_template (work, mangled, n, declp)
if (HP_DEMANGLING && ((*mangled)[n] == 'X'))
{
char *start_spec_args = NULL;
+ int hold_options;
/* First check for and omit template specialization pseudo-arguments,
such as in "Spec<#1,#1.*>" */
@@ -2330,6 +2331,12 @@ demangle_arm_hp_template (work, mangled, n, declp)
string_init (&arg);
if (work->temp_start == -1) /* non-recursive call */
work->temp_start = declp->p - declp->b;
+
+ /* We want to unconditionally demangle parameter types in
+ template parameters. */
+ hold_options = work->options;
+ work->options |= DMGL_PARAMS;
+
string_append (declp, "<");
while (1)
{
@@ -2376,17 +2383,25 @@ demangle_arm_hp_template (work, mangled, n, declp)
string_delete (&arg);
if (**mangled == '_')
(*mangled)++;
+ work->options = hold_options;
return;
}
/* ARM template? (Also handles HP cfront extensions) */
else if (arm_pt (work, *mangled, n, &p, &args))
{
+ int hold_options;
string type_str;
string_init (&arg);
string_appendn (declp, *mangled, p - *mangled);
if (work->temp_start == -1) /* non-recursive call */
work->temp_start = declp->p - declp->b;
+
+ /* We want to unconditionally demangle parameter types in
+ template parameters. */
+ hold_options = work->options;
+ work->options |= DMGL_PARAMS;
+
string_append (declp, "<");
/* should do error checking here */
while (args < e) {
@@ -2430,7 +2445,10 @@ demangle_arm_hp_template (work, mangled, n, declp)
/* Fail if we didn't make any progress: prevent infinite loop. */
if (args == old_args)
- return;
+ {
+ work->options = hold_options;
+ return;
+ }
}
}
string_appends (declp, &arg);
@@ -2441,6 +2459,7 @@ demangle_arm_hp_template (work, mangled, n, declp)
if (args >= e)
--declp->p; /* remove extra comma */
string_append (declp, ">");
+ work->options = hold_options;
}
else if (n>10 && strncmp (*mangled, "_GLOBAL_", 8) == 0
&& (*mangled)[9] == 'N'
diff --git a/libiberty/getpwd.c b/libiberty/getpwd.c
index f508b1e21e5..31c7d20f307 100644
--- a/libiberty/getpwd.c
+++ b/libiberty/getpwd.c
@@ -35,6 +35,9 @@ extern int errno;
#if HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
+#if HAVE_LIMITS_H
+#include <limits.h>
+#endif
/* Prototype these in case the system headers don't provide them. */
extern char *getpwd ();
diff --git a/libiberty/lbasename.c b/libiberty/lbasename.c
index 43cb73f0a1d..200a87f2387 100644
--- a/libiberty/lbasename.c
+++ b/libiberty/lbasename.c
@@ -40,25 +40,7 @@ and a path ending in @code{/} returns the empty string after it.
#include "ansidecl.h"
#include "libiberty.h"
#include "safe-ctype.h"
-
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-#endif
-
-#if defined (_WIN32) || defined (__MSDOS__) \
- || defined (__DJGPP__) || defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# ifndef DIR_SEPARATOR_2
-# define DIR_SEPARATOR_2 '\\'
-# endif
-#endif
-
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else
-# define IS_DIR_SEPARATOR(ch) \
- (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif
+#include "filenames.h"
const char *
lbasename (name)
diff --git a/libiberty/maint-tool b/libiberty/maint-tool
index 6b9bf7f2cdb..bfc53042247 100644
--- a/libiberty/maint-tool
+++ b/libiberty/maint-tool
@@ -213,6 +213,12 @@ sub locals_first {
sub deps {
+ $crule = "\tif [ x\"\$(PICFLAG)\" != x ]; then \\\n";
+ $crule .= "\t \$(COMPILE.c) \$(PICFLAG) \$< -o pic/\$@; \\\n";
+ $crule .= "\telse true; fi\n";
+ $crule .= "\t\$(COMPILE.c) \$< \$(OUTPUT_OPTION)\n";
+ $crule .= "\n";
+
$incdir = shift @ARGV;
opendir(INC, $incdir);
@@ -260,10 +266,10 @@ sub deps {
@deps = sort { &locals_first($a,$b) } keys %scanned;
$obj = $f;
$obj =~ s/\.c$/.o/;
- $obj = "$obj:";
+ $obj = "./$obj:";
if ($#deps >= 0) {
- print OUT $obj;
- $len = length($obj);
+ print OUT "$obj \$(srcdir)/$f";
+ $len = length("$obj $f");
for $dt (@deps) {
$d = $mine{$dt};
if ($len + length($d) > 70) {
@@ -275,7 +281,12 @@ sub deps {
}
}
print OUT "\n";
+ } else {
+ print OUT "$obj \$(srcdir)/$f\n";
}
+ $c = $crule;
+ $c =~ s@\$\<@\$\(srcdir\)\/$f@g;
+ print OUT $c;
}
}
closedir(S);
diff --git a/libiberty/strdup.c b/libiberty/strdup.c
index 071a4a401af..a3f17d3bcb1 100644
--- a/libiberty/strdup.c
+++ b/libiberty/strdup.c
@@ -22,7 +22,7 @@ extern PTR memcpy PARAMS ((PTR, const PTR, size_t));
char *
strdup(s)
- char *s;
+ const char *s;
{
size_t len = strlen (s) + 1;
char *result = (char*) malloc (len);
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index b39e2f4386b..25e88309b76 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -1,2571 +1,3223 @@
# This file holds test cases for the demangler.
-# Each test consists of three lines in succession.
-# The first line is arguments to pass to the test filter program.
-# The second line is the mangled string.
-# The third line is the expected output.
-# A line starting with `#' is ignore.
-# However blank lines in this file are NOT ignored.
-#
---format=gnu
+# Each test case looks like this:
+# options
+# input to be demangled
+# expected output
+#
+# Supported options:
+# --format=<name> Sets the demangling style.
+# --no-params There are two lines of expected output; the first
+# is with DMGL_PARAMS, the second is without it.
+# --is-v3-ctor Calls is_gnu_v3_mangled_ctor on input; expected
+# output is an integer representing ctor_kind.
+# --is-v3-dtor Likewise, but for dtors.
+#
+# For compatibility, just in case it matters, the options line may be
+# empty, to mean --format=auto. If it doesn't start with --, then it
+# may contain only a format name.
+#
+# A line starting with `#' is ignored.
+# However, blank lines in this file are NOT ignored.
+#
+--format=gnu --no-params
AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue
ivTSolver::AddAlignment(unsigned int, ivInteractor *, ivTGlue *)
+ivTSolver::AddAlignment
#
---format=gnu
+--format=gnu --no-params
ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic
ArrowLine::ArrowheadIntersects(Arrowhead *, BoxObj &, Graphic *)
+ArrowLine::ArrowheadIntersects
#
---format=gnu
+--format=gnu --no-params
AtEnd__13ivRubberGroup
ivRubberGroup::AtEnd(void)
+ivRubberGroup::AtEnd
#
---format=gnu
+--format=gnu --no-params
BgFilter__9ivTSolverP12ivInteractor
ivTSolver::BgFilter(ivInteractor *)
+ivTSolver::BgFilter
#
---format=gnu
+--format=gnu --no-params
Check__6UArrayi
UArray::Check(int)
+UArray::Check
#
---format=gnu
+--format=gnu --no-params
CoreConstDecls__8TextCodeR7ostream
TextCode::CoreConstDecls(ostream &)
+TextCode::CoreConstDecls
#
---format=gnu
+--format=gnu --no-params
Detach__8StateVarP12StateVarView
StateVar::Detach(StateVarView *)
+StateVar::Detach
#
---format=gnu
+--format=gnu --no-params
Done__9ComponentG8Iterator
Component::Done(Iterator)
+Component::Done
#
---format=gnu
+--format=gnu --no-params
Effect__11RelateManipR7ivEvent
RelateManip::Effect(ivEvent &)
+RelateManip::Effect
#
---format=gnu
+--format=gnu --no-params
FindFixed__FRP4CNetP4CNet
FindFixed(CNet *&, CNet *)
+FindFixed
#
---format=gnu
+--format=gnu --no-params
Fix48_abort__FR8twolongs
Fix48_abort(twolongs &)
+Fix48_abort
#
---format=gnu
+--format=gnu --no-params
GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2
iv2_6_VScroller::GetBarInfo(ivPerspective *, int &, int &)
+iv2_6_VScroller::GetBarInfo
#
---format=gnu
+--format=gnu --no-params
GetBgColor__C9ivPainter
ivPainter::GetBgColor(void) const
+ivPainter::GetBgColor
#
---format=gnu
+--format=gnu --no-params
InsertBody__15H_PullrightMenuii
H_PullrightMenu::InsertBody(int, int)
+H_PullrightMenu::InsertBody
#
---format=gnu
+--format=gnu --no-params
InsertCharacter__9TextManipc
TextManip::InsertCharacter(char)
+TextManip::InsertCharacter
#
---format=gnu
+--format=gnu --no-params
InsertToplevel__7ivWorldP12ivInteractorT1
ivWorld::InsertToplevel(ivInteractor *, ivInteractor *)
+ivWorld::InsertToplevel
#
---format=gnu
+--format=gnu --no-params
InsertToplevel__7ivWorldP12ivInteractorT1iiUi
ivWorld::InsertToplevel(ivInteractor *, ivInteractor *, int, int, unsigned int)
+ivWorld::InsertToplevel
#
---format=gnu
+--format=gnu --no-params
IsAGroup__FP11GraphicViewP11GraphicComp
IsAGroup(GraphicView *, GraphicComp *)
+IsAGroup
#
---format=gnu
+--format=gnu --no-params
IsA__10ButtonCodeUl
ButtonCode::IsA(unsigned long)
+ButtonCode::IsA
#
---format=gnu
+--format=gnu --no-params
ReadName__FR7istreamPc
ReadName(istream &, char *)
+ReadName
#
---format=gnu
+--format=gnu --no-params
Redraw__13StringBrowseriiii
StringBrowser::Redraw(int, int, int, int)
+StringBrowser::Redraw
#
---format=gnu
+--format=gnu --no-params
Rotate__13ivTransformerf
ivTransformer::Rotate(float)
+ivTransformer::Rotate
#
---format=gnu
+--format=gnu --no-params
Rotated__C13ivTransformerf
ivTransformer::Rotated(float) const
+ivTransformer::Rotated
#
---format=gnu
+--format=gnu --no-params
Round__Ff
Round(float)
+Round
#
---format=gnu
+--format=gnu --no-params
SetExport__16MemberSharedNameUi
MemberSharedName::SetExport(unsigned int)
+MemberSharedName::SetExport
#
---format=gnu
+--format=gnu --no-params
Set__14ivControlState13ControlStatusUi
ivControlState::Set(ControlStatus, unsigned int)
+ivControlState::Set
#
---format=gnu
+--format=gnu --no-params
Set__5DFacePcii
DFace::Set(char *, int, int)
+DFace::Set
#
---format=gnu
+--format=gnu --no-params
VConvert__9ivTSolverP12ivInteractorRP8TElementT2
ivTSolver::VConvert(ivInteractor *, TElement *&, TElement *&)
+ivTSolver::VConvert
#
---format=gnu
+--format=gnu --no-params
VConvert__9ivTSolverP7ivTGlueRP8TElement
ivTSolver::VConvert(ivTGlue *, TElement *&)
+ivTSolver::VConvert
#
---format=gnu
+--format=gnu --no-params
VOrder__9ivTSolverUiRP12ivInteractorT2
ivTSolver::VOrder(unsigned int, ivInteractor *&, ivInteractor *&)
+ivTSolver::VOrder
#
---format=gnu
+--format=gnu --no-params
_10PageButton$__both
PageButton::__both
+PageButton::__both
#
---format=gnu
+--format=gnu --no-params
_3RNG$singleMantissa
RNG::singleMantissa
+RNG::singleMantissa
#
---format=gnu
+--format=gnu --no-params
_5IComp$_release
IComp::_release
+IComp::_release
#
---format=gnu
+--format=gnu --no-params
_$_10BitmapComp
BitmapComp::~BitmapComp(void)
+BitmapComp::~BitmapComp
#
---format=gnu
+--format=gnu --no-params
_$_9__io_defs
__io_defs::~__io_defs(void)
+__io_defs::~__io_defs
#
---format=gnu
+--format=gnu --no-params
_$_Q23foo3bar
foo::bar::~bar(void)
+foo::bar::~bar
#
---format=gnu
+--format=gnu --no-params
_$_Q33foo3bar4bell
foo::bar::bell::~bell(void)
+foo::bar::bell::~bell
#
---format=gnu
+--format=gnu --no-params
__10ivTelltaleiP7ivGlyph
ivTelltale::ivTelltale(int, ivGlyph *)
+ivTelltale::ivTelltale
#
---format=gnu
+--format=gnu --no-params
__10ivViewportiP12ivInteractorUi
ivViewport::ivViewport(int, ivInteractor *, unsigned int)
+ivViewport::ivViewport
#
---format=gnu
+--format=gnu --no-params
__10ostrstream
ostrstream::ostrstream(void)
+ostrstream::ostrstream
#
---format=gnu
+--format=gnu --no-params
__10ostrstreamPcii
ostrstream::ostrstream(char *, int, int)
+ostrstream::ostrstream
#
---format=gnu
+--format=gnu --no-params
__11BitmapTablei
BitmapTable::BitmapTable(int)
+BitmapTable::BitmapTable
#
---format=gnu
+--format=gnu --no-params
__12ViewportCodeP12ViewportComp
ViewportCode::ViewportCode(ViewportComp *)
+ViewportCode::ViewportCode
#
---format=gnu
+--format=gnu --no-params
__12iv2_6_Borderii
iv2_6_Border::iv2_6_Border(int, int)
+iv2_6_Border::iv2_6_Border
#
---format=gnu
+--format=gnu --no-params
__12ivBreak_Listl
ivBreak_List::ivBreak_List(long)
+ivBreak_List::ivBreak_List
#
---format=gnu
+--format=gnu --no-params
__14iv2_6_MenuItemiP12ivInteractor
iv2_6_MenuItem::iv2_6_MenuItem(int, ivInteractor *)
+iv2_6_MenuItem::iv2_6_MenuItem
#
---format=gnu
+--format=gnu --no-params
__20DisplayList_IteratorR11DisplayList
DisplayList_Iterator::DisplayList_Iterator(DisplayList &)
+DisplayList_Iterator::DisplayList_Iterator
#
---format=gnu
+--format=gnu --no-params
__3fooRT0
foo::foo(foo &)
+foo::foo
#
---format=gnu
+--format=gnu --no-params
__3fooiN31
foo::foo(int, int, int, int)
+foo::foo
#
---format=gnu
+--format=gnu --no-params
__3fooiRT0iT2iT2
foo::foo(int, foo &, int, foo &, int, foo &)
+foo::foo
#
---format=gnu
+--format=gnu --no-params
__6KeyMapPT0
KeyMap::KeyMap(KeyMap *)
+KeyMap::KeyMap
#
---format=gnu
+--format=gnu --no-params
__8ArrowCmdP6EditorUiUi
ArrowCmd::ArrowCmd(Editor *, unsigned int, unsigned int)
+ArrowCmd::ArrowCmd
#
---format=gnu
+--format=gnu --no-params
__9F_EllipseiiiiP7Graphic
F_Ellipse::F_Ellipse(int, int, int, int, Graphic *)
+F_Ellipse::F_Ellipse
#
---format=gnu
+--format=gnu --no-params
__9FrameDataP9FrameCompi
FrameData::FrameData(FrameComp *, int)
+FrameData::FrameData
#
---format=gnu
+--format=gnu --no-params
__9HVGraphicP9CanvasVarP7Graphic
HVGraphic::HVGraphic(CanvasVar *, Graphic *)
+HVGraphic::HVGraphic
#
---format=gnu
+--format=gnu --no-params
__Q23foo3bar
foo::bar::bar(void)
+foo::bar::bar
#
---format=gnu
+--format=gnu --no-params
__Q33foo3bar4bell
foo::bar::bell::bell(void)
+foo::bar::bell::bell
#
---format=gnu
+--format=gnu --no-params
__aa__3fooRT0
foo::operator&&(foo &)
+foo::operator&&
#
---format=gnu
+--format=gnu --no-params
__aad__3fooRT0
foo::operator&=(foo &)
+foo::operator&=
#
---format=gnu
+--format=gnu --no-params
__ad__3fooRT0
foo::operator&(foo &)
+foo::operator&
#
---format=gnu
+--format=gnu --no-params
__adv__3fooRT0
foo::operator/=(foo &)
+foo::operator/=
#
---format=gnu
+--format=gnu --no-params
__aer__3fooRT0
foo::operator^=(foo &)
+foo::operator^=
#
---format=gnu
+--format=gnu --no-params
__als__3fooRT0
foo::operator<<=(foo &)
+foo::operator<<=
#
---format=gnu
+--format=gnu --no-params
__amd__3fooRT0
foo::operator%=(foo &)
+foo::operator%=
#
---format=gnu
+--format=gnu --no-params
__ami__3fooRT0
foo::operator-=(foo &)
+foo::operator-=
#
---format=gnu
+--format=gnu --no-params
__aml__3FixRT0
Fix::operator*=(Fix &)
+Fix::operator*=
#
---format=gnu
+--format=gnu --no-params
__aml__5Fix16i
Fix16::operator*=(int)
+Fix16::operator*=
#
---format=gnu
+--format=gnu --no-params
__aml__5Fix32RT0
Fix32::operator*=(Fix32 &)
+Fix32::operator*=
#
---format=gnu
+--format=gnu --no-params
__aor__3fooRT0
foo::operator|=(foo &)
+foo::operator|=
#
---format=gnu
+--format=gnu --no-params
__apl__3fooRT0
foo::operator+=(foo &)
+foo::operator+=
#
---format=gnu
+--format=gnu --no-params
__ars__3fooRT0
foo::operator>>=(foo &)
+foo::operator>>=
#
---format=gnu
+--format=gnu --no-params
__as__3fooRT0
foo::operator=(foo &)
+foo::operator=
#
---format=gnu
+--format=gnu --no-params
__cl__3fooRT0
foo::operator()(foo &)
+foo::operator()
#
---format=gnu
+--format=gnu --no-params
__cl__6Normal
Normal::operator()(void)
+Normal::operator()
#
---format=gnu
+--format=gnu --no-params
__cl__6Stringii
String::operator()(int, int)
+String::operator()
#
---format=gnu
+--format=gnu --no-params
__cm__3fooRT0
foo::operator, (foo &)
+foo::operator,
#
---format=gnu
+--format=gnu --no-params
__co__3foo
foo::operator~(void)
+foo::operator~
#
---format=gnu
+--format=gnu --no-params
__dl__3fooPv
foo::operator delete(void *)
+foo::operator delete
#
---format=gnu
+--format=gnu --no-params
__dv__3fooRT0
foo::operator/(foo &)
+foo::operator/
#
---format=gnu
+--format=gnu --no-params
__eq__3fooRT0
foo::operator==(foo &)
+foo::operator==
#
---format=gnu
+--format=gnu --no-params
__er__3fooRT0
foo::operator^(foo &)
+foo::operator^
#
---format=gnu
+--format=gnu --no-params
__ge__3fooRT0
foo::operator>=(foo &)
+foo::operator>=
#
---format=gnu
+--format=gnu --no-params
__gt__3fooRT0
foo::operator>(foo &)
+foo::operator>
#
---format=gnu
+--format=gnu --no-params
__le__3fooRT0
foo::operator<=(foo &)
+foo::operator<=
#
---format=gnu
+--format=gnu --no-params
__ls__3fooRT0
foo::operator<<(foo &)
+foo::operator<<
#
---format=gnu
+--format=gnu --no-params
__ls__FR7ostreamPFR3ios_R3ios
operator<<(ostream &, ios &(*)(ios &))
+operator<<
#
---format=gnu
+--format=gnu --no-params
__ls__FR7ostreamR3Fix
operator<<(ostream &, Fix &)
+operator<<
#
---format=gnu
+--format=gnu --no-params
__lt__3fooRT0
foo::operator<(foo &)
+foo::operator<
#
---format=gnu
+--format=gnu --no-params
__md__3fooRT0
foo::operator%(foo &)
+foo::operator%
#
---format=gnu
+--format=gnu --no-params
__mi__3fooRT0
foo::operator-(foo &)
+foo::operator-
#
---format=gnu
+--format=gnu --no-params
__ml__3fooRT0
foo::operator*(foo &)
+foo::operator*
#
---format=gnu
+--format=gnu --no-params
__mm__3fooi
foo::operator--(int)
+foo::operator--
#
---format=gnu
+--format=gnu --no-params
__ne__3fooRT0
foo::operator!=(foo &)
+foo::operator!=
#
---format=gnu
+--format=gnu --no-params
__nt__3foo
foo::operator!(void)
+foo::operator!
#
---format=gnu
+--format=gnu --no-params
__nw__3fooi
foo::operator new(int)
+foo::operator new
#
---format=gnu
+--format=gnu --no-params
__oo__3fooRT0
foo::operator||(foo &)
+foo::operator||
#
---format=gnu
+--format=gnu --no-params
__opPc__3foo
foo::operator char *(void)
+foo::operator char *
#
---format=gnu
+--format=gnu --no-params
__opi__3foo
foo::operator int(void)
+foo::operator int
#
---format=gnu
+--format=gnu --no-params
__or__3fooRT0
foo::operator|(foo &)
+foo::operator|
#
---format=gnu
+--format=gnu --no-params
__pl__3fooRT0
foo::operator+(foo &)
+foo::operator+
#
---format=gnu
+--format=gnu --no-params
__pp__3fooi
foo::operator++(int)
+foo::operator++
#
---format=gnu
+--format=gnu --no-params
__rf__3foo
foo::operator->(void)
+foo::operator->
#
---format=gnu
+--format=gnu --no-params
__rm__3fooRT0
foo::operator->*(foo &)
+foo::operator->*
#
---format=gnu
+--format=gnu --no-params
__rs__3fooRT0
foo::operator>>(foo &)
+foo::operator>>
#
---format=gnu
+--format=gnu --no-params
_new_Fix__FUs
_new_Fix(unsigned short)
+_new_Fix
#
---format=gnu
+--format=gnu --no-params
_vt.foo
foo virtual table
+foo virtual table
#
---format=gnu
+--format=gnu --no-params
_vt.foo.bar
foo::bar virtual table
+foo::bar virtual table
#
---format=gnu
+--format=gnu --no-params
_vt$foo
foo virtual table
+foo virtual table
#
---format=gnu
+--format=gnu --no-params
_vt$foo$bar
foo::bar virtual table
+foo::bar virtual table
#
---format=gnu
+--format=gnu --no-params
append__7ivGlyphPT0
ivGlyph::append(ivGlyph *)
+ivGlyph::append
#
---format=gnu
+--format=gnu --no-params
clearok__FP7_win_sti
clearok(_win_st *, int)
+clearok
#
---format=gnu
+--format=gnu --no-params
complexfunc2__FPFPc_i
complexfunc2(int (*)(char *))
+complexfunc2
#
---format=gnu
+--format=gnu --no-params
complexfunc3__FPFPFPl_s_i
complexfunc3(int (*)(short (*)(long *)))
+complexfunc3
#
---format=gnu
+--format=gnu --no-params
complexfunc4__FPFPFPc_s_i
complexfunc4(int (*)(short (*)(char *)))
+complexfunc4
#
---format=gnu
+--format=gnu --no-params
complexfunc5__FPFPc_PFl_i
complexfunc5(int (*(*)(char *))(long))
+complexfunc5
#
---format=gnu
+--format=gnu --no-params
complexfunc6__FPFPi_PFl_i
complexfunc6(int (*(*)(int *))(long))
+complexfunc6
#
---format=gnu
+--format=gnu --no-params
complexfunc7__FPFPFPc_i_PFl_i
complexfunc7(int (*(*)(int (*)(char *)))(long))
+complexfunc7
#
---format=gnu
+--format=gnu --no-params
foo__FiN30
foo(int, int, int, int)
+foo
#
---format=gnu
+--format=gnu --no-params
foo__FiR3fooiT1iT1
foo(int, foo &, int, foo &, int, foo &)
+foo
#
---format=gnu
+--format=gnu --no-params
foo___3barl
bar::foo_(long)
+bar::foo_
#
---format=gnu
+--format=gnu --no-params
insert__15ivClippingStacklRP8_XRegion
ivClippingStack::insert(long, _XRegion *&)
+ivClippingStack::insert
#
---format=gnu
+--format=gnu --no-params
insert__16ChooserInfo_ListlR11ChooserInfo
ChooserInfo_List::insert(long, ChooserInfo &)
+ChooserInfo_List::insert
#
---format=gnu
+--format=gnu --no-params
insert__17FontFamilyRepListlRP15ivFontFamilyRep
FontFamilyRepList::insert(long, ivFontFamilyRep *&)
+FontFamilyRepList::insert
#
---format=gnu
+--format=gnu --no-params
leaveok__FP7_win_stc
leaveok(_win_st *, char)
+leaveok
#
---format=gnu
+--format=gnu --no-params
left_mover__C7ivMFKitP12ivAdjustableP7ivStyle
ivMFKit::left_mover(ivAdjustable *, ivStyle *) const
+ivMFKit::left_mover
#
---format=gnu
+--format=gnu --no-params
overload1arg__FSc
overload1arg(signed char)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__FUc
overload1arg(unsigned char)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__FUi
overload1arg(unsigned int)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__FUl
overload1arg(unsigned long)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__FUs
overload1arg(unsigned short)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__Fc
overload1arg(char)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__Fd
overload1arg(double)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__Ff
overload1arg(float)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__Fi
overload1arg(int)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__Fl
overload1arg(long)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__Fs
overload1arg(short)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overload1arg__Fv
overload1arg(void)
+overload1arg
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fi
overloadargs(int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fii
overloadargs(int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fiii
overloadargs(int, int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fiiii
overloadargs(int, int, int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fiiiii
overloadargs(int, int, int, int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fiiiiii
overloadargs(int, int, int, int, int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fiiiiiii
overloadargs(int, int, int, int, int, int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fiiiiiiii
overloadargs(int, int, int, int, int, int, int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fiiiiiiiii
overloadargs(int, int, int, int, int, int, int, int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fiiiiiiiiii
overloadargs(int, int, int, int, int, int, int, int, int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
overloadargs__Fiiiiiiiiiii
overloadargs(int, int, int, int, int, int, int, int, int, int, int)
+overloadargs
#
---format=gnu
+--format=gnu --no-params
poke__8ivRasterUlUlffff
ivRaster::poke(unsigned long, unsigned long, float, float, float, float)
+ivRaster::poke
#
---format=gnu
+--format=gnu --no-params
polar__Fdd
polar(double, double)
+polar
#
---format=gnu
+--format=gnu --no-params
scale__13ivTransformerff
ivTransformer::scale(float, float)
+ivTransformer::scale
#
---format=gnu
+--format=gnu --no-params
sgetn__7filebufPci
filebuf::sgetn(char *, int)
+filebuf::sgetn
#
---format=gnu
+--format=gnu --no-params
shift__FP5_FrepiT0
shift(_Frep *, int, _Frep *)
+shift
#
---format=gnu
+--format=gnu --no-params
test__C6BitSeti
BitSet::test(int) const
+BitSet::test
#
---format=gnu
+--format=gnu --no-params
test__C6BitSetii
BitSet::test(int, int) const
+BitSet::test
#
---format=gnu
+--format=gnu --no-params
text_source__8Documentl
Document::text_source(long)
+Document::text_source
#
---format=gnu
+--format=gnu --no-params
variance__6Erlangd
Erlang::variance(double)
+Erlang::variance
#
---format=gnu
+--format=gnu --no-params
view__14DocumentViewerP8ItemViewP11TabularItem
DocumentViewer::view(ItemView *, TabularItem *)
+DocumentViewer::view
#
---format=gnu
+--format=gnu --no-params
xy_extents__11ivExtensionffff
ivExtension::xy_extents(float, float, float, float)
+ivExtension::xy_extents
#
---format=gnu
+--format=gnu --no-params
zero__8osMemoryPvUi
osMemory::zero(void *, unsigned int)
+osMemory::zero
#
---format=gnu
+--format=gnu --no-params
_2T4$N
T4::N
+T4::N
#
---format=gnu
+--format=gnu --no-params
_Q22T42t1$N
T4::t1::N
+T4::t1::N
#
---format=gnu
+--format=gnu --no-params
get__2T1
T1::get(void)
+T1::get
#
---format=gnu
+--format=gnu --no-params
get__Q22T11a
T1::a::get(void)
+T1::a::get
#
---format=gnu
+--format=gnu --no-params
get__Q32T11a1b
T1::a::b::get(void)
+T1::a::b::get
#
---format=gnu
+--format=gnu --no-params
get__Q42T11a1b1c
T1::a::b::c::get(void)
+T1::a::b::c::get
#
---format=gnu
+--format=gnu --no-params
get__Q52T11a1b1c1d
T1::a::b::c::d::get(void)
+T1::a::b::c::d::get
#
---format=gnu
+--format=gnu --no-params
put__2T1i
T1::put(int)
+T1::put
#
---format=gnu
+--format=gnu --no-params
put__Q22T11ai
T1::a::put(int)
+T1::a::put
#
---format=gnu
+--format=gnu --no-params
put__Q32T11a1bi
T1::a::b::put(int)
+T1::a::b::put
#
---format=gnu
+--format=gnu --no-params
put__Q42T11a1b1ci
T1::a::b::c::put(int)
+T1::a::b::c::put
#
---format=gnu
+--format=gnu --no-params
put__Q52T11a1b1c1di
T1::a::b::c::d::put(int)
+T1::a::b::c::d::put
#
---format=gnu
+--format=gnu --no-params
bar__3fooPv
foo::bar(void *)
+foo::bar
#
---format=gnu
+--format=gnu --no-params
bar__C3fooPv
foo::bar(void *) const
+foo::bar
#
---format=gnu
+--format=gnu --no-params
__eq__3fooRT0
foo::operator==(foo &)
+foo::operator==
#
---format=gnu
+--format=gnu --no-params
__eq__C3fooR3foo
foo::operator==(foo &) const
+foo::operator==
#
---format=gnu
+--format=gnu --no-params
elem__t6vector1Zdi
vector<double>::elem(int)
+vector<double>::elem
#
---format=gnu
+--format=gnu --no-params
elem__t6vector1Zii
vector<int>::elem(int)
+vector<int>::elem
#
---format=gnu
+--format=gnu --no-params
__t6vector1Zdi
vector<double>::vector(int)
+vector<double>::vector
#
---format=gnu
+--format=gnu --no-params
__t6vector1Zii
vector<int>::vector(int)
+vector<int>::vector
#
---format=gnu
+--format=gnu --no-params
_$_t6vector1Zdi
vector<double>::~vector(int)
+vector<double>::~vector
#
---format=gnu
+--format=gnu --no-params
_$_t6vector1Zii
vector<int>::~vector(int)
+vector<int>::~vector
#
---format=gnu
+--format=gnu --no-params
__nw__t2T11ZcUi
T1<char>::operator new(unsigned int)
+T1<char>::operator new
#
---format=gnu
+--format=gnu --no-params
__nw__t2T11Z1tUi
T1<t>::operator new(unsigned int)
+T1<t>::operator new
#
---format=gnu
+--format=gnu --no-params
__dl__t2T11ZcPv
T1<char>::operator delete(void *)
+T1<char>::operator delete
#
---format=gnu
+--format=gnu --no-params
__dl__t2T11Z1tPv
T1<t>::operator delete(void *)
+T1<t>::operator delete
#
---format=gnu
+--format=gnu --no-params
__t2T11Zci
T1<char>::T1(int)
+T1<char>::T1
#
---format=gnu
+--format=gnu --no-params
__t2T11Zc
T1<char>::T1(void)
+T1<char>::T1
#
---format=gnu
+--format=gnu --no-params
__t2T11Z1ti
T1<t>::T1(int)
+T1<t>::T1
#
---format=gnu
+--format=gnu --no-params
__t2T11Z1t
T1<t>::T1(void)
+T1<t>::T1
#
---format=gnu
+--format=gnu --no-params
__Q2t4List1Z10VHDLEntity3Pix
List<VHDLEntity>::Pix::Pix(void)
+List<VHDLEntity>::Pix::Pix
#
---format=gnu
+--format=gnu --no-params
__Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element
List<VHDLEntity>::Pix::Pix(List<VHDLEntity>::element *)
+List<VHDLEntity>::Pix::Pix
#
---format=gnu
+--format=gnu --no-params
__Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix
List<VHDLEntity>::Pix::Pix(List<VHDLEntity>::Pix const &)
+List<VHDLEntity>::Pix::Pix
#
---format=gnu
+--format=gnu --no-params
__Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0
List<VHDLEntity>::element::element(VHDLEntity const &, List<VHDLEntity>::element *)
+List<VHDLEntity>::element::element
#
---format=gnu
+--format=gnu --no-params
__Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element
List<VHDLEntity>::element::element(List<VHDLEntity>::element const &)
+List<VHDLEntity>::element::element
#
---format=gnu
+--format=gnu --no-params
__cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
VHDLLibrary::operator()(PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >) const
+VHDLLibrary::operator()
#
---format=gnu
+--format=gnu --no-params
__cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix
List<VHDLEntity>::operator()(List<VHDLEntity>::Pix const &) const
+List<VHDLEntity>::operator()
#
---format=gnu
+--format=gnu --no-params
__ne__FPvRCQ2t4List1Z10VHDLEntity3Pix
operator!=(void *, List<VHDLEntity>::Pix const &)
+operator!=
#
---format=gnu
+--format=gnu --no-params
__ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
operator!=(void *, PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> > const &)
+operator!=
#
---format=gnu
+--format=gnu --no-params
__t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity
List<VHDLEntity>::List(List<VHDLEntity> const &)
+List<VHDLEntity>::List
#
---format=gnu
+--format=gnu --no-params
__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX(void)
+PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX
#
---format=gnu
+--format=gnu --no-params
__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix
PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX(VHDLLibraryRep *, List<VHDLEntity>::Pix)
+PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX
#
---format=gnu
+--format=gnu --no-params
__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX(PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> > const &)
+PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX
#
---format=gnu
+--format=gnu --no-params
nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
VHDLLibrary::nextE(PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> > &) const
+VHDLLibrary::nextE
#
---format=gnu
+--format=gnu --no-params
next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix
List<VHDLEntity>::next(List<VHDLEntity>::Pix &) const
+List<VHDLEntity>::next
#
---format=gnu
+--format=gnu --no-params
_GLOBAL_$D$set
global destructors keyed to set
+global destructors keyed to set
#
---format=gnu
+--format=gnu --no-params
_GLOBAL_$I$set
global constructors keyed to set
+global constructors keyed to set
#
---format=gnu
+--format=gnu --no-params
__as__t5ListS1ZUiRCt5ListS1ZUi
ListS<unsigned int>::operator=(ListS<unsigned int> const &)
+ListS<unsigned int>::operator=
#
---format=gnu
+--format=gnu --no-params
__cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix
ListS<unsigned int>::operator()(ListS<unsigned int>::Vix const &) const
+ListS<unsigned int>::operator()
#
---format=gnu
+--format=gnu --no-params
__cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix
SetLS<unsigned int>::operator()(SetLS<unsigned int>::Vix const &) const
+SetLS<unsigned int>::operator()
#
---format=gnu
+--format=gnu --no-params
__t10ListS_link1ZUiRCUiPT0
ListS_link<unsigned int>::ListS_link(unsigned int const &, ListS_link<unsigned int> *)
+ListS_link<unsigned int>::ListS_link
#
---format=gnu
+--format=gnu --no-params
__t10ListS_link1ZUiRCt10ListS_link1ZUi
ListS_link<unsigned int>::ListS_link(ListS_link<unsigned int> const &)
+ListS_link<unsigned int>::ListS_link
#
---format=gnu
+--format=gnu --no-params
__t5ListS1ZUiRCt5ListS1ZUi
ListS<unsigned int>::ListS(ListS<unsigned int> const &)
+ListS<unsigned int>::ListS
#
---format=gnu
+--format=gnu --no-params
next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix
ListS<unsigned int>::next(ListS<unsigned int>::Vix &) const
+ListS<unsigned int>::next
#
---format=gnu
+--format=gnu --no-params
__ne__FPvRCQ2t5SetLS1ZUi3Vix
operator!=(void *, SetLS<unsigned int>::Vix const &)
+operator!=
#
---format=gnu
+--format=gnu --no-params
__t8ListElem1Z5LabelRt4List1Z5Label
ListElem<Label>::ListElem(List<Label> &)
+ListElem<Label>::ListElem
#
---format=gnu
+--format=gnu --no-params
__t8BDDHookV1ZPcRCPc
BDDHookV<char *>::BDDHookV(char *const &)
+BDDHookV<char *>::BDDHookV
#
---format=gnu
+--format=gnu --no-params
_vt$t8BDDHookV1ZPc
BDDHookV<char *> virtual table
+BDDHookV<char *> virtual table
#
---format=gnu
+--format=gnu --no-params
__ne__FPvRCQ211BDDFunction4VixB
operator!=(void *, BDDFunction::VixB const &)
+operator!=
#
---format=gnu
+--format=gnu --no-params
__eq__FPvRCQ211BDDFunction4VixB
operator==(void *, BDDFunction::VixB const &)
+operator==
#
---format=gnu
+--format=gnu --no-params
relativeId__CQ36T_phi210T_preserve8FPC_nextRCQ26T_phi210T_preserveRC10Parameters
T_phi2::T_preserve::FPC_next::relativeId(T_phi2::T_preserve const &, Parameters const &) const
+T_phi2::T_preserve::FPC_next::relativeId
#
---format=lucid
+--format=lucid --no-params
WS__FR7istream
WS(istream &)
+WS
#
---format=lucid
+--format=lucid --no-params
__aa__3fooFR3foo
foo::operator&&(foo &)
+foo::operator&&
#
---format=lucid
+--format=lucid --no-params
__aad__3fooFR3foo
foo::operator&=(foo &)
+foo::operator&=
#
---format=lucid
+--format=lucid --no-params
__ad__3fooFR3foo
foo::operator&(foo &)
+foo::operator&
#
---format=lucid
+--format=lucid --no-params
__adv__3fooFR3foo
foo::operator/=(foo &)
+foo::operator/=
#
---format=lucid
+--format=lucid --no-params
__adv__7complexF7complex
complex::operator/=(complex)
+complex::operator/=
#
---format=lucid
+--format=lucid --no-params
__aer__3fooFR3foo
foo::operator^=(foo &)
+foo::operator^=
#
---format=lucid
+--format=lucid --no-params
__als__3fooFR3foo
foo::operator<<=(foo &)
+foo::operator<<=
#
---format=lucid
+--format=lucid --no-params
__amd__3fooFR3foo
foo::operator%=(foo &)
+foo::operator%=
#
---format=lucid
+--format=lucid --no-params
__ami__3fooFR3foo
foo::operator-=(foo &)
+foo::operator-=
#
---format=lucid
+--format=lucid --no-params
__amu__3fooFR3foo
foo::operator*=(foo &)
+foo::operator*=
#
---format=lucid
+--format=lucid --no-params
__amu__7complexF7complex
complex::operator*=(complex)
+complex::operator*=
#
---format=lucid
+--format=lucid --no-params
__aor__3fooFR3foo
foo::operator|=(foo &)
+foo::operator|=
#
---format=lucid
+--format=lucid --no-params
__apl__3fooFR3foo
foo::operator+=(foo &)
+foo::operator+=
#
---format=lucid
+--format=lucid --no-params
__ars__3fooFR3foo
foo::operator>>=(foo &)
+foo::operator>>=
#
---format=lucid
+--format=lucid --no-params
__as__18istream_withassignFP9streambuf
istream_withassign::operator=(streambuf *)
+istream_withassign::operator=
#
---format=lucid
+--format=lucid --no-params
__as__18istream_withassignFR7istream
istream_withassign::operator=(istream &)
+istream_withassign::operator=
#
---format=lucid
+--format=lucid --no-params
__as__3fooFR3foo
foo::operator=(foo &)
+foo::operator=
#
---format=lucid
+--format=lucid --no-params
__as__3iosFR3ios
ios::operator=(ios &)
+ios::operator=
#
---format=lucid
+--format=lucid --no-params
__cl__3fooFR3foo
foo::operator()(foo &)
+foo::operator()
#
---format=lucid
+--format=lucid --no-params
__cm__3fooFR3foo
foo::operator, (foo &)
+foo::operator,
#
---format=lucid
+--format=lucid --no-params
__co__3fooFv
foo::operator~(void)
+foo::operator~
#
---format=lucid
+--format=lucid --no-params
__ct__10istrstreamFPc
istrstream::istrstream(char *)
+istrstream::istrstream
#
---format=lucid
+--format=lucid --no-params
__ct__10istrstreamFPci
istrstream::istrstream(char *, int)
+istrstream::istrstream
#
---format=lucid
+--format=lucid --no-params
__ct__10ostrstreamFPciT2
ostrstream::ostrstream(char *, int, int)
+ostrstream::ostrstream
#
---format=lucid
+--format=lucid --no-params
__ct__10ostrstreamFv
ostrstream::ostrstream(void)
+ostrstream::ostrstream
#
---format=lucid
+--format=lucid --no-params
__ct__10smanip_intFPFR3iosi_R3iosi
smanip_int::smanip_int(ios &(*)(ios &, int), int)
+smanip_int::smanip_int
#
---format=lucid
+--format=lucid --no-params
__ct__11fstreambaseFi
fstreambase::fstreambase(int)
+fstreambase::fstreambase
#
---format=lucid
+--format=lucid --no-params
__ct__11fstreambaseFiPcT1
fstreambase::fstreambase(int, char *, int)
+fstreambase::fstreambase
#
---format=lucid
+--format=lucid --no-params
__ct__11fstreambaseFv
fstreambase::fstreambase(void)
+fstreambase::fstreambase
#
---format=lucid
+--format=lucid --no-params
__ct__11smanip_longFPFR3iosl_R3iosl
smanip_long::smanip_long(ios &(*)(ios &, long), long)
+smanip_long::smanip_long
#
---format=lucid
+--format=lucid --no-params
__ct__11stdiostreamFP4FILE
stdiostream::stdiostream(FILE *)
+stdiostream::stdiostream
#
---format=lucid
+--format=lucid --no-params
__ct__12strstreambufFPFl_PvPFPv_v
strstreambuf::strstreambuf(void *(*)(long), void (*)(void *))
+strstreambuf::strstreambuf
#
---format=lucid
+--format=lucid --no-params
__ct__12strstreambufFPUciT1
strstreambuf::strstreambuf(unsigned char *, int, unsigned char *)
+strstreambuf::strstreambuf
#
---format=lucid
+--format=lucid --no-params
__ct__12strstreambufFPciT1
strstreambuf::strstreambuf(char *, int, char *)
+strstreambuf::strstreambuf
#
---format=lucid
+--format=lucid --no-params
__ct__12strstreambufFi
strstreambuf::strstreambuf(int)
+strstreambuf::strstreambuf
#
---format=lucid
+--format=lucid --no-params
__ct__12strstreambufFv
strstreambuf::strstreambuf(void)
+strstreambuf::strstreambuf
#
---format=lucid
+--format=lucid --no-params
__ct__13strstreambaseFPciT1
strstreambase::strstreambase(char *, int, char *)
+strstreambase::strstreambase
#
---format=lucid
+--format=lucid --no-params
__ct__3fooFR3foo
foo::foo(foo &)
+foo::foo
#
---format=lucid
+--format=lucid --no-params
__ct__3fooFi
foo::foo(int)
+foo::foo
#
---format=lucid
+--format=lucid --no-params
__ct__3fooFiN31
foo::foo(int, int, int, int)
+foo::foo
#
---format=lucid
+--format=lucid --no-params
__ct__3fooFiR3fooT1T2T1T2
foo::foo(int, foo &, int, foo &, int, foo &)
+foo::foo
#
---format=lucid
+--format=lucid --no-params
__ct__3iosFP9streambuf
ios::ios(streambuf *)
+ios::ios
#
---format=lucid
+--format=lucid --no-params
__ct__7filebufFiPcT1
filebuf::filebuf(int, char *, int)
+filebuf::filebuf
#
---format=lucid
+--format=lucid --no-params
__ct__7fstreamFiPcT1
fstream::fstream(int, char *, int)
+fstream::fstream
#
---format=lucid
+--format=lucid --no-params
__ct__7istreamFP9streambuf
istream::istream(streambuf *)
+istream::istream
#
---format=lucid
+--format=lucid --no-params
__ct__7istreamFP9streambufiP7ostream
istream::istream(streambuf *, int, ostream *)
+istream::istream
#
---format=lucid
+--format=lucid --no-params
__ct__7istreamFiPcT1
istream::istream(int, char *, int)
+istream::istream
#
---format=lucid
+--format=lucid --no-params
__ct__7istreamFiT1P7ostream
istream::istream(int, int, ostream *)
+istream::istream
#
---format=lucid
+--format=lucid --no-params
__ct__7ostreamFP9streambuf
ostream::ostream(streambuf *)
+ostream::ostream
#
---format=lucid
+--format=lucid --no-params
__ct__7ostreamFiPc
ostream::ostream(int, char *)
+ostream::ostream
#
---format=lucid
+--format=lucid --no-params
__ct__8ifstreamFiPcT1
ifstream::ifstream(int, char *, int)
+ifstream::ifstream
#
---format=lucid
+--format=lucid --no-params
__ct__Q23foo3barFv
foo::bar::bar(void)
+foo::bar::bar
#
---format=lucid
+--format=lucid --no-params
__ct__Q33foo3bar4bellFv
foo::bar::bell::bell(void)
+foo::bar::bell::bell
#
---format=lucid
+--format=lucid --no-params
__dl__3fooSFPv
foo::operator delete(void *) static
+foo::operator delete
#
---format=lucid
+--format=lucid --no-params
__dl__FPv
operator delete(void *)
+operator delete
#
---format=lucid
+--format=lucid --no-params
__dt__10istrstreamFv
istrstream::~istrstream(void)
+istrstream::~istrstream
#
---format=lucid
+--format=lucid --no-params
__dt__Q23foo3barFv
foo::bar::~bar(void)
+foo::bar::~bar
#
---format=lucid
+--format=lucid --no-params
__dt__Q33foo3bar4bellFv
foo::bar::bell::~bell(void)
+foo::bar::bell::~bell
#
---format=lucid
+--format=lucid --no-params
__dv__3fooFR3foo
foo::operator/(foo &)
+foo::operator/
#
---format=lucid
+--format=lucid --no-params
__dv__F7complexT1
operator/(complex, complex)
+operator/
#
---format=lucid
+--format=lucid --no-params
__eq__3fooFR3foo
foo::operator==(foo &)
+foo::operator==
#
---format=lucid
+--format=lucid --no-params
__er__3fooFR3foo
foo::operator^(foo &)
+foo::operator^
#
---format=lucid
+--format=lucid --no-params
__ge__3fooFR3foo
foo::operator>=(foo &)
+foo::operator>=
#
---format=lucid
+--format=lucid --no-params
__gt__3fooFR3foo
foo::operator>(foo &)
+foo::operator>
#
---format=lucid
+--format=lucid --no-params
__le__3fooFR3foo
foo::operator<=(foo &)
+foo::operator<=
#
---format=lucid
+--format=lucid --no-params
__ls__3fooFR3foo
foo::operator<<(foo &)
+foo::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__7ostreamFP9streambuf
ostream::operator<<(streambuf *)
+ostream::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__7ostreamFPFR3ios_R3ios
ostream::operator<<(ios &(*)(ios &))
+ostream::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__7ostreamFPv
ostream::operator<<(void *)
+ostream::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__7ostreamFUi
ostream::operator<<(unsigned int)
+ostream::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__7ostreamFUl
ostream::operator<<(unsigned long)
+ostream::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__7ostreamFd
ostream::operator<<(double)
+ostream::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__7ostreamFf
ostream::operator<<(float)
+ostream::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__7ostreamFi
ostream::operator<<(int)
+ostream::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__7ostreamFl
ostream::operator<<(long)
+ostream::operator<<
#
---format=lucid
+--format=lucid --no-params
__ls__FR7ostream7complex
operator<<(ostream &, complex)
+operator<<
#
---format=lucid
+--format=lucid --no-params
__lt__3fooFR3foo
foo::operator<(foo &)
+foo::operator<
#
---format=lucid
+--format=lucid --no-params
__md__3fooFR3foo
foo::operator%(foo &)
+foo::operator%
#
---format=lucid
+--format=lucid --no-params
__mi__3fooFR3foo
foo::operator-(foo &)
+foo::operator-
#
---format=lucid
+--format=lucid --no-params
__ml__3fooFR3foo
foo::operator*(foo &)
+foo::operator*
#
---format=lucid
+--format=lucid --no-params
__ml__F7complexT1
operator*(complex, complex)
+operator*
#
---format=lucid
+--format=lucid --no-params
__mm__3fooFi
foo::operator--(int)
+foo::operator--
#
---format=lucid
+--format=lucid --no-params
__ne__3fooFR3foo
foo::operator!=(foo &)
+foo::operator!=
#
---format=lucid
+--format=lucid --no-params
__nt__3fooFv
foo::operator!(void)
+foo::operator!
#
---format=lucid
+--format=lucid --no-params
__nw__3fooSFi
foo::operator new(int) static
+foo::operator new
#
---format=lucid
+--format=lucid --no-params
__nw__FUi
operator new(unsigned int)
+operator new
#
---format=lucid
+--format=lucid --no-params
__nw__FUiPv
operator new(unsigned int, void *)
+operator new
#
---format=lucid
+--format=lucid --no-params
__oo__3fooFR3foo
foo::operator||(foo &)
+foo::operator||
#
---format=lucid
+--format=lucid --no-params
__opPc__3fooFv
foo::operator char *(void)
+foo::operator char *
#
---format=lucid
+--format=lucid --no-params
__opi__3fooFv
foo::operator int(void)
+foo::operator int
#
---format=lucid
+--format=lucid --no-params
__or__3fooFR3foo
foo::operator|(foo &)
+foo::operator|
#
---format=lucid
+--format=lucid --no-params
__pl__3fooFR3foo
foo::operator+(foo &)
+foo::operator+
#
---format=lucid
+--format=lucid --no-params
__pp__3fooFi
foo::operator++(int)
+foo::operator++
#
---format=lucid
+--format=lucid --no-params
__pt__3fooFv
foo::operator->(void)
+foo::operator->
#
---format=lucid
+--format=lucid --no-params
__rm__3fooFR3foo
foo::operator->*(foo &)
+foo::operator->*
#
---format=lucid
+--format=lucid --no-params
__rs__3fooFR3foo
foo::operator>>(foo &)
+foo::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFP9streambuf
istream::operator>>(streambuf *)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFPFR3ios_R3ios
istream::operator>>(ios &(*)(ios &))
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFPFR7istream_R7istream
istream::operator>>(istream &(*)(istream &))
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFPUc
istream::operator>>(unsigned char *)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFPc
istream::operator>>(char *)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFRUi
istream::operator>>(unsigned int &)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFRUl
istream::operator>>(unsigned long &)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFRUs
istream::operator>>(unsigned short &)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFRd
istream::operator>>(double &)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFRf
istream::operator>>(float &)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFRi
istream::operator>>(int &)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFRl
istream::operator>>(long &)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__7istreamFRs
istream::operator>>(short &)
+istream::operator>>
#
---format=lucid
+--format=lucid --no-params
__rs__FR7istreamR7complex
operator>>(istream &, complex &)
+operator>>
#
---format=lucid
+--format=lucid --no-params
__vtbl__10istrstream
istrstream virtual table
+istrstream virtual table
#
---format=lucid
+--format=lucid --no-params
__vtbl__17ostream__iostream__19iostream_withassign
iostream_withassign::ostream__iostream virtual table
+iostream_withassign::ostream__iostream virtual table
#
---format=lucid
+--format=lucid --no-params
__vtbl__3ios
ios virtual table
+ios virtual table
#
---format=lucid
+--format=lucid --no-params
__vtbl__3ios__13strstreambase
strstreambase::ios virtual table
+strstreambase::ios virtual table
#
---format=lucid
+--format=lucid --no-params
abs__F7complex
abs(complex)
+abs
#
---format=lucid
+--format=lucid --no-params
allocate__9streambufFv
streambuf::allocate(void)
+streambuf::allocate
#
---format=lucid
+--format=lucid --no-params
attach__11fstreambaseFi
fstreambase::attach(int)
+fstreambase::attach
#
---format=lucid
+--format=lucid --no-params
bitalloc__3iosSFv
ios::bitalloc(void) static
+ios::bitalloc
#
---format=lucid
+--format=lucid --no-params
chr__FiT1
chr(int, int)
+chr
#
---format=lucid
+--format=lucid --no-params
complex_error__FR11c_exception
complex_error(c_exception &)
+complex_error
#
---format=lucid
+--format=lucid --no-params
complexfunc2__FPFPc_i
complexfunc2(int (*)(char *))
+complexfunc2
#
---format=lucid
+--format=lucid --no-params
complexfunc3__FPFPFPl_s_i
complexfunc3(int (*)(short (*)(long *)))
+complexfunc3
#
---format=lucid
+--format=lucid --no-params
complexfunc4__FPFPFPc_s_i
complexfunc4(int (*)(short (*)(char *)))
+complexfunc4
#
---format=lucid
+--format=lucid --no-params
complexfunc5__FPFPc_PFl_i
complexfunc5(int (*(*)(char *))(long))
+complexfunc5
#
---format=lucid
+--format=lucid --no-params
complexfunc6__FPFPi_PFl_i
complexfunc6(int (*(*)(int *))(long))
+complexfunc6
#
---format=lucid
+--format=lucid --no-params
complexfunc7__FPFPFPc_i_PFl_i
complexfunc7(int (*(*)(int (*)(char *)))(long))
+complexfunc7
#
---format=lucid
+--format=lucid --no-params
complicated_put__7ostreamFc
ostream::complicated_put(char)
+ostream::complicated_put
#
---format=lucid
+--format=lucid --no-params
conv10__FlPc
conv10(long, char *)
+conv10
#
---format=lucid
+--format=lucid --no-params
conv16__FUlPc
conv16(unsigned long, char *)
+conv16
#
---format=lucid
+--format=lucid --no-params
dec__FR3ios
dec(ios &)
+dec
#
---format=lucid
+--format=lucid --no-params
dec__Fli
dec(long, int)
+dec
#
---format=lucid
+--format=lucid --no-params
dofield__FP7ostreamPciT2T3
dofield(ostream *, char *, int, char *, int)
+dofield
#
---format=lucid
+--format=lucid --no-params
flags__3iosFl
ios::flags(long)
+ios::flags
#
---format=lucid
+--format=lucid --no-params
flags__3iosFv
ios::flags(void)
+ios::flags
#
---format=lucid
+--format=lucid --no-params
foo__FiN31
foo(int, int, int, int)
+foo
#
---format=lucid
+--format=lucid --no-params
foo__FiR3fooT1T2T1T2
foo(int, foo &, int, foo &, int, foo &)
+foo
#
---format=lucid
+--format=lucid --no-params
foo___3barFl
bar::foo_(long)
+bar::foo_
#
---format=lucid
+--format=lucid --no-params
get__7istreamFPcic
istream::get(char *, int, char)
+istream::get
#
---format=lucid
+--format=lucid --no-params
get__7istreamFR9streambufc
istream::get(streambuf &, char)
+istream::get
#
---format=lucid
+--format=lucid --no-params
get_complicated__7istreamFRUc
istream::get_complicated(unsigned char &)
+istream::get_complicated
#
---format=lucid
+--format=lucid --no-params
get_complicated__7istreamFRc
istream::get_complicated(char &)
+istream::get_complicated
#
---format=lucid
+--format=lucid --no-params
getline__7istreamFPUcic
istream::getline(unsigned char *, int, char)
+istream::getline
#
---format=lucid
+--format=lucid --no-params
getline__7istreamFPcic
istream::getline(char *, int, char)
+istream::getline
#
---format=lucid
+--format=lucid --no-params
ignore__7istreamFiT1
istream::ignore(int, int)
+istream::ignore
#
---format=lucid
+--format=lucid --no-params
init__12strstreambufFPciT1
strstreambuf::init(char *, int, char *)
+strstreambuf::init
#
---format=lucid
+--format=lucid --no-params
init__3iosFP9streambuf
ios::init(streambuf *)
+ios::init
#
---format=lucid
+--format=lucid --no-params
initcount__13Iostream_init
Iostream_init::initcount
+Iostream_init::initcount
#
---format=lucid
+--format=lucid --no-params
ipfx__7istreamFi
istream::ipfx(int)
+istream::ipfx
#
---format=lucid
+--format=lucid --no-params
ls_complicated__7ostreamFUc
ostream::ls_complicated(unsigned char)
+ostream::ls_complicated
#
---format=lucid
+--format=lucid --no-params
ls_complicated__7ostreamFc
ostream::ls_complicated(char)
+ostream::ls_complicated
#
---format=lucid
+--format=lucid --no-params
overload1arg__FSc
overload1arg(signed char)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__FUc
overload1arg(unsigned char)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__FUi
overload1arg(unsigned int)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__FUl
overload1arg(unsigned long)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__FUs
overload1arg(unsigned short)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__Fc
overload1arg(char)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__Fd
overload1arg(double)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__Ff
overload1arg(float)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__Fi
overload1arg(int)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__Fl
overload1arg(long)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__Fs
overload1arg(short)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overload1arg__Fv
overload1arg(void)
+overload1arg
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiN21
overloadargs(int, int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiN31
overloadargs(int, int, int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiN41
overloadargs(int, int, int, int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiN51
overloadargs(int, int, int, int, int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiN61
overloadargs(int, int, int, int, int, int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiN71
overloadargs(int, int, int, int, int, int, int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiN81
overloadargs(int, int, int, int, int, int, int, int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiN91
overloadargs(int, int, int, int, int, int, int, int, int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiN91N11
overloadargs(int, int, int, int, int, int, int, int, int, int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
overloadargs__FiT1
overloadargs(int, int)
+overloadargs
#
---format=lucid
+--format=lucid --no-params
polar__FdT1
polar(double, double)
+polar
#
---format=lucid
+--format=lucid --no-params
pow__F7complexT1
pow(complex, complex)
+pow
#
---format=lucid
+--format=lucid --no-params
pow__F7complexd
pow(complex, double)
+pow
#
---format=lucid
+--format=lucid --no-params
pow__F7complexi
pow(complex, int)
+pow
#
---format=lucid
+--format=lucid --no-params
pow__Fd7complex
pow(double, complex)
+pow
#
---format=lucid
+--format=lucid --no-params
pstart__FPciT2
pstart(char *, int, int)
+pstart
#
---format=lucid
+--format=lucid --no-params
put__7ostreamFc
ostream::put(char)
+ostream::put
#
---format=lucid
+--format=lucid --no-params
read__7istreamFPci
istream::read(char *, int)
+istream::read
#
---format=lucid
+--format=lucid --no-params
resetiosflags__FR3iosl
resetiosflags(ios &, long)
+resetiosflags
#
---format=lucid
+--format=lucid --no-params
restore_errno__FRi
restore_errno(int &)
+restore_errno
#
---format=lucid
+--format=lucid --no-params
rs_complicated__7istreamFRUc
istream::rs_complicated(unsigned char &)
+istream::rs_complicated
#
---format=lucid
+--format=lucid --no-params
rs_complicated__7istreamFRc
istream::rs_complicated(char &)
+istream::rs_complicated
#
---format=lucid
+--format=lucid --no-params
seekg__7istreamFl8seek_dir
istream::seekg(long, seek_dir)
+istream::seekg
#
---format=lucid
+--format=lucid --no-params
seekoff__12strstreambufFl8seek_diri
strstreambuf::seekoff(long, seek_dir, int)
+strstreambuf::seekoff
#
---format=lucid
+--format=lucid --no-params
seekoff__9streambufFlQ2_3ios12ios_seek_diri
streambuf::seekoff(long, ios::ios_seek_dir, int)
+streambuf::seekoff
#
---format=lucid
+--format=lucid --no-params
seekpos__9streambufFli
streambuf::seekpos(long, int)
+streambuf::seekpos
#
---format=lucid
+--format=lucid --no-params
set_new_handler__FPFv_v
set_new_handler(void (*)(void))
+set_new_handler
#
---format=lucid
+--format=lucid --no-params
setb__9streambufFPcT1i
streambuf::setb(char *, char *, int)
+streambuf::setb
#
---format=lucid
+--format=lucid --no-params
setb__FR3iosi
setb(ios &, int)
+setb
#
---format=lucid
+--format=lucid --no-params
setbuf__11fstreambaseFPci
fstreambase::setbuf(char *, int)
+fstreambase::setbuf
#
---format=lucid
+--format=lucid --no-params
setbuf__9streambufFPUci
streambuf::setbuf(unsigned char *, int)
+streambuf::setbuf
#
---format=lucid
+--format=lucid --no-params
setbuf__9streambufFPciT2
streambuf::setbuf(char *, int, int)
+streambuf::setbuf
#
---format=lucid
+--format=lucid --no-params
setf__3iosFlT1
ios::setf(long, long)
+ios::setf
#
---format=lucid
+--format=lucid --no-params
setfill__FR3iosi
setfill(ios &, int)
+setfill
#
---format=lucid
+--format=lucid --no-params
setg__9streambufFPcN21
streambuf::setg(char *, char *, char *)
+streambuf::setg
#
---format=lucid
+--format=lucid --no-params
setp__9streambufFPcT1
streambuf::setp(char *, char *)
+streambuf::setp
#
---format=lucid
+--format=lucid --no-params
tie__3iosFP7ostream
ios::tie(ostream *)
+ios::tie
#
---format=lucid
+--format=lucid --no-params
uconv10__FUlPc
uconv10(unsigned long, char *)
+uconv10
#
---format=lucid
+--format=lucid --no-params
xget__7istreamFPc
istream::xget(char *)
+istream::xget
#
---format=lucid
+--format=lucid --no-params
xsgetn__9streambufFPci
streambuf::xsgetn(char *, int)
+streambuf::xsgetn
#
---format=arm
+--format=arm --no-params
__dt__21T5__pt__11_PFiPPdPv_iFv
T5<int (*)(int, double **, void *)>::~T5(void)
+T5<int (*)(int, double **, void *)>::~T5
#
---format=arm
+--format=arm --no-params
__ct__1cFi
c::c(int)
+c::c
#
---format=arm
+--format=arm --no-params
__dt__11T5__pt__2_iFv
T5<int>::~T5(void)
+T5<int>::~T5
#
---format=arm
+--format=arm --no-params
__dt__11T5__pt__2_cFv
T5<char>::~T5(void)
+T5<char>::~T5
#
---format=arm
+--format=arm --no-params
__ct__2T2Fi
T2::T2(int)
+T2::T2
#
---format=arm
+--format=arm --no-params
__dt__2T1Fv
T1::~T1(void)
+T1::~T1
#
---format=arm
+--format=arm --no-params
__dt__12T5__pt__3_1xFv
T5<x>::~T5(void)
+T5<x>::~T5
#
---format=arm
+--format=arm --no-params
__dt__17T5__pt__8_PFcPv_iFv
T5<int (*)(char, void *)>::~T5(void)
+T5<int (*)(char, void *)>::~T5
#
---format=arm
+--format=arm --no-params
__ct__21T5__pt__11_PFiPPdPv_iFi
T5<int (*)(int, double **, void *)>::T5(int)
+T5<int (*)(int, double **, void *)>::T5
#
---format=arm
+--format=arm --no-params
__amd__FR2T2i
operator%=(T2 &, int)
+operator%=
#
---format=arm
+--format=arm --no-params
__adv__FR2T2i
operator/=(T2 &, int)
+operator/=
#
---format=arm
+--format=arm --no-params
__amu__FR2T2i
operator*=(T2 &, int)
+operator*=
#
---format=arm
+--format=arm --no-params
__ami__FR2T2i
operator-=(T2 &, int)
+operator-=
#
---format=arm
+--format=arm --no-params
__apl__FR2T2i
operator+=(T2 &, int)
+operator+=
#
---format=arm
+--format=arm --no-params
__nw__2T1SFUi
T1::operator new(unsigned int) static
+T1::operator new
#
---format=arm
+--format=arm --no-params
__dl__2T1SFPv
T1::operator delete(void *) static
+T1::operator delete
#
---format=arm
+--format=arm --no-params
put__2T7SFi
T7::put(int) static
+T7::put
#
---format=arm
+--format=arm --no-params
__dl__12T5__pt__3_1xSFPv
T5<x>::operator delete(void *) static
+T5<x>::operator delete
#
---format=arm
+--format=arm --no-params
h__FUc
h(unsigned char)
+h
#
---format=arm
+--format=arm --no-params
f__Fic
f(int, char)
+f
#
---format=arm
+--format=arm --no-params
h__FUi
h(unsigned int)
+h
#
---format=arm
+--format=arm --no-params
h__Fci
h(char, int)
+h
#
---format=arm
+--format=arm --no-params
h__FUl
h(unsigned long)
+h
#
---format=arm
+--format=arm --no-params
h__Fcl
h(char, long)
+h
#
---format=arm
+--format=arm --no-params
h__FUs
h(unsigned short)
+h
#
---format=arm
+--format=arm --no-params
h__Fcs
h(char, short)
+h
#
---format=arm
+--format=arm --no-params
X__12T5__pt__3_1x
T5<x>::X
+T5<x>::X
#
---format=arm
+--format=arm --no-params
__ct__11T5__pt__2_iFi
T5<int>::T5(int)
+T5<int>::T5
#
---format=arm
+--format=arm --no-params
__ct__11T5__pt__2_cFi
T5<char>::T5(int)
+T5<char>::T5
#
---format=arm
+--format=arm --no-params
h__FcT1
h(char, char)
+h
#
---format=arm
+--format=arm --no-params
f__Ficd
f(int, char, double)
+f
#
---format=arm
+--format=arm --no-params
__dl__17T5__pt__8_PFcPv_iSFPv
T5<int (*)(char, void *)>::operator delete(void *) static
+T5<int (*)(char, void *)>::operator delete
#
---format=arm
+--format=arm --no-params
X__17T5__pt__8_PFcPv_i
T5<int (*)(char, void *)>::X
+T5<int (*)(char, void *)>::X
#
---format=arm
+--format=arm --no-params
__ct__12T5__pt__3_1xFi
T5<x>::T5(int)
+T5<x>::T5
#
---format=arm
+--format=arm --no-params
__dl__21T5__pt__11_PFiPPdPv_iSFPv
T5<int (*)(int, double **, void *)>::operator delete(void *) static
+T5<int (*)(int, double **, void *)>::operator delete
#
---format=arm
+--format=arm --no-params
__std__foo
global destructors keyed to foo
+global destructors keyed to foo
#
---format=arm
+--format=arm --no-params
__sti__bar
global constructors keyed to bar
+global constructors keyed to bar
#
---format=arm
+--format=arm --no-params
f__FicdPcPFci_v
f(int, char, double, char *, void (*)(char, int))
+f
#
---format=arm
+--format=arm --no-params
f__FicdPcPFic_v
f(int, char, double, char *, void (*)(int, char))
+f
#
---format=arm
+--format=arm --no-params
get__2T7SFv
T7::get(void) static
+T7::get
#
---format=arm
+--format=arm --no-params
X__21T5__pt__11_PFiPPdPv_i
T5<int (*)(int, double **, void *)>::X
+T5<int (*)(int, double **, void *)>::X
#
---format=arm
+--format=arm --no-params
__dl__11T5__pt__2_iSFPv
T5<int>::operator delete(void *) static
+T5<int>::operator delete
#
---format=arm
+--format=arm --no-params
__dl__11T5__pt__2_cSFPv
T5<char>::operator delete(void *) static
+T5<char>::operator delete
#
---format=arm
+--format=arm --no-params
h__Fc
h(char)
+h
#
---format=arm
+--format=arm --no-params
h__Fd
h(double)
+h
#
---format=arm
+--format=arm --no-params
h__Ff
h(float)
+h
#
---format=arm
+--format=arm --no-params
h__Fi
h(int)
+h
#
---format=arm
+--format=arm --no-params
f__Fi
f(int)
+f
#
---format=arm
+--format=arm --no-params
h__Fl
h(long)
+h
#
---format=arm
+--format=arm --no-params
h__Fs
h(short)
+h
#
---format=arm
+--format=arm --no-params
X__11T5__pt__2_c
T5<char>::X
+T5<char>::X
#
---format=arm
+--format=arm --no-params
X__11T5__pt__2_i
T5<int>::X
+T5<int>::X
#
---format=arm
+--format=arm --no-params
__ct__17T5__pt__8_PFcPv_iFi
T5<int (*)(char, void *)>::T5(int)
+T5<int (*)(char, void *)>::T5
#
---format=arm
+--format=arm --no-params
f__FicdPc
f(int, char, double, char *)
+f
#
---format=arm
+--format=arm --no-params
__nw__FUi
operator new(unsigned int)
+operator new
#
---format=arm
+--format=arm --no-params
__ct__Q3_2T11a1bSFi
T1::a::b::b(int) static
+T1::a::b::b
#
---format=arm
+--format=arm --no-params
__dt__Q3_2T11a1bSFi
T1::a::b::~b(int) static
+T1::a::b::~b
#
---format=arm
+--format=arm --no-params
put__Q3_2T11a1bSFi
T1::a::b::put(int) static
+T1::a::b::put
#
---format=arm
+--format=arm --no-params
get__Q2_2T11aSFv
T1::a::get(void) static
+T1::a::get
#
---format=arm
+--format=arm --no-params
put__2T1SFi
T1::put(int) static
+T1::put
#
---format=arm
+--format=arm --no-params
put__Q5_2T11a1b1c1dSFi
T1::a::b::c::d::put(int) static
+T1::a::b::c::d::put
#
---format=arm
+--format=arm --no-params
get__Q4_2T11a1b1cSFv
T1::a::b::c::get(void) static
+T1::a::b::c::get
#
---format=arm
+--format=arm --no-params
put__Q2_2T11aSFi
T1::a::put(int) static
+T1::a::put
#
---format=arm
+--format=arm --no-params
put__Q4_2T11a1b1cSFi
T1::a::b::c::put(int) static
+T1::a::b::c::put
#
---format=arm
+--format=arm --no-params
get__Q3_2T11a1bSFv
T1::a::b::get(void) static
+T1::a::b::get
#
---format=arm
+--format=arm --no-params
get__2T1SFv
T1::get(void) static
+T1::get
#
---format=arm
+--format=arm --no-params
get__Q5_2T11a1b1c1dSFv
T1::a::b::c::d::get(void) static
+T1::a::b::c::d::get
#
---format=arm
+--format=arm --no-params
__dt__11T1__pt__2_cFv
T1<char>::~T1(void)
+T1<char>::~T1
#
---format=arm
+--format=arm --no-params
__dt__12T1__pt__3_1tFv
T1<t>::~T1(void)
+T1<t>::~T1
#
---format=arm
+--format=arm --no-params
__dl__12T1__pt__3_1tSFPv
T1<t>::operator delete(void *) static
+T1<t>::operator delete
#
---format=arm
+--format=arm --no-params
__ct__11T1__pt__2_cFi
T1<char>::T1(int)
+T1<char>::T1
#
---format=arm
+--format=arm --no-params
__ct__11T1__pt__2_cFv
T1<char>::T1(void)
+T1<char>::T1
#
---format=arm
+--format=arm --no-params
__ct__12T1__pt__3_1tFi
T1<t>::T1(int)
+T1<t>::T1
#
---format=arm
+--format=arm --no-params
__ct__12T1__pt__3_1tFv
T1<t>::T1(void)
+T1<t>::T1
#
---format=arm
+--format=arm --no-params
__dl__11T1__pt__2_cSFPv
T1<char>::operator delete(void *) static
+T1<char>::operator delete
#
---format=arm
+--format=arm --no-params
bar__3fooFPv
foo::bar(void *)
+foo::bar
#
---format=arm
+--format=arm --no-params
bar__3fooCFPv
foo::bar(void *) const
+foo::bar
#
---format=arm
+--format=arm --no-params
__eq__3fooFR3foo
foo::operator==(foo &)
+foo::operator==
#
---format=arm
+--format=arm --no-params
__eq__3fooCFR3foo
foo::operator==(foo &) const
+foo::operator==
#
---format=arm
+--format=arm --no-params
elem__15vector__pt__2_dFi
vector<double>::elem(int)
+vector<double>::elem
#
---format=arm
+--format=arm --no-params
elem__15vector__pt__2_iFi
vector<int>::elem(int)
+vector<int>::elem
#
---format=arm
+--format=arm --no-params
__ct__15vector__pt__2_dFi
vector<double>::vector(int)
+vector<double>::vector
#
---format=arm
+--format=arm --no-params
__ct__15vector__pt__2_iFi
vector<int>::vector(int)
+vector<int>::vector
#
---format=arm
+--format=arm --no-params
__ct__25DListNode__pt__9_R6RLabelFR6RLabelP25DListNode__pt__9_R6RLabelT2
DListNode<RLabel &>::DListNode(RLabel &, DListNode<RLabel &> *, DListNode<RLabel &> *)
+DListNode<RLabel &>::DListNode
#
---format=arm
+--format=arm --no-params
bar__3fooFiT16FooBar
foo::bar(int, int, FooBar)
+foo::bar
#
---format=arm
+--format=arm --no-params
bar__3fooFPiN51PdN37PcN211T1iN215
foo::bar(int *, int *, int *, int *, int *, int *, double *, double *, double *, double *, char *, char *, char *, int *, int, int, int)
+foo::bar
#
---format=hp
+--format=hp --no-params
__amd__FR2T2i
operator%=(T2 &, int)
+operator%=
#
---format=hp
+--format=hp --no-params
__adv__FR2T2i
operator/=(T2 &, int)
+operator/=
#
---format=hp
+--format=hp --no-params
__amu__FR2T2i
operator*=(T2 &, int)
+operator*=
#
---format=hp
+--format=hp --no-params
__ami__FR2T2i
operator-=(T2 &, int)
+operator-=
#
---format=hp
+--format=hp --no-params
__apl__FR2T2i
operator+=(T2 &, int)
+operator+=
#
---format=hp
+--format=hp --no-params
__nw__2T1SFUi
T1::operator new(unsigned int) static
+T1::operator new
#
---format=hp
+--format=hp --no-params
__dl__2T1SFPv
T1::operator delete(void *) static
+T1::operator delete
#
---format=hp
+--format=hp --no-params
put__2T7SFi
T7::put(int) static
+T7::put
#
---format=hp
+--format=hp --no-params
h__FUc
h(unsigned char)
+h
#
---format=hp
+--format=hp --no-params
f__Fic
f(int, char)
+f
#
---format=hp
+--format=hp --no-params
h__FUi
h(unsigned int)
+h
#
---format=hp
+--format=hp --no-params
h__Fci
h(char, int)
+h
#
---format=hp
+--format=hp --no-params
h__FUl
h(unsigned long)
+h
#
---format=hp
+--format=hp --no-params
h__Fcl
h(char, long)
+h
#
---format=hp
+--format=hp --no-params
h__FUs
h(unsigned short)
+h
#
---format=hp
+--format=hp --no-params
h__Fcs
h(char, short)
+h
#
---format=hp
+--format=hp --no-params
h__FcT1
h(char, char)
+h
#
---format=hp
+--format=hp --no-params
f__Ficd
f(int, char, double)
+f
#
---format=hp
+--format=hp --no-params
f__FicdPcPFci_v
f(int, char, double, char *, void (*)(char, int))
+f
#
---format=hp
+--format=hp --no-params
f__FicdPcPFic_v
f(int, char, double, char *, void (*)(int, char))
+f
#
---format=hp
+--format=hp --no-params
get__2T7SFv
T7::get(void) static
+T7::get
#
---format=hp
+--format=hp --no-params
h__Fc
h(char)
+h
#
---format=hp
+--format=hp --no-params
h__Fd
h(double)
+h
#
---format=hp
+--format=hp --no-params
h__Ff
h(float)
+h
#
---format=hp
+--format=hp --no-params
h__Fi
h(int)
+h
#
---format=hp
+--format=hp --no-params
f__Fi
f(int)
+f
#
---format=hp
+--format=hp --no-params
h__Fl
h(long)
+h
#
---format=hp
+--format=hp --no-params
h__Fs
h(short)
+h
#
---format=hp
+--format=hp --no-params
f__FicdPc
f(int, char, double, char *)
+f
#
---format=hp
+--format=hp --no-params
__nw__FUi
operator new(unsigned int)
+operator new
#
---format=hp
+--format=hp --no-params
__ct__Q3_2T11a1bSFi
T1::a::b::b(int) static
+T1::a::b::b
#
---format=hp
+--format=hp --no-params
__dt__Q3_2T11a1bSFi
T1::a::b::~b(int) static
+T1::a::b::~b
#
---format=hp
+--format=hp --no-params
put__Q3_2T11a1bSFi
T1::a::b::put(int) static
+T1::a::b::put
#
---format=hp
+--format=hp --no-params
get__Q2_2T11aSFv
T1::a::get(void) static
+T1::a::get
#
---format=hp
+--format=hp --no-params
put__2T1SFi
T1::put(int) static
+T1::put
#
---format=hp
+--format=hp --no-params
put__Q5_2T11a1b1c1dSFi
T1::a::b::c::d::put(int) static
+T1::a::b::c::d::put
#
---format=hp
+--format=hp --no-params
get__Q4_2T11a1b1cSFv
T1::a::b::c::get(void) static
+T1::a::b::c::get
#
---format=hp
+--format=hp --no-params
put__Q2_2T11aSFi
T1::a::put(int) static
+T1::a::put
#
---format=hp
+--format=hp --no-params
put__Q4_2T11a1b1cSFi
T1::a::b::c::put(int) static
+T1::a::b::c::put
#
---format=hp
+--format=hp --no-params
get__Q3_2T11a1bSFv
T1::a::b::get(void) static
+T1::a::b::get
#
---format=hp
+--format=hp --no-params
get__2T1SFv
T1::get(void) static
+T1::get
#
---format=hp
+--format=hp --no-params
get__Q5_2T11a1b1c1dSFv
T1::a::b::c::d::get(void) static
+T1::a::b::c::d::get
#
---format=hp
+--format=hp --no-params
bar__3fooFPv
foo::bar(void *)
+foo::bar
#
---format=hp
+--format=hp --no-params
bar__3fooCFPv
foo::bar(void *) const
+foo::bar
#
---format=hp
+--format=hp --no-params
__eq__3fooFR3foo
foo::operator==(foo &)
+foo::operator==
#
---format=hp
+--format=hp --no-params
__eq__3fooCFR3foo
foo::operator==(foo &) const
+foo::operator==
#
---format=hp
+--format=hp --no-params
bar__3fooFiT16FooBar
foo::bar(int, int, FooBar)
+foo::bar
#
---format=hp
+--format=hp --no-params
bar__3fooFPiN51PdN37PcN211T1iN215
foo::bar(int *, int *, int *, int *, int *, int *, double *, double *, double *, double *, char *, char *, char *, int *, int, int, int)
+foo::bar
#
---format=hp
+--format=hp --no-params
__dt__2T5XTPFiPPdPv_i__Fv
T5<int (*)(int, double **, void *)>::~T5(void)
+T5<int (*)(int, double **, void *)>::~T5
#
---format=hp
+--format=hp --no-params
__ct__1cFi
c::c(int)
+c::c
#
---format=hp
+--format=hp --no-params
__dt__2T5XTi__Fv
T5<int>::~T5(void)
+T5<int>::~T5
#
---format=hp
+--format=hp --no-params
__dt__2T5XTc__Fv
T5<char>::~T5(void)
+T5<char>::~T5
#
---format=hp
+--format=hp --no-params
__ct__2T2Fi
T2::T2(int)
+T2::T2
#
---format=hp
+--format=hp --no-params
__dt__2T1Fv
T1::~T1(void)
+T1::~T1
#
---format=hp
+--format=hp --no-params
__dt__2T5XT1x__Fv
T5<x>::~T5(void)
+T5<x>::~T5
#
---format=hp
+--format=hp --no-params
__dt__2T5XTPFcPv_i__Fv
T5<int (*)(char, void *)>::~T5(void)
+T5<int (*)(char, void *)>::~T5
#
---format=hp
+--format=hp --no-params
__ct__2T5XTPFiPPdPv_i__Fi
T5<int (*)(int, double **, void *)>::T5(int)
+T5<int (*)(int, double **, void *)>::T5
#
---format=hp
+--format=hp --no-params
__dl__2T5XT1x__SFPv
T5<x>::operator delete(void *) static
+T5<x>::operator delete
#
---format=hp
+--format=hp --no-params
X__2T5XT1x
T5<x>::X
+T5<x>::X
#
---format=hp
+--format=hp --no-params
__ct__2T5XTi__Fi
T5<int>::T5(int)
+T5<int>::T5
#
---format=hp
+--format=hp --no-params
__ct__2T5XTc__Fi
T5<char>::T5(int)
+T5<char>::T5
#
---format=hp
+--format=hp --no-params
__dl__2T5XTPFcPv_i__SFPv
T5<int (*)(char, void *)>::operator delete(void *) static
+T5<int (*)(char, void *)>::operator delete
#
---format=hp
+--format=hp --no-params
X__2T5XTPFcPv_i
T5<int (*)(char, void *)>::X
+T5<int (*)(char, void *)>::X
#
---format=hp
+--format=hp --no-params
__ct__2T5XT1x__Fi
T5<x>::T5(int)
+T5<x>::T5
#
---format=hp
+--format=hp --no-params
__dl__2T5XTPFiPPdPv_i__SFPv
T5<int (*)(int, double **, void *)>::operator delete(void *) static
+T5<int (*)(int, double **, void *)>::operator delete
#
---format=hp
+--format=hp --no-params
X__2T5XTPFiPPdPv_i
T5<int (*)(int, double **, void *)>::X
+T5<int (*)(int, double **, void *)>::X
#
---format=hp
+--format=hp --no-params
__dl__2T5XTi__SFPv
T5<int>::operator delete(void *) static
+T5<int>::operator delete
#
---format=hp
+--format=hp --no-params
__dl__2T5XTc__SFPv
T5<char>::operator delete(void *) static
+T5<char>::operator delete
#
---format=hp
+--format=hp --no-params
X__2T5XTc
T5<char>::X
+T5<char>::X
#
---format=hp
+--format=hp --no-params
X__2T5XTi
T5<int>::X
+T5<int>::X
#
---format=hp
+--format=hp --no-params
__ct__2T5XTPFcPv_i__Fi
T5<int (*)(char, void *)>::T5(int)
+T5<int (*)(char, void *)>::T5
#
---format=hp
+--format=hp --no-params
__dt__2T1XTc__Fv
T1<char>::~T1(void)
+T1<char>::~T1
#
---format=hp
+--format=hp --no-params
__dt__2T1XT1t__Fv
T1<t>::~T1(void)
+T1<t>::~T1
#
---format=hp
+--format=hp --no-params
__dl__2T1XT1t__SFPv
T1<t>::operator delete(void *) static
+T1<t>::operator delete
#
---format=hp
+--format=hp --no-params
__ct__2T1XTc__Fi
T1<char>::T1(int)
+T1<char>::T1
#
---format=hp
+--format=hp --no-params
__ct__2T1XTc__Fv
T1<char>::T1(void)
+T1<char>::T1
#
---format=hp
+--format=hp --no-params
__ct__2T1XT1t__Fi
T1<t>::T1(int)
+T1<t>::T1
#
---format=hp
+--format=hp --no-params
__ct__2T1XT1t__Fv
T1<t>::T1(void)
+T1<t>::T1
#
---format=hp
+--format=hp --no-params
__dl__2T1XTc__SFPv
T1<char>::operator delete(void *) static
+T1<char>::operator delete
#
---format=hp
+--format=hp --no-params
elem__6vectorXTd__Fi
vector<double>::elem(int)
+vector<double>::elem
#
---format=hp
+--format=hp --no-params
elem__6vectorXTi__Fi
vector<int>::elem(int)
+vector<int>::elem
#
---format=hp
+--format=hp --no-params
__ct__6vectorXTd__Fi
vector<double>::vector(int)
+vector<double>::vector
#
---format=hp
+--format=hp --no-params
__ct__6vectorXTi__Fi
vector<int>::vector(int)
+vector<int>::vector
#
---format=hp
+--format=hp --no-params
__ct__9DListNodeXTR6RLabel__FR6RLabelP9DListNodeXTR6RLabel_T2
DListNode<RLabel &>::DListNode(RLabel &, DListNode<RLabel &> *, DListNode<RLabel &> *)
+DListNode<RLabel &>::DListNode
#
---format=hp
+--format=hp --no-params
elem__6vectorXTiUP34__Fi
vector<int,34U>::elem(int)
+vector<int,34U>::elem
#
---format=hp
+--format=hp --no-params
elem__6vectorXUP2701Td__Fi
vector<2701U,double>::elem(int)
+vector<2701U,double>::elem
#
---format=hp
+--format=hp --no-params
elem__6vectorXTiSP334__Fi
vector<int,334>::elem(int)
+vector<int,334>::elem
#
---format=hp
+--format=hp --no-params
elem__6vectorXTiSN67__Fi
vector<int,-67>::elem(int)
+vector<int,-67>::elem
#
---format=hp
+--format=hp --no-params
elem__6vectorXTiSM__SCFPPd
vector<int,-2147483648>::elem(double **) static const
+vector<int,-2147483648>::elem
#
---format=hp
+--format=hp --no-params
elem__6vectorXTiSN67UP4000TRs__Fi
vector<int,-67,4000U,short &>::elem(int)
+vector<int,-67,4000U,short &>::elem
#
---format=hp
+--format=hp --no-params
elem__6vectorXTiSN67TRdTFPv_i__Fi
vector<int,-67,double &,int (void *)>::elem(int)
+vector<int,-67,double &,int (void *)>::elem
#
---format=hp
+--format=hp --no-params
X__6vectorXTiSN67TdTPvUP5TRs
vector<int,-67,double,void *,5U,short &>::X
+vector<int,-67,double,void *,5U,short &>::X
#
---format=hp
+--format=hp --no-params
elem__6vectorXTiA3foo__Fi
vector<int,&foo>::elem(int)
+vector<int,&foo>::elem
#
---format=hp
+--format=hp --no-params
elem__6vectorXTiA3fooTPvA5Label__FiPPvT2
vector<int,&foo,void *,&Label>::elem(int, void **, void **)
+vector<int,&foo,void *,&Label>::elem
#
---format=hp
+--format=hp --no-params
elem__6vectorXTiSN42A3foo__Fi
vector<int,-42,&foo>::elem(int)
+vector<int,-42,&foo>::elem
#
---format=hp
+--format=hp --no-params
__ct__2T5XTPFcPv_i__Fi_2
T5<int (*)(char, void *)>::T5(int)
+T5<int (*)(char, void *)>::T5
#
---format=hp
+--format=hp --no-params
__ct__2T5XTPFcPv_i__Fi_19
T5<int (*)(char, void *)>::T5(int)
+T5<int (*)(char, void *)>::T5
#
---format=hp
+--format=hp --no-params
f__FicdPcPFci_v_34
f(int, char, double, char *, void (*)(char, int))
+f
#
---format=hp
+--format=hp --no-params
spec__13Spec<#1,#1.*>XTiTPi_FPi
Spec<int,int *>::spec(int *)
+Spec<int,int *>::spec
#
---format=hp
+--format=hp --no-params
spec__16Spec<#1,#1.&,#1>XTiTRiTi_FPi
Spec<int,int &,int>::spec(int *)
+Spec<int,int &,int>::spec
#
---format=hp
+--format=hp --no-params
add__XTc_FcT1
add<char>(char, char)
+add<char>
#
---format=hp
+--format=hp --no-params
add__XTcSP9A5label_FcPPlT1
add<char,9,&label>(char, long **, char)
+add<char,9,&label>
#
---format=hp
+--format=hp --no-params
add__XTPfTFPd_f_FcT1
add<float *,float (double *)>(char, char)
+add<float *,float (double *)>
#
---format=hp
+--format=hp --no-params
unLink__12basic_stringXTcT18string_char_traitsXTc_T9allocator_Fv
basic_string<char,string_char_traits<char>,allocator>::unLink(void)
+basic_string<char,string_char_traits<char>,allocator>::unLink
#
# A regression test with no args. This used to cause a segv.
_Utf390_1__1_9223372036854775807__9223372036854775
_Utf390_1__1_9223372036854775807__9223372036854775
#
---format=gnu
+--format=gnu --no-params
call__H1Z4Test_RX01_t1C2ZX01PMX01FPX01i_vQ2X016output
C<Test, Test::output> call<Test>(Test &)
+C<Test, Test::output> call<Test>
#
---format=gnu
+--format=gnu --no-params
fn__FPQ21n1cPMQ21n1cFPQ21n1c_i
fn(n::c *, int (n::c::*)(n::c *))
+fn
#
---format=gnu
+--format=gnu --no-params
f__FGt3Bar1i2G1i
f(Bar<2>, i)
+f
#
---format=gnu
+--format=gnu --no-params
f__FGt3Bar1i21i
f(Bar<21>, int)
+f
#
---format=gnu
+--format=gnu --no-params
f__FGt3Bar1i2G4XY_t
f(Bar<2>, XY_t)
+f
#
---format=gnu
+--format=gnu --no-params
foo__H1Zt2TA2ZRCiZt2NA1Ui9_X01_i
int foo<TA<int const &, NA<9> > >(TA<int const &, NA<9> >)
+int foo<TA<int const &, NA<9> > >
#
---format=gnu
+--format=gnu --no-params
foo__H1Zt2TA2ZcZt2NA1Ui20_X01_i
int foo<TA<char, NA<20> > >(TA<char, NA<20> >)
+int foo<TA<char, NA<20> > >
#
---format=gnu
+--format=gnu --no-params
foo__H1Zt2TA2ZiZt8N___A___1Ui99_X01_i
int foo<TA<int, N___A___<99> > >(TA<int, N___A___<99> >)
+int foo<TA<int, N___A___<99> > >
#
---format=gnu
+--format=gnu --no-params
foo__H1Zt2TA2ZRCiZt2NA1im1_X01_i
int foo<TA<int const &, NA<-1> > >(TA<int const &, NA<-1> >)
+int foo<TA<int const &, NA<-1> > >
#
---format=gnu
+--format=gnu --no-params
foo__H1Zt2TA2ZRCiZt2NA1im9_X01_i
int foo<TA<int const &, NA<-9> > >(TA<int const &, NA<-9> >)
+int foo<TA<int const &, NA<-9> > >
#
---format=gnu
+--format=gnu --no-params
foo__H1Zt2TA2ZcZt2NA1i_m20__X01_i
int foo<TA<char, NA<-20> > >(TA<char, NA<-20> >)
+int foo<TA<char, NA<-20> > >
#
---format=gnu
+--format=gnu --no-params
foo__H1Zt2TA2ZcZt2NA1im1_X01_i
int foo<TA<char, NA<-1> > >(TA<char, NA<-1> >)
+int foo<TA<char, NA<-1> > >
#
---format=gnu
+--format=gnu --no-params
foo__H1Zt2TA2ZiZt4N__A1im9_X01_i
int foo<TA<int, N__A<-9> > >(TA<int, N__A<-9> >)
+int foo<TA<int, N__A<-9> > >
#
---format=gnu
+--format=gnu --no-params
foo__H1Zt2TA2ZiZt4N__A1i_m99__X01_i
int foo<TA<int, N__A<-99> > >(TA<int, N__A<-99> >)
+int foo<TA<int, N__A<-99> > >
#
---format=gnu
+--format=gnu --no-params
__opi__t2TA2ZiZt4N__A1i9
TA<int, N__A<9> >::operator int(void)
+TA<int, N__A<9> >::operator int
#
---format=gnu
+--format=gnu --no-params
__opi__t2TA2ZiZt8N___A___1i_m99_
TA<int, N___A___<-99> >::operator int(void)
+TA<int, N___A___<-99> >::operator int
#
---format=gnu
+--format=gnu --no-params
foo___bar__baz_____H1Zt2TA2ZiZt8N___A___1i99_X01_i
int foo___bar__baz___<TA<int, N___A___<99> > >(TA<int, N___A___<99> >)
+int foo___bar__baz___<TA<int, N___A___<99> > >
#
---format=gnu
+--format=gnu --no-params
foo__bar___foobar_____t2TA2ZiZt8N___A___1i_m99_
TA<int, N___A___<-99> >::foo__bar___foobar___(void)
+TA<int, N___A___<-99> >::foo__bar___foobar___
#
---format=gnu
+--format=gnu --no-params
foo__bar___foobar_____t2TA2ZiZt4N__A1i9
TA<int, N__A<9> >::foo__bar___foobar___(void)
+TA<int, N__A<9> >::foo__bar___foobar___
#
---format=gnu
+--format=gnu --no-params
__tfP8sockaddr
sockaddr * type_info function
+sockaddr * type_info function
#
---format=gnu
+--format=gnu --no-params
__tfPQ25libcwt16option_event_tct1Z12burst_app_ct
libcw::option_event_tct<burst_app_ct> * type_info function
+libcw::option_event_tct<burst_app_ct> * type_info function
#
---format=gnu
+--format=gnu --no-params
__tiP8sockaddr
sockaddr * type_info node
+sockaddr * type_info node
#
---format=gnu
+--format=gnu --no-params
__tiPQ25libcwt16option_event_tct1Z12burst_app_ct
libcw::option_event_tct<burst_app_ct> * type_info node
+libcw::option_event_tct<burst_app_ct> * type_info node
#
---format=gnu
+--format=gnu --no-params
_27_GLOBAL_.N.__12burst_app_ct.app_instance
{anonymous}::app_instance
+{anonymous}::app_instance
#
---format=gnu
+--format=gnu --no-params
_26_GLOBAL_$N$_tmp_n.iilg4Gya$app_instance
{anonymous}::app_instance
+{anonymous}::app_instance
#
--format=java
_ZN4java3awt10ScrollPane7addImplEPNS0_9ComponentEPNS_4lang6ObjectEi
@@ -2591,330 +3243,486 @@ Prim.i(int, boolean, byte, double, float, char, java.lang.String, short, long)
_ZN4java4util14Map__U24_Entry11class__U24_E
java.util.Map$Entry.class$
#
---format=hp
+--format=java
+_ZN3org7eclipse3cdt5debug8internal4core5model9CVariable6sizeof$Ev
+org.eclipse.cdt.debug.internal.core.model.CVariable.sizeof()
+#
+--format=hp --no-params
+_Utf58_0_1__1_2147483647__2147483648
_Utf58_0_1__1_2147483647__2147483648
_Utf58_0_1__1_2147483647__2147483648
#
---format=gnu-v3
+--format=gnu-v3 --no-params
St9bad_alloc
std::bad_alloc
+std::bad_alloc
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN1f1fE
f::f
+f::f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fv
f()
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fi
f(int)
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3foo3bar
foo(bar)
+foo
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Zrm1XS_
operator%(X, X)
+operator%
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZplR1XS0_
operator+(X&, X&)
+operator+
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZlsRK1XS1_
operator<<(X const&, X const&)
+operator<<
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN3FooIA4_iE3barE
Foo<int [4]>::bar
+Foo<int [4]>::bar
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fIiEvi
void f<int>(int)
+f<int>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z5firstI3DuoEvS0_
void first<Duo>(Duo)
+first<Duo>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z5firstI3DuoEvT_
void first<Duo>(Duo)
+first<Duo>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3fooIiFvdEiEvv
void foo<int, void ()(double), int>()
+foo<int, void ()(double), int>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN1N1fE
N::f
+N::f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN6System5Sound4beepEv
System::Sound::beep()
+System::Sound::beep
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN5Arena5levelE
Arena::level
+Arena::level
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN5StackIiiE5levelE
Stack<int, int>::level
+Stack<int, int>::level
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fI1XEvPVN1AIT_E1TE
void f<X>(A<X>::T volatile*)
+f<X>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZngILi42EEvN1AIXplT_Li2EEE1TE
void operator-<42>(A<(42) + (2)>::T)
+operator-<42>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z4makeI7FactoryiET_IT0_Ev
Factory<int> make<Factory, int>()
+make<Factory, int>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z4makeI7FactoryiET_IT0_Ev
Factory<int> make<Factory, int>()
+make<Factory, int>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3foo5Hello5WorldS0_S_
foo(Hello, World, World, Hello)
+foo
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3fooPM2ABi
foo(int AB::**)
+foo
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZlsRSoRKSs
operator<<(std::ostream&, std::string const&)
+operator<<
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZTI7a_class
typeinfo for a_class
+typeinfo for a_class
#
---format=gnu-v3
+--format=gnu-v3 --no-params
U4_farrVKPi
int* const volatile restrict _far
+int* const volatile restrict _far
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3fooILi2EEvRAplT_Li1E_i
void foo<2>(int (&) [(2) + (1)])
+foo<2>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fM1AKFvvE
f(void (A::*)() const)
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3fooc
foo(char)
+foo
#
---format=gnu-v3
+--format=gnu-v3 --no-params
2CBIL_Z3foocEE
CB<foo(char)>
+CB<foo(char)>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
2CBIL_Z7IsEmptyEE
CB<IsEmpty>
+CB<IsEmpty>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZZN1N1fEiE1p
N::f(int)::p
+N::f(int)::p
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZZN1N1fEiEs
N::f(int)::string literal
+N::f(int)::string literal
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fPFvvEM1SFvvE
f(void (*)(), void (S::*)())
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN1N1TIiiE2mfES0_IddE
N::T<int, int>::mf(N::T<double, double>)
+N::T<int, int>::mf
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZSt5state
std::state
+std::state
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZNSt3_In4wardE
std::_In::ward
+std::_In::ward
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fKPFiiE
f(int (* const)(int))
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fAszL_ZZNK1N1A1fEvE3foo_0E_i
f(int [sizeof (N::A::f() const::foo)])
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fA37_iPS_
f(int [37], int (*) [37])
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fM1AFivEPS0_
f(int (A::*)(), int (*)())
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fPFPA1_ivE
f(int (*(*)()) [1])
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fPKM1AFivE
f(int (A::* const*)())
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1jM1AFivEPS1_
j(int (A::*)(), int (A::**)())
+j
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1sPA37_iPS0_
s(int (*) [37], int (**) [37])
+s
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3fooA30_A_i
foo(int [30][])
+foo
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3kooPA28_A30_i
koo(int (*) [28][30])
+koo
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZlsRKU3fooU4bart1XS0_
operator<<(X bart foo const&, X bart)
+operator<<
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZlsRKU3fooU4bart1XS2_
operator<<(X bart foo const&, X bart foo const)
+operator<<
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fM1AKFivE
f(int (A::*)() const)
+f
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3absILi11EEvv
void abs<11>()
+abs<11>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN1AIfEcvT_IiEEv
A<float>::operator int<int>()
+A<float>::operator int<int>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN12libcw_app_ct10add_optionIS_EEvMT_FvPKcES3_cS3_S3_
void libcw_app_ct::add_option<libcw_app_ct>(void (libcw_app_ct::*)(char const*), char const*, char, char const*, char const*)
+libcw_app_ct::add_option<libcw_app_ct>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZGVN5libcw24_GLOBAL__N_cbll.cc0ZhUKa23compiler_bug_workaroundISt6vectorINS_13omanip_id_tctINS_5debug32memblk_types_manipulator_data_ctEEESaIS6_EEE3idsE
guard variable for libcw::(anonymous namespace)::compiler_bug_workaround<std::vector<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct>, std::allocator<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct> > > >::ids
+guard variable for libcw::(anonymous namespace)::compiler_bug_workaround<std::vector<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct>, std::allocator<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct> > > >::ids
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZN5libcw5debug13cwprint_usingINS_9_private_12GlobalObjectEEENS0_17cwprint_using_tctIT_EERKS5_MS5_KFvRSt7ostreamE
libcw::debug::cwprint_using_tct<libcw::_private_::GlobalObject> libcw::debug::cwprint_using<libcw::_private_::GlobalObject>(libcw::_private_::GlobalObject const&, void (libcw::_private_::GlobalObject::*)(std::ostream&) const)
+libcw::debug::cwprint_using<libcw::_private_::GlobalObject>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZNKSt14priority_queueIP27timer_event_request_base_ctSt5dequeIS1_SaIS1_EE13timer_greaterE3topEv
std::priority_queue<timer_event_request_base_ct*, std::deque<timer_event_request_base_ct*, std::allocator<timer_event_request_base_ct*> >, timer_greater>::top() const
+std::priority_queue<timer_event_request_base_ct*, std::deque<timer_event_request_base_ct*, std::allocator<timer_event_request_base_ct*> >, timer_greater>::top
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZNKSt15_Deque_iteratorIP15memory_block_stRKS1_PS2_EeqERKS5_
std::_Deque_iterator<memory_block_st*, memory_block_st* const&, memory_block_st* const*>::operator==(std::_Deque_iterator<memory_block_st*, memory_block_st* const&, memory_block_st* const*> const&) const
+std::_Deque_iterator<memory_block_st*, memory_block_st* const&, memory_block_st* const*>::operator==
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZNKSt17__normal_iteratorIPK6optionSt6vectorIS0_SaIS0_EEEmiERKS6_
std::__normal_iterator<option const*, std::vector<option, std::allocator<option> > >::operator-(std::__normal_iterator<option const*, std::vector<option, std::allocator<option> > > const&) const
+std::__normal_iterator<option const*, std::vector<option, std::allocator<option> > >::operator-
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZNSbIcSt11char_traitsIcEN5libcw5debug27no_alloc_checking_allocatorEE12_S_constructIPcEES6_T_S7_RKS3_
char* std::basic_string<char, std::char_traits<char>, libcw::debug::no_alloc_checking_allocator>::_S_construct<char*>(char*, char*, libcw::debug::no_alloc_checking_allocator const&)
+std::basic_string<char, std::char_traits<char>, libcw::debug::no_alloc_checking_allocator>::_S_construct<char*>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fI1APS0_PKS0_EvT_T0_T1_PA4_S3_M1CS8_
void f<A, A*, A const*>(A, A*, A const*, A const* (*) [4], A const* (* C::*) [4])
+f<A, A*, A const*>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z3fooiPiPS_PS0_PS1_PS2_PS3_PS4_PS5_PS6_PS7_PS8_PS9_PSA_PSB_PSC_
foo(int, int*, int**, int***, int****, int*****, int******, int*******, int********, int*********, int**********, int***********, int************, int*************, int**************, int***************)
+foo
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZSt1BISt1DIP1ARKS2_PS3_ES0_IS2_RS2_PS2_ES2_ET0_T_SB_SA_PT1_
std::D<A*, A*&, A**> std::B<std::D<A*, A* const&, A* const*>, std::D<A*, A*&, A**>, A*>(std::D<A*, A* const&, A* const*>, std::D<A*, A* const&, A* const*>, std::D<A*, A*&, A**>, A**)
+std::B<std::D<A*, A* const&, A* const*>, std::D<A*, A*&, A**>, A*>
#
---format=gnu-v3
+--format=gnu-v3 --no-params
+_X11TransParseAddress
_X11TransParseAddress
_X11TransParseAddress
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZNSt13_Alloc_traitsISbIcSt18string_char_traitsIcEN5libcw5debug9_private_17allocator_adaptorIcSt24__default_alloc_templateILb0ELi327664EELb1EEEENS5_IS9_S7_Lb1EEEE15_S_instancelessE
std::_Alloc_traits<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, libcw::debug::_private_::allocator_adaptor<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, std::__default_alloc_template<false, 327664>, true> >::_S_instanceless
+std::_Alloc_traits<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, libcw::debug::_private_::allocator_adaptor<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, std::__default_alloc_template<false, 327664>, true> >::_S_instanceless
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_GLOBAL__I__Z2fnv
global constructors keyed to _Z2fnv
+global constructors keyed to _Z2fnv
#
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1rM1GFivEMS_KFivES_M1HFivES1_4whatIKS_E5what2IS8_ES3_
r(int (G::*)(), int (G::*)() const, G, int (H::*)(), int (G::*)(), what<G const>, what2<G const>, int (G::*)() const)
+r
#
# This is from the gdb testsuite gdb.cp/cplusfuncs.exp.
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z10hairyfunc5PFPFilEPcE
hairyfunc5(int (*(*)(char*))(long))
+hairyfunc5
#
# This is from gcc PR 8861
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fILi1ELc120EEv1AIXplT_cviLd810000000000000000703DAD7A370C5EEE
void f<1, 120>(A<(1) + (((int)((double)810000000000000000703DAD7A370C5)))>)
+f<1, 120>
#
# This is also from gcc PR 8861
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fILi1EEv1AIXplT_cvingLf3f800000EEE
void f<1>(A<(1) + (((int)(-((float)3f800000))))>)
+f<1>
#
# This is from a libstdc++ debug mode patch.
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZNK11__gnu_debug16_Error_formatter14_M_format_wordImEEvPciPKcT_
void __gnu_debug::_Error_formatter::_M_format_word<unsigned long>(char*, int, char const*, unsigned long) const
+__gnu_debug::_Error_formatter::_M_format_word<unsigned long>
#
# The new demangler used to core dump on this.
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPSt4pairISsPFbP6sqlitePPcEESt6vectorIS9_SaIS9_EEEESE_ET0_T_SG_SF_
__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > > std::uninitialized_copy<__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > > >(__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >)
+std::uninitialized_copy<__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > > >
#
# The new demangler used to fail on this.
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fP1cIPFiiEE
f(c<int (*)(int)>*)
+f
#
# Wrap expressions using '>' in an extra layer of parens to avoid
# confusion with the '>' which ends the template parameters.
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z4dep9ILi3EEvP3fooIXgtT_Li2EEE
void dep9<3>(foo<((3) > (2))>*)
+dep9<3>
#
# Watch out for templated version of `operator<'--it needs an extra
# space.
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZStltI9file_pathSsEbRKSt4pairIT_T0_ES6_
bool std::operator< <file_path, std::string>(std::pair<file_path, std::string> const&, std::pair<file_path, std::string> const&)
+std::operator< <file_path, std::string>
#
# More hairy qualifier handling.
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z9hairyfuncM1YKFPVPFrPA2_PM1XKFKPA3_ilEPcEiE
hairyfunc(int (* const (X::** (* restrict (* volatile*(Y::*)(int) const)(char*)) [2])(long) const) [3])
+hairyfunc
#
# Check that negative numbers are handled correctly.
---format=gnu-v3
+--format=gnu-v3 --no-params
_Z1fILin1EEvv
void f<-1>()
+f<-1>
#
# Check a destructor of a standard substitution.
---format=gnu-v3
+--format=gnu-v3 --no-params
_ZNSdD0Ev
std::basic_iostream<char, std::char_traits<char> >::~basic_iostream()
+std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
+#
+# Another case where we got member function qualifiers wrong.
+--format=gnu-v3 --no-params
+_ZNK15nsBaseHashtableI15nsUint32HashKey8nsCOMPtrI4IFooEPS2_E13EnumerateReadEPF15PLDHashOperatorRKjS4_PvES9_
+nsBaseHashtable<nsUint32HashKey, nsCOMPtr<IFoo>, IFoo*>::EnumerateRead(PLDHashOperator (*)(unsigned int const&, IFoo*, void*), void*) const
+nsBaseHashtable<nsUint32HashKey, nsCOMPtr<IFoo>, IFoo*>::EnumerateRead
+#
+# Another member function qualifier test case, when the member function
+# returns a pointer to function.
+--format=gnu-v3 --no-params
+_ZNK1C1fIiEEPFivEv
+int (*C::f<int>() const)()
+C::f<int>
+#
+# Another case where we got member function qualifiers wrong.
+--format=gnu-v3 --no-params
+_ZZ3BBdI3FooEvvENK3Fob3FabEv
+void BBd<Foo>()::Fob::Fab() const
+void BBd<Foo>()::Fob::Fab
+#
+# The same idea one level deeper.
+--format=gnu-v3 --no-params
+_ZZZ3BBdI3FooEvvENK3Fob3FabEvENK3Gob3GabEv
+void BBd<Foo>()::Fob::Fab() const::Gob::Gab() const
+void BBd<Foo>()::Fob::Fab() const::Gob::Gab
+#
+# Yet another member function qualifier problem.
+--format=gnu-v3 --no-params
+_ZNK5boost6spirit5matchI13rcs_deltatextEcvMNS0_4impl5dummyEFvvEEv
+boost::spirit::match<rcs_deltatext>::operator void (boost::spirit::impl::dummy::*)()() const
+boost::spirit::match<rcs_deltatext>::operator void (boost::spirit::impl::dummy::*)()
+#
+# Test GNU V3 constructor and destructor identification.
+# 0 means it is not a constructor/destructor.
+# Other integers correspond to enum gnu_v3_{c,d}tor_kinds in demangle.h.
+--is-v3-ctor
+_GLOBAL__I__Z2fnv
+0
+#
+--is-v3-dtor
+_GLOBAL__I__Z2fnv
+0
+#
+--is-v3-ctor
+_ZNSdC1Ev
+1
+#
+--is-v3-dtor
+_ZNSdC1Ev
+0
+#
+--is-v3-ctor
+_ZNSdD0Ev
+0
+#
+--is-v3-dtor
+_ZNSdD0Ev
+1
+#
+--is-v3-ctor
+_ZNSdC2Ev
+2
+#
+--is-v3-dtor
+_ZNSdC2Ev
+0
+#
+--is-v3-ctor
+_ZNSdD1Ev
+0
+#
+--is-v3-dtor
+_ZNSdD1Ev
+2
#
# This caused an infinite loop.
#
@@ -2929,12 +3737,14 @@ std::basic_iostream<char, std::char_traits<char> >::~basic_iostream()
# mode. Of course the result is more or less nonsense, but an older
# version of g++ would indeed generate this mangled name given the
# appropriate input, so the demangling is correct.
---format=auto
+--format=auto --no-params
__CPR212____ct__Q3_3std141list__tm__128_Q2_3edm41THandle__tm__26_Q2_4emid15EMparticleChunkQ2_3std68allocator__tm__51_Q2_3edmJ37J14const_iteratorFRCQ3_3std18list__tm__7_Z1ZZ2Z8iterator
_Z1ZZ2Z::__CPR212____ct__Q3_3std141list__tm__128_Q2_3edm41THandle__tm__26_Q2_4emid15EMparticleChunkQ2_3std68allocator__tm__51_Q2_3edmJ37J14const_iteratorFRCQ3_3std18list__tm(iterator)
+_Z1ZZ2Z::__CPR212____ct__Q3_3std141list__tm__128_Q2_3edm41THandle__tm__26_Q2_4emid15EMparticleChunkQ2_3std68allocator__tm__51_Q2_3edmJ37J14const_iteratorFRCQ3_3std18list__tm
#
# This used to cause a crash. It doesn't follow the C++ encoding so
# the demangled name should be identical to the original symbol name.
---format=auto
+--format=auto --no-params
+_test_array__L_1__B23b___clean.6
_test_array__L_1__B23b___clean.6
_test_array__L_1__B23b___clean.6
diff --git a/libiberty/testsuite/test-demangle.c b/libiberty/testsuite/test-demangle.c
index ed28229ca34..6e00d1416d7 100644
--- a/libiberty/testsuite/test-demangle.c
+++ b/libiberty/testsuite/test-demangle.c
@@ -1,5 +1,5 @@
/* Demangler test program,
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Written by Zack Weinberg <zack@codesourcery.com
This file is part of GNU libiberty.
@@ -80,16 +80,39 @@ getline(buf)
buf->alloced = alloc;
}
-/* The tester operates on a data file consisting of triples of lines:
- format switch
+static void
+fail (lineno, opts, in, out, exp)
+ int lineno;
+ const char *opts;
+ const char *in;
+ const char *out;
+ const char *exp;
+{
+ printf ("\
+FAIL at line %d, options %s:\n\
+in: %s\n\
+out: %s\n\
+exp: %s\n",
+ lineno, opts, in, out != NULL ? out : "(null)", exp);
+}
+
+/* The tester operates on a data file consisting of groups of lines:
+ options
input to be demangled
expected output
- The format switch is expected to be either the empty string, a
- line of the form --format=<name>, or just <name> by itself. */
+ Supported options:
+ --format=<name> Sets the demangling style.
+ --no-params There are two lines of expected output; the first
+ is with DMGL_PARAMS, the second is without it.
+ --is-v3-ctor Calls is_gnu_v3_mangled_ctor on input; expected
+ output is an integer representing ctor_kind.
+ --is-v3-dtor Likewise, but for dtors.
-#define FORMATS "--format="
-#define FORMATL (sizeof FORMATS - 1)
+ For compatibility, just in case it matters, the options line may be
+ empty, to mean --format=auto. If it doesn't start with --, then it
+ may contain only a format name.
+*/
int
main(argc, argv)
@@ -97,10 +120,12 @@ main(argc, argv)
char **argv;
{
enum demangling_styles style;
+ int no_params;
+ int is_v3_ctor;
+ int is_v3_dtor;
struct line format;
struct line input;
struct line expect;
- char *fstyle;
char *result;
int failures = 0;
int tests = 0;
@@ -126,20 +151,98 @@ main(argc, argv)
tests++;
- fstyle = format.data;
- if (!strncmp (fstyle, FORMATS, FORMATL))
- fstyle += FORMATL;
-
- if (fstyle[0] == '\0')
+ no_params = 0;
+ is_v3_ctor = 0;
+ is_v3_dtor = 0;
+ if (format.data[0] == '\0')
style = auto_demangling;
+ else if (format.data[0] != '-')
+ {
+ style = cplus_demangle_name_to_style (format.data);
+ if (style == unknown_demangling)
+ {
+ printf ("FAIL at line %d: unknown demangling style %s\n",
+ lineno, format.data);
+ failures++;
+ continue;
+ }
+ }
else
- style = cplus_demangle_name_to_style (fstyle);
+ {
+ char *p;
+ char *opt;
- if (style == unknown_demangling)
+ p = format.data;
+ while (*p != '\0')
+ {
+ char c;
+
+ opt = p;
+ p += strcspn (p, " \t=");
+ c = *p;
+ *p = '\0';
+ if (strcmp (opt, "--format") == 0 && c == '=')
+ {
+ char *fstyle;
+
+ *p = c;
+ ++p;
+ fstyle = p;
+ p += strcspn (p, " \t");
+ c = *p;
+ *p = '\0';
+ style = cplus_demangle_name_to_style (fstyle);
+ if (style == unknown_demangling)
+ {
+ printf ("FAIL at line %d: unknown demangling style %s\n",
+ lineno, fstyle);
+ failures++;
+ continue;
+ }
+ }
+ else if (strcmp (opt, "--no-params") == 0)
+ no_params = 1;
+ else if (strcmp (opt, "--is-v3-ctor") == 0)
+ is_v3_ctor = 1;
+ else if (strcmp (opt, "--is-v3-dtor") == 0)
+ is_v3_dtor = 1;
+ else
+ {
+ printf ("FAIL at line %d: unrecognized option %s\n",
+ lineno, opt);
+ failures++;
+ continue;
+ }
+ *p = c;
+ p += strspn (p, " \t");
+ }
+ }
+
+ if (is_v3_ctor || is_v3_dtor)
{
- printf ("FAIL at line %d: unknown demangling style %s\n",
- lineno, fstyle);
- failures++;
+ char buf[20];
+
+ if (is_v3_ctor)
+ {
+ enum gnu_v3_ctor_kinds kc;
+
+ kc = is_gnu_v3_mangled_ctor (input.data);
+ sprintf (buf, "%d", (int) kc);
+ }
+ else
+ {
+ enum gnu_v3_dtor_kinds kd;
+
+ kd = is_gnu_v3_mangled_dtor (input.data);
+ sprintf (buf, "%d", (int) kd);
+ }
+
+ if (strcmp (buf, expect.data) != 0)
+ {
+ fail (lineno, format.data, input.data, buf, expect.data);
+ failures++;
+ }
+
continue;
}
@@ -152,18 +255,25 @@ main(argc, argv)
? strcmp (result, expect.data)
: strcmp (input.data, expect.data))
{
- printf ("\
-FAIL at line %d, style %s:\n\
-in: %s\n\
-out: %s\n\
-exp: %s\n",
- lineno, fstyle,
- input.data,
- result,
- expect.data);
+ fail (lineno, format.data, input.data, result, expect.data);
failures++;
}
free (result);
+
+ if (no_params)
+ {
+ getline (&expect);
+ result = cplus_demangle (input.data, DMGL_ANSI|DMGL_TYPES);
+
+ if (result
+ ? strcmp (result, expect.data)
+ : strcmp (input.data, expect.data))
+ {
+ fail (lineno, format.data, input.data, result, expect.data);
+ failures++;
+ }
+ free (result);
+ }
}
free (format.data);
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 7bf5b45575b..15c6e668ef5 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,4316 +1,68 @@
-2003-12-15 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+2004-01-23 Andrew Over <andrew.over@cs.anu.edu.au>
- * m32r-opc.c: Regenerate.
+ * sparc-opc.c (fdtox, fstox, fqtox, fxtod, fxtos, fxtoq): Tighten
+ contraints.
-2003-12-14 Mark Mitchell <mark@codesourcery.com>
+2004-01-19 Andrew Over <andrew.over@cs.anu.edu.au>
- * arm-opc.h (arm_opcodes): Put V6 instructions before XScale
- instructions.
+ * sparc-opc.c (sparc_opcodes) <f[dsq]tox, fxto[dsq]>: Fix args.
-2003-12-13 Hans-Peter Nilsson <hp@bitrange.com>
+2004-01-19 Alan Modra <amodra@bigpond.net.au>
- * mmix-opc.c (mmix_opcodes): Use GO_INSN_BYTE, PUSHGO_INSN_BYTE,
- SETL_INSN_BYTE, INCH_INSN_BYTE, INCMH_INSN_BYTE, INCML_INSN_BYTE
- and SWYM_INSN_BYTE instead of raw numbers.
+ * i386-dis.c (OP_E): Print scale factor on intel mode sib when not
+ 1. Don't print scale factor on AT&T mode when index missing.
-2003-12-10 Zack Weinberg <zack@codesourcery.com>
+2004-01-16 Alexandre Oliva <aoliva@redhat.com>
- * ppc-opc.c (MO): Make optional.
- (RAO, RSO, SHO): New optional forms of RA, RS, SH operands.
- (tlbwe): Accept for both PPC403 and BOOKE. Make all operands optional.
+ * m10300-opc.c (mov): 8- and 24-bit immediates are zero-extended
+ when loaded into XR registers.
-2003-12-05 Ricardo Anguiano <anguiano@codesourcery.com>
- Mark Mitchell <mark@codesourcery.com>
- Richard Earnshaw <rearnsha@arm.com>
+2004-01-14 Richard Sandiford <rsandifo@redhat.com>
- * arm-dis.c (print_arm_insn): Add 'W' macro.
- * arm-opc.h (arm_opcodes): Add V6 instructions.
- (thumb_opcodes): Likewise.
-
-2003-12-04 Alan Modra <amodra@bigpond.net.au>
-
- * openrisc-asm.c: Regenerate.
- * pj-opc.c: Update copyright date.
-
-2003-12-03 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
-
- * m32r-asm.c: Regenerate.
- * m32r-desc.c: Regenerate.
- * m32r-desc.h: Regenerate.
- * m32r-dis.c: Regenerate.
- * m32r-ibld.c: Regenerate.
- * m32r-opc.c: Regenerate.
- * m32r-opc.h: Regenerate.
- * m32r-opinst.c: Regenerate.
-
-2003-12-02 Alexandre Oliva <aoliva@redhat.com>
-
- * sh-opc.h: Add support for sh4a and no-fpu variants.
- * sh-dis.c: Ditto.
-
-2003-12-02 Kazu Hirata <kazu@cs.umass.edu>
-
- * alpha-opc.c: Remove ARGSUSED.
- * i370-opc.c: Likewise.
- * ppc-opc.c: Likewise.
-
-2003-12-02 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2003-11-28 Christian Groessler <chris@groessler.org>
-
- * z8k-dis.c: Convert to ISO C90.
- * z8kgen.c: Convert to ISO C90.
- (opt): Move long opcode for "ldb rdb,imm8" after short one, now
- the short one is created when assembling.
- * z8k-opc.h: Regenerate with new z8kgen.c.
-
-2003-11-19 Kazu Hirata <kazu@cs.umass.edu>
-
- * h8300-dis.c (print_colon_thingie): Remove.
-
-2003-11-18 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
-
- * mips-opc.c (mips_builtin_opcodes): Handle new macros: "lca" and
- "dlca".
-
-2003-11-14 Nick Clifton <nickc@redhat.com>
-
- * dis-init.c (init_disassemble_info): Initialise
- symbol_is_valid field.
- * dis-buf.c (generic_symbol_is_valid): New function. Always
- returns TRUE.
- * arm-dis.c (arm_symbol_is_valid): New function. Return FALSE
- for ARM ELF mapping symbols.
- * disassemble.c (disassemble_init_for_target): Set
- symbol_is_valid field to arm_symbol_is_valid of the target is
- an ARM.
-
-2003-11-05 H.J. Lu <hongjiu.lu@intel.com>
-
- * m68k-opc.c (m68k_opcodes): Reorder "fmovel".
-
-2003-11-03 Daniel Jacobowitz <drow@mvista.com>
-
- * arm-dis.c (print_arm_insn): Print "-" after "#".
-
-2003-10-30 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
-
- * alpha-opc.c: Add support for a second argument to RPCC.
-
-2003-10-27 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-dis.c: Convert to ISO C90 prototypes.
-
-2003-10-21 Peter Barada <pbarada@mail.wm.sps.mot.com>
- Bernardo Innocenti <bernie@develer.com>
-
- * m68k-dis.c: Add MCFv4/MCF5528x support.
- * m68k-opc.c: Likewise.
-
-2003-10-10 Dave Brolley <brolley@redhat.com>
-
- * frv-asm.c,frv-desc.c,frv-opc.c: Regenerated.
-
-2003-10-08 Dave Brolley <brolley@redhat.com>
-
- * frv-desc.[ch], frv-opc.[ch]: Regenerated.
-
-2003-09-30 Bob Wilson <bob.wilson@acm.org>
-
- * xtensa-dis.c (fetch_data): Remove numBytes parameter.
- (print_insn_xtensa): Fix call to fetch_data.
-
-2003-09-30 Chris Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (mips_arch_choices): Add entry for "mips64r2"
- (print_insn_args): Add handing for +E, +F, +G, and +H.
- * mips-opc.c (I65): New define for MIPS64r2.
- (mips_builtin_opcodes): Add "dext", "dextm", "dextu", "dins",
- "dinsm", "dinsu", "drotl", "drotr", "drotr32", "drotrv", "dsbh",
- and "dshd" for MIPS64r2. Adjust "dror", "dror32", and "drorv" to
- be supported on MIPS64r2.
-
-2003-09-24 Dave Brolley <brolley@redhat.com>
-
- * frv-desc.c, frv-opc.c, frv-opc.h: Regenerated.
-
-2003-09-14 Andreas Jaeger <aj@suse.de>
-
- * i386-dis.c: Convert to ISO C90 prototypes.
- * i370-dis.c: Likewise.
- * i370-opc.c: Likewiwse.
- * i960-dis.c: Likewise.
- * ia64-opc.c: Likewise.
-
-2003-09-09 Dave Brolley <brolley@redhat.com>
-
- * frv-desc.c: Regenerated.
-
-2003-09-08 Dave Brolley <brolley@redhat.com>
-
- On behalf of Doug Evans <dje@sebabeach.org>
- * Makefile.am (run-cgen): Pass new args archfile and opcfile
- to cgen.sh.
- (stamp-ip2k,stamp-m32r,stamp-fr30,stamp-frv,stamp-openrisc,
- stamp-iq2000,stamp-xstormy16): Pass paths of .cpu and .opc files
- to cgen.sh.
- (stamp-frv): Delete hardcoded path spec workaround.
- * Makefile.in: Regenerate.
- * cgen.sh: New args archfile and opcfile. Pass on to cgen.
-
-2003-09-04 Nick Clifton <nickc@redhat.com>
-
- * v850-dis.c (disassemble): Accept bfd_mach_v850e1.
- * v850-opc.c (v850_opcodes): Add DBTRAP and DBRET instructions.
-
-2003-09-04 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-dis.c (struct dis_private): New.
- (powerpc_dialect): Make static. Accept -Many in addition to existing
- options. Save dialect in dis_private.
- (print_insn_big_powerpc): Retrieve dialect from dis_private.
- (print_insn_little_powerpc): Likewise.
- (print_insn_powerpc): Call powpc_dialect here. Remove unnecessary
- efs/altivec check. Try harder to disassemble if given -Many.
- * ppc-opc.c (insert_fxm): Expand comment.
- (PPC, PPCCOM, PPC32, PPC64, PPCVEC): Remove PPC_OPCODE_ANY.
- (POWER, POWER2, PPCPWR2, POWER32, COM, COM32, M601, PWRCOM): Likewise.
- (POWER4): Remove PPCCOM.
- (PPCONLY): Don't define. Update all occurrences to PPC.
-
-2003-09-03 Andrew Cagney <cagney@redhat.com>
-
- * dis-init.c (init_disassemble_info): New file and function.
- * Makefile.am (CFILES): Add "dis-init.c".
- (libopcodes_la_SOURCES): Add "dis-init.c".
- (dis-init.lo): Specify dependencies.
- * Makefile.in: Regenerate.
-
-2003-09-03 Dave Brolley <brolley@redhat.com>
-
- * frv-*: Regenerated.
-
-2003-09-02 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c (powerpc_opcodes): Combine identical PPC403/BOOKE entries.
- Move duplicate mnemonic entries together. Use RS instead of RT on
- all mt*.
- * ppc-dis.c: Convert to ISO C.
-
-2003-08-29 Dave Brolley <brolley@redhat.com>
-
- * Makefile.am (stamp-frv): Copy frv.cpu and frv.opc from
- $(srcdir)/../cpu temporarily when regenerating source files.
- * Makefile.in: Regenerated.
-
-2003-08-19 Nick Clifton <nickc@redhat.com>
-
- * arm-dis.c (print_insn_arm: case 'A'): Add code to
- disassemble unindexed form of Addressing Mode 5.
-
-2003-08-19 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c (PPC440): Define.
- (powerpc_opcodes): Allow mac*, mul*, nmac*, dccci, dcread, iccci,
- icread instructions when PPC440. Add dlmzb instruction.
-
-2003-08-14 Alan Modra <amodra@bigpond.net.au>
-
- * dep-in.sed: Remove libintl.h.
- * Makefile.am (POTFILES.in): Unset LC_COLLATE.
- Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2003-08-07 Michael Meissner <gnu@the-meissners.org>
-
- * cgen-asm.c (hash_insn_array): Remove PARAMS macro.
- (hash_insn_list): Ditto.
- (build_asm_hash_table): Ditto.
- (cgen_set_parse_operand_fn): Prototype definition.
- (cgen_init_parse_operand): Ditto.
- (hash_insn_array): Ditto.
- (hash_insn_list): Ditto.
- (build_asm_hash_table): Ditto.
- (cgen_asm_lookup_insn): Ditto.
- (cgen_parse_keyword): Ditto.
- (cgen_parse_signed_integer): Ditto.
- (cgen_parse_unsigned_integer): Ditto.
- (cgen_parse_address): Ditto.
- (cgen_validate_signed_integer): Ditto.
- (cgen_validate_unsigned_integer): Ditto.
-
- * cgen-opc.c (hash_keyword_name): Remove PARAMS macro.
- (hash_keyword_value): Ditto.
- (build_keyword_hash_tables): Ditto.
- (cgen_keyword_lookup_name): Prototype definition.
- (cgen_keyword_lookup_value): Ditto.
- (cgen_keyword_add): Ditto.
- (cgen_keyword_search_init): Ditto.
- (cgen_keyword_search_next): Ditto.
- (hash_keyword_name): Ditto.
- (hash_keyword_value): Ditto.
- (build_keyword_hash_tables): Ditto.
- (cgen_hw_lookup_by_name): Ditto.
- (cgen_hw_lookup_by_num): Ditto.
- (cgen_operand_lookup_by_name): Ditto.
- (cgen_operand_lookup_by_num): Ditto.
- (cgen_insn_count): Ditto.
- (cgen_macro_insn_count): Ditto.
- (cgen_get_insn_value): Ditto.
- (cgen_put_insn_value): Ditto.
- (cgen_lookup_insn): Ditto.
- (cgen_get_insn_operands): Ditto.
- (cgen_lookup_get_insn_operands): Ditto.
- (cgen_set_signed_overflow_ok): Ditto.
- (cgen_clear_signed_overflow_ok): Ditto.
- (cgen_signed_overflow_ok_p): Ditto.
-
- * cgen-dis.c (hash_insn_array): Remove PARAMS macro.
- (hash_insn_list): Ditto.
- (build_dis_hash_table): Ditto.
- (count_decodable_bits): Ditto.
- (add_insn_to_hash_chain): Ditto.
- (count_decodable_bits): Prototype definition.
- (add_insn_to_hash_chain): Ditto.
- (hash_insn_array): Ditto.
- (hash_insn_list): Ditto.
- (build_dis_hash_table): Ditto.
- (cgen_dis_lookup_insn): Ditto.
-
- * cgen-asm.in (parse_insn_normal): Remove PARAMS macro.
- (@arch@_cgen_build_insn_regex): Prototype definition.
- (parse_insn_normal): Ditto.
- (@arch@_cgen_assemble_insn): Ditto.
- (@arch@_cgen_asm_hash_keywords): Ditto.
-
- * cgen-dis.in (print_normal): Remove PARAMS macro. Use void *
- instead of PTR.
- (print_address): Ditto.
- (print_keyword): Ditto.
- (print_insn_normal): Ditto.
- (print_insn): Ditto.
- (default_print_insn): Ditto.
- (read_insn): Ditto.
- (print_normal): Prototype definition. Use void * instead of PTR.
- (print_address): Ditto.
- (print_keyword): Ditto.
- (print_insn_normal): Ditto.
- (read_insn): Ditto.
- (print_insn): Ditto.
- (default_print_insn): Ditto.
- (print_insn_@arch@): Ditto.
-
- * cgen-ibld.in (insert_normal): Remove PARAMS macro.
- (insn_insn_normal): Ditto.
- (extract_normal): Ditto.
- (extract_insn_normal): Ditto.
- (put_insn_int_value): Ditto.
- (insert_1): Ditto.
- (fill_cache): Ditto.
- (extract_1): Ditto.
- (insert_1): Prototype definition.
- (insert_normal): Ditto.
- (insert_insn_normal): Ditto.
- (put_insn_int_value): Ditto.
- (fill_cache): Ditto.
- (extract_1): Ditto.
- (extract_normal): Ditto.
- (extract_insn_normal): Ditto.
-
- * fr30-asm.c: Regenerate.
- * fr30-dis.c: Ditto.
- * fr30-ibld.c: Ditto.
- * frv-asm.c: Ditto.
- * frv-dis.c: Ditto.
- * frv-ibld.c: Ditto.
- * ip2k-asm.c: Ditto.
- * ip2k-dis.c: Ditto.
- * ip2k-ibld.c: Ditto.
- * iq2000-asm.c: Ditto.
- * iq2000-dis.c: Ditto.
- * iq2000-ibld.c: Ditto.
- * m32r-asm.c: Ditto.
- * m32r-dis.c: Ditto.
- * m32r-ibld.c: Ditto.
- * openrisc-asm.c: Ditto.
- * openrisc-dis.c: Ditto.
- * openrisc-ibld.c: Ditto.
- * xstormy16-asm.c: Ditto.
- * xstormy16-dis.c: Ditto.
- * xstormy16-ibld.c: Ditto.
-
-2003-08-06 Nick Clifton <nickc@redhat.com>
-
- * po/fr.po: Updated French translation.
-
-2003-08-05 Nick Clifton <nickc@redhat.com>
-
- * configure.in (ALL_LINGUAS): Add nl.
- * configure: Regenerate.
- * po/nl.po: New Dutch translation.
-
-2003-07-30 Jason Eckhardt <jle@rice.edu>
-
- * i860-dis.c: Convert to ISO C90. Remove superflous prototypes.
-
-2003-07-30 Nick Clifton <nickc@redhat.com>
-
- * po/ro.po: Updated Romanian translation.
-
-2003-07-29 Jakub Jelinek <jakub@redhat.com>
-
- * ppc-opc.c (insert_mbe, extract_mbe): Shift 1L instead of 1 up.
-
-2003-07-24 Nick Clifton <nickc@redhat.com>
-
- * po/fr.po: Updated French translation.
-
-2003-07-18 Nick Clifton <nickc@redhat.com>
-
- * arm-dis.c (parse_arm_disassembler_option): Do not expect
- option string to be NUL terminated.
- (parse_disassembler_options): Allow options to be space or
- comma separated.
-
-2003-07-17 Nick Clifton <nickc@redhat.com>
-
- * po/es.po: New Spanish translation.
- * po/sv.po: New Swedish translation.
- * po/opcodes.pot: Regenerate.
-
-2003-07-15 Richard Sandiford <rsandifo@redhat.com>
-
- * mips-dis.c (mips_arch_choices): Add rm7000 and rm9000 entries.
-
-2003-07-14 Nick Clifton <nickc@redhat.com>
-
- * po/tr.po: Update with latest version.
- * po/POTFILES.in: Regenerate.
- * Makefile.in: Regenerate.
-
-2003-07-11 Alan Modra <amodra@bigpond.net.au>
-
- * po/opcodes.pot: Regenerate.
-
-2003-07-09 Alexandre Oliva <aoliva@redhat.com>
-
- 2000-05-25 Alexandre Oliva <aoliva@cygnus.com>
- * m10300-dis.c (disassemble): Negate negative accumulator's shift.
- 2000-05-24 Alexandre Oliva <aoliva@cygnus.com>
- * m10300-dis.c (disassemble, case FSREG, FDREG): Don't assume
- 32-bit longs when sign-extending operands.
- 2000-04-20 Alexandre Oliva <aoliva@cygnus.com>
- * m10300-opc.c: Remove MN10300_OPERAND_RELAX from all FSREGs.
- * m10300-dis.c (HAVE_AM33_2): Define.
- (disassemble): Use it.
- (HAVE_AM33): Redefine.
- (print_insn_mn10300): Fix mask for 5-byte extended insns.
- 2000-04-01 Alexandre Oliva <aoliva@cygnus.com>
- * m10300-opc.c: Renamed AM332 to AM33_2.
- 2000-03-31 Alexandre Oliva <aoliva@cygnus.com>
- * m10300-opc.c: Defined AM33 2.0 register operands. Added support
- for AM33 2.0 `imm8,(abs16)' addressing mode for btst, bset and
- bclr. Implemented `fbCC', `flCC', `dcpf' and all FP insns.
- * m10300-dis.c (print_insn_mn10300): Recognize 5byte extended
- insn code of AM33 2.0.
- (disassemble): Recognize FMT_D3. Print out FP register names.
-
-2003-07-09 Chris Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (set_default_mips_dis_options): Get BFD from
- the disassembler_info's section, rather than from the
- disassembler_info's symbols pointer.
-
-2003-07-07 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c: Remove NULL pointer checks. Formatting. Remove
- extraneous ATTRIBUTE_UNUSED.
- * ppc-dis.c (print_insn_powerpc): Always pass a valid address to
- operand->extract.
-
-2003-07-04 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c: Convert to C90, removing unnecessary prototypes and
- casts. Formatting.
-
- * ppc-opc.c: Remove PARAMS from prototypes.
- (FXM4): Define.
- (insert_fxm): New function, used by both FXM and FXM4.
- (extract_fxm): Likewise.
- (XFXFXM_MASK): Remove 1 << 20 term.
- (powerpc_opcodes): Add Power4 version of "mfcr". Simplify "mtcr" mask.
-
-2003-07-01 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390-dis.c (s390_extract_operand): Add support for long displacements.
- * s390-mkopc.c (s390_opcode_cpu_val): Add support for cpu type z990.
- * s390-opc.c (D20_20): Add define for 20 bit displacements.
- (INSTR_RRF_R0RR, INSTR_RSL_R0RD, INSTR_RSY_RRRD, INSTR_RSY_RURD,
- INSTR_RSY_AARD, INSTR_RXY_RRRD, INSTR_RXY_FRRD, INSTR_SIY_URD): Add
- new instruction formats.
- (MASK_RRF_R0RR, MASK_RSL_R0RD, MASK_RSY_RRRD, MASK_RSY_RURD,
- MASK_RSY_AARD, MASK_RXY_RRRD, MASK_RXY_FRRD, MASK_SIY_URD): Likewise.
- (s390_opformats): Likewise.
- * s390-opc.txt: Add new instructions for cpu type z990. Add missing
- hfp instructions. Add missing instructions pgin, pgout and xsch.
-
-2003-06-23 H.J. Lu <hongjiu.lu@intel.com>
-
- * i386-dis.c (PNI_Fixup): New. Fix up "mwait" and "monitor" in
- Intel Precott New Instructions.
- (PREGRP27): New. Added for "addsubpd" and "addsubps".
- (PREGRP28): New. Added for "haddpd" and "haddps".
- (PREGRP29): New. Added for "hsubpd" and "hsubps".
- (PREGRP30): New. Added for "movsldup" and "movddup".
- (PREGRP31): New. Added for "movshdup" and "movhpd".
- (PREGRP32): New. Added for "lddqu".
- (dis386_twobyte): Use PREGRP30 to replace the "movlpX" entry.
- Use PREGRP31 to replace the "movhpX" entry. Use PREGRP28 for
- entry 0x7c. Use PREGRP29 for entry 0x7d. Use PREGRP27 for
- entry 0xd0. Use PREGRP32 for entry 0xf0.
- (twobyte_has_modrm): Updated.
- (twobyte_uses_SSE_prefix): Likewise.
- (grps): Use PNI_Fixup in the "sidtQ" entry.
- (prefix_user_table): Add PREGRP27, PREGRP28, PREGRP29, PREGRP30,
- PREGRP31 and PREGRP32.
- (float_mem): Use "fisttp{l||l|}" in entry 1 in opcode 0xdb.
- Use "fisttpll" in entry 1 in opcode 0xdd.
- Use "fisttp" in entry 1 in opcode 0xdf.
-
-2003-06-19 Christian Groessler <chris@groessler.org>
-
- * z8k-dis.c (instr_data_s): Change tabl_index from long to int.
- (print_insn_z8k): Correctly check return value from
- z8k_lookup_instr call.
- (unparse_instr): Handle CLASS_IRO case.
- * z8kgen.c: Fix function definitions. Fix formatting.
- (opt): Add brk opcode alias for non-simulator breakpoint. Add
- missing and fix existing in/out and sin/sout opcode definitions.
- (args): "@ri", "@ro" - add CLASS_IRO register usage for in/out
- opcodes.
- (internal): Check p->flags for non-zero before dereferencing it.
- (gas): Add CLASS_IRO line. Insert new OPC_xxx lines for the added
- opcodes and renumber the remaining lines repectively.
- (main): Remove "-d" command line switch.
- * z8k-opc.h: Regenerate with new z8kgen.c.
-
-2003-06-11 H.J. Lu <hongjiu.lu@intel.com>
-
- * po/Make-in (DESTDIR): New.
- (install-data-yes): Support $(DESTDIR).
- (uninstall): Likewise.
-
-2003-06-11 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * po/POTFILES.in: Regenerate.
-
-2003-06-10 Doug Evans <dje@sebabeach.org>
-
- * cgen-asm.in (@arch@_cgen_assemble_insn): CGEN_INSN_RELAX renamed to
- CGEN_INSN_RELAXED.
- * fr30-asm.c,fr30-desc.c,fr30-desc.h: Regenerate.
- * frv-asm.c,frv-desc.c,frv-desc.h: Regenerate.
- * ip2k-asm.c,ip2k-desc.c,ip2k-desc.h: Regenerate.
- * iq2000-asm.c,iq2000-desc.c,iq2000-desc.h: Regenerate.
- * m32r-asm.c,m32r-desc.c,m32r-desc.h,m32r-opc.c: Regenerate.
- * openrisc-asm.c,openrisc-desc.c,openrisc-desc.h: Regenerate.
- * xstormy16-asm.c,xstormy16-desc.c,xstormy16-desc.h: Regenerate.
-
-2003-06-10 Gary Hade <garyhade@us.ibm.com>
- Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c (DQ, RAQ, RSQ, RTQ): Define.
- (insert_dq, extract_dq, insert_raq, insert_rtq, insert_rsq): New.
- (powerpc_opcodes): Add "attn", "lq" and "stq".
-
-2003-06-10 Richard Sandiford <rsandifo@redhat.com>
-
- * h8300-dis.c (bfd_h8_disassemble): Don't print brackets round
- rts/l and rte/l register lists.
-
-2003-06-03 Nick Clifton <nickc@redhat.com>
-
- * frv-desc.c: Regenerate.
- * frv-opc.c: Regenerate.
- * frv-asm.c: Regenerate.
* frv-desc.h: Regenerate.
- * frv-dis.c: Regenerate.
- * frv-ibld.c: Regenerate.
- * frv-opc.h: Regenerate.
- * po/opcodes.pot: Regenerate.
-
-2003-06-03 Michael Snyder <msnyder@redhat.com>
- and Bernd Schmidt <bernds@redhat.com>
- and Alexandre Oliva <aoliva@redhat.com>
-
- * disassemble.c (disassembler): Add support for h8300sx.
- * h8300-dis.c: Ditto.
-
-2003-06-03 Nick Clifton <nickc@redhat.com>
-
* frv-desc.c: Regenerate.
* frv-opc.c: Regenerate.
- * aclocal.m4: Regenerate.
- * config.in: Regenerate.
- * configure: Regenerate.
- * iq2000-asm.c: Regenerate.
- * iq2000-desc.c: Regenerate.
- * iq2000-desc.h: Regenerate.
- * iq2000-dis.c: Regenerate.
- * iq2000-ibld.c: Regenerate.
- * iq2000-opc.c: Regenerate.
- * iq2000-opc.h: Regenerate.
- * po/POTFILES.in: Regenerate.
- * po/opcodes.pot: Regenerate.
-
-2003-05-23 Jason Eckhardt <jle@rice.edu>
-
- * i860-dis.c (crnames): Add bear, ccr, p0, p1, p2, p3.
- (print_insn_i860): Grab 4 bits of the control register field
- instead of 3.
-
-2003-05-18 Jason Eckhardt <jle@rice.edu>
-
- * i860-dis.c (print_insn_i860): Instruction shrd has a dual bit,
- print it.
-
-2003-05-17 Andreas Jaeger <aj@suse.de>
-
- * Makefile.am (libopcodes_la_LIBADD): Add libbfd.la.
- (libopcodes_la_DEPENDENCIES): Add libbfd.la.
- * Makefile.in: Regenerated.
-
-2003-05-16 Nick Clifton <nickc@redhat.com>
-
- * configure.in (ALL_LINGUAS): Add Romanian translation.
- * configure: Regenerate.
- * po/ro.po: New file: Romanian translation.
-
-2003-05-12 Dhananjay Deshpande <dhananjayd@kpitcummins.com>
-
- * disassemble.c (disassembler): Add support for h8300hn and h8300sn.
-
-2003-05-09 Alan Modra <amodra@bigpond.net.au>
-
- * i386-dis.c (print_insn): Test intel_syntax against (char) -1 in
- case char is unsigned.
-
-2003-05-01 Christian Groessler <chris@groessler.org>
-
- * z8k-dis.c (z8k_lookup_instr): Optimize FETCH_DATA calls.
- (unpack_instr): Fix representation of segmented addresses.
- (intr_name): Added, contains names of the parameters to the EI/DI
- instructions.
- (unparse_instr): Fix display of EI/DI parameters.
-
-2003-04-22 Doug Evans <dje@sebabeach.org>
-
- * fr30-desc.c,fr30-desc.h,fr30-opc.c,fr30-opc.h: Regenerate.
- * frv-desc.c,frv-desc.h,frv-opc.c,frv-opc.h: Regenerate.
- * ip2k-desc.c,ip2k-desc.h,ip2k-opc.c,ip2k-opc.h: Regenerate.
- * m32r-desc.c,m32r-desc.h,m32r-opc.c,m32r-opc.h: Regenerate.
- * m32r-opinst.c: Regenerate.
- * openrisc-desc.c,openrisc-desc.h,openrisc-opc.c,openrisc-opc.h: Regenerate.
- * xstormy16-desc.c,xstormy16-desc.h,xstormy16-opc.c,xstormy16-opc.h: Regenerate.
-
-2003-04-15 Rohit Kumar Srivastava <rohits@kpitcummins.com>
-
- * h8500-opc.c: Replace occurrances of 'Hitachi' with 'Renesas'.
-
-2003-04-07 James E Wilson <wilson@tuliptree.org>
-
- * ia64-ic.tbl (fr-readers): Add mem-writers-fp.
- * ia64-asmtab.c: Regenerate.
-
-2003-04-08 Alexandre Oliva <aoliva@redhat.com>
-
- * mips-dis.c (mips_gpr_names_newabi): Reverted previous patch.
-
-2003-04-07 Alexandre Oliva <aoliva@redhat.com>
-
- * mips-dis.c (mips_gpr_names_newabi): $12-$15 are named $t4-$t7.
-
-2003-04-04 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * tic4x-dis.c: Namespace cleanup. Replace s/c4x/tic4x and
- s/c3x/tic3x/
-
-2003-04-01 Nick Clifton <nickc@redhat.com>
-
- * arm-dis.c: Remove presence of (r) and (tm) symbols.
- * arm-opc.h: Remove presence of (r) and (tm) symbols.
-
-2003-03-25 Stan Cox <scox@redhat.com>
- Nick Clifton <nickc@redhat.com>
-
- Contribute support for Intel's iWMMXt chip - an ARM variant:
-
- * arm-dis.c (regnames): Add iWMMXt register names.
- (set_iwmmxt_regnames): New function.
- (print_insn_arm): Handle iWMMXt formatters.
- * arm-opc.h: Document iWMMXt formatters.
- (arm_opcod): Add iWMMXt instructions.
-
-2003-03-22 Doug Evans <dje@sebabeach.org>
-
- * i386-dis.c (dis386): Recognize icebp (0xf1).
-
-2003-03-21 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390-dis.c (init_disasm): Rename S390_OPCODE_ESAME to
- S390_OPCODE_ZARCH.
- (print_insn_s390): Use new modes field of s390_opcodes.
- * s390-mkopc.c (ARCHBITS_ESAONLY, ARCHBITS_ESA, ARCHBITS_ESAME): Remove.
- (s390_opcode_mode_val, s390_opcode_cpu_val): New enums.
- (struct op_struct): Remove archbits. Add mode_bits and min_cpu.
- (insertOpcode): Replace archbits by min_cpu and mode_bits.
- (dumpTable): Write mode_bits and min_cpu instead of archbits.
- (main): Adapt to new format in s390-opcode.txt.
- * s390-opc.c (s390_opformats): Replace archbits by min_cpu and
- mode_bits.
- * s390-opc.txt: Replace archbits by min_cpu and mode_bits.
-
-2003-03-17 Nick Clifton <nickc@redhat.com>
-
- * ppc-opc.c: Fix formatting. Update copyright date.
-
-2003-03-14 Daniel Jacobowitz <drow@mvista.com>
-
- * ppc-opc.c (powerpc_opcodes): Readd tlbre for PPC403.
-
-2003-02-25 Alan Modra <amodra@bigpond.net.au>
-
- * hppa-dis.c: Formatting.
-
-2003-02-25 Matthew Wilcox <willy@debian.org>
-
- * hppa-dis.c (print_insn_hppa): Implement fcnv instruction modifiers.
-
- * hppa-dis.c (print_insn_hppa <2 bit space register>): Do not print
- the space register when the value is zero.
-
-2003-02-23 Elias Athanasopoulos <elathan@phys.uoa.gr>
-
- * mips-dis.c (print_mips_disassembler_options): Make 'i' unsigned,
- use ARRAY_SIZE in loops.
-
-2003-02-12 Dave Brolley <brolley@redhat.com>
-
- * fr30-desc.c: Regenerate.
-
-2003-02-06 Gwenole Beauchesne <gbeauchesne@mandrakesoft.com>
-
- * i386-dis.c (dq_mode, Edq): Define.
- (dis386_twobyte): Correct movd operands.
- (OP_E): Handle dq_mode case.
-
-2003-01-29 Henric Jungheim <henric@attbi.com>
-
- * sparc-dis.c (print_insn_sparc): When examining values added in
- to rs1, make sure that there are previous instructions.
-
-2003-01-23 Nick Clifton <nickc@redhat.com>
-
- * Add sh2e support:
-
- 2002-04-02 Alexandre Oliva <aoliva@redhat.com>
-
- * sh-dis.c (print_insn_shx): Handle bfd_mach_sh2e.
- * sh-opc.h (arch_sh2e, arch_sh2e_up): New.
- (arch_sh2_up): Added sh2e.
- (sh_table): Replaced all occurrences of arch_sh3e_up with
- arch_sh2e_up, except in fsqrt.
-
-2003-01-23 Alan Modra <amodra@bigpond.net.au>
-
- * sh64-dis.c: Include elf32-sh64.h.
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2003-01-17 Richard Henderson <rth@redhat.com>
-
- * alpha-opc.c (alpha_opcodes): Add bugchk, rduniq, wruniq, gentrap
- PAL entry points.
-
-2003-01-16 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * po/POTFILES.in: Regenerate.
-
-2003-01-08 Klee Dienes <kdienes@apple.com>
-
- * Makefile.am (ALL_MACHINES): Add msp430-dis.lo.
- * Makefile.in: Regenerate.
-
-2003-01-08 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c (powerpc_macros <extrwi>): Accept a shift of 32.
-
-2002-01-02 Ben Elliston <bje@redhat.com>
- Jeff Johnston <jjohnstn@redhat.com>
-
- * iq2000-asm.c: New file.
- * iq2000-desc.c: Likewise.
- * iq2000-desc.h: Likewise.
- * iq2000-dis.c: Likewise.
- * iq2000-ibld.c: Likewise.
- * iq2000-opc.c: Likewise.
- * iq2000-opc.h: Likewise.
- * Makefile.am (HFILES): Add iq2000-desc.h, iq2000-opc.h.
- (CFILES): Add iq2000-asm.c, iq2000-desc.c, iq2000-dis.c,
- iq2000-ibld.c, iq2000-opc.c.
- (ALL_MACHINES): Add iq2000-asm.lo, iq2000-desc.lo, iq2000-dis.lo,
- iq2000-ibld.lo, iq2000-opc.lo.
- (CLEANFILES): Add stamp-iq2000.
- (IQ2000_DEPS): New macro.
- (stamp-iq2000): New target.
- * Makefile.in: Regenerate.
- * configure.in: Handle bfd_iq2000_arch.
- * configure: Regenerate.
-
-2003-01-02 Chris Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (print_insn_args): Use position extracted by "+A"
- to calculate size for "+B". Redo code for "+C" so it shares
- the same style as "+A" and "+B" now do.
-
-2003-01-02 Chris Demetriou <cgd@broadcom.com>
-
- * mips-dis.c: Update copyright years.
- (print_insn_arg): Rename to...
- (print_insn_args): This, returning void. Process the whole
- string of args rather than a single one. Reindent.
- (print_insn_mips): Update to match the above.
-
-2002-12-31 Chris Demetriou <cgd@broadcom.com>
-
- * mips-opc.c (mips_builtin_opcodes): Move "di" into the
- right order alphabetically, and make all hex constants use
- lower-case letters.
-
-2002-12-31 Chris Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (mips_cp0sel_name): New structure.
- (mips_cp0sel_names_mips3264, mips_cp0sel_names_mips3264r2)
- (mips_cp0sel_names_sb1): New arrays.
- (mips_arch_choice): New structure members "cp0sel_names" and
- "cp0sel_names_len".
- (mips_arch_choices): Add references to new cp0sel_names arrays
- as appropriate, and make all existing entries reference
- appropriate mips_XXX_names_numeric arrays rather than simply
- using NULL.
- (mips_cp0sel_names, mips_cp0sel_names_len): New variables.
- (lookup_mips_cp0sel_name): New function.
- (set_default_mips_dis_options): Set mips_cp0sel_names and
- mips_cp0sel_names_len as appropriate. Remove now-unnecessary
- checks for NULL register name arrays.
- (parse_mips_dis_option): Likewise.
- (print_insn_arg): Handle "+D" operand type.
- * mips-opc.c (mips_builtin_opcodes): Add new "+D" variants
- of mfc0, mtc0, dmfc0, and dmtc0 to print CP0+sel register
- names symbolically.
-
-2002-12-30 Chris Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (mips_cp0_names_mips3264r2, mips_hwr_names_numeric)
- (mips_hwr_names_mips3264r2): New arrays.
- (mips_arch_choice): New "hwr_names" member.
- (mips_arch_choices): Adjust for structure change, and add a new
- entry for "mips32r2" ISA.
- (mips_hwr_names): New variable.
- (set_default_mips_dis_options): Set mips_hwr_names.
- (parse_mips_dis_option): New "hwr-names" option which sets
- mips_hwr_names, and adjust "reg-names=ARCH" to set mips_hwr_names.
- (print_insn_arg): Change return type to "int"
- and use that to indicate number of characters consumed.
- Add support for "+" operand extension character, "+A", "+B",
- "+C", and "K" operands.
- (print_insn_mips): Adjust for changes to print_insn_arg.
- (print_mips_disassembler_options): Adjust for "hwr-names"
- addition and "reg-names" change.
- * mips-opc (I33): New define (shorthand for INSN_ISA32R2).
- (mips_builtin_opcodes): Note that "nop" and "ssnop" are special
- forms of "sll". Add new MIPS32 Release 2 instructions: ehb,
- di, ei, ext, ins, jr.hb, jalr.hb, mfhc1, mfhc2, mthc1, mthc2,
- rdhwr, rdpgpr, seb, seh, synci, wrpgpr, wsbh.
- Note that hardware rotate instructions (ror, rorv) can be
- used on MIPS32 Release 2, and add the official mnemonics
- for them (rotr, rotrv) and the similar "rotl" mnemonic for
- left-rotate.
-
-2002-12-30 Dmitry Diky <diwil@mail.ru>
-
- * configure.in: Add msp430 target.
- * configure: Regenerate.
- * disassemble.c: Add entry for msp430 disassembly.
- * msp430-dis.c: New file: msp430 disassembler.
-
-2002-12-27 Chris Demetriou <cgd@broadcom.com>
-
- * disassemble.c (disassembler_usage): Add invocation of
- print_mips_disassembler_options.
- * mips-dis.c: Include libiberty.h.
- (print_mips_disassembler_options, set_default_mips_dis_options)
- (parse_mips_dis_option, parse_mips_dis_options, choose_abi_by_name)
- (choose_arch_by_name, choose_arch_by_number): New functions.
- (mips_abi_choice, mips_arch_choice): New structures.
- (mips32_reg_names, mips64_reg_names, reg_names): Remove.
- (mips_gpr_names_numeric, mips_gpr_names_oldabi)
- (mips_gpr_names_newabi, mips_fpr_names_numeric)
- (mips_fpr_names_32, mips_fpr_names_n32, mips_fpr_names_64)
- (mips_cp0_names_numeric, mips_cp0_names_mips3264)
- (mips_cp0_names_sb1, mips_abi_choices, mips_arch_choices)
- (mips_processor, mips_isa, mips_gpr_names, mips_fpr_names)
- (mips_cp0_names): New variables.
- (print_insn_args): Use new variables to print GPR, FPR, and CP0
- register names.
- (mips_isa_type): Remove.
- (print_insn_mips): Remove ISA and CPU setup since it is now done...
- (_print_insn_mips): Here. Remove register setup code, and
- call set_default_mips_dis_options and parse_mips_dis_options
- instead.
- (print_mips16_insn_arg): Use mips_gpr_names instead of mips32_names.
-
-2002-12-23 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.in: Regenerate.
-
-2002-12-19 Nick Kelsey <nickk@ubicom.com>
-
- * cgen-asm.c (cgen_parse_keyword): Added underscore to symbol character
- check to fix false keyword trigger with names such as <keyword>_foo.
-
-2002-12-19 Doug Evans <dje@sebabeach.org>
-
- * Makefile.am (CGEN_CPUS): New variable.
- (run-cgen-all): New rule.
- * Makefile.in: Regenerate.
-
-2002-12-18 Chris Demetriou <cgd@broadcom.com>
-
- * mips-opc.c (mips_builtin_opcodes): Remove one "ror" and two
- "dror" entries, and reorder the remaining "dror" and "ror" entries.
-
-2002-12-16 DJ Delorie <dj@delorie.com>
-
- * xstormy16-asm.c (parse_immediate16): Add prototype.
-
-2002-12-16 Andrew MacLeod <amacleod@redhat.com>
-
- * xstormy16-asm.c: Regenerate.
-
-2002-12-16 Alan Modra <amodra@bigpond.net.au>
-
- * ns32k-dis.c (print_insn_ns32k): Constify "d", remove register
- keyword.
-
-2002-12-13 Alan Modra <amodra@bigpond.net.au>
-
- * h8500-opc.h (h8500_table): Add missing initializers to quiet
- warnings.
- * pj-dis.c (print_insn_pj): Adjust for pj_opc_info_t change.
- * pj-opc.c (pj_opc_info): Add braces around union initializer.
- * z8kgen.c: Include "libiberty.h".
- (opt, args, toks): Fix initializer warnings.
- (chewname): Make "name" a char **. Return mnemonic trimmed of
- operands.
- (gas): Improve emitted "DO NOT EDIT" warning. Format emitted
- opcode_entry_type, and make "nicename" and "name" const. Make
- z8k_table const too. Formatting. Generate idx as gas needs it.
- * z8k-opc.h: Regenerate.
-
-2002-12-08 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-dis.c (print_indexed_operand): Fix PC-relative address
- for 9 and 16-bit PC-relative addressing mode.
-
-2002-12-05 Aldy Hernandez <aldyh@redhat.com>
-
- * ppc-opc.c: Delete evsabs, evsnabs, evsneg, evsadd, evssub,
- evsmul, evsdiv, evscmpgt, evsgmplt, evststgt, evtstlt, evststeq,
- evscfui, evscfsi, evscfuf, evscfsf, evsctui, evsctuiz, evsctsi,
- evsctsiz, evsctuf, evsctsf, evmwhssfaa, evmwhssmaa, evmwhsmfaa,
- evmwhsmiaa, evmwhusiaa, evmwhumiaa, evmwhssfan, evmwhssian,
- evmwhsmfan, evmwhsmian, evmwhusian, evmwhumian, evmwhgssfaa,
- evmwhgsmfaa, evmwhgsmiaa, evmwhgumiaa, evmwhgssfan, evmwhgsmfan,
- evmwhgsmian, evmwhgumian.
- (mftb): Add to opcode table.
- (mtspefscr): Change RT to RS in opcode table.
-
-2002-12-05 Aldy Hernandez <aldyh@redhat.com>
-
- * ppc-opc.c: Move mbar and msync up. Change mask for mbar and
- msync.
-
-2002-12-04 David Mosberger <davidm@hpl.hp.com>
-
- * ia64-opc-d.c (ia64_opcodes_d): Add "hint" instruction.
- * ia64-opc-b.c: Add "hint.b" instruction.
- * ia64-opc-f.c: Add "hint.f" instruction.
- * ia64-opc-i.c: Add "hint.i" instruction.
- * ia64-opc-m.c: Add "hint.m", "fc.i", "ld16", "st16", and
- "cmp8xchg16" instructions.
- * ia64-opc-x.c: Add "hint.x" instruction.
-
- * ia64-opc.h (AR_CSD): New macro.
-
- * ia64-ic.tbl: Update according to SDM2.1.
- * ia64-raw.tbl: Ditto.
- * ia64-waw.tbl: Ditto.
-
- * ia64-gen.c (in_iclass): Handle "hint" like "nop".
- (lookup_regindex): Recognize AR[FCR], AR[EFLAG], AR[CSD],
- AR[SSD], AR[CFLG], AR[FSR], AR[FIR], and AR[FDR].
- * ia64-asmtab.c: Regenerate.
-
-2002-11-25 Aldy Hernandez <aldyh@redhat.com>
-
- * ppc-opc.c: Remove evmwlssf, evmwlssfa, evmwlsmf, evmwlsmfa,
- evmwlssfaaw, evmwlsmfaaw, evmwlssfanw, evmwlsfanw.
-
-2002-12-04 Aldy Hernandez <aldyh@redhat.com>
-
- * ppc-opc.c (PMRN): Remove.
- (RA): Set to NB + 1.
- (powerpc_opcodes): Change PMRN to SPR.
- Change all RD to RS.
- Change mftb to look like mftbl.
- Move mftb before mftbl.
- Add mfbbtar.
- Add mtbbtar.
- Change mfpmr to use PMR.
- Change mtpmr to use PMR.
- (RD): Remove.
- (insert_ev2): Fix mask and shift.
- (extract_ev2): Same.
- (insert_ev4): Same.
- (extract_ev4): Same.
- (PMR): Define.
- (extract_pmrn): Remove.
- (insert_pmrn): Remove.
-
-2002-12-03 Richard Henderson <rth@redhat.com>
-
- * ia64-opc-m.c: Add ld8.mov.
- * ia64-asmtab.c: Regenerate.
-
-2002-12-02 Alan Modra <amodra@bigpond.net.au>
-
- * arm-dis.c (print_insn_arm): Constify "insn". Formatting.
- (print_insn_thumb): Likewise.
- * h8500-dis.c (print_insn_h8500): Constify "opcode".
- * mcore-dis.c (print_insn_mcore): Constify "op". Formatting.
- * ns32k-dis.c (print_insn_arg <case 'F'>): Use a union to avoid
- type-punned pointer warnings.
- <case 'L'>: Likewise. Fix error message too.
- * pdp11-dis.c (print_reg): Warning fix.
- * sh-dis.c (print_movxy): Constify "op" param.
- (print_insn_ddt): Constify sh_opcode_info vars.
- (print_insn_ppi): Likewise.
- (print_insn_sh): Likewise.
- * tic30-dis.c (cnvt_tmsfloat_ieee): Use a union to avoid
- type-punned pointer warnings.
- * w65-dis.c (print_insn_w65): Constify "op".
-
-2002-12-01 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-dis.c (PC_REGNUM): Define.
- (print_indexed_operand): Need an adjustment for some PC-relative
- operand modes; print the final address of PC-relative modes.
- (print_insn): Take into account movw/movb to adjust the PC-relative
- operand addresses.
-
-2002-11-30 Alan Modra <amodra@bigpond.net.au>
-
- *arm-dis.c, cris-dis.c, h8300-dis.c, mips-dis.c, mmix-dis.c, sh-dis.c,
- sh64-dis.c, v850-dis.c: Replace boolean with bfd_boolean, true with
- TRUE, false with FALSE. Simplify comparisons of bfd_boolean vars
- with TRUE/FALSE. Formatting.
-
-2002-11-25 DJ Delorie <dj@redhat.com>
-
- * xstormy16-opc.c: Regenerate.
-
-2002-11-25 Jim Wilson <wilson@redhat.com>
-
- * ia64-dis.c (print_insn_ia64): Correct handling of IA64_OPND_TGT64.
-
-2002-11-15 DJ Delorie <dj@redhat.com>
-
- * xstormy16-desc.c: Regenerate.
- * xstormy16-opc.c: Regenerate.
- * xstormy16-opc.h: Regenerate.
-
-2002-11-18 Klee Dienes <kdienes@apple.com>
-
- * avr-dis.c: Include libiberty.h (for xmalloc).
- (struct avr_opcodes_s): Remove 'bin_mask' field (it's
- automatically computed in the init routine).
- (AVR_INSN): No longer provide bin_mask field in initializer.
- (avr_opcodes_s): Declare as const.
- (print_insn_avr): Store the bin_mask field in a separate table
- (allocated with xmalloc); iterate through it at the same time as
- we iterate through the opcodes.
-
-2002-11-18 Klee Dienes <kdienes@apple.com>
-
- * h8300-dis.c: Include libiberty.h (for xmalloc).
- (struct h8_instruction): New type, used to wrap h8_opcodes with a
- length field (computed at run-time).
- (h8_instructions): New variable.
- (bfd_h8_disassemble_init): Allocate the storage for
- h8_instructions. Fill h8_instructions with pointers to the
- appropriate opcode and the correct value for the length field.
- (bfd_h8_disassemble): Iterate through h8_instructions instead of
- h8_opcodes.
-
-2002-11-18 Klee Dienes <kdienes@apple.com>
-
- * arc-opc.c (arc_ext_opcodes): Define.
- (arc_ext_operands): Define.
- * i386-dis.c (Suffix3DNow): Declare as const.
- * arm-opc.h (arm_opcodes): Declare as const.
- (thumb_opcodes): Declare as const.
- * h8500-opc.h (h8500_table): Declare as const.
- (h8500_table): Use a NULL for the opcode in the terminator, so
- that code testing (opcode->name) behaves correctly.
- * mcore-opc.h (mcore_table): Declare as const.
- * sh-opc.h (sh_table): Declare as const.
- * w65-opc.h (optable): Declare as const.
- * z8k-opc.h (z8k_table): Declare as const.
-
-2002-11-18 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * tic4x-dis.c: Added support for enhanced and special insn.
- (c4x_print_op): Added insn class 'i' and 'j'
- (c4x_hash_opcode_special): Add to support special insn
- (c4x_hash_opcode): Update to support the new opcode-list
- format. Add support for the new special insns.
- (c4x_disassemble): New opcode-list support.
-
-2002-11-16 Klee Dienes <kdienes@apple.com>
-
- * m88k-dis.c: Include libiberty.h (for xmalloc).
- (HASHTAB): New type, used to build instruction hash tables.
- Contains a pointer to an INSTAB and a pointer to the next hash
- chain entry.
- (instructions): Move definition from m88k.h; remove initialization
- of 'next' field.
- (hashtable): Now an aray of pointer-to-HASHTAB, not INSTAB.
- (printop): Mark pointer to OPSPEC as const.
- (install): Remove; fold into init_disasm.
- (m88kdis): Update to ihashtab_initialized to 1 after calling
- init_disasm. entry_ptr now iterates through HASHTABs, not
- INSTABs.
- (init_disasm): Iterate through the instructions and add to
- hashtable[].
-
-2002-11-16 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * tic4x-dis.c: (c4x_print_op): Add support for the new argument
- format. Fix bug in 'N' register printer.
-
-2002-11-12 Segher Boessenkool <segher@koffie.nl>
-
- * ppc-dis.c (print_insn_powerpc): Correct condition register display.
-
-2002-11-07 Aldy Hernandez <aldyh@redhat.com>
-
- * ppc-opc.c (EVUIMM_4): Change bit size to 32.
- (EVUIMM_2): Same.
- (EVUIMM_8): Same.
-
-2002-11-07 Klee Dienes <kdienes@apple.com>
-
- * Makefile.am (ia64-asmtab.c): Update to use the new '--srcdir'
- argument to ia64-gen.
- Regenerate dependencies for ia64-len.lo.
- * Makefile.in: Regenerate.
- * ia64-gen.c: Convert to use getopt(). Add the standard GNU
- options, as well as '--srcdir', which controls the directory in
- which ia64-gen looks for the sources it uses to generate the
- output table. Add a 'const' to the declaration of the final
- output table. Call xmalloc_set_program_name to set the program
- name.
- * ia64-asmtab.c: Regenerate.
-
-2002-11-07 Nick Clifton <nickc@redhat.com>
-
- * ia64-gen.c: Fix comment formatting and compile time warnings.
- * ia64-opc-a.c: Fix compile time warnings.
- * ia64-opc-b.c: Likewise.
- * ia64-opc-d.c: Likewise.
- * ia64-opc-f.c: Likewise.
- * ia64-opc-i.c: Likewise.
- * ia64-opc-m.c: Likewise.
- * ia64-opc-x.c: Likewise.
-
-2002-11-06 Aldy Hernandez <aldyh@redhat.com>
-
- * ppc-opc.c: Change RD to RS for evmerge*.
-
-2002-10-07 Nathan Tallent <eraxxon@alumni.rice.edu>
-
- * sparc-opc.c (sparc_opcodes) <fb, fba, fbe, fbz, fbg, fbge,
- fbl, fble, fblg, fbn, fbne, fbnz, fbo, fbu, fbue, fbug, fbuge,
- fbul, fbule>: Add conditional/unconditional branch
- classification.
-
-2002-10-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-dis.c (print_insn): Treat bitmask and branch operands
- at the end.
-
-2002-09-30 Gavin Romig-Koch <gavin@redhat.com>
- Ken Raeburn <raeburn@cygnus.com>
- Aldy Hernandez <aldyh@redhat.com>
- Eric Christopher <echristo@redhat.com>
- Richard Sandiford <rsandifo@redhat.com>
-
- * mips-dis.c (print_insn_arg): Handle '[', ']', 'e' and '%'.
- (mips_isa_type): Handle bfd_mach_mips4120, bfd_mach_mips5400
- and bfd_mach_mips5500.
- * mips-opc.c (V1): Include INSN_4111 and INSN_4120.
- (N411, N412, N5, N54, N55): New convenience defines.
- (mips_builtin_opcodes): Add vr4120, vr5400 and vr5500 opcodes.
- Change dmadd16 and madd16 from V1 to N411.
-
-2002-09-26 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips-dis.c (print_insn_mips): Always allow disassembly of
- 32-bit jalx opcode.
-
-2002-09-24 Nick Clifton <nickc@redhat.com>
-
- * po/de.po: Updated German translation.
-
-2002-09-21 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * po/POTFILES.in: Regenerate.
-
-2002-09-20 Nick Clifton <nickc@redhat.com>
-
- * ppc-opc.c (CRFD, CRFS): Add PPC_OPERAND_CR flag so that cr
- register names are accepted.
-
-2002-09-17 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * tic4x-dis.c: Add function declarations and ATTRIBUTE_UNUSED.
- Convert functions to K&R format.
-
-2002-09-13 Nick Clifton <nickc@redhat.com>
-
- * ppc-opc.c (MFDEC2): Include Book-E.
- (PPCCHLK64): New opcode mask.
- (evsubw, evsubiw, evmr, evnot, isellt, iselgt, iseleq, mfpid,
- mfcsrr0, mfcsrr1, mfdear, mfesr, mfivpr, mfusprg0, mftbl,
- mftbu, mfpir, mfdbsr, mfdbcr0, mfdbcr1, mfdbcr2, mfiac1,
- mfiac2, mfiac3, mfiac4, mfdac1, mfdac2, mfdvc1, mfdvc2, mftsr,
- mftcr, mfivor0, mfivor1, mfivor2, mfivor3, mfivor4, mfivor5,
- mfivor6, mfivor7, mfivor8, mfivor9, mfivor10, mfivor11,
- mfivor12, mfivor13, mfivor14, mfivor15, mfbbear, mfmcsrr0,
- mfmcsrr1, mfmcsr, mtpid, mtdecar, mtcsrr0, mtcsrr1, mtdear,
- mtesr, mtivpr, mtusprg0, mtsprg4, mtsprg5, mtsprg6, mtsprg7,
- mtdbsr, mtdbcr0, mtdbcr1, mtdbcr2, mtiac1, mtiac2, mtiac3,
- mtiac4, mtdac1, mtdac2, mtdvc1, mtdvc2, mttsr, mttcr, mtivor0,
- mtivor1, mtivor2, mtivor3, mtivor4, mtivor5, mtivor6, mtivor7,
- mtivor8, mtivor9, mtivor10, mtivor11, mtivor12, mtivor13,
- mtivor14, mtivor15, mtbbear, mtmcsrr0, mtmcsrr1, mtmcsr): New
- Book-E instructions.
- (evfsneg): Fix opcode value.
- (dcbtstlse, dcbtlse, icblce, dcblce, icbtsle): Use PPCCHLK64
- mask.
- (mcrxr64, tlbivaxe, tlbsxe, tlbsxe.): Restrict to 64-bit
- Book-E.
- (extsw): Restrict to 64-bit PPC instruction sets.
- (extsw.): Does not exist in 64-bit Book-E.
- (powerpc_macro): Remove mftbl, mftbu and mftb Book-E macros as
- they are no longer needed.
-
-2002-09-12 Gary Hade <garyhade@us.ibm.com>
-
- * ppc-dis.c (powerpc_dialect): Add missing PPC_OPCODE_CLASSIC.
-
-2002-09-11 Nick Clifton <nickc@redhat.com>
-
- * po/da.po: Updated Danish translation file.
-
-2002-09-04 Nick Clifton <nickc@redhat.com>
-
- * ppc-opc.c (extsw, extsw.): Do not allow for the BookE32.
-
-2002-09-04 Nick Clifton <nickc@redhat.com>
-
- * disassemble.c (disassembler_usage): Add invocation of
- print_ppc_disassembler_options.
- * ppc-dis.c (print_ppc_disassembler_options): New function.
-
-2002-09-04 Nick Clifton <nickc@redhat.com>
-
- * ppc-opc.c: The BookE implementations of the TLBWE and TLBRE
- instructions do not take any arguments.
-
-2002-09-02 Nick Clifton <nickc@redhat.com>
-
- * v850-opc.c: Remove redundant references to V850EA architecture.
-
-2002-09-02 Alan Modra <amodra@bigpond.net.au>
-
- * arc-opc.c: Include bfd.h.
- (arc_get_opcode_mach): Subtract off base bfd_mach value.
-
-2002-08-30 Alan Modra <amodra@bigpond.net.au>
-
- * v850-dis.c (disassemble): Remove bfd_mach_v850ea case.
-
- * mips-dis.c (_print_insn_mips): Don't use hard-coded mach constants.
-
-2002-08-28 Svein E. Seldal <Svein.Seldal@solidas.com>
-
- * configure.in: Added bfd_tic4x_arch.
- * configure: Regenerate.
- * Makefile.am: Added tic4x-dis.o target.
- * Makefile.in: Regenerate.
-
-2002-08-28 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
-
- * disassemble.c: Added tic4x target and c4x
- disassembler routine.
- * tic4x-dis.c: New file.
-
-2002-08-16 Christian Groessler <chris@groessler.org>
-
- * z8k-dis.c (unparse_instr): case CLASS_BA: Designate hex
- values as those.
- * z8kgen.c (opt): Fix definition of "in rd,imm16" opcode.
- * z8k-opc.h: Regenerated with new z8kgen.c.
-
-2002-08-19 Elena Zannoni <ezannoni@redhat.com>
-
- From matthew green <mrg@redhat.com>
-
- * ppc-dis.c (powerpc_dialect): Support `-m500', `-m500x2' and
- `-mefs'. Turn off AltiVec for E500 and efs.
- (print_insn_powerpc): Don't print an AltiVec instruction if the
- dialect is not efs.
-
- * ppc-opc.c (insert_pmrn, extract_pmrn, insert_ev2, extract_ev2,
- insert_ev4, extract_ev4, insert_ev8, extract_ev8): New functions
- for extracting pmrn/evld/evstd/etc operands.
- (CRB, CRFD, CRFS, DC, RD): New instruction fields.
- (CT): Make this equal to RD + 1.
- (PMRN): New operand.
- (RA): Update.
- (EVUIMM, EVUIMM_2, EVUIMM_4, EVUIMM_8): New operands.
- (WS): Update.
- (EVSEL, EVSEL_MASK): New instruction form and mask for EVSEL.
- (ISEL, ISEL_MASK): New instruction form and mask for ISEL.
- (XISEL, XISEL_MASK): New instruction form and mask for ISEL.
- (CTX, CTX_MASK): New instruction form and mask for context cache
- instructions.
- (UCTX, UCTX_MASK): New instruction form and mask for user context
- cache instructions.
- (XC, XC_MASK, XUC, XUC_MASK): New instruction forms.
- (CLASSIC): New define.
- (PPCESPE): New define.
- (PPCISEL, , PPCBRLK, PPCPMR, PPCCHLK, PPCRFMI): New
- defines for integer select, cache control, branch
- locking, power management, cache locking and machine check
- APU instructions, respectively.
- (efsabs, efsnabs, efsneg, efsadd, efssub, efsmul,
- efsdiv, efscmpgt, efscmplt, efscmpeq, efststgt, efststlt,
- efststeq, efscfui, efsctuiz, efscfsi, efscfuf, efscfsf,
- efsctui, efsctsi, efsctsiz, efsctuf, efsctsf,
- evaddw, evaddiw, evsubfw, evsubifw, evabs, evneg, evextsb,
- evextsh, evrndw, evcntlzw, evcntlsw, brinc, evand, evandc, evor,
- evorc, evxor, eveqv, evnand, evnor, evrlw, evrlwi, evslw, evslwi,
- evsrws, evsrwu, evsrwis, evsrwiu, evsplati, evsplatfi, evmergehi,
- evmergelo, evmergehilo, evmergelohi, evcmpgts, evcmpgtu, evcmplts,
- evcmpltu, evcmpeq, evsel, evldd, evlddx, evldw, evldwx, evldh,
- evldhx, evlwhe, evlwhex, evlwhou, evlwhoux, evlwhos, evlwhosx,
- evlwwsplat, evlwwsplatx, evlwhsplat, evlwhsplatx, evlhhesplat,
- evlhhesplatx, evlhousplat, evlhousplatx, evlhossplat, evlhossplatx,
- evstdd, evstddx, evstdw, evstdwx, evstdh, evstdhx, evstwwe,
- evstwwex, evstwwo, evstwwox, evstwhe, evstwhex, evstwho, evstwhox,
- evfsabs, evfsnabs, evfsneg, evfsadd, evfssub, evfsmul, evfsdiv,
- evfscmpgt, evfscmplt, evfscmpeq, evfststgt, evfststlt, evfststeq,
- evfscfui, evfsctuiz, evfscfsi, evfscfuf, evfscfsf, evfsctui,
- evfsctsi, evfsctsiz, evfsctuf, evfsctsf, evsabs, evsnabs, evsneg,
- evsadd, evssub, evsmul, evsdiv, evscmpgt, evsgmplt, evsgmpeq,
- evststgt, evststlt, evststeq, evscfui, evscfsi, evscfuf, evscfsf,
- evsctui, evsctuiz, evsctsi, evsctsiz, evsctuf, evsctsf, evmhossf,
- evmhossfa, evmhosmf, evmhosmfa, evmhosmi, evmhosmia, evmhoumi,
- evmhoumia, evmhessf, evmhessfa, evmhesmf, evmhesmfa, evmhesmi,
- evmhesmia, evmheumi, evmheumia, evmhossfaaw, evmhossiaaw,
- evmhosmfaaw, evmhosmiaaw, evmhousiaaw, evmhoumiaaw, evmhessfaaw,
- evmhessiaaw, evmhesmfaaw, evmhesmiaaw, evmheusiaaw, evmheumiaaw,
- evmhossfanw, evmhossianw, evmhosmfanw, evmhosmianw, evmhousianw,
- evmhoumianw, evmhessfanw, evmhessianw, evmhesmfanw, evmhesmianw,
- evmheusianw, evmheumianw, evmhogsmfaa, evmhogsmiaa, evmhogumiaa,
- evmhegsmfaa, evmhegsmiaa, evmhegumiaa, evmhogsmfan, evmhogsmian,
- evmhogumian, evmhegsmfan, evmhegsmian, evmhegumian, evmwhssf,
- evmwhssfa, evmwhssfaa, evmwhssmaa, evmwhsmfaa, evmwhsmiaa,
- evmwhusiaa, evmwhumiaa, evmwhssfan, evmwhssian, evmwhsmfan,
- evmwhsmian, evmwhusian, evmwhumian, evmwhgssfaa, evmwhgsmfaa,
- evmwhgsmiaa, evmwhgumiaa, evmwhgssfan, evmwhgsmfan, evmwhgsmian,
- evmwhgumian, evmwhsmf, evmwhsmfa, evmshsmi, evmshsmia, evmshumi,
- evmshumia, evmmlssf, evmmlssfa, evmwlsmf, evmwlsmfa, evmwlumi,
- evmwlumia, evmwlssfaaw, evmwlssiaaw, evmwlsmfaaw, evmwlsmiaaw,
- evmwlusiaaw, evmwlumiaaw, evmwissfanw, evmwissianw, evmwlsmfanw,
- evmwlsmianw, evmwlusianw, evmwlumianw, evmwssf, evmwssfa,
- evmwsmf, evmwsmfa, evmwsmi, evmwsmia, evmwumi, evmwumia,
- evmwssfaa, evmwsmfaa, evmwsmiaa, evmwumiaa, evmwssfan, evmwsmfan,
- evmwsmian, evmwumian, evaddssiaaw, evaddsmiaaw, evaddusiaaw,
- evaddumiaaw, evsubfssiaaw, evsubfsmiaaw, evsubfusiaaw,
- evsubfumiaaw, evmra, evdivws, evdivws): New e500x2 Core Complex
- instructions.
- (rfmci): New machine check APU instruction.
- (isel): New integer select APU instructino.
- (icbtls, icbtlse, icblc, icblce, dcbtls, dcbtlse, dcbtstls,
- dcbtstlse, dcblc, dcblce): New cache control APU instructions.
- (mtspefscr, mfspefscr): New instructions.
- (mfpmr, mtpmr): New performance monitor APU instructions.
- (savecontext): New context cache APU instructions.
- (bblels, bbelr): New branch locking APU instructions.
- (bblels, bbelr): New instructions.
- (mftbl, mftbu, mftb): Set as CLASSIC instructions. Add BOOKE alias.
-
-2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-opc.c: Update call operand to accept the page definition.
- Identify instructions that are branches and calls to generate a
- RL_JUMP relocation.
-
-2002-08-13 Stephane Carrez <stcarrez@nerim.fr>
-
- * m68hc11-dis.c (print_insn): Take into account 68HC12 memory
- banks and fix disassembling of call instruction.
- (print_indexed_operand): New param to tell whether
- it was an indirect addressing operand (for disassembling call).
-
-2002-08-09 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
-
-2002-08-08 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
-
- * mips-opc.c (mips_builtin_opcodes): Remove "dla" and "la" as
- aliases to "daddiu" and "addiu".
-
-2002-07-30 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
-
-2002-07-25 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
- * po/es.po: Updated Spanish translation.
- * po/pr_BR.po: Updated Brazilian Portuguese translation.
- * po/tr.po: Updated Turkish translation.
- * po/fr.po: Updated French translation.
-
-2002-07-24 Nick Clifton <nickc@redhat.com>
-
- * po/sv.po: Updated Swedish translation.
- * po/es.po: Updated Spanish translation.
- * po/pr_BR.po: Updated Brazilian Portuguese translation.
-
-2002-07-23 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * po/POTFILES.in: Regenerate.
-
-2002-07-23 Nick Clifton <nickc@redhat.com>
-
- * po/fr.po: Updated French translation.
- * po/pr_BR.po: New Brazilian Portuguese translation.
- * po/id.po: Updated Indonesian translation.
- * configure.in (LINGUAS): Add pr_BR.
- * configure: Regenerate.
-
-2002-07-18 Denis Chertykov <denisc@overta.ru>
- Frank Ch. Eigler <fche@redhat.com>
- Alan Lehotsky <alehotsky@cygnus.com>
- matthew green <mrg@redhat.com>
-
- * configure.in: Add support for ip2k.
- * configure: Regenerate.
- * Makefile.am: Add support for ip2k.
- * Makefile.in: Regenerate.
- * disassemble.c: Add support for ip2k.
- * ip2k-asm.c: New generated file.
- * ip2k-desc.c: New generated file.
- * ip2k-desc.h: New generated file.
- * ip2k-dis.c: New generated file.
- * ip2k-ibld.c: New generated file.
- * ip2k-opc.c: New generated file.
- * ip2k-opc.h: New generated file.
-
-2002-07-17 David Mosberger <davidm@hpl.hp.com>
-
- * ia64-opc-b.c (bWhc): New macro.
- (mWhc): Ditto.
- (OpPaWhcD): Ditto.
- (ia64_opcodes_b): Correct patterns for indirect call
- instructions to use 3-bit "wh" field.
- * ia64-asmtab.c: Regnerate.
-
-2002-07-09 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips-dis.c (mips_isa_type): Add MIPS16 insn handling.
- * mips-opc.c (I16): New define.
- (mips_builtin_opcodes): Make jalx an I16 insn.
-
-2002-06-18 Dave Brolley <brolley@redhat.com>
-
- * po/POTFILES.in: Add frv-*.[ch].
- * disassemble.c (ARCH_frv): New macro.
- (disassembler): Handle bfd_arch_frv.
- * configure.in: Support frv_bfd_arch.
- * Makefile.am (HFILES): Add frv-*.h.
- (CFILES): Add frv-*.c
- (ALL_MACHINES): Add frv-*.lo.
- (CLEANFILES): Add stamp-frv.
- (FRV_DEPS): New variable.
- (stamp-frv): New target.
- (frv-asm.lo): New target.
- (frv-desc.lo): New target.
- (frv-dis.lo): New target.
- (frv-ibld.lo): New target.
- (frv-opc.lo): New target.
- (frv-*.[ch]): New files.
-
-2002-06-18 Ben Elliston <bje@redhat.com>
-
- * Makefile.am (CGENDEPS): Remove unnecessary stamp-cgen.
- * Makefile.in: Regenerate.
-
-2002-06-08 Alan Modra <amodra@bigpond.net.au>
-
- * a29k-dis.c: Replace CONST with const.
- * h8300-dis.c: Likewise.
- * m68k-dis.c: Likewise.
- * or32-dis.c: Likewise.
- * sparc-dis.c: Likewise.
-
-2002-06-04 Jason Thorpe <thorpej@wasabisystems.com>
-
- * configure.in: Add "sh5*-*" to list of targets which include
- sh64 support.
- * configure: Regenerate.
-
-2002-05-31 Chris G. Demetriou <cgd@broadcom.com>
-
- * mips-opc.c: Clean up a few whitespace issues, and sort a
- few entries understanding that 'x' follows 'w' in the alphabet.
-
-2002-05-31 Chris G. Demetriou <cgd@broadcom.com>
- Ed Satterthwaite <ehs@broadcom.com>
-
- * mips-opc.c: Add support for SB-1 MDMX subset and extensions.
-
-2002-05-31 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * po/POTFILES.in: Regenerate.
-
-2002-05-30 Chris G. Demetriou <cgd@broadcom.com>
- Ed Satterthwaite <ehs@broadcom.com>
-
- * mips-dis.c (print_insn_arg): Add support for 'O', 'Q', 'X', 'Y',
- and 'Z' formats, for MDMX.
- (mips_isa_type): Add MDMX instructions to the ISA
- bit mask for bfd_mach_mipsisa64.
- * mips-opc.c: Add support for MDMX instructions.
- (MX): New definition.
-
- * mips-dis.c: Update copyright years to include 2002.
-
-2002-05-30 Diego Novillo <dnovillo@redhat.com>
-
- * d10v-opc.c (d10v_opcodes): `btsti' does not modify its
- arguments.
-
-2002-05-28 Kuang Hwa Lin <kuang@sbcglobal.net>
-
- * configure.in: Add DLX configuraton support.
- * configure: Regenerate.
- * Makefile.am: Add DLX configuraton support.
- * Makefile.in: Regenerate.
- * disassemble.c: Add DLX support.
- * dlx-dis.c: New file.
-
-2002-05-25 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (sh-dis.lo): Don't put make commands in deps.
- * Makefile.in: Regenerate.
- * arc-dis.c: Use #include "" instead of <> for local header files.
- * m68k-dis.c: Likewise.
-
-2002-05-22 J"orn Rennecke <joern.rennecke@superh.com>
-
- * Makefile.am (sh-dis.lo): Compile with @archdefs@.
- * Makefile.in: regenerate.
-
- * sh-dis.c (print_insn_sh): If coff and bfd_mach_sh, use arch_sh4
- for disassembly.
-
-2002-05-22 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips-opc.c (mips_builtin_opcodes): Add drol, dror macros.
-
-2002-05-17 J"orn Rennecke <joern.rennecke@superh.com>
-
- * disassemble.c (disassembler): Just use print_insn_sh for bfd_arch_sh.
- * sh-dis.c (LITTLE_BIT): Delete.
- (print_insn_sh, print_insn_shl): Deleted.
- (print_insn_shx): Renamed to
- (print_insn_sh). No longer static. Handle SHmedia instructions.
- Use info->endian to determine endianness.
- * sh64-dis.c (print_insn_sh64, print_insn_sh64l): Delete.
- (print_insn_sh64x): No longer static. Renamed to
- (print_insn_sh64). Removed pfun_compact and endian arguments.
- If we got an uneven address to indicate SHmedia, adjust it.
- Return -2 for SHcompact instructions.
-
-2002-05-17 Alan Modra <amodra@bigpond.net.au>
-
- * acinclude.m4 (AM_INSTALL_LIBBFD): Fake to fool autotools.
- * configure.in: Invoke AM_INSTALL_LIBBFD.
- * Makefile.am (install-data-local): Move to..
- (install_libopcodes): .. New target.
- (uninstall_libopcodes): Likewise.
- (install-bfdlibLTLIBRARIES): Likewise.
- (uninstall-bfdlibLTLIBRARIES): Likewise.
- (bfdlibdir): New.
- (bfdincludedir): New.
- (lib_LTLIBRARIES): Rename to bfdlib_LTLIBRARIES.
- * aclocal.m4: Regenerate.
- * configure: Regenerate.
- * Makefile.in: Regenerate.
-
-2002-05-15 Nick Clifton <nickc@cambridge.redhat.com>
-
- * fr30-asm.c: Regenerate.
- * fr30-desc.c: Regenerate.
- * fr30-dis.c: Regenerate.
- * m32r-asm.c: Regenerate.
- * m32r-desc.c: Regenerate.
- * m32r-dis.c: Regenerate.
- * openrisc-asm.c: Regenerate.
- * openrisc-desc.c: Regenerate.
- * openrisc-dis.c: Regenerate.
- * xstormy16-asm.c: Regenerate.
- * xstormy16-desc.c: Regenerate.
- * xstormy16-dis.c: Regenerate.
-
-2002-05-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips-dis.c (is_newabi): EABI is not a NewABI.
-
-2002-05-13 Jason Thorpe <thorpej@wasabisystems.com>
-
- * configure.in (shle-*-*elf*): Include sh64 support.
- * configure: Regenerate.
-
-2002-04-28 Jason Thorpe <thorpej@wasabisystems.com>
-
- * vax-dis.c (print_insn_arg): Pass the insn info to print_insn_mode.
- (print_insn_mode): Print some basic info about floating point values.
-
-2002-05-09 Anton Blanchard <anton@samba.org>
-
- * ppc-opc.c: Add "tlbiel" for POWER4.
-
-2002-05-07 Graydon Hoare <graydon@redhat.com>
-
- * cgen-dis.in: (print_insn_@arch@): Cache list of opened CPUs rather
- than just most-recently-opened.
-
-2002-05-01 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c: Add "tlbsx." and "tlbsxe." for booke.
-
-2002-04-24 Christian Groessler <chris@groessler.org>
-
- * z8k-dis.c (print_insn_z8k): Set disassemble_info to 2
- bytes_per_chunk, 6 bytes_per_line for nicer display of the hex
- codes.
- (z8k_lookup_instr): CLASS_IGNORE case added.
- (output_instr): Don't print hex codes, they are already
- printed.
- (unpack_instr): ARG_NIM4 case added. ARG_NIM8 case
- fixed. Support CLASS_BIT_1OR2 and CLASS_IGNORE cases.
- (unparse_instr): Fix base and indexed addressing disassembly:
- The index is inside the brackets.
- * z8kgen.c (gas): Add ARG_NIM4 and CLASS_IGNORE defines.
- (opt): Fix shift left/right arithmetic/logical byte defines:
- The high byte of the immediate word is ignored by the
- processor.
- Fix n parameter of ldm opcodes: The opcode contains (n-1).
- (args): Fix "n" entry.
- (toks): Add "nim4" and "iiii" entries.
- * z8k-opc.h: Regenerated with new z8kgen.c.
-
-2002-04-24 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/id.po: New Indonesian translation.
- * configure.in (ALL_LIGUAS): Add id.po
- * configure: Regenerate.
-
-2002-04-17 matthew green <mrg@redhat.com>
-
- * ppc-opc.c (powerpc_opcode): Fix dssall operand list.
-
-2002-04-04 Alan Modra <amodra@bigpond.net.au>
-
- * dep-in.sed: Cope with absolute paths.
- * Makefile.am (dep.sed): Subst TOPDIR.
- Run "make dep-am".
- * Makefile.in: Regenerate.
- * ppc-opc.c: Whitespace.
- * s390-dis.c: Fix copyright date.
-
-2002-03-23 matthew green <mrg@redhat.com>
-
- * ppc-opc.c (vmaddfp): Fix operand order.
-
-2002-03-21 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2002-03-21 Anton Blanchard <anton@samba.org>
-
- * ppc-opc.c: Add optional field to mtmsrd.
- (MTMSRD_L, XRLARB_MASK): Define.
-
-2002-03-18 Jan Hubicka <jh@suse.cz>
-
- * i386-dis.c (prefix_name): Fix handling of 32bit address prefix
- in 64bit mode.
- (print_insn) Likewise.
- (putop): Fix handling of 'E'
- (OP_E, OP_OFF): handle 32bit addressing mode in 64bit.
- (ptr_reg): Likewise.
-
-2002-03-18 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/fr.po: Updated version.
-
-2002-03-16 Chris Demetriou <cgd@broadcom.com>
-
- * mips-opc.c (M3D): Tweak comment.
- (mips_builtin_op): Add comment indicating that opcodes of the
- same name must be placed together in the table, and sort
- the "recip.fmt", "recip1.fmt", "recip2.fmt", "rsqrt.fmt",
- "rsqrt1.fmt", and "rsqrt2.fmt" opcodes by name.
-
-2002-03-16 Nick Clifton <nickc@cambridge.redhat.com>
-
- * Makefile.am: Tidy up sh64 rules.
- * Makefile.in: Regenerate.
-
-2002-03-15 Chris G. Demetriou <cgd@broadcom.com>
-
- * mips-dis.c: Update copyright years.
-
-2002-03-15 Chris G. Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (mips_isa_type): Add MIPS3D instructions to the ISA
- bit masks for bfd_mach_mips_sb1 and bfd_mach_mipsisa64. Add
- comments for bfd_mach_mipsisa32 and bfd_mach_mipsisa64 that
- indicate that they should dissassemble all applicable
- MIPS-specified ASEs.
- * mips-opc.c: Add support for MIPS-3D instructions.
- (M3D): New definition.
-
- * mips-opc.c: Update copyright years.
-
-2002-03-15 Chris G. Demetriou <cgd@broadcom.com>
-
- * mips-opc.c (mips_builtin_opcodes): Sort bc<N> opcodes by name.
-
-2002-03-15 Chris Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (is_newabi): Fix ABI decoding.
-
-2002-03-14 Chris G. Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (mips_isa_type): Fix formatting of bfd_mach_mipsisa32
- and bfd_mach_mipsisa64 cases to match the rest.
-
-2002-03-13 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/fr.po: Updated version.
-
-2002-03-13 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c: Add optional `L' field to tlbie.
- (XRTLRA_MASK): Define.
-
-2002-03-06 Chris Demetriou <cgd@broadcom.com>
-
- * mips-opc.c (mips_builtin_opcodes): Mark "pref" as being
- present on I4.
-
- * mips-opc.c (mips_builtin_opcodes): Add "movn.ps" and "movz.ps".
-
-2002-03-05 Paul Koning <pkoning@equallogic.com>
-
- * pdp11-opc.c: Fix "mark" operand type. Fix operand types
- for float opcodes that take float operands. Add alternate
- names (xxxD vs. xxxF) for float opcodes.
- * pdp11-dis.c (print_operand): Clean up formatting for mode 67.
- (print_foperand): New function to handle float opcode operands.
- (print_insn_pdp11): Use print_foperand to disassemble float ops.
-
-2002-02-27 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/de.po: Updated.
-
-2002-02-26 Brian Gaeke <brg@dgate.org>
-
- * Makefile.am (install-data-local): Install dis-asm.h.
-
-2002-02-26 Nick Clifton <nickc@cambridge.redhat.com>
-
- * configure.in (LINGUAS): Add de.po.
- * configure: Regenerate.
- * po/de.po: New file.
-
-2002-02-25 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-dis.c (powerpc_dialect): Handle power4 option.
- * ppc-opc.c (insert_bdm): Correct description of "at" branch
- hints. Test PPC_OPCODE_POWER4 to determine branch hint flavour.
- (extract_bdm, insert_bdp, extract_bdp, valid_bo): Likewise.
- (BOFM64, BOFP64, BOTM64, BOFP64): Rename to BOFM4, BOFP4 etc.
- (BODNZM64, BODNZP64, BODZM64, BODZP64): Likewise.
- (PPCCOM32, PPCCOM64): Delete.
- (NOPOWER4, POWER4): Define.
- (powerpc_opcodes): Replace occurences of PPCCOM32 with NOPOWER4,
- and PPCCOM4 with POWER4 so that "at" style branch hint opcodes
- are enabled for power4 rather than ppc64.
-
-2002-02-20 Tom Rix <trix@redhat.com>
-
- * ppc-opc.c (powerpc_operands): Add WS field. Use for tlbre, tlbwe.
-
-2002-02-19 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390-dis.c (init_disasm): Use renamed architecture defines.
-
-2002-02-19 matthew green <mrg@redhat.com>
-
- * ppc-opc.c (powerpc_dialect): Fix comment; BookE is not Motorola
- specific.
-
-2002-02-18 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/tr.po: Updated translation.
-
-2002-02-15 Richard Henderson <rth@redhat.com>
-
- * alpha-opc.c (alpha_opcodes): Fix thinko in ret pseudo
- disassembly mask.
-
-2002-02-15 Richard Henderson <rth@redhat.com>
-
- * alpha-opc.c (alpha_opcodes): Add simple pseudos for
- lda, ldah, jmp, ret.
-
-2002-02-14 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/da.po: Updated translation.
-
-2002-02-12 Graydon Hoare <graydon@redhat.com>
-
- * cgen-asm.in (parse_insn_normal): Change call from
- @arch@_cgen_parse_operand to cd->parse_operand, to
- facilitate CGEN_ASM_INIT_HOOK doing useful work.
-
-2002-02-11 Alexandre Oliva <aoliva@redhat.com>
-
- * sparc-dis.c (print_insn_sparc): Make sure 0xFFFFFFFF is not
- sign-extended.
-
-2002-02-11 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: "make dep-am".
- * Makefile.in: Regenerate.
- * aclocal.m4: Regenerate.
- * config.in: Regenerate.
- * configure: Regenerate.
-
-2002-02-10 Hans-Peter Nilsson <hp@bitrange.com>
-
- * configure.in <bfd_sh_arc>: For sh-* and shl-*, enable sh64
- support only for sh-*-*elf*, shl-*-*elf*, sh-*-linux* and
- shl-*-linux*.
- * configure: Regenerate.
-
-2002-02-10 Daniel Jacobowitz <drow@mvista.com>
-
- * cgen-dis.c: Add prototypes for count_decodable_bits
- and add_insn_to_hash_chain.
-
-2002-02-08 Alexandre Oliva <aoliva@redhat.com>
-
- * configure.in <bfd_sh_arc>: Enable sh64 support on sh-*.
- * configure: Rebuilt.
-
-2002-02-08 Ivan Guzvinec <ivang@opencores.org>
-
- * or32-opc.c: Fix compile time warning messages.
- * or32-dis.c: Fix compile time warning messages.
-
-2002-02-08 Alexandre Oliva <aoliva@redhat.com>
-
- Contribute sh64-elf.
- 2001-10-08 Nick Clifton <nickc@cambridge.redhat.com>
- * sh64-opc.c: Regenerate.
- 2001-03-13 DJ Delorie <dj@redhat.com>
- * sh64-opc.h: Rename A_RESV_Fx to A_REUSE_PREV so that its
- purpose is more obvious.
- * sh64-opc.c (shmedia_table): Ditto.
- * sh64-dis.c (initialize_shmedia_opcode_mask_table): Ditto.
- (print_insn_shmedia): Ditto.
- 2001-03-12 DJ Delorie <dj@redhat.com>
- * sh64-opc.c: Adjust comments to reflect reality: replace bits
- 3:0 with zeros (not "reserved"), replace "rrrrrr" with
- "gggggg" for two-operand floating point opcodes. Remove
- "fsina".
- 2001-01-08 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh64-dis.c (print_insn_shmedia) <failing read_memory_func>:
- Correct printing of .byte:s. Return number of printed bytes or
- -1; never 0.
- (print_insn_sh64x) <not CRT_SH5_ISA16>: Ditto. Print as .byte:s
- to next four-byte-alignment if insn or data is not aligned.
- 2001-01-06 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh64-dis.c: Update comments and fix comment formatting.
- (initialize_shmedia_opcode_mask_table) <case A_IMMM>:
- Abort instead of setting length to 0.
- (crange_qsort_cmpb, crange_qsort_cmpl, crange_bsearch_cmpb,
- crange_bsearch_cmpl, sh64_get_contents_type,
- sh64_address_in_cranges): Move to bfd/elf32-sh64.c.
- 2001-01-05 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh64-opc.c: Remove #if 0:d entries for instructions not found in
- SH-5/ST50-023-04: fcosa.s, fsrra.s and prefo.
- 2000-12-30 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh64-dis.c (print_insn_shmedia): Display MOVI/SHORI-formed
- address with same prefix as SHcompact.
- In the disassembler, use a .cranges section for linked executables.
- * sh64-dis.c (SAVED_MOVI_R, SAVED_MOVI_IMM): Move to head of file
- and update for using structure in info->private_data.
- (struct sh64_disassemble_info): New.
- (is_shmedia_p): Delete.
- (crange_qsort_cmpb): New function.
- (crange_qsort_cmpl, crange_bsearch_cmpb): New functions.
- (crange_bsearch_cmpl, sh64_address_in_cranges): New functions.
- (init_sh64_disasm_info, sh64_get_contents_type_disasm): New functions.
- (sh64_get_contents_type, sh64_address_is_shmedia): New functions.
- (print_insn_shmedia): Correct displaying of address after MOVI/SHORI
- pair. Display addresses for linked executables only.
- (print_insn_sh64x_media): Initialize info->private_data by calling
- init_sh64_disasm_info.
- (print_insn_sh64x): Ditto. Find out type of contents by calling
- sh64_contents_type_disasm. Display data regions using ".long" and
- ".byte" similar to unrecognized opcodes.
- 2000-12-19 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh64-dis.c (is_shmedia_p): Check info->section and look for ISA
- information in section flags before considering symbols. Don't
- assume an info->mach setting of bfd_mach_sh5 means SHmedia code.
- * configure.in (bfd_sh_arch): Check presence of sh64 insns by
- matching $target $canon_targets instead of looking at the
- now-removed -DINCLUDE_SHMEDIA in $targ_cflags.
- * configure: Regenerate.
- 2000-11-25 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh64-opc.c (shmedia_creg_table): New.
- * sh64-opc.h (shmedia_creg_info): New type.
- (shmedia_creg_table): Declare.
- * sh64-dis.c (creg_name): New function.
- (print_insn_shmedia): Use it.
- * disassemble.c (disassembler) [ARCH_sh, INCLUDE_SHMEDIA]: Map
- bfd_mach_sh5 to print_insn_sh64 if big-endian and to
- print_insn_sh64l if little-endian.
- * sh64-dis.c (print_insn_shmedia): Make r unsigned.
- (print_insn_sh64l): New.
- (print_insn_sh64x): New.
- (print_insn_sh64x_media): New.
- (print_insn_sh64): Break out code to print_insn_sh64x and
- print_insn_sh64x_media.
- 2000-11-24 Hans-Peter Nilsson <hpn@cygnus.com>
- * sh64-opc.h: New file
- * sh64-opc.c: New file
- * sh64-dis.c: New file
- * Makefile.am: Add sh64 targets.
- (HFILES): Add sh64-opc.h.
- (CFILES): Add sh64-opc.c and sh64-dis.c.
- (ALL_MACHINES): Add sh64 files.
- * Makefile.in: Regenerate.
- * configure.in: Add support for sh64 to bfd_sh_arch.
- * configure: Regenerate.
- * disassemble.c [ARCH_all] (INCLUDE_SHMEDIA): Define.
- (disassembler) [ARCH_sh, INCLUDE_SHMEDIA]: Map bfd_mach_sh5 to
- print_insn_sh64.
- * sh-dis.c (print_insn_shx): Handle bfd_mach_sh5 as arch_sh4.
- * po/POTFILES.in: Regenerate.
- * po/opcodes.pot: Regenerate.
-
-2002-02-04 Frank Ch. Eigler <fche@redhat.com>
-
- * cgen-dis.in (print_insn_@arch@): Support disassemble_info.insn_sets.
-
-2002-02-04 Alexandre Oliva <aoliva@redhat.com>
-
- * sh-opc.h (sh_arg_type): Added A_DISP_PC_ABS.
-
-2002-02-01 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am"
- * Makefile.in: Regenerate.
-
-2002-01-31 Ivan Guzvinec <ivang@opencores.org>
-
- * or32-dis.c: New file.
- * or32-opc.c: New file.
- * configure.in: Add support for or32.
- * configure: Regenerate.
- * Makefile.am: Add support for or32.
- * Makefile.in: Regenerate.
- * disassemble.c: Add support for or32.
- * po/POTFILES.in: Regenerate.
- * po/opcodes.pot: Regenerate.
-
-2002-01-27 Daniel Jacobowitz <drow@mvista.com>
-
- * configure: Regenerated.
-
-2002-01-26 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/fr.po: Updated version.
-
-2002-01-25 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/es.po: Updated version.
-
-2002-01-24 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/da.po: New version.
-
-2002-01-23 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/da.po: New file: Spanish translation.
- * configure.in (ALL_LINGUAS): Add da.
- * configure: Regenerate.
-
-2002-01-22 Graydon Hoare <graydon@redhat.com>
-
- * fr30-asm.c: Regenerate.
- * fr30-desc.c: Likewise.
- * fr30-desc.h: Likewise.
- * fr30-dis.c: Likewise.
- * fr30-ibld.c: Likewise.
- * fr30-opc.c: Likewise.
- * fr30-opc.h: Likewise.
- * m32r-asm.c: Likewise.
- * m32r-desc.c: Likewise.
- * m32r-desc.h: Likewise.
- * m32r-dis.c: Likewise.
- * m32r-ibld.c: Likewise.
- * m32r-opc.c: Likewise.
- * m32r-opc.h: Likewise.
- * m32r-opinst.c: Likewise.
- * openrisc-asm.c: Likewise.
- * openrisc-desc.c: Likewise.
- * openrisc-desc.h: Likewise.
- * openrisc-dis.c: Likewise.
- * openrisc-ibld.c: Likewise.
- * openrisc-opc.c: Likewise.
- * openrisc-opc.h: Likewise.
- * xstormy16-desc.c: Likewise.
-
-2002-01-22 Richard Henderson <rth@redhat.com>
-
- * alpha-dis.c (print_insn_alpha): Also mask the base opcode for
- comparison.
-
-2002-01-22 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
- * po/POTFILES.in: Regenerate.
-
-2002-01-19 Richard Earnshaw <rearnsha@arm.com>
-
- * arm-opc.h (arm_opcodes): Use generic rule %5?hb instead of %h.
- * arm-dis.c (print_insn_arm): Don't handle 'h' case.
-
-2002-01-18 Keith Walker <keith.walker@arm.com>
-
- * arm-opc.h (arm_opcodes): Add bxj instruction.
-
-2002-01-17 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/opcodes.pot: Regenerate.
- * po/fr.po: Regenerate.
- * po/sv.po: Regenerate.
- * po/tr.po: Regenerate.
-
-2002-01-16 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/tr.po: Import new version.
-
-2002-01-15 Richard Earnshaw <rearnsha@arm.com>
-
- * arm-opc.h (arm_opcodes): Add patterns for VFP instructions.
- * arm-dis.c (print_insn_arm): Support new disassembly qualifiers for
- VFP bitfields.
-
-2002-01-10 matthew green <mrg@redhat.com>
-
- * xstormy16-asm.c: Regenerate.
- * xstormy16-desc.c: Likewise.
- * xstormy16-desc.h: Likewise.
- * xstormy16-dis.c: Likewise.
- * xstormy16-opc.c: Likewise.
- * xstormy16-opc.h: Likewise.
-
-2002-01-07 Nick Clifton <nickc@cambridge.redhat.com>
-
- * po/es.po: New file: Spanish translation.
- * configure.in (ALL_LINGUAS): Add es.
- * configure: Regenerate.
-
-2001-12-31 Jeffrey A Law (law@redhat.com)
-
- * hppa-dis.c (print_insn_hppa): Handle new 'c' mode completers,
- 'X', 'M', and 'A'. No longer emit a space after 'x' or 's'.
- Always emit a space after 'H'.
-
-2001-12-18 matthew green <mrg@redhat.com>
-
- * ppc-opc.c (PPCVEC): Include PPC_OPCODE_ANY.
-
-2001-12-17 Richard Henderson <rth@redhat.com>
-
- * alpha-opc.c (unop): Encode with RB as $sp.
-
-2001-12-07 Geoffrey Keating <geoffk@redhat.com>
-
- * Makefile.am: Add support for xstormy16.
- * Makefile.in: Regenerate.
- * configure.in: Add support for xstormy16.
- * configure: Regenerate.
- * disassemble.c: Add support for xstormy16.
- * xstormy16-asm.c: New generated file.
- * xstormy16-desc.c: New generated file.
- * xstormy16-desc.h: New generated file.
- * xstormy16-dis.c: New generated file.
- * xstormy16-ibld.c: New generated file.
- * xstormy16-opc.c: New generated file.
- * xstormy16-opc.h: New generated file.
-
-2001-12-06 Richard Henderson <rth@redhat.com>
-
- * alpha-opc.c (alpha_opcodes): Add wh64en.
-
-2001-12-04 Alexandre Oliva <aoliva@redhat.com>
-
- * d10v-opc.c (d10v_predefined_registers): Remove warnings
- introduced in Nov 29's patch.
-
- * d10v-dis.c (print_operand): Apply REGISTER_MASK to `num' of
- unmatched register.
-
- * d10v-dis.c (print_operand): Disregard OPERAND_SP in register
- predefined value.
-
- * d10v-opc.c (RSRC_NOSP): New macro.
- (d10v_operands): Add it.
- (d10v_opcodes): Use RSRC_NOSP in post-decrement "st" and "st2w".
-
-2001-11-29 Alexandre Oliva <aoliva@redhat.com>
-
- * d10v-opc.c (d10v_predefined_registers): Mark `sp' as OPERAND_SP.
- (RSRC_SP): New macro.
- (d10v_operands): Add it.
- (d10v_opcodes): Adjust "st" and "st2w" to use RSRC_SP.
-
-2001-11-23 Lars Brinkhoff <lars@nocrew.org>
-
- * pdp11-dis.c (print_insn_pdp11): Handle illegal instructions.
- Also, break out of the loop as soon as an instruction has been
- printed.
-
-2001-11-17 matthew green <mrg@redhat.com>
-
- * ppc-opc.c (mfvrsave, mtvrsave): New instructions.
-
-2001-11-15 Alan Modra <amodra@bigpond.net.au>
-
- * po/POTFILES.in: Regenerate.
-
- * ppc-opc.c (PPC64): Revert 2001-10-12. Do include PPC_OPCODE_PPC.
- (insert_bat, extract_bat, insert_bba, extract_bba,
- insert_bd, extract_bd, insert_bdm, extract_bdm,
- insert_bdp, extract_bdp, valid_bo,
- insert_bo, extract_bo, insert_boe, extract_boe,
- insert_ds, extract_ds, insert_de, extract_de,
- insert_des, extract_des, insert_li, extract_li,
- insert_mbe, extract_mbe, insert_mb6, extract_mb6,
- insert_nb, extract_nb, insert_nsi, extract_nsi,
- insert_ral, insert_ram, insert_ras,
- insert_rbs, extract_rbs, insert_sh6, extract_sh6,
- insert_spr, extract_spr, insert_tbr, extract_tbr): Add dialect param.
- (extract_bd, extract_bdm, extract_bdp,
- extract_ds, extract_des,
- extract_li, extract_nsi): Implement sign extension without conditional.
- (insert_bdm, extract_bdm,
- insert_bdp, extract_bdp, valid_bo): Handle 64 bit branch hints.
- (extract_bdm, extract_bdp): Correct 32 bit validation.
- (AT1_MASK, AT2_MASK): Define.
- (BBOAT_MASK): Define.
- (BBOATCB_MASK, BBOAT2CB_MASK, BBOATBI_MASK): Define.
- (BOFM64, BOFP64, BOTM64, BOTP64): Define.
- (BODNZM64, BODNZP64, BODZM64, BODZP64): Define.
- (PPCCOM32, PPCCOM64): Define.
- (powerpc_opcodes): Modify existing 32 bit insns with branch hints
- and add new patterns to implement 64 bit branches with hints. Move
- booke instructions so they match before ppc64.
-
- * ppc-dis.c (powerpc_dialect): Set PPC_OPCODE_64 in dialect for
- 64 bit default targets, and parse "32" and "64" in options.
- Formatting fixes.
- (print_insn_powerpc): Pass dialect to operand->extract.
-
-2001-11-14 Dave Brolley <brolley@redhat.com>
-
- * cgen-dis.c (count_decodable_bits): New function.
- (add_insn_to_hash_chain): New function.
- (hash_insn_array): Call add_insn_to_hash_chain.
- (hash_insn_list): Call add_insn_to_hash_chain.
- * m32r-dis.c: Regenerated.
- * fr30-dis.c: Regenerated.
-
-2001-11-14 Andreas Jaeger <aj@suse.de>
-
- * i386-dis.c (print_insn): Use x86-64 as option.
-
-2001-11-14 Alan Modra <amodra@bigpond.net.au>
-
- * disassemble.c (disassembler): Call print_insn_i386.
- * i386-dis.c (SUFFIX_ALWAYS): Define.
- (struct dis_private): Add orig_sizeflag.
- (print_insn_i386): Make it a wrapper, calling..
- (print_insn): ..The old body of print_insn_i386. Avoid longjmp
- warning without using volatile by moving orig_sizeflag to priv,
- and removing inbuf. Parse disassembler_options.
- (print_insn_i386_att, print_insn_i386_intel): Move initialisation
- code to print_insn.
- (putop): Remove #ifdef SUFFIX_ALWAYS.
-
-2001-11-11 Timothy Wall <twall@alum.mit.edu>
-
- * tic54x-dis.c: Use revised opcode structure. Export opcode
- template lookup.
- (has_lkaddr): Don't forget about Lmem insns.
- * tic54x-opc.c: Add emulation trap. Parallel table now uses
- standard opcode templates.
-
-2001-11-13 Zack Weinberg <zack@codesourcery.com>
+2004-01-13 Michael Snyder <msnyder@redhat.com>
- * i386-dis.c (grps): Change "sldt", "str", and "smsw" entries
- to "sldtQ", "strQ", "smswQ" respectively; all with Ev operand
- category instead of Ew.
+ * sh-dis.c (print_insn_sh): Allocate 4 bytes for insn.
-2001-11-12 Niraj Gupta <ngupta@zumanetworks.com>
+2004-01-09 Paul Brook <paul@codesourcery.com>
- * m68k-opc.c: Fix definitions of wddata[bwl].
+ * arm-opc.h (arm_opcodes): Move generic mcrr after known
+ specific opcodes.
-2001-11-09 Richard Sandiford <rsandifo@redhat.com>
+2004-01-07 Daniel Jacobowitz <drow@mvista.com>
- * cgen-asm.c (cgen_parse_keyword): If the keyword is too big to
- fit in the buffer, try to match the empty keyword.
-
-2001-11-09 Nick Clifton <nickc@cambridge.redhat.com>
-
- * cgen-ibld.in (extract_1): Fix badly placed #if 0.
- * fr30-ibld.c: Regenerate.
- * m32r-ibld.c: Regenerate.
- * openrisc-ibld.c: Regenerate.
-
-2001-11-04 Chris Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (print_insn_mips): Remove spaces at end of line.
-
-2001-11-02 Nick Clifton <nickc@cambridge.redhat.com>
-
- * configure.in (ALL_LINGUAS): Add "fr", "sv" and "tr".
- * configure: Regernate.
- * po/fr.po: New file.
- * po/sv.po: New file.
- * po/tr.po: New file.
-
-2001-11-01 Stephane Carrez <Stephane.Carrez@worldnet.fr>
-
- * m68hc11-dis.c (print_insn): Fix disassembly of movb with a
- constant as source.
-
-2001-10-30 Hans-Peter Nilsson <hp@bitrange.com>
-
- * Makefile.am (CFILES): Add mmix-dis.c and mmix-opc.c. Regenerate
- dependencies.
- * Makefile.in: Regenerate.
- * mmix-dis.c, mmix-opc.c: New files.
-
-2001-10-29 Kazu Hirata <kazu@hxi.com>
-
- * d30v-dis.c: Fix a comment typo.
-
-2001-10-23 Chris Demetriou <cgd@broadcom.com>
-
- * mips-opc.c (mips_builtin_opcodes): Mark "bgezall" and
- "bltzall" as writing GPR 31 (since they do).
-
- * mips-dis.c (print_insn_arg): Calculate info->target
- where appropriate.
- (print_insn_mips): Fill in instruction info.
- (print_mips16_insn_arg): Remove unneded variable 'val'.
- Removed duplicated instruction target calculations,
- calculate once and print that result. Use same idiom for
- masking the jump segment bits as is used in print_insn_arg.
-
-2001-10-20 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c (CT): Make it an optional operand.
-
-2001-10-17 Chris Demetriou <cgd@broadcom.com>
-
- * mips-dis.c (mips_isa_type): Make the ISA used to disassemble
- SB-1 binaries include instructions specific to the SB-1.
- * mips-opc.c (SB1): New definition.
- (mips_builtin_opcodes): Add SB-1 extension opcodes "div.ps",
- "recip.ps", "rsqrt.ps", and "sqrt.ps".
-
-2001-10-17 matthew green <mrg@redhat.com>
-
- * ppc-opc.c (STRM): New AltiVec operand.
- (XDSS): New AltiVec instruction form.
- (mtvscr): Correct operand list.
- (dst, dstt, dstst, dststt, dss, dssall): AltiVec instructions.
-
-2001-10-17 Alan Modra <amodra@bigpond.net.au>
-
- * po/POTFILES.in: Regenerate.
-
-2001-10-13 matthew green <mrg@redhat.com>
-
- * ppc-opc.c (MO): New macro for MO field of mbar instruction.
- (powerpc_opcodes): Add rfci, wrtee, wrteei, mfdcrx, mfdcr,
- mtdcrx, mtdcr, msync, dcba and mbar as BookE instructions.
-
-2001-10-13 Nick Clifton <nickc@cambridge.redhat.com>
-
- * cgen-ibld.in: Include safe-ctype.h in preference to
- ctype.h.
- * cgen-asm.in: Include safe-ctype.h in preference to
- ctype.h. Fix formatting. Use ISSPACE instead of isspace and
- TOLOWER instead of tolower.
- (@arch@_cgen_build_insn_regex): Remove duplication of syntax
- string elements in constructed regular expression.
- * fr30-asm.c: Regenerate.
- * fr30-desc.c: Regenerate.
- * fr30-ibld.c: Regenerate.
- * m32r-asm.c: Regenerate.
- * m32r-desc.c: Regenerate.
- * m32r-ibld.c: Regenerate.
- * openrisc-asm.c: Regenerate.
- * openrisc-desc.c: Regenerate.
- * openrisc-ibld.c: Regenerate.
- * po/opcodes.pot: Regenerate.
-
-2001-10-12 matthew green <mrg@redhat.com>
-
- * ppc-opc.c (insert_de, extract_de, insert_des, extract_des): New
- instruction field instruction/extraction functions for new BookE
- DE form instructions.
- (CT): New macro for CT field in an X form instruction.
- (DE, DES, DEO, DE_MASK): New macros for DE/DES fields in DE form
- instructions.
- (PPC64): Don't include PPC_OPCODE_PPC.
- (403): New opcode macro for PPC403 processors.
- (BOOKE): New opcode macro for BookE processors.
- (bce, bcel, bcea, bcela, bclre, bclrel: New BookE instructions.
- (bcctre, bcctrel, be, bel, bea, bela, icbt, icbte, lwzxe): Likewise.
- (dcbste, lwzuxe, luxe, dcbfe, lbzxe, lwarxe, lbzuxe): Likewise.
- (stwcxe, stwxe, stxe, stwuxe, stuxe, stbxe, dcbtste, stbuxe): Likewise.
- (mfapidi, dcbte, lhzxe, lhzuxe, lhaxe, lhauxe, subfe64): Likewise.
- (subfeo64, adde64, addeo64, sthxe, sthuxe, subfze64): Likewise.
- (subfzeo64, addze64, addzeo64, dcbie, subfme64, subfmeo64): Likewise.
- (addme64, addmeo64, stdcxe., mcrxr64, lwbrxe, lfsxe, lfsuxe): Likewise.
- (lfdxe, lfduxe, stwbrxe, stfsxe, stfsuxe, stfdxe, dcbae): Likewise.
- (stfduxe, tlbivax, tlbivaxe, lhbrxe, ldxe, lduxe, tlbsx): Likewise.
- (tlbsxe, sthbrxe, stdxe, stduxe, icbie, stfiwxe, dcbze, lbze): Likewise.
- (lbzue, ldue, lhze, lhzue, lhae, lhaue, lwze, lwzue): Likewise.
- (stbe, stbue, sthe, sthue, stwe, stwue, lfse, lfsue, lfde): Likewise.
- (lfdue, stde, stdue, stfse, stfsue, stfde, stfdue): Likewise.
-
- * ppc-dis.c (print_insn_big_powerpc, print_insn_little_powerpc): Look
- for a disassembler option of `booke', `booke32' or `booke64' to enable
- BookE support in the disassembler.
-
-2001-10-12 John Healy <jhealy@redhat.com>
-
- * cgen-dis.in (print_insn): Use min (cd->base_insn_bitsize, buflen*8)
- for the length when extracting the base part of the insn.
-
-2001-10-09 Bruno Haible <haible@clisp.cons.org>
-
- * cgen-asm.in (*_cgen_build_insn_regex): Generate a case sensitive
- regular expression. Fix some formatting problems.
- * fr30-asm.c: Regenerate.
- * openrisc-asm.c: Regenerate.
- * m32r-asm.c: Regenerate.
-
-2001-10-09 Christian Groessler <cpg@aladdin.de>
-
- * z8k-dis.c (unparse_instr): Fixed formatting. Change disassembly
- of indirect register memory accesses to be same format the
- assembler accepts.
-
-2001-10-09 Nick Clifton <nickc@cambridge.redhat.com>
-
- * sh-opc.h: Fix encoding of least significant nibble of the
- DSP single data transfer instructions.
-
- * sh-dis.c (print_insn_shx): Fix decoding of As opcode in DSP
- instructions.
-
-2001-10-08 Nick Clifton <nickc@cambridge.redhat.com>
-
- * cgen-asm.in: Fix compile time warning messages in generated
- C files.
- * cgen-dis.in: The same.
- * cgen-ibld.in: The same.
- * fr30-asm.c: Regenerate.
- * fr30-desc.c: Regenerate.
- * fr30-dis.c: Regenerate.
- * fr30-ibld.c: Regenerate.
- * fr30-opc.c: Regenerate.
- * m32r-asm.c: Regenerate.
- * m32r-desc.c: Regenerate.
- * m32r-dis.c: Regenerate.
- * m32r-ibld.c: Regenerate.
- * m32r-opc.c: Regenerate.
- * m32r-opinst.c Regenerate.
- * openrisc-asm.c: Regenerate.
- * openrisc-desc.c: Regenerate.
- * openrisc-dis.c: Regenerate.
- * openrisc-ibld.c: Regenerate.
- * openrisc-opc.c: Regenerate.
- * openrisc-opc.h: Regenerate.
- * Makefile.in: Regenerate.
- * po/POTFILES.in: Regenerate.
- * po/opcodes.pot: Regenerate.
-
-2001-10-08 Aldy Hernandez <aldyh@redhat.com>
-
- * arm-opc.h (arm_opcodes): Add cirrus insns.
-
- * arm-dis.c (print_insn_arm): Add 'I' case.
-
-2001-10-03 Alan Modra <amodra@bigpond.net.au>
-
- * po/POTFILES.in: Regenerate.
- * configure: Regenerate.
-
-2001-10-02 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am (Makefile): Depend on bfd/configure.in.
- Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2001-09-30 John Healy <jhealy@redhat.com>
-
- * cgen-ibld.in (insert_1): Switched bfd_get_bits and bfd_set_bits
- calls to cgen_get_insn_value and cgen_put_insn_value calls.
- (extract_1): Switched bfd_get_bits call to cgen_get_insn_value call.
-
-2001-09-30 Hans-Peter Nilsson <hp@bitrange.com>
-
- * Makefile.am: Update dependencies with "make dep-am".
- * Makefile.in: Regenerate.
-
-2001-09-26 Alan Modra <amodra@bigpond.net.au>
-
- * arc-dis.c: Formatting fixes.
- (my_sprintf): Define using VPARAMS, VA_OPEN, VA_FIXEDARG, VA_CLOSE.
-
-2001-09-21 Bruno Haible <haible@clisp.cons.org>
-
- * arc-dis.c: Don't include <ctype.h>.
- * openrisc-desc.c: Likewise.
- * openrisc-ibld.c: Likewise.
-
-2001-09-20 Nick Clifton <nickc@cambridge.redhat.com>
-
- * fr30-opc.c: Fix compile time warning messages.
- * i370-opc.c: Fix compile time warning messages.
- * i960-dis.c: Fix compile time warning messages.
- * m32r-asm.c: Fix compile time warning messages.
- * m32r-desc.c: Fix compile time warning messages.
- * m32r-dis.c: Fix compile time warning messages.
- * m32r-ibld.c: Fix compile time warning messages.
- * m32r-opc.c: Fix compile time warning messages.
- * m32r-opinst.c: Fix compile time warning messages.
- * ns32k-dis.c: Fix compile time warning messages.
- * openrisc-asm.c: Fix compile time warning messages.
- * openrisc-desc.c: Fix compile time warning messages.
- * openrisc-dis.c: Fix compile time warning messages.
- * openrisc-ibld.c: Fix compile time warning messages.
- * openrisc-opc.c: Fix compile time warning messages.
- * pdp11-dis.c: Fix compile time warning messages.
- * tic54x-dis.c: Fix compile time warning messages.
- * v850-opc.c: Fix compile time warning messages.
- * vax-dis.c: Fix compile time warning messages.
- * w65-opc.h: Fix compile time warning messages.
- * z8k-opc.h: Fix compile time warning messages.
- * z8kgen.c: Fix compile time warning messages.
-
-2001-09-19 Nick Clifton <nickc@cambridge.redhat.com>
-
- * arm-dis.c: Fix compile time warning messages.
- * cgen-asm.c: Fix compile time warning messages.
- * cgen-dis.c: Fix compile time warning messages.
- * cris-dis.c: Fix compile time warning messages.
- * d10v-dis.c: Fix compile time warning messages.
- * fr30-asm.c: Fix compile time warning messages.
- * fr30-desc.c: Fix compile time warning messages.
- * fr30-dis.c: Fix compile time warning messages.
- * fr30-ibld.c: Fix compile time warning messages.
-
-2001-09-18 Bruno Haible <haible@clisp.cons.org>
-
- * cgen-asm.c: Include "safe-ctype.h" instead of <ctype.h>.
- (cgen_parse_keyword): Use ISALNUM instead of isalnum.
- * cgen-opc.c: Include "safe-ctype.h" instead of <ctype.h>.
- (cgen_keyword_lookup_name): Use ISALPHA/TOLOWER instead of
- isalpha/tolower.
- (cgen_keyword_add): Use ISALNUM instead of isalnum.
- (hash_keyword_name): Use TOLOWER instead of tolower.
- * fr30-asm.c: Include "safe-ctype.h" instead of <ctype.h>.
- (parse_insn_normal): Use TOLOWER/ISSPACE instead of
- tolower/isspace.
- (fr30_cgen_assemble_insn): Use ISSPACE instead of isspace.
- * fr30-desc.c: Don't include <ctype.h>.
- * fr30-ibld.c: Likewise.
- * ia64-gen.c: Include "safe-ctype.h" instead of <ctype.h>.
- (load_insn_classes, parse_resource_users, load_depfile): Use
- ISSPACE instead of isspace.
- * m32r-asm.c: Include "safe-ctype.h" instead of <ctype.h>.
- (parse_insn_normal): Use TOLOWER/ISSPACE instead of
- tolower/isspace.
- (m32r_cgen_assemble_insn): Use ISSPACE instead of isspace.
- * m32r-desc.c: Don't include <ctype.h>.
- * m32r-ibld.c: Likewise.
- * openrisc-asm.c: Include "safe-ctype.h" instead of <ctype.h>.
- (parse_insn_normal): Use TOLOWER/ISSPACE instead of
- tolower/isspace.
- (openrisc_cgen_assemble_insn): Use ISSPACE instead of isspace.
-
-2001-09-18 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * Makefile.am: Add rules and dependencies to create the s/390 opcode
- table out of s390-opc.txt automatically.
- * configure.in: Add BFD_CC_FOR_BUILD to allow CC_FOR_BUILD to be used.
- * s390-mkopc.c (dumpTable): Change output to create a complete file.
- * s390-opc.c: New improved opcode format macros and remove the
- pregenerated opcode table.
- * s390-opc.txt: Adapt to new improved opcode format macros.
-
-2001-09-14 David Schleef <ds@schleef.org>
-
- * ppc-opc.c (VXA, VXA_MASK): Fix mask bits.
-
-2001-09-04 Alan Modra <amodra@bigpond.net.au>
-
- * i386-dis.c (grps): Don't print the implicit al/ax/eax register
- for opcode 0xf6 or 0xf7 forms of mul, imul, div, idiv insns.
-
-2001-08-31 Eric Christopher <echristo@redhat.com>
- Jason Eckhardt <jle@redhat.com>
-
- * mips-dis.c: Add support for bfd_mach_mipsisa32 and
- bfd_mach_mipsisa64. Remove bfd_mach_mips32, bfd_mach_mips32_4k,
- bfd_mach_mips64.
-
-2001-08-31 Andreas Jaeger <aj@suse.de>
-
- * tic54x-opc.c: Add default initializers to avoid warnings.
-
- * arc-opc.c: Include "sysdep.h" to get stdio.h as include file.
- * arc-ext.c: Likewise.
-
-2001-08-28 matthew green <mrg@redhat.com>
-
- * ppc-opc.c (icbt): Order correctly.
-
-2001-08-27 David Edelsohn <dje@watson.ibm.com>
- Torbjorn Granlund <tege@swox.com>
-
- * ppc-opc.c (DS): Add PPC_OPERAND_DS flag.
- (LS): Define.
- (insert_ds): Complain if not a multiple of 4.
- (XSYNC): Define.
- (XSYNC_MASK): Define.
- (powerpc_opcodes): Add "slbmte", "lwsync", "ptesync", "slbmfev",
- "slbmfee". Modify "sync" to use XSYNC_MASK and LS.
-
-2001-08-26 Andreas Jaeger <aj@suse.de>
-
- * h8500-opc.h: Add default initializers to h8500_table to shut up
- GCC warnings.
-
-2001-08-25 Andreas Jaeger <aj@suse.de>
-
- * tic54x-dis.c: Add unused attributes where needed.
-
- * z8k-dis.c (output_instr): Add unused attribute.
-
- * h8300-dis.c: Add missing prototypes.
- (bfd_h8_disassemble): Make static.
-
- * cris-dis.c: Add missing prototype.
- * h8500-dis.c: Likewise.
- * m68hc11-dis.c: Likewise.
- * pj-dis.c: Likewise.
- * tic54x-dis.c: Likewise.
- * v850-dis.c: Likewise.
- * vax-dis.c: Likewise.
- * w65-dis.c: Likewise.
- * z8k-dis.c: Likewise.
-
- * d10v-dis.c: Add missing prototype.
- (dis_long): Remove unused variable.
- (dis_2_short): Likewise.
-
- * sh-dis.c: Add missing prototypes.
- * v850-opc.c: Likewise.
- Add unused attributes where needed.
-
- * ns32k-dis.c: Add missing prototypes.
- (bit_extract_simple): Remove unused variable.
-
-2001-08-23 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390-opc.c: Add "low or high" and "not low or high"
- branch instructions for gcc 3.0.
- * s390-opc.txt: Likewise.
-
-2001-08-21 Andreas Jaeger <aj@suse.de>
-
- * i960-dis.c: Add parameters for prototypes
- (ctrl): Add unused attributes.
- (cobr): Likewise.
- (put_abs): Likewise.
-
- * mips-dis.c: Add missing prototypes.
- * a29k-dis.c: Likewise.
- * arc-dis.c: Likewise.
- * ia64-opc.c: Likewise.
-
- * s390-dis.c: Add missing prototypes.
- (init_disasm): Remove unused attribute since the parameter is
- used.
-
-2001-08-16 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips-opc.c (M1): Define. Reformatted Code.
- (mips_builtin_opcodes): Added performance counter opcodes mfpc, mfps,
- mtps, mtps. Typo.
-
-2001-08-16 Jonathan Larmour <jlarmour@redhat.com>
-
- * mips-opc.c: R3900s can support all branch likely INSN_MACROs where
- the corresponding non-likely insn is in MIPS I.
-
-2001-08-13 Kazu Hirata <kazu@hxi.com>
-
- * mcore-dis.c: Fix formatting.
- * mips-dis.c: Likewise.
- * pj-dis.c: Likewise.
- * z8k-dis.c: Likewise.
-
-2001-08-12 Richard Henderson <rth@redhat.com>
-
- * cgen-ibld.in (extract_normal): Match type of VALUE and MASK
- to *VALUEP. Regenerate all cgen files.
-
-2001-08-10 Richard Sandiford <rsandifo@redhat.com>
-
- * mips-dis.c (print_insn_mips): Remove OPCODE_IS_MEMBER's gp32
- argument.
- * mips-opc.c (G6): Undefine.
- (mips_builtin_opcodes): Remove gp32 entry for "move". Add macro
- as the first "move" alternative.
-
-2001-08-10 Andreas Jaeger <aj@suse.de>
-
- * configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes
- to build warnings.
- * configure: Regenerate.
-
-2001-08-10 Alan Modra <amodra@bigpond.net.au>
-
- * ppc-opc.c: Revert 2001-08-08.
-
-2001-08-09 Alan Modra <amodra@bigpond.net.au>
-
- * dis-buf.c (generic_strcat_address): Add missing prototype.
- #if 0 the functions as it is unused.
-
-2001-08-08 Alan Modra <amodra@bigpond.net.au>
-
- 1999-10-25 Torbjorn Granlund <tege@swox.com>
- * ppc-opc.c: Include "bfd.h".
- (powerpc_operands): Add new field for reloc type.
-
-2001-07-21 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips-dis.c (print_insn_arg): Don't use software integer registers
- for coprocessor registers.
- (get_mips_isa): Removed.
- (is_newabi): New function, checks if NewABI is used.
- (_print_insn_mips): Get distinction between old ABI and new ABI right.
-
-2001-08-01 Christian Groessler <cpg@aladdin.de>
-
- * z8kgen.c: Fixed indentation of opt[] array. Include stdio.h to
- get stderr definition.
- (internal, gas): Removed warnings.
- (gas): Create a correct final entry for created array.
- * z8k-opc.h: Recreated with new z8kgen.
-
-2001-07-28 Kazu Hirata <kazu@hxi.com>
-
- * i386-dis.c: Fix formatting.
-
-2001-07-28 Matthias Kramm <kramm@quiss.org>
-
- * i386-dis.c: Change formatting conventions for architecture
- i386:intel to better match the format of various intel i386
- assemblers, like nasm, tasm or masm.
-
-2001-07-24 Alan Modra <amodra@bigpond.net.au>
-
- * Makefile.am: Update dependencies with "make dep-am".
- * Makefile.in: Regenerate
-
-2001-07-24 Kazu Hirata <kazu@hxi.com>
-
- * alpha-dis.c: Fix formatting.
- * cris-dis.c: Likewise.
- * d10v-dis.c: Likewise.
- * d30v-dis.c: Likewise.
- * m10300-dis.c: Likewise.
- * tic54x-dis.c: Likewise.
-
-2001-07-23 Kazu Hirata <kazu@hxi.com>
-
- * m68k-dis.c: Fix formatting.
- * pj-dis.c: Likewise.
- * s390-dis.c: Likewise.
- * z8k-dis.c: Likewise.
-
-2001-07-21 Chris Demetriou <cgd@broadcom.com>
-
- * mips-opc.c (mips_builtin_opcodes): Sort c.le.s and c.lt.s
- into the rest of the surrounding definitions.
-
-2001-07-18 Alan Modra <amodra@bigpond.net.au>
-
- * i386-dis.c (grps): Print l or w suffix, and require mem modrm
- for lgdt, lidt, sgdt, sidt.
-
-2001-07-13 Philip Blundell <philb@gnu.org>
-
- * arm-dis.c (print_insn_arm): Use decimal for offsets in LDR/STR.
-
-2001-07-12 Jeff Johnston <jjohnstn@redhat.com>
-
- * cgen-asm.in: Include "xregex.h" always to enable the libiberty
- regex support.
- (@arch@_cgen_build_insn_regex): New routine from Graydon.
- (@arch@_cgen_assemble_insn): Add Graydon's code to use regex
- to verify if it is worth parsing the insn as insn "x". Also update
- error message when insn is not a recognized format of the insn vs
- when the insn is completely unrecognized.
-
-2001-07-11 Frank Ch. Eigler <fche@redhat.com>
-
- * cgen-dis.in (print_insn): Use cgen_get_insn_value instead of
- bfd_get_bits.
- * cgen-opc.c (cgen_get_insn_value, cgen_put_insn_value): Respect
- non-zero CGEN_CPU_DESC->insn_chunk_bitsize.
-
-2001-07-09 Andreas Jaeger <aj@suse.de>, Karsten Keil <kkeil@suse.de>
-
- * i386-dis.c (set_op): Handle 64 bit and 32 bit mode.
- (OP_J): Use bfd_vma for mask to work properly with 64 bits.
- (op_address,op_riprel): Use bfd_vma to handle 64 bits.
-
-2001-07-05 Ben Elliston <bje@redhat.com>
-
- * Makefile.am (CPUDIR): Define.
- (stamp-m32r): Update dependencies.
- (stamp-fr30): Ditto.
- (stamp-openrisc): Ditto.
+ * Makefile.am (libopcodes_la_DEPENDENCIES)
+ (libopcodes_la_LIBADD): Revert 2003-05-17 change. Add explanatory
+ comment about the problem.
* Makefile.in: Regenerate.
-2001-07-03 Zoltan Hidvegi <hzoli@hzoli.2y.net>
-
- * ppc-opc.c: Fix encoding of 'clf' instruction.
-
-2001-06-30 Geoffrey Keating <geoffk@redhat.com>
-
- * cgen-ibld.in (insert_normal): Support CGEN_IFLD_SIGN_OPT.
-
-2001-06-28 Geoffrey Keating <geoffk@redhat.com>
-
- * cgen-asm.c (cgen_parse_keyword): Allow any first character.
- * cgen-opc.c (cgen_keyword_add): Ignore special first
- character when building nonalpha_chars field.
-
-2001-06-24 Ben Elliston <bje@redhat.com>
-
- * m88k-dis.c: Format to conform to GNU coding standards.
-
-2001-06-23 Andreas Jaeger <aj@suse.de>
-
- * disassemble.c (disassembler_usage): Add unused attribute.
-
-2001-06-22 Eric Christopher <echristo@redhat.com>
-
- * mips-opc.c: Move prefx to start of the table.
-
-2001-06-22 Stacey Sheldon <ssheldon@Catena.com>
-
- * arc-opc.c (insert_st_syntax): Fix over-optimisation of ST
- instruction.
-
-2001-06-22 Pauli <pauli@moreton.com.au>
-
- * m68k-opc.c: Add wdebug instruction.
-
-2001-06-15 Aldy Hernandez <aldyh@redhat.com>
-
- * m10300-opc.c (mn10300_opcodes): Change opcode for AM33 subc.
-
-2001-06-14 Geoffrey Keating <geoffk@redhat.com>
-
- * cgen-asm.c (cgen_parse_keyword): When looking for the
- boundaries of a keyword, allow any special characters
- that are actually in one of the allowed keyword.
- * cgen-opc.c (cgen_keyword_add): Add any special characters
- to the nonalpha_chars field.
-
-2001-06-12 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390-opc.c: Add lgh instruction.
- * s390-opc.txt: Likewise.
-
-2001-06-11 Alan Modra <amodra@bigpond.net.au>
-
- * i386-dis.c: Group function prototypes in one place.
- (FLOATCODE): Redefine as 1.
- (USE_GROUPS): Redefine as 2.
- (USE_PREFIX_USER_TABLE): Redefine as 3.
- (X86_64_SPECIAL): Define as 4.
- (GRP1b..GRPAMD): Move USE_GROUPS to bytecode1, index to bytecode2.
- (PREGRP0..PREGRP26): Similarly with USE_PREFIX_USER_TABLE.
- (dis386_att, dis386_intel, disx86_64_att, disx86_64_intel): Delete.
- (dis386): New table combining above four tables.
- (dis386_twobyte_att, dis386_twobyte_intel): Delete.
- (dis386_twobyte): New table combining above two tables.
- (x86_64_table): New table to handle x86_64.
- (X86_64_0): Define.
- (float_mem_att, float_mem_intel): Delet.
- (float_mem): New table combining above two tables.
- (print_insn_i386): Modify for above.
- (dofloat): Likewise.
- (putop): Handle '{', '|' and '}' to select alternative mnemonics.
- Return 0 on success, 1 if no valid alternative.
- (putop <case 'F'>, <case 'H'>): Print nothing for intel_syntax.
- (putop <case 'T'>): Move to case 'U', and share case 'Q' code.
- (putop <case 'I'>): Move to case 'T', and share case 'P' code.
- (OP_REG <case rAX_reg .. rDI_reg>): Handle as for eAX_reg .. eDI_reg
- if not 64-bit mode.
- (OP_I <case q_mode>): Handle as for v_mode if not 64-bit mode.
- (OP_I64): If not 64-bit mode, call OP_I.
- OP_OFF64): If not 64-bit mode, call OP_OFF.
- (OP_ST, OP_STi, OP_SEG, OP_DIR, OP_OFF, OP_OFF64, OP_MMX): Rename
- 'ignore'/'ignored' to 'bytemode'.
-
-2001-06-10 Alan Modra <amodra@bigpond.net.au>
-
- * configure.in: Sort 'ta' case statement.
- * configure: Regenerate.
-
- * i386-dis.c (dis386_att): Add 'H' to conditional branch and
- loop,jcxz insns.
- (disx86_64_att): Likewise.
- (dis386_twobyte_att): Likewise.
- (print_insn_i386): Don't print branch hints as a prefix.
- (putop): 'H' macro prints branch hints.
- (get64): Kill compile warnings.
-
-2001-06-09 Alexandre Oliva <aoliva@redhat.com>
-
- * sh-opc.h (sh_table): Don't use empty initializers.
-
-2001-06-06 Christian Groessler <cpg@aladdin.de>
-
- * z8k-dis.c: Fix formatting.
- (unpack_instr): Remove unused cases in switch statement. Add
- safety abort() in default case.
- (unparse_instr): Add safety abort() in default case.
-
-2001-06-06 Peter Jakubek <pjak@snafu.de>
-
- * m68k-dis.c (print_insn_m68k): Fix typo.
- * m68k-opc.c (m68k_opcodes): Correct allowed operands for
- mcf (ColdFire) div, rem and moveb instructions.
-
-2001-06-06 Alan Modra <amodra@bigpond.net.au>
-
- * i386-dis.c (cond_jump_flag, loop_jcxz_flag): Define.
- (cond_jump_mode, loop_jcxz_mode): Define.
- (dis386_att): Add cond_jump_flag and loop_jcxz_flag as
- appropriate, and 'F' suffix to loop insns.
- (disx86_64_att): Likewise.
- (dis386_twobyte_att): Likewise.
- (print_insn_i386): Don't output addr prefix for loop, jcxz insns.
- Output data size prefix for long conditional jumps. Output cs and
- ds branch hints.
- (putop): Handle 'F', and mark PREFIX_ADDR used for case 'E'.
- (OP_J): Don't make PREFIX_DATA used.
-
-2001-06-04 Alexandre Oliva <aoliva@redhat.com>
-
- * sh-opc.h (sh_table): Complete last element entry to avoid
- compiler warning.
-
-2001-05-16 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips-dis.c (mips_isa_type): Add MIPS r12k support.
-
-2001-05-23 Alan Modra <amodra@one.net.au>
-
- * arc-opc.c: Whitespace changes.
-
-2001-05-18 Hans-Peter Nilsson <hp@axis.com>
-
- * cris-opc.c (cris_spec_regs): Add missing initializer field for
- last element.
-
-2001-05-15 Frank Ch. Eigler <fche@redhat.com>
-
- * cgen-dis.in (extract_normal): Complete support for min<base case.
-
-2001-05-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * mips-dis.c (INSNLEN): Rename MAXLEN.
- (std_reg_names): Replace by mips32_reg_names and mips64_reg_names.
- (print_insn_arg): Remove $ prefix of register names.
- (set_mips_isa_type): Remove.
- (mips_isa_type): New function.
- (get_mips_isa): New Function.
- (print_insn_mips): Rename _print_insn_mips.
- (_print_insn_mips): New function, contains code which was
- duplicated in print_insn_big_mips and print_insn_little_mips.
- (print_insn_big_mips): Moved code to _print_insn_mips.
- (print_insn_little_mips): Likewise.
- (print_mips16_insn_arg): Remove $ prefix of register names.
- Print error message before abort.
-
-2001-05-14 J.T. Conklin <jtc@redback.com>
-
- * ppc-opc.c (powerpc_opcodes): Fixed extended opcode field of
- simplified mnemonics used for setting PPC750-specific special
- purpose registers.
-
-2001-05-12 H.J. Lu <hjl@gnu.org>
-
- * i386-dis.c (print_insn_i386): Always set `mod', `reg' and
- `rm'.
-
-2001-05-12 Peter Targett <peter.targett@arccores.com>
-
- * arc-opc.c (arc_reg_names): Correct attribute for lp_count
- register to r/w. Formatting fixes throughout file.
-
-2001-05-12 Alan Modra <amodra@one.net.au>
-
- * i386-dis.c (prefix_user_table): Correct movq2dq, movdq2q, and
- movq operands.
- (twobyte_has_modrm): Update table.
- (need_modrm): Give it file scope.
- (MODRM_CHECK): Define.
- (dofloat): Use MODRM_CHECK.
- (OP_E): Likewise.
- (OP_EM): Likewise.
- (OP_EX): Likewise.
-
-2001-05-07 Frank Ch. Eigler <fche@redhat.com>
-
- * cgen-dis.in (default_print_insn): Tolerate min<base instructions
- even at end of a section.
- * cgen-ibld.in (extract_normal): Tolerate min!=base!=max instructions
- by ignoring precariously-unpacked insn_value in favor of raw buffer.
-
-2001-05-03 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-
- * disassemble.c (disassembler_usage): Remove unused attribute.
-
-2001-05-04 Frank Ch. Eigler <fche@redhat.com>
-
- * m32r-dis.c, -asm.c, -ibld.c: Regenerated with disassembler fixes.
-
-2001-05-04 Frank Ch. Eigler <fche@redhat.com>
-
- * cgen-dis.in (print_insn): Remove call to read_insn. Instead,
- assume incoming buffer already has the base insn loaded. Handle
- smaller-than-base instructions for variable-length case.
-
-2001-05-04 Alan Modra <amodra@one.net.au>
-
- * i386-dis.c (Ev, Ed): Remove duplicate define.
- (Gd): Define.
- (XS): Define.
- (OP_XS): New function.
- (dis386_twobyte_att): Correct pinsrw, pextrw, pmovmskb, and
- movmskp operands.
- (dis386_twobyte_intel): Likewise.
- (prefix_user_table): Use MS for maskmovq operand.
-
-2001-04-27 Johan Rydberg <jrydberg@opencores.org>
-
- * Makefile.am: Add OpenRISC target.
- * Makefile.in: Regenerated.
-
- * disassemble.c (disassembler): Recognize the OpenRISC disassembly.
-
- * configure.in (bfd_openrisc_arch): Add target.
- * configure: Regenerated.
-
- * openrisc-asm.c: New file.
- * openrisc-desc.c: Likewise.
- * openrisc-desc.h: Likewise.
- * openrisc-dis.c: Likewise.
- * openrisc-ibld.c: Likewise.
- * openrisc-opc.c: Likewise.
- * openrisc-opc.h: Likewise.
-
-2001-04-24 Christian Groessler <cpg@aladdin.de>
-
- * z8k-dis.c: add names of control registers (ctrl_names);
- (seg_length): provides instruction length fixup for segmented
- mode; (unpack_instr): correctly handle ARG_DISP16, ARG_DISP12,
- CLASS_0DISP7, CLASS_1DISP7, CLASS_DISP8 and CLASS_PR cases;
- (unparse_intr): handle CLASS_PR, print addresses without '#'
- * z8k-opc.h: re-created with new z8kgen
- * z8kgen.c: merged in fixes which were in existing z8k-opc.h; new
- entries for ldctl/ldctlb instruction
-
-2001-04-06 Andreas Jaeger <aj@suse.de>
-
- * i386-dis.c: Add ffreep instruction.
-
-2001-03-30 Alexandre Oliva <aoliva@redhat.com>
-
- * ppc-opc.c (insert_mbe): Shift mask initializer as long.
-
-2001-03-24 Alan Modra <alan@linuxcare.com.au>
-
- * i386-dis.c (PREGRP25): Define.
- (dis386_twobyte_att): Use here in place of "movntq" entry.
- (dis386_twobyte_intel): Likewise.
- (prefix_user_table): Add PREGRP25 entry for "movntq" and "movntdq".
- (PREGRP26): Define.
- (dis386_twobyte_att): Use here.
- (dis386_twobyte_intel): Likewise.
- (prefix_user_table): Add PREGRP26 entry for "punpcklqdq".
- (prefix_user_table <maskmovdqu>): XM operand, not MX.
- (prefix_user_table): Cosmetic changes to "bad" entries.
-
-2001-03-23 Nick Clifton <nickc@redhat.com>
-
- * mips-opc.c: Remove extraneous whitespace.
- * mips-dis.c: Remove extraneous whitespace.
-
-2001-03-22 Ben Elliston <bje@redhat.com>
-
- * cgen-asm.in (@arch@_cgen_assemble_insn): Move tmp_errmsg
- declaration inside CGEN_VERBOSE_ASSEMBLER_ERRORS conditional.
- * cgen-ibld.in (put_insn_int_value): Mark cd parameter as unused
- to allay a compiler warning.
-
-2001-03-22 Alan Modra <alan@linuxcare.com.au>
-
- * i386-dis.c (dis386_twobyte_att): Add entries for paddq, psubq.
- (dis386_twobyte_intel): Likewise.
- (twobyte_has_modrm): Set entry for paddq, psubq.
-
-2001-03-20 Patrick Macdonald <patrickm@redhat.com>
-
- * cgen-dis.in (print_insn_@arch@): Add support for target machine
- determination via CGEN_COMPUTE_MACH.
- * fr30-desc.c: Regenerate.
- * fr30-dis.c: Regenerate.
- * fr30-opc.h: Regenerate.
- * m32r-desc.c: Regenerate.
- * m32r-dis.c: Regenerate.
- * m32r-opc.h: Regenerate.
- * m32r-opinst.c: Regenerate.
-
-2001-03-20 H.J. Lu <hjl@gnu.org>
-
- * configure.in: Remove the redundent AC_ARG_PROGRAM.
- * configure: Rebuild.
-
-2001-03-19 Jim Wilson <wilson@redhat.com>
-
- * ia64-gen.c (fetch_insn_class): If xsect, then ignore comment and
- notestr if larger than xsect.
- (in_class): Handle format M5.
- * ia64-asmtab.c: Regnerate.
-
-2001-03-19 John David Anglin <dave@hiauly1.hia.nrc.ca>
-
- * vax-dis.c (print_insn_vax): Only fetch two bytes if the info buffer
- has more than one byte left to read.
-
-2001-03-16 Martin Schwidefsky <schwidefsky@de.ibm.com>
-
- * s390-opc.c: Add new opcodes. Smooth out formatting.
- * s390-opc.txt: Add new opcodes.
-
-2001-03-06 Nick Clifton <nickc@redhat.com>
-
- * arm-dis.c (print_insn_thumb): Compute destination address
- of BLX(1) instruction by taking bit 1 from PC and not from bit
- 0 of the offset.
-
-2001-03-06 Igor Shevlyakov <igor@windriver.com>
-
- * m68k-dis.c (print_insn_m68k): Recognize Coldfire CPUs
- so command line switches will work.
-
-2001-03-05 Dave Brolley <brolley@redhat.com>
-
- * fr30-asm.c: Regenerate.
- * fr30-desc.c: Regenerate.
- * fr30-desc.h: Regenerate.
- * fr30-dis.c: Regenerate.
- * fr30-ibld.c: Regenerate.
- * fr30-opc.c: Regenerate.
- * fr30-opc.h: Regenerate.
- * m32r-asm.c: Regenerate.
- * m32r-desc.c: Regenerate.
- * m32r-desc.h: Regenerate.
- * m32r-dis.c: Regenerate.
- * m32r-ibld.c: Regenerate.
- * m32r-opc.c: Regenerate.
- * m32r-opc.h: Regenerate.
- * m32r-opinst.c: Regenerate.
-
-2001-02-28 Igor Shevlyakov <igor@windriver.com>
-
- * m68k-opc.c: fix cpushl according to Motorola. Enable
- bunch of instructions for Coldfire 5407 and add all new.
-
-2001-02-27 Alan Modra <alan@linuxcare.com.au>
-
- * configure.in (BFD_VERSION): Do without grep.
- * configure: Regenerate.
- * Makefile.am: Run "make dep-am".
- * Makefile.in: Regenerate.
-
-2001-02-23 David Mosberger <davidm@hpl.hp.com>
-
- * ia64-opc-a.c: Add missing pseudo-ops for "cmp" and "cmp4".
- * ia64-asmtab.c: Regenerate.
-
-2001-02-21 David Mosberger <davidm@hpl.hp.com>
-
- * ia64-opc-d.c (ia64_opcodes_d): Break the "add" pattern into two
- separate variants: one for IMM22 and the other for IMM14.
- * ia64-asmtab.c: Regenerate.
-
-2001-02-21 Greg McGary <greg@mcgary.org>
-
- * cgen-opc.c (cgen_get_insn_value): Add missing `return'.
-
-2001-02-20 H.J. Lu <hjl@gnu.org>
-
- * Makefile.am (ia64-ic.tbl): Remove the target.
- (ia64-raw.tbl): Likewise.
- (ia64-waw.tbl): Likewise.
- (ia64-war.tbl): Likewise.
- (ia64-asmtab.c): Generate it in the source directory.
- * Makefile.in: Regenerated.
-
-2001-02-18 lars brinkhoff <lars@nocrew.org>
-
- * Makefile.am: Add PDP-11 target.
- * configure.in: Likewise.
- * disassemble.c: Likewise.
- * pdp11-dis.c: New file.
- * pdp11-opc.c: New file.
-
-2001-02-14 Jim Wilson <wilson@redhat.com>
-
- * ia64-ic.tbl: Update from Intel. Add setf to fr-writers.
- * ia64-asmtab.c: Regenerate.
-
-2001-02-12 Jan Hubicka <jh@suse.cz>
-
- * i386-dis.c (prefix_user_t): Add 'Y' to SSE ineger converison
- instructions.
- (putop): Handle 'Y'
-
-2001-02-11 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
-
- * mips-dis.c (print_insn_arg): Use top four bits of the address of
- the following instruction not of the jump itself for the jump
- target.
- (print_mips16_insn_arg): Likewise.
-
-2001-02-11 Michael Sokolov <msokolov@ivan.Harhan.ORG>
-
- * Makefile.am (stamp-lib): ranlib the libopcodes.a in the build
- directory.
- * Makefile.in: Regenerate.
-
-2001-02-09 Schwidefsky <schwidefsky@de.ibm.com>
-
- * Makefile.am: Add linux target for S/390.
- * Makefile.in: Likewise.
- * configure.in: Likewise.
- * disassemble.c: Likewise.
- * s390-dis.c: New file.
- * s390-mkopc.c: New file.
- * s390-opc.c: New file.
- * s390-opc.txt: New file.
-
-2001-02-05 Jim Wilson <wilson@redhat.com>
-
- * ia64-asmtab.c: Revert 2000-12-16 change.
-
-2001-02-02 Patrick Macdonald <patrickm@redhat.com>
-
- * fr30-desc.h: Regenerate with CGEN_MAX_SYNTAX_ELEMENTS.
- * m32r-desc.h: Regenerate.
-
-2001-02-01 Jan Hubicka <jh@suse.cz>
-
- * i386-dis.c (dis386_att, grps): Use 'T' for push/pop
- (putop): Handle 'T', alphabetize order, fix 'I' handling in Intel syntax
-
-2001-01-14 Alan Modra <alan@linuxcare.com.au>
-
- * hppa-dis.c (print_insn_hppa): Handle '>' and '<' arg types.
-
-2001-01-13 Nick Clifton <nickc@redhat.com>
-
- * disassemble.c: Remove spurious white space.
-
-2001-01-13 Jan Hubicka <jh@suse.cz>
-
- * i386-dis.c (dis386_att, disx86_64_att): Fix ret, lret and iret
- templates.
-
-2001-01-11 Peter Targett <peter.targett@arccores.com>
-
- * configure.in: Add arc-ext.lo for bfd_arc_arch selection.
- * Makefile.am (C_FILES): Add arc-ext.c.
- (ALL_MACHINES) Add arc-ext.lo.
- (INCLUDES) Add opcode directory to list.
- New dependency entry for arc-ext.lo.
- * disassemble.c (disassembler): Correct call to
- arc_get_disassembler.
- * arc-opc.c: New update for ARC, including full base
- instructions for ARC variants.
- * arc-dis.h, arc-dis.c: New update for ARC, including
- extensibility functionality.
- * arc-ext.h, arc-ext.c: New files for handling extensibility.
-
-2001-01-10 Jan Hubicka <jh@suse.cz>
-
- * i386-dis.c (PREGRP15 - PREGRP24): New.
- (dis386_twobyt): Add SSE2 instructions.
- (twobyte_uses_SSE_prefix: Rename from ... ; add new SSE instructions.
- (twobyte_uses_f3_prefix): ... this one.
- (grps): Add SSE instructions.
- (prefix_user_table): Add two new slots; add SSE2 instructions.
- (print_insn_i386): Rename uses_f3_prefix to uses_SSE_prefix;
- Handle the REPNZ and Data16 prefixes as well; do proper lookup
- to prefix_user_table.
- (OP_E): Accept mfence and lfence as well.
- (OP_MMX): Data16 prefix turns MMX to SSE; support REX extensions.
- (OP_XMM): Support REX extensions.
- (OP_EM): Likewise.
- (OP_EX): Likewise.
-
-2001-01-09 Nick Clifton <nickc@redhat.com>
-
- * arm-dis.c (print_insn): Set pc to zero for instructions with
- a reloc associated with them.
-
-2001-01-09 Jeff Johnston <jjohnstn@redhat.com>
-
- * cgen-asm.in (parse_insn_normal): Changed syn to be
- CGEN_SYNTAX_CHAR_TYPE. Changed all references to *syn
- as character to use CGEN_SYNTAX_CHAR macro and all comparisons
- to '\0' to use 0 instead.
- * cgen-dis.in (print_insn_normal): Ditto.
- * cgen-ibld.in (insert_insn_normal, extract_insn_normal): Ditto.
-
-2001-01-05 Jan Hubicka <jh@suse.cz>
-
- * i386-dis.c: Add x86_64 support.
- (rex): New static variable.
- (REX_MODE64, REX_EXTX, REX_EXTY, REX_EXTZ): New constants.
- (USED_REX): New macro.
- (Ev, Ed, Rm, Iq, Iv64, Cm, Dm, Rm*, Ob64, Ov64): New macros.
- (OP_I64, OP_OFF64, OP_IMREG): New functions.
- (OP_REG, OP_OFF): Declare.
- (get64, get32, get32s): New functions.
- (r??_reg): New constants.
- (dis386_att): Change templates of instruction implicitly promoted
- to 64bit; change e?? to RMe?? for unwind RM byte instructions.
- (grps): Likewise.
- (dis386_intel): Likewise.
- (dixx86_64_att): New table based on dis386_att.
- (dixx86_64_intel): New table based on dis386_intel.
- (names64, names8rex): New global variable.
- (names32, names16): Add extended registers.
- (prefix_user_t): Recognize rex prefixes.
- (prefix_name): Print REX prefixes nicely.
- (op_riprel): New global variable.
- (start_pc): Set type to bfd_vma.
- (print_insn_i386): Detect the 64bit mode and use proper table;
- move ckprefix after initializing the buffer; output unused rex prefixes;
- output information about target of RIP relative addresses.
- (putop): Support 'O' and 'I'. Update handling of "P', 'Q', 'R' and 'S';
- (print_operand_value): New function.
- (OP_E, OP_G, OP_REG, OP_I, OP_J, OP_DIR, OP_OFF, OP_D): Add support for
- REX prefix and new modes.
- (get64, get32s): New.
- (get32): Return bfd_signed_vma type.
- (set_op): Initialize the op_riprel.
- * disassemble.c (disassembler): Recognize the x86-64 disassembly.
-
-2001-01-03 Richard Sandiford <r.sandiford@redhat.com>
-
- cgen-dis.in (read_insn): Use bfd_get_bits()
-
-2001-01-02 Richard Sandiford <rsandifo@redhat.com>
-
- * cgen-dis.c (hash_insn_array): Use bfd_put_bits().
- (hash_insn_list): Likewise
- * cgen-ibld.in (insert_1): Use bfd_put_bits() and bfd_get_bits().
- (extract_1): Use bfd_get_bits().
- (extract_normal): Apply sign extension to both extraction
- methods.
- * cgen-opc.c (cgen_get_insn_value): Use bfd_get_bits()
- (cgen_put_insn_value): Use bfd_put_bits()
-
-2000-12-28 Frank Ch. Eigler <fche@redhat.com>
-
- * cgen-asm.in (parse_insn_normal): Print better error message for
- instructions with missing operands.
-
-2000-12-21 Santeri Paavolainen <santtu@ssh.com>
-
- * cgen-opc.c: Include alloca.h if HAVE_ALLOCA_H is defined.
-
-2000-12-16 Nick Clifton <nickc@redhat.com>
-
- * Makefile.in: Regenerate.
- * aclocal.m4: Regenerate.
- * config.in: Regenerate.
- * configure.in: Add spacing.
- * configure: Regenerate.
- * ia64-asmtab.c: Regenerate.
- * po/opcodes.pot: Regenerate.
-
-2000-12-12 Frank Ch. Eigler <fche@redhat.com>
-
- * cgen-asm.in (@arch@_cgen_assemble_insn): Prefer printing insert-time
- error messages over later parse-time ones.
-
-2000-12-12 Jim Wilson <wilson@redhat.com>
-
- * ia64-dis.c (print_insn_ia64): Cast away const on ia64_free_opcode
- argument.
- * ia64-gen.c (insert_deplist): Cast sizeof result to int.
- (print_dependency_table): Print NULL if semantics field not set.
- (insert_opcode_dependencies): Mark cmp parameter as unused.
- (print_main_table): Use fprintf_vma to print long long fields.
- (main): Mark argv paramter as unused. Convert to old style definition.
- * ia64-opc.c (ia64_find_dependency): Cast sizeof result to int.
- * ia64-asmtab.c: Regnerate.
-
-2000-12-09 Nick Clifton <nickc@redhat.com>
-
- * m32r-dis.c (print_insn): Prevent re-read of instruction from
- wrong address.
-
- * fr30-dis.c: Regenerate.
-
-2000-12-08 Peter Targett <peter.targett@arccores.com>
-
- * configure.in: Add arc-ext.lo for bfd_arc_arch selection.
- * Makefile.am (C_FILES): Add arc-ext.c.
- (ALL_MACHINES) Add arc-ext.lo.
- (INCLUDES) Add opcode directory to list.
- New dependency entry for arc-ext.lo.
- * disassemble.c (disassembler): Correct call to
- arc_get_disassembler.
- * arc-opc.c: New update for ARC, including full base
- instructions for ARC variants.
- * arc-dis.h, arc-dis.c: New update for ARC, including
- extensibility functionality.
- * arc-ext.h, arc-ext.c: New files for handling extensibility.
-
-2000-12-03 Chris Demetriou cgd@sibyte.com
-
- * mips-opc.c (mips_builtin_opcodes): Use the WR_HILO, RD_HILO,
- MOD_HILO, and MOD_LO macros.
-
- * mips-opc.c (M1, M2): Delete.
- (mips_builtin_opcodes): Remove all uses of M1.
-
- * mips-opc.c (mips_builtin_opcodes): Make the dmfc2 and dmtc2
- instructions take "G" format second operands and use the
- correct flags.
- There are mfc3 and mtc3 opcodes, so add dmfc3 and dmtc3 opcodes to
- match.
- Delete "sel" code operands from mfc1 and mtc1.
- Add MIPS64 opcode changes (dclo, dclz), and "sel" code variants
- for dm[ft]c[023].
-
-2000-12-03 Ed Satterthwaite ehs@sibyte.com and
- Chris Demetriou cgd@sibyte.com
-
- * mips-opc.c (mips_builtin_opcodes): Finish additions
- for MIPS32 support, and clean up existing entries for
- aesthetics, consistency with the MIPS32 ISA, and
- with consistency the rest of the table.
-
-2000-12-01 Nick Clifton <nickc@redhat.com>
-
- * mips16-opc.c (mips16_opcodes): Add initialiser for membership
- field.
-
-2000-12-01 Chris Demetriou <cgd@sibyte.com>
-
- mips-dis.c (print_insn_arg): Handle new 'U' and 'J' argument
- specifiers. Update 'B' for new constant names, and remove
- 'm'.
- mips-opc.c (mips_builtin_opcodes): Place "pref" and "ssnop"
- near the top of the array, so they are disassembled properly.
- Enable "ssnop" for MIPS32. Add "break" variant with 20 bit
- code for MIPS32. Update "clo" and "clz" to use 'U' operand
- specifier. Add 'H' format specifier variants for "mfc1,"
- "mfc2," "mfc3," "mtc1," "mtc2," and "mtc3" for MIPS32. Update
- MIPS32 "sdbbp" to use 'B' operand specifier. Add MIPS32
- "wait" variant which uses 'J' operand specifier.
-
- * mips-dis.c (set_mips_isa_type): Update to use
- CPU_UNKNOWN and ISA_* constants. Add bfd_mach_mips32 case.
- Replace bfd_mach_mips4K with bfd_mach_mips32_4k case.
- * mips-opc.c (I32): New constant for instructions added in
- MIPS32.
- (P4): Delete.
- (mips_builtin_opcodes) Replace all uses of P4 with I32.
-
- * mips-dis.c (set_mips_isa_type): Add cases for
- bfd_mach_mips5 and bfd_mach_mips64.
- * mips-opc.c (I64): New definitions.
-
- * mips-dis.c (set_mips_isa_type): Add case for
- bfd_mach_mips_sb1.
-
-2000-11-28 Hans-Peter Nilsson <hp@bitrange.com>
-
- * sh-dis.c (print_insn_ddt): Make insn_x, insn_y unsigned.
- (print_insn_ppi): Make nib1, nib2, nib3 unsigned.
- Initialize variable dc to NULL.
- (print_insn_shx): Remove unused label d_reg_n.
-
-2000-11-24 Nick Clifton <nickc@redhat.com>
-
- * arm-opc.h: Add new opcode formatting parameter 'B'.
- (arm_opcodes): Add XScale, v5, and v5te instructions.
- (thumb_opcodes): Add v5t instructions.
-
- * arm-dis.c (print_insn_arm): Handle new 'B' format
- parameter.
- (print_insn_thumb): Decode BLX(1) instruction.
-
-2000-11-21 Chris Demetriou <cgd@sibyte.com>
-
- * mips-opc.c: Fix file header comment.
-
-2000-11-14 Hans-Peter Nilsson <hp@axis.com>
-
- * cris-dis.c (cris_get_disassembler): If abfd is NULL, return
- print_insn_cris_with_register_prefix.
-
-2000-11-11 Alexandre Oliva <aoliva@redhat.com>
-
- * sh-opc.h: The operand of `mov.w r0, (<disp>,GBR)' is IMM1, not 0.
-
-2000-11-07 Matthew Green <mrg@redhat.com>
-
- * cgen-dis.in (print_insn): All insns which can fit into insn_value
- must be loaded there in their entirety.
-
-2000-10-20 Jakub Jelinek <jakub@redhat.com>
-
- * sparc-dis.c (v9a_asr_reg_names): Add v9b ASRs.
- (compute_arch_mask): Add v8plusb and v9b machines.
- (print_insn_sparc): siam mode decoding, accept ASRs up to 25.
- * sparc-opc.c: Support for Cheetah instruction set.
- (prefetch_table): Add #invalidate.
-
-2000-10-16 Nick Clifton <nickc@redhat.com>
-
- * mcore-dis.c (imsk): Change mask for OC to 0xFE00.
-
-2000-10-06 Dave Brolley <brolley@redhat.com>
-
- * fr30-desc.h: Regenerate.
- * m32r-desc.h: Regenerate.
- * m32r-ibld.c: Regenerate.
-
-2000-10-05 Jim Wilson <wilson@redhat.com>
-
- * ia64-ic.tbl: Update from Intel.
- * ia64-asmtab.c: Regenerate.
-
-2000-10-04 Kazu Hirata <kazu@hxi.com>
-
- * ia64-gen.c: Convert C++-style comments to C-style comments.
- * tic54x-dis.c: Likewise.
-
-2000-09-29 Hans-Peter Nilsson <hp@axis.com>
-
- Changes to add dollar prefix to registers for files where user symbols
- don't have a leading underscore. Fix formatting.
- * cris-dis.c (REGISTER_PREFIX_CHAR): New.
- (format_reg): Add parameter with_reg_prefix. All callers changed.
- (print_with_operands): Ditto.
- (print_insn_cris_generic): Renamed from print_insn_cris, add
- parameter with_reg_prefix.
- (print_insn_cris_with_register_prefix,
- print_insn_cris_without_register_prefix, cris_get_disassembler):
- New.
- * disassemble.c (disassembler) [ARCH_cris]: Call cris_get_disassembler.
-
-2000-09-22 Jim Wilson <wilson@redhat.com>
-
- * ia64-opc-f.c (ia64_opcodes_f): Add fpcmp pseudo-ops for
- gt, ge, ngt, and nge.
- * ia64-asmtab.c: Regenerate.
-
- * ia64-dis.c (print_insn_ia64): Revert Aug 7 byte skip count change.
- * ia64-gen.c (parse_semantics): Handle IA64_DVS_STOP.
- (lookup_specifier): Handle "PR%, 1 to 15" and "PR%, 16 to 62".
- * ia64-ic.tbl, ia64-raw.tbl, ia64-war.tbl, ia64-waw.tbl: Update.
- * ia64-asmtab.c: Regnerate.
-
-2000-09-13 Anders Norlander <anorland@acc.umu.se>
-
- * mips-opc.c (mips_builtin_opcodes): Support cache instruction on 4K cores.
- Add mfc0 and mtc0 with sub-selection values.
- Add clo and clz opcodes.
- Add msub and msubu instructions for MIPS32.
- Add madd/maddu aliases for mad/madu for MIPS32.
- Support wait, deret, eret, movn, pref for MIPS32.
- Support tlbp, tlbr, tlbwi, tlbwr.
- (P4): New define.
-
- * mips-dis.c (print_insn_arg): Print sdbbp 'm' args.
- (print_insn_arg): Handle 'H' args.
- (set_mips_isa_type): Recognize 4K.
- Use CPU_* defines instead of hardcoded numbers.
-
-2000-09-11 Catherine Moore <clm@redhat.com>
-
- * d30v-opc.c (d30v_operand_t): New operand type Rb2.
- (d30v_format_tab): Use Rb2 for modinc and moddec.
-
-2000-09-07 Catherine Moore <clm@redhat.com>
-
- * d30v-opc.c (d30v_format_tab): Use format Ra for
- modinc and moddec.
-
-2000-09-06 Alexandre Oliva <aoliva@redhat.com>
-
- * configure: Rebuilt with new libtool.m4.
-
-2000-09-05 Nick Clifton <nickc@redhat.com>
-
- * configure: Regenerate.
- * po/opcodes.pot: Regenerate.
-
-2000-08-31 Alexandre Oliva <aoliva@redhat.com>
-
- * acinclude.m4: Include libtool and gettext macros from the
- top level.
- * aclocal.m4, configure: Rebuilt.
-
-2000-08-30 Kazu Hirata <kazu@hxi.com>
-
- * tic80-dis.c: Fix formatting.
-
-2000-08-29 Kazu Hirata <kazu@hxi.com>
-
- * w65-dis.c: Fix formatting.
-
-2000-08-28 Mark Hatle <mhatle@mvista.com>
-
- * ppc-opc.c: Add XTLB macro for a few PPC 4xx extended mnemonics.
- (powerpc_opcodes): Add table entries for PPC 405 instructions.
- Changed rfci, icbt, mfdcr, dccci, mtdcr, iccci from PPC to PPC403
- instructions. Added extended mnemonic mftbl as defined in the
- 405GP manual for all PPCs.
-
-2000-08-28 Jim Wilson <wilson@redhat.com>
-
- * ia64-dis.c (print_insn_ia64): Add failed label after ia64_free_opcode
- call. Change last goto to use failed instead of done.
-
-2000-08-28 Dave Brolley <brolley@redhat.com>
-
- * cgen-ibld.in (cgen_put_insn_int_value): New function.
- (insert_normal): Allow for non-zero word_offset with CGEN_INT_INSN_P.
- (insert_insn_normal): Use cgen_put_insn_int_value with CGEN_INT_INSN_P.
- (extract_normal): Allow for non-zero word_offset with CGEN_INT_INSN_P.
- * cgen-dis.in (read_insn): New static function.
- (print_insn): Use read_insn to read the insn into the buffer and set
- up for disassembly.
- (print_insn): in CGEN_INT_INSN_P, make sure that the entire insn is
- in the buffer.
- * fr30-asm.c: Regenerated.
- * fr30-desc.c: Regenerated.
- * fr30-desc.h: Regenerated.
- * fr30-dis.c: Regenerated.
- * fr30-ibld.c: Regenerated.
- * fr30-opc.c: Regenerated.
- * fr30-opc.h: Regenerated.
- * m32r-asm.c: Regenerated.
- * m32r-desc.c: Regenerated.
- * m32r-desc.h: Regenerated.
- * m32r-dis.c: Regenerated.
- * m32r-ibld.c: Regenerated.
- * m32r-opc.c: Regenerated.
-
-2000-08-28 Kazu Hirata <kazu@hxi.com>
-
- * tic30-dis.c: Fix formatting.
-
-2000-08-27 Kazu Hirata <kazu@hxi.com>
-
- * sh-dis.c: Fix formatting.
-
-2000-08-24 David Edelsohn <dje@watson.ibm.com>
-
- * ppc-opc.c (powerpc_opcodes): Add rfid, mtsrd, mtsrdin, mtmsrd.
-
-2000-08-24 Kazu Hirata <kazu@hxi.com>
-
- * z8k-dis.c: Fix formatting.
-
-2000-08-16 Jim Wilson <wilson@redhat.com>
-
- * ia64-ic.tbl (pr-readers-nobr-nomovpr): Add addl, adds. Delete
- break, mov-immediate, nop.
- * ia64-opc-f.c: Delete fpsub instructions.
- * ia64-opc-m.c: Add POSTINC to all instructions with postincrement
- address operand. Rewrite using macros to avoid long lines.
- * ia64-opc.h (POSTINC): Define.
- * ia64-asmtab.c: Regenerate.
-
-2000-08-15 Jim Wilson <wilson@redhat.com>
-
- * ia64-ic.tbl: Add missing entries.
-
-2000-08-08 Jason Eckhardt <jle@redhat.com>
-
- * i860-dis.c (print_br_address): Change third argument from int
- to long.
-
-2000-08-07 Richard Henderson <rth@redhat.com>
-
- * ia64-dis.c (print_insn_ia64): Get byte skip count correct
- for MLI templates. Handle IA64_OPND_TGT64.
-
-2000-08-04 Ben Elliston <bje@redhat.com>
-
- * cgen-dis.in, cgen-asm.in, cgen-ibld.in: New files.
- * cgen.sh: Likewise.
-
-2000-08-02 Jim Wilson <wilson@redhat.com>
-
- * ia64-dis.c (print_insn_ia64): Call ia64_free_opcode at end.
-
-2000-07-29 Marek Michalkiewicz <marekm@linux.org.pl>
-
- * avr-dis.c (avr_operand): Use PARAMS macro in declaration.
- Change return type from void to int. Check the combination
- of operands, return 1 if valid. Fix to avoid BUF overflow.
- Report undefined combinations of operands in COMMENT.
- Report internal errors to stderr. Output the adiw/sbiw
- constant operand in both decimal and hex.
- (print_insn_avr): Disassemble ldd/std with displacement of 0
- as ld/st. Check avr_operand () return value, handle invalid
- combinations of operands like unknown opcodes.
-
-2000-07-28 Ben Elliston <bje@redhat.com>
-
- * Makefile.am (CGEN, CGENDEPS, CGENDIR, CGENFLAGS): New.
- (run-cgen, stamp-m32r, stamp-fr30): New targets.
- * Makefile.in: Regenerate.
- * configure.in: Add --enable-cgen-maint option.
- * configure: Regenerate.
-
-2000-07-26 Dave Brolley <brolley@redhat.com>
-
- * cgen-opc.c (cgen_hw_lookup_by_name): 'i' is now unsigned.
- (cgen_hw_lookup_by_num): Ditto.
- (cgen_operand_lookup_by_name): Ditto.
- (print_address): Ditto.
- (print_keyword): Ditto.
- * cgen-dis.c (hash_insn_array): Mark unused parameters with
- ATTRIBUTE_UNUSED.
- * cgen-asm.c (hash_insn_array): Mark unused parameters with
- ATTRIBUTE_UNUSED.
- (cgen_parse_keyword): Ditto.
-
-2000-07-22 Jason Eckhardt <jle@redhat.com>
-
- * i860-dis.c: New file.
- (print_insn_i860): New function.
- (print_br_address): New function.
- (sign_extend): New function.
- (BITWISE_OP): New macro.
- (I860_REG_PREFIX): New macro.
- (grnames, frnames, crnames): New structures.
-
- * disassemble.c (ARCH_i860): Define.
- (disassembler): Add check for bfd_arch_i860 to set disassemble
- function to print_insn_i860.
-
- * Makefile.in (CFILES): Added i860-dis.c.
- (ALL_MACHINES): Added i860-dis.lo.
- (i860-dis.lo): New dependences.
-
- * configure.in: New bits for bfd_i860_arch.
-
- * configure: Regenerated.
-
-2000-07-20 Hans-Peter Nilsson <hp@axis.com>
-
- * Makefile.am (CFILES): Add cris-dis.c and cris-opc.c.
- (ALL_MACHINES): Add cris-dis.lo and cris-opc.lo.
- (cris-dis.lo, cris-opc.lo): New rules.
- * Makefile.in: Rebuild.
- * configure.in (bfd_cris_arch): New target.
- * configure: Rebuild.
- * disassemble.c (ARCH_cris): Define.
- (disassembler): Support ARCH_cris.
- * cris-dis.c, cris-opc.c: New files.
- * po/POTFILES.in, po/opcodes.pot: Regenerate.
-
-2000-07-11 Jakub Jelinek <jakub@redhat.com>
-
- * sparc-opc.c (sparc_opcodes): popc has 0 in rs1, not rs2.
- Reported by Bill Clarke <llib@computer.org>.
-
-2000-07-09 Geoffrey Keating <geoffk@redhat.com>
-
- * ppc-opc.c (powerpc_opcodes): Correct suffix for vslw.
- Patch by Randall J Fisher <rfisher@ecn.purdue.edu>.
-
-2000-07-09 Alan Modra <alan@linuxcare.com.au>
-
- * hppa-dis.c (fput_reg, fput_fp_reg, fput_fp_reg_r, fput_creg,
- fput_const, extract_3, extract_5_load, extract_5_store,
- extract_5r_store, extract_5R_store, extract_10U_store,
- extract_5Q_store, extract_11, extract_14, extract_16, extract_21,
- extract_12, extract_17, extract_22): Prototype.
- (print_insn_hppa): Rename inner block opcode -> opc to avoid
- shadowing outer block.
- (GET_BIT): Define.
-
-2000-07-05 DJ Delorie <dj@redhat.com>
-
- * MAINTAINERS: new
-
-2000-07-04 Alexandre Oliva <aoliva@redhat.com>
-
- * arm-dis.c (print_insn_arm): Output combinations of PSR flags.
-
-2000-07-03 Marek Michalkiewicz <marekm@linux.org.pl>
-
- * avr-dis.c (avr_operand): Change _ () to _() around all strings
- marked for translation (exception from the usual coding style).
- (print_insn_avr): Initialize insn2 to avoid warnings.
-
-2000-07-03 Kazu Hirata <kazu@hxi.com>
-
- * h8300-dis.c (bfd_h8_disassemble): Improve readability.
- * h8500-dis.c: Fix formatting.
-
-2000-07-01 Alan Modra <alan@linuxcare.com.au>
-
- * Makefile.am (DEP): Fix 2000-06-22. grep after running dep.sed
- (CLEANFILES): Add DEPA.
- * Makefile.in: Regenerate.
-
-2000-06-26 Scott Bambrough <scottb@netwinder.org>
-
- * arm-dis.c (regnames): Add an additional register set to match
- the set used by GCC. Make it the default.
-
-2000-06-22 Alan Modra <alan@linuxcare.com.au>
-
- * Makefile.am (DEP): grep for leading `/' in DEP1, and fail if we
- find one.
- * Makefile.in: Regenerate.
-
-2000-06-20 H.J. Lu <hjl@gnu.org>
-
- * Makefile.am: Rebuild dependency.
- * Makefile.in: Rebuild.
-
-2000-06-18 Stephane Carrez <stcarrez@worldnet.fr>
-
- * Makefile.in, configure: regenerate
- * disassemble.c (disassembler): Recognize ARCH_m68hc12,
- ARCH_m68hc11.
- * m68hc11-dis.c (read_memory, print_insn, print_insn_m68hc12):
- New functions.
- * configure.in: Recognize m68hc12 and m68hc11.
- * m68hc11-dis.c, m68hc11-opc.c: New files for support of m68hc1x
- * Makefile.am (CFILES, ALL_MACHINES): New files for disassembly
- and opcode generation for m68hc11 and m68hc12.
-
-2000-06-16 Nick Duffek <nsd@redhat.com>
-
- * disassemble.c (disassembler): Refer to the PowerPC 620 using
- bfd_mach_ppc_620 instead of 620.
-
-2000-06-12 Kazu Hirata <kazu@hxi.com>
-
- * h8300-dis.c: Fix formatting.
- (bfd_h8_disassemble): Distinguish adds/subs, inc/dec.[wl]
- correctly.
-
-2000-06-09 Denis Chertykov <denisc@overta.ru>
-
- * avr-dis.c (avr_operand): Bugfix for jmp/call address.
-
-2000-06-07 Denis Chertykov <denisc@overta.ru>
-
- * avr-dis.c: completely rewritten.
-
-2000-06-02 Kazu Hirata <kazu@hxi.com>
-
- * h8300-dis.c: Follow the GNU coding style.
- (bfd_h8_disassemble) Fix a typo.
-
-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@redhat.com>
-
- * opintl.h (_(String)): Explain why dgettext is used instead of
- gettext.
-
-2000-05-30 Nick Clifton <nickc@redhat.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.
-
-2000-05-25 Alexandre Oliva <aoliva@redhat.com>
-
- * m10300-dis.c (disassemble): Don't assume 32-bit longs when
- sign-extending operands.
-
-2000-05-15 Donald Lindsay <dlindsay@redhat.com>
-
- * d10v-opc.c (d10v_opcodes): add ALONE tag to all short branches
- except brf's.
-
-2000-05-21 Nick Clifton <nickc@redhat.com>
-
- * Makefile.am (LIBIBERTY): Define.
-
-2000-05-19 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@redhat.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.h: 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@redhat.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@redhat.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.
-
-2000-04-24 Clinton Popetz <cpopetz@redhat.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@redhat.com>
-
- * fr30-desc.c (fr30_cgen_cpu_open): Initialise signed_overflow
- field.
-
-2000-04-23 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.
-
-2000-04-22 Timothy Wall <twall@redhat.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.
-
-2000-04-21 Jason Eckhardt <jle@redhat.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.
-
-2000-04-21 Richard Henderson <rth@redhat.com>
- David Mosberger <davidm@hpl.hp.com>
- Timothy Wall <twall@redhat.com>
- Bob Manson <manson@charmed.cygnus.com>
- Jim Wilson <wilson@redhat.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@redhat.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.
-
-2000-04-7 Andrew Cagney <cagney@b1.redhat.com>
-
- * configure.in (WARN_CFLAGS): Set to -W -Wall by default. Add
- --enable-build-warnings option.
- * Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions.
- * Makefile.in, configure: Re-generate.
-
-2000-04-05 J"orn Rennecke <amylaar@redhat.com>
-
- * sh-opc.h (sh_table): Use A_DISP_PC / PCRELIMM_8BY2 for ldre & ldrs.
- stc GBR,@-<REG_N> is available for arch_sh1_up.
- Group parallel processing insn with identical mnemonics together.
- Make three-operand psha / pshl come first.
-
-2000-04-05 J"orn Rennecke <amylaar@redhat.co.uk>
-
- * sh-opc.h (sh_nibble_type): Remove DISP_8 and DISP_4.
- Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}. Add REPEAT.
- (sh_arg_type): Add A_PC.
- (sh_table): Update entries using immediates. Add repeat.
- * sh-dis.c (print_insn_shx): Remove DISP_8 and DISP_4.
- Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}. Add REPEAT.
-
-2000-04-04 Alan Modra <alan@linuxcare.com.au>
-
- * po/opcodes.pot: Regenerate.
-
- * Makefile.am (MKDEP): Use gcc -MM rather than mkdep.
- (DEP): Quote when passing vars to sub-make. Add warning message
- to end.
- (DEP1): Rewrite for "gcc -MM".
- (CLEANFILES): Add DEP2.
- Update dependencies.
- * Makefile.in: Regenerate.
-
-2000-04-03 Denis Chertykov <denisc@overta.ru>
-
- * avr-dis.c: Syntax cleanup.
- (add0fff): Print the pc relative address as a signed number.
- (add03f8): Likewise.
-
-2000-04-01 Ian Lance Taylor <ian@zembu.com>
-
- * disassemble.c (disassembler_usage): Don't use a prototype. Mark
- the parameter ATTRIBUTE_UNUSED.
- * ppc-opc.c: Add ATTRIBUTE_UNUSED as needed.
-
-2000-04-01 Alexandre Oliva <aoliva@redhat.com>
-
- * m10300-opc.c: SP-based offsets are always unsigned.
-
-2000-03-29 Thomas de Lellis <tdel@windriver.com>
-
- * arm-opc.h (thumb_opcodes): Disassemble 0xde.. to "bal"
- [branch always] instead of "undefined".
-
-2000-03-27 Nick Clifton <nickc@redhat.com>
-
- * d30v-opc.c (d30v_format_table): Move SHORT_AR to end of list of
- short instructions, from end of list of long instructions.
-
-2000-03-27 Ian Lance Taylor <ian@zembu.com>
-
- * Makefile.am (CFILES): Add avr-dis.c.
- (ALL_MACHINES): Add avr-dis.lo.
-
-2000-03-27 Alan Modra <alan@linuxcare.com>
-
- * avr-dis.c (add0fff, add03f8): Don't use structure bitfields to
- truncate integers.
- (print_insn_avr): Call function via pointer in K&R compatible way.
- (dispLDD, regPP, reg50, reg104, reg40, reg20w, lit404, lit204,
- add0fff, add03f8): Convert to old style function declaration and
- add prototype.
- (avrdis_opcode): Add prototype.
-
-2000-03-27 Denis Chertykov <denisc@overta.ru>
-
- * avr-dis.c: New file. AVR disassembler.
- * configure.in (bfd_avr_arch): New architecture support.
- * disassemble.c: Likewise.
- * configure: Regenerate.
-
-2000-03-06 J"oern Rennecke <amylaar@redhat.com>
-
- * sh-opc.h (sh_table): ldre and ldrs have a *signed* displacement.
-
-2000-03-02 J"orn Rennecke <amylaar@redhat.co.uk>
-
- * d30v-dis.c (print_insn): Remove d*i hacks. Use per-operand
- flag to determine if operand is pc-relative.
- * d30v-opc.c:
- (d30v_format_table):
- (REL6S3): Renamed from IMM6S3.
- Added flag OPERAND_PCREL.
- (REL12S3, REL18S3, REL32): Split from IMM12S3, IMM18S3, REL32, with
- added flag OPERAND_PCREL.
- (IMM12S3U): Replaced with REL12S3.
- (SHORT_D2, LONG_D): Delay target is pc-relative.
- (SHORT_B2r, SHORT_B3r, SHORT_B3br, SHORT_D2r, LONG_Ur, LONG_2r):
- Split from SHORT_B2, SHORT_D2, SHORT_B3b, SHORT_D2, LONG_U, LONG_2r,
- using the REL* operands.
- (LONG_2br, LONG_Dr): Likewise, from LONG_2b, LONG_D.
- (SHORT_D1r, SHORT_D2Br, LONG_Dbr): Renamed from SHORT_D1, SHORT_D2B,
- LONG_Db, using REL* operands.
- (SHORT_U, SHORT_A5S): Removed stray alternatives.
- (d30v_opcode_table): Use new *r formats.
-
-2000-02-28 Nick Clifton <nickc@redhat.com>
-
- * m32r-desc.c (m32r_cgen_cpu_open): Replace 'flags' with
- 'signed_overflow_ok_p'.
-
-2000-02-27 Eli Zaretskii <eliz@is.elta.co.il>
-
- * Makefile.am (stamp-lib): Use $(LIBTOOL) --config to get the
- name of the libtool directory.
- * Makefile.in: Rebuild.
-
-2000-02-24 Nick Clifton <nickc@redhat.com>
-
- * cgen-opc.c (cgen_set_signed_overflow_ok): New function.
- (cgen_clear_signed_overflow_ok): New function.
- (cgen_signed_overflow_ok_p): New function.
-
-2000-02-23 Andrew Haley <aph@redhat.com>
-
- * m32r-asm.c, m32r-desc.c, m32r-desc.h, m32r-dis.c,
- m32r-ibld.c, m32r-opc.h: Rebuild.
-
-2000-02-23 Linas Vepstas <linas@linas.org>
-
- * i370-dis.c, i370-opc.c: New.
-
- * disassemble.c (ARCH_i370): Define.
- (disassembler): Handle it.
-
- * Makefile.am: Add support for Linux/IBM 370.
- * configure.in: Likewise.
-
- * Makefile.in: Regenerate.
- * configure: Likewise.
-
-2000-02-22 Chandra Chavva <cchavva@redhat.com>
-
- * d30v-opc.c (d30v_opcode_tab) : Added FLAG_NOT_WITH_ADDSUBppp to
- ST2H, STB, STH, STHH, STW and ST2H opcodes to prohibit parallel
- procedure.
-
-2000-02-22 Andrew Haley <aph@redhat.com>
-
- * mips-dis.c (_print_insn_mips): New arg for OPCODE_IS_MEMBER:
- force gp32 to zero.
- * mips-opc.c (G6): New define.
- (mips_builtin_op): Add "move" definition for -gp32.
-
-2000-02-22 Ian Lance Taylor <ian@zembu.com>
-
- From Grant Erickson <gerickso@Brocade.COM>:
- * ppc-opc.c: Correct dcread--it takes 3 arguments, not 2.
-
-2000-02-21 Alan Modra <alan@spri.levels.unisa.edu.au>
-
- * dis-buf.c (buffer_read_memory): Change `length' param and all int
- vars to unsigned.
-
-2000-02-17 J"orn Rennecke <amylaar@redhat.co.uk>
-
- * sh-dis.c (print_movxy, print_insn_ddt, print_dsp_reg): New functions.
- (print_insn_ppi): Likewise.
- (print_insn_shx): Use info->mach to select appropriate insn set.
- Add support for sh-dsp. Remove FD_REG_N support.
- * sh-opc.h (sh_nibble_type): Add new values for sh-dsp support.
- (sh_arg_type): Likewise. Remove FD_REG_N.
- (sh_dsp_reg_nums): New enum.
- (arch_sh1, arch_sh2, arch_sh3, arch_sh3e, arch_sh4): New macros.
- (arch_sh_dsp, arch_sh3_dsp, arch_sh1_up, arch_sh2_up): Likewise.
- (arch_sh3_up, arch_sh3e_up, arch_sh4_up, arch_sh_dsp_up): Likewise.
- (arch_sh3_dsp_up): Likewise.
- (sh_opcode_info): New field: arch.
- (sh_table): Split up insn with FD_REG_N into ones with F_REG_N and
- D_REG_N. Fill in arch field. Add sh-dsp insns.
-
-2000-02-14 Fernando Nasser <fnasser@totem.to.redhat.com>
-
- * arm-dis.c: Change flavor name from atpcs-special to
- special-atpcs to prevent name conflict in gdb.
- (get_arm_regname_num_options, set_arm_regname_option,
- get_arm_regnames): New functions. API to access the several
- flavor of register names. Note: Used by gdb.
- (print_insn_thumb): Use the register name entry from the currently
- selected flavor for LR and PC.
-
-2000-02-10 Nick Clifton <nickc@redhat.com>
-
- * mcore-opc.h (enum mcore_opclass): Add MULSH and OPSR
- classes.
- (mcore_table): Add "idly4", "psrclr", "psrset", "mulsh" and
- "mulsh.h" instructions.
- * mcore-dis.c (imsk array): Add masks for MULSH and OPSR
- classes.
- (print_insn_mcore): Add support for little endian targets.
- Add support for MULSH and OPSR classes.
-
-2000-02-07 Nick Clifton <nickc@redhat.com>
-
- * arm-dis.c (parse_arm_diassembler_option): Rename again.
- Previous delat did not take.
-
-2000-02-03 Timothy Wall <twall@redhat.com>
-
- * dis-buf.c (buffer_read_memory): Use octets_per_byte field
- to adjust target address bounds checking and calculate the
- appropriate octet offset into data.
-
-2000-01-27 Nick Clifton <nickc@redhat.com>
-
- * arm-dis.c: (parse_disassembler_option): Rename to
- parse_arm_disassembler_option and allow to be exported.
-
- * disassemble.c (disassembler_usage): New function: Print out any
- target specific disassembler options.
- Call arm_disassembler_options() if the ARM architecture is being
- supported.
-
- * arm-dis.c (NUM_ELEM): Define this macro if not already
- defined.
- (arm_regname): New struct type for ARM register names.
- (arm_toggle_regnames): Delete.
- (parse_disassembler_option): Use register name structure.
- (print_insn): New function: Combines duplicate code found in
- print_insn_big_arm and print_insn_little_arm.
- (print_insn_big_arm): Call print_insn.
- (print_insn_little_arm): Call print_insn.
- (print_arm_disassembler_options): Display list of supported,
- ARM specific disassembler options.
-
-2000-01-27 Thomas de Lellis <tdel@windriver.com>
-
- * arm-dis.c (printf_insn_big_arm): Treat ELF symbols with the
- ARM_STT_16BIT flag as Thumb code symbols.
-
- * arm-dis.c (printf_insn_little_arm): Ditto.
-
-2000-01-25 Thomas de Lellis <tdel@windriver.com>
-
- * arm-dis.c (printf_insn_thumb): Prevent double dumping
- of raw thumb instructions.
-
-2000-01-20 Nick Clifton <nickc@redhat.com>
+2004-01-06 Alexandre Oliva <aoliva@redhat.com>
- * mcore-opc.h (mcore_table): Add "add" as an alias for "addu".
+ 2003-12-19 Alexandre Oliva <aoliva@redhat.com>
+ * frv-asm.c (parse_ulo16, parse_uhi16, parse_d12): Fix some
+ cut&paste errors in shifting/truncating numerical operands.
+ 2003-08-04 Alexandre Oliva <aoliva@redhat.com>
+ * frv-asm.c (parse_ulo16): Parse gotofflo and gotofffuncdesclo.
+ (parse_uslo16): Likewise.
+ (parse_uhi16): Parse gotoffhi and gotofffuncdeschi.
+ (parse_d12): Parse gotoff12 and gotofffuncdesc12.
+ (parse_s12): Likewise.
+ 2003-08-04 Alexandre Oliva <aoliva@redhat.com>
+ * frv-asm.c (parse_ulo16): Parse gotlo and gotfuncdesclo.
+ (parse_uslo16): Likewise.
+ (parse_uhi16): Parse gothi and gotfuncdeschi.
+ (parse_d12): Parse got12 and gotfuncdesc12.
+ (parse_s12): Likewise.
-2000-01-03 Nick Clifton <nickc@cygnus.com>
+2004-01-02 Albert Bartoszko <albar@nt.kegel.com.pl>
- * arm-dis.c (streq): New macro.
- (strneq): New macro.
- (force_thumb): ew local variable.
- (parse_disassembler_option): New function: Parse a single, ARM
- specific disassembler command line switch.
- (parse_disassembler_option): Call parse_disassembler_option to
- parse individual command line switches.
- (print_insn_big_arm): Check force_thumb.
- (print_insn_little_arm): Check force_thumb.
+ * msp430-dis.c (msp430_doubleoperand): Check for an 'add'
+ instruction which looks similar to an 'rla' instruction.
-For older changes see ChangeLog-9899
+For older changes see ChangeLog-0203
Local Variables:
mode: change-log
diff --git a/opcodes/Makefile.am b/opcodes/Makefile.am
index e227b1f3817..ea621f2d366 100644
--- a/opcodes/Makefile.am
+++ b/opcodes/Makefile.am
@@ -283,8 +283,13 @@ disassemble.lo: disassemble.c $(INCDIR)/dis-asm.h
$(LIBTOOL) --mode=compile $(COMPILE) -c @archdefs@ $(srcdir)/disassemble.c
libopcodes_la_SOURCES = dis-buf.c disassemble.c dis-init.c
-libopcodes_la_DEPENDENCIES = $(OFILES) ../bfd/libbfd.la
-libopcodes_la_LIBADD = $(OFILES) @WIN32LIBADD@ ../bfd/libbfd.la
+# It's desirable to list ../bfd/libbfd.la in DEPENDENCIES and LIBADD.
+# Unfortunately this causes libtool to add -L$(libdir), referring to the
+# planned install directory of libbfd. This can cause us to pick up an
+# old version of libbfd, or to pick up libbfd for the wrong architecture
+# if host != build.
+libopcodes_la_DEPENDENCIES = $(OFILES)
+libopcodes_la_LIBADD = $(OFILES) @WIN32LIBADD@
libopcodes_la_LDFLAGS = -release $(VERSION) @WIN32LDFLAGS@
# libtool will build .libs/libopcodes.a. We create libopcodes.a in
diff --git a/opcodes/Makefile.in b/opcodes/Makefile.in
index de427eaeb92..559194dab78 100644
--- a/opcodes/Makefile.in
+++ b/opcodes/Makefile.in
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
-# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -393,8 +393,13 @@ OFILES = @BFD_MACHINES@
INCLUDES = -D_GNU_SOURCE -I. -I$(srcdir) -I../bfd -I$(INCDIR) -I$(BFDDIR) @HDEFINES@ -I$(srcdir)/../intl -I../intl
libopcodes_la_SOURCES = dis-buf.c disassemble.c dis-init.c
-libopcodes_la_DEPENDENCIES = $(OFILES) ../bfd/libbfd.la
-libopcodes_la_LIBADD = $(OFILES) @WIN32LIBADD@ ../bfd/libbfd.la
+# It's desirable to list ../bfd/libbfd.la in DEPENDENCIES and LIBADD.
+# Unfortunately this causes libtool to add -L$(libdir), referring to the
+# planned install directory of libbfd. This can cause us to pick up an
+# old version of libbfd, or to pick up libbfd for the wrong architecture
+# if host != build.
+libopcodes_la_DEPENDENCIES = $(OFILES)
+libopcodes_la_LIBADD = $(OFILES) @WIN32LIBADD@
libopcodes_la_LDFLAGS = -release $(VERSION) @WIN32LDFLAGS@
# libtool will build .libs/libopcodes.a. We create libopcodes.a in
@@ -617,7 +622,7 @@ maintainer-clean-recursive:
dot_seen=no; \
rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \
rev="$$subdir $$rev"; \
- test "$$subdir" != "." || dot_seen=yes; \
+ test "$$subdir" = "." && dot_seen=yes; \
done; \
test "$$dot_seen" = "no" && rev=". $$rev"; \
target=`echo $@ | sed s/-recursive//`; \
diff --git a/opcodes/arm-opc.h b/opcodes/arm-opc.h
index cc59b8f5cea..d427946a22e 100644
--- a/opcodes/arm-opc.h
+++ b/opcodes/arm-opc.h
@@ -328,9 +328,6 @@ static const struct arm_opcode arm_opcodes[] =
{0x01200050, 0x0ff00ff0, "qsub%c\t%12-15r, %0-3r, %16-19r"},
{0x01600050, 0x0ff00ff0, "qdsub%c\t%12-15r, %0-3r, %16-19r"},
- {0x0c400000, 0x0ff00000, "mcrr%c\t%8-11d, %4-7d, %12-15r, %16-19r, cr%0-3d"},
- {0x0c500000, 0x0ff00000, "mrrc%c\t%8-11d, %4-7d, %12-15r, %16-19r, cr%0-3d"},
-
/* ARM Instructions. */
{0x00000090, 0x0e100090, "str%c%6's%5?hb\t%12-15r, %s"},
{0x00100090, 0x0e100090, "ldr%c%6's%5?hb\t%12-15r, %s"},
@@ -569,6 +566,8 @@ static const struct arm_opcode arm_opcodes[] =
{0x0e300600, 0x0ff00f00, "cfmsuba32%c\tmvax%5-7d, mvax%12-15d, mvfx%16-19d, mvfx%0-3d"},
/* Generic coprocessor instructions */
+ {0x0c400000, 0x0ff00000, "mcrr%c\t%8-11d, %4-7d, %12-15r, %16-19r, cr%0-3d"},
+ {0x0c500000, 0x0ff00000, "mrrc%c\t%8-11d, %4-7d, %12-15r, %16-19r, cr%0-3d"},
{0x0e000000, 0x0f000010, "cdp%c\t%8-11d, %20-23d, cr%12-15d, cr%16-19d, cr%0-3d, {%5-7d}"},
{0x0e100010, 0x0f100010, "mrc%c\t%8-11d, %21-23d, %12-15r, cr%16-19d, cr%0-3d, {%5-7d}"},
{0x0e000010, 0x0f100010, "mcr%c\t%8-11d, %21-23d, %12-15r, cr%16-19d, cr%0-3d, {%5-7d}"},
diff --git a/opcodes/frv-asm.c b/opcodes/frv-asm.c
index 678a250d6db..145b56a2a79 100644
--- a/opcodes/frv-asm.c
+++ b/opcodes/frv-asm.c
@@ -110,7 +110,66 @@ parse_ulo16 (cd, strp, opindex, valuep)
++*strp;
if (errmsg == NULL
&& result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
- value >>= 16;
+ value &= 0xffff;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotlo(", 6) == 0)
+ {
+ *strp += 7;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTLO,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value &= 0xffff;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotfuncdesclo(", 14) == 0)
+ {
+ *strp += 15;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOTLO,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value &= 0xffff;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotofflo(", 9) == 0)
+ {
+ *strp += 10;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_GOTOFFLO,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value &= 0xffff;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotofffuncdesclo(", 17) == 0)
+ {
+ *strp += 18;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value &= 0xffff;
*valuep = value;
return errmsg;
}
@@ -159,6 +218,65 @@ parse_uslo16 (cd, strp, opindex, valuep)
*valuep = value;
return errmsg;
}
+ else if (strncasecmp (*strp + 1, "gotlo(", 6) == 0)
+ {
+ *strp += 7;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTLO,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value &= 0xffff;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotfuncdesclo(", 14) == 0)
+ {
+ *strp += 15;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOTLO,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value &= 0xffff;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotofflo(", 9) == 0)
+ {
+ *strp += 10;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_GOTOFFLO,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value &= 0xffff;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotofffuncdesclo(", 17) == 0)
+ {
+ *strp += 18;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value &= 0xffff;
+ *valuep = value;
+ return errmsg;
+ }
}
return cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
}
@@ -204,6 +322,65 @@ parse_uhi16 (cd, strp, opindex, valuep)
*valuep = value;
return errmsg;
}
+ else if (strncasecmp (*strp + 1, "gothi(", 6) == 0)
+ {
+ *strp += 7;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTHI,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value >>= 16;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotfuncdeschi(", 14) == 0)
+ {
+ *strp += 15;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOTHI,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value >>= 16;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotoffhi(", 9) == 0)
+ {
+ *strp += 10;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_GOTOFFHI,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value >>= 16;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotofffuncdeschi(", 17) == 0)
+ {
+ *strp += 18;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ if (errmsg == NULL
+ && result_type == CGEN_PARSE_OPERAND_RESULT_NUMBER)
+ value >>= 16;
+ *valuep = value;
+ return errmsg;
+ }
}
return cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
}
@@ -286,6 +463,53 @@ parse_d12 (cd, strp, opindex, valuep)
*valuep = value;
return errmsg;
}
+ else if (strncasecmp (*strp + 1, "got12(", 6) == 0)
+ {
+ *strp += 7;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOT12,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotfuncdesc12(", 14) == 0)
+ {
+ *strp += 15;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOT12,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotoff12(", 9) == 0)
+ {
+ *strp += 10;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_GOTOFF12,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ *valuep = value;
+ return errmsg;
+ }
+ else if (strncasecmp (*strp + 1, "gotofffuncdesc12(", 17) == 0)
+ {
+ *strp += 18;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ *valuep = value;
+ return errmsg;
+ }
}
return cgen_parse_signed_integer (cd, strp, opindex, valuep);
}
@@ -314,6 +538,56 @@ parse_s12 (cd, strp, opindex, valuep)
*valuep = value;
return errmsg;
}
+ else if ((**strp == '#' || **strp == '%')
+ && strncasecmp (*strp + 1, "got12(", 6) == 0)
+ {
+ *strp += 7;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOT12,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ *valuep = value;
+ return errmsg;
+ }
+ else if ((**strp == '#' || **strp == '%')
+ && strncasecmp (*strp + 1, "gotfuncdesc12(", 14) == 0)
+ {
+ *strp += 15;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOT12,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ *valuep = value;
+ return errmsg;
+ }
+ else if ((**strp == '#' || **strp == '%')
+ && strncasecmp (*strp + 1, "gotoff12(", 9) == 0)
+ {
+ *strp += 10;
+ errmsg = cgen_parse_address (cd, strp, opindex, BFD_RELOC_FRV_GOTOFF12,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ *valuep = value;
+ return errmsg;
+ }
+ else if ((**strp == '#' || **strp == '%')
+ && strncasecmp (*strp + 1, "gotofffuncdesc12(", 17) == 0)
+ {
+ *strp += 18;
+ errmsg = cgen_parse_address (cd, strp, opindex,
+ BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
+ &result_type, &value);
+ if (**strp != ')')
+ return "missing ')'";
+ ++*strp;
+ *valuep = value;
+ return errmsg;
+ }
else
{
if (**strp == '#')
diff --git a/opcodes/frv-desc.c b/opcodes/frv-desc.c
index 9cc85fef499..35659c7b420 100644
--- a/opcodes/frv-desc.c
+++ b/opcodes/frv-desc.c
@@ -84,6 +84,7 @@ static const CGEN_ATTR_ENTRY UNIT_attr[] =
{ "B01", UNIT_B01 },
{ "C", UNIT_C },
{ "MULT_DIV", UNIT_MULT_DIV },
+ { "IACC", UNIT_IACC },
{ "LOAD", UNIT_LOAD },
{ "STORE", UNIT_STORE },
{ "SCAN", UNIT_SCAN },
@@ -2397,17 +2398,17 @@ static const CGEN_IBASE frv_cgen_insn_table[MAX_INSNS] =
/* smu$pack $GRi,$GRj */
{
FRV_INSN_SMU, "smu", "smu", 32,
- { 0, { (1<<MACH_FR400), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
+ { 0, { (1<<MACH_FR400), UNIT_IACC, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
},
/* smass$pack $GRi,$GRj */
{
FRV_INSN_SMASS, "smass", "smass", 32,
- { 0, { (1<<MACH_FR400), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
+ { 0, { (1<<MACH_FR400), UNIT_IACC, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
},
/* smsss$pack $GRi,$GRj */
{
FRV_INSN_SMSSS, "smsss", "smsss", 32,
- { 0, { (1<<MACH_FR400), UNIT_MULT_DIV, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
+ { 0, { (1<<MACH_FR400), UNIT_IACC, FR400_MAJOR_I_1, FR500_MAJOR_NONE, FR550_MAJOR_NONE } }
},
/* sll$pack $GRi,$GRj,$GRk */
{
diff --git a/opcodes/frv-desc.h b/opcodes/frv-desc.h
index 5f72800379d..f46c3f957c1 100644
--- a/opcodes/frv-desc.h
+++ b/opcodes/frv-desc.h
@@ -549,9 +549,9 @@ typedef enum unit_attr {
, UNIT_I2, UNIT_I3, UNIT_IALL, UNIT_FM0
, UNIT_FM1, UNIT_FM01, UNIT_FM2, UNIT_FM3
, UNIT_FMALL, UNIT_FMLOW, UNIT_B0, UNIT_B1
- , UNIT_B01, UNIT_C, UNIT_MULT_DIV, UNIT_LOAD
- , UNIT_STORE, UNIT_SCAN, UNIT_DCPL, UNIT_MDUALACC
- , UNIT_MCLRACC_1, UNIT_NUM_UNITS
+ , UNIT_B01, UNIT_C, UNIT_MULT_DIV, UNIT_IACC
+ , UNIT_LOAD, UNIT_STORE, UNIT_SCAN, UNIT_DCPL
+ , UNIT_MDUALACC, UNIT_MCLRACC_1, UNIT_NUM_UNITS
} UNIT_ATTR;
/* Enum declaration for fr400 major insn categories. */
diff --git a/opcodes/frv-opc.c b/opcodes/frv-opc.c
index 61bdb4530eb..1560d207dce 100644
--- a/opcodes/frv-opc.c
+++ b/opcodes/frv-opc.c
@@ -239,6 +239,7 @@ static CGEN_ATTR_VALUE_TYPE fr400_unit_mapping[] =
/* B01 */ UNIT_B0,
/* C */ UNIT_C,
/* MULT-DIV */ UNIT_I0, /* multiply and divide only in I0 unit. */
+/* IACC */ UNIT_I01, /* iacc multiply in I0 or I1 unit. */
/* LOAD */ UNIT_I0, /* load only in I0 unit. */
/* STORE */ UNIT_I0, /* store only in I0 unit. */
/* SCAN */ UNIT_I0, /* scan only in I0 unit. */
@@ -269,6 +270,7 @@ static CGEN_ATTR_VALUE_TYPE fr500_unit_mapping[] =
/* B01 */ UNIT_B01,
/* C */ UNIT_C,
/* MULT-DIV */ UNIT_I01, /* multiply and divide in I0 or I1 unit. */
+/* IACC */ UNIT_NIL, /* iacc multiply not implemented */
/* LOAD */ UNIT_I01, /* load in I0 or I1 unit. */
/* STORE */ UNIT_I0, /* store only in I0 unit. */
/* SCAN */ UNIT_I01, /* scan in I0 or I1 unit. */
@@ -299,6 +301,7 @@ static CGEN_ATTR_VALUE_TYPE fr550_unit_mapping[] =
/* B01 */ UNIT_B01,
/* C */ UNIT_C,
/* MULT-DIV */ UNIT_I01, /* multiply and divide in I0 or I1 unit. */
+/* IACC */ UNIT_NIL, /* iacc multiply not implemented. */
/* LOAD */ UNIT_I01, /* load in I0 or I1 unit. */
/* STORE */ UNIT_I01, /* store in I0 or I1 unit. */
/* SCAN */ UNIT_IALL, /* scan in any integer unit. */
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 0ef57efb93c..f9a0a9b2c45 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -3173,11 +3173,7 @@ OP_E (int bytemode, int sizeflag)
? names64[index] : names32[index]);
oappend (scratchbuf);
}
- if (!intel_syntax
- || (intel_syntax
- && bytemode != b_mode
- && bytemode != w_mode
- && bytemode != v_mode))
+ if (scale != 0 || (!intel_syntax && index != 4))
{
*obufp++ = scale_char;
*obufp = '\0';
diff --git a/opcodes/m10300-opc.c b/opcodes/m10300-opc.c
index d1a2ea20d08..4082b29e051 100644
--- a/opcodes/m10300-opc.c
+++ b/opcodes/m10300-opc.c
@@ -1,5 +1,5 @@
/* Assemble Matsushita MN10300 instructions.
- Copyright 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright 1996, 1997, 1998, 1999, 2000, 2004 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -561,8 +561,8 @@ const struct mn10300_opcode mn10300_opcodes[] = {
{ "mov", 0xfb080000, 0xffff0000, 0, FMT_D7, AM33, {SIMM8, RN02}},
{ "mov", 0xfd080000, 0xffff0000, 0, FMT_D8, AM33, {SIMM24, RN02}},
{ "mov", 0xfe080000, 0xffff0000, 0, FMT_D9, AM33, {IMM32_HIGH8, RN02}},
-{ "mov", 0xfbf80000, 0xffff0000, 0, FMT_D7, AM33, {SIMM8, XRN02}},
-{ "mov", 0xfdf80000, 0xffff0000, 0, FMT_D8, AM33, {SIMM24, XRN02}},
+{ "mov", 0xfbf80000, 0xffff0000, 0, FMT_D7, AM33, {IMM8, XRN02}},
+{ "mov", 0xfdf80000, 0xffff0000, 0, FMT_D8, AM33, {IMM24, XRN02}},
{ "mov", 0xfef80000, 0xffff0000, 0, FMT_D9, AM33, {IMM32_HIGH8, XRN02}},
{ "mov", 0xfe0e0000, 0xffff0f00, 0, FMT_D9, AM33, {MEM(IMM32_HIGH8_MEM), RN2}},
{ "mov", 0xfe1e0000, 0xffff0f00, 0, FMT_D9, AM33, {RM2, MEM(IMM32_HIGH8_MEM)}},
diff --git a/opcodes/msp430-dis.c b/opcodes/msp430-dis.c
index 767ffa472c1..1b5ffb1ec12 100644
--- a/opcodes/msp430-dis.c
+++ b/opcodes/msp430-dis.c
@@ -1,5 +1,5 @@
/* Disassemble MSP430 instructions.
- Copyright (C) 2002 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004 Free Software Foundation, Inc.
Contributed by Dmitry Diky <diwil@mail.ru>
@@ -491,6 +491,10 @@ msp430_doubleoperand (info, opcode, addr, insn, op1, op2, comm1, comm2, cycles)
{
/* Absolute. */
dst = msp430dis_opcode (addr + 2, info);
+ /* If the 'src' field is not the same as the dst
+ then this is not an rla instruction. */
+ if (dst != msp430dis_opcode (addr + 4, info))
+ return 0;
cmd_len += 4;
*cycles = 6;
sprintf (op1, "&0x%04x", PS (dst));
diff --git a/opcodes/sh-dis.c b/opcodes/sh-dis.c
index c0e1a2ebfa0..70fdffb48e8 100644
--- a/opcodes/sh-dis.c
+++ b/opcodes/sh-dis.c
@@ -397,7 +397,7 @@ print_insn_sh (memaddr, info)
{
fprintf_ftype fprintf_fn = info->fprintf_func;
void *stream = info->stream;
- unsigned char insn[2];
+ unsigned char insn[4];
unsigned char nibs[4];
int status;
bfd_vma relmask = ~(bfd_vma) 0;
diff --git a/opcodes/sparc-opc.c b/opcodes/sparc-opc.c
index 00102323f2b..22f18fadb5d 100644
--- a/opcodes/sparc-opc.c
+++ b/opcodes/sparc-opc.c
@@ -1,6 +1,6 @@
/* Table of opcodes for the sparc.
Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000
+ 2000, 2002, 2004
Free Software Foundation, Inc.
This file is part of the BFD library.
@@ -1525,17 +1525,17 @@ CONDFC ("fbule", "cb013", 0xe, F_CONDBR),
{ "fstoi", F3F(2, 0x34, 0x0d1), F3F(~2, ~0x34, ~0x0d1)|RS1_G0, "f,g", F_FLOAT, v6 },
{ "fqtoi", F3F(2, 0x34, 0x0d3), F3F(~2, ~0x34, ~0x0d3)|RS1_G0, "R,g", F_FLOAT, v8 },
-{ "fdtox", F3F(2, 0x34, 0x082), F3F(~2, ~0x34, ~0x082)|RS1_G0, "B,g", F_FLOAT, v9 },
-{ "fstox", F3F(2, 0x34, 0x081), F3F(~2, ~0x34, ~0x081)|RS1_G0, "f,g", F_FLOAT, v9 },
-{ "fqtox", F3F(2, 0x34, 0x083), F3F(~2, ~0x34, ~0x083)|RS1_G0, "R,g", F_FLOAT, v9 },
+{ "fdtox", F3F(2, 0x34, 0x082), F3F(~2, ~0x34, ~0x082)|RS1_G0, "B,H", F_FLOAT, v9 },
+{ "fstox", F3F(2, 0x34, 0x081), F3F(~2, ~0x34, ~0x081)|RS1_G0, "f,H", F_FLOAT, v9 },
+{ "fqtox", F3F(2, 0x34, 0x083), F3F(~2, ~0x34, ~0x083)|RS1_G0, "R,H", F_FLOAT, v9 },
{ "fitod", F3F(2, 0x34, 0x0c8), F3F(~2, ~0x34, ~0x0c8)|RS1_G0, "f,H", F_FLOAT, v6 },
{ "fitos", F3F(2, 0x34, 0x0c4), F3F(~2, ~0x34, ~0x0c4)|RS1_G0, "f,g", F_FLOAT, v6 },
{ "fitoq", F3F(2, 0x34, 0x0cc), F3F(~2, ~0x34, ~0x0cc)|RS1_G0, "f,J", F_FLOAT, v8 },
-{ "fxtod", F3F(2, 0x34, 0x088), F3F(~2, ~0x34, ~0x088)|RS1_G0, "f,H", F_FLOAT, v9 },
-{ "fxtos", F3F(2, 0x34, 0x084), F3F(~2, ~0x34, ~0x084)|RS1_G0, "f,g", F_FLOAT, v9 },
-{ "fxtoq", F3F(2, 0x34, 0x08c), F3F(~2, ~0x34, ~0x08c)|RS1_G0, "f,J", F_FLOAT, v9 },
+{ "fxtod", F3F(2, 0x34, 0x088), F3F(~2, ~0x34, ~0x088)|RS1_G0, "B,H", F_FLOAT, v9 },
+{ "fxtos", F3F(2, 0x34, 0x084), F3F(~2, ~0x34, ~0x084)|RS1_G0, "B,g", F_FLOAT, v9 },
+{ "fxtoq", F3F(2, 0x34, 0x08c), F3F(~2, ~0x34, ~0x08c)|RS1_G0, "B,J", F_FLOAT, v9 },
{ "fdtoq", F3F(2, 0x34, 0x0ce), F3F(~2, ~0x34, ~0x0ce)|RS1_G0, "B,J", F_FLOAT, v8 },
{ "fdtos", F3F(2, 0x34, 0x0c6), F3F(~2, ~0x34, ~0x0c6)|RS1_G0, "B,g", F_FLOAT, v6 },
diff --git a/opcodes/z8k-dis.c b/opcodes/z8k-dis.c
index 02f5dcb7705..0ac0fc80918 100644
--- a/opcodes/z8k-dis.c
+++ b/opcodes/z8k-dis.c
@@ -26,7 +26,7 @@
#include "z8k-opc.h"
#include <setjmp.h>
-
+
typedef struct
{
/* These are all indexed by nibble number (i.e only every other entry
@@ -472,12 +472,53 @@ unpack_instr (instr_data_s *instr_data, int is_segmented, disassemble_info *info
}
}
-static char *intr_names[] = {
- "all", /* 0 */
- "vi", /* 1 */
- "nvi", /* 2 */
- "none" /* 3 */
-};
+static void
+print_intr(char *tmp_str, unsigned long interrupts)
+{
+ int comma = 0;
+
+ *tmp_str = 0;
+ if (! (interrupts & 2))
+ {
+ strcat (tmp_str, "vi");
+ comma = 1;
+ }
+ if (! (interrupts & 1))
+ {
+ if (comma) strcat (tmp_str, ",");
+ strcat (tmp_str, "nvi");
+ }
+}
+
+static void
+print_flags(char *tmp_str, unsigned long flags)
+{
+ int comma = 0;
+
+ *tmp_str = 0;
+ if (flags & 8)
+ {
+ strcat (tmp_str, "c");
+ comma = 1;
+ }
+ if (flags & 4)
+ {
+ if (comma) strcat (tmp_str, ",");
+ strcat (tmp_str, "z");
+ comma = 1;
+ }
+ if (flags & 2)
+ {
+ if (comma) strcat (tmp_str, ",");
+ strcat (tmp_str, "s");
+ comma = 1;
+ }
+ if (flags & 1)
+ {
+ if (comma) strcat (tmp_str, ",");
+ strcat (tmp_str, "p");
+ }
+}
static void
unparse_instr (instr_data_s *instr_data, int is_segmented)
@@ -529,12 +570,12 @@ unparse_instr (instr_data_s *instr_data, int is_segmented)
strcat (out_str, tmp_str);
break;
case CLASS_IMM:
- if (datum_value == ARG_IMM2) /* True with EI/DI instructions only. */
- {
- sprintf (tmp_str, "%s", intr_names[instr_data->interrupts]);
- strcat (out_str, tmp_str);
- break;
- }
+ if (datum_value == ARG_IMM2) /* True with EI/DI instructions only. */
+ {
+ print_intr (tmp_str, instr_data->interrupts);
+ strcat (out_str, tmp_str);
+ break;
+ }
sprintf (tmp_str, "#0x%0lx", instr_data->immediate);
strcat (out_str, tmp_str);
break;
@@ -563,7 +604,7 @@ unparse_instr (instr_data_s *instr_data, int is_segmented)
strcat (out_str, tmp_str);
break;
case CLASS_FLAGS:
- sprintf (tmp_str, "0x%0lx", instr_data->flags);
+ print_flags(tmp_str, instr_data->flags);
strcat (out_str, tmp_str);
break;
case CLASS_REG_BYTE:
diff --git a/readline/ChangeLog.gdb b/readline/ChangeLog.gdb
index affba35f7c1..830822aeeee 100644
--- a/readline/ChangeLog.gdb
+++ b/readline/ChangeLog.gdb
@@ -1,3 +1,29 @@
+2003-12-28 Eli Zaretskii <eliz@elta.co.il>
+
+ * readline.c (rl_save_state, rl_restore_state): Support systems
+ that don't define SIGWINCH.
+
+2003-12-25 Eli Zaretskii <eliz@elta.co.il>
+
+ * terminal.c (_rl_get_screen_size) [__DJGPP__]: Compute the
+ screen width and height using console I/O.
+ (_rl_init_terminal_io) [__MSDOS__]: Zero out all the _rl_term_*
+ variables. Convert to _rl_* naming scheme.
+ (_rl_set_cursor) [__MSDOS__]: Ifdef away this function.
+
+2003-12-23 Eli Zaretskii <eliz@elta.co.il>
+
+ * display.c (_rl_move_vert) [__MSDOS__]: Don't use undeclared
+ variable `l'. Use `delta' instead recomputing its value anew.
+ Assign -delta to i instead of the other way around.
+
+2003-12-11 Michael Chastain <mec.gnu@mindspring.com>
+
+ * rlmbutil.h: Require HAVE_MBSTATE_T for HANDLE_MULTIBYTE.
+ Revert requirement of HAVE_MBRTOWC. Delete macro definitions
+ that attempted to fake mbstate_t if HAVE_MBSRTOCWS is defined
+ and HAVE_MBSTATE_T is not defined.
+
2003-06-14 H.J. Lu <hongjiu.lu@intel.com>
* support/config.guess: Update to 2003-06-12 version.
@@ -50,7 +76,8 @@
2002-12-06 Elena Zannoni <ezannoni@redhat.com>
- Import of readline 4.3:
+ Import of readline 4.3. NB: This import includes those gdb
+ local changes that aren't in the official readline sources.
* compat.c, mbutil.c, misc.c, rlmbutil.h, rltypedefs.h,
text.c, doc/history.0, doc/history.3, support/wcwidth.c,
diff --git a/readline/display.c b/readline/display.c
index e151cf2862b..e7b75912c9e 100644
--- a/readline/display.c
+++ b/readline/display.c
@@ -1642,10 +1642,10 @@ _rl_move_vert (to)
#ifdef __MSDOS__
int row, col;
- l = fflush (rl_outstream); /* make sure the cursor pos is current! */
+ fflush (rl_outstream); /* make sure the cursor pos is current! */
ScreenGetCursor (&row, &col);
- ScreenSetCursor ((row + to - _rl_last_v_pos), col);
- delta = i;
+ ScreenSetCursor (row + delta, col);
+ i = -delta; /* in case someone wants to use it after the loop */
#else /* !__MSDOS__ */
if (_rl_term_up && *_rl_term_up)
for (i = 0; i < -delta; i++)
diff --git a/readline/readline.c b/readline/readline.c
index 28801f19dfc..efa0bf84c27 100644
--- a/readline/readline.c
+++ b/readline/readline.c
@@ -933,7 +933,9 @@ rl_save_state (sp)
sp->macro = rl_executing_macro;
sp->catchsigs = rl_catch_signals;
+#if defined (SIGWINCH)
sp->catchsigwinch = rl_catch_sigwinch;
+#endif
return (0);
}
@@ -967,7 +969,9 @@ rl_restore_state (sp)
rl_executing_macro = sp->macro;
rl_catch_signals = sp->catchsigs;
+#if defined (SIGWINCH)
rl_catch_sigwinch = sp->catchsigwinch;
+#endif
return (0);
}
diff --git a/readline/rlmbutil.h b/readline/rlmbutil.h
index 9b8464a07f5..dab954fad90 100644
--- a/readline/rlmbutil.h
+++ b/readline/rlmbutil.h
@@ -1,6 +1,6 @@
/* rlmbutil.h -- utility functions for multibyte characters. */
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2003 Free Software Foundation, Inc.
This file is part of the GNU Readline Library, a library for
reading lines of text with interactive input and history editing.
@@ -30,27 +30,27 @@
/************************************************/
/* For platforms which support the ISO C amendement 1 functionality we
- support user defined character classes. */
+ support user defined character classes.
+
+ Some platforms have the multibyte functions such as mbsrtowcs but
+ are lacking the multitype type mbstate_t. BeOS (unknown version)
+ and HP/UX 11.23 without _XOPEN_SOURCE=500 are like this.
+
+ We really need mbstate_t type to operate properly. For example, see
+ compute_lcd_of_matches, where two mbstate_t's are active at the same
+ time. So we require both the functions and the mbstate_t type in
+ order to enable multibyte support. */
+
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H)
# include <wchar.h>
# include <wctype.h>
-# if defined (HAVE_MBRTOWC) && defined (HAVE_MBSRTOWCS)
+# if defined (HAVE_MBSTATE_T) && defined (HAVE_MBSRTOWCS)
/* system is supposed to support XPG5 */
# define HANDLE_MULTIBYTE 1
# endif
#endif
-/* Some systems, like BeOS, have multibyte encodings but lack mbstate_t. */
-#if HANDLE_MULTIBYTE && !defined (HAVE_MBSTATE_T)
-# define wcsrtombs(dest, src, len, ps) (wcsrtombs) (dest, src, len, 0)
-# define mbsrtowcs(dest, src, len, ps) (mbsrtowcs) (dest, src, len, 0)
-# define wcrtomb(s, wc, ps) (wcrtomb) (s, wc, 0)
-# define mbrtowc(pwc, s, n, ps) (mbrtowc) (pwc, s, n, 0)
-# define mbrlen(s, n, ps) (mbrlen) (s, n, 0)
-# define mbstate_t int
-#endif
-
/* Make sure MB_LEN_MAX is at least 16 on systems that claim to be able to
handle multibyte chars (some systems define MB_LEN_MAX as 1) */
#ifdef HANDLE_MULTIBYTE
diff --git a/readline/terminal.c b/readline/terminal.c
index ea3270e9683..06bc8e94d6b 100644
--- a/readline/terminal.c
+++ b/readline/terminal.c
@@ -220,7 +220,10 @@ _rl_get_screen_size (tty, ignore_env)
if (ignore_env == 0 && (ss = sh_get_env_value ("COLUMNS")))
_rl_screenwidth = atoi (ss);
-#if !defined (__DJGPP__)
+#if defined (__DJGPP__)
+ if (_rl_screenwidth <= 0)
+ _rl_screenwidth = ScreenCols ();
+#else
if (_rl_screenwidth <= 0 && term_string_buffer)
_rl_screenwidth = tgetnum ("co");
#endif
@@ -233,7 +236,10 @@ _rl_get_screen_size (tty, ignore_env)
if (ignore_env == 0 && (ss = sh_get_env_value ("LINES")))
_rl_screenheight = atoi (ss);
-#if !defined (__DJGPP__)
+#if defined (__DJGPP__)
+ if (_rl_screenheight <= 0)
+ _rl_screenheight = ScreenRows ();
+#else
if (_rl_screenheight <= 0 && term_string_buffer)
_rl_screenheight = tgetnum ("li");
#endif
@@ -382,12 +388,19 @@ _rl_init_terminal_io (terminal_name)
term = "dumb";
#ifdef __MSDOS__
- term_im = term_ei = term_ic = term_IC = (char *)NULL;
- term_up = term_dc = term_DC = visible_bell = (char *)NULL;
- term_ku = term_kd = term_kl = term_kr = (char *)NULL;
- term_mm = term_mo = (char *)NULL;
- terminal_can_insert = term_has_meta = _rl_term_autowrap = 0;
- term_cr = "\r";
+ _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL;
+ _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL;
+ _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL;
+ _rl_term_mm = _rl_term_mo = (char *)NULL;
+ _rl_terminal_can_insert = term_has_meta = _rl_term_autowrap = 0;
+ _rl_term_cr = "\r";
+ _rl_term_clreol = _rl_term_clrpag = _rl_term_backspace = (char *)NULL;
+ _rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL;
+ _rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL;
+ _rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL;
+#if defined(HACK_TERMCAP_MOTION)
+ _rl_term_forward_char = (char *)NULL;
+#endif
_rl_get_screen_size (tty, 0);
#else /* !__MSDOS__ */
@@ -677,6 +690,7 @@ void
_rl_set_cursor (im, force)
int im, force;
{
+#ifndef __MSDOS__
if (_rl_term_ve && _rl_term_vs)
{
if (force || im != rl_insert_mode)
@@ -687,4 +701,5 @@ _rl_set_cursor (im, force)
tputs (_rl_term_ve, 1, _rl_output_character_function);
}
}
+#endif
}
diff --git a/sim/ChangeLog b/sim/ChangeLog
index 97fecf2e10d..dec01dabdfe 100644
--- a/sim/ChangeLog
+++ b/sim/ChangeLog
@@ -1,3 +1,8 @@
+2004-01-26 Chris Demetriou <cgd@broadcom.com>
+
+ * configure.in (mips*-*-*): Configure in testsuite.
+ * configure: Regenerate.
+
2003-10-08 Dave Brolley <brolley@redhat.com>
* configure.in: Move frv handling to alphabetically correct placement.
diff --git a/sim/arm/ChangeLog b/sim/arm/ChangeLog
index a3cd7f2248a..6447e219679 100644
--- a/sim/arm/ChangeLog
+++ b/sim/arm/ChangeLog
@@ -1,3 +1,14 @@
+2003-12-29 Mark Mitchell <mark@codesourcery.com>
+
+ * armos.c (fcntl.h): Do not include it.
+ (O_RDONLY): Do not define.
+ (O_WRONLY): Likewise.
+ (O_RDWR): Likewise.
+ (targ-vals.h): Include it.
+ (translate_open_mode): Use TARGET_O_* instead of O_*.
+ (SWIopen): Likewise.
+ * Makefile.in (armos.o): Depend on targ-vals.h.
+
2003-04-13 Nick Clifton <nickc@redhat.com>
* armvirt.c (GetWord): Only call XScale_check_memacc if in XScale
diff --git a/sim/arm/Makefile.in b/sim/arm/Makefile.in
index 7def0f967bb..1214a4a335c 100644
--- a/sim/arm/Makefile.in
+++ b/sim/arm/Makefile.in
@@ -28,7 +28,7 @@ SIM_OBJS = armemu26.o armemu32.o arminit.o armos.o armsupp.o \
## COMMON_POST_CONFIG_FRAG
-armos.o: armos.c armdefs.h armos.h armfpe.h
+armos.o: armos.c armdefs.h armos.h armfpe.h targ-vals.h
armcopro.o: armcopro.c armdefs.h
maverick.o: maverick.c armdefs.h
diff --git a/sim/arm/armos.c b/sim/arm/armos.c
index 613d07eda17..5c26b2b0b9a 100644
--- a/sim/arm/armos.c
+++ b/sim/arm/armos.c
@@ -28,19 +28,10 @@
#include <time.h>
#include <errno.h>
#include <string.h>
-#include <fcntl.h>
+#include "targ-vals.h"
-#ifndef O_RDONLY
-#define O_RDONLY 0
-#endif
-#ifndef O_WRONLY
-#define O_WRONLY 1
-#endif
-#ifndef O_RDWR
-#define O_RDWR 2
-#endif
-#ifndef O_BINARY
-#define O_BINARY 0
+#ifndef TARGET_O_BINARY
+#define TARGET_O_BINARY 0
#endif
#ifdef __STDC__
@@ -260,18 +251,18 @@ ARMword ARMul_OSLastErrorP (ARMul_State * state)
static int translate_open_mode[] =
{
- O_RDONLY, /* "r" */
- O_RDONLY + O_BINARY, /* "rb" */
- O_RDWR, /* "r+" */
- O_RDWR + O_BINARY, /* "r+b" */
- O_WRONLY + O_CREAT + O_TRUNC, /* "w" */
- O_WRONLY + O_BINARY + O_CREAT + O_TRUNC, /* "wb" */
- O_RDWR + O_CREAT + O_TRUNC, /* "w+" */
- O_RDWR + O_BINARY + O_CREAT + O_TRUNC, /* "w+b" */
- O_WRONLY + O_APPEND + O_CREAT, /* "a" */
- O_WRONLY + O_BINARY + O_APPEND + O_CREAT, /* "ab" */
- O_RDWR + O_APPEND + O_CREAT, /* "a+" */
- O_RDWR + O_BINARY + O_APPEND + O_CREAT /* "a+b" */
+ TARGET_O_RDONLY, /* "r" */
+ TARGET_O_RDONLY + TARGET_O_BINARY, /* "rb" */
+ TARGET_O_RDWR, /* "r+" */
+ TARGET_O_RDWR + TARGET_O_BINARY, /* "r+b" */
+ TARGET_O_WRONLY + TARGET_O_CREAT + TARGET_O_TRUNC, /* "w" */
+ TARGET_O_WRONLY + TARGET_O_BINARY + TARGET_O_CREAT + TARGET_O_TRUNC, /* "wb" */
+ TARGET_O_RDWR + TARGET_O_CREAT + TARGET_O_TRUNC, /* "w+" */
+ TARGET_O_RDWR + TARGET_O_BINARY + TARGET_O_CREAT + TARGET_O_TRUNC, /* "w+b" */
+ TARGET_O_WRONLY + TARGET_O_APPEND + TARGET_O_CREAT, /* "a" */
+ TARGET_O_WRONLY + TARGET_O_BINARY + TARGET_O_APPEND + TARGET_O_CREAT, /* "ab" */
+ TARGET_O_RDWR + TARGET_O_APPEND + TARGET_O_CREAT, /* "a+" */
+ TARGET_O_RDWR + TARGET_O_BINARY + TARGET_O_APPEND + TARGET_O_CREAT /* "a+b" */
};
static void
@@ -325,7 +316,7 @@ SWIopen (ARMul_State * state, ARMword name, ARMword SWIflags)
/* Filename ":tt" is special: it denotes stdin/out. */
if (strcmp (dummy, ":tt") == 0)
{
- if (flags == O_RDONLY) /* opening tty "r" */
+ if (flags == TARGET_O_RDONLY) /* opening tty "r" */
state->Reg[0] = 0; /* stdin */
else
state->Reg[0] = 1; /* stdout */
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index f95071fdf5a..d287cdfe245 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,11 @@
+2004-01-16 Ben Elliston <bje@wasabisystems.com>
+
+ * Makefile.in (clean): Remove rm -f $(ALL), as $(ALL) is empty.
+
+2003-12-19 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+
+ * sim-core.c (sim_core_trans_addr): Added for m32r-linux-run.
+
2003-11-22 Kazu Hirata <kazu@cs.umass.edu>
* sim-options.c (standard_options): Fix the names of H8
diff --git a/sim/common/Makefile.in b/sim/common/Makefile.in
index d021566ea7c..915598c9c43 100644
--- a/sim/common/Makefile.in
+++ b/sim/common/Makefile.in
@@ -105,7 +105,6 @@ TAGS: force
clean:
rm -f *.[oa] *~ core
- rm -f $(ALL)
distclean mostlyclean maintainer-clean realclean: clean
rm -f TAGS
diff --git a/sim/common/sim-core.c b/sim/common/sim-core.c
index 586c25e4fa7..65c28d733b1 100644
--- a/sim/common/sim-core.c
+++ b/sim/common/sim-core.c
@@ -801,6 +801,25 @@ sim_core_xor_write_buffer (SIM_DESC sd,
}
#endif
+#if EXTERN_SIM_CORE_P
+void *
+sim_core_trans_addr (SIM_DESC sd,
+ sim_cpu *cpu,
+ unsigned map,
+ address_word addr)
+{
+ sim_core_common *core = (cpu == NULL ? &STATE_CORE (sd)->common : &CPU_CORE (cpu)->common);
+ sim_core_mapping *mapping =
+ sim_core_find_mapping (core, map,
+ addr, /*nr-bytes*/1,
+ write_transfer,
+ 0 /*dont-abort*/, NULL, NULL_CIA);
+ if (mapping == NULL)
+ return NULL;
+ return sim_core_translate(mapping, addr);
+}
+#endif
+
/* define the read/write 1/2/4/8/16/word functions */
diff --git a/sim/configure b/sim/configure
index b342d3917fa..d09adab68fc 100755
--- a/sim/configure
+++ b/sim/configure
@@ -1426,11 +1426,11 @@ case "${target}" in
# OBSOLETE extra_subdirs="${extra_subdirs} igen"
# OBSOLETE ;;
# OBSOLETE fr30-*-*) sim_target=fr30 ;;
- h8300*-*-*)
- sim_target=h8300
+ frv-*-*) sim_target=frv
extra_subdirs="${extra_subdirs} testsuite"
;;
- frv-*-*) sim_target=frv
+ h8300*-*-*)
+ sim_target=h8300
extra_subdirs="${extra_subdirs} testsuite"
;;
h8500-*-*) sim_target=h8500 ;;
@@ -1442,7 +1442,7 @@ case "${target}" in
# The MIPS simulator can only be compiled by gcc.
sim_target=mips
only_if_gcc=yes
- extra_subdirs="${extra_subdirs} igen"
+ extra_subdirs="${extra_subdirs} igen testsuite"
;;
mn10300*-*-*)
# The mn10300 simulator can only be compiled by gcc.
diff --git a/sim/configure.in b/sim/configure.in
index d9924700412..c66a41384ee 100644
--- a/sim/configure.in
+++ b/sim/configure.in
@@ -81,7 +81,7 @@ case "${target}" in
# The MIPS simulator can only be compiled by gcc.
sim_target=mips
only_if_gcc=yes
- extra_subdirs="${extra_subdirs} igen"
+ extra_subdirs="${extra_subdirs} igen testsuite"
;;
mn10300*-*-*)
# The mn10300 simulator can only be compiled by gcc.
diff --git a/sim/h8300/ChangeLog b/sim/h8300/ChangeLog
index 7aa1a75af30..9938196d7b6 100644
--- a/sim/h8300/ChangeLog
+++ b/sim/h8300/ChangeLog
@@ -1,3 +1,12 @@
+2004-01-05 Michael Snyder <msnyder@redhat.com>
+
+ * compile.c (sim_load): Don't pass a type to bfd_openr.
+
+2003-12-16 Michael Snyder <msnyder@redhat.com>
+
+ Patch submitted by Anil Paranjape <AnilP1@KPITCummins.com>
+ * sim-main.h (H8300H_MSIZE): Increase from 18 bits to 24 bits.
+
2003-12-11 Dhananjay Deshpande <dhananjayd@kpitcummins.com>
* compile.c (set_h8300h): Initialize globals to zero.
diff --git a/sim/h8300/compile.c b/sim/h8300/compile.c
index 462240ce145..ec5f974c7b3 100644
--- a/sim/h8300/compile.c
+++ b/sim/h8300/compile.c
@@ -5052,7 +5052,7 @@ sim_load (SIM_DESC sd, char *prog, bfd *abfd, int from_tty)
if (abfd != NULL)
prog_bfd = abfd;
else
- prog_bfd = bfd_openr (prog, "coff-h8300");
+ prog_bfd = bfd_openr (prog, NULL);
if (prog_bfd != NULL)
{
/* Set the cpu type. We ignore failure from bfd_check_format
diff --git a/sim/h8300/sim-main.h b/sim/h8300/sim-main.h
index 284a5586d16..65cc9995dc9 100644
--- a/sim/h8300/sim-main.h
+++ b/sim/h8300/sim-main.h
@@ -27,7 +27,7 @@
/* avolkov:
Next 2 macros are ugly for any workstation, but while they're work.
Memory size MUST be configurable. */
-#define H8300H_MSIZE (1 << 18)
+#define H8300H_MSIZE (1 << 24)
#define H8300S_MSIZE (1 << 24)
#define CSIZE 1024
diff --git a/sim/m32r/ChangeLog b/sim/m32r/ChangeLog
index 409645242eb..92cbd04b90d 100644
--- a/sim/m32r/ChangeLog
+++ b/sim/m32r/ChangeLog
@@ -1,3 +1,15 @@
+2003-12-19 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
+
+ * configure.in: Changed for dummy simulator of m32r-linux.
+ * configure: Regenerate.
+ * Makefile.in: Added traps-linux.o for dummy simulator of m32r-linux.
+ * traps-linux.c: Added for dummy simulator of m32r-linux.
+ * syscall.h: Ditto.
+ * sim-if.c (sim_create_inferior): Changed to setup SP for dummy
+ simulator for m32r-linux.
+ * sim-main.h (M32R_DEFAULT_MEM_SIZE): Changed for dummy simulator of
+ m32r-linux.
+
2003-12-11 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
* Makefile.in: Add support for new machine m32r2.
diff --git a/sim/m32r/Makefile.in b/sim/m32r/Makefile.in
index ee3f7e890cb..eb29ab188b9 100644
--- a/sim/m32r/Makefile.in
+++ b/sim/m32r/Makefile.in
@@ -23,6 +23,7 @@
M32R_OBJS = m32r.o cpu.o decode.o sem.o model.o mloop.o
M32RX_OBJS = m32rx.o cpux.o decodex.o modelx.o mloopx.o
M32R2_OBJS = m32r2.o cpu2.o decode2.o model2.o mloop2.o
+TRAPS_OBJ = @traps_obj@
CONFIG_DEVICES = dv-sockser.o
CONFIG_DEVICES =
@@ -40,7 +41,8 @@ SIM_OBJS = \
$(M32R_OBJS) \
$(M32RX_OBJS) \
$(M32R2_OBJS) \
- traps.o devices.o \
+ $(TRAPS_OBJ) \
+ devices.o \
$(CONFIG_DEVICES)
# Extra headers included by sim-main.h.
@@ -48,7 +50,7 @@ SIM_EXTRA_DEPS = \
$(CGEN_INCLUDE_DEPS) \
arch.h cpuall.h m32r-sim.h $(srcdir)/../../opcodes/m32r-desc.h
-SIM_EXTRA_CFLAGS =
+SIM_EXTRA_CFLAGS = @sim_extra_cflags@
SIM_RUN_OBJS = nrun.o
SIM_EXTRA_CLEAN = m32r-clean
@@ -65,6 +67,7 @@ sim-if.o: sim-if.c $(SIM_MAIN_DEPS) $(srcdir)/../common/sim-core.h
arch.o: arch.c $(SIM_MAIN_DEPS)
traps.o: traps.c targ-vals.h $(SIM_MAIN_DEPS)
+traps-linux.o: traps.c syscall.h targ-vals.h $(SIM_MAIN_DEPS)
devices.o: devices.c $(SIM_MAIN_DEPS)
# M32R objs
diff --git a/sim/m32r/configure b/sim/m32r/configure
index 4a55bc182a8..6e8b0cd12e0 100755
--- a/sim/m32r/configure
+++ b/sim/m32r/configure
@@ -3848,6 +3848,20 @@ fi
+ case "${target_alias}" in
+ m32r*-linux*)
+ traps_obj=traps-linux.o
+ sim_extra_cflags="-DM32R_LINUX"
+ ;;
+ *)
+ traps_obj=traps.o
+ sim_extra_cflags="-DM32R_ELF"
+ ;;
+ esac
+
+
+
+
trap '' 1 2 15
@@ -4061,6 +4075,8 @@ s%@EXEEXT@%$EXEEXT%g
s%@CGEN_MAINT@%$CGEN_MAINT%g
s%@cgendir@%$cgendir%g
s%@cgen@%$cgen%g
+s%@traps_obj@%$traps_obj%g
+s%@sim_extra_cflags@%$sim_extra_cflags%g
CEOF
EOF
diff --git a/sim/m32r/configure.in b/sim/m32r/configure.in
index f598f29f09b..12857b9a19b 100644
--- a/sim/m32r/configure.in
+++ b/sim/m32r/configure.in
@@ -14,4 +14,18 @@ SIM_AC_OPTION_ENVIRONMENT
SIM_AC_OPTION_INLINE()
SIM_AC_OPTION_CGEN_MAINT
+ case "${target_alias}" in
+ m32r*-linux*)
+ traps_obj=traps-linux.o
+ sim_extra_cflags="-DM32R_LINUX"
+ ;;
+ *)
+ traps_obj=traps.o
+ sim_extra_cflags="-DM32R_ELF"
+ ;;
+ esac
+AC_SUBST(traps_obj)
+AC_SUBST(sim_extra_cflags)
+
+
SIM_AC_OUTPUT
diff --git a/sim/m32r/sim-if.c b/sim/m32r/sim-if.c
index 749c79e9998..f8bbece7b8e 100644
--- a/sim/m32r/sim-if.c
+++ b/sim/m32r/sim-if.c
@@ -214,6 +214,13 @@ sim_create_inferior (sd, abfd, argv, envp)
addr = 0;
sim_pc_set (current_cpu, addr);
+#ifdef M32R_LINUX
+ m32rbf_h_cr_set (current_cpu,
+ m32r_decode_gdb_ctrl_regnum(SPI_REGNUM), 0x1f00000);
+ m32rbf_h_cr_set (current_cpu,
+ m32r_decode_gdb_ctrl_regnum(SPU_REGNUM), 0x1f00000);
+#endif
+
#if 0
STATE_ARGV (sd) = sim_copy_argv (argv);
STATE_ENVP (sd) = sim_copy_argv (envp);
diff --git a/sim/m32r/sim-main.h b/sim/m32r/sim-main.h
index becfb62841a..2cbb40b99b4 100644
--- a/sim/m32r/sim-main.h
+++ b/sim/m32r/sim-main.h
@@ -85,6 +85,10 @@ m32r_core_signal ((SD), (CPU), (CIA), (MAP), (NR_BYTES), (ADDR), \
(TRANSFER), (ERROR))
/* Default memory size. */
+#ifdef M32R_LINUX
+#define M32R_DEFAULT_MEM_SIZE 0x2000000 /* 32M */
+#else
#define M32R_DEFAULT_MEM_SIZE 0x800000 /* 8M */
+#endif
#endif /* SIM_MAIN_H */
diff --git a/sim/mips/ChangeLog b/sim/mips/ChangeLog
index e5b5216f0d1..fab4c6e2969 100644
--- a/sim/mips/ChangeLog
+++ b/sim/mips/ChangeLog
@@ -1,3 +1,11 @@
+2004-01-19 Chris Demetriou <cgd@broadcom.com>
+
+ * mips.igen (check_mf_cycles, check_mt_hilo, check_mf_hilo)
+ (check_mult_hilo): Improve comments.
+ (check_div_hilo): Likewise. Also, fork off a new version
+ to handle mips32/mips64 (since there are no hazards to check
+ in MIPS32/MIPS64).
+
2003-06-17 Richard Sandiford <rsandifo@redhat.com>
* mips.igen (do_dmultx): Fix check for negative operands.
diff --git a/sim/mips/mips.igen b/sim/mips/mips.igen
index 358c8ab1750..cfc2d6da739 100644
--- a/sim/mips/mips.igen
+++ b/sim/mips/mips.igen
@@ -218,18 +218,39 @@
}
-// Helper:
+// Helpers:
//
// Check that an access to a HI/LO register meets timing requirements
//
-// The following requirements exist:
+// In all MIPS ISAs,
//
-// - A MT {HI,LO} update was not immediatly preceeded by a MF {HI,LO} read
-// - A OP {HI,LO} update was not immediatly preceeded by a MF {HI,LO} read
-// - A MF {HI,LO} read was not corrupted by a preceeding MT{LO,HI} update
-// corruption occures when MT{LO,HI} is preceeded by a OP {HI,LO}.
+// OP {HI and LO} followed by MT{LO or HI} (and not MT{HI or LO})
+// makes subsequent MF{HI or LO} UNPREDICTABLE. (1)
+//
+// The following restrictions exist for MIPS I - MIPS III:
+//
+// MF{HI or LO} followed by MT{HI or LO} w/ less than 2 instructions
+// in between makes MF UNPREDICTABLE. (2)
+//
+// MF{HI or LO} followed by OP {HI and LO} w/ less than 2 instructions
+// in between makes MF UNPREDICTABLE. (3)
+//
+// On the r3900, restriction (2) is not present, and restriction (3) is not
+// present for multiplication.
+//
+// For now this code is paranoid. Historically the simulator
+// enforced restrictions (2) and (3) for more ISAs and CPU types than
+// necessary. Unfortunately, at least some MIPS IV and later parts'
+// documentation describes them as having these hazards (e.g. vr5000),
+// so they can't be removed for at leats MIPS IV. MIPS V hasn't been
+// checked (since there are no known hardware implementations).
+//
+
+// check_mf_cycles:
+//
+// Helper used by check_mt_hilo, check_mult_hilo, and check_div_hilo
+// to check for restrictions (2) and (3) above.
//
-
:function:::int:check_mf_cycles:hilo_history *history, signed64 time, const char *new
{
if (history->mf.timestamp + 3 > time)
@@ -243,6 +264,12 @@
return 1;
}
+
+// check_mt_hilo:
+//
+// Check for restriction (2) above (for ISAs/processors that have it),
+// and record timestamps for restriction (1) above.
+//
:function:::int:check_mt_hilo:hilo_history *history
*mipsI:
*mipsII:
@@ -271,6 +298,11 @@
}
+// check_mf_hilo:
+//
+// Check for restriction (1) above, and record timestamps for
+// restriction (2) and (3) above.
+//
:function:::int:check_mf_hilo:hilo_history *history, hilo_history *peer
*mipsI:
*mipsII:
@@ -309,6 +341,11 @@
+// check_mult_hilo:
+//
+// Check for restriction (3) above (for ISAs/processors that have it)
+// for MULT ops, and record timestamps for restriction (1) above.
+//
:function:::int:check_mult_hilo:hilo_history *hi, hilo_history *lo
*mipsI:
*mipsII:
@@ -328,8 +365,6 @@
return ok;
}
-// The r3900 mult and multu insns _can_ be exectuted immediatly after
-// a mf{hi,lo}
:function:::int:check_mult_hilo:hilo_history *hi, hilo_history *lo
*mips32:
*mips64:
@@ -345,14 +380,17 @@
}
+// check_div_hilo:
+//
+// Check for restriction (3) above (for ISAs/processors that have it)
+// for DIV ops, and record timestamps for restriction (1) above.
+//
:function:::int:check_div_hilo:hilo_history *hi, hilo_history *lo
*mipsI:
*mipsII:
*mipsIII:
*mipsIV:
*mipsV:
-*mips32:
-*mips64:
*vr4100:
*vr5000:
*r3900:
@@ -367,6 +405,18 @@
return ok;
}
+:function:::int:check_div_hilo:hilo_history *hi, hilo_history *lo
+*mips32:
+*mips64:
+{
+ signed64 time = sim_events_time (SD);
+ hi->op.timestamp = time;
+ lo->op.timestamp = time;
+ hi->op.cia = CIA;
+ lo->op.cia = CIA;
+ return 1;
+}
+
// Helper:
//
diff --git a/sim/sh/ChangeLog b/sim/sh/ChangeLog
index faa6ebc4f9a..9659f953aa1 100644
--- a/sim/sh/ChangeLog
+++ b/sim/sh/ChangeLog
@@ -1,3 +1,37 @@
+2004-01-07 Michael Snyder <msnyder@redhat.com>
+
+ * gencode.c: Whitespace cleanup.
+ * interp.c: Ditto.
+
+ * gencode.c: Replace 'Hitachi' with 'Renesas'.
+ (op tab): Add new instructions for sh4a, DBR, SBR.
+ (expand_opcode): Add handling for new movxy combinations.
+ (gensym_caselist): Ditto.
+ (expand_ppi_movxy): Remove movx/movy expansions,
+ now handled in expand_opcode.
+ (gensym): Add some helpful macros.
+ (expand_ppi_code): Flatten loop for simplicity, tweak for 12-bit
+ instead of 8-bit table (some insns are ambiguous to 8 bits).
+ (ppi_gensim, main): Generate 12-bit instead of 8-bit ppi table.
+
+ * interp.c: Replace 'Hitachi' with 'Renesas'.
+ (union saved_state_type): Add dbr, sgr, ldst.
+ (get_loop_bounds_ext): New function.
+ (init_dsp): Add bfd_mach_sh4al_dsp.
+ (sim_resume): Handle extended loop bounds.
+
+2003-12-18 Michael Snyder <msnyder@redhat.com>
+
+ * gencode.c (expand_opcode): Simplify and reorganize.
+ Eliminate "shift" parameter. Eliminate "4 bits at a time"
+ assumption. Flatten switch statement to a single level.
+ Add "eeee" token for even-numbered registers.
+ (bton): Delete.
+ (fsca): Use "eeee" token.
+ (ppi_moves): Rename to "expand_ppi_movxy". Do the ddt
+ [movx/movy] expansion here, as well as the ppi expansion.
+ (gensim_caselist): Accept 'eeee' along with 'nnnn'.
+
2003-11-03 J"orn Rennecke <joern.rennecke@superh.com>
* interp.c (fsca_s, fsrra_s): New functions.
diff --git a/sim/sh/gencode.c b/sim/sh/gencode.c
index 07d62a98c5a..52e611f3698 100644
--- a/sim/sh/gencode.c
+++ b/sim/sh/gencode.c
@@ -1,4 +1,5 @@
-/* Simulator/Opcode generator for the Hitachi Super-H architecture.
+/* Simulator/Opcode generator for the Renesas
+ (formerly Hitachi) / SuperH Inc. Super-H architecture.
Written by Steve Chamberlain of Cygnus Support.
sac@cygnus.com
@@ -48,7 +49,7 @@ op tab[] =
{
{ "n", "", "add #<imm>,<REG_N>", "0111nnnni8*1....",
- "R[n] += SEXT(i);",
+ "R[n] += SEXT (i);",
"if (i == 0) {",
" UNDEF(n); /* see #ifdef PARANOID */",
" break;",
@@ -84,7 +85,7 @@ op tab[] =
{ "", "", "bf <bdisp8>", "10001011i8p1....",
"if (!T) {",
- " SET_NIP (PC + 4 + (SEXT(i) * 2));",
+ " SET_NIP (PC + 4 + (SEXT (i) * 2));",
" cycles += 2;",
"}",
},
@@ -151,6 +152,11 @@ op tab[] =
"SET_SR_T (0);",
},
+ /* sh4a */
+ { "", "", "clrdmxy", "0000000010001000",
+ "saved_state.asregs.cregs.named.sr &= ~(SR_MASK_DMX | SR_MASK_DMY);"
+ },
+
{ "", "0", "cmp/eq #<imm>,R0", "10001000i8*1....",
"SET_SR_T (R0 == SEXT (i));",
},
@@ -195,7 +201,7 @@ op tab[] =
"SET_SR_T (0);",
},
- { "", "nm", "div1 <REG_M>,<REG_N>", "0011nnnnmmmm0100", /* ? MVS */
+ { "", "nm", "div1 <REG_M>,<REG_N>", "0011nnnnmmmm0100",
"div1 (R, m, n/*, T*/);",
},
@@ -229,7 +235,7 @@ op tab[] =
/* sh2e */
{ "", "", "fabs <FREG_N>", "1111nnnn01011101",
"FP_UNARY (n, fabs);",
- "/* FIXME: FR(n) &= 0x7fffffff; */",
+ "/* FIXME: FR (n) &= 0x7fffffff; */",
},
/* sh2e */
@@ -257,7 +263,7 @@ op tab[] =
" int i;",
" float f;",
" } u;",
- " u.f = DR(n);",
+ " u.f = DR (n);",
" FPUL = u.i;",
"}",
},
@@ -274,7 +280,7 @@ op tab[] =
" float f;",
" } u;",
" u.i = FPUL;",
- " SET_DR(n, u.f);",
+ " SET_DR (n, u.f);",
"}",
},
@@ -285,21 +291,30 @@ op tab[] =
},
/* sh4 */
- { "", "", "fipr <FV_M>,<FV_N>", "1111nnmm11101101",
- "/* FIXME: not implemented */",
- "RAISE_EXCEPTION (SIGILL);",
- "/* FIXME: check for DP and (n & 1) == 0? */",
+ { "", "", "fipr <FV_M>,<FV_N>", "1111vvVV11101101",
+ "if (FPSCR_PR)",
+ " RAISE_EXCEPTION (SIGILL);",
+ "else",
+ "{",
+ " double fsum = 0;",
+ " /* FIXME: check for nans and infinities. */",
+ " fsum += FR (v1+0) * FR (v2+0);",
+ " fsum += FR (v1+1) * FR (v2+1);",
+ " fsum += FR (v1+2) * FR (v2+2);",
+ " fsum += FR (v1+3) * FR (v2+3);",
+ " SET_FR (v1+3, fsum);",
+ "}",
},
/* sh2e */
{ "", "", "fldi0 <FREG_N>", "1111nnnn10001101",
- "SET_FR (n, (float)0.0);",
+ "SET_FR (n, (float) 0.0);",
"/* FIXME: check for DP and (n & 1) == 0? */",
},
/* sh2e */
{ "", "", "fldi1 <FREG_N>", "1111nnnn10011101",
- "SET_FR (n, (float)1.0);",
+ "SET_FR (n, (float) 1.0);",
"/* FIXME: check for DP and (n & 1) == 0? */",
},
@@ -310,7 +325,7 @@ op tab[] =
" int i;",
" float f;",
" } u;",
- " u.f = FR(n);",
+ " u.f = FR (n);",
" FPUL = u.i;",
},
@@ -318,16 +333,16 @@ op tab[] =
{ "", "", "float FPUL,<FREG_N>", "1111nnnn00101101",
/* sh4 */
"if (FPSCR_PR)",
- " SET_DR (n, (double)FPUL);",
+ " SET_DR (n, (double) FPUL);",
"else",
"{",
- " SET_FR (n, (float)FPUL);",
+ " SET_FR (n, (float) FPUL);",
"}",
},
/* sh2e */
{ "", "", "fmac <FREG_0>,<FREG_M>,<FREG_N>", "1111nnnnmmmm1110",
- "SET_FR (n, FR(m) * FR(0) + FR(n));",
+ "SET_FR (n, FR (m) * FR (0) + FR (n));",
"/* FIXME: check for DP and (n & 1) == 0? */",
},
@@ -355,7 +370,7 @@ op tab[] =
"else",
"{",
" MA (1);",
- " WLAT (R[n], FI(m));",
+ " WLAT (R[n], FI (m));",
"}",
},
/* sh2e */
@@ -368,7 +383,7 @@ op tab[] =
"else",
"{",
" MA (1);",
- " SET_FI(n, RLAT(R[m]));",
+ " SET_FI (n, RLAT (R[m]));",
"}",
},
/* sh2e */
@@ -398,7 +413,7 @@ op tab[] =
"{",
" MA (1);",
" R[n] -= 4;",
- " WLAT (R[n], FI(m));",
+ " WLAT (R[n], FI (m));",
"}",
},
/* sh2e */
@@ -411,7 +426,7 @@ op tab[] =
"else",
"{",
" MA (1);",
- " SET_FI(n, RLAT(R[0] + R[m]));",
+ " SET_FI (n, RLAT (R[0] + R[m]));",
"}",
},
/* sh2e */
@@ -424,7 +439,7 @@ op tab[] =
"else",
"{",
" MA (1);",
- " WLAT((R[0]+R[n]), FI(m));",
+ " WLAT ((R[0]+R[n]), FI (m));",
"}",
},
@@ -432,12 +447,17 @@ op tab[] =
/* sh2e */
{ "", "", "fmul <FREG_M>,<FREG_N>", "1111nnnnmmmm0010",
- "FP_OP(n, *, m);",
+ "FP_OP (n, *, m);",
},
/* sh2e */
{ "", "", "fneg <FREG_N>", "1111nnnn01001101",
- "FP_UNARY(n, -);",
+ "FP_UNARY (n, -);",
+ },
+
+ /* sh4a */
+ { "", "", "fpchg", "1111011111111101",
+ "SET_FPSCR (GET_FPSCR () ^ FPSCR_MASK_PR);",
},
/* sh4 */
@@ -445,11 +465,11 @@ op tab[] =
"if (FPSCR_PR)",
" RAISE_EXCEPTION (SIGILL);",
"else",
- " SET_FPSCR (GET_FPSCR() ^ FPSCR_MASK_FR);",
+ " SET_FPSCR (GET_FPSCR () ^ FPSCR_MASK_FR);",
},
/* sh4 */
- { "", "", "fsca", "1111nnn011111101",
+ { "", "", "fsca", "1111eeee11111101",
"if (FPSCR_PR)",
" RAISE_EXCEPTION (SIGILL);",
"else",
@@ -461,12 +481,12 @@ op tab[] =
/* sh4 */
{ "", "", "fschg", "1111001111111101",
- "SET_FPSCR (GET_FPSCR() ^ FPSCR_MASK_SZ);",
+ "SET_FPSCR (GET_FPSCR () ^ FPSCR_MASK_SZ);",
},
/* sh3e */
{ "", "", "fsqrt <FREG_N>", "1111nnnn01101101",
- "FP_UNARY(n, sqrt);",
+ "FP_UNARY (n, sqrt);",
},
/* sh4 */
@@ -479,23 +499,34 @@ op tab[] =
/* sh2e */
{ "", "", "fsub <FREG_M>,<FREG_N>", "1111nnnnmmmm0001",
- "FP_OP(n, -, m);",
+ "FP_OP (n, -, m);",
},
/* sh2e */
{ "", "", "ftrc <FREG_N>, FPUL", "1111nnnn00111101",
/* sh4 */
"if (FPSCR_PR) {",
- " if (DR(n) != DR(n)) /* NaN */",
+ " if (DR (n) != DR (n)) /* NaN */",
" FPUL = 0x80000000;",
" else",
- " FPUL = (int)DR(n);",
+ " FPUL = (int) DR (n);",
"}",
"else",
- "if (FR(n) != FR(n)) /* NaN */",
+ "if (FR (n) != FR (n)) /* NaN */",
" FPUL = 0x80000000;",
"else",
- " FPUL = (int)FR(n);",
+ " FPUL = (int) FR (n);",
+ },
+
+ /* sh4 */
+ { "", "", "ftrv <FV_N>", "1111vv0111111101",
+ "if (FPSCR_PR)",
+ " RAISE_EXCEPTION (SIGILL);",
+ "else",
+ "{",
+ " /* FIXME not implemented. */",
+ " printf (\"ftrv xmtrx, FV%d\\n\", v1);",
+ "}",
},
/* sh2e */
@@ -535,12 +566,18 @@ op tab[] =
{ "", "n", "ldc <REG_N>,MOD", "0100nnnn01011110",
"SET_MOD (R[n]);",
},
-#if 0
{ "", "n", "ldc <REG_N>,DBR", "0100nnnn11111010",
- "DBR = R[n];",
- "/* FIXME: user mode */",
+ "if (SR_MD)",
+ " DBR = R[n]; /* priv mode */",
+ "else",
+ " RAISE_EXCEPTION (SIGILL); /* user mode */",
+ },
+ { "", "n", "ldc <REG_N>,SGR", "0100nnnn00111010",
+ "if (SR_MD)",
+ " SGR = R[n]; /* priv mode */",
+ "else",
+ " RAISE_EXCEPTION (SIGILL); /* user mode */",
},
-#endif
{ "n", "n", "ldc.l @<REG_N>+,<CREG_M>", "0100nnnnmmmm0111",
"MA (1);",
"CREG (m) = RLAT (R[n]);",
@@ -558,14 +595,26 @@ op tab[] =
"SET_MOD (RLAT (R[n]));",
"R[n] += 4;",
},
-#if 0
{ "n", "n", "ldc.l @<REG_N>+,DBR", "0100nnnn11110110",
- "MA (1);",
- "DBR = RLAT (R[n]);",
- "R[n] += 4;",
- "/* FIXME: user mode */",
+ "if (SR_MD)",
+ "{ /* priv mode */",
+ " MA (1);",
+ " DBR = RLAT (R[n]);",
+ " R[n] += 4;",
+ "}",
+ "else",
+ " RAISE_EXCEPTION (SIGILL); /* user mode */",
+ },
+ { "n", "n", "ldc.l @<REG_N>+,SGR", "0100nnnn00110110",
+ "if (SR_MD)",
+ "{ /* priv mode */",
+ " MA (1);",
+ " SGR = RLAT (R[n]);",
+ " R[n] += 4;",
+ "}",
+ "else",
+ " RAISE_EXCEPTION (SIGILL); /* user mode */",
},
-#endif
/* sh-dsp */
{ "", "", "ldre @(<disp>,PC)", "10001110i8p1....",
@@ -575,22 +624,36 @@ op tab[] =
"RS = SEXT (i) * 2 + 4 + PH2T (PC);",
},
+ /* sh4a */
+ { "", "n", "ldrc <REG_N>", "0100nnnn00110100",
+ "SET_RC (R[n]);",
+ "loop = get_loop_bounds_ext (RS, RE, memory, mem_end, maskw, endianw);",
+ "CHECK_INSN_PTR (insn_ptr);",
+ "RE |= 1;",
+ },
+ { "", "", "ldrc #<imm>", "10001010i8*1....",
+ "SET_RC (i);",
+ "loop = get_loop_bounds_ext (RS, RE, memory, mem_end, maskw, endianw);",
+ "CHECK_INSN_PTR (insn_ptr);",
+ "RE |= 1;",
+ },
+
{ "", "n", "lds <REG_N>,<SREG_M>", "0100nnnnssss1010",
"SREG (m) = R[n];",
},
{ "n", "n", "lds.l @<REG_N>+,<SREG_M>", "0100nnnnssss0110",
"MA (1);",
- "SREG (m) = RLAT(R[n]);",
+ "SREG (m) = RLAT (R[n]);",
"R[n] += 4;",
},
/* sh2e / sh-dsp (lds <REG_N>,DSR) */
{ "", "n", "lds <REG_N>,FPSCR", "0100nnnn01101010",
- "SET_FPSCR(R[n]);",
+ "SET_FPSCR (R[n]);",
},
/* sh2e / sh-dsp (lds.l @<REG_N>+,DSR) */
{ "n", "n", "lds.l @<REG_N>+,FPSCR", "0100nnnn01100110",
"MA (1);",
- "SET_FPSCR (RLAT(R[n]));",
+ "SET_FPSCR (RLAT (R[n]));",
"R[n] += 4;",
},
@@ -599,15 +662,15 @@ op tab[] =
},
{ "nm", "nm", "mac.l @<REG_M>+,@<REG_N>+", "0000nnnnmmmm1111",
- "macl(&R0,memory,n,m);",
+ "macl (&R0,memory,n,m);",
},
{ "nm", "nm", "mac.w @<REG_M>+,@<REG_N>+", "0100nnnnmmmm1111",
- "macw(&R0,memory,n,m,endianw);",
+ "macw (&R0,memory,n,m,endianw);",
},
{ "n", "", "mov #<imm>,<REG_N>", "1110nnnni8*1....",
- "R[n] = SEXT(i);",
+ "R[n] = SEXT (i);",
},
{ "n", "m", "mov <REG_M>,<REG_N>", "0110nnnnmmmm0011",
"R[n] = R[m];",
@@ -777,14 +840,49 @@ op tab[] =
"WLAT (R[n], R[0]);",
},
+ { "n", "0", "movco.l R0, @<REG_N>", "0000nnnn01110011",
+ "/* LDST -> T */",
+ "SET_SR_T (LDST);",
+ "/* if (T) R0 -> (Rn) */",
+ "if (T)",
+ " WLAT (R[n], R[0]);",
+ "/* 0 -> LDST */",
+ "SET_LDST (0);",
+ },
+
+ { "0", "n", "movli.l @<REG_N>, R0", "0000nnnn01100011",
+ "/* 1 -> LDST */",
+ "SET_LDST (1);",
+ "/* (Rn) -> R0 */",
+ "R[0] = RLAT (R[n]);",
+ "/* if (interrupt/exception) 0 -> LDST */",
+ "/* (we don't simulate asynchronous interrupts/exceptions) */",
+ },
+
{ "n", "", "movt <REG_N>", "0000nnnn00101001",
"R[n] = T;",
},
+ { "0", "n", "movua.l @<REG_N>,R0", "0100nnnn10101001",
+ "int regn = R[n];",
+ "MA (1);",
+ "R[0] = (RBAT (regn) << 24) + (RBAT (regn + 1) << 16) + ",
+ " (RBAT (regn + 2) << 8) + RBAT (regn + 3);",
+ "L (n);",
+ },
+ { "0n", "n", "movua.l @<REG_N>+,R0", "0100nnnn11101001",
+ "int regn = R[n];",
+ "MA (1);",
+ "R[0] = (RBAT (regn) << 24) + (RBAT (regn + 1) << 16) + ",
+ " (RBAT (regn + 2) << 8) + RBAT (regn + 3);",
+ "R[n] += 4;",
+ "L (n);",
+ },
{ "", "mn", "mul.l <REG_M>,<REG_N>", "0000nnnnmmmm0111",
- "MACL = ((int)R[n]) * ((int)R[m]);",
+ "MACL = ((int) R[n]) * ((int) R[m]);",
},
-#if 0
+#if 0 /* FIXME: The above cast to int is not really portable.
+ It should be replaced by a SEXT32 macro. */
{ "", "nm", "mul.l <REG_M>,<REG_N>", "0000nnnnmmmm0111",
"MACL = R[n] * R[m];",
},
@@ -792,13 +890,13 @@ op tab[] =
/* muls.w - see muls */
{ "", "mn", "muls <REG_M>,<REG_N>", "0010nnnnmmmm1111",
- "MACL = ((int)(short)R[n]) * ((int)(short)R[m]);",
+ "MACL = ((int) (short) R[n]) * ((int) (short) R[m]);",
},
/* mulu.w - see mulu */
{ "", "mn", "mulu <REG_M>,<REG_N>", "0010nnnnmmmm1110",
- "MACL = (((unsigned int)(unsigned short)R[n])",
- " * ((unsigned int)(unsigned short)R[m]));",
+ "MACL = (((unsigned int) (unsigned short) R[n])",
+ " * ((unsigned int) (unsigned short) R[m]));",
},
{ "n", "m", "neg <REG_M>,<REG_N>", "0110nnnnmmmm1011",
@@ -820,6 +918,12 @@ op tab[] =
"R[n] = ~R[m];",
},
+ /* sh4a */
+ { "", "n", "icbi @<REG_N>", "0000nnnn11100011",
+ "/* Except for the effect on the cache - which is not simulated -",
+ " this is like a nop. */",
+ },
+
{ "", "n", "ocbi @<REG_N>", "0000nnnn10010011",
"RSBAT (R[n]); /* Take exceptions like byte load, otherwise noop. */",
"/* FIXME: Cache not implemented */",
@@ -851,6 +955,18 @@ op tab[] =
" this is like a nop. */",
},
+ /* sh4a */
+ { "", "n", "prefi @<REG_N>", "0000nnnn11010011",
+ "/* Except for the effect on the cache - which is not simulated -",
+ " this is like a nop. */",
+ },
+
+ /* sh4a */
+ { "", "", "synco", "0000000010101011",
+ "/* Except for the effect on the pipeline - which is not simulated -",
+ " this is like a nop. */",
+ },
+
{ "n", "n", "rotcl <REG_N>", "0100nnnn00100100",
"ult = R[n] < 0;",
"R[n] = (R[n] << 1) | T;",
@@ -898,6 +1014,18 @@ op tab[] =
"Delay_Slot (PC + 2);",
},
+ /* sh4a */
+ { "", "", "setdmx", "0000000010011000",
+ "saved_state.asregs.cregs.named.sr |= SR_MASK_DMX;"
+ "saved_state.asregs.cregs.named.sr &= ~SR_MASK_DMY;"
+ },
+
+ /* sh4a */
+ { "", "", "setdmy", "0000000011001000",
+ "saved_state.asregs.cregs.named.sr |= SR_MASK_DMY;"
+ "saved_state.asregs.cregs.named.sr &= ~SR_MASK_DMX;"
+ },
+
/* sh-dsp */
{ "", "n", "setrc <REG_N>", "0100nnnn00010100",
"SET_RC (R[n]);",
@@ -980,31 +1108,43 @@ op tab[] =
"R[n] = CREG (m);",
},
-#if 0
{ "n", "", "stc SGR,<REG_N>", "0000nnnn00111010",
- "R[n] = SGR;",
+ "if (SR_MD)",
+ " R[n] = SGR; /* priv mode */",
+ "else",
+ " RAISE_EXCEPTION (SIGILL); /* user mode */",
},
{ "n", "", "stc DBR,<REG_N>", "0000nnnn11111010",
- "R[n] = DBR;",
+ "if (SR_MD)",
+ " R[n] = DBR; /* priv mode */",
+ "else",
+ " RAISE_EXCEPTION (SIGILL); /* user mode */",
},
-#endif
{ "n", "n", "stc.l <CREG_M>,@-<REG_N>", "0100nnnnmmmm0011",
"MA (1);",
"R[n] -= 4;",
"WLAT (R[n], CREG (m));",
},
-#if 0
{ "n", "n", "stc.l SGR,@-<REG_N>", "0100nnnn00110010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], SGR);",
+ "if (SR_MD)",
+ "{ /* priv mode */",
+ " MA (1);",
+ " R[n] -= 4;",
+ " WLAT (R[n], SGR);",
+ "}",
+ "else",
+ " RAISE_EXCEPTION (SIGILL); /* user mode */",
},
{ "n", "n", "stc.l DBR,@-<REG_N>", "0100nnnn11110010",
- "MA (1);",
- "R[n] -= 4;",
- "WLAT (R[n], DBR);",
+ "if (SR_MD)",
+ "{ /* priv mode */",
+ " MA (1);",
+ " R[n] -= 4;",
+ " WLAT (R[n], DBR);",
+ "}",
+ "else",
+ " RAISE_EXCEPTION (SIGILL); /* user mode */",
},
-#endif
{ "n", "", "sts <SREG_M>,<REG_N>", "0000nnnnssss1010",
"R[n] = SREG (m);",
@@ -1044,9 +1184,9 @@ op tab[] =
{ "", "n", "tas.b @<REG_N>", "0100nnnn00011011",
"MA (1);",
- "ult = RBAT(R[n]);",
+ "ult = RBAT (R[n]);",
"SET_SR_T (ult == 0);",
- "WBAT(R[n],ult|0x80);",
+ "WBAT (R[n],ult|0x80);",
},
{ "0", "", "trapa #<imm>", "11000011i8*1....",
@@ -1056,15 +1196,15 @@ op tab[] =
#if 0
"else {",
/* SH-[12] */
- " R[15]-=4;",
- " WLAT (R[15], GET_SR());",
- " R[15]-=4;",
+ " R[15] -= 4;",
+ " WLAT (R[15], GET_SR ());",
+ " R[15] -= 4;",
" WLAT (R[15], PH2T (PC + 2));",
#else
"else if (!SR_BL) {",
- " SSR = GET_SR();",
+ " SSR = GET_SR ();",
" SPC = PH2T (PC + 2);",
- " SET_SR (GET_SR() | SR_MASK_MD | SR_MASK_BL | SR_MASK_RB);",
+ " SET_SR (GET_SR () | SR_MASK_MD | SR_MASK_BL | SR_MASK_RB);",
" /* FIXME: EXPEVT = 0x00000160; */",
#endif
" SET_NIP (PT2H (RLAT (VBR + (imm<<2))));",
@@ -1102,10 +1242,10 @@ op tab[] =
#if 0
{ "divs.l <REG_M>,<REG_N>", "0100nnnnmmmm1110",
- "divl(0,R[n],R[m]);",
+ "divl (0,R[n],R[m]);",
},
{ "divu.l <REG_M>,<REG_N>", "0100nnnnmmmm1101",
- "divl(0,R[n],R[m]);",
+ "divl (0,R[n],R[m]);",
},
#endif
@@ -1258,56 +1398,118 @@ op movsxy_tab[] =
"WLAT (R[n], SEXT (DSP_R (m)));",
"R[n] += R[8];",
},
- { "", "n", "movx.w @<REG_x>,<DSP_XX>", "111100xxXX000100",
+ { "", "n", "movx.w @<REG_xy>,<DSP_XY>", "111100xyXY0001??",
"DSP_R (m) = RSWAT (R[n]) << 16;",
- "iword &= 0xfd53; goto top;",
+ "if (iword & 3)",
+ " {",
+ " iword &= 0xfd53; goto top;",
+ " }",
+ },
+ { "", "n", "movx.l @<REG_xy>,<DSP_XY>", "111100xyXY010100",
+ "DSP_R (m) = RLAT (R[n]);",
},
- { "n", "n", "movx.w @<REG_x>+,<DSP_XX>", "111100xxXX001000",
+ { "n", "n", "movx.w @<REG_xy>+,<DSP_XY>", "111100xyXY0010??",
"DSP_R (m) = RSWAT (R[n]) << 16;",
"R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 2;",
- "iword &= 0xfd53; goto top;",
+ "if (iword & 3)",
+ " {",
+ " iword &= 0xfd53; goto top;",
+ " }",
+ },
+ { "n", "n", "movx.l @<REG_xy>+,<DSP_XY>", "111100xyXY011000",
+ "DSP_R (m) = RLAT (R[n]);",
+ "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 4;",
},
- { "n", "n8","movx.w @<REG_x>+REG_8,<DSP_XX>", "111100xxXX001100",
+ { "n", "n8","movx.w @<REG_xy>+REG_8,<DSP_XY>", "111100xyXY0011??",
"DSP_R (m) = RSWAT (R[n]) << 16;",
"R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];",
- "iword &= 0xfd53; goto top;",
+ "if (iword & 3)",
+ " {",
+ " iword &= 0xfd53; goto top;",
+ " }",
},
- { "", "n", "movx.w <DSP_Aa>,@<REG_x>", "111100xxaa100100",
+ { "n", "n8","movx.l @<REG_xy>+REG_8,<DSP_XY>", "111100xyXY011100",
+ "DSP_R (m) = RLAT (R[n]);",
+ "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];",
+ },
+ { "", "n", "movx.w <DSP_Ax>,@<REG_xy>", "111100xyax1001??",
"WWAT (R[n], DSP_R (m) >> 16);",
- "iword &= 0xfd53; goto top;",
+ "if (iword & 3)",
+ " {",
+ " iword &= 0xfd53; goto top;",
+ " }",
+ },
+ { "", "n", "movx.l <DSP_Ax>,@<REG_xy>", "111100xyax110100",
+ "WLAT (R[n], DSP_R (m));",
},
- { "n", "n", "movx.w <DSP_Aa>,@<REG_x>+", "111100xxaa101000",
+ { "n", "n", "movx.w <DSP_Ax>,@<REG_xy>+", "111100xyax1010??",
"WWAT (R[n], DSP_R (m) >> 16);",
"R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 2;",
- "iword &= 0xfd53; goto top;",
+ "if (iword & 3)",
+ " {",
+ " iword &= 0xfd53; goto top;",
+ " }",
},
- { "n", "n8","movx.w <DSP_Aa>,@<REG_x>+REG_8","111100xxaa101100",
+ { "n", "n", "movx.l <DSP_Ax>,@<REG_xy>+", "111100xyax111000",
+ "WLAT (R[n], DSP_R (m));",
+ "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : 4;",
+ },
+ { "n", "n8","movx.w <DSP_Ax>,@<REG_xy>+REG_8","111100xyax1011??",
"WWAT (R[n], DSP_R (m) >> 16);",
"R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];",
- "iword &= 0xfd53; goto top;",
+ "if (iword & 3)",
+ " {",
+ " iword &= 0xfd53; goto top;",
+ " }",
},
- { "", "n", "movy.w @<REG_y>,<DSP_YY>", "111100yyYY000001",
+ { "n", "n8","movx.l <DSP_Ax>,@<REG_xy>+REG_8","111100xyax111100",
+ "WLAT (R[n], DSP_R (m));",
+ "R[n] += ((R[n] & 0xffff) == MOD_ME) ? MOD_DELTA : R[8];",
+ },
+ { "", "n", "movy.w @<REG_yx>,<DSP_YX>", "111100yxYX000001",
"DSP_R (m) = RSWAT (R[n]) << 16;",
},
- { "n", "n", "movy.w @<REG_y>+,<DSP_YY>", "111100yyYY000010",
+ { "n", "n", "movy.w @<REG_yx>+,<DSP_YX>", "111100yxYX000010",
"DSP_R (m) = RSWAT (R[n]) << 16;",
"R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 2;",
},
- { "n", "n9","movy.w @<REG_y>+REG_9,<DSP_YY>", "111100yyYY000011",
+ { "n", "n9","movy.w @<REG_yx>+REG_9,<DSP_YX>", "111100yxYX000011",
"DSP_R (m) = RSWAT (R[n]) << 16;",
"R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];",
},
- { "", "n", "movy.w <DSP_Aa>,@<REG_y>", "111100yyAA010001",
+ { "", "n", "movy.w <DSP_Ay>,@<REG_yx>", "111100yxAY010001",
"WWAT (R[n], DSP_R (m) >> 16);",
},
- { "n", "n", "movy.w <DSP_Aa>,@<REG_y>+", "111100yyAA010010",
+ { "n", "n", "movy.w <DSP_Ay>,@<REG_yx>+", "111100yxAY010010",
"WWAT (R[n], DSP_R (m) >> 16);",
"R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 2;",
},
- { "n", "n9", "movy.w <DSP_Aa>,@<REG_y>+REG_9", "111100yyAA010011",
+ { "n", "n9", "movy.w <DSP_Ay>,@<REG_yx>+REG_9", "111100yxAY010011",
"WWAT (R[n], DSP_R (m) >> 16);",
"R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];",
},
+ { "", "n", "movy.l @<REG_yx>,<DSP_YX>", "111100yxYX100001",
+ "DSP_R (m) = RLAT (R[n]);",
+ },
+ { "n", "n", "movy.l @<REG_yx>+,<DSP_YX>", "111100yxYX100010",
+ "DSP_R (m) = RLAT (R[n]);",
+ "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 4;",
+ },
+ { "n", "n9","movy.l @<REG_yx>+REG_9,<DSP_YX>", "111100yxYX100011",
+ "DSP_R (m) = RLAT (R[n]);",
+ "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];",
+ },
+ { "", "n", "movy.l <DSP_Ay>,@<REG_yx>", "111100yxAY110001",
+ "WLAT (R[n], DSP_R (m));",
+ },
+ { "n", "n", "movy.l <DSP_Ay>,@<REG_yx>+", "111100yxAY110010",
+ "WLAT (R[n], DSP_R (m));",
+ "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : 4;",
+ },
+ { "n", "n9", "movy.l <DSP_Ay>,@<REG_yx>+REG_9", "111100yxAY110011",
+ "WLAT (R[n], DSP_R (m));",
+ "R[n] += ((R[n] | ~0xffff) == MOD_ME) ? MOD_DELTA : R[9];",
+ },
{ "", "", "nopx nopy", "1111000000000000",
"/* nop */",
},
@@ -1462,7 +1664,7 @@ op ppi_tab[] =
"DSR |= carry;\n",
"goto assign_z;\n",
},
- { "","", "pcmp Sx,Sy", "10000100xxyy....",
+ { "","", "pcmp Sx,Sy", "10000100xxyyzzzz",
"int Sx = DSP_R (x);",
"int Sx_grd = GET_DSP_GRD (x);",
"int Sy = DSP_R (y);",
@@ -1479,6 +1681,24 @@ op ppi_tab[] =
},
{ "","", "pwad Sx,Sy,Dz", "10110100xxyyzzzz",
},
+ { "","", "(if cc) pabs Sx,Dz", "100010ccxx01zzzz",
+ "/* FIXME: duplicate code pabs. */",
+ "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;",
+ },
{ "","", "pabs Sx,Dz", "10001000xx..zzzz",
"res = DSP_R (x);",
"res_grd = GET_DSP_GRD (x);",
@@ -1496,6 +1716,18 @@ op ppi_tab[] =
"overflow = res_grd != SIGN32 (res) ? DSR_MASK_V : 0;",
"ADD_SUB_GE;",
},
+
+ { "","", "(if cc) prnd Sx,Dz", "100110ccxx01zzzz",
+ "/* FIXME: duplicate code prnd. */",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "",
+ "res = (Sx + 0x8000) & 0xffff0000;",
+ "carry = (unsigned) res < (unsigned) Sx;",
+ "res_grd = Sx_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
{ "","", "prnd Sx,Dz", "10011000xx..zzzz",
"int Sx = DSP_R (x);",
"int Sx_grd = GET_DSP_GRD (x);",
@@ -1506,6 +1738,31 @@ op ppi_tab[] =
"COMPUTE_OVERFLOW;",
"ADD_SUB_GE;",
},
+
+ { "","", "(if cc) pabs Sy,Dz", "101010cc01yyzzzz",
+ "/* FIXME: duplicate code pabs. */",
+ "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;",
+ " }",
+ " }",
+ " }",
+ },
{ "","", "pabs Sy,Dz", "10101000..yyzzzz",
"res = DSP_R (y);",
"res_grd = 0;",
@@ -1529,6 +1786,17 @@ op ppi_tab[] =
" }",
" }",
},
+ { "","", "(if cc) prnd Sy,Dz", "101110cc01yyzzzz",
+ "/* FIXME: duplicate code prnd. */",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = (Sy + 0x8000) & 0xffff0000;",
+ "carry = (unsigned) res < (unsigned) Sy;",
+ "res_grd = Sy_grd + carry;",
+ "COMPUTE_OVERFLOW;",
+ "ADD_SUB_GE;",
+ },
{ "","", "prnd Sy,Dz", "10111000..yyzzzz",
"int Sy = DSP_R (y);",
"int Sy_grd = SIGN32 (Sy);",
@@ -1609,6 +1877,18 @@ op ppi_tab[] =
"COMPUTE_OVERFLOW;",
"ADD_SUB_GE;",
},
+ { "","", "(if cc) psub Sy,Sx,Dz", "100001ccxxyyzzzz",
+ "int Sx = DSP_R (x);",
+ "int Sx_grd = GET_DSP_GRD (x);",
+ "int Sy = DSP_R (y);",
+ "int Sy_grd = SIGN32 (Sy);",
+ "",
+ "res = Sy - Sx;",
+ "carry = (unsigned) res > (unsigned) Sy;",
+ "res_grd = Sy_grd - Sx_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);",
@@ -1698,6 +1978,21 @@ op ppi_tab[] =
"overflow = 0;",
"greater_equal = 1;",
},
+ { "","", "pclr Du pmuls Se,Sf,Dg", "0100eeff0001gguu",
+ "/* Do multiply. */",
+ "res = (DSP_R (e) >> 16) * (DSP_R (f) >> 16) * 2;",
+ "if (res == 0x80000000)",
+ " res = 0x7fffffff;",
+ "DSP_R (g) = res;",
+ "DSP_GRD (g) = SIGN32 (res);",
+ "/* FIXME: update DSR based on results of multiply! */",
+ "",
+ "/* Do clr. */",
+ "z = u;",
+ "res = 0;",
+ "res_grd = 0;",
+ "goto assign_z;",
+ },
{ "","", "(if cc) pdmsb Sx,Dz", "100111ccxx..zzzz",
"unsigned Sx = DSP_R (x);",
"int Sx_grd = GET_DSP_GRD (x);",
@@ -1813,6 +2108,27 @@ op ppi_tab[] =
" MACL = DSP_R (z) = res;",
"return;",
},
+ /* sh4a */
+ { "","", "(if cc) pswap Sx,Dz", "100111ccxx01zzzz",
+ "int Sx = DSP_R (x);",
+ "",
+ "res = ((Sx & 0xffff) * 65536) + ((Sx >> 16) & 0xffff);",
+ "res_grd = GET_DSP_GRD (x);",
+ "carry = 0;",
+ "overflow = 0;",
+ "greater_equal = res & 0x80000000 ? 0 : DSR_MASK_G;",
+ },
+ /* sh4a */
+ { "","", "(if cc) pswap Sy,Dz", "101111cc01yyzzzz",
+ "int Sy = DSP_R (y);",
+ "",
+ "res = ((Sy & 0xffff) * 65536) + ((Sy >> 16) & 0xffff);",
+ "res_grd = SIGN32 (Sy);",
+ "carry = 0;",
+ "overflow = 0;",
+ "greater_equal = res & 0x80000000 ? 0 : DSR_MASK_G;",
+ },
+
{0, 0}
};
@@ -1950,128 +2266,130 @@ gengastab ()
}
-/* Convert a string of 4 binary digits into an int */
-
-static
-int
-bton (s)
- char *s;
-
-{
- int n = 0;
- int v = 8;
- while (v)
- {
- if (*s == '1')
- n |= v;
- v >>= 1;
- s++;
- }
- return n;
-}
-
static unsigned char table[1 << 16];
-/* Take an opcode expand all varying fields in it out and fill all the
- right entries in 'table' with the opcode index*/
+/* Take an opcode, expand all varying fields in it out and fill all the
+ right entries in 'table' with the opcode index. */
static void
-expand_opcode (shift, val, i, s)
- int shift;
+expand_opcode (val, i, s)
int val;
int i;
char *s;
{
- int j;
-
if (*s == 0)
{
table[val] = i;
}
else
{
+ int j = 0, m = 0;
+
switch (s[0])
{
-
+ default:
+ fprintf (stderr, "expand_opcode: illegal char '%c'\n", s[0]);
+ exit (1);
case '0':
case '1':
- {
- int m, mv;
-
- if (s[1] - '0' > 1U || !s[2] || ! s[3])
- expand_opcode (shift - 1, val + s[0] - '0', i, s + 1);
- 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;
- }
+ /* Consume an arbitrary number of ones and zeros. */
+ do {
+ j = (j << 1) + (s[m++] - '0');
+ } while (s[m] == '0' || s[m] == '1');
+ expand_opcode ((val << m) | j, i, s + m);
+ break;
+ case 'N': /* NN -- four-way fork */
+ for (j = 0; j < 4; j++)
+ expand_opcode ((val << 2) | j, i, s + 2);
+ break;
+ case 'x': /* xx or xy -- two-way or four-way fork */
+ for (j = 0; j < 4; j += (s[1] == 'x' ? 2 : 1))
+ expand_opcode ((val << 2) | j, i, s + 2);
+ break;
+ case 'y': /* yy or yx -- two-way or four-way fork */
+ for (j = 0; j < (s[1] == 'x' ? 4 : 2); j++)
+ expand_opcode ((val << 2) | j, i, s + 2);
+ break;
+ case '?': /* Seven-way "wildcard" fork for movxy */
+ expand_opcode ((val << 2), i, s + 2);
+ for (j = 1; j < 4; j++)
+ {
+ expand_opcode ((val << 2) | j, i, s + 2);
+ expand_opcode ((val << 2) | (j + 16), i, s + 2);
+ }
+ break;
+ case 'i': /* eg. "i8*1" */
+ case '.': /* "...." is a wildcard */
case 'n':
case 'm':
- {
- int digits = 1;
- while (s[digits] == s[0])
- digits++;
- for (j = 0; j < (1 << digits); j++)
- {
- expand_opcode (shift - digits, val | (j << shift), i,
- s + digits);
- }
- break;
- }
+ /* nnnn, mmmm, i#*#, .... -- 16-way fork. */
+ for (j = 0; j < 16; j++)
+ expand_opcode ((val << 4) | j, i, s + 4);
+ break;
+ case 'e':
+ /* eeee -- even numbered register:
+ 8 way fork. */
+ for (j = 0; j < 15; j += 2)
+ expand_opcode ((val << 4) | j, i, s + 4);
+ 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);
+ /* A0, A1, X0, X1, Y0, Y1, M0, M1, A0G, A1G:
+ MMMM -- 10-way fork */
+ expand_opcode ((val << 4) | 5, i, s + 4);
+ for (j = 7; j < 16; j++)
+ expand_opcode ((val << 4) | j, i, s + 4);
break;
case 'G':
- /* A1G, A0G: */
+ /* A1G, A0G:
+ GGGG -- two-way fork */
for (j = 13; j <= 15; j +=2)
- expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ expand_opcode ((val << 4) | j, i, s + 4);
break;
case 's':
+ /* ssss -- 10-way fork */
/* System registers mach, macl, pr: */
for (j = 0; j < 3; j++)
- expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ expand_opcode ((val << 4) | j, 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);
+ expand_opcode ((val << 4) | j, i, s + 4);
break;
case 'X':
+ /* XX/XY -- 2/4 way fork. */
+ for (j = 0; j < 4; j += (s[1] == 'X' ? 2 : 1))
+ expand_opcode ((val << 2) | j, i, s + 2);
+ break;
case 'a':
- val |= bton (s) << shift;
- for (j = 0; j < 16; j += 8)
- expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ /* aa/ax -- 2/4 way fork. */
+ for (j = 0; j < 4; j += (s[1] == 'a' ? 2 : 1))
+ expand_opcode ((val << 2) | j, i, s + 2);
break;
case 'Y':
+ /* YY/YX -- 2/4 way fork. */
+ for (j = 0; j < (s[1] == 'Y' ? 2 : 4); j += 1)
+ expand_opcode ((val << 2) | j, i, s + 2);
+ break;
case 'A':
- val |= bton (s) << shift;
- for (j = 0; j < 8; j += 4)
- expand_opcode (shift - 4, val | (j << shift), i, s + 4);
+ /* AA/AY: 2/4 way fork. */
+ for (j = 0; j < (s[1] == 'A' ? 2 : 4); j += 1)
+ expand_opcode ((val << 2) | j, i, s + 2);
break;
-
- default:
- for (j = 0; j < (1 << (shift + 4)); j++)
+ case 'v':
+ /* vv(VV) -- 4(16) way fork. */
+ /* Vector register fv0/4/8/12. */
+ if (s[2] == 'V')
+ {
+ /* 2 vector registers. */
+ for (j = 0; j < 15; j++)
+ expand_opcode ((val << 4) | j, i, s + 4);
+ }
+ else
{
- table[val | j] = i;
+ /* 1 vector register. */
+ for (j = 0; j < 4; j += 1)
+ expand_opcode ((val << 2) | j, i, s + 2);
}
+ break;
}
}
}
@@ -2127,7 +2445,7 @@ filltable (p)
for (; p->name; p++)
{
p->index = index++;
- expand_opcode (12, 0, p->index, p->code);
+ expand_opcode (0, p->index, p->code);
}
}
@@ -2136,7 +2454,7 @@ filltable (p)
processing insns (ppi) for code 0xf800 (ppi nopx nopy). Copy the
latter tag to represent all combinations of ppi with ddt. */
static void
-ppi_moves ()
+expand_ppi_movxy ()
{
int i;
@@ -2171,6 +2489,18 @@ gensim_caselist (p)
*s);
exit (1);
break;
+ case '?':
+ /* Wildcard expansion, nothing to do here. */
+ s += 2;
+ break;
+ case 'v':
+ printf (" int v1 = ((iword >> 10) & 3) * 4;\n");
+ s += 2;
+ break;
+ case 'V':
+ printf (" int v2 = ((iword >> 8) & 3) * 4;\n");
+ s += 2;
+ break;
case '0':
case '1':
s += 2;
@@ -2179,7 +2509,8 @@ gensim_caselist (p)
s += 4;
break;
case 'n':
- printf (" int n = (iword >>8) & 0xf;\n");
+ case 'e':
+ printf (" int n = (iword >> 8) & 0xf;\n");
needn = 1;
s += 4;
break;
@@ -2188,12 +2519,26 @@ gensim_caselist (p)
s += 2;
break;
case 'x':
- printf (" int n = ((iword >> 9) & 1) + 4;\n");
+ if (s[1] == 'y') /* xy */
+ {
+ printf (" int n = (iword & 3) ? \n");
+ printf (" ((iword >> 9) & 1) + 4 : \n");
+ printf (" REG_xy ((iword >> 8) & 3);\n");
+ }
+ else
+ printf (" int n = ((iword >> 9) & 1) + 4;\n");
needn = 1;
s += 2;
break;
case 'y':
- printf (" int n = ((iword >> 8) & 1) + 6;\n");
+ if (s[1] == 'x') /* yx */
+ {
+ printf (" int n = (iword & 0xc) ? \n");
+ printf (" ((iword >> 8) & 1) + 6 : \n");
+ printf (" REG_yx ((iword >> 8) & 3);\n");
+ }
+ else
+ printf (" int n = ((iword >> 8) & 1) + 6;\n");
needn = 1;
s += 2;
break;
@@ -2202,23 +2547,51 @@ gensim_caselist (p)
case 's':
case 'M':
case 'G':
- printf (" int m = (iword >>4) & 0xf;\n");
+ printf (" int m = (iword >> 4) & 0xf;\n");
s += 4;
break;
case 'X':
- printf (" int m = ((iword >> 7) & 1) + 8;\n");
+ if (s[1] == 'Y') /* XY */
+ {
+ printf (" int m = (iword & 3) ? \n");
+ printf (" ((iword >> 7) & 1) + 8 : \n");
+ printf (" DSP_xy ((iword >> 6) & 3);\n");
+ }
+ else
+ printf (" int m = ((iword >> 7) & 1) + 8;\n");
s += 2;
break;
case 'a':
- printf (" int m = 7 - ((iword >> 6) & 2);\n");
+ if (s[1] == 'x') /* ax */
+ {
+ printf (" int m = (iword & 3) ? \n");
+ printf (" 7 - ((iword >> 6) & 2) : \n");
+ printf (" DSP_ax ((iword >> 6) & 3);\n");
+ }
+ else
+ printf (" int m = 7 - ((iword >> 6) & 2);\n");
s += 2;
break;
case 'Y':
- printf (" int m = ((iword >> 6) & 1) + 10;\n");
+ if (s[1] == 'X') /* YX */
+ {
+ printf (" int m = (iword & 0xc) ? \n");
+ printf (" ((iword >> 6) & 1) + 10 : \n");
+ printf (" DSP_yx ((iword >> 6) & 3);\n");
+ }
+ else
+ printf (" int m = ((iword >> 6) & 1) + 10;\n");
s += 2;
break;
case 'A':
- printf (" int m = 7 - ((iword >> 5) & 2);\n");
+ if (s[1] == 'Y') /* AY */
+ {
+ printf (" int m = (iword & 0xc) ? \n");
+ printf (" 7 - ((iword >> 5) & 2) : \n");
+ printf (" DSP_ay ((iword >> 6) & 3);\n");
+ }
+ else
+ printf (" int m = 7 - ((iword >> 5) & 2);\n");
s += 2;
break;
@@ -2246,10 +2619,10 @@ gensim_caselist (p)
case '1':
break;
case '2':
- printf ("<<1");
+ printf (" << 1");
break;
case '4':
- printf ("<<2");
+ printf (" << 2");
break;
}
printf (";\n");
@@ -2258,27 +2631,27 @@ gensim_caselist (p)
}
if (sextbit > 0)
{
- printf (" i = (i ^ (1<<%d))-(1<<%d);\n",
+ printf (" i = (i ^ (1 << %d)) - (1 << %d);\n",
sextbit - 1, sextbit - 1);
}
if (needm && needn)
- printf (" TB(m,n);\n");
+ printf (" TB (m,n);\n");
else if (needm)
- printf (" TL(m);\n");
+ printf (" TL (m);\n");
else if (needn)
- printf (" TL(n);\n");
+ printf (" TL (n);\n");
{
/* Do the refs */
char *r;
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");
+ 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");
}
}
@@ -2297,9 +2670,9 @@ gensim_caselist (p)
char *r;
for (r = p->defs; *r; r++)
{
- if (*r == '0') printf(" CDEF(0);\n");
- if (*r == 'n') printf(" CDEF(n);\n");
- if (*r == 'm') printf(" CDEF(m);\n");
+ if (*r == '0') printf(" CDEF (0);\n");
+ if (*r == 'n') printf(" CDEF (n);\n");
+ if (*r == 'm') printf(" CDEF (m);\n");
}
}
@@ -2312,6 +2685,18 @@ static void
gensim ()
{
printf ("{\n");
+ printf ("/* REG_xy = [r4, r5, r0, r1]. */\n");
+ printf ("#define REG_xy(R) ((R)==0 ? 4 : (R)==2 ? 5 : (R)==1 ? 0 : 1)\n");
+ printf ("/* REG_yx = [r6, r7, r2, r3]. */\n");
+ printf ("#define REG_yx(R) ((R)==0 ? 6 : (R)==1 ? 7 : (R)==2 ? 2 : 3)\n");
+ printf ("/* DSP_ax = [a0, a1, x0, x1]. */\n");
+ printf ("#define DSP_ax(R) ((R)==0 ? 7 : (R)==2 ? 5 : (R)==1 ? 8 : 9)\n");
+ printf ("/* DSP_ay = [a0, a1, y0, y1]. */\n");
+ printf ("#define DSP_ay(R) ((R)==0 ? 7 : (R)==1 ? 5 : (R)==2 ? 10 : 11)\n");
+ printf ("/* DSP_xy = [x0, x1, y0, y1]. */\n");
+ printf ("#define DSP_xy(R) ((R)==0 ? 8 : (R)==2 ? 9 : (R)==1 ? 10 : 11)\n");
+ printf ("/* DSP_yx = [y0, y1, x0, x1]. */\n");
+ printf ("#define DSP_yx(R) ((R)==0 ? 10 : (R)==1 ? 11 : (R)==2 ? 8 : 9)\n");
printf (" switch (jump_table[iword]) {\n");
gensim_caselist (tab);
@@ -2335,22 +2720,27 @@ gendefines ()
char *s = p->name;
printf ("#define OPC_");
while (*s) {
- if (isupper(*s))
- *s = tolower(*s);
- if (isalpha(*s)) printf("%c", *s);
- if (*s == ' ') printf("_");
- if (*s == '@') printf("ind_");
- if (*s == ',') printf("_");
+ if (isupper (*s))
+ *s = tolower (*s);
+ if (isalpha (*s))
+ printf ("%c", *s);
+ if (*s == ' ')
+ printf ("_");
+ if (*s == '@')
+ printf ("ind_");
+ if (*s == ',')
+ printf ("_");
s++;
}
- printf(" %d\n",p->index);
+ printf (" %d\n",p->index);
}
}
static int ppi_index;
/* Take a ppi code, expand all varying fields in it and fill all the
- right entries in 'table' with the opcode index. */
+ right entries in 'table' with the opcode index.
+ NOTE: tail recursion optimization removed for simplicity. */
static void
expand_ppi_code (val, i, s)
@@ -2360,46 +2750,40 @@ expand_ppi_code (val, i, s)
{
int j;
- for (;;)
+ switch (s[0])
{
- switch (s[0])
- {
- default:
- fprintf (stderr, "gencode/expand_ppi_code: Illegal char '%c'\n",
- s[0]);
- exit (2);
- break;
- /* 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;
- }
+ default:
+ fprintf (stderr, "gencode/expand_ppi_code: Illegal char '%c'\n", s[0]);
+ exit (2);
+ break;
+ case 'g':
+ case 'z':
+ /* The last four bits are disregarded for the switch table. */
+ table[val] = i;
+ return;
+ case 'm':
+ /* Four-bit expansion. */
+ for (j = 0; j < 16; j++)
+ expand_ppi_code ((val << 4) + j, i, s + 4);
+ break;
+ case '.':
+ case '0':
+ expand_ppi_code ((val << 1), i, s + 1);
+ break;
+ case '1':
+ expand_ppi_code ((val << 1) + 1, i, s + 1);
+ break;
+ case 'i':
+ case 'e': case 'f':
+ case 'x': case 'y':
+ expand_ppi_code ((val << 1), i, s + 1);
+ expand_ppi_code ((val << 1) + 1, i, s + 1);
+ break;
+ case 'c':
+ expand_ppi_code ((val << 2) + 1, ppi_index++, s + 2);
+ expand_ppi_code ((val << 2) + 2, i, s + 2);
+ expand_ppi_code ((val << 2) + 3, i, s + 2);
+ break;
}
}
@@ -2451,18 +2835,24 @@ ppi_gensim ()
printf ("ppi_insn (iword)\n");
printf (" int iword;\n");
printf ("{\n");
+ printf (" /* 'ee' = [x0, x1, y0, a1] */\n");
printf (" static char e_tab[] = { 8, 9, 10, 5};\n");
+ printf (" /* 'ff' = [y0, y1, x0, a1] */\n");
printf (" static char f_tab[] = {10, 11, 8, 5};\n");
+ printf (" /* 'xx' = [x0, x1, a0, a1] */\n");
printf (" static char x_tab[] = { 8, 9, 7, 5};\n");
+ printf (" /* 'yy' = [y0, y1, m0, m1] */\n");
printf (" static char y_tab[] = {10, 11, 12, 14};\n");
+ printf (" /* 'gg' = [m0, m1, a0, a1] */\n");
printf (" static char g_tab[] = {12, 14, 7, 5};\n");
+ printf (" /* 'uu' = [x0, y0, a0, a1] */\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");
+ printf (" switch (ppi_table[iword >> 4]) {\n");
for (; p->name; p++)
{
@@ -2618,12 +3008,12 @@ main (ac, av)
memset (table, 0, sizeof table);
filltable (movsxy_tab);
- ppi_moves ();
+ expand_ppi_movxy ();
dumptable ("sh_dsp_table", 1 << 12, 0xf000);
memset (table, 0, sizeof table);
ppi_filltable ();
- dumptable ("ppi_table", 1 << 8, 0);
+ dumptable ("ppi_table", 1 << 12, 0);
}
else if (strcmp (av[1], "-x") == 0)
{
diff --git a/sim/sh/interp.c b/sim/sh/interp.c
index 5ca8e61a0a7..981067804cd 100644
--- a/sim/sh/interp.c
+++ b/sim/sh/interp.c
@@ -1,4 +1,4 @@
-/* Simulator for the Hitachi SH architecture.
+/* Simulator for the Renesas (formerly Hitachi) / SuperH Inc. SH architecture.
Written by Steve Chamberlain of Cygnus Support.
sac@cygnus.com
@@ -120,6 +120,9 @@ typedef union
int re;
/* sh3 */
int bank[8];
+ int dbr; /* debug base register */
+ int sgr; /* saved gr15 */
+ int ldst; /* load/store flag (boolean) */
} named;
int i[16];
} cregs;
@@ -167,10 +170,8 @@ static int target_dsp;
static int host_little_endian;
static char **prog_argv;
-#if 1
static int maskw = 0;
static int maskl = 0;
-#endif
static SIM_OPEN_KIND sim_kind;
static char *myname;
@@ -182,15 +183,17 @@ static char *myname;
#define R0 saved_state.asregs.regs[0]
#define Rn saved_state.asregs.regs[n]
#define Rm saved_state.asregs.regs[m]
-#define UR0 (unsigned int)(saved_state.asregs.regs[0])
-#define UR (unsigned int)R
-#define UR (unsigned int)R
+#define UR0 (unsigned int) (saved_state.asregs.regs[0])
+#define UR (unsigned int) R
+#define UR (unsigned int) R
#define SR0 saved_state.asregs.regs[0]
#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 DBR saved_state.asregs.cregs.named.dbr
#define SSR saved_state.asregs.cregs.named.ssr
#define SPC saved_state.asregs.cregs.named.spc
+#define SGR saved_state.asregs.cregs.named.sgr
#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
@@ -228,6 +231,7 @@ static char *myname;
#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 LDST ((saved_state.asregs.cregs.named.ldst) != 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)
@@ -249,6 +253,7 @@ do { \
#define SET_SR_Q(EXP) SET_SR_BIT ((EXP), SR_MASK_Q)
#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 SET_LDST(EXP) (saved_state.asregs.cregs.named.ldst = ((EXP) != 0))
/* stc currently relies on being able to read SR without modifications. */
#define GET_SR() (saved_state.asregs.cregs.named.sr - 0)
@@ -265,9 +270,9 @@ do { \
#define FPSCR_MASK_SZ (1 << 20)
#define FPSCR_MASK_PR (1 << 19)
-#define FPSCR_FR ((GET_FPSCR() & FPSCR_MASK_FR) != 0)
-#define FPSCR_SZ ((GET_FPSCR() & FPSCR_MASK_SZ) != 0)
-#define FPSCR_PR ((GET_FPSCR() & FPSCR_MASK_PR) != 0)
+#define FPSCR_FR ((GET_FPSCR () & FPSCR_MASK_FR) != 0)
+#define FPSCR_SZ ((GET_FPSCR () & FPSCR_MASK_SZ) != 0)
+#define FPSCR_PR ((GET_FPSCR () & FPSCR_MASK_PR) != 0)
/* Count the number of arguments in an argv. */
static int
@@ -325,7 +330,7 @@ void
raise_exception (x)
int x;
{
- RAISE_EXCEPTION(x);
+ RAISE_EXCEPTION (x);
}
void
@@ -400,7 +405,7 @@ do { \
#ifdef PARANOID
int valid[16];
-#define CREF(x) if(!valid[x]) fail();
+#define CREF(x) if (!valid[x]) fail ();
#define CDEF(x) valid[x] = 1;
#define UNDEF(x) valid[x] = 0;
#else
@@ -411,14 +416,14 @@ int valid[16];
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 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));
@@ -517,10 +522,10 @@ set_dr (n, exp)
if (((n) & 1) || ((m) & 1)) \
RAISE_EXCEPTION (SIGILL); \
else \
- SET_DR(n, (DR(n) OP DR(m))); \
+ SET_DR (n, (DR (n) OP DR (m))); \
} \
else \
- SET_FR(n, (FR(n) OP FR(m))); \
+ SET_FR (n, (FR (n) OP FR (m))); \
} while (0)
#define FP_UNARY(n, OP) \
@@ -530,10 +535,10 @@ set_dr (n, exp)
if ((n) & 1) \
RAISE_EXCEPTION (SIGILL); \
else \
- SET_DR(n, (OP (DR(n)))); \
+ SET_DR (n, (OP (DR (n)))); \
} \
else \
- SET_FR(n, (OP (FR(n)))); \
+ SET_FR (n, (OP (FR (n)))); \
} while (0)
#define FP_CMP(n, OP, m) \
@@ -543,10 +548,10 @@ set_dr (n, exp)
if (((n) & 1) || ((m) & 1)) \
RAISE_EXCEPTION (SIGILL); \
else \
- SET_SR_T (DR(n) OP DR(m)); \
+ SET_SR_T (DR (n) OP DR (m)); \
} \
else \
- SET_SR_T (FR(n) OP FR(m)); \
+ SET_SR_T (FR (n) OP FR (m)); \
} while (0)
static void
@@ -575,7 +580,7 @@ wlat_fast (memory, x, value, maskl)
unsigned char *memory;
{
int v = value;
- unsigned int *p = (unsigned int *)(memory + x);
+ unsigned int *p = (unsigned int *) (memory + x);
WRITE_BUSERROR (x, maskl, v, process_wlat_addr);
*p = v;
}
@@ -585,7 +590,7 @@ wwat_fast (memory, x, value, maskw, endianw)
unsigned char *memory;
{
int v = value;
- unsigned short *p = (unsigned short *)(memory + (x ^ endianw));
+ unsigned short *p = (unsigned short *) (memory + (x ^ endianw));
WRITE_BUSERROR (x, maskw, v, process_wwat_addr);
*p = v;
}
@@ -606,7 +611,7 @@ static int INLINE
rlat_fast (memory, x, maskl)
unsigned char *memory;
{
- unsigned int *p = (unsigned int *)(memory + x);
+ unsigned int *p = (unsigned int *) (memory + x);
READ_BUSERROR (x, maskl, process_rlat_addr);
return *p;
@@ -617,7 +622,7 @@ rwat_fast (memory, x, maskw, endianw)
unsigned char *memory;
int x, maskw, endianw;
{
- unsigned short *p = (unsigned short *)(memory + (x ^ endianw));
+ unsigned short *p = (unsigned short *) (memory + (x ^ endianw));
READ_BUSERROR (x, maskw, process_rwat_addr);
return *p;
@@ -627,7 +632,7 @@ static int INLINE
riat_fast (insn_ptr, endianw)
unsigned char *insn_ptr;
{
- unsigned short *p = (unsigned short *)((size_t) insn_ptr ^ endianw);
+ unsigned short *p = (unsigned short *) ((size_t) insn_ptr ^ endianw);
return *p;
}
@@ -650,10 +655,10 @@ rbat_fast (memory, x, maskb)
#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 RSLAT(x) ((long)(RLAT(x)))
-#define RSBAT(x) (SEXT(RBAT(x)))
+#define RUWAT(x) (RWAT (x) & 0xffff)
+#define RSWAT(x) ((short) (RWAT (x)))
+#define RSLAT(x) ((long) (RLAT (x)))
+#define RSBAT(x) (SEXT (RBAT (x)))
#define RDAT(x, n) (do_rdat (memory, (x), (n), (maskl)))
static int
@@ -758,11 +763,11 @@ process_rbat_addr (addr)
#define SEXT(x) (((x & 0xff) ^ (~0x7f))+0x80)
#define SEXT12(x) (((x & 0xfff) ^ 0x800) - 0x800)
-#define SEXTW(y) ((int)((short)y))
+#define SEXTW(y) ((int) ((short) y))
#if 0
-#define SEXT32(x) ((int)((x & 0xffffffff) ^ 0x80000000U) - 0x7fffffff - 1)
+#define SEXT32(x) ((int) ((x & 0xffffffff) ^ 0x80000000U) - 0x7fffffff - 1)
#else
-#define SEXT32(x) ((int)(x))
+#define SEXT32(x) ((int) (x))
#endif
#define SIGN32(x) (SEXT32 (x) >> 31)
@@ -801,7 +806,7 @@ do { \
#define L(x) thislock = x;
#define TL(x) if ((x) == prevlock) stalls++;
-#define TB(x,y) if ((x) == prevlock || (y)==prevlock) stalls++;
+#define TB(x,y) if ((x) == prevlock || (y) == prevlock) stalls++;
#endif
@@ -999,10 +1004,11 @@ trap (i, regs, insn_ptr, memory, maskl, maskw, endianw)
Besides, it's quite dangerous. */
#if 0
case SYS_execve:
- regs[0] = execve (ptr (regs[5]), (char **)ptr (regs[6]), (char **)ptr (regs[7]));
+ 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);
+ regs[0] = execve (ptr (regs[5]), (char **) ptr (regs[6]), 0);
break;
#endif
case SYS_pipe:
@@ -1027,9 +1033,11 @@ trap (i, regs, insn_ptr, memory, maskl, maskw, endianw)
case SYS_write:
strnswap (regs[6], regs[7]);
if (regs[5] == 1)
- regs[0] = (int)callback->write_stdout (callback, ptr(regs[6]), regs[7]);
+ 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]);
+ regs[0] = (int) callback->write (callback, regs[5],
+ ptr (regs[6]), regs[7]);
strnswap (regs[6], regs[7]);
break;
case SYS_lseek:
@@ -1042,7 +1050,7 @@ trap (i, regs, insn_ptr, memory, maskl, maskw, endianw)
{
int len = strswaplen (regs[5]);
strnswap (regs[5], len);
- regs[0] = callback->open (callback,ptr (regs[5]), regs[6]);
+ regs[0] = callback->open (callback, ptr (regs[5]), regs[6]);
strnswap (regs[5], len);
break;
}
@@ -1333,11 +1341,11 @@ macw (regs, memory, n, m, endianw)
long tempm, tempn;
long prod, macl, sum;
- tempm=RSWAT(regs[m]); regs[m]+=2;
- tempn=RSWAT(regs[n]); regs[n]+=2;
+ tempm=RSWAT (regs[m]); regs[m]+=2;
+ tempn=RSWAT (regs[n]); regs[n]+=2;
macl = MACL;
- prod = (long)(short) tempm * (long)(short) tempn;
+ prod = (long) (short) tempm * (long) (short) tempn;
sum = prod + macl;
if (S)
{
@@ -1377,10 +1385,10 @@ macl (regs, memory, n, m)
long long m64; /* 64 bit MAC */
}mac64;
- tempm = RSLAT(regs[m]);
+ tempm = RSLAT (regs[m]);
regs[m] += 4;
- tempn = RSLAT(regs[n]);
+ tempn = RSLAT (regs[n]);
regs[n] += 4;
mach = MACH;
@@ -1389,7 +1397,7 @@ macl (regs, memory, n, m)
mac64.m[0] = macl;
mac64.m[1] = mach;
- ans = (long long)tempm * (long long)tempn; /* Multiply 32bit * 32bit */
+ ans = (long long) tempm * (long long) tempn; /* Multiply 32bit * 32bit */
mac64.m64 += ans; /* Accumulate 64bit + 64 bit */
@@ -1411,6 +1419,32 @@ macl (regs, memory, n, m)
MACH = mach;
}
+
+/* GET_LOOP_BOUNDS {EXTENDED}
+ These two functions compute the actual starting and ending point
+ of the repeat loop, based on the RS and RE registers (repeat start,
+ repeat stop). The extended version is called for LDRC, and the
+ regular version is called for SETRC. The difference is that for
+ LDRC, the loop start and end instructions are literally the ones
+ pointed to by RS and RE -- for SETRC, they're not (see docs). */
+
+static struct loop_bounds
+get_loop_bounds_ext (rs, re, memory, mem_end, maskw, endianw)
+ int rs, re;
+ unsigned char *memory, *mem_end;
+ int maskw, endianw;
+{
+ struct loop_bounds loop;
+
+ /* FIXME: should I verify RS < RE? */
+ loop.start = PT2H (RS); /* FIXME not using the params? */
+ loop.end = PT2H (RE & ~1); /* Ignore bit 0 of RE. */
+ SKIP_INSN (loop.end);
+ if (loop.end >= mem_end)
+ loop.end = PT2H (0);
+ return loop;
+}
+
float
fsca_s (int in, double (*f) (double))
{
@@ -1446,7 +1480,7 @@ fsrra_s (float in)
architectural spec. */
frac = frexp (result, &exp);
frac = ldexp (frac, 24);
- error = 4.; /* 1 << 24-1-21 */
+ error = 4.0; /* 1 << 24-1-21 */
/* use eps to compensate for possible 1 ulp error in our 'exact' result. */
eps = ldexp (1., -29);
upper = floor (frac + error - eps);
@@ -1499,8 +1533,7 @@ get_loop_bounds (rs, re, memory, mem_end, maskw, endianw)
return loop;
}
-static void
-ppi_insn();
+static void ppi_insn ();
#include "ppi.c"
@@ -1541,7 +1574,9 @@ init_dsp (abfd)
int was_dsp = target_dsp;
unsigned long mach = bfd_get_mach (abfd);
- if (mach == bfd_mach_sh_dsp || mach == bfd_mach_sh3_dsp)
+ if (mach == bfd_mach_sh_dsp ||
+ mach == bfd_mach_sh4al_dsp ||
+ mach == bfd_mach_sh3_dsp)
{
int ram_area_size, xram_start, yram_start;
int new_select;
@@ -1556,7 +1591,7 @@ init_dsp (abfd)
xram_start = 0x0800f000;
ram_area_size = 0x1000;
}
- if (mach == bfd_mach_sh3_dsp)
+ if (mach == bfd_mach_sh3_dsp || mach == bfd_mach_sh4al_dsp)
{
/* SH7612:
8KB each for X & Y memory;
@@ -1624,7 +1659,7 @@ static void
init_pointers ()
{
host_little_endian = 0;
- *(char*)&host_little_endian = 1;
+ * (char*) &host_little_endian = 1;
host_little_endian &= 1;
if (saved_state.asregs.msize != 1 << sim_memory_size)
@@ -1740,7 +1775,11 @@ sim_resume (sd, step, siggnal)
memory = saved_state.asregs.memory;
mem_end = memory + saved_state.asregs.msize;
- loop = get_loop_bounds (RS, RE, memory, mem_end, maskw, endianw);
+ if (RE & 1)
+ loop = get_loop_bounds_ext (RS, RE, memory, mem_end, maskw, endianw);
+ else
+ loop = get_loop_bounds (RS, RE, memory, mem_end, maskw, endianw);
+
insn_ptr = PT2H (saved_state.asregs.pc);
CHECK_INSN_PTR (insn_ptr);
@@ -1911,7 +1950,7 @@ sim_store_register (sd, rn, memory, length)
unsigned val;
init_pointers ();
- val = swap (* (int *)memory);
+ val = swap (* (int *) memory);
switch (rn)
{
case SIM_SH_R0_REGNUM: case SIM_SH_R1_REGNUM: case SIM_SH_R2_REGNUM:
@@ -2203,7 +2242,8 @@ sim_info (sd, verbose)
SIM_DESC sd;
int verbose;
{
- double timetaken = (double) saved_state.asregs.ticks / (double) now_persec ();
+ double timetaken =
+ (double) saved_state.asregs.ticks / (double) now_persec ();
double virttime = saved_state.asregs.cycles / 36.0e6;
callback->printf_filtered (callback, "\n\n# instructions executed %10d\n",
@@ -2357,7 +2397,7 @@ sim_create_inferior (sd, prog_bfd, argv, env)
{
/* Clear the registers. */
memset (&saved_state, 0,
- (char*)&saved_state.asregs.end_of_registers - (char*)&saved_state);
+ (char*) &saved_state.asregs.end_of_registers - (char*) &saved_state);
/* Set the PC. */
if (prog_bfd != NULL)
@@ -2383,13 +2423,15 @@ sim_do_command (sd, cmd)
}
cmdsize = strlen (sms_cmd);
- if (strncmp (cmd, sms_cmd, cmdsize) == 0 && strchr (" \t", cmd[cmdsize]) != NULL)
+ if (strncmp (cmd, sms_cmd, cmdsize) == 0
+ && strchr (" \t", cmd[cmdsize]) != NULL)
{
parse_and_set_memory_size (cmd + cmdsize + 1);
}
else if (strcmp (cmd, "help") == 0)
{
- (callback->printf_filtered) (callback, "List of SH simulator commands:\n\n");
+ (callback->printf_filtered) (callback,
+ "List of SH simulator commands:\n\n");
(callback->printf_filtered) (callback, "set-memory-size <n> -- Set the number of address bits to use\n");
(callback->printf_filtered) (callback, "\n");
}
diff --git a/sim/testsuite/ChangeLog b/sim/testsuite/ChangeLog
index cbd36e3e990..4e7b230be8b 100644
--- a/sim/testsuite/ChangeLog
+++ b/sim/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2004-01-26 Chris Demetriou <cgd@broadcom.com>
+
+ * sim/mips: New directory. Tests for the MIPS simulator.
+
+2004-01-23 Ben Elliston <bje@wasabisystems.com>
+
+ * lib/sim-defs.exp (run_sim_test): Delete the .o and .x files if a
+ test passes.
+
2003-10-10 Dave Brolley <brolley@redhat.com>
* sim/frv/testutils.inc (or_gr_immed): New macro.
diff --git a/sim/testsuite/lib/sim-defs.exp b/sim/testsuite/lib/sim-defs.exp
index 017fcefb249..e75571760ad 100644
--- a/sim/testsuite/lib/sim-defs.exp
+++ b/sim/testsuite/lib/sim-defs.exp
@@ -289,6 +289,7 @@ proc run_sim_test { name requested_machs } {
if { "$opts(xerror)" == "no" } {
if [string match $opts(output) $output] {
pass "$mach $testname"
+ file delete ${name}.o ${name}.x
} else {
verbose -log "output: $output" 3
verbose -log "pattern: $opts(output)" 3
@@ -304,6 +305,7 @@ proc run_sim_test { name requested_machs } {
} else {
if [string match $opts(output) $output] {
pass "$mach $testname"
+ file delete ${name}.o ${name}.x
} else {
verbose -log "output: $output" 3
verbose -log "pattern: $opts(output)" 3
diff --git a/sim/v850/ChangeLog b/sim/v850/ChangeLog
index 6f528ef0671..26b25aa6d13 100644
--- a/sim/v850/ChangeLog
+++ b/sim/v850/ChangeLog
@@ -1,3 +1,7 @@
+2004-01-18 Mark Kettenis <kettenis@gnu.org>
+
+ * simops.c: Include <sys/types.h>.
+
2003-09-05 Andrew Cagney <cagney@redhat.com>
Nick Clifton <nickc@redhat.com>
diff --git a/sim/v850/simops.c b/sim/v850/simops.c
index 87868f5b748..38ec0a6af03 100644
--- a/sim/v850/simops.c
+++ b/sim/v850/simops.c
@@ -2,6 +2,8 @@
#include "v850_sim.h"
#include "simops.h"
+#include <sys/types.h>
+
#ifdef HAVE_UTIME_H
#include <utime.h>
#endif