-Thu Feb 20 09:04:18 1992 John Gilmore (gnu at cygnus.com)
+Thu Feb 20 16:43:13 1992 Fred Fish (fnf at cygnus.com)
+
+ * environ.h, expression.h, frame.h, gdbcmd.h, gdbcore.h,
+ inferior.h, language.h, signame.h, target.h, terminal.h,
+ tm-68k.h, tm-i386v.h, tm-sparc.h, tm-sun386.h, tm-symmetry.h,
+ xm-i386v.h, xm-sparc.h: Prototypes for all external functions.
+ Lint.
+ * core.c, exec.c, infrun.c, inftarg.c, language.c, remote.c,
+ signame.c, sparc-xdep.c: Prototypes for all static functions.
+ Lint.
+ * core.c, eval.c, exec.c, inftarg.c, remote-adapt.c, remote-eb.c,
+ remote-hms.c, remote-mm.c, remote-nindy.c, remote-vx.c, remote.c,
+ target.c, target.h, valarith.c, valops.c, value.h, xcoffexec.c:
+ Remove to_call_function and target_call_function, since it
+ always calls the same thing (call_function_by_hand).
+ * core.c, exec.c, solib.c: Rename target_ops sections =>
+ to_sections, etc.
+ * infcmd.c, inflow.c, infptrace.c, infrun.c, main.c, target.c,
+ target.h: target_kill takes no args.
+ * language.c (language_info): Scaffolding to allow briefer
+ messages when the current language changes. FIXME.
+ * xm-amix.h, xm-i386v4.h, xm-stratus.h: Define NORETURN to avoid
+ complaints about volatile functions.
+ * xm-sysv4.h (HAVE_MMAP): Define.
+
+Thu Feb 20 09:04:18 1992 Fred Fish (fnf at cygnus.com)
* defs.h: Include ansidecl.h and PARAMS macro. Use PARAMS
to make prototypes for all functions declared here.
/* Source-language-related definitions for GDB.
- Copyright 1991 Free Software Foundation, Inc.
+ Copyright 1991, 1992 Free Software Foundation, Inc.
Contributed by the Department of Computer Science at the State University
of New York at Buffalo.
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+#if !defined (LANGUAGE_H)
+#define LANGUAGE_H 1
+
+#ifdef __STDC__ /* Forward defs for prototypes */
+struct value;
+enum exp_opcode;
+#endif
+
/* This used to be included to configure GDB for one or more specific
languages. Now it is shortcutted to configure for all of them. FIXME. */
/* #include "lang_def.h" */
*la_builtin_type_vector; /* Its builtin types */
enum range_check la_range_check; /* Default range checking */
enum type_check la_type_check; /* Default type checking */
- int (*la_parser)(); /* Parser function */
- void (*la_error)(); /* Parser error function */
+ int (*la_parser) PARAMS((void)); /* Parser function */
+ void (*la_error) PARAMS ((char *)); /* Parser error function */
struct type **la_longest_int; /* Longest signed integral type */
struct type **la_longest_unsigned_int; /* Longest uns integral type */
struct type **la_longest_float; /* Longest floating point type */
/* FIXME -- should be a setting in language_defn */
#define CAST_IS_CONVERSION (current_language->la_language == language_c)
-void language_info();
-void set_language();
+extern void
+language_info PARAMS ((int));
+
+extern void
+set_language PARAMS ((enum language));
+
\f
/* This page contains functions that return things that are
specific to languages. Each of these functions is based on
#define longest_int() (*current_language->la_longest_int)
#define longest_unsigned_int() (*current_language->la_longest_unsigned_int)
#define longest_float() (*current_language->la_longest_float)
-struct type *binop_result_type();
/* Hexadecimal number formatting is in defs.h because it is so common
throughout GDB. */
options like "08" or "l" (to produce e.g. %08x or %lx). */
#define local_octal_format() (current_language->la_octal_format)
-char *local_octal_format_custom();
+
+extern char *
+local_octal_format_custom PARAMS ((char *));
/* Type predicates */
-int simple_type();
-int ordered_type();
-int same_type();
-int integral_type();
-int numeric_type();
-int character_type();
-int boolean_type();
-int float_type();
-int pointer_type();
-int structured_type();
+
+extern int
+simple_type PARAMS ((struct type *));
+
+extern int
+ordered_type PARAMS ((struct type *));
+
+extern int
+same_type PARAMS ((struct type *, struct type *));
+
+extern int
+integral_type PARAMS ((struct type *));
+
+extern int
+numeric_type PARAMS ((struct type *));
+
+extern int
+character_type PARAMS ((struct type *));
+
+extern int
+boolean_type PARAMS ((struct type *));
+
+extern int
+float_type PARAMS ((struct type *));
+
+extern int
+pointer_type PARAMS ((struct type *));
+
+extern int
+structured_type PARAMS ((struct type *));
/* Checks Binary and Unary operations for semantic type correctness */
-void binop_type_check();
+/* FIXME: Does not appear to be used */
#define unop_type_check(v,o) binop_type_check((v),NULL,(o))
+extern void
+binop_type_check PARAMS ((struct value *, struct value *, int));
+
/* Error messages */
-void op_error();
+
+extern void
+op_error PARAMS ((char *fmt, enum exp_opcode, int));
+
#define type_op_error(f,o) \
op_error((f),(o),type_check==type_check_on ? 1 : 0)
#define range_op_error(f,o) \
op_error((f),(o),range_check==range_check_on ? 1 : 0)
-void type_error();
-void range_error();
+
+extern void
+type_error ();
+
+void
+range_error ();
/* Data: Does this value represent "truth" to the current language? */
-int value_true();
+
+extern int
+value_true PARAMS ((struct value *));
/* Misc: The string representing a particular enum language. */
-char *language_str();
+
+extern char *
+language_str PARAMS ((enum language));
/* Add a language to the set known by GDB (at initialization time). */
-void add_language (); /* Arg is &language_defn */
-extern enum language get_frame_language (); /* In stack.c */
+extern void
+add_language PARAMS ((const struct language_defn *));
+
+extern enum language
+get_frame_language PARAMS ((void)); /* In stack.c */
+
+#endif /* defined (LANGUAGE_H) */
/* Convert between signal names and numbers.
- Copyright (C) 1990 Free Software Foundation, Inc.
+ Copyright 1990, 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
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+#if !defined (SIGNAME_H)
+#define SIGNAME_H 1
+
/* Names for signals from 0 to NSIG-1. */
extern char *sys_siglist[];
-#ifdef __STDC__
/* Return the abbreviation (e.g. ABRT, FPE, etc.) for signal NUMBER.
Do not return this as a const char *. The caller might want to
assign it to a char *. */
-char *sig_abbrev (int number);
+
+extern char *
+sig_abbrev PARAMS ((int));
/* Return the signal number for an ABBREV, or -1 if there is no
signal by that name. */
-int sig_number (const char *abbrev);
+
+extern int
+sig_number PARAMS ((const char *));
/* Print to standard error the name of SIGNAL, preceded by MESSAGE and
a colon, and followed by a newline. */
-void psignal (unsigned signal, const char *message);
-
-#else
-char *sig_abbrev ();
-int sig_number ();
-void psignal ();
+extern void
+psignal PARAMS ((unsigned, const char *));
-#endif
+#endif /* !defined (SIGNAME_H) */
/* Interface between GDB and target environments, including files and processes
- Copyright 1990, 1991 Free Software Foundation, Inc.
+ Copyright 1990, 1991, 1992 Free Software Foundation, Inc.
Contributed by Cygnus Support. Written by John Gilmore.
This file is part of GDB.
-GDB is free software; you can redistribute it and/or modify
+This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 1, or (at your option)
-any later version.
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
-GDB is distributed in the hope that it will be useful,
+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 GDB; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+along with this program; if not, write to the Free Software
+Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#if !defined (TARGET_H)
+#define TARGET_H
/* This include file defines the interface between the main part
of the debugger, and the part which is target-specific, or
it goes into the file stratum, which is always below the process
stratum. */
+#include "bfd.h"
+
enum strata {
dummy_stratum, /* The lowest of the low */
file_stratum, /* Executable files, etc */
core_stratum, /* Core dump files */
- process_stratum, /* Executing processes */
+ process_stratum /* Executing processes */
};
-struct target_ops {
- char *to_shortname; /* Name this target type */
- char *to_longname; /* Name for printing */
- /* Documentation. Does not include trailing newline, and
- starts with a one-line description (probably similar to
- to_longname). */
- char *to_doc;
-#ifdef __STDC__
- void (*to_open) (char *name, int from_tty);
- void (*to_close) (int quitting);
- void (*to_attach) (char *name, int from_tty);
- void (*to_detach) (char *args, int from_tty);
- void (*to_resume) (int step, int siggnal);
- int (*to_wait) (int *status);
- int (*to_fetch_registers) (int regno);
- int (*to_store_registers) (int regno);
- void (*to_prepare_to_store) ();
- void (*to_convert_to_virtual) (int regnum, char *from, char *to);
- void (*to_convert_from_virtual) (int regnum, char *from, char *to);
- int (*to_xfer_memory) (CORE_ADDR memaddr, char *myaddr, int len, int w);
- void (*to_files_info) ();
- int (*to_insert_breakpoint) (CORE_ADDR addr, char *save);
- int (*to_remove_breakpoint) (CORE_ADDR addr, char *save);
- void (*to_terminal_init) ();
- void (*to_terminal_inferior) ();
- void (*to_terminal_ours_for_output) ();
- void (*to_terminal_ours) ();
- void (*to_terminal_info) (char *arg, int from_tty);
- void (*to_kill) (char *arg, int from_tty);
- void (*to_load) (char *arg, int from_tty);
- void (*to_add_syms) (char *arg, int from_tty);
-struct value *(*to_call_function) (struct value *function,
- int nargs, struct value **args);
- int (*to_lookup_symbol) (char *name, CORE_ADDR *addrp);
- void (*to_create_inferior) (char *exec, char *args, char **env);
- void (*to_mourn_inferior) ();
- enum strata to_stratum;
-struct target_ops *to_next;
- int to_has_all_memory;
- int to_has_memory;
- int to_has_stack;
- int to_has_registers;
- int to_has_execution;
- int to_magic;
-/* Need sub-structure for target machine related rather than comm related? */
-#else /* STDC */
- void (*to_open) ();
- void (*to_close) ();
- void (*to_attach) ();
- void (*to_detach) ();
- void (*to_resume) ();
- int (*to_wait) ();
- int (*to_fetch_registers) ();
- int (*to_store_registers) ();
- void (*to_prepare_to_store) ();
- void (*to_convert_to_virtual) ();
- void (*to_convert_from_virtual) ();
- int (*to_xfer_memory) ();
- void (*to_files_info) ();
- int (*to_insert_breakpoint) ();
- int (*to_remove_breakpoint) ();
- void (*to_terminal_init) ();
- void (*to_terminal_inferior) ();
- void (*to_terminal_ours_for_output) ();
- void (*to_terminal_ours) ();
- void (*to_terminal_info) ();
- void (*to_kill) ();
- void (*to_load) ();
- void (*to_add_syms) ();
-struct value *(*to_call_function) ();
- int (*to_lookup_symbol) ();
- void (*to_create_inferior) ();
- void (*to_mourn_inferior) ();
- enum strata to_stratum;
-struct target_ops *to_next;
- int to_has_all_memory;
- int to_has_memory;
- int to_has_stack;
- int to_has_registers;
- int to_has_execution;
- int to_magic;
-/* Need sub-structure for target machine related rather than comm related? */
-#endif
+struct target_ops
+{
+ char *to_shortname; /* Name this target type */
+ char *to_longname; /* Name for printing */
+ char *to_doc; /* Documentation. Does not include trailing
+ newline, and starts with a one-line descrip-
+ tion (probably similar to to_longname). */
+ void (*to_open) PARAMS ((char *, int));
+ void (*to_close) PARAMS ((int));
+ void (*to_attach) PARAMS ((char *, int));
+ void (*to_detach) PARAMS ((char *, int));
+ void (*to_resume) PARAMS ((int, int));
+ int (*to_wait) PARAMS ((int *));
+ void (*to_fetch_registers) PARAMS ((int));
+ void (*to_store_registers) PARAMS ((int));
+ void (*to_prepare_to_store) PARAMS ((void));
+ void (*to_convert_to_virtual) PARAMS ((int, char *, char *));
+ void (*to_convert_from_virtual) PARAMS ((int, char *, char *));
+ int (*to_xfer_memory) PARAMS ((CORE_ADDR, char *, int, int,
+ struct target_ops *));
+ void (*to_files_info) PARAMS ((struct target_ops *));
+ int (*to_insert_breakpoint) PARAMS ((CORE_ADDR, char *));
+ int (*to_remove_breakpoint) PARAMS ((CORE_ADDR, char *));
+ void (*to_terminal_init) PARAMS ((void));
+ void (*to_terminal_inferior) PARAMS ((void));
+ void (*to_terminal_ours_for_output) PARAMS ((void));
+ void (*to_terminal_ours) PARAMS ((void));
+ void (*to_terminal_info) PARAMS ((char *, int));
+ void (*to_kill) PARAMS ((void));
+ void (*to_load) PARAMS ((char *, int));
+ int (*to_lookup_symbol) PARAMS ((char *, CORE_ADDR *));
+ void (*to_create_inferior) PARAMS ((char *, char *, char **));
+ void (*to_mourn_inferior) PARAMS ((void));
+ enum strata to_stratum;
+ struct target_ops
+ *to_next;
+ int to_has_all_memory;
+ int to_has_memory;
+ int to_has_stack;
+ int to_has_registers;
+ int to_has_execution;
+ struct section_table
+ *to_sections;
+ struct section_table
+ *to_sections_end;
+ int to_magic;
+ /* Need sub-structure for target machine related rather than comm related? */
};
/* Magic number for checking ops size. If a struct doesn't end with this
#define target_wait(status) \
(*current_target->to_wait) (status)
-/* Fetch register REGNO, or all regs if regno == -1. Result is 0
- for success, -1 for problems. */
+/* Fetch register REGNO, or all regs if regno == -1. No result. */
#define target_fetch_registers(regno) \
(*current_target->to_fetch_registers) (regno)
function which iterates across the various targets. Result is
0 for success, or an errno value. */
-#ifdef __STDC__
-/* Needs defs.h for CORE_ADDR */
-extern int target_read_memory(CORE_ADDR memaddr, char *myaddr, int len);
-extern int target_write_memory(CORE_ADDR memaddr, char *myaddr, int len);
-extern int target_xfer_memory(CORE_ADDR memaddr, char *myaddr, int len,
- int write);
-#else
-extern int target_read_memory();
-extern int target_write_memory();
-extern int target_xfer_memory();
-#endif
+extern int
+target_read_string PARAMS ((CORE_ADDR, char *, int));
+
+extern int
+target_read_memory PARAMS ((CORE_ADDR, char *, int));
+
+extern int
+target_write_memory PARAMS ((CORE_ADDR, char *, int));
+
+extern int
+xfer_memory PARAMS ((CORE_ADDR, char *, int, int, struct target_ops *));
+
+extern int
+child_xfer_memory PARAMS ((CORE_ADDR, char *, int, int, struct target_ops *));
+
+extern int
+target_xfer_memory PARAMS ((CORE_ADDR, char *, int, int));
+
+/* From exec.c */
+
+extern void
+print_section_info PARAMS ((struct target_ops *, bfd *));
/* Print a line about the current target. */
#define target_files_info() \
- (*current_target->to_files_info) ()
+ (*current_target->to_files_info) (current_target)
/* Insert a breakpoint at address ADDR in the target machine.
SAVE is a pointer to memory allocated for saving the
/* Kill the inferior process. Make it go away. */
-#define target_kill(arg, from_tty) \
- (*current_target->to_kill) (arg, from_tty)
+#define target_kill() \
+ (*current_target->to_kill) ()
/* Load an executable file into the target process. This is expected to
not only bring new code into the target process, but also to update
#define target_load(arg, from_tty) \
(*current_target->to_load) (arg, from_tty)
-/* Add the symbols from an executable file into GDB's symbol table, as if
- the file had been loaded at a particular address (or set of addresses).
- This does not change any state in the target system, only in GDB. */
-
-#define target_add_syms(arg, from_tty) \
- (*current_target->to_add_syms) (arg, from_tty)
-
-/* Perform a function call in the inferior.
- ARGS is a vector of values of arguments (NARGS of them).
- FUNCTION is a value, the function to be called.
- Returns a value representing what the function returned.
- May fail to return, if a breakpoint or signal is hit
- during the execution of the function. */
-
-#define target_call_function(function, nargs, args) \
- (*current_target->to_call_function) (function, nargs, args)
-
/* Look up a symbol in the target's symbol table. NAME is the symbol
name. ADDRP is a CORE_ADDR * pointing to where the value of the symbol
should be returned. The result is 0 if successful, nonzero if the
(current_target->to_has_registers)
/* Does the target have execution? Can we make it jump (through hoops),
- or pop its stack a few times, or set breakpoints? */
+ or pop its stack a few times? */
#define target_has_execution \
(current_target->to_has_execution)
pop_target: Remove the top thing on the stack of current targets. */
-#ifdef __STDC__
-void add_target (struct target_ops *);
-int push_target (struct target_ops *);
-int unpush_target (struct target_ops *);
-void target_preopen (int);
-void pop_target (void);
-#else
-void add_target ();
-int push_target ();
-int unpush_target ();
-void target_preopen ();
-void pop_target ();
-#endif
+extern void
+add_target PARAMS ((struct target_ops *));
+
+extern int
+push_target PARAMS ((struct target_ops *));
+
+extern int
+unpush_target PARAMS ((struct target_ops *));
+
+extern void
+target_preopen PARAMS ((int));
+
+extern void
+pop_target PARAMS ((void));
+
+/* Struct section_table maps address ranges to file sections. It is
+ mostly used with BFD files, but can be used without (e.g. for handling
+ raw disks, or files not in formats handled by BFD). */
+
+struct section_table {
+ CORE_ADDR addr; /* Lowest address in section */
+ CORE_ADDR endaddr; /* 1+highest address in section */
+ sec_ptr sec_ptr; /* BFD section pointer */
+ bfd *bfd; /* BFD file pointer */
+};
+
+/* Builds a section table, given args BFD, SECTABLE_PTR, SECEND_PTR.
+ Returns 0 if OK, 1 on error. */
+
+extern int
+build_section_table PARAMS ((bfd *, struct section_table **,
+ struct section_table **));
+
+/* From inftarg.c */
+
+extern void
+host_convert_from_virtual PARAMS ((int, char *, char *));
+
+extern void
+host_convert_to_virtual PARAMS ((int, char *, char *));
+
+/* From mem-break.c */
+
+extern int
+memory_remove_breakpoint PARAMS ((CORE_ADDR, char *));
+
+extern int
+memory_insert_breakpoint PARAMS ((CORE_ADDR, char *));
+
+#endif /* !defined (TARGET_H) */
/* Parameters for execution on a 68000 series machine.
- Copyright (C) 1986, 1987, 1989, 1990 Free Software Foundation, Inc.
+ Copyright 1986, 1987, 1989, 1990, 1992 Free Software Foundation, Inc.
This file is part of GDB.
#if !defined(SKIP_PROLOGUE)
#define SKIP_PROLOGUE(ip) {(ip) = m68k_skip_prologue(ip);}
-extern CORE_ADDR m68k_skip_prologue ();
+extern CORE_ADDR m68k_skip_prologue PARAMS ((CORE_ADDR ip));
#endif
/* Immediately after a function call, return the saved pc.
/* Put the declaration out here because if it's in the macros, PCC
will complain. */
-extern struct ext_format ext_format_68881;
+extern const struct ext_format ext_format_68881;
/* Convert data from raw format for register REGNUM
to virtual format for register REGNUM. */
if ((REGNUM) >= FP0_REGNUM && (REGNUM) < FPC_REGNUM) \
ieee_extended_to_double (&ext_format_68881, (FROM), (double *)(TO)); \
else \
- bcopy ((FROM), (TO), 4); \
+ memcpy ((TO), (FROM), 4); \
}
/* Convert data from virtual format for register REGNUM
if ((REGNUM) >= FP0_REGNUM && (REGNUM) < FPC_REGNUM) \
double_to_ieee_extended (&ext_format_68881, (double *)(FROM), (TO)); \
else \
- bcopy ((FROM), (TO), 4); \
+ memcpy ((TO), (FROM), 4); \
}
/* Return the GDB type object for the "standard" data type
/* Convert data from raw format for register REGNUM
to virtual format for register REGNUM. */
-#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,FROM,TO) bcopy ((FROM), (TO), 4);
+#define REGISTER_CONVERT_TO_VIRTUAL(REGNUM,FROM,TO) memcpy ((TO), (FROM), 4);
/* Convert data from virtual format for register REGNUM
to raw format for register REGNUM. */
-#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO) bcopy ((FROM), (TO), 4);
+#define REGISTER_CONVERT_TO_RAW(REGNUM,FROM,TO) memcpy ((TO), (FROM), 4);
/* Return the GDB type object for the "standard" data type
of data in register N. */
#if !defined (EXTRACT_RETURN_VALUE)
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
- bcopy ((char *)(REGBUF) + \
+ memcpy ((VALBUF), \
+ (char *)(REGBUF) + \
(TYPE_LENGTH(TYPE) >= 4 ? 0 : 4 - TYPE_LENGTH(TYPE)), \
- VALBUF, TYPE_LENGTH(TYPE))
+ TYPE_LENGTH(TYPE))
#endif
/* Write into appropriate registers a function return value
#define PUSH_DUMMY_FRAME { m68k_push_dummy_frame (); }
+extern void m68k_push_dummy_frame PARAMS ((void));
+
/* Discard from the stack the innermost frame, restoring all registers. */
#define POP_FRAME { m68k_pop_frame (); }
+extern void m68k_pop_frame PARAMS ((void));
+
+
/* Macro definitions for i386, Unix System V.
- Copyright (C) 1986, 1987, 1989, 1991 Free Software Foundation, Inc.
+ Copyright 1986, 1987, 1989, 1991, 1992 Free Software Foundation, Inc.
This file is part of GDB.
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+#if !defined (TM_I386V_H)
+#define TM_I386V_H 1
+
/*
* Changes for 80386 by Pace Willisson (pace@prep.ai.mit.edu)
* July 1988
#define SKIP_PROLOGUE(frompc) {(frompc) = i386_skip_prologue((frompc));}
+extern int
+i386_skip_prologue PARAMS ((int));
+
/* Immediately after a function call, return the saved pc.
Can't always go through the frames for this because on some machines
the new frame is not set up until the new function executes
#define STORE_STRUCT_RETURN(ADDR, SP) \
{ (SP) -= sizeof (ADDR); \
- write_memory ((SP), &(ADDR), sizeof (ADDR)); }
+ write_memory ((SP), (char *) &(ADDR), sizeof (ADDR)); }
/* Extract from an array REGBUF containing the (raw) register state
a function return value of type TYPE, and copy that, in virtual format,
#define FRAME_NUM_ARGS(numargs, fi) (numargs) = i386_frame_num_args(fi)
+#ifdef __STDC__ /* Forward decl's for prototypes */
+struct frame_info;
+struct frame_saved_regs;
+#endif
+
+extern int
+i386_frame_num_args PARAMS ((struct frame_info *));
+
/* Return number of bytes at start of arglist that are not really args. */
#define FRAME_ARGS_SKIP 8
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
{ i386_frame_find_saved_regs ((frame_info), &(frame_saved_regs)); }
+extern void
+i386_frame_find_saved_regs PARAMS ((struct frame_info *,
+ struct frame_saved_regs *));
+
\f
/* Things needed for making the inferior call functions. */
#define PUSH_DUMMY_FRAME { i386_push_dummy_frame (); }
+extern void
+i386_push_dummy_frame PARAMS ((void));
+
/* Discard from the stack the innermost frame, restoring all registers. */
#define POP_FRAME { i386_pop_frame (); }
+extern void
+i386_pop_frame PARAMS ((void));
+
/* this is
* call 11223344 (32 bit relative)
* int3
*((char *)(dummyname) + 3) = ((delta >> 16) & 0xff); \
*((char *)(dummyname) + 4) = ((delta >> 24) & 0xff); \
}
+
+extern void
+print_387_control_word PARAMS ((unsigned int));
+
+extern void
+print_387_status_word PARAMS ((unsigned int));
+
+#endif /* !defined (TM_I386V_H) */
-/* Parameters for target machine of Sun 4, for GDB, the GNU debugger.
- Copyright (C) 1986, 1987, 1989, 1991 Free Software Foundation, Inc.
+/* Parameters for SPARC target machines, for GDB, the GNU debugger.
+ Copyright 1986, 1987, 1989, 1991, 1992 Free Software Foundation, Inc.
Contributed by Michael Tiemann (tiemann@mcc.com)
This file is part of GDB.
#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) \
(sparc_extract_struct_value_address (REGBUF))
-CORE_ADDR sparc_extract_struct_value_address (
-#ifdef __STDC__
- char [REGISTER_BYTES]
-#endif
- );
+
+extern CORE_ADDR
+sparc_extract_struct_value_address PARAMS ((char [REGISTER_BYTES]));
\f
/* Describe the pointer in each stack frame to the previous stack frame
-/* Parameters for execution on a Sun 386i, for GDB, the GNU debugger.
- Copyright (C) 1986, 1987, 1991 Free Software Foundation, Inc.
+/* Parameters for a Sun 386i target machine, for GDB, the GNU debugger.
+ Copyright 1986, 1987, 1991, 1992 Free Software Foundation, Inc.
This file is part of GDB.
#define SKIP_PROLOGUE(frompc) {(frompc) = i386_skip_prologue((frompc));}
+extern int
+i386_skip_prologue PARAMS ((int));
+
/* Immediately after a function call, return the saved pc.
Can't always go through the frames for this because on some machines
the new frame is not set up until the new function executes
else \
bcopy ((FROM), (TO), 4); }
+extern void
+i387_to_double PARAMS ((char *, char *));
+
/* Convert data from virtual format for register REGNUM
to raw format for register REGNUM. */
else \
bcopy ((FROM), (TO), 4); }
+extern void
+double_to_i387 PARAMS ((char *, char *));
+
/* Return the GDB type object for the "standard" data type
of data in register N. */
#define FRAME_NUM_ARGS(numargs, fi) (numargs) = i386_frame_num_args(fi)
+#ifdef __STDC__ /* Forward decl's for prototypes */
+struct frame_info;
+struct frame_saved_regs;
+#endif
+
+extern int
+i386_frame_num_args PARAMS ((struct frame_info *));
+
/* Return number of bytes at start of arglist that are not really args. */
#define FRAME_ARGS_SKIP 8
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
{ i386_frame_find_saved_regs ((frame_info), &(frame_saved_regs)); }
+extern void
+i386_frame_find_saved_regs PARAMS ((struct frame_info *,
+ struct frame_saved_regs *));
+
\f
/* Things needed for making the inferior call functions. */
#define PUSH_DUMMY_FRAME { i386_push_dummy_frame (); }
+extern void
+i386_push_dummy_frame PARAMS ((void));
+
/* Discard from the stack the innermost frame, restoring all registers. */
#define POP_FRAME { i386_pop_frame (); }
+extern void
+i386_pop_frame PARAMS ((void));
+
/* this is
* call 11223344 (32 bit relative)
* int3
-/* Definitions to make GDB run on a Sequent Symmetry under dynix 3.0,
+/* Target machine definitions for GDB on a Sequent Symmetry under dynix 3.0,
with Weitek 1167 and i387 support.
- Copyright (C) 1986, 1987, 1989, 1991 Free Software Foundation, Inc.
+ Copyright 1986, 1987, 1989, 1991, 1992 Free Software Foundation, Inc.
+ Symmetry version by Jay Vosburgh (uunet!sequent!fubar).
This file is part of GDB.
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-/* Symmetry version by Jay Vosburgh (uunet!sequent!fubar) */
-
/* I don't know if this will work for cross-debugging, even if you do get
a copy of the right include file. */
#include <machine/reg.h>
#define SKIP_PROLOGUE(frompc) {(frompc) = i386_skip_prologue((frompc));}
+extern int
+i386_skip_prologue PARAMS ((int));
+
/* Immediately after a function call, return the saved pc.
Can't always go through the frames for this because on some machines
the new frame is not set up until the new function executes
(REGNUM < 14) ? i387_to_double((FROM), (TO)) : \
bcopy ((FROM), (TO), 4))
+extern void
+i387_to_double PARAMS ((char *, char *));
+
/* Convert data from virtual format for register REGNUM
to raw format for register REGNUM. */
(REGNUM < 14) ? double_to_i387((FROM), (TO)) : \
bcopy ((FROM), (TO), 4))
+extern void
+double_to_i387 PARAMS ((char *, char *));
+
/* Return the GDB type object for the "standard" data type
of data in register N. */
#define FRAME_FIND_SAVED_REGS(frame_info, frame_saved_regs) \
{ i386_frame_find_saved_regs ((frame_info), &(frame_saved_regs)); }
+#ifdef __STDC__ /* Forward decl's for prototypes */
+struct frame_info;
+struct frame_saved_regs;
+#endif
+
+extern void
+i386_frame_find_saved_regs PARAMS ((struct frame_info *,
+ struct frame_saved_regs *));
+
\f
/* Things needed for making the inferior call functions. */
delta = to - from; \
*(int *)((char *)(dummyname) + 1) = delta; \
}
+
+extern void
+print_387_control_word PARAMS ((unsigned int));
+
+extern void
+print_387_status_word PARAMS ((unsigned int));
/* Macro defintions for i386.
- Copyright (C) 1986, 1987, 1989 Free Software Foundation, Inc.
+ Copyright 1986, 1987, 1989, 1992 Free Software Foundation, Inc.
+ Changes for 80386 by Pace Willisson (pace@prep.ai.mit.edu), July 1988.
This file is part of GDB.
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-/*
- * Changes for 80386 by Pace Willisson (pace@prep.ai.mit.edu)
- * July 1988
- */
-
#define HOST_BYTE_ORDER LITTLE_ENDIAN
/* I'm running gdb 3.4 under 386/ix 2.0.2, which is a derivative of AT&T's
#define HAVE_TERMIO
-/* Get rid of any system-imposed stack limit if possible. */
-
-/* #define SET_STACK_LIMIT_HUGE not in sys5 */
-
/* This is the amount to subtract from u.u_ar0
to get the offset in the core file of the register values. */
#define REGISTER_U_ADDR(addr, blockend, regno) \
(addr) = i386_register_u_addr ((blockend),(regno));
+
+extern int
+i386_register_u_addr PARAMS ((int, int));
/* Parameters for execution on a Sun 4, for GDB, the GNU debugger.
- Copyright 1986, 1987, 1989, 1991 Free Software Foundation, Inc.
- Contributed by Michael Tiemann (tiemann@mcc.com)
+ Copyright 1986, 1987, 1989, 1991, 1992 Free Software Foundation, Inc.
+ Contributed by Michael Tiemann (tiemann@mcc.com).
This file is part of GDB.
FIXME, this does not handle remote debugging cleanly. */
extern int deferred_stores;
-extern int store_inferior_registers ();
#define DO_DEFERRED_STORES \
if (deferred_stores) \
store_inferior_registers (-2);