summaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-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
311 files changed, 11555 insertions, 45459 deletions
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);