static void * build_fortran_types (struct gdbarch *gdbarch) { struct builtin_f_type *builtin_f_type = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_f_type); builtin_f_type->builtin_void = arch_type (gdbarch, TYPE_CODE_VOID, 1, "VOID"); builtin_f_type->builtin_character = arch_integer_type (gdbarch, TARGET_CHAR_BIT, 0, "character"); builtin_f_type->builtin_logical_s1 = arch_boolean_type (gdbarch, TARGET_CHAR_BIT, 1, "logical*1"); builtin_f_type->builtin_integer_s2 = arch_integer_type (gdbarch, gdbarch_short_bit (gdbarch), 0, "integer*2"); builtin_f_type->builtin_logical_s2 = arch_boolean_type (gdbarch, gdbarch_short_bit (gdbarch), 1, "logical*2"); builtin_f_type->builtin_logical_s8 = arch_boolean_type (gdbarch, gdbarch_long_long_bit (gdbarch), 1, "logical*8"); builtin_f_type->builtin_integer = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 0, "integer"); builtin_f_type->builtin_logical = arch_boolean_type (gdbarch, gdbarch_int_bit (gdbarch), 1, "logical*4"); builtin_f_type->builtin_real = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch), "real", NULL); builtin_f_type->builtin_real_s8 = arch_float_type (gdbarch, gdbarch_double_bit (gdbarch), "real*8", NULL); builtin_f_type->builtin_real_s16 = arch_float_type (gdbarch, gdbarch_long_double_bit (gdbarch), "real*16", NULL); builtin_f_type->builtin_complex_s8 = arch_complex_type (gdbarch, "complex*8", builtin_f_type->builtin_real); builtin_f_type->builtin_complex_s16 = arch_complex_type (gdbarch, "complex*16", builtin_f_type->builtin_real_s8); builtin_f_type->builtin_complex_s32 = arch_complex_type (gdbarch, "complex*32", builtin_f_type->builtin_real_s16); return builtin_f_type; }
static void * build_fortran_types (struct gdbarch *gdbarch) { struct builtin_f_type *builtin_f_type = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_f_type); builtin_f_type->builtin_void = init_type (TYPE_CODE_VOID, 1, 0, "VOID", (struct objfile *) NULL); builtin_f_type->builtin_character = init_type (TYPE_CODE_INT, TARGET_CHAR_BIT / TARGET_CHAR_BIT, 0, "character", (struct objfile *) NULL); builtin_f_type->builtin_logical_s1 = init_type (TYPE_CODE_BOOL, TARGET_CHAR_BIT / TARGET_CHAR_BIT, TYPE_FLAG_UNSIGNED, "logical*1", (struct objfile *) NULL); builtin_f_type->builtin_integer_s2 = init_type (TYPE_CODE_INT, gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT, 0, "integer*2", (struct objfile *) NULL); builtin_f_type->builtin_logical_s2 = init_type (TYPE_CODE_BOOL, gdbarch_short_bit (gdbarch) / TARGET_CHAR_BIT, TYPE_FLAG_UNSIGNED, "logical*2", (struct objfile *) NULL); builtin_f_type->builtin_integer = init_type (TYPE_CODE_INT, gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT, 0, "integer", (struct objfile *) NULL); builtin_f_type->builtin_logical = init_type (TYPE_CODE_BOOL, gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT, TYPE_FLAG_UNSIGNED, "logical*4", (struct objfile *) NULL); builtin_f_type->builtin_real = init_type (TYPE_CODE_FLT, gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT, 0, "real", (struct objfile *) NULL); builtin_f_type->builtin_real_s8 = init_type (TYPE_CODE_FLT, gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT, 0, "real*8", (struct objfile *) NULL); builtin_f_type->builtin_real_s16 = init_type (TYPE_CODE_FLT, gdbarch_long_double_bit (gdbarch) / TARGET_CHAR_BIT, 0, "real*16", (struct objfile *) NULL); builtin_f_type->builtin_complex_s8 = init_type (TYPE_CODE_COMPLEX, 2 * gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT, 0, "complex*8", (struct objfile *) NULL); TYPE_TARGET_TYPE (builtin_f_type->builtin_complex_s8) = builtin_f_type->builtin_real; builtin_f_type->builtin_complex_s16 = init_type (TYPE_CODE_COMPLEX, 2 * gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT, 0, "complex*16", (struct objfile *) NULL); TYPE_TARGET_TYPE (builtin_f_type->builtin_complex_s16) = builtin_f_type->builtin_real_s8; /* We have a new size == 4 double floats for the complex*32 data type */ builtin_f_type->builtin_complex_s32 = init_type (TYPE_CODE_COMPLEX, 2 * gdbarch_long_double_bit (gdbarch) / TARGET_CHAR_BIT, 0, "complex*32", (struct objfile *) NULL); TYPE_TARGET_TYPE (builtin_f_type->builtin_complex_s32) = builtin_f_type->builtin_real_s16; return builtin_f_type; }