X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fdefs.h;h=ed513968523a16634dc9a9fdd325886ce6a5b49c;hb=347dc1025db1c0acf616ab6520c3f36448f25e8b;hp=d9775e32843a644ef777be552c3b4d1d6f77eb0c;hpb=b939114242762636cfdcf9a45949cb54cdaacc8c;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/defs.h b/gdb/defs.h index d9775e3284..ed51396852 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -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-2014 Free Software Foundation, Inc. + Copyright (C) 1986-2016 Free Software Foundation, Inc. This file is part of GDB. @@ -28,9 +28,7 @@ #include "common-defs.h" #include -#include /* System call error return status. */ #include -#include /* The libdecnumber library, on which GDB depends, includes a header file called gstdint.h instead of relying directly on stdint.h. GDB, on the @@ -48,22 +46,41 @@ #include -/* For gnulib's PATH_MAX. */ -#include "pathmax.h" - #include -#include "gdb_locale.h" - #include "gdb_wchar.h" -/* For ``enum gdb_signal''. */ -#include "gdb/signals.h" - #include "ui-file.h" #include "host-defs.h" +/* Scope types enumerator. List the types of scopes the compiler will + accept. */ + +enum compile_i_scope_types + { + COMPILE_I_INVALID_SCOPE, + + /* A simple scope. Wrap an expression into a simple scope that + takes no arguments, returns no value, and uses the generic + function name "_gdb_expr". */ + + COMPILE_I_SIMPLE_SCOPE, + + /* Do not wrap the expression, + it has to provide function "_gdb_expr" on its own. */ + COMPILE_I_RAW_SCOPE, + + /* A printable expression scope. Wrap an expression into a scope + suitable for the "compile print" command. It uses the generic + function name "_gdb_expr". COMPILE_I_PRINT_ADDRESS_SCOPE variant + is the usual one, taking address of the object. + COMPILE_I_PRINT_VALUE_SCOPE is needed for arrays where the array + name already specifies its address. See get_out_value_type. */ + COMPILE_I_PRINT_ADDRESS_SCOPE, + COMPILE_I_PRINT_VALUE_SCOPE, + }; + /* Just in case they're not defined in stdio.h. */ #ifndef SEEK_SET @@ -85,35 +102,6 @@ #include "hashtab.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. */ - -#include "bfd.h" - -/* * 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. */ - -#ifdef BFD64 - -#define LONGEST BFD_HOST_64_BIT -#define ULONGEST BFD_HOST_U_64_BIT - -#else /* No BFD64 */ - -#define LONGEST long long -#define ULONGEST unsigned long long - -#endif /* No BFD64 */ - #ifndef min #define min(a, b) ((a) < (b) ? (a) : (b)) #endif @@ -121,11 +109,6 @@ typedef bfd_vma CORE_ADDR; #define max(a, b) ((a) > (b) ? (a) : (b)) #endif -#include "ptid.h" - -/* * Enable xdb commands if set. */ -extern int xdb_commands; - /* * Enable dbx commands if set. */ extern int dbx_commands; @@ -142,41 +125,71 @@ extern char *python_libdir; /* * Search path for separate debug files. */ extern char *debug_file_directory; -/* GDB has two methods for handling SIGINT. When immediate_quit is - nonzero, a SIGINT results in an immediate longjmp out of the signal - handler. Otherwise, SIGINT simply sets a flag; code that might - take a long time, and which ought to be interruptible, checks this - flag using the QUIT macro. +/* GDB's SIGINT handler basically sets a flag; code that might take a + long time before it gets back to the event loop, and which ought to + be interruptible, checks this flag using the QUIT macro, which, if + GDB has the terminal, throws a quit exception. + + In addition to setting a flag, the SIGINT handler also marks a + select/poll-able file descriptor as read-ready. That is used by + interruptible_select in order to support interrupting blocking I/O + in a race-free manner. These functions use the extension_language_ops API to allow extension language(s) and GDB SIGINT handling to coexist seamlessly. */ -/* * Clear the quit flag. */ -extern void clear_quit_flag (void); /* * Evaluate to non-zero if the quit flag is set, zero otherwise. This will clear the quit flag as a side effect. */ extern int check_quit_flag (void); /* * Set the quit flag. */ extern void set_quit_flag (void); +/* The current quit handler (and its type). This is called from the + QUIT macro. See default_quit_handler below for default behavior. + Parts of GDB temporarily override this to e.g., completely suppress + Ctrl-C because it would not be safe to throw. E.g., normally, you + wouldn't want to quit between a RSP command and its response, as + that would break the communication with the target, but you may + still want to intercept the Ctrl-C and offer to disconnect if the + user presses Ctrl-C multiple times while the target is stuck + waiting for the wedged remote stub. */ +typedef void (quit_handler_ftype) (void); +extern quit_handler_ftype *quit_handler; + +/* Override the current quit handler. Sets NEW_QUIT_HANDLER as + current quit handler, and installs a cleanup that when run restores + the previous quit handler. */ +struct cleanup * + make_cleanup_override_quit_handler (quit_handler_ftype *new_quit_handler); + +/* The default quit handler. Checks whether Ctrl-C was pressed, and + if so: + + - If GDB owns the terminal, throws a quit exception. + + - If GDB does not own the terminal, forwards the Ctrl-C to the + target. +*/ +extern void default_quit_handler (void); + /* Flag that function quit should call quit_force. */ extern volatile int sync_quit_force_run; -extern int immediate_quit; - extern void quit (void); -/* FIXME: cagney/2000-03-13: It has been suggested that the peformance - benefits of having a ``QUIT'' macro rather than a function are - marginal. If the overhead of a QUIT function call is proving - significant then its calling frequency should probably be reduced - [kingdon]. A profile analyzing the current situtation is - needed. */ +/* Helper for the QUIT macro. */ + +extern void maybe_quit (void); -#define QUIT { \ - if (check_quit_flag () || sync_quit_force_run) quit (); \ - if (deprecated_interactive_hook) deprecated_interactive_hook (); \ -} +/* Check whether a Ctrl-C was typed, and if so, call the current quit + handler. */ +#define QUIT maybe_quit () + +/* Set the serial event associated with the quit flag. */ +extern void quit_serial_event_set (void); + +/* Clear the serial event associated with the quit flag. */ +extern void quit_serial_event_clear (void); /* * Languages represented in the symbol table and elsewhere. This should probably be in language.h, but since enum's can't @@ -199,10 +212,16 @@ enum language language_pascal, /* Pascal */ language_ada, /* Ada */ language_opencl, /* OpenCL */ + language_rust, /* Rust */ language_minimal, /* All other languages, minimal support only */ nr_languages }; +/* The number of bits needed to represent all languages, with enough + padding to allow for reasonable growth. */ +#define LANGUAGE_BITS 5 +gdb_static_assert (nr_languages <= (1 << LANGUAGE_BITS)); + enum precision_type { single_precision, @@ -272,7 +291,7 @@ extern int annotation_level; /* in stack.c */ "const char *" in unistd.h, so we can't declare the argument as "char *". */ -extern char *re_comp (const char *); +EXTERN_C char *re_comp (const char *); /* From symfile.c */ @@ -299,11 +318,9 @@ extern void print_transfer_performance (struct ui_file *stream, typedef void initialize_file_ftype (void); -extern char *gdb_readline (char *); - -extern char *gdb_readline_wrapper (char *); +extern char *gdb_readline_wrapper (const char *); -extern char *command_line_input (char *, int, char *); +extern char *command_line_input (const char *, int, char *); extern void print_prompt (void); @@ -404,6 +421,7 @@ enum command_control_type if_control, commands_control, python_control, + compile_control, guile_control, while_stepping_control, invalid_control @@ -417,6 +435,16 @@ 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 @@ -543,8 +571,6 @@ enum val_prettyformat extern int longest_to_int (LONGEST); -#include "common-utils.h" - /* * List of known OS ABIs. If you change this, make sure to update the table in osabi.c. */ enum gdb_osabi @@ -556,7 +582,6 @@ enum gdb_osabi GDB_OSABI_SVR4, GDB_OSABI_HURD, GDB_OSABI_SOLARIS, - GDB_OSABI_OSF1, GDB_OSABI_LINUX, GDB_OSABI_FREEBSD_AOUT, GDB_OSABI_FREEBSD_ELF, @@ -577,6 +602,7 @@ enum gdb_osabi GDB_OSABI_OPENVMS, GDB_OSABI_LYNXOS178, GDB_OSABI_NEWLIB, + GDB_OSABI_SDE, GDB_OSABI_INVALID /* keep this last */ }; @@ -591,27 +617,6 @@ enum gdb_osabi extern double atof (const char *); /* X3.159-1989 4.10.1.1 */ #endif -/* Various possibilities for alloca. */ -#ifndef alloca -#ifdef __GNUC__ -#define alloca __builtin_alloca -#else /* Not GNU C */ -#ifdef HAVE_ALLOCA_H -#include -#else -#ifdef _AIX -#pragma alloca -#else - -/* We need to be careful not to declare this in a way which conflicts with - bison. Bison never declares it as char *, but under various circumstances - (like __hpux) we need to use void *. */ -extern void *alloca (); -#endif /* Not _AIX */ -#endif /* Not HAVE_ALLOCA_H */ -#endif /* Not GNU C */ -#endif /* alloca not defined */ - /* Dynamic target-system-dependent parameters for GDB. */ #include "gdbarch.h" @@ -620,25 +625,6 @@ extern void *alloca (); enum { MAX_REGISTER_SIZE = 64 }; -/* Static target-system-dependent parameters for GDB. */ - -/* * Number of bits in a char or unsigned char for the target machine. - Just like CHAR_BIT in but describes the target machine. */ -#if !defined (TARGET_CHAR_BIT) -#define TARGET_CHAR_BIT 8 -#endif - -/* * If we picked up a copy of CHAR_BIT from a configuration file - (which may get it by including ) then use it to set - the number of bits in a host char. If not, use the same size - as the target. */ - -#if defined (CHAR_BIT) -#define HOST_CHAR_BIT CHAR_BIT -#else -#define HOST_CHAR_BIT TARGET_CHAR_BIT -#endif - /* In findvar.c. */ extern LONGEST extract_signed_integer (const gdb_byte *, int, @@ -672,10 +658,6 @@ extern int watchdog; /* * The name of the interpreter if specified on the command line. */ extern char *interpreter_p; -/* If a given interpreter matches INTERPRETER_P then it should update - deprecated_init_ui_hook with the per-interpreter implementation. */ -/* FIXME: deprecated_init_ui_hook should be moved here. */ - struct target_waitstatus; struct cmd_list_element; @@ -683,7 +665,6 @@ 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_show_load_progress) (const char *section, unsigned long section_sent, unsigned long section_size, @@ -700,9 +681,8 @@ extern void (*deprecated_warning_hook) (const char *, va_list) extern void (*deprecated_interactive_hook) (void); extern void (*deprecated_readline_begin_hook) (char *, ...) ATTRIBUTE_FPTR_PRINTF_1; -extern char *(*deprecated_readline_hook) (char *); +extern char *(*deprecated_readline_hook) (const char *); extern void (*deprecated_readline_end_hook) (void); -extern void (*deprecated_register_changed_hook) (int regno); extern void (*deprecated_context_hook) (int); extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid, struct target_waitstatus *status,