dwarf2read: Replace copy_string usages with savestring
[deliverable/binutils-gdb.git] / gdb / defs.h
index 5088390e2ca78bf21f102419833c088866e18e20..af9e32e53236ca2cd528c32d025dace3a761e09a 100644 (file)
@@ -1,7 +1,7 @@
 /* *INDENT-OFF* */ /* ATTRIBUTE_PRINTF confuses indent, avoid running it
                      for now.  */
 /* Basic, host-specific, and target-specific definitions for GDB.
-   Copyright (C) 1986-2016 Free Software Foundation, Inc.
+   Copyright (C) 1986-2017 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -53,6 +53,7 @@
 #include "ui-file.h"
 
 #include "host-defs.h"
+#include "common/enum-flags.h"
 
 /* Scope types enumerator.  List the types of scopes the compiler will
    accept.  */
@@ -81,6 +82,11 @@ enum compile_i_scope_types
     COMPILE_I_PRINT_VALUE_SCOPE,
   };
 
+
+template<typename T>
+using RequireLongest = gdb::Requires<gdb::Or<std::is_same<T, LONGEST>,
+                                            std::is_same<T, ULONGEST>>>;
+
 /* Just in case they're not defined in stdio.h.  */
 
 #ifndef SEEK_SET
@@ -102,13 +108,6 @@ enum compile_i_scope_types
 
 #include "hashtab.h"
 
-#ifndef min
-#define min(a, b) ((a) < (b) ? (a) : (b))
-#endif
-#ifndef max
-#define max(a, b) ((a) > (b) ? (a) : (b))
-#endif
-
 /* * Enable dbx commands if set.  */
 extern int dbx_commands;
 
@@ -202,9 +201,10 @@ extern void quit_serial_event_clear (void);
    Note that there's ambiguity between the mangling schemes of some of
    these languages, so some symbols could be successfully demangled by
    several languages.  For that reason, the constants here are sorted
-   in the order we'll attempt demangling them.  For example: Java and
-   Rust use C++ mangling, so must come after C++; Ada must come last
-   (see ada_sniff_from_mangled_name).  */
+   in the order we'll attempt demangling them.  For example: Rust uses
+   C++ mangling, so must come after C++; Ada must come last (see
+   ada_sniff_from_mangled_name).  (Keep this order in sync with the
+   'languages' array in language.c.)  */
 
 enum language
   {
@@ -213,7 +213,6 @@ enum language
     language_c,                        /* C */
     language_objc,             /* Objective-C */
     language_cplus,            /* C++ */
-    language_java,             /* Java */
     language_d,                        /* D */
     language_go,               /* Go */
     language_fortran,          /* Fortran */
@@ -310,27 +309,13 @@ extern void symbol_file_command (char *, int);
 /* * Remote targets may wish to use this as their load function.  */
 extern void generic_load (const char *name, int from_tty);
 
-/* * Report on STREAM the performance of memory transfer operation,
-   such as 'load'.
-   @param DATA_COUNT is the number of bytes transferred.
-   @param WRITE_COUNT is the number of separate write operations, or 0,
-   if that information is not available.
-   @param START_TIME is the time at which an operation was started.
-   @param 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,
-                                       const struct timeval *start_time,
-                                       const struct timeval *end_time);
-
 /* From top.c */
 
 typedef void initialize_file_ftype (void);
 
 extern char *gdb_readline_wrapper (const char *);
 
-extern char *command_line_input (const char *, int, char *);
+extern char *command_line_input (const char *, int, const char *);
 
 extern void print_prompt (void);
 
@@ -345,7 +330,8 @@ extern int info_verbose;
 extern void set_next_address (struct gdbarch *, CORE_ADDR);
 
 extern int print_address_symbolic (struct gdbarch *, CORE_ADDR,
-                                  struct ui_file *, int, char *);
+                                  struct ui_file *, int,
+                                  const char *);
 
 extern int build_address_symbolic (struct gdbarch *,
                                   CORE_ADDR addr,
@@ -414,66 +400,6 @@ enum lval_type
     lval_computed
   };
 
-/* * Control types for commands.  */
-
-enum misc_command_type
-  {
-    ok_command,
-    end_command,
-    else_command,
-    nop_command
-  };
-
-enum command_control_type
-  {
-    simple_control,
-    break_control,
-    continue_control,
-    while_control,
-    if_control,
-    commands_control,
-    python_control,
-    compile_control,
-    guile_control,
-    while_stepping_control,
-    invalid_control
-  };
-
-/* * Structure for saved commands lines (for breakpoints, defined
-   commands, etc).  */
-
-struct command_line
-  {
-    struct command_line *next;
-    char *line;
-    enum command_control_type control_type;
-    union
-      {
-       struct
-         {
-           enum compile_i_scope_types scope;
-           void *scope_data;
-         }
-       compile;
-      }
-    control_u;
-    /* * The number of elements in body_list.  */
-    int body_count;
-    /* * For composite commands, the nested lists of commands.  For
-       example, for "if" command this will contain the then branch and
-       the else branch, if that is available.  */
-    struct command_line **body_list;
-  };
-
-extern struct command_line *read_command_lines (char *, int, int,
-                                               void (*)(char *, void *),
-                                               void *);
-extern struct command_line *read_command_lines_1 (char * (*) (void), int,
-                                                 void (*)(char *, void *),
-                                                 void *);
-
-extern void free_command_lines (struct command_line **);
-
 /* * Parameters of the "info proc" command.  */
 
 enum info_proc_what
@@ -595,16 +521,11 @@ enum gdb_osabi
   GDB_OSABI_HURD,
   GDB_OSABI_SOLARIS,
   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_FREEBSD,
+  GDB_OSABI_NETBSD,
+  GDB_OSABI_OPENBSD,
   GDB_OSABI_WINCE,
   GDB_OSABI_GO32,
-  GDB_OSABI_IRIX,
-  GDB_OSABI_HPUX_ELF,
-  GDB_OSABI_HPUX_SOM,
   GDB_OSABI_QNXNTO,
   GDB_OSABI_CYGWIN,
   GDB_OSABI_AIX,
@@ -619,15 +540,24 @@ enum gdb_osabi
   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.  */
+/* Enumerate the requirements a symbol has in order to be evaluated.
+   These are listed in order of "strength" -- a later entry subsumes
+   earlier ones.  This fine-grained distinction is important because
+   it allows for the evaluation of a TLS symbol during unwinding --
+   when unwinding one has access to registers, but not the frame
+   itself, because that is being constructed.  */
+
+enum symbol_needs_kind
+{
+  /* No special requirements -- just memory.  */
+  SYMBOL_NEEDS_NONE,
 
-/* From other system libraries */
+  /* The symbol needs registers.  */
+  SYMBOL_NEEDS_REGISTERS,
 
-#ifndef atof
-extern double atof (const char *);     /* X3.159-1989  4.10.1.1 */
-#endif
+  /* The symbol needs a frame.  */
+  SYMBOL_NEEDS_FRAME
+};
 
 /* Dynamic target-system-dependent parameters for GDB.  */
 #include "gdbarch.h"
@@ -639,11 +569,22 @@ enum { MAX_REGISTER_SIZE = 64 };
 
 /* In findvar.c.  */
 
-extern LONGEST extract_signed_integer (const gdb_byte *, int,
-                                      enum bfd_endian);
+template<typename T, typename = RequireLongest<T>>
+T extract_integer (const gdb_byte *addr, int len, enum bfd_endian byte_order);
+
+static inline LONGEST
+extract_signed_integer (const gdb_byte *addr, int len,
+                       enum bfd_endian byte_order)
+{
+  return extract_integer<LONGEST> (addr, len, byte_order);
+}
 
-extern ULONGEST extract_unsigned_integer (const gdb_byte *, int,
-                                         enum bfd_endian);
+static inline ULONGEST
+extract_unsigned_integer (const gdb_byte *addr, int len,
+                         enum bfd_endian byte_order)
+{
+  return extract_integer<ULONGEST> (addr, len, byte_order);
+}
 
 extern int extract_long_unsigned_integer (const gdb_byte *, int,
                                          enum bfd_endian, LONGEST *);
@@ -651,20 +592,42 @@ extern int extract_long_unsigned_integer (const gdb_byte *, int,
 extern CORE_ADDR extract_typed_address (const gdb_byte *buf,
                                        struct type *type);
 
-extern void store_signed_integer (gdb_byte *, int,
-                                 enum bfd_endian, LONGEST);
+/* All 'store' functions accept a host-format integer and store a
+   target-format integer at ADDR which is LEN bytes long.  */
+
+template<typename T, typename = RequireLongest<T>>
+extern void store_integer (gdb_byte *addr, int len, enum bfd_endian byte_order,
+                          T val);
 
-extern void store_unsigned_integer (gdb_byte *, int,
-                                   enum bfd_endian, ULONGEST);
+static inline void
+store_signed_integer (gdb_byte *addr, int len,
+                     enum bfd_endian byte_order, LONGEST val)
+{
+  return store_integer (addr, len, byte_order, val);
+}
+
+static inline void
+store_unsigned_integer (gdb_byte *addr, int len,
+                       enum bfd_endian byte_order, ULONGEST val)
+{
+  return store_integer (addr, len, byte_order, val);
+}
 
 extern void store_typed_address (gdb_byte *buf, struct type *type,
                                 CORE_ADDR addr);
 
-\f
+extern void copy_integer_to_size (gdb_byte *dest, int dest_size,
+                                 const gdb_byte *source, int source_size,
+                                 bool is_signed, enum bfd_endian byte_order);
+
 /* From valops.c */
 
 extern int watchdog;
 
+/* From dwarf2read.c */
+
+ULONGEST read_unsigned_leb128 (bfd *, const gdb_byte *, unsigned int *);
+
 /* Hooks for alternate command interfaces.  */
 
 /* * The name of the interpreter if specified on the command line.  */
@@ -691,7 +654,7 @@ extern int (*deprecated_query_hook) (const char *, va_list)
 extern void (*deprecated_warning_hook) (const char *, va_list)
      ATTRIBUTE_FPTR_PRINTF(1,0);
 extern void (*deprecated_interactive_hook) (void);
-extern void (*deprecated_readline_begin_hook) (char *, ...)
+extern void (*deprecated_readline_begin_hook) (const char *, ...)
      ATTRIBUTE_FPTR_PRINTF_1;
 extern char *(*deprecated_readline_hook) (const char *);
 extern void (*deprecated_readline_end_hook) (void);
@@ -731,6 +694,21 @@ enum block_enum
   FIRST_LOCAL_BLOCK = 2
 };
 
+/* User selection used in observer.h and multiple print functions.  */
+
+enum user_selected_what_flag
+  {
+    /* Inferior selected.  */
+    USER_SELECTED_INFERIOR = 1 << 1,
+
+    /* Thread selected.  */
+    USER_SELECTED_THREAD = 1 << 2,
+
+    /* Frame selected.  */
+    USER_SELECTED_FRAME = 1 << 3
+  };
+DEF_ENUM_FLAGS_TYPE (enum user_selected_what_flag, user_selected_what);
+
 #include "utils.h"
 
 #endif /* #ifndef DEFS_H */
This page took 0.029534 seconds and 4 git commands to generate.