2004-09-12 Andrew Cagney <cagney@gnu.org>
[deliverable/binutils-gdb.git] / gdb / defs.h
index 66e5ff0b082a853b0ff68a36625db1cc118497e7..f7ffc97813efad8cc7fb8c799403e89202726cea 100644 (file)
@@ -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
+   1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
    Free Software Foundation, Inc.
 
    This file is part of GDB.
 #ifndef DEFS_H
 #define DEFS_H
 
-#include "config.h"            /* Generated by configure */
+#include "config.h"            /* Generated by configure.  */
+
 #include <stdio.h>
-#include <errno.h>             /* System call error return status */
+#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 */
+#include <sys/types.h>         /* For size_t.  */
 #endif
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
-/* Just in case they're not defined in stdio.h. */
+/* First include ansidecl.h so we can use the various macro definitions
+   here and in all subsequent file inclusions.  */
+
+#include "ansidecl.h"
+
+#include "gdb_locale.h"
+
+/* For ``enum target_signal''.  */
+#include "gdb/signals.h"
+
+/* Just in case they're not defined in stdio.h.  */
 
 #ifndef SEEK_SET
 #define SEEK_SET 0
 #define SEEK_CUR 1
 #endif
 
-/* First include ansidecl.h so we can use the various macro definitions
-   here and in all subsequent file inclusions.  */
-
-#include "ansidecl.h"
-
-#include <stdarg.h>            /* for va_list */
+#include <stdarg.h>            /* For va_list.  */
 
 #include "libiberty.h"
 
-#include "progress.h"
-
 /* For BFD64 and bfd_vma.  */
 #include "bfd.h"
 
-
-/* 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
@@ -148,25 +129,32 @@ 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.  */
 
-/* The character GNU C++ uses to build identifiers that must be unique from
-   the program's identifiers (such as $this and $$vptr).  */
-#define CPLUS_MARKER '$'       /* May be overridden to '.' for SysV */
+#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);
 
-/* use tui interface if non-zero */
-extern int tui_version;
-
 /* enable xdb commands if set */
 extern int xdb_commands;
 
 /* enable dbx commands if set */
 extern int dbx_commands;
 
+/* System root path, used to find libraries etc.  */
+extern char *gdb_sysroot;
+
 extern int quit_flag;
 extern int immediate_quit;
 extern int sevenbit_strings;
@@ -187,8 +175,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
 
@@ -203,13 +190,15 @@ enum language
     language_auto,             /* Placeholder for automatic setting */
     language_c,                        /* C */
     language_cplus,            /* C++ */
+    language_objc,             /* Objective-C */
     language_java,             /* Java */
-    language_chill,            /* Chill */
     language_fortran,          /* Fortran */
     language_m2,               /* Modula-2 */
     language_asm,              /* Assembly language */
     language_scm,              /* Scheme / Guile */
-    language_pascal            /* Pascal */
+    language_pascal,           /* Pascal */
+    language_minimal,          /* All other languages, minimal support only */
+    nr_languages
   };
 
 enum precision_type
@@ -219,212 +208,40 @@ enum precision_type
     unspecified_precision
   };
 
-/* The numbering of these signals is chosen to match traditional unix
-   signals (insofar as various unices use the same numbers, anyway).
-   It is also the numbering of the GDB remote protocol.  Other remote
-   protocols, if they use a different numbering, should make sure to
-   translate appropriately.
-
-   Since these numbers have actually made it out into other software
-   (stubs, etc.), you mustn't disturb the assigned numbering.  If you
-   need to add new signals here, add them to the end of the explicitly
-   numbered signals.
-
-   This is based strongly on Unix/POSIX signals for several reasons:
-   (1) This set of signals represents a widely-accepted attempt to
-   represent events of this sort in a portable fashion, (2) we want a
-   signal to make it from wait to child_wait to the user intact, (3) many
-   remote protocols use a similar encoding.  However, it is
-   recognized that this set of signals has limitations (such as not
-   distinguishing between various kinds of SIGSEGV, or not
-   distinguishing hitting a breakpoint from finishing a single step).
-   So in the future we may get around this either by adding additional
-   signals for breakpoint, single-step, etc., or by adding signal
-   codes; the latter seems more in the spirit of what BSD, System V,
-   etc. are doing to address these issues.  */
-
-/* For an explanation of what each signal means, see
-   target_signal_to_string.  */
-
-enum target_signal
-  {
-    /* Used some places (e.g. stop_signal) to record the concept that
-       there is no signal.  */
-    TARGET_SIGNAL_0 = 0,
-    TARGET_SIGNAL_FIRST = 0,
-    TARGET_SIGNAL_HUP = 1,
-    TARGET_SIGNAL_INT = 2,
-    TARGET_SIGNAL_QUIT = 3,
-    TARGET_SIGNAL_ILL = 4,
-    TARGET_SIGNAL_TRAP = 5,
-    TARGET_SIGNAL_ABRT = 6,
-    TARGET_SIGNAL_EMT = 7,
-    TARGET_SIGNAL_FPE = 8,
-    TARGET_SIGNAL_KILL = 9,
-    TARGET_SIGNAL_BUS = 10,
-    TARGET_SIGNAL_SEGV = 11,
-    TARGET_SIGNAL_SYS = 12,
-    TARGET_SIGNAL_PIPE = 13,
-    TARGET_SIGNAL_ALRM = 14,
-    TARGET_SIGNAL_TERM = 15,
-    TARGET_SIGNAL_URG = 16,
-    TARGET_SIGNAL_STOP = 17,
-    TARGET_SIGNAL_TSTP = 18,
-    TARGET_SIGNAL_CONT = 19,
-    TARGET_SIGNAL_CHLD = 20,
-    TARGET_SIGNAL_TTIN = 21,
-    TARGET_SIGNAL_TTOU = 22,
-    TARGET_SIGNAL_IO = 23,
-    TARGET_SIGNAL_XCPU = 24,
-    TARGET_SIGNAL_XFSZ = 25,
-    TARGET_SIGNAL_VTALRM = 26,
-    TARGET_SIGNAL_PROF = 27,
-    TARGET_SIGNAL_WINCH = 28,
-    TARGET_SIGNAL_LOST = 29,
-    TARGET_SIGNAL_USR1 = 30,
-    TARGET_SIGNAL_USR2 = 31,
-    TARGET_SIGNAL_PWR = 32,
-    /* Similar to SIGIO.  Perhaps they should have the same number.  */
-    TARGET_SIGNAL_POLL = 33,
-    TARGET_SIGNAL_WIND = 34,
-    TARGET_SIGNAL_PHONE = 35,
-    TARGET_SIGNAL_WAITING = 36,
-    TARGET_SIGNAL_LWP = 37,
-    TARGET_SIGNAL_DANGER = 38,
-    TARGET_SIGNAL_GRANT = 39,
-    TARGET_SIGNAL_RETRACT = 40,
-    TARGET_SIGNAL_MSG = 41,
-    TARGET_SIGNAL_SOUND = 42,
-    TARGET_SIGNAL_SAK = 43,
-    TARGET_SIGNAL_PRIO = 44,
-    TARGET_SIGNAL_REALTIME_33 = 45,
-    TARGET_SIGNAL_REALTIME_34 = 46,
-    TARGET_SIGNAL_REALTIME_35 = 47,
-    TARGET_SIGNAL_REALTIME_36 = 48,
-    TARGET_SIGNAL_REALTIME_37 = 49,
-    TARGET_SIGNAL_REALTIME_38 = 50,
-    TARGET_SIGNAL_REALTIME_39 = 51,
-    TARGET_SIGNAL_REALTIME_40 = 52,
-    TARGET_SIGNAL_REALTIME_41 = 53,
-    TARGET_SIGNAL_REALTIME_42 = 54,
-    TARGET_SIGNAL_REALTIME_43 = 55,
-    TARGET_SIGNAL_REALTIME_44 = 56,
-    TARGET_SIGNAL_REALTIME_45 = 57,
-    TARGET_SIGNAL_REALTIME_46 = 58,
-    TARGET_SIGNAL_REALTIME_47 = 59,
-    TARGET_SIGNAL_REALTIME_48 = 60,
-    TARGET_SIGNAL_REALTIME_49 = 61,
-    TARGET_SIGNAL_REALTIME_50 = 62,
-    TARGET_SIGNAL_REALTIME_51 = 63,
-    TARGET_SIGNAL_REALTIME_52 = 64,
-    TARGET_SIGNAL_REALTIME_53 = 65,
-    TARGET_SIGNAL_REALTIME_54 = 66,
-    TARGET_SIGNAL_REALTIME_55 = 67,
-    TARGET_SIGNAL_REALTIME_56 = 68,
-    TARGET_SIGNAL_REALTIME_57 = 69,
-    TARGET_SIGNAL_REALTIME_58 = 70,
-    TARGET_SIGNAL_REALTIME_59 = 71,
-    TARGET_SIGNAL_REALTIME_60 = 72,
-    TARGET_SIGNAL_REALTIME_61 = 73,
-    TARGET_SIGNAL_REALTIME_62 = 74,
-    TARGET_SIGNAL_REALTIME_63 = 75,
-
-    /* Used internally by Solaris threads.  See signal(5) on Solaris.  */
-    TARGET_SIGNAL_CANCEL = 76,
-
-    /* Yes, this pains me, too.  But LynxOS didn't have SIG32, and now
-       Linux does, and we can't disturb the numbering, since it's part
-       of the remote protocol.  Note that in some GDB's
-       TARGET_SIGNAL_REALTIME_32 is number 76.  */
-    TARGET_SIGNAL_REALTIME_32,
-    /* Yet another pain, IRIX 6 has SIG64. */
-    TARGET_SIGNAL_REALTIME_64,
-    /* Yet another pain, Linux/MIPS might go up to 128. */
-    TARGET_SIGNAL_REALTIME_65,
-    TARGET_SIGNAL_REALTIME_66,
-    TARGET_SIGNAL_REALTIME_67,
-    TARGET_SIGNAL_REALTIME_68,
-    TARGET_SIGNAL_REALTIME_69,
-    TARGET_SIGNAL_REALTIME_70,
-    TARGET_SIGNAL_REALTIME_71,
-    TARGET_SIGNAL_REALTIME_72,
-    TARGET_SIGNAL_REALTIME_73,
-    TARGET_SIGNAL_REALTIME_74,
-    TARGET_SIGNAL_REALTIME_75,
-    TARGET_SIGNAL_REALTIME_76,
-    TARGET_SIGNAL_REALTIME_77,
-    TARGET_SIGNAL_REALTIME_78,
-    TARGET_SIGNAL_REALTIME_79,
-    TARGET_SIGNAL_REALTIME_80,
-    TARGET_SIGNAL_REALTIME_81,
-    TARGET_SIGNAL_REALTIME_82,
-    TARGET_SIGNAL_REALTIME_83,
-    TARGET_SIGNAL_REALTIME_84,
-    TARGET_SIGNAL_REALTIME_85,
-    TARGET_SIGNAL_REALTIME_86,
-    TARGET_SIGNAL_REALTIME_87,
-    TARGET_SIGNAL_REALTIME_88,
-    TARGET_SIGNAL_REALTIME_89,
-    TARGET_SIGNAL_REALTIME_90,
-    TARGET_SIGNAL_REALTIME_91,
-    TARGET_SIGNAL_REALTIME_92,
-    TARGET_SIGNAL_REALTIME_93,
-    TARGET_SIGNAL_REALTIME_94,
-    TARGET_SIGNAL_REALTIME_95,
-    TARGET_SIGNAL_REALTIME_96,
-    TARGET_SIGNAL_REALTIME_97,
-    TARGET_SIGNAL_REALTIME_98,
-    TARGET_SIGNAL_REALTIME_99,
-    TARGET_SIGNAL_REALTIME_100,
-    TARGET_SIGNAL_REALTIME_101,
-    TARGET_SIGNAL_REALTIME_102,
-    TARGET_SIGNAL_REALTIME_103,
-    TARGET_SIGNAL_REALTIME_104,
-    TARGET_SIGNAL_REALTIME_105,
-    TARGET_SIGNAL_REALTIME_106,
-    TARGET_SIGNAL_REALTIME_107,
-    TARGET_SIGNAL_REALTIME_108,
-    TARGET_SIGNAL_REALTIME_109,
-    TARGET_SIGNAL_REALTIME_110,
-    TARGET_SIGNAL_REALTIME_111,
-    TARGET_SIGNAL_REALTIME_112,
-    TARGET_SIGNAL_REALTIME_113,
-    TARGET_SIGNAL_REALTIME_114,
-    TARGET_SIGNAL_REALTIME_115,
-    TARGET_SIGNAL_REALTIME_116,
-    TARGET_SIGNAL_REALTIME_117,
-    TARGET_SIGNAL_REALTIME_118,
-    TARGET_SIGNAL_REALTIME_119,
-    TARGET_SIGNAL_REALTIME_120,
-    TARGET_SIGNAL_REALTIME_121,
-    TARGET_SIGNAL_REALTIME_122,
-    TARGET_SIGNAL_REALTIME_123,
-    TARGET_SIGNAL_REALTIME_124,
-    TARGET_SIGNAL_REALTIME_125,
-    TARGET_SIGNAL_REALTIME_126,
-    TARGET_SIGNAL_REALTIME_127,
-
-#if defined(MACH) || defined(__MACH__)
-    /* Mach exceptions */
-    TARGET_EXC_BAD_ACCESS,
-    TARGET_EXC_BAD_INSTRUCTION,
-    TARGET_EXC_ARITHMETIC,
-    TARGET_EXC_EMULATION,
-    TARGET_EXC_SOFTWARE,
-    TARGET_EXC_BREAKPOINT,
-#endif
-    TARGET_SIGNAL_INFO,
-
-    /* Some signal we don't know about.  */
-    TARGET_SIGNAL_UNKNOWN,
-
-    /* Use whatever signal we use when one is not specifically specified
-       (for passing to proceed and so on).  */
-    TARGET_SIGNAL_DEFAULT,
-
-    /* Last and unused enum value, for sizing arrays, etc.  */
-    TARGET_SIGNAL_LAST
-  };
+/* A generic, not quite boolean, enumeration.  */
+enum auto_boolean
+{
+  AUTO_BOOLEAN_TRUE,
+  AUTO_BOOLEAN_FALSE,
+  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.)
@@ -439,8 +256,8 @@ enum target_signal
 struct cleanup
   {
     struct cleanup *next;
-    void (*function) (PTR);
-    PTR arg;
+    void (*function) (void *);
+    void *arg;
   };
 
 
@@ -481,22 +298,24 @@ 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;
+struct frame_info;
 
 /* 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);
-
-/* From ch-lang.c, for the moment. (FIXME) */
-
-extern char *chill_demangle (const char *);
+extern int inside_entry_func (struct frame_info *this_frame);
 
 /* From utils.c */
 
@@ -506,17 +325,18 @@ extern void notice_quit (void);
 
 extern int strcmp_iw (const char *, const char *);
 
+extern int strcmp_iw_ordered (const char *, const char *);
+
+extern int streq (const char *, const char *);
+
 extern int subset_compare (char *, char *);
 
 extern char *safe_strerror (int);
 
-extern void init_malloc (void *);
-
 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 *);
@@ -540,6 +360,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);
@@ -568,14 +392,17 @@ extern void null_cleanup (void *);
 
 extern int myread (int, char *, int);
 
-extern int query (char *, ...) ATTR_FORMAT (printf, 1, 2);
+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);
 
-extern CORE_ADDR host_pointer_to_address (void *ptr);
-extern void *address_to_host_pointer (CORE_ADDR addr);
-
 extern char *gdb_realpath (const char *);
+extern char *xfullpath (const char *);
+
+extern unsigned long gnu_debuglink_crc32 (unsigned long crc,
+                                          unsigned char *buf, size_t len);
 
 /* From demangle.c */
 
@@ -587,7 +414,6 @@ struct type;
 typedef int (use_struct_convention_fn) (int gcc_p, struct type * value_type);
 extern use_struct_convention_fn generic_use_struct_convention;
 
-typedef unsigned char *(breakpoint_from_pc_fn) (CORE_ADDR * pcptr, int *lenptr);
 \f
 /* Annotation stuff.  */
 
@@ -601,22 +427,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"
 
@@ -639,6 +465,8 @@ extern void puts_filtered (const char *);
 
 extern void puts_unfiltered (const char *);
 
+extern void puts_filtered_tabular (char *string, int width, int right);
+
 extern void puts_debug (char *prefix, char *string, char *suffix);
 
 extern void vprintf_filtered (const char *, va_list) ATTR_FORMAT (printf, 1, 0);
@@ -674,7 +502,7 @@ extern void fputstr_unfiltered (const char *str, int quotr, struct ui_file * str
 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
@@ -687,19 +515,26 @@ extern char *paddr_d (LONGEST 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
    string_to_core_addr().  */
 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);
 
-extern NORETURN void perror_with_name (char *) ATTR_NORETURN;
+extern NORETURN void perror_with_name (const char *) ATTR_NORETURN;
 
-extern void print_sys_errmsg (char *, int);
+extern void print_sys_errmsg (const char *, int);
 
 /* From regex.c or libc.  BSD 4.4 declares this with the argument type as
    "const char *" in unistd.h, so we can't declare the argument
@@ -728,6 +563,8 @@ extern char *skip_quoted (char *);
 
 extern char *gdb_readline (char *);
 
+extern char *gdb_readline_wrapper (char *);
+
 extern char *command_line_input (char *, int, char *);
 
 extern void print_prompt (void);
@@ -757,17 +594,24 @@ 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 **);
 
 extern void mod_path (char *, char **);
 
+extern void add_path (char *, char **, int);
+
 extern void directory_command (char *, int);
 
+extern char *source_path;
+
 extern void init_source_path (void);
 
-extern char *symtab_to_filename (struct symtab *);
+extern void init_last_source_visited (void);
 
 /* From exec.c */
 
@@ -782,10 +626,6 @@ extern void exec_set_find_memory_regions (int (*) (int (*) (CORE_ADDR,
                                                            void *),
                                                   void *));
 
-/* From findvar.c */
-
-extern int read_relative_register_raw_bytes (int, char *);
-
 /* Possible lvalue types.  Like enum language, this should be in
    value.h, but needs to be here for the same reason. */
 
@@ -807,12 +647,6 @@ enum lval_type
     lval_reg_frame_relative
   };
 
-struct frame_info;
-
-/* From readline (but not in any readline .h files).  */
-
-extern char *tilde_expand (char *);
-
 /* Control types for commands */
 
 enum misc_command_type
@@ -969,16 +803,6 @@ typedef struct ptid ptid_t;
 #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 */
@@ -986,8 +810,6 @@ typedef struct ptid ptid_t;
 #include "fopen-same.h"
 #endif
 
-#define CONST_PTR const
-
 /* Defaults for system-wide constants (if not defined by xm.h, we fake it).
    FIXME: Assumes 2's complement arithmetic */
 
@@ -1034,22 +856,27 @@ 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 struct bar); and memset (foo,
+   sizeof (struct foo), 0).  */
+#define XZALLOC(TYPE) ((TYPE*) memset (xmalloc (sizeof (TYPE)), 0, 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);
 
+/* 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);
+
 extern int parse_escape (char **);
 
 /* Message to be printed before the error message, when an error occurs.  */
@@ -1066,23 +893,37 @@ extern char *warning_pre_print;
 
 extern NORETURN void verror (const char *fmt, va_list ap) ATTR_NORETURN;
 
-extern NORETURN void error (const char *fmt, ...) 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.  */
+extern void error_init (void);
+
 /* Returns a freshly allocate buffer containing the last error
    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;
 
 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);
+
+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 return_to_top_level.  NOTE: all reason values
+/* 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
@@ -1105,25 +946,20 @@ enum return_reason
 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()).
+   to the inner most containing exception handler established using
+   catch_exceptions() (or the legacy catch_errors()).
 
-   Useful when a section of code that caught an exception finds it
-   needs to repropagate that exception up the call chain.
+   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.  */
 
-   The name return_to_top_level() dates back to a time when GDB had
-   only one exception handler installed at the top level.  This really
-   did return to the top level.  The name should probably be changed.
-
-   NOTE: Some sections of code are using error_begin() in conjunction
-   with return_to_top_level() to throw the initial exception.  That
-   code should, instead, use either error() or error_string().  */
-
-extern NORETURN void return_to_top_level (enum return_reason) ATTR_NORETURN;
+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
-   return_to_top_level() than all cleanups installed since
+   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
@@ -1135,6 +971,11 @@ extern NORETURN void return_to_top_level (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.
 
@@ -1147,6 +988,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
@@ -1157,8 +1003,8 @@ extern int catch_exceptions (struct ui_out *uiout,
 
    This function is superseeded by catch_exceptions().  */
 
-typedef int (catch_errors_ftype) (PTR);
-extern int catch_errors (catch_errors_ftype *, PTR, char *, return_mask);
+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. */
@@ -1166,20 +1012,51 @@ extern int catch_errors (catch_errors_ftype *, PTR, char *, return_mask);
 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_begin (void);
-
 extern void warning (const char *, ...) ATTR_FORMAT (printf, 1, 2);
 
 extern void vwarning (const char *, va_list args);
 
+/* List of known OS ABIs.  If you change this, make sure to update the
+   table in osabi.c.  */
+enum gdb_osabi
+{
+  GDB_OSABI_UNINITIALIZED = -1, /* For struct gdbarch_info.  */
+
+  GDB_OSABI_UNKNOWN = 0,       /* keep this zero */
+
+  GDB_OSABI_SVR4,
+  GDB_OSABI_HURD,
+  GDB_OSABI_SOLARIS,
+  GDB_OSABI_OSF1,
+  GDB_OSABI_LINUX,
+  GDB_OSABI_FREEBSD_AOUT,
+  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_INVALID            /* keep this last */
+};
+
 /* Global functions from other, non-gdb GNU thingies.
    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
@@ -1197,15 +1074,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
@@ -1233,12 +1101,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
+
+/* 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. */
 
@@ -1269,22 +1136,18 @@ extern void *alloca ();
 
 /* In findvar.c.  */
 
-extern LONGEST extract_signed_integer (void *, int);
+extern LONGEST extract_signed_integer (const void *, int);
 
-extern ULONGEST extract_unsigned_integer (void *, int);
+extern ULONGEST extract_unsigned_integer (const void *, int);
 
-extern int extract_long_unsigned_integer (void *, int, LONGEST *);
+extern int extract_long_unsigned_integer (const void *, int, LONGEST *);
 
-extern CORE_ADDR extract_address (void *, int);
-
-extern CORE_ADDR extract_typed_address (void *buf, struct type *type);
+extern CORE_ADDR extract_typed_address (const void *buf, struct type *type);
 
 extern void store_signed_integer (void *, int, LONGEST);
 
 extern void store_unsigned_integer (void *, int, ULONGEST);
 
-extern void store_address (void *, int, LONGEST);
-
 extern void store_typed_address (void *buf, struct type *type, CORE_ADDR addr);
 
 \f
@@ -1302,57 +1165,66 @@ 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);
+   event-loop) be enabled?  */
+/* NOTE: cagney/2004-06-10: GDB changed to always uses the event-loop.
+   A follow-on cleanup is to eliminate references to
+   "event_loop_p".  */
+#define event_loop_p 1
+
+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 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 int (*deprecated_query_hook) (const char *, va_list);
+extern void (*deprecated_warning_hook) (const char *, va_list);
+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_registers_changed_hook) (void);
+extern void (*deprecated_readline_begin_hook) (char *,...);
+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. */
@@ -1405,4 +1277,36 @@ 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);
+
 #endif /* #ifndef DEFS_H */
This page took 0.0369660000000001 seconds and 4 git commands to generate.