TYPE_FLAG_VECTOR = (1 << 15),
TYPE_FLAG_FIXED_INSTANCE = (1 << 16),
TYPE_FLAG_STUB_SUPPORTED = (1 << 17),
+ TYPE_FLAG_GNU_IFUNC = (1 << 18),
/* Used for error-checking. */
TYPE_FLAG_MIN = TYPE_FLAG_UNSIGNED
#define TYPE_NOTTEXT(t) (TYPE_INSTANCE_FLAGS (t) & TYPE_INSTANCE_FLAG_NOTTEXT)
+/* Used only for TYPE_CODE_FUNC where it specifies the real function
+ address is returned by this function call. TYPE_TARGET_TYPE determines the
+ final returned function type to be presented to user. */
+
+#define TYPE_GNU_IFUNC(t) (TYPE_MAIN_TYPE (t)->flag_gnu_ifunc)
+
/* Type owner. If TYPE_OBJFILE_OWNED is true, the type is owned by
the objfile retrieved as TYPE_OBJFILE. Otherweise, the type is
owned by an architecture; TYPE_OBJFILE is NULL in this case. */
unsigned int flag_varargs : 1;
unsigned int flag_vector : 1;
unsigned int flag_stub_supported : 1;
+ unsigned int flag_gnu_ifunc : 1;
unsigned int flag_fixed_instance : 1;
unsigned int flag_objfile_owned : 1;
/* True if this type was declared with "class" rather than
Otherwise, physname is the mangled label of the static field. */
CORE_ADDR physaddr;
- char *physname;
+ const char *physname;
}
loc;
arguments. See gdb_mangle_name for the conversion from this
format to the one used if is_stub is clear. */
- char *physname;
+ const char *physname;
/* The function type for the method.
(This comment used to say "The return value of the method",
{
/* Integral types. */
- /* Implicit size/sign (based on the the architecture's ABI). */
+ /* Implicit size/sign (based on the architecture's ABI). */
struct type *builtin_void;
struct type *builtin_char;
struct type *builtin_short;
(*) () can server as a generic function pointer. */
struct type *builtin_func_ptr;
+ /* `function returning pointer to function (returning void)' type.
+ The final void return type is not significant for it. */
+ struct type *builtin_func_func;
+
/* Special-purpose types. */
/* Types used for symbols with no debug information. */
struct type *nodebug_text_symbol;
+ struct type *nodebug_text_gnu_ifunc_symbol;
+ struct type *nodebug_got_plt_symbol;
struct type *nodebug_data_symbol;
struct type *nodebug_unknown_symbol;
struct type *nodebug_tls_symbol;
extern char *type_name_no_tag (const struct type *);
+extern const char *type_name_no_tag_or_error (struct type *type);
+
extern struct type *lookup_struct_elt_type (struct type *, char *, int);
extern struct type *make_pointer_type (struct type *, struct type **);
extern int is_integral_type (struct type *);
+extern int is_scalar_type_recursive (struct type *);
+
extern void maintenance_print_type (char *, int);
extern htab_t create_copied_types_hash (struct objfile *objfile);