This is the method used by Sun's acc
for defining builtin types.
These are the type descriptors to define builtin types:
b signed char-flag width ; offset ; nbits ;
u
' for unsigned or
`s
' for signed. char-flag is `c
' which indicates this
is a character type, or is omitted. I assume this is to distinguish an
integral type from a character type of the same size, for example it
might make sense to set it for the C type wchar_t
so the debugger
can print such variables differently (Solaris does not do this). Sun
sets it on the C types signed char
and unsigned char
which
arguably is wrong. width and offset appear to be for small
objects stored in larger ones, for example a short
in an
int
register. width is normally the number of bytes in the
type. offset seems to always be zero. nbits is the number
of bits in the type.
Note that type descriptor `b
' used for builtin types conflicts with
its use for Pascal space types (see Miscellaneous Types); they can
be distinguished because the character following the type descriptor
will be a digit, `(
', or `-
' for a Pascal space type, or
`u
' or `s
' for a builtin type.
w
R fp-type ; bytes ;
1 (NF_SINGLE)
2 (NF_DOUBLE)
3 (NF_COMPLEX)
4 (NF_COMPLEX16)
5 (NF_COMPLEX32)
complex
, double complex
, and
complex*16
, respectively, but what does that mean? (i.e., Single
precision? Double precison?).
6 (NF_LDOUBLE)
long double
, and new codes should be used for other floating
point formats (NF_DOUBLE
can be used if a long double
is
really just an IEEE double, of course).
bytes is the number of bytes occupied by the type. This allows a debugger to perform some operations with the type even if it doesn't understand fp-type.
g type-information ; nbits
c type-information ; nbits
The C void
type is defined as a signed integral type 0 bits long:
.stabs "void:t19=bs0;0;0",128,0,0,0
The Solaris compiler seems to omit the trailing semicolon in this case. Getting sloppy in this way is not a swift move because if a type is embedded in a more complex expression it is necessary to be able to tell where it ends.
I'm not sure how a boolean type is represented.
Packaging copyright © 1988-2000 OAR Corporation
Context copyright by each document's author. See Free Software Foundation for information.