This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#if !defined (GDBTYPES_H)
#define GDBTYPES_H 1
#define TYPE_FLAG_STUB_SUPPORTED (1 << 16)
#define TYPE_STUB_SUPPORTED(t) (TYPE_FLAGS (t) & TYPE_FLAG_STUB_SUPPORTED)
+/* Not textual. By default, GDB treats all single byte integers as
+ characters (or elements of strings) unless this flag is set. */
+
+#define TYPE_FLAG_NOTTEXT (1 << 17)
+#define TYPE_NOTTEXT(t) (TYPE_FLAGS (t) & TYPE_FLAG_NOTTEXT)
+
/* Array bound type. */
enum array_bound_type
{
/* The target CPU's address type. This is the ISA address size. */
struct type *builtin_core_addr;
+
+ /* Types used for symbols with no debug information. */
+ struct type *nodebug_text_symbol;
+ struct type *nodebug_data_symbol;
+ struct type *nodebug_unknown_symbol;
+ struct type *nodebug_tls_symbol;
+
+
/* Integral types. */
- /* We use this for the '/c' print format, because c_char is just a
+ /* We use these for the '/c' print format, because c_char is just a
one-byte integral type, which languages less laid back than C
will print as ... well, a one-byte integral type. */
struct type *builtin_true_char;
+ struct type *builtin_true_unsigned_char;
/* Implicit size/sign (based on the the architecture's ABI). */
struct type *builtin_void;
/* Return the type table for the specified architecture. */
extern const struct builtin_type *builtin_type (struct gdbarch *gdbarch);
-/* Implicit sizes */
-extern struct type *builtin_type_void;
-extern struct type *builtin_type_char;
-extern struct type *builtin_type_short;
-extern struct type *builtin_type_int;
-extern struct type *builtin_type_long;
-extern struct type *builtin_type_signed_char;
-extern struct type *builtin_type_unsigned_char;
-extern struct type *builtin_type_unsigned_short;
-extern struct type *builtin_type_unsigned_int;
-extern struct type *builtin_type_unsigned_long;
-extern struct type *builtin_type_float;
-extern struct type *builtin_type_double;
-extern struct type *builtin_type_long_double;
-extern struct type *builtin_type_complex;
-extern struct type *builtin_type_double_complex;
-extern struct type *builtin_type_string;
-extern struct type *builtin_type_bool;
-
-/* Address/pointer types: */
-/* (C) Language `pointer to data' type. Some target platforms use an
- implicitly {sign,zero} -extended 32 bit C language pointer on a 64
- bit ISA. */
-extern struct type *builtin_type_void_data_ptr;
-
-/* (C) Language `pointer to function returning void' type. Since
- ANSI, C standards have explicitly said that pointers to functions
- and pointers to data are not interconvertible --- that is, you
- can't cast a function pointer to void * and back, and expect to get
- the same value. However, all function pointer types are
- interconvertible, so void (*) () can server as a generic function
- pointer. */
-extern struct type *builtin_type_void_func_ptr;
-
-/* The target CPU's address type. This is the ISA address size. */
-extern struct type *builtin_type_CORE_ADDR;
-
+/* Compatibility macros to access types for the current architecture. */
+#define builtin_type_void_data_ptr \
+ (builtin_type (current_gdbarch)->builtin_data_ptr)
+#define builtin_type_void_func_ptr \
+ (builtin_type (current_gdbarch)->builtin_func_ptr)
+#define builtin_type_CORE_ADDR \
+ (builtin_type (current_gdbarch)->builtin_core_addr)
+#define builtin_type_true_char \
+ (builtin_type (current_gdbarch)->builtin_true_char)
+#define builtin_type_void \
+ (builtin_type (current_gdbarch)->builtin_void)
+#define builtin_type_char \
+ (builtin_type (current_gdbarch)->builtin_char)
+#define builtin_type_short \
+ (builtin_type (current_gdbarch)->builtin_short)
+#define builtin_type_int \
+ (builtin_type (current_gdbarch)->builtin_int)
+#define builtin_type_long \
+ (builtin_type (current_gdbarch)->builtin_long)
+#define builtin_type_signed_char \
+ (builtin_type (current_gdbarch)->builtin_signed_char)
+#define builtin_type_unsigned_char \
+ (builtin_type (current_gdbarch)->builtin_unsigned_char)
+#define builtin_type_unsigned_short \
+ (builtin_type (current_gdbarch)->builtin_unsigned_short)
+#define builtin_type_unsigned_int \
+ (builtin_type (current_gdbarch)->builtin_unsigned_int)
+#define builtin_type_unsigned_long \
+ (builtin_type (current_gdbarch)->builtin_unsigned_long)
+#define builtin_type_float \
+ (builtin_type (current_gdbarch)->builtin_float)
+#define builtin_type_double \
+ (builtin_type (current_gdbarch)->builtin_double)
+#define builtin_type_long_double \
+ (builtin_type (current_gdbarch)->builtin_long_double)
+#define builtin_type_complex \
+ (builtin_type (current_gdbarch)->builtin_complex)
+#define builtin_type_double_complex \
+ (builtin_type (current_gdbarch)->builtin_double_complex)
+#define builtin_type_string \
+ (builtin_type (current_gdbarch)->builtin_string)
+#define builtin_type_bool \
+ (builtin_type (current_gdbarch)->builtin_bool)
+#define builtin_type_long_long \
+ (builtin_type (current_gdbarch)->builtin_long_long)
+#define builtin_type_unsigned_long_long \
+ (builtin_type (current_gdbarch)->builtin_unsigned_long_long)
+
+
/* Explicit sizes - see C9X <intypes.h> for naming scheme. The "int0"
is for when an architecture needs to describe a register that has
no size. */
extern struct type *builtin_type_ia64_spill;
extern struct type *builtin_type_ia64_quad;
-/* We use this for the '/c' print format, because builtin_type_char is
- just a one-byte integral type, which languages less laid back than
- C will print as ... well, a one-byte integral type. */
-extern struct type *builtin_type_true_char;
-
/* This type represents a type that was unrecognized in symbol
read-in. */
extern struct type *builtin_type_error;
-extern struct type *builtin_type_long_long;
-extern struct type *builtin_type_unsigned_long_long;
/* Modula-2 types */
-extern struct type *builtin_type_m2_char;
-extern struct type *builtin_type_m2_int;
-extern struct type *builtin_type_m2_card;
-extern struct type *builtin_type_m2_real;
-extern struct type *builtin_type_m2_bool;
+struct builtin_m2_type
+{
+ struct type *builtin_char;
+ struct type *builtin_int;
+ struct type *builtin_card;
+ struct type *builtin_real;
+ struct type *builtin_bool;
+};
+
+/* Return the Modula-2 type table for the specified architecture. */
+extern const struct builtin_m2_type *builtin_m2_type (struct gdbarch *gdbarch);
+
+/* Compatibility macros to access types for the current architecture. */
+#define builtin_type_m2_char \
+ (builtin_m2_type (current_gdbarch)->builtin_char)
+#define builtin_type_m2_int \
+ (builtin_m2_type (current_gdbarch)->builtin_int)
+#define builtin_type_m2_card \
+ (builtin_m2_type (current_gdbarch)->builtin_card)
+#define builtin_type_m2_real \
+ (builtin_m2_type (current_gdbarch)->builtin_real)
+#define builtin_type_m2_bool \
+ (builtin_m2_type (current_gdbarch)->builtin_bool)
+
/* Fortran (F77) types */
extern struct type *init_flags_type (char *name, int length);
extern void append_flags_type_flag (struct type *type, int bitpos, char *name);
+extern void make_vector_type (struct type *array_type);
extern struct type *init_vector_type (struct type *elt_type, int n);
extern struct type *lookup_reference_type (struct type *);
extern struct type *primary_base_class (struct type *);
-extern struct type **virtual_base_list (struct type *);
-
extern int virtual_base_list_length (struct type *);
extern int virtual_base_list_length_skip_primaries (struct type *);