#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. */
#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;
/* * Languages represented in the symbol table and elsewhere.
This should probably be in language.h, but since enum's can't
be forward declared to satisfy opaque references before their
- actual definition, needs to be here. */
+ actual definition, needs to be here.
+
+ The constants here are in priority order. In particular,
+ demangling is attempted according to this order.
+
+ 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: Rust uses
+ C++ mangling, so must come after C++; Ada must come last (see
+ ada_sniff_from_mangled_name). */
enum language
{
language_unknown, /* Language not known */
language_auto, /* Placeholder for automatic setting */
language_c, /* C */
+ language_objc, /* Objective-C */
language_cplus, /* C++ */
language_d, /* D */
language_go, /* Go */
- language_objc, /* Objective-C */
- language_java, /* Java */
language_fortran, /* Fortran */
language_m2, /* Modula-2 */
language_asm, /* Assembly language */
language_pascal, /* Pascal */
- language_ada, /* Ada */
language_opencl, /* OpenCL */
language_rust, /* Rust */
language_minimal, /* All other languages, minimal support only */
+ language_ada, /* Ada */
nr_languages
};
GDB_OSABI_OPENBSD_ELF,
GDB_OSABI_WINCE,
GDB_OSABI_GO32,
- GDB_OSABI_IRIX,
GDB_OSABI_HPUX_ELF,
GDB_OSABI_HPUX_SOM,
GDB_OSABI_QNXNTO,
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. */
-/* From other system libraries */
+enum symbol_needs_kind
+{
+ /* No special requirements -- just memory. */
+ SYMBOL_NEEDS_NONE,
-#ifndef atof
-extern double atof (const char *); /* X3.159-1989 4.10.1.1 */
-#endif
+ /* The symbol needs registers. */
+ SYMBOL_NEEDS_REGISTERS,
+
+ /* The symbol needs a frame. */
+ SYMBOL_NEEDS_FRAME
+};
/* Dynamic target-system-dependent parameters for GDB. */
#include "gdbarch.h"
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 */