#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: Java and
+ Rust use 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_java, /* Java */
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
};
extern double atof (const char *); /* X3.159-1989 4.10.1.1 */
#endif
+/* 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,
+
+ /* 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"