ChangeLog:
* mdebugread.c (mdebug_type_void, mdebug_type_char, mdebug_type_short, mdebug_type_int, mdebug_type_int_32, mdebug_type_int_64, mdebug_type_long_32, mdebug_type_long_64, mdebug_type_long_long_64, mdebug_type_unsigned_char, mdebug_type_unsigned_short, mdebug_type_unsigned_int_32, mdebug_type_unsigned_int_64, mdebug_type_unsigned_long_32, mdebug_type_unsigned_long_64, mdebug_type_unsigned_long_long_64, mdebug_type_adr_32, mdebug_type_adr_64, mdebug_type_float, mdebug_type_double, mdebug_type_complex, mdebug_type_double_complex, mdebug_type_fixed_dec, mdebug_type_float_dec, mdebug_type_string): Remove. (basic_type_data): New global variable. (basic_type): New function. (parse_type): Remove static basic type map map_bt. Call basic_type to get basic types instead of using mdebug_type_ variables. (parse_symbol): Use builtin types instead of mdebug_type_ variables. (upgrade_type): Likewise. (parse_procedure): Likewise. (psymtab_to_symtab_1): Likewise. (_initialize_mdebugread): Do not initialize mdebug_type_ variables. Initialize basic_type_data. include/coff/ChangeLog: * symconst.h (btLong64, btULong64, btLongLong64, btULongLong64, btAdr64, btInt64, btUInt64): New defines.
This commit is contained in:
parent
289bd67a5d
commit
0a9d309acd
|
@ -1,3 +1,30 @@
|
||||||
|
2009-06-03 Ulrich Weigand <uweigand@de.ibm.com>
|
||||||
|
|
||||||
|
* mdebugread.c (mdebug_type_void, mdebug_type_char, mdebug_type_short,
|
||||||
|
mdebug_type_int, mdebug_type_int_32, mdebug_type_int_64,
|
||||||
|
mdebug_type_long_32, mdebug_type_long_64, mdebug_type_long_long_64,
|
||||||
|
mdebug_type_unsigned_char, mdebug_type_unsigned_short,
|
||||||
|
mdebug_type_unsigned_int_32, mdebug_type_unsigned_int_64,
|
||||||
|
mdebug_type_unsigned_long_32, mdebug_type_unsigned_long_64,
|
||||||
|
mdebug_type_unsigned_long_long_64, mdebug_type_adr_32,
|
||||||
|
mdebug_type_adr_64, mdebug_type_float, mdebug_type_double,
|
||||||
|
mdebug_type_complex, mdebug_type_double_complex,
|
||||||
|
mdebug_type_fixed_dec, mdebug_type_float_dec, mdebug_type_string):
|
||||||
|
Remove.
|
||||||
|
|
||||||
|
(basic_type_data): New global variable.
|
||||||
|
(basic_type): New function.
|
||||||
|
(parse_type): Remove static basic type map map_bt. Call basic_type
|
||||||
|
to get basic types instead of using mdebug_type_ variables.
|
||||||
|
|
||||||
|
(parse_symbol): Use builtin types instead of mdebug_type_ variables.
|
||||||
|
(upgrade_type): Likewise.
|
||||||
|
(parse_procedure): Likewise.
|
||||||
|
(psymtab_to_symtab_1): Likewise.
|
||||||
|
|
||||||
|
(_initialize_mdebugread): Do not initialize mdebug_type_ variables.
|
||||||
|
Initialize basic_type_data.
|
||||||
|
|
||||||
2009-06-03 Ulrich Weigand <uweigand@de.ibm.com>
|
2009-06-03 Ulrich Weigand <uweigand@de.ibm.com>
|
||||||
|
|
||||||
* dfp.h (decimal_binop): Convert LEN_RESULT to input parameter.
|
* dfp.h (decimal_binop): Convert LEN_RESULT to input parameter.
|
||||||
|
|
395
gdb/mdebugread.c
395
gdb/mdebugread.c
|
@ -207,34 +207,6 @@ static int n_undef_symbols, n_undef_labels, n_undef_vars, n_undef_procs;
|
||||||
|
|
||||||
static char stabs_symbol[] = STABS_SYMBOL;
|
static char stabs_symbol[] = STABS_SYMBOL;
|
||||||
|
|
||||||
/* Types corresponding to mdebug format bt* basic types. */
|
|
||||||
|
|
||||||
static struct type *mdebug_type_void;
|
|
||||||
static struct type *mdebug_type_char;
|
|
||||||
static struct type *mdebug_type_short;
|
|
||||||
static struct type *mdebug_type_int_32;
|
|
||||||
#define mdebug_type_int mdebug_type_int_32
|
|
||||||
static struct type *mdebug_type_int_64;
|
|
||||||
static struct type *mdebug_type_long_32;
|
|
||||||
static struct type *mdebug_type_long_64;
|
|
||||||
static struct type *mdebug_type_long_long_64;
|
|
||||||
static struct type *mdebug_type_unsigned_char;
|
|
||||||
static struct type *mdebug_type_unsigned_short;
|
|
||||||
static struct type *mdebug_type_unsigned_int_32;
|
|
||||||
static struct type *mdebug_type_unsigned_int_64;
|
|
||||||
static struct type *mdebug_type_unsigned_long_32;
|
|
||||||
static struct type *mdebug_type_unsigned_long_64;
|
|
||||||
static struct type *mdebug_type_unsigned_long_long_64;
|
|
||||||
static struct type *mdebug_type_adr_32;
|
|
||||||
static struct type *mdebug_type_adr_64;
|
|
||||||
static struct type *mdebug_type_float;
|
|
||||||
static struct type *mdebug_type_double;
|
|
||||||
static struct type *mdebug_type_complex;
|
|
||||||
static struct type *mdebug_type_double_complex;
|
|
||||||
static struct type *mdebug_type_fixed_dec;
|
|
||||||
static struct type *mdebug_type_float_dec;
|
|
||||||
static struct type *mdebug_type_string;
|
|
||||||
|
|
||||||
/* Nonzero if we have seen ecoff debugging info for a file. */
|
/* Nonzero if we have seen ecoff debugging info for a file. */
|
||||||
|
|
||||||
static int found_ecoff_debugging_info;
|
static int found_ecoff_debugging_info;
|
||||||
|
@ -703,7 +675,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
|
||||||
SYMBOL_DOMAIN (s) = VAR_DOMAIN; /* so that it can be used */
|
SYMBOL_DOMAIN (s) = VAR_DOMAIN; /* so that it can be used */
|
||||||
SYMBOL_CLASS (s) = LOC_LABEL; /* but not misused */
|
SYMBOL_CLASS (s) = LOC_LABEL; /* but not misused */
|
||||||
SYMBOL_VALUE_ADDRESS (s) = (CORE_ADDR) sh->value;
|
SYMBOL_VALUE_ADDRESS (s) = (CORE_ADDR) sh->value;
|
||||||
SYMBOL_TYPE (s) = mdebug_type_int;
|
SYMBOL_TYPE (s) = builtin_type (gdbarch)->builtin_int;
|
||||||
add_symbol (s, top_stack->cur_st, top_stack->cur_block);
|
add_symbol (s, top_stack->cur_st, top_stack->cur_block);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -746,7 +718,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
|
||||||
SYMBOL_CLASS (s) = LOC_BLOCK;
|
SYMBOL_CLASS (s) = LOC_BLOCK;
|
||||||
/* Type of the return value */
|
/* Type of the return value */
|
||||||
if (SC_IS_UNDEF (sh->sc) || sh->sc == scNil)
|
if (SC_IS_UNDEF (sh->sc) || sh->sc == scNil)
|
||||||
t = mdebug_type_int;
|
t = builtin_type (gdbarch)->builtin_int;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
t = parse_type (cur_fd, ax, sh->index + 1, 0, bigend, name);
|
t = parse_type (cur_fd, ax, sh->index + 1, 0, bigend, name);
|
||||||
|
@ -1156,7 +1128,7 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
|
||||||
s = new_symbol (MDEBUG_EFI_SYMBOL_NAME);
|
s = new_symbol (MDEBUG_EFI_SYMBOL_NAME);
|
||||||
SYMBOL_DOMAIN (s) = LABEL_DOMAIN;
|
SYMBOL_DOMAIN (s) = LABEL_DOMAIN;
|
||||||
SYMBOL_CLASS (s) = LOC_CONST;
|
SYMBOL_CLASS (s) = LOC_CONST;
|
||||||
SYMBOL_TYPE (s) = mdebug_type_void;
|
SYMBOL_TYPE (s) = builtin_type_void;
|
||||||
e = ((struct mdebug_extra_func_info *)
|
e = ((struct mdebug_extra_func_info *)
|
||||||
obstack_alloc (¤t_objfile->objfile_obstack,
|
obstack_alloc (¤t_objfile->objfile_obstack,
|
||||||
sizeof (struct mdebug_extra_func_info)));
|
sizeof (struct mdebug_extra_func_info)));
|
||||||
|
@ -1350,6 +1322,179 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend,
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Basic types. */
|
||||||
|
|
||||||
|
static const struct objfile_data *basic_type_data;
|
||||||
|
|
||||||
|
static struct type *
|
||||||
|
basic_type (int bt, struct objfile *objfile)
|
||||||
|
{
|
||||||
|
struct gdbarch *gdbarch = get_objfile_arch (objfile);
|
||||||
|
struct type **map_bt = objfile_data (objfile, basic_type_data);
|
||||||
|
struct type *tp;
|
||||||
|
|
||||||
|
if (bt >= btMax)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (!map_bt)
|
||||||
|
{
|
||||||
|
map_bt = OBSTACK_CALLOC (&objfile->objfile_obstack,
|
||||||
|
btMax, struct type *);
|
||||||
|
set_objfile_data (objfile, basic_type_data, map_bt);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (map_bt[bt])
|
||||||
|
return map_bt[bt];
|
||||||
|
|
||||||
|
switch (bt)
|
||||||
|
{
|
||||||
|
case btNil:
|
||||||
|
tp = builtin_type_void;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btAdr:
|
||||||
|
tp = init_type (TYPE_CODE_PTR, 4, TYPE_FLAG_UNSIGNED,
|
||||||
|
"adr_32", objfile);
|
||||||
|
TYPE_TARGET_TYPE (tp) = builtin_type_void;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btChar:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 1, 0,
|
||||||
|
"char", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btUChar:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 1, TYPE_FLAG_UNSIGNED,
|
||||||
|
"unsigned char", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btShort:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 2, 0,
|
||||||
|
"short", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btUShort:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 2, TYPE_FLAG_UNSIGNED,
|
||||||
|
"unsigned short", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btInt:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 4, 0,
|
||||||
|
"int", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btUInt:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
|
||||||
|
"unsigned int", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btLong:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 4, 0,
|
||||||
|
"long", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btULong:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 4, TYPE_FLAG_UNSIGNED,
|
||||||
|
"unsigned long", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btFloat:
|
||||||
|
tp = init_type (TYPE_CODE_FLT,
|
||||||
|
gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT, 0,
|
||||||
|
"float", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btDouble:
|
||||||
|
tp = init_type (TYPE_CODE_FLT,
|
||||||
|
gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT, 0,
|
||||||
|
"double", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btComplex:
|
||||||
|
tp = init_type (TYPE_CODE_COMPLEX,
|
||||||
|
2 * gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT, 0,
|
||||||
|
"complex", objfile);
|
||||||
|
TYPE_TARGET_TYPE (tp) = basic_type (btFloat, objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btDComplex:
|
||||||
|
tp = init_type (TYPE_CODE_COMPLEX,
|
||||||
|
2 * gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT, 0,
|
||||||
|
"double complex", objfile);
|
||||||
|
TYPE_TARGET_TYPE (tp) = basic_type (btDouble, objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btFixedDec:
|
||||||
|
/* We use TYPE_CODE_INT to print these as integers. Does this do any
|
||||||
|
good? Would we be better off with TYPE_CODE_ERROR? Should
|
||||||
|
TYPE_CODE_ERROR print things in hex if it knows the size? */
|
||||||
|
tp = init_type (TYPE_CODE_INT,
|
||||||
|
gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT, 0,
|
||||||
|
"fixed decimal", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btFloatDec:
|
||||||
|
tp = init_type (TYPE_CODE_ERROR,
|
||||||
|
gdbarch_double_bit (gdbarch) / TARGET_CHAR_BIT, 0,
|
||||||
|
"floating decimal", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btString:
|
||||||
|
/* Is a "string" the way btString means it the same as TYPE_CODE_STRING?
|
||||||
|
FIXME. */
|
||||||
|
tp = init_type (TYPE_CODE_STRING, 1, 0,
|
||||||
|
"string", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btVoid:
|
||||||
|
tp = builtin_type_void;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btLong64:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 8, 0,
|
||||||
|
"long", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btULong64:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 8, TYPE_FLAG_UNSIGNED,
|
||||||
|
"unsigned long", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btLongLong64:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 8, 0,
|
||||||
|
"long long", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btULongLong64:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 8, TYPE_FLAG_UNSIGNED,
|
||||||
|
"unsigned long long", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btAdr64:
|
||||||
|
tp = init_type (TYPE_CODE_PTR, 8, TYPE_FLAG_UNSIGNED,
|
||||||
|
"adr_64", objfile);
|
||||||
|
TYPE_TARGET_TYPE (tp) = builtin_type_void;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btInt64:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 8, 0,
|
||||||
|
"int", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case btUInt64:
|
||||||
|
tp = init_type (TYPE_CODE_INT, 8, TYPE_FLAG_UNSIGNED,
|
||||||
|
"unsigned int", objfile);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
tp = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
map_bt[bt] = tp;
|
||||||
|
return tp;
|
||||||
|
}
|
||||||
|
|
||||||
/* Parse the type information provided in the raw AX entries for
|
/* Parse the type information provided in the raw AX entries for
|
||||||
the symbol SH. Return the bitfield size in BS, in case.
|
the symbol SH. Return the bitfield size in BS, in case.
|
||||||
We must byte-swap the AX entries before we use them; BIGEND says whether
|
We must byte-swap the AX entries before we use them; BIGEND says whether
|
||||||
|
@ -1359,78 +1504,27 @@ static struct type *
|
||||||
parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
|
parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
|
||||||
int bigend, char *sym_name)
|
int bigend, char *sym_name)
|
||||||
{
|
{
|
||||||
/* Null entries in this map are treated specially */
|
|
||||||
static struct type **map_bt[] =
|
|
||||||
{
|
|
||||||
&mdebug_type_void, /* btNil */
|
|
||||||
&mdebug_type_adr_32, /* btAdr */
|
|
||||||
&mdebug_type_char, /* btChar */
|
|
||||||
&mdebug_type_unsigned_char, /* btUChar */
|
|
||||||
&mdebug_type_short, /* btShort */
|
|
||||||
&mdebug_type_unsigned_short, /* btUShort */
|
|
||||||
&mdebug_type_int_32, /* btInt */
|
|
||||||
&mdebug_type_unsigned_int_32, /* btUInt */
|
|
||||||
&mdebug_type_long_32, /* btLong */
|
|
||||||
&mdebug_type_unsigned_long_32, /* btULong */
|
|
||||||
&mdebug_type_float, /* btFloat */
|
|
||||||
&mdebug_type_double, /* btDouble */
|
|
||||||
0, /* btStruct */
|
|
||||||
0, /* btUnion */
|
|
||||||
0, /* btEnum */
|
|
||||||
0, /* btTypedef */
|
|
||||||
0, /* btRange */
|
|
||||||
0, /* btSet */
|
|
||||||
&mdebug_type_complex, /* btComplex */
|
|
||||||
&mdebug_type_double_complex, /* btDComplex */
|
|
||||||
0, /* btIndirect */
|
|
||||||
&mdebug_type_fixed_dec, /* btFixedDec */
|
|
||||||
&mdebug_type_float_dec, /* btFloatDec */
|
|
||||||
&mdebug_type_string, /* btString */
|
|
||||||
0, /* btBit */
|
|
||||||
0, /* btPicture */
|
|
||||||
&mdebug_type_void, /* btVoid */
|
|
||||||
0, /* DEC C++: Pointer to member */
|
|
||||||
0, /* DEC C++: Virtual function table */
|
|
||||||
0, /* DEC C++: Class (Record) */
|
|
||||||
&mdebug_type_long_64, /* btLong64 */
|
|
||||||
&mdebug_type_unsigned_long_64, /* btULong64 */
|
|
||||||
&mdebug_type_long_long_64, /* btLongLong64 */
|
|
||||||
&mdebug_type_unsigned_long_long_64, /* btULongLong64 */
|
|
||||||
&mdebug_type_adr_64, /* btAdr64 */
|
|
||||||
&mdebug_type_int_64, /* btInt64 */
|
|
||||||
&mdebug_type_unsigned_int_64, /* btUInt64 */
|
|
||||||
};
|
|
||||||
|
|
||||||
TIR t[1];
|
TIR t[1];
|
||||||
struct type *tp = 0;
|
struct type *tp = 0;
|
||||||
enum type_code type_code = TYPE_CODE_UNDEF;
|
enum type_code type_code = TYPE_CODE_UNDEF;
|
||||||
|
|
||||||
/* Handle undefined types, they have indexNil. */
|
/* Handle undefined types, they have indexNil. */
|
||||||
if (aux_index == indexNil)
|
if (aux_index == indexNil)
|
||||||
return mdebug_type_int;
|
return basic_type (btInt, current_objfile);
|
||||||
|
|
||||||
/* Handle corrupt aux indices. */
|
/* Handle corrupt aux indices. */
|
||||||
if (aux_index >= (debug_info->fdr + fd)->caux)
|
if (aux_index >= (debug_info->fdr + fd)->caux)
|
||||||
{
|
{
|
||||||
index_complaint (sym_name);
|
index_complaint (sym_name);
|
||||||
return mdebug_type_int;
|
return basic_type (btInt, current_objfile);
|
||||||
}
|
}
|
||||||
ax += aux_index;
|
ax += aux_index;
|
||||||
|
|
||||||
/* Use aux as a type information record, map its basic type. */
|
/* Use aux as a type information record, map its basic type. */
|
||||||
(*debug_swap->swap_tir_in) (bigend, &ax->a_ti, t);
|
(*debug_swap->swap_tir_in) (bigend, &ax->a_ti, t);
|
||||||
if (t->bt >= (sizeof (map_bt) / sizeof (*map_bt)))
|
tp = basic_type (t->bt, current_objfile);
|
||||||
|
if (tp == NULL)
|
||||||
{
|
{
|
||||||
basic_type_complaint (t->bt, sym_name);
|
|
||||||
return mdebug_type_int;
|
|
||||||
}
|
|
||||||
if (map_bt[t->bt])
|
|
||||||
{
|
|
||||||
tp = *map_bt[t->bt];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tp = NULL;
|
|
||||||
/* Cannot use builtin types -- build our own */
|
/* Cannot use builtin types -- build our own */
|
||||||
switch (t->bt)
|
switch (t->bt)
|
||||||
{
|
{
|
||||||
|
@ -1461,7 +1555,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
basic_type_complaint (t->bt, sym_name);
|
basic_type_complaint (t->bt, sym_name);
|
||||||
return mdebug_type_int;
|
return basic_type (btInt, current_objfile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1478,9 +1572,9 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
|
||||||
as short and unsigned short types with a field width of 8.
|
as short and unsigned short types with a field width of 8.
|
||||||
Enum types also have a field width which we ignore for now. */
|
Enum types also have a field width which we ignore for now. */
|
||||||
if (t->bt == btShort && width == 8)
|
if (t->bt == btShort && width == 8)
|
||||||
tp = mdebug_type_char;
|
tp = basic_type (btChar, current_objfile);
|
||||||
else if (t->bt == btUShort && width == 8)
|
else if (t->bt == btUShort && width == 8)
|
||||||
tp = mdebug_type_unsigned_char;
|
tp = basic_type (btUChar, current_objfile);
|
||||||
else if (t->bt == btEnum)
|
else if (t->bt == btEnum)
|
||||||
;
|
;
|
||||||
else
|
else
|
||||||
|
@ -1515,7 +1609,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
|
||||||
{
|
{
|
||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("unable to cross ref btIndirect for %s"), sym_name);
|
_("unable to cross ref btIndirect for %s"), sym_name);
|
||||||
return mdebug_type_int;
|
return basic_type (btInt, current_objfile);
|
||||||
}
|
}
|
||||||
xref_fh = get_rfd (fd, rf);
|
xref_fh = get_rfd (fd, rf);
|
||||||
xref_fd = xref_fh - debug_info->fdr;
|
xref_fd = xref_fh - debug_info->fdr;
|
||||||
|
@ -1632,7 +1726,7 @@ parse_type (int fd, union aux_ext *ax, unsigned int aux_index, int *bs,
|
||||||
{
|
{
|
||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("unable to cross ref btTypedef for %s"), sym_name);
|
_("unable to cross ref btTypedef for %s"), sym_name);
|
||||||
tp = mdebug_type_int;
|
tp = basic_type (btInt, current_objfile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1745,7 +1839,7 @@ upgrade_type (int fd, struct type **tpp, int tq, union aux_ext *ax, int bigend,
|
||||||
{
|
{
|
||||||
complaint (&symfile_complaints,
|
complaint (&symfile_complaints,
|
||||||
_("illegal array index type for %s, assuming int"), sym_name);
|
_("illegal array index type for %s, assuming int"), sym_name);
|
||||||
indx = mdebug_type_int;
|
indx = builtin_type_int32;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the bounds, and create the array type. */
|
/* Get the bounds, and create the array type. */
|
||||||
|
@ -1897,7 +1991,8 @@ parse_procedure (PDR *pr, struct symtab *search_symtab,
|
||||||
SYMBOL_DOMAIN (s) = VAR_DOMAIN;
|
SYMBOL_DOMAIN (s) = VAR_DOMAIN;
|
||||||
SYMBOL_CLASS (s) = LOC_BLOCK;
|
SYMBOL_CLASS (s) = LOC_BLOCK;
|
||||||
/* Donno its type, hope int is ok */
|
/* Donno its type, hope int is ok */
|
||||||
SYMBOL_TYPE (s) = lookup_function_type (mdebug_type_int);
|
SYMBOL_TYPE (s)
|
||||||
|
= lookup_function_type (builtin_type (gdbarch)->builtin_int);
|
||||||
add_symbol (s, top_stack->cur_st, top_stack->cur_block);
|
add_symbol (s, top_stack->cur_st, top_stack->cur_block);
|
||||||
/* Wont have symbols for this one */
|
/* Wont have symbols for this one */
|
||||||
b = new_block (2);
|
b = new_block (2);
|
||||||
|
@ -3937,7 +4032,7 @@ psymtab_to_symtab_1 (struct partial_symtab *pst, char *filename)
|
||||||
memset (e, 0, sizeof (struct mdebug_extra_func_info));
|
memset (e, 0, sizeof (struct mdebug_extra_func_info));
|
||||||
SYMBOL_DOMAIN (s) = LABEL_DOMAIN;
|
SYMBOL_DOMAIN (s) = LABEL_DOMAIN;
|
||||||
SYMBOL_CLASS (s) = LOC_CONST;
|
SYMBOL_CLASS (s) = LOC_CONST;
|
||||||
SYMBOL_TYPE (s) = mdebug_type_void;
|
SYMBOL_TYPE (s) = builtin_type_void;
|
||||||
SYMBOL_VALUE_BYTES (s) = (gdb_byte *) e;
|
SYMBOL_VALUE_BYTES (s) = (gdb_byte *) e;
|
||||||
e->pdr.framereg = -1;
|
e->pdr.framereg = -1;
|
||||||
add_symbol_to_list (s, &local_symbols);
|
add_symbol_to_list (s, &local_symbols);
|
||||||
|
@ -4739,115 +4834,5 @@ elfmdebug_build_psymtabs (struct objfile *objfile,
|
||||||
void
|
void
|
||||||
_initialize_mdebugread (void)
|
_initialize_mdebugread (void)
|
||||||
{
|
{
|
||||||
mdebug_type_void =
|
basic_type_data = register_objfile_data ();
|
||||||
init_type (TYPE_CODE_VOID, 1,
|
|
||||||
0,
|
|
||||||
"void", (struct objfile *) NULL);
|
|
||||||
mdebug_type_char =
|
|
||||||
init_type (TYPE_CODE_INT, 1,
|
|
||||||
0,
|
|
||||||
"char", (struct objfile *) NULL);
|
|
||||||
mdebug_type_unsigned_char =
|
|
||||||
init_type (TYPE_CODE_INT, 1,
|
|
||||||
TYPE_FLAG_UNSIGNED,
|
|
||||||
"unsigned char", (struct objfile *) NULL);
|
|
||||||
mdebug_type_short =
|
|
||||||
init_type (TYPE_CODE_INT, 2,
|
|
||||||
0,
|
|
||||||
"short", (struct objfile *) NULL);
|
|
||||||
mdebug_type_unsigned_short =
|
|
||||||
init_type (TYPE_CODE_INT, 2,
|
|
||||||
TYPE_FLAG_UNSIGNED,
|
|
||||||
"unsigned short", (struct objfile *) NULL);
|
|
||||||
mdebug_type_int_32 =
|
|
||||||
init_type (TYPE_CODE_INT, 4,
|
|
||||||
0,
|
|
||||||
"int", (struct objfile *) NULL);
|
|
||||||
mdebug_type_unsigned_int_32 =
|
|
||||||
init_type (TYPE_CODE_INT, 4,
|
|
||||||
TYPE_FLAG_UNSIGNED,
|
|
||||||
"unsigned int", (struct objfile *) NULL);
|
|
||||||
mdebug_type_int_64 =
|
|
||||||
init_type (TYPE_CODE_INT, 8,
|
|
||||||
0,
|
|
||||||
"int", (struct objfile *) NULL);
|
|
||||||
mdebug_type_unsigned_int_64 =
|
|
||||||
init_type (TYPE_CODE_INT, 8,
|
|
||||||
TYPE_FLAG_UNSIGNED,
|
|
||||||
"unsigned int", (struct objfile *) NULL);
|
|
||||||
mdebug_type_long_32 =
|
|
||||||
init_type (TYPE_CODE_INT, 4,
|
|
||||||
0,
|
|
||||||
"long", (struct objfile *) NULL);
|
|
||||||
mdebug_type_unsigned_long_32 =
|
|
||||||
init_type (TYPE_CODE_INT, 4,
|
|
||||||
TYPE_FLAG_UNSIGNED,
|
|
||||||
"unsigned long", (struct objfile *) NULL);
|
|
||||||
mdebug_type_long_64 =
|
|
||||||
init_type (TYPE_CODE_INT, 8,
|
|
||||||
0,
|
|
||||||
"long", (struct objfile *) NULL);
|
|
||||||
mdebug_type_unsigned_long_64 =
|
|
||||||
init_type (TYPE_CODE_INT, 8,
|
|
||||||
TYPE_FLAG_UNSIGNED,
|
|
||||||
"unsigned long", (struct objfile *) NULL);
|
|
||||||
mdebug_type_long_long_64 =
|
|
||||||
init_type (TYPE_CODE_INT, 8,
|
|
||||||
0,
|
|
||||||
"long long", (struct objfile *) NULL);
|
|
||||||
mdebug_type_unsigned_long_long_64 =
|
|
||||||
init_type (TYPE_CODE_INT, 8,
|
|
||||||
TYPE_FLAG_UNSIGNED,
|
|
||||||
"unsigned long long", (struct objfile *) NULL);
|
|
||||||
mdebug_type_adr_32 =
|
|
||||||
init_type (TYPE_CODE_PTR, 4,
|
|
||||||
TYPE_FLAG_UNSIGNED,
|
|
||||||
"adr_32", (struct objfile *) NULL);
|
|
||||||
TYPE_TARGET_TYPE (mdebug_type_adr_32) = mdebug_type_void;
|
|
||||||
mdebug_type_adr_64 =
|
|
||||||
init_type (TYPE_CODE_PTR, 8,
|
|
||||||
TYPE_FLAG_UNSIGNED,
|
|
||||||
"adr_64", (struct objfile *) NULL);
|
|
||||||
TYPE_TARGET_TYPE (mdebug_type_adr_64) = mdebug_type_void;
|
|
||||||
mdebug_type_float =
|
|
||||||
init_type (TYPE_CODE_FLT,
|
|
||||||
gdbarch_float_bit (current_gdbarch) / TARGET_CHAR_BIT,
|
|
||||||
0, "float", (struct objfile *) NULL);
|
|
||||||
mdebug_type_double =
|
|
||||||
init_type (TYPE_CODE_FLT,
|
|
||||||
gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT,
|
|
||||||
0, "double", (struct objfile *) NULL);
|
|
||||||
mdebug_type_complex =
|
|
||||||
init_type (TYPE_CODE_COMPLEX,
|
|
||||||
2 * gdbarch_float_bit (current_gdbarch) / TARGET_CHAR_BIT,
|
|
||||||
0, "complex", (struct objfile *) NULL);
|
|
||||||
TYPE_TARGET_TYPE (mdebug_type_complex) = mdebug_type_float;
|
|
||||||
mdebug_type_double_complex =
|
|
||||||
init_type (TYPE_CODE_COMPLEX,
|
|
||||||
2 * gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT,
|
|
||||||
0, "double complex", (struct objfile *) NULL);
|
|
||||||
TYPE_TARGET_TYPE (mdebug_type_double_complex) = mdebug_type_double;
|
|
||||||
|
|
||||||
/* Is a "string" the way btString means it the same as TYPE_CODE_STRING?
|
|
||||||
FIXME. */
|
|
||||||
mdebug_type_string =
|
|
||||||
init_type (TYPE_CODE_STRING,
|
|
||||||
TARGET_CHAR_BIT / TARGET_CHAR_BIT,
|
|
||||||
0, "string",
|
|
||||||
(struct objfile *) NULL);
|
|
||||||
|
|
||||||
/* We use TYPE_CODE_INT to print these as integers. Does this do any
|
|
||||||
good? Would we be better off with TYPE_CODE_ERROR? Should
|
|
||||||
TYPE_CODE_ERROR print things in hex if it knows the size? */
|
|
||||||
mdebug_type_fixed_dec =
|
|
||||||
init_type (TYPE_CODE_INT,
|
|
||||||
gdbarch_int_bit (current_gdbarch) / TARGET_CHAR_BIT,
|
|
||||||
0, "fixed decimal",
|
|
||||||
(struct objfile *) NULL);
|
|
||||||
|
|
||||||
mdebug_type_float_dec =
|
|
||||||
init_type (TYPE_CODE_ERROR,
|
|
||||||
gdbarch_double_bit (current_gdbarch) / TARGET_CHAR_BIT,
|
|
||||||
0, "floating decimal",
|
|
||||||
(struct objfile *) NULL);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2009-06-03 Ulrich Weigand <uweigand@de.ibm.com>
|
||||||
|
|
||||||
|
* symconst.h (btLong64, btULong64, btLongLong64, btULongLong64,
|
||||||
|
btAdr64, btInt64, btUInt64): New defines.
|
||||||
|
|
||||||
2009-04-21 Kai Tietz <kai.tietz@onevision.com>
|
2009-04-21 Kai Tietz <kai.tietz@onevision.com>
|
||||||
|
|
||||||
* pe.h (pex64_runtime_function): New structure.
|
* pe.h (pex64_runtime_function): New structure.
|
||||||
|
|
|
@ -163,6 +163,13 @@
|
||||||
#define btVoid 26 /* void */
|
#define btVoid 26 /* void */
|
||||||
#define btLongLong 27 /* long long */
|
#define btLongLong 27 /* long long */
|
||||||
#define btULongLong 28 /* unsigned long long */
|
#define btULongLong 28 /* unsigned long long */
|
||||||
|
#define btLong64 30 /* long (64-bit) */
|
||||||
|
#define btULong64 31 /* unsigned long (64-bit) */
|
||||||
|
#define btLongLong64 32 /* long long (64-bit) */
|
||||||
|
#define btULongLong64 33 /* unsigned long long (64-bit) */
|
||||||
|
#define btAdr64 34 /* address (64-bit) */
|
||||||
|
#define btInt64 35 /* int (64-bit) */
|
||||||
|
#define btUInt64 36 /* unsigned int (64-bit) */
|
||||||
#define btMax 64
|
#define btMax 64
|
||||||
|
|
||||||
#if (_MFG == _MIPS)
|
#if (_MFG == _MIPS)
|
||||||
|
|
Loading…
Reference in New Issue