X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Flanguage.h;h=d9265324cdd4dad606b0af4450c845b369f621dc;hb=2fbce69179c6c47b68e24e3bca6c729fec4a918d;hp=185bc919ea0455117827ac9b28f77bb1873bd260;hpb=507f3c78fb4a1235b731350d60f1bf0ce94b4175;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/language.h b/gdb/language.h index 185bc919ea..d9265324cd 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -1,5 +1,8 @@ /* Source-language-related definitions for GDB. - Copyright 1991, 1992, 2000 Free Software Foundation, Inc. + + Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003 Free + Software Foundation, Inc. + Contributed by the Department of Computer Science at the State University of New York at Buffalo. @@ -30,12 +33,12 @@ struct expression; /* enum exp_opcode; ANSI's `wisdom' didn't include forward enum decls. */ /* This used to be included to configure GDB for one or more specific - languages. Now it is shortcutted to configure for all of them. FIXME. */ + languages. Now it is left out to configure for all of them. FIXME. */ /* #include "lang_def.h" */ #define _LANG_c #define _LANG_m2 -#define _LANG_chill -#define _LANG_fortran +#define _LANG_fortran +#define _LANG_pascal #define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims */ @@ -80,6 +83,26 @@ extern enum type_check type_check_off, type_check_warn, type_check_on } type_check; + +/* case_mode == + case_mode_auto: case_sensitivity set upon selection of scope + case_mode_manual: case_sensitivity set only by user. */ + +extern enum case_mode + { + case_mode_auto, case_mode_manual + } +case_mode; + +/* case_sensitivity == + case_sensitive_on: Case sensitivity in name matching is used + case_sensitive_off: Case sensitivity in name matching is not used */ + +extern enum case_sensitivity + { + case_sensitive_on, case_sensitive_off + } +case_sensitivity; /* Information for doing language dependent formatting of printed values. */ @@ -139,6 +162,9 @@ struct language_defn enum type_check la_type_check; + /* Default case sensitivity */ + enum case_sensitivity la_case_sensitivity; + /* Parser function. */ int (*la_parser) (void); @@ -177,6 +203,15 @@ struct language_defn int (*la_value_print) (struct value *, struct ui_file *, int, enum val_prettyprint); + /* PC is possibly an unknown languages trampoline. + If that PC falls in a trampoline belonging to this language, + return the address of the first pc in the real function, or 0 + if it isn't a language tramp for this language. */ + CORE_ADDR (*skip_trampoline) (CORE_ADDR pc); + + /* Return demangled language symbol, or NULL. */ + char *(*la_demangle) (const char *mangled, int options); + /* Base 2 (binary) formats. */ struct language_format_info la_binary_format; @@ -231,7 +266,7 @@ struct language_defn its own language and we should keep track of that regardless of the language when symbols are read. If we want some manual setting for the language of symbol files (e.g. detecting when ".c" files are - C++), it should be a seprate setting from the current_language. */ + C++), it should be a separate setting from the current_language. */ extern const struct language_defn *current_language; @@ -263,7 +298,8 @@ language_mode; /* "cast" really means conversion */ /* FIXME -- should be a setting in language_defn */ #define CAST_IS_CONVERSION (current_language->la_language == language_c || \ - current_language->la_language == language_cplus) + current_language->la_language == language_cplus || \ + current_language->la_language == language_objc) extern void language_info (int); @@ -370,13 +406,9 @@ extern char *longest_raw_hex_string (LONGEST); (language-specific) formats. Result is static and is overwritten by the next call. Takes printf options like "08l" or "l". */ -extern char *local_hex_string (unsigned long); /* language.c */ - -extern char *longest_local_hex_string (LONGEST); /* language.c */ +extern char *local_hex_string (LONGEST); /* language.c */ -extern char *local_hex_string_custom (unsigned long, char *); /* language.c */ - -extern char *longest_local_hex_string_custom (LONGEST, char *); /* language.c */ +extern char *local_hex_string_custom (LONGEST, char *); /* language.c */ /* Type predicates */ @@ -415,11 +447,9 @@ extern void op_error (char *fmt, enum exp_opcode, int); #define range_op_error(f,o) \ op_error((f),(o),range_check==range_check_on ? 1 : 0) -extern void type_error (char *, ...) ATTR_FORMAT (printf, 1, 2); +extern void type_error (const char *, ...) ATTR_FORMAT (printf, 1, 2); -void -range_error (char *, ...) -ATTR_FORMAT (printf, 1, 2); +extern void range_error (const char *, ...) ATTR_FORMAT (printf, 1, 2); /* Data: Does this value represent "truth" to the current language? */ @@ -444,4 +474,12 @@ extern void add_language (const struct language_defn *); extern enum language get_frame_language (void); /* In stack.c */ +/* Check for a language-specific trampoline. */ + +extern CORE_ADDR skip_language_trampoline (CORE_ADDR pc); + +/* Return demangled language symbol, or NULL. */ +extern char *language_demangle (const struct language_defn *current_language, + const char *mangled, int options); + #endif /* defined (LANGUAGE_H) */