* dwarfread.c (struct dieinfo): Add has_at_byte_size.
* dwarfread.c (struct_type): In absence of AT_byte_size for bitfield, use size of object of member's type for the size of the anonymous object containing the bit field. * dwarfread.c (completedieinfo): Set has_at_byte_size when an AT_byte_size attribute is seen. * mipsread.c (psymtab_to_symtab_1): Fix misspelled cast to union aux_ext (was aux_ent). * i386-pinsn.c (print_insn): Cast 2'nd arg to read_memory from unsigned char* to char*, for Lucid compiler. * i386-tdep.c (codestream_fill): Fix cast of 2'nd arg to read_memory to be correct type (from unsigned char* to char*). * valprint.c (type_print_derivation_info): Minor tweak to placement of commas in derived class printing. * xcoffread.c (builtin_type): Fix misspelling in fatal message.
This commit is contained in:
parent
1815e42cc3
commit
50055e94a1
|
@ -1,3 +1,21 @@
|
||||||
|
Sat Aug 8 23:12:22 1992 Fred Fish (fnf@cygnus.com)
|
||||||
|
|
||||||
|
* dwarfread.c (struct dieinfo): Add has_at_byte_size.
|
||||||
|
* dwarfread.c (struct_type): In absence of AT_byte_size for
|
||||||
|
bitfield, use size of object of member's type for the size of
|
||||||
|
the anonymous object containing the bit field.
|
||||||
|
* dwarfread.c (completedieinfo): Set has_at_byte_size when
|
||||||
|
an AT_byte_size attribute is seen.
|
||||||
|
* mipsread.c (psymtab_to_symtab_1): Fix misspelled cast to
|
||||||
|
union aux_ext (was aux_ent).
|
||||||
|
* i386-pinsn.c (print_insn): Cast 2'nd arg to read_memory from
|
||||||
|
unsigned char* to char*, for Lucid compiler.
|
||||||
|
* i386-tdep.c (codestream_fill): Fix cast of 2'nd arg to read_memory
|
||||||
|
to be correct type (from unsigned char* to char*).
|
||||||
|
* valprint.c (type_print_derivation_info): Minor tweak to placement
|
||||||
|
of commas in derived class printing.
|
||||||
|
* xcoffread.c (builtin_type): Fix misspelling in fatal message.
|
||||||
|
|
||||||
Fri Aug 7 11:18:23 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
Fri Aug 7 11:18:23 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||||
|
|
||||||
* xm-go32.h: Define LSEEK_NOT_LINEAR
|
* xm-go32.h: Define LSEEK_NOT_LINEAR
|
||||||
|
|
|
@ -204,6 +204,7 @@ struct dieinfo {
|
||||||
char * at_prototyped;
|
char * at_prototyped;
|
||||||
unsigned int has_at_low_pc:1;
|
unsigned int has_at_low_pc:1;
|
||||||
unsigned int has_at_stmt_list:1;
|
unsigned int has_at_stmt_list:1;
|
||||||
|
unsigned int has_at_byte_size:1;
|
||||||
unsigned int short_element_list:1;
|
unsigned int short_element_list:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -807,6 +808,7 @@ struct_type (dip, thisdie, enddie, objfile)
|
||||||
char *tpart1;
|
char *tpart1;
|
||||||
struct dieinfo mbr;
|
struct dieinfo mbr;
|
||||||
char *nextdie;
|
char *nextdie;
|
||||||
|
int anonymous_size;
|
||||||
|
|
||||||
if ((type = lookup_utype (dip -> die_ref)) == NULL)
|
if ((type = lookup_utype (dip -> die_ref)) == NULL)
|
||||||
{
|
{
|
||||||
|
@ -841,10 +843,12 @@ struct_type (dip, thisdie, enddie, objfile)
|
||||||
TYPE_NAME (type) = obconcat (&objfile -> type_obstack,
|
TYPE_NAME (type) = obconcat (&objfile -> type_obstack,
|
||||||
tpart1, " ", dip -> at_name);
|
tpart1, " ", dip -> at_name);
|
||||||
}
|
}
|
||||||
if (dip -> at_byte_size != 0)
|
/* Use whatever size is known. Zero is a valid size. We might however
|
||||||
{
|
wish to check has_at_byte_size to make sure that some byte size was
|
||||||
TYPE_LENGTH (type) = dip -> at_byte_size;
|
given explicitly, but DWARF doesn't specify that explicit sizes of
|
||||||
}
|
zero have to present, so complaining about missing sizes should
|
||||||
|
probably not be the default. */
|
||||||
|
TYPE_LENGTH (type) = dip -> at_byte_size;
|
||||||
thisdie += dip -> die_length;
|
thisdie += dip -> die_length;
|
||||||
while (thisdie < enddie)
|
while (thisdie < enddie)
|
||||||
{
|
{
|
||||||
|
@ -892,8 +896,22 @@ struct_type (dip, thisdie, enddie, objfile)
|
||||||
itself. The result is the bit offset of the LSB of the field. */
|
itself. The result is the bit offset of the LSB of the field. */
|
||||||
if (mbr.at_bit_size > 0)
|
if (mbr.at_bit_size > 0)
|
||||||
{
|
{
|
||||||
|
if (mbr.has_at_byte_size)
|
||||||
|
{
|
||||||
|
/* The size of the anonymous object containing the bit field
|
||||||
|
is explicit, so use the indicated size (in bytes). */
|
||||||
|
anonymous_size = mbr.at_byte_size;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* The size of the anonymous object containing the bit field
|
||||||
|
matches the size of an object of the bit field's type.
|
||||||
|
DWARF allows at_byte_size to be left out in such cases,
|
||||||
|
as a debug information size optimization. */
|
||||||
|
anonymous_size = TYPE_LENGTH (list -> field.type);
|
||||||
|
}
|
||||||
list -> field.bitpos +=
|
list -> field.bitpos +=
|
||||||
mbr.at_byte_size * 8 - mbr.at_bit_offset - mbr.at_bit_size;
|
anonymous_size * 8 - mbr.at_bit_offset - mbr.at_bit_size;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
nfields++;
|
nfields++;
|
||||||
|
@ -3224,6 +3242,7 @@ completedieinfo (dip, objfile)
|
||||||
case AT_byte_size:
|
case AT_byte_size:
|
||||||
dip -> at_byte_size = target_to_host (diep, nbytes, GET_UNSIGNED,
|
dip -> at_byte_size = target_to_host (diep, nbytes, GET_UNSIGNED,
|
||||||
objfile);
|
objfile);
|
||||||
|
dip -> has_at_byte_size = 1;
|
||||||
break;
|
break;
|
||||||
case AT_bit_size:
|
case AT_bit_size:
|
||||||
dip -> at_bit_size = target_to_host (diep, nbytes, GET_UNSIGNED,
|
dip -> at_bit_size = target_to_host (diep, nbytes, GET_UNSIGNED,
|
||||||
|
|
|
@ -1890,7 +1890,7 @@ print_insn (memaddr, stream)
|
||||||
{
|
{
|
||||||
unsigned char buffer[MAXLEN];
|
unsigned char buffer[MAXLEN];
|
||||||
|
|
||||||
read_memory (memaddr, buffer, MAXLEN);
|
read_memory (memaddr, (char *) buffer, MAXLEN);
|
||||||
|
|
||||||
return (i386dis ((int)memaddr, buffer, stream));
|
return (i386dis ((int)memaddr, buffer, stream));
|
||||||
}
|
}
|
||||||
|
|
|
@ -2383,6 +2383,6 @@ struct type *
|
||||||
builtin_type (ignore)
|
builtin_type (ignore)
|
||||||
char **ignore;
|
char **ignore;
|
||||||
{
|
{
|
||||||
fatal ("GDB internal eror: builtin_type called on non-RS/6000!");
|
fatal ("GDB internal error: builtin_type called on non-RS/6000!");
|
||||||
}
|
}
|
||||||
#endif /* IBM6000_HOST */
|
#endif /* IBM6000_HOST */
|
||||||
|
|
Loading…
Reference in New Issue