Updated copyright notices for most files.
[deliverable/binutils-gdb.git] / gdb / defs.h
index ed8088fbc853ee38ee6aa6a9c459f904b8efadc4..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, 2004
+   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"
 
-/* For BFD64 and bfd_vma.  */
+/* 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.  */
+
 #include "bfd.h"
 
-/* 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.  */
+/* A byte from the program being debugged.  */
+typedef bfd_byte gdb_byte;
 
+/* 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
@@ -155,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;
@@ -195,9 +211,9 @@ enum language
     language_fortran,          /* Fortran */
     language_m2,               /* Modula-2 */
     language_asm,              /* Assembly language */
-    language_scm,              /* Scheme / Guile */
     language_pascal,           /* Pascal */
     language_ada,              /* Ada */
+    language_scm,              /* Guile Scheme */
     language_minimal,          /* All other languages, minimal support only */
     nr_languages
   };
@@ -330,13 +346,10 @@ extern int subset_compare (char *, char *);
 
 extern char *safe_strerror (int);
 
-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_run_cleanups (struct cleanup *);
 extern void do_exec_cleanups (struct cleanup *);
 extern void do_exec_error_cleanups (struct cleanup *);
 
@@ -372,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 *);
 
@@ -403,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.  */
@@ -498,6 +507,8 @@ 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''. */
@@ -512,6 +523,9 @@ 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);
@@ -548,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 */
 
@@ -587,7 +609,7 @@ 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 *);
 
@@ -606,6 +628,8 @@ 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);
@@ -659,6 +683,7 @@ enum command_control_type
     continue_control,
     while_control,
     if_control,
+    commands_control,
     invalid_control
   };
 
@@ -773,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'
@@ -790,14 +807,6 @@ 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
-
 /* 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
@@ -856,22 +865,31 @@ extern char *savestring (const char *, size_t);
    "libiberty.h". */
 extern void xfree (void *);
 
+/* 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*) memset (xmalloc (sizeof (TYPE)), 0, sizeof (TYPE)))
+#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);
+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 **);
 
@@ -887,29 +905,28 @@ 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_silent (const char *fmt, ...) ATTR_NORETURN ATTR_FORMAT (printf, 1, 2);
-
 extern NORETURN void error_stream (struct ui_file *) ATTR_NORETURN;
 
-/* Output arbitrary error message.  */
-extern void error_output_message (char *pre_print, char *msg);
-
-extern NORETURN void vfatal (const char *fmt, va_list ap) ATTR_NORETURN;
+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);
@@ -918,7 +935,7 @@ extern NORETURN void nomem (long) ATTR_NORETURN;
 
 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.  */
@@ -940,19 +957,15 @@ enum gdb_osabi
   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 */
 };
@@ -1035,32 +1048,30 @@ enum { MAX_REGISTER_SIZE = 16 };
    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_typed_address (const void *buf, struct type *type);
+extern CORE_ADDR extract_typed_address (const gdb_byte *buf,
+                                       struct type *type);
 
-extern void store_signed_integer (void *, int, LONGEST);
+extern void store_signed_integer (gdb_byte *, int, LONGEST);
 
-extern void store_unsigned_integer (void *, int, ULONGEST);
+extern void store_unsigned_integer (gdb_byte *, int, ULONGEST);
 
-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.  */
@@ -1091,16 +1102,17 @@ extern void (*deprecated_show_load_progress) (const char *section,
 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 (*deprecated_query_hook) (const char *, va_list);
-extern void (*deprecated_warning_hook) (const char *, va_list);
+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_registers_changed_hook) (void);
-extern void (*deprecated_readline_begin_hook) (char *,...);
+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);
@@ -1138,6 +1150,10 @@ extern int use_windows;
 # define DIRNAME_SEPARATOR ';'
 #endif
 
+#if !defined (__CYGWIN__) && defined (_WIN32)
+# define DIRNAME_SEPARATOR ';'
+#endif
+
 #ifndef DIRNAME_SEPARATOR
 #define DIRNAME_SEPARATOR ':'
 #endif
@@ -1207,4 +1223,9 @@ extern int use_windows;
 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.029064 seconds and 4 git commands to generate.