Updated copyright notices for most files.
[deliverable/binutils-gdb.git] / gdb / defs.h
index 1cd32c00e7ffa5bca1d19ff90a0e8243a68ce82c..6e1fbf730a6e5acfd20a59e2267f75937cad1264 100644 (file)
@@ -1,14 +1,14 @@
 /* *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
+   Copyright (C) 1986, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
+   1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
    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
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    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.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef DEFS_H
 #define DEFS_H
 
 #include "config.h"            /* Generated by configure.  */
 
+#include <sys/types.h>
 #include <stdio.h>
 #include <errno.h>             /* System call error return status.  */
 #include <limits.h>
 
 #ifdef HAVE_STDDEF_H
 #include <stddef.h>
-#else
-#include <sys/types.h>         /* For size_t.  */
 #endif
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
+#include <fcntl.h>
+
 /* First include ansidecl.h so we can use the various macro definitions
    here and in all subsequent file inclusions.  */
 
 #define SEEK_CUR 1
 #endif
 
+/* The O_BINARY flag is defined in fcntl.h on some non-Posix platforms.
+   It is used as an access modifier in calls to open(), where it acts
+   similarly to the "b" character in fopen()'s MODE argument. On Posix
+   platforms it should be a no-op, so it is defined as 0 here. This 
+   ensures that the symbol may be used freely elsewhere in gdb. */
+
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 #include <stdarg.h>            /* For va_list.  */
 
 #include "libiberty.h"
 
-#include "progress.h"
+/* Rather than duplicate all the logic in BFD for figuring out what
+   types to use (which can be pretty complicated), symply define them
+   in terms of the corresponding type from BFD.  */
 
-/* For BFD64 and bfd_vma.  */
 #include "bfd.h"
 
+/* A byte from the program being debugged.  */
+typedef bfd_byte gdb_byte;
 
-/* The target is partially multi-arched.  Both "tm.h" and the
-   multi-arch vector provide definitions.  "tm.h" normally overrides
-   the multi-arch vector (but there are a few exceptions).  */
-
-#define GDB_MULTI_ARCH_PARTIAL 1
-
-/* The target is partially multi-arched. Both the multi-arch vector
-   and "tm.h" provide definitions. "tm.h" cannot override a definition
-   provided by the multi-arch vector.  It is detected as a compilation
-   error.
-
-   This setting is only useful during a multi-arch conversion. */
-
-#define GDB_MULTI_ARCH_TM 2
-
-/* The target is pure multi-arch.  The MULTI-ARCH vector provides all
-   definitions.  "tm.h" is linked to an empty file. */
-
-#define GDB_MULTI_ARCH_PURE 3
-
-
-
-/* An address in the program being debugged.  Host byte order.  Rather
-   than duplicate all the logic in BFD which figures out what type
-   this is (long, long long, etc.) and whether it needs to be 64
-   bits (the host/target interactions are subtle), we just use
-   bfd_vma.  */
-
+/* An address in the program being debugged.  Host byte order.  */
 typedef bfd_vma CORE_ADDR;
 
+/* The largest CORE_ADDR value.  */
+#define CORE_ADDR_MAX (~ (CORE_ADDR) 0)
+
 /* This is to make sure that LONGEST is at least as big as CORE_ADDR.  */
 
 #ifndef LONGEST
@@ -154,8 +142,19 @@ typedef bfd_vma CORE_ADDR;
    issue is found that we spend the effort on algorithmic
    optimizations than micro-optimizing.'' J.T. */
 
-#define STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
-#define STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
+/* NOTE: cagney/2003-11-23: All instances of STREQ[N] covered by
+   testing GDB on a stabs system have been replaced by equivalent
+   str[n]cmp calls.  To avoid the possability of introducing bugs when
+   making untested changes, the remaining references were deprecated
+   rather than replaced.  */
+
+/* DISCLAIMER: cagney/2003-11-23: Simplified definition of these
+   macros so that they just map directly onto strcmp equivalent.  I'm
+   not responsible for any breakage due to code that relied on the old
+   underlying implementation.  */
+
+#define DEPRECATED_STREQ(a,b) (strcmp ((a), (b)) == 0)
+#define DEPRECATED_STREQN(a,b,c) (strncmp ((a), (b), (c)) == 0)
 
 /* Check if a character is one of the commonly used C++ marker characters.  */
 extern int is_cplus_marker (int);
@@ -169,6 +168,9 @@ extern int dbx_commands;
 /* System root path, used to find libraries etc.  */
 extern char *gdb_sysroot;
 
+/* Search path for separate debug files.  */
+extern char *debug_file_directory;
+
 extern int quit_flag;
 extern int immediate_quit;
 extern int sevenbit_strings;
@@ -189,8 +191,7 @@ extern void quit (void);
 #else
 #define QUIT { \
   if (quit_flag) quit (); \
-  if (interactive_hook) interactive_hook (); \
-  PROGRESS (1); \
+  if (deprecated_interactive_hook) deprecated_interactive_hook (); \
 }
 #endif
 
@@ -210,8 +211,11 @@ enum language
     language_fortran,          /* Fortran */
     language_m2,               /* Modula-2 */
     language_asm,              /* Assembly language */
-    language_scm,              /* Scheme / Guile */
-    language_pascal            /* Pascal */
+    language_pascal,           /* Pascal */
+    language_ada,              /* Ada */
+    language_scm,              /* Guile Scheme */
+    language_minimal,          /* All other languages, minimal support only */
+    nr_languages
   };
 
 enum precision_type
@@ -229,6 +233,33 @@ enum auto_boolean
   AUTO_BOOLEAN_AUTO
 };
 
+/* Potential ways that a function can return a value of a given type.  */
+enum return_value_convention
+{
+  /* Where the return value has been squeezed into one or more
+     registers.  */
+  RETURN_VALUE_REGISTER_CONVENTION,
+  /* Commonly known as the "struct return convention".  The caller
+     passes an additional hidden first parameter to the caller.  That
+     parameter contains the address at which the value being returned
+     should be stored.  While typically, and historically, used for
+     large structs, this is convention is applied to values of many
+     different types.  */
+  RETURN_VALUE_STRUCT_CONVENTION,
+  /* Like the "struct return convention" above, but where the ABI
+     guarantees that the called function stores the address at which
+     the value being returned is stored in a well-defined location,
+     such as a register or memory slot in the stack frame.  Don't use
+     this if the ABI doesn't explicitly guarantees this.  */
+  RETURN_VALUE_ABI_RETURNS_ADDRESS,
+  /* Like the "struct return convention" above, but where the ABI
+     guarantees that the address at which the value being returned is
+     stored will be available in a well-defined location, such as a
+     register or memory slot in the stack frame.  Don't use this if
+     the ABI doesn't explicitly guarantees this.  */
+  RETURN_VALUE_ABI_PRESERVES_ADDRESS,
+};
+
 /* the cleanup list records things that have to be undone
    if an error happens (descriptors to be closed, memory to be freed, etc.)
    Each link in the chain records a function to call and an
@@ -284,18 +315,20 @@ struct cleanup
 #endif
 #endif
 
+/* Be conservative and use enum bitfields only with GCC.
+   This is copied from gcc 3.3.1, system.h.  */
+
+#if defined(__GNUC__) && (__GNUC__ >= 2)
+#define ENUM_BITFIELD(TYPE) enum TYPE
+#else
+#define ENUM_BITFIELD(TYPE) unsigned int
+#endif
+
 /* Needed for various prototypes */
 
 struct symtab;
 struct breakpoint;
-
-/* From blockframe.c */
-
-extern int inside_entry_func (CORE_ADDR);
-
-extern int inside_entry_file (CORE_ADDR addr);
-
-extern int inside_main_func (CORE_ADDR pc);
+struct frame_info;
 
 /* From utils.c */
 
@@ -313,14 +346,10 @@ extern int subset_compare (char *, char *);
 
 extern char *safe_strerror (int);
 
-extern void init_malloc (void *);
-
-extern void request_quit (int);
+#define        ALL_CLEANUPS    ((struct cleanup *)0)
 
 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 *);
 
@@ -343,6 +372,10 @@ extern struct cleanup *make_cleanup_freeargv (char **);
 struct ui_file;
 extern struct cleanup *make_cleanup_ui_file_delete (struct ui_file *);
 
+struct section_addr_info;
+extern struct cleanup *(make_cleanup_free_section_addr_info 
+                        (struct section_addr_info *));
+
 extern struct cleanup *make_cleanup_close (int fd);
 
 extern struct cleanup *make_cleanup_bfd_close (bfd *abfd);
@@ -352,8 +385,6 @@ extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
 extern struct cleanup *make_my_cleanup (struct cleanup **,
                                        make_cleanup_ftype *, void *);
 
-extern struct cleanup *make_run_cleanup (make_cleanup_ftype *, void *);
-
 extern struct cleanup *make_exec_cleanup (make_cleanup_ftype *, void *);
 extern struct cleanup *make_exec_error_cleanup (make_cleanup_ftype *, void *);
 
@@ -372,6 +403,8 @@ extern void null_cleanup (void *);
 extern int myread (int, char *, int);
 
 extern int query (const char *, ...) ATTR_FORMAT (printf, 1, 2);
+extern int nquery (const char *, ...) ATTR_FORMAT (printf, 1, 2);
+extern int yquery (const char *, ...) ATTR_FORMAT (printf, 1, 2);
 
 extern void init_page_info (void);
 
@@ -381,15 +414,13 @@ extern char *xfullpath (const char *);
 extern unsigned long gnu_debuglink_crc32 (unsigned long crc,
                                           unsigned char *buf, size_t len);
 
-/* From demangle.c */
+ULONGEST strtoulst (const char *num, const char **trailer, int base);
 
-extern void set_demangling_style (char *);
+char *ldirname (const char *filename);
 
-/* From tm.h */
+/* From demangle.c */
 
-struct type;
-typedef int (use_struct_convention_fn) (int gcc_p, struct type * value_type);
-extern use_struct_convention_fn generic_use_struct_convention;
+extern void set_demangling_style (char *);
 
 \f
 /* Annotation stuff.  */
@@ -404,22 +435,22 @@ extern void reinitialize_more_filter (void);
 
 /* Normal results */
 extern struct ui_file *gdb_stdout;
+/* Input stream */
+extern struct ui_file *gdb_stdin;
 /* Serious error notifications */
 extern struct ui_file *gdb_stderr;
 /* Log/debug/trace messages that should bypass normal stdout/stderr
-   filtering.  For momement, always call this stream using
+   filtering.  For moment, always call this stream using
    *_unfiltered. In the very near future that restriction shall be
    removed - either call shall be unfiltered. (cagney 1999-06-13). */
 extern struct ui_file *gdb_stdlog;
 /* Target output that should bypass normal stdout/stderr filtering.
-   For momement, always call this stream using *_unfiltered. In the
+   For moment, always call this stream using *_unfiltered. In the
    very near future that restriction shall be removed - either call
    shall be unfiltered. (cagney 1999-07-02). */
 extern struct ui_file *gdb_stdtarg;
-
-#if defined(TUI)
-#include "tui.h"
-#endif
+extern struct ui_file *gdb_stdtargerr;
+extern struct ui_file *gdb_stdtargin;
 
 #include "ui-file.h"
 
@@ -476,10 +507,12 @@ extern void fputstr_filtered (const char *str, int quotr, struct ui_file * strea
 
 extern void fputstr_unfiltered (const char *str, int quotr, struct ui_file * stream);
 
+extern void fputstrn_filtered (const char *str, int n, int quotr, struct ui_file * stream);
+
 extern void fputstrn_unfiltered (const char *str, int n, int quotr, struct ui_file * stream);
 
 /* Display the host ADDR on STREAM formatted as ``0x%x''. */
-extern void gdb_print_host_address (void *addr, struct ui_file *stream);
+extern void gdb_print_host_address (const void *addr, struct ui_file *stream);
 
 /* Convert a CORE_ADDR into a HEX string.  paddr() is like %08lx.
    paddr_nz() is like %lx.  paddr_u() is like %lu. paddr_width() is
@@ -490,8 +523,12 @@ extern char *paddr_nz (CORE_ADDR addr);
 extern char *paddr_u (CORE_ADDR addr);
 extern char *paddr_d (LONGEST addr);
 
+/* Like 0x%lx, replaces deprecated_print_address_numeric.  */
+extern const char *paddress (CORE_ADDR addr);
+
 extern char *phex (ULONGEST l, int sizeof_l);
 extern char *phex_nz (ULONGEST l, int sizeof_l);
+extern char *int_string (LONGEST, int, int, int, int);
 
 /* Like paddr() only print/scan raw CORE_ADDR.  The output from
    core_addr_to_string() can be passed direct to
@@ -500,6 +537,11 @@ extern const char *core_addr_to_string (const CORE_ADDR addr);
 extern const char *core_addr_to_string_nz (const CORE_ADDR addr);
 extern CORE_ADDR string_to_core_addr (const char *my_string);
 
+/* Return a string that contains a number formatted as a hex
+   string.  */
+extern char *hex_string (LONGEST);
+extern char *hex_string_custom (LONGEST, int);
+
 extern void fprintf_symbol_filtered (struct ui_file *, char *,
                                     enum language, int);
 
@@ -520,11 +562,19 @@ extern void symbol_file_command (char *, int);
 /* Remote targets may wish to use this as their load function.  */
 extern void generic_load (char *name, int from_tty);
 
-/* Summarise a download */
+/* Report on STREAM the performance of memory transfer operation,
+   such as 'load'. 
+   DATA_COUNT is the number of bytes transferred.
+   WRITE_COUNT is the number of separate write operations, or 0,
+   if that information is not available.
+   START_TIME is the time at which an operation was started.
+   END_TIME is the time at which an operation ended.  */
+struct timeval;
 extern void print_transfer_performance (struct ui_file *stream,
                                        unsigned long data_count,
                                        unsigned long write_count,
-                                       unsigned long time_count);
+                                       const struct timeval *start_time,
+                                       const struct timeval *end_time);
 
 /* From top.c */
 
@@ -559,12 +609,15 @@ extern int build_address_symbolic (CORE_ADDR addr,
                                   int *line,   
                                   int *unmapped);
 
-extern void print_address_numeric (CORE_ADDR, int, struct ui_file *);
+extern void deprecated_print_address_numeric (CORE_ADDR, int, struct ui_file *);
 
 extern void print_address (CORE_ADDR, struct ui_file *);
 
 /* From source.c */
 
+#define OPF_TRY_CWD_FIRST     0x01
+#define OPF_SEARCH_IN_PATH    0x02
+
 extern int openp (const char *, int, const char *, int, int, char **);
 
 extern int source_full_path_of (char *, char **);
@@ -575,14 +628,14 @@ extern void add_path (char *, char **, int);
 
 extern void directory_command (char *, int);
 
+extern void directory_switch (char *, int);
+
 extern char *source_path;
 
 extern void init_source_path (void);
 
 extern void init_last_source_visited (void);
 
-extern char *symtab_to_filename (struct symtab *);
-
 /* From exec.c */
 
 extern void exec_set_section_offsets (bfd_signed_vma text_off,
@@ -603,22 +656,16 @@ enum lval_type
   {
     /* Not an lval. */
     not_lval,
-    /* In memory.  Could be a saved register.  */
+    /* In memory.  */
     lval_memory,
-    /* In a register.  */
+    /* In a register.  Registers are relative to a frame.  */
     lval_register,
     /* In a gdb internal variable.  */
     lval_internalvar,
     /* Part of a gdb internal variable (structure field).  */
-    lval_internalvar_component,
-    /* In a register series in a frame not the current one, which may have been
-       partially saved or saved in different places (otherwise would be
-       lval_register or lval_memory).  */
-    lval_reg_frame_relative
+    lval_internalvar_component
   };
 
-struct frame_info;
-
 /* Control types for commands */
 
 enum misc_command_type
@@ -636,6 +683,7 @@ enum command_control_type
     continue_control,
     while_control,
     if_control,
+    commands_control,
     invalid_control
   };
 
@@ -750,14 +798,6 @@ typedef struct ptid ptid_t;
 
 \f
 
-/* Optional host machine definition.  Pure autoconf targets will not
-   need a "xm.h" file.  This will be a symlink to one of the xm-*.h
-   files, built by the `configure' script.  */
-
-#ifdef GDB_XM_FILE
-#include "xm.h"
-#endif
-
 /* Optional native machine support.  Non-native (and possibly pure
    multi-arch) targets do not need a "nm.h" file.  This will be a
    symlink to one of the nm-*.h files, built by the `configure'
@@ -767,29 +807,16 @@ typedef struct ptid ptid_t;
 #include "nm.h"
 #endif
 
-/* Optional target machine definition.  Pure multi-arch configurations
-   do not need a "tm.h" file.  This will be a symlink to one of the
-   tm-*.h files, built by the `configure' script.  */
-
-#ifdef GDB_TM_FILE
-#include "tm.h"
-#endif
-
-/* GDB_MULTI_ARCH is normally set by configure.in using information
-   from configure.tgt or the config/%/%.mt Makefile fragment.  Since
-   some targets have defined it in their "tm.h" file, delay providing
-   a default definition until after "tm.h" has been included.. */
-
-#ifndef GDB_MULTI_ARCH
-#define GDB_MULTI_ARCH 0
-#endif
-
-
-/* If the xm.h file did not define the mode string used to open the
-   files, assume that binary files are opened the same way as text
-   files */
+/* Assume that fopen accepts the letter "b" in the mode string.
+   It is demanded by ISO C9X, and should be supported on all
+   platforms that claim to have a standard-conforming C library.  On
+   true POSIX systems it will be ignored and have no effect.  There
+   may still be systems without a standard-conforming C library where
+   an ISO C9X compiler (GCC) is available.  Known examples are SunOS
+   4.x and 4.3BSD.  This assumption means these systems are no longer
+   supported.  */
 #ifndef FOPEN_RB
-#include "fopen-same.h"
+# include "fopen-bin.h"
 #endif
 
 /* Defaults for system-wide constants (if not defined by xm.h, we fake it).
@@ -834,31 +861,35 @@ extern int longest_to_int (LONGEST);
 
 extern char *savestring (const char *, size_t);
 
-extern char *msavestring (void *, const char *, size_t);
-
-extern char *mstrsave (void *, const char *);
-
-/* Robust versions of same.  Throw an internal error when no memory,
-   guard against stray NULL arguments. */
-extern void *xmmalloc (void *md, size_t size);
-extern void *xmrealloc (void *md, void *ptr, size_t size);
-extern void *xmcalloc (void *md, size_t number, size_t size);
-extern void xmfree (void *md, void *ptr);
-
 /* xmalloc(), xrealloc() and xcalloc() have already been declared in
    "libiberty.h". */
 extern void xfree (void *);
 
-/* Utility macros to allocate typed memory.  Avoids errors like
-   ``struct foo *foo = xmalloc (sizeof bar)'' and ``struct foo *foo =
-   (struct foo *) xmalloc (sizeof bar)''.  */
+/* Like xmalloc, but zero the memory.  */
+extern void *xzalloc (size_t);
+
+/* Utility macros to allocate typed memory.  Avoids errors like:
+   struct foo *foo = xmalloc (sizeof struct bar); and memset (foo,
+   sizeof (struct foo), 0).  */
+#define XZALLOC(TYPE) ((TYPE*) xzalloc (sizeof (TYPE)))
 #define XMALLOC(TYPE) ((TYPE*) xmalloc (sizeof (TYPE)))
 #define XCALLOC(NMEMB, TYPE) ((TYPE*) xcalloc ((NMEMB), sizeof (TYPE)))
 
 /* Like asprintf/vasprintf but get an internal_error if the call
    fails. */
 extern void xasprintf (char **ret, const char *format, ...) ATTR_FORMAT (printf, 2, 3);
-extern void xvasprintf (char **ret, const char *format, va_list ap);
+extern void xvasprintf (char **ret, const char *format, va_list ap)
+     ATTR_FORMAT (printf, 2, 0);
+
+/* Like asprintf and vasprintf, but return the string, throw an error
+   if no memory.  */
+extern char *xstrprintf (const char *format, ...) ATTR_FORMAT (printf, 1, 2);
+extern char *xstrvprintf (const char *format, va_list ap)
+     ATTR_FORMAT (printf, 1, 0);
+
+/* Like snprintf, but throw an error if the output buffer is too small.  */
+extern int xsnprintf (char *str, size_t size, const char *format, ...)
+     ATTR_FORMAT (printf, 3, 4);
 
 extern int parse_escape (char **);
 
@@ -874,112 +905,37 @@ extern char *quit_pre_print;
 
 extern char *warning_pre_print;
 
-extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
+extern NORETURN void verror (const char *fmt, va_list ap)
+     ATTR_NORETURN ATTR_FORMAT (printf, 1, 0);
 
 extern NORETURN void error (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
 
 extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
 
-/* Returns a freshly allocate buffer containing the last error
-   message.  */
-extern char *error_last_message (void);
+extern NORETURN void vfatal (const char *fmt, va_list ap)
+     ATTR_NORETURN ATTR_FORMAT (printf, 1, 0);
+
+extern NORETURN void fatal (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
 
 extern NORETURN void internal_verror (const char *file, int line,
-                                     const char *, va_list ap) ATTR_NORETURN;
+                                     const char *, va_list ap)
+     ATTR_NORETURN ATTR_FORMAT (printf, 3, 0);
 
 extern NORETURN void internal_error (const char *file, int line,
                                     const char *, ...) ATTR_NORETURN ATTR_FORMAT (printf, 3, 4);
 
 extern void internal_vwarning (const char *file, int line,
-                              const char *, va_list ap);
+                              const char *, va_list ap)
+     ATTR_FORMAT (printf, 3, 0);
 
 extern void internal_warning (const char *file, int line,
                              const char *, ...) ATTR_FORMAT (printf, 3, 4);
 
 extern NORETURN void nomem (long) ATTR_NORETURN;
 
-/* Reasons for calling throw_exception().  NOTE: all reason values
-   must be less than zero.  enum value 0 is reserved for internal use
-   as the return value from an initial setjmp().  The function
-   catch_exceptions() reserves values >= 0 as legal results from its
-   wrapped function.  */
-
-enum return_reason
-  {
-    /* User interrupt.  */
-    RETURN_QUIT = -2,
-    /* Any other error.  */
-    RETURN_ERROR
-  };
-
-#define        ALL_CLEANUPS    ((struct cleanup *)0)
-
-#define RETURN_MASK(reason)    (1 << (int)(-reason))
-#define RETURN_MASK_QUIT       RETURN_MASK (RETURN_QUIT)
-#define RETURN_MASK_ERROR      RETURN_MASK (RETURN_ERROR)
-#define RETURN_MASK_ALL                (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
-typedef int return_mask;
-
-/* Throw an exception of type RETURN_REASON.  Will execute a LONG JUMP
-   to the inner most containing exception handler established using
-   catch_exceptions() (or the legacy catch_errors()).
-
-   Code normally throws an exception using error() et.al.  For various
-   reaons, GDB also contains code that throws an exception directly.
-   For instance, the remote*.c targets contain CNTRL-C signal handlers
-   that propogate the QUIT event up the exception chain.  ``This could
-   be a good thing or a dangerous thing.'' -- the Existential Wombat.  */
-
-extern NORETURN void throw_exception (enum return_reason) ATTR_NORETURN;
-
-/* Call FUNC(UIOUT, FUNC_ARGS) but wrapped within an exception
-   handler.  If an exception (enum return_reason) is thrown using
-   throw_exception() than all cleanups installed since
-   catch_exceptions() was entered are invoked, the (-ve) exception
-   value is then returned by catch_exceptions.  If FUNC() returns
-   normally (with a postive or zero return value) then that value is
-   returned by catch_exceptions().  It is an internal_error() for
-   FUNC() to return a negative value.
-
-   For the period of the FUNC() call: UIOUT is installed as the output
-   builder; ERRSTRING is installed as the error/quit message; and a
-   new cleanup_chain is established.  The old values are restored
-   before catch_exceptions() returns.
-
-   FIXME; cagney/2001-08-13: The need to override the global UIOUT
-   builder variable should just go away.
-
-   This function superseeds catch_errors().
-
-   This function uses SETJMP() and LONGJUMP().  */
-
-struct ui_out;
-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);
-
-/* If CATCH_ERRORS_FTYPE throws an error, catch_errors() returns zero
-   otherwize the result from CATCH_ERRORS_FTYPE is returned. It is
-   probably useful for CATCH_ERRORS_FTYPE to always return a non-zero
-   value. It's unfortunate that, catch_errors() does not return an
-   indication of the exact exception that it caught - quit_flag might
-   help.
-
-   This function is superseeded by catch_exceptions().  */
-
-typedef int (catch_errors_ftype) (void *);
-extern int catch_errors (catch_errors_ftype *, void *, char *, return_mask);
-
-/* Template to catch_errors() that wraps calls to command
-   functions. */
-
-typedef void (catch_command_errors_ftype) (char *, int);
-extern int catch_command_errors (catch_command_errors_ftype *func, char *command, int from_tty, return_mask);
-
 extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2);
 
-extern void vwarning (const char *, va_list args);
+extern void vwarning (const char *, va_list args) ATTR_FORMAT (printf, 1, 0);
 
 /* List of known OS ABIs.  If you change this, make sure to update the
    table in osabi.c.  */
@@ -998,20 +954,19 @@ 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,
   GDB_OSABI_IRIX,
-  GDB_OSABI_LYNXOS,
   GDB_OSABI_INTERIX,
   GDB_OSABI_HPUX_ELF,
   GDB_OSABI_HPUX_SOM,
 
-  GDB_OSABI_ARM_EABI_V1,
-  GDB_OSABI_ARM_EABI_V2,
-  GDB_OSABI_ARM_APCS,
   GDB_OSABI_QNXNTO,
 
+  GDB_OSABI_CYGWIN,
+  GDB_OSABI_AIX,
+
   GDB_OSABI_INVALID            /* keep this last */
 };
 
@@ -1019,10 +974,6 @@ enum gdb_osabi
    Libiberty thingies are no longer declared here.  We include libiberty.h
    above, instead.  */
 
-#ifndef GETENV_PROVIDED
-extern char *getenv (const char *);
-#endif
-
 /* From other system libraries */
 
 #ifdef HAVE_STDDEF_H
@@ -1040,15 +991,6 @@ extern char *getenv (const char *);
 #endif
 
 
-/* We take the address of fclose later, but some stdio's forget
-   to declare this.  We can't always declare it since there's
-   no way to declare the parameters without upsetting some compiler
-   somewhere. */
-
-#ifndef FCLOSE_PROVIDED
-extern int fclose (FILE *);
-#endif
-
 #ifndef atof
 extern double atof (const char *);     /* X3.159-1989  4.10.1.1 */
 #endif
@@ -1076,35 +1018,11 @@ extern void *alloca ();
 
 /* Dynamic target-system-dependent parameters for GDB. */
 #include "gdbarch.h"
-#if (GDB_MULTI_ARCH == 0)
-/* Multi-arch targets _should_ be including "arch-utils.h" directly
-   into their *-tdep.c file.  This is a prop to help old non-
-   multi-arch targets to continue to compile. */
-#include "arch-utils.h"
-#endif
 
-/* FIXME: cagney/2003-03-01: Hack to prop up old targets while they
-   migrate to the overhauled register cache.
-
-   The problem is that some architectures specify different sized raw
-   and cooked (nee virtual) register sizes.  They shouldn't.  Instead,
-   all architectures should just implement a gdbarch_register_type().
-   That can be used to compute all needed register attributes.  While
-   waiting for the conversion, provide compatibility macros that keep
-   old code working.  */
-
-#ifdef MAX_REGISTER_RAW_SIZE
-#error MAX_REGISTER_RAW_SIZE defined
-#endif
-extern int legacy_max_register_raw_size (void);
-#define MAX_REGISTER_RAW_SIZE legacy_max_register_raw_size ()
-
-#ifdef MAX_REGISTER_VIRTUAL_SIZE
-#error MAX_REGISTER_VIRTUAL_SIZE defined
-#endif
-extern int legacy_max_register_virtual_size (void);
-#define MAX_REGISTER_VIRTUAL_SIZE legacy_max_register_virtual_size ()
+/* Maximum size of a register.  Something small, but large enough for
+   all known ISAs.  If it turns out to be too small, make it bigger.  */
 
+enum { MAX_REGISTER_SIZE = 16 };
 
 /* Static target-system-dependent parameters for GDB. */
 
@@ -1130,36 +1048,30 @@ extern int legacy_max_register_virtual_size (void);
    from byte/word byte order.  */
 
 #if !defined (BITS_BIG_ENDIAN)
-#define BITS_BIG_ENDIAN (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+#define BITS_BIG_ENDIAN (gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG)
 #endif
 
 /* In findvar.c.  */
 
-extern LONGEST extract_signed_integer (const void *, int);
+extern LONGEST extract_signed_integer (const gdb_byte *, int);
 
-extern ULONGEST extract_unsigned_integer (const void *, int);
+extern ULONGEST extract_unsigned_integer (const gdb_byte *, int);
 
-extern int extract_long_unsigned_integer (const void *, int, LONGEST *);
+extern int extract_long_unsigned_integer (const gdb_byte *, int, LONGEST *);
 
-extern CORE_ADDR extract_address (const void *, int);
+extern CORE_ADDR extract_typed_address (const gdb_byte *buf,
+                                       struct type *type);
 
-extern CORE_ADDR extract_typed_address (const void *buf, struct type *type);
+extern void store_signed_integer (gdb_byte *, int, LONGEST);
 
-extern void store_signed_integer (void *, int, LONGEST);
+extern void store_unsigned_integer (gdb_byte *, int, ULONGEST);
 
-extern void store_unsigned_integer (void *, int, ULONGEST);
-
-extern void store_address (void *, int, LONGEST);
-
-extern void store_typed_address (void *buf, struct type *type, CORE_ADDR addr);
+extern void store_typed_address (gdb_byte *buf, struct type *type,
+                                CORE_ADDR addr);
 
 \f
 /* From valops.c */
 
-extern CORE_ADDR push_bytes (CORE_ADDR, char *, int);
-
-extern CORE_ADDR push_word (CORE_ADDR, ULONGEST);
-
 extern int watchdog;
 
 /* Hooks for alternate command interfaces.  */
@@ -1168,57 +1080,60 @@ extern int watchdog;
 extern char *interpreter_p;
 
 /* If a given interpreter matches INTERPRETER_P then it should update
-   command_loop_hook and init_ui_hook with the per-interpreter
-   implementation. */
-/* FIXME: command_loop_hook and init_ui_hook should be moved here. */
+   deprecated_command_loop_hook and deprecated_init_ui_hook with the
+   per-interpreter implementation.  */
+/* FIXME: deprecated_command_loop_hook and deprecated_init_ui_hook
+   should be moved here. */
 
 struct target_waitstatus;
 struct cmd_list_element;
 
-/* Should the asynchronous variant of the interpreter (using the
-   event-loop) be enabled? */
-extern int event_loop_p;
-
-extern void (*init_ui_hook) (char *argv0);
-extern void (*command_loop_hook) (void);
-extern void (*show_load_progress) (const char *section,
-                                  unsigned long section_sent, 
-                                  unsigned long section_size, 
-                                  unsigned long total_sent, 
-                                  unsigned long total_size);
-extern void (*print_frame_info_listing_hook) (struct symtab * s,
-                                             int line, int stopline,
-                                             int noerror);
-extern struct frame_info *parse_frame_specification (char *frame_exp);
-extern int (*query_hook) (const char *, va_list);
-extern void (*warning_hook) (const char *, va_list);
-extern void (*flush_hook) (struct ui_file * stream);
-extern void (*create_breakpoint_hook) (struct breakpoint * b);
-extern void (*delete_breakpoint_hook) (struct breakpoint * bpt);
-extern void (*modify_breakpoint_hook) (struct breakpoint * bpt);
-extern void (*interactive_hook) (void);
-extern void (*registers_changed_hook) (void);
-extern void (*readline_begin_hook) (char *,...);
-extern char *(*readline_hook) (char *);
-extern void (*readline_end_hook) (void);
-extern void (*register_changed_hook) (int regno);
-extern void (*memory_changed_hook) (CORE_ADDR addr, int len);
-extern void (*context_hook) (int);
-extern ptid_t (*target_wait_hook) (ptid_t ptid,
+extern void (*deprecated_pre_add_symbol_hook) (const char *);
+extern void (*deprecated_post_add_symbol_hook) (void);
+extern void (*selected_frame_level_changed_hook) (int);
+extern int (*deprecated_ui_loop_hook) (int signo);
+extern void (*deprecated_init_ui_hook) (char *argv0);
+extern void (*deprecated_command_loop_hook) (void);
+extern void (*deprecated_show_load_progress) (const char *section,
+                                             unsigned long section_sent, 
+                                             unsigned long section_size, 
+                                             unsigned long total_sent, 
+                                             unsigned long total_size);
+extern void (*deprecated_print_frame_info_listing_hook) (struct symtab * s,
+                                                        int line, int stopline,
+                                                        int noerror);
+extern int (*deprecated_query_hook) (const char *, va_list)
+     ATTRIBUTE_FPTR_PRINTF(1,0);
+extern void (*deprecated_warning_hook) (const char *, va_list)
+     ATTRIBUTE_FPTR_PRINTF(1,0);
+extern void (*deprecated_flush_hook) (struct ui_file * stream);
+extern void (*deprecated_create_breakpoint_hook) (struct breakpoint * b);
+extern void (*deprecated_delete_breakpoint_hook) (struct breakpoint * bpt);
+extern void (*deprecated_modify_breakpoint_hook) (struct breakpoint * bpt);
+extern void (*deprecated_interactive_hook) (void);
+extern void (*deprecated_readline_begin_hook) (char *, ...)
+     ATTRIBUTE_FPTR_PRINTF_1;
+extern char *(*deprecated_readline_hook) (char *);
+extern void (*deprecated_readline_end_hook) (void);
+extern void (*deprecated_register_changed_hook) (int regno);
+extern void (*deprecated_memory_changed_hook) (CORE_ADDR addr, int len);
+extern void (*deprecated_context_hook) (int);
+extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
                                          struct target_waitstatus * status);
 
-extern void (*attach_hook) (void);
-extern void (*detach_hook) (void);
-extern void (*call_command_hook) (struct cmd_list_element * c,
-                                 char *cmd, int from_tty);
+extern void (*deprecated_attach_hook) (void);
+extern void (*deprecated_detach_hook) (void);
+extern void (*deprecated_call_command_hook) (struct cmd_list_element * c,
+                                            char *cmd, int from_tty);
 
-extern void (*set_hook) (struct cmd_list_element * c);
+extern void (*deprecated_set_hook) (struct cmd_list_element * c);
 
-extern NORETURN void (*error_hook) (void) ATTR_NORETURN;
+extern void (*deprecated_error_hook) (void);
 
-extern void (*error_begin_hook) (void);
+extern void (*deprecated_error_begin_hook) (void);
 
-extern int (*ui_load_progress_hook) (const char *section, unsigned long num);
+extern int (*deprecated_ui_load_progress_hook) (const char *section,
+                                               unsigned long num);
 
 
 /* Inhibit window interface if non-zero. */
@@ -1229,6 +1144,16 @@ extern int use_windows;
 /* FIXME, this doesn't work very well if host and executable
    filesystems conventions are different.  */
 
+#ifdef __MSDOS__
+# define CANT_FORK
+# define GLOBAL_CURDIR
+# define DIRNAME_SEPARATOR ';'
+#endif
+
+#if !defined (__CYGWIN__) && defined (_WIN32)
+# define DIRNAME_SEPARATOR ';'
+#endif
+
 #ifndef DIRNAME_SEPARATOR
 #define DIRNAME_SEPARATOR ':'
 #endif
@@ -1237,11 +1162,6 @@ extern int use_windows;
 #define SLASH_STRING "/"
 #endif
 
-#ifdef __MSDOS__
-# define CANT_FORK
-# define GLOBAL_CURDIR
-#endif
-
 /* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
    The name ``TIDGET'' is a historical accident.  Many uses of TIDGET
    in the code actually refer to a lightweight process id, i.e,
@@ -1271,4 +1191,41 @@ extern int use_windows;
 #define ISATTY(FP)     (isatty (fileno (FP)))
 #endif
 
+/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
+   power of 2).  Round up/down when necessary.  Examples of correct
+   use include:
+
+   addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
+   write_memory (addr, value, len);
+   addr += len;
+
+   and:
+
+   sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
+   write_memory (sp, value, len);
+
+   Note that uses such as:
+
+   write_memory (addr, value, len);
+   addr += align_up (len, 8);
+
+   and:
+
+   sp -= align_up (len, 8);
+   write_memory (sp, value, len);
+
+   are typically not correct as they don't ensure that the address (SP
+   or ADDR) is correctly aligned (relying on previous alignment to
+   keep things right).  This is also why the methods are called
+   "align_..." instead of "round_..." as the latter reads better with
+   this incorrect coding style.  */
+
+extern ULONGEST align_up (ULONGEST v, int n);
+extern ULONGEST align_down (ULONGEST v, int n);
+
+/* Allocation and deallocation functions for the libiberty hash table
+   which use obstacks.  */
+void *hashtab_obstack_allocate (void *data, size_t size, size_t count);
+void dummy_obstack_deallocate (void *object, void *data);
+
 #endif /* #ifndef DEFS_H */
This page took 0.034498 seconds and 4 git commands to generate.