From: Doug Evans Date: Sun, 1 Feb 2015 05:13:02 +0000 (-0800) Subject: gdbtypes.c (copy_type_recursive): Handle all TYPE_SPECIFIC_FIELD kinds. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f6b3afbf2fce69c31bd738e0543c55fbd848e74a;p=binutils-gdb.git gdbtypes.c (copy_type_recursive): Handle all TYPE_SPECIFIC_FIELD kinds. gdb/ChangeLog: * gdbtypes.c (copy_type_recursive): Handle all TYPE_SPECIFIC_FIELD kinds. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e88cd57e1a4..46b94c3687b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2015-01-31 Doug Evans + + * gdbtypes.c (copy_type_recursive): Handle all TYPE_SPECIFIC_FIELD + kinds. + 2015-01-31 Gary Benson Doug Evans diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index e6e402eca0b..0c34e62688a 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -4217,18 +4217,35 @@ copy_type_recursive (struct objfile *objfile, copy_type_recursive (objfile, TYPE_VPTR_BASETYPE (type), copied_types); + /* Maybe copy the type_specific bits. NOTE drow/2005-12-09: We do not copy the C++-specific bits like base classes and methods. There's no fundamental reason why we can't, but at the moment it is not needed. */ - if (TYPE_CODE (type) == TYPE_CODE_FLT) - TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type); - else if (TYPE_CODE (type) == TYPE_CODE_STRUCT - || TYPE_CODE (type) == TYPE_CODE_UNION - || TYPE_CODE (type) == TYPE_CODE_NAMESPACE) - INIT_CPLUS_SPECIFIC (new_type); + switch (TYPE_SPECIFIC_FIELD (type)) + { + case TYPE_SPECIFIC_NONE: + break; + case TYPE_SPECIFIC_FUNC: + INIT_FUNC_SPECIFIC (new_type); + TYPE_CALLING_CONVENTION (new_type) = TYPE_CALLING_CONVENTION (type); + TYPE_NO_RETURN (new_type) = TYPE_NO_RETURN (type); + TYPE_TAIL_CALL_LIST (new_type) = NULL; + break; + case TYPE_SPECIFIC_FLOATFORMAT: + TYPE_FLOATFORMAT (new_type) = TYPE_FLOATFORMAT (type); + break; + case TYPE_SPECIFIC_CPLUS_STUFF: + INIT_CPLUS_SPECIFIC (new_type); + break; + case TYPE_SPECIFIC_GNAT_STUFF: + INIT_GNAT_SPECIFIC (new_type); + break; + default: + gdb_assert_not_reached ("bad type_specific_kind"); + } return new_type; }