mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
* valops.c (value_at, value_at_lazy): Give error if we dereference
a pointer to void. * gdbtypes.h: Fix comments regarding TYPE_CODE_VOID. * stabsread.c: Use 1, not 0, for TYPE_LENGTH of void types.
This commit is contained in:
parent
9d7f682f8c
commit
2f3b7d8eb5
@ -1,5 +1,10 @@
|
||||
Thu Mar 24 07:12:09 1994 Jim Kingdon (kingdon@lioth.cygnus.com)
|
||||
|
||||
* valops.c (value_at, value_at_lazy): Give error if we dereference
|
||||
a pointer to void.
|
||||
* gdbtypes.h: Fix comments regarding TYPE_CODE_VOID.
|
||||
* stabsread.c: Use 1, not 0, for TYPE_LENGTH of void types.
|
||||
|
||||
* stabsread.c (patch_block_stabs): Add comment about what happens
|
||||
if the definition is in another compilation unit from the stab.
|
||||
|
||||
|
@ -86,7 +86,11 @@ enum type_code
|
||||
of GDB which bogusly assume that TYPE_CODE_FLT can mean complex. */
|
||||
TYPE_CODE_FLT,
|
||||
|
||||
/* Void type (values zero length; the length field is ignored). */
|
||||
/* Void type. The length field specifies the length (probably always
|
||||
one) which is used in pointer arithmetic involving pointers to
|
||||
this type, but actually dereferencing such a pointer is invalid;
|
||||
a void type has no length and no actual representation in memory
|
||||
or registers. A pointer to a void type is a generic pointer. */
|
||||
TYPE_CODE_VOID,
|
||||
|
||||
TYPE_CODE_SET, /* Pascal sets */
|
||||
|
@ -1487,7 +1487,7 @@ read_type (pp, objfile)
|
||||
|
||||
if (typenums[0] == xtypenums[0] && typenums[1] == xtypenums[1])
|
||||
/* It's being defined as itself. That means it is "void". */
|
||||
type = init_type (TYPE_CODE_VOID, 0, 0, NULL, objfile);
|
||||
type = init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
|
||||
else
|
||||
{
|
||||
struct type *xtype;
|
||||
@ -1783,7 +1783,7 @@ rs6000_builtin_type (typenum)
|
||||
"unsigned long", NULL);
|
||||
break;
|
||||
case 11:
|
||||
rettype = init_type (TYPE_CODE_VOID, 0, 0, "void", NULL);
|
||||
rettype = init_type (TYPE_CODE_VOID, 1, 0, "void", NULL);
|
||||
break;
|
||||
case 12:
|
||||
/* IEEE single precision (32 bit). */
|
||||
@ -3150,10 +3150,15 @@ read_sun_builtin_type (pp, typenums, objfile)
|
||||
if (**pp == ';')
|
||||
++(*pp);
|
||||
|
||||
return init_type (type_bits == 0 ? TYPE_CODE_VOID : TYPE_CODE_INT,
|
||||
type_bits / TARGET_CHAR_BIT,
|
||||
signed_type ? 0 : TYPE_FLAG_UNSIGNED, (char *)NULL,
|
||||
objfile);
|
||||
if (type_bits == 0)
|
||||
return init_type (TYPE_CODE_VOID, 1,
|
||||
signed_type ? 0 : TYPE_FLAG_UNSIGNED, (char *)NULL,
|
||||
objfile);
|
||||
else
|
||||
return init_type (TYPE_CODE_INT,
|
||||
type_bits / TARGET_CHAR_BIT,
|
||||
signed_type ? 0 : TYPE_FLAG_UNSIGNED, (char *)NULL,
|
||||
objfile);
|
||||
}
|
||||
|
||||
static struct type *
|
||||
@ -3371,7 +3376,7 @@ read_range_type (pp, typenums, objfile)
|
||||
|
||||
/* A type defined as a subrange of itself, with bounds both 0, is void. */
|
||||
if (self_subrange && n2 == 0 && n3 == 0)
|
||||
return init_type (TYPE_CODE_VOID, 0, 0, NULL, objfile);
|
||||
return init_type (TYPE_CODE_VOID, 1, 0, NULL, objfile);
|
||||
|
||||
/* If n3 is zero and n2 is not, we want a floating type,
|
||||
and n2 is the width in bytes.
|
||||
|
Loading…
Reference in New Issue
Block a user