mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-29 06:50:32 +00:00
Make structs work on DECstation (sigh)
This commit is contained in:
parent
52bd2c221f
commit
67c29f758d
@ -4,7 +4,7 @@ Wed Nov 27 01:23:41 1991 John Gilmore (gnu at cygnus.com)
|
||||
|
||||
* symtab.h: target_type is not used in record types.
|
||||
Eliminate TYPE_MAIN_VARIANT and TYPE_NEXT_VARIANT. Eliminate
|
||||
lookup_method_type.
|
||||
lookup_method_type. Add TYPE_TYPE_SPECIFIC macro.
|
||||
|
||||
* symtab.c (lookup_member_type): Don't chain them up, just
|
||||
allocate one in symbol_obstack when we need one.
|
||||
@ -30,6 +30,8 @@ Wed Nov 27 01:23:41 1991 John Gilmore (gnu at cygnus.com)
|
||||
* mipsread.c: Eliminate "template" types. Build new, real
|
||||
types whenever we need them. Allocate cplus structures as needed.
|
||||
Bulletproof the type parsing a bit more. Mark storage leaks.
|
||||
(parse_type): Copy TYPE_TYPE_SPECIFIC when copying a real type
|
||||
on top of a partial type.
|
||||
|
||||
Fri Nov 22 16:39:57 1991 John Gilmore (gnu at cygnus.com)
|
||||
|
||||
|
@ -1056,6 +1056,7 @@ static struct type *parse_type(ax, sh, bs)
|
||||
TIR *t;
|
||||
struct type *tp = 0, *tp1;
|
||||
char *fmt;
|
||||
int i;
|
||||
|
||||
/* Procedures start off by one */
|
||||
if (sh->st == stProc || sh->st == stStaticProc)
|
||||
@ -1150,11 +1151,15 @@ static struct type *parse_type(ax, sh, bs)
|
||||
*/
|
||||
TYPE_CODE(tp1) = TYPE_CODE(tp);
|
||||
TYPE_NAME(tp1) = obsavestring(name, strlen(name));
|
||||
if (TYPE_CODE(tp1) == TYPE_CODE_ENUM) {
|
||||
int i;
|
||||
TYPE_TYPE_SPECIFIC(tp1) = TYPE_TYPE_SPECIFIC(tp);
|
||||
|
||||
/* Now do cleanup based on the final type. */
|
||||
switch (TYPE_CODE (tp1)) {
|
||||
case TYPE_CODE_ENUM:
|
||||
for (i = 0; i < TYPE_NFIELDS(tp1); i++)
|
||||
make_enum_constant(&TYPE_FIELD(tp1,i), tp1);
|
||||
make_enum_constant(&TYPE_FIELD(tp1,i),
|
||||
tp1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (tp1 != tp) {
|
||||
|
@ -195,7 +195,7 @@ struct type
|
||||
int vptr_fieldno;
|
||||
|
||||
/* Slot to point to additional language-specific fields of this type. */
|
||||
union
|
||||
union type_specific
|
||||
{
|
||||
struct type **arg_types;
|
||||
struct cplus_struct_type *cplus_stuff;
|
||||
@ -674,6 +674,7 @@ int current_source_line;
|
||||
#define TYPE_FN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->fn_fields
|
||||
#define TYPE_NFN_FIELDS(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields
|
||||
#define TYPE_NFN_FIELDS_TOTAL(thistype) TYPE_CPLUS_SPECIFIC(thistype)->nfn_fields_total
|
||||
#define TYPE_TYPE_SPECIFIC(thistype) (thistype)->type_specific
|
||||
#define TYPE_ARG_TYPES(thistype) (thistype)->type_specific.arg_types
|
||||
#define TYPE_CPLUS_SPECIFIC(thistype) (thistype)->type_specific.cplus_stuff
|
||||
#define TYPE_BASECLASS(thistype,index) (thistype)->fields[index].type
|
||||
|
Loading…
Reference in New Issue
Block a user