1 /* Definitions and structures for reading debug symbols from the
4 Written by the Center for Software Science at the University of Utah
7 Copyright 1994 Free Software Foundation, Inc.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
23 #ifndef HP_SYMTAB_INCLUDED
24 #define HP_SYMTAB_INCLUDED
26 /* General information:
28 This header file defines and describes only the basic data structures
29 necessary to read debug symbols produced by the HP C compiler using the
30 SOM object file format. Definitions and structures used by other compilers
31 for other languages or object file formats may be missing.
32 (For a full description of the debug format, ftp hpux-symtab.h from
33 jaguar.cs.utah.edu:/dist).
36 Debug symbols are contained entirely within an unloadable space called
37 $DEBUG$. $DEBUG$ contains several subspaces which group related
40 $GNTT$ contains information for global variables, types and contants.
42 $LNTT$ contains information for procedures (including nesting), scoping
43 information, local variables, types, and constants.
45 $SLT$ contains source line information so that code addresses may be
46 mapped to source lines.
48 $VT$ contains various strings and constants for named objects (variables,
49 typedefs, functions, etc). Strings are stored as null-terminated character
50 lists. Constants always begin on word boundaries. The first byte of
51 the VT must be zero (a null string).
53 $XT$ is not currently used by GDB.
55 Many structures within the subspaces point to other structures within
56 the same subspace, or to structures within a different subspace. These
57 pointers are represented as a structure index from the beginning of
58 the appropriate subspace. */
60 /* Used to describe where a constant is stored. */
68 /* Languages supported by this debug format. Within the data structures
69 this type is limited to 4 bits for a maximum of 16 languages. */
79 HP_LANGUAGE_CPLUSPLUS,
83 /* Basic data types available in this debug format. Within the data
84 structures this type is limited to 5 bits for a maximum of 32 basic
96 HP_TYPE_LONGSTRING200,
99 HP_TYPE_FTN_STRING_SPEC,
100 HP_TYPE_MOD_STRING_SPEC,
101 HP_TYPE_PACKED_DECIMAL,
103 HP_TYPE_MOD_STRING_3000,
105 HP_TYPE_GLOBAL_ANYPOINTER,
106 HP_TYPE_LOCAL_ANYPOINTER,
107 HP_TYPE_COMPLEXS3000,
108 HP_TYPE_FTN_STRING_S300_COMPAT,
109 HP_TYPE_FTN_STRING_VAX_COMPAT,
110 HP_TYPE_BOOLEAN_S300_COMPAT,
111 HP_TYPE_BOOLEAN_VAX_COMPAT,
114 HP_TYPE_UNSIGNED_LONG,
116 HP_TYPE_TEMPLATE_ARG,
119 /* An immediate name and type table entry.
121 extension and immediate will always be one.
122 global will always be zero.
123 hp_type is the basic type this entry describes.
124 bitlength is the length in bits for the basic type. */
125 struct dnttp_immediate
127 unsigned int extension: 1;
128 unsigned int immediate: 1;
129 unsigned int global: 1;
130 enum hp_type type: 5;
131 unsigned int bitlength: 24;
134 /* A nonimmediate name and type table entry.
136 extension will always be one.
137 immediate will always be zero.
138 if global is zero, this entry points into the LNTT
139 if global is one, this entry points into the GNTT
140 index is the index within the GNTT or LNTT for this entry. */
141 struct dnttp_nonimmediate
143 unsigned int extension: 1;
144 unsigned int immediate: 1;
145 unsigned int global: 1;
146 unsigned int index: 29;
149 /* A pointer to an entry in the GNTT and LNTT tables. It has two
150 forms depending on the type being described.
152 The immediate form is used for simple entries and is one
155 The nonimmediate form is used for complex entries and contains
156 an index into the LNTT or GNTT which describes the entire type.
158 If a dnttpointer is -1, then it is a NIL entry. */
161 typedef union dnttpointer
163 struct dnttp_immediate dntti;
164 struct dnttp_nonimmediate dnttp;
168 /* An index into the source line table. As with dnttpointers, a sltpointer
169 of -1 indicates a NIL entry. */
171 typedef int sltpointer;
173 /* Unsigned byte offset into the VT. */
174 typedef unsigned int vtpointer;
176 /* A DNTT entry (used within the GNTT and LNTT).
178 DNTT entries are variable sized objects, but are always a multiple
179 of 3 words (we call each group of 3 words a "block").
181 The first bit in each block is an extension bit. This bit is zero
182 for the first block of a DNTT entry. If the entry requires more
183 than one block, then this bit is set to one in all blocks after
186 /* Each DNTT entry describes a particular debug symbol (beginning of
187 a source file, a function, variables, structures, etc.
189 The type of the DNTT entry is stored in the "kind" field within the
190 DNTT entry itself. */
229 DNTT_TYPE_CLASS_SCOPE,
232 DNTT_TYPE_PTRMEMFUNC,
237 DNTT_TYPE_INHERITANCE,
238 DNTT_TYPE_FRIEND_CLASS,
239 DNTT_TYPE_FRIEND_FUNC,
244 DNTT_TYPE_TEMPLATE_ARG,
245 DNTT_TYPE_FUNC_TEMPLATE,
250 /* DNTT_TYPE_SRCFILE:
252 One DNTT_TYPE_SRCFILE symbol is output for the start of each source
253 file and at the begin and end of an included file. A DNTT_TYPE_SRCFILE
254 entry is also output before each DNTT_TYPE_FUNC symbol so that debuggers
255 can determine what file a function was defined in.
257 LANGUAGE describes the source file's language.
259 NAME points to an VT entry providing the source file's name.
261 Note the name used for DNTT_TYPE_SRCFILE entries are exactly as seen
262 by the compiler (ie they may be relative or absolute). C include files
263 via <> inclusion must use absolute paths.
265 ADDRESS points to an SLT entry from which line number and code locations
266 may be determined. */
268 struct dntt_type_srcfile
270 unsigned int extension: 1;
271 enum dntt_entry_type kind: 10;
272 enum hp_language language: 4;
273 unsigned int unused: 17;
280 A DNTT_TYPE_MODULE symbol is emitted for the start of a pascal
281 module or C source file.
283 Each DNTT_TYPE_MODULE must have an associated DNTT_TYPE_END symbol.
285 NAME points to a VT entry providing the module's name. Note C
286 source files are considered nameless modules.
288 ALIAS point to a VT entry providing a secondary name.
290 ADDRESS points to an SLT entry from which line number and code locations
291 may be determined. */
293 struct dntt_type_module
295 unsigned int extension: 1;
296 enum dntt_entry_type kind: 10;
297 unsigned int unused: 21;
304 /* DNTT_TYPE_FUNCTION:
306 A DNTT_TYPE_FUNCTION symbol is emitted for each function definition;
307 a DNTT_TYPE_ENTRY symbols is used for secondary entry points. Both
308 symbols used the dntt_type_function structure.
310 Each DNTT_TYPE_FUNCTION must have a matching DNTT_TYPE_END.
312 GLOBAL is nonzero if the function has global scope.
314 LANGUAGE describes the function's source language.
316 OPT_LEVEL describes the optimization level the function was compiled
319 VARARGS is nonzero if the function uses varargs.
321 NAME points to a VT entry providing the function's name.
323 ALIAS points to a VT entry providing a secondary name for the function.
325 FIRSTPARAM points to a LNTT entry which describes the parameter list.
327 ADDRESS points to an SLT entry from which line number and code locations
330 ENTRYADDR is the memory address corresponding the the function's entry point
332 RETVAL points to a LNTT entry describing the function's return value.
334 LOWADDR is the lowest memory address associated with this function.
336 HIADDR is the highest memory address associated with this function. */
338 struct dntt_type_function
340 unsigned int extension: 1;
341 enum dntt_entry_type kind: 10;
342 unsigned int global: 1;
343 enum hp_language language: 4;
344 unsigned int nest_level: 5;
345 unsigned int opt_level: 2;
346 unsigned int varargs: 1;
347 unsigned int lang_info: 4;
348 unsigned int inlined: 1;
349 unsigned int localalloc: 1;
350 unsigned int expansion: 1;
351 unsigned int unused: 1;
354 dnttpointer firstparam;
364 A DNTT_TYPE_BEGIN symbol is emitted to begin a new nested scope.
365 Every DNTT_TYPE_BEGIN symbol must have a matching DNTT_TYPE_END symbol.
367 CLASSFLAG is nonzero if this is the beginning of a c++ class definition.
369 ADDRESS points to an SLT entry from which line number and code locations
370 may be determined. */
372 struct dntt_type_begin
374 unsigned int extension: 1;
375 enum dntt_entry_type kind: 10;
376 unsigned int classflag: 1;
377 unsigned int unused: 20;
383 A DNTT_TYPE_END symbol is emitted when closing a scope started by
384 a DNTT_TYPE_MODULE, DNTT_TYPE_FUNCTION, and DNTT_TYPE_BEGIN symbols.
386 ENDKIND describes what type of scope the DNTT_TYPE_END is closing
387 (DNTT_TYPE_MODULE, DNTT_TYPE_BEGIN, etc).
389 CLASSFLAG is nonzero if this is the end of a c++ class definition.
391 ADDRESS points to an SLT entry from which line number and code locations
394 BEGINSCOPE points to the LNTT entry which opened the scope. */
398 unsigned int extension: 1;
399 enum dntt_entry_type kind: 10;
400 enum dntt_entry_type endkind: 10;
401 unsigned int classflag: 1;
402 unsigned int unused: 10;
404 dnttpointer beginscope;
407 /* DNTT_TYPE_IMPORT is unused by GDB. */
408 /* DNTT_TYPE_LABEL is unused by GDB. */
412 A DNTT_TYPE_FPARAM symbol is emitted for a function argument. When
413 chained together the symbols represent an argument list for a function.
415 REGPARAM is nonzero if this parameter was passed in a register.
417 INDIRECT is nonzero if this parameter is a pointer to the parameter
418 (pass by reference or pass by value for large items).
420 LONGADDR is nonzero if the parameter is a 64bit pointer.
422 NAME is a pointer into the VT for the parameter's name.
424 LOCATION describes where the parameter is stored. Depending on the
425 parameter type LOCATION could be a register number, or an offset
426 from the stack pointer.
428 TYPE points to a NTT entry describing the type of this parameter.
430 NEXTPARAM points to the LNTT entry describing the next parameter. */
432 struct dntt_type_fparam
434 unsigned int extension: 1;
435 enum dntt_entry_type kind: 10;
436 unsigned int regparam: 1;
437 unsigned int indirect: 1;
438 unsigned int longaddr: 1;
439 unsigned int copyparam: 1;
440 unsigned int dflt: 1;
441 unsigned int unused: 16;
445 dnttpointer nextparam;
451 A DNTT_TYPE_SVAR is emitted to describe a variable in static storage.
453 GLOBAL is nonzero if the variable has global scope.
455 INDIRECT is nonzero if the variable is a pointer to an object.
457 LONGADDR is nonzero if the variable is in long pointer space.
459 STATICMEM is nonzero if the variable is a member of a class.
461 A_UNION is nonzero if the variable is an anonymous union member.
463 NAME is a pointer into the VT for the variable's name.
465 LOCATION provides the memory address for the variable.
467 TYPE is a pointer into either the GNTT or LNTT which describes
468 the type of this variable. */
470 struct dntt_type_svar
472 unsigned int extension: 1;
473 enum dntt_entry_type kind: 10;
474 unsigned int global: 1;
475 unsigned int indirect: 1;
476 unsigned int longaddr: 1;
477 unsigned int staticmem: 1;
478 unsigned int a_union: 1;
479 unsigned int unused: 16;
484 unsigned int displacement;
489 A DNTT_TYPE_DVAR is emitted to describe automatic variables and variables
492 GLOBAL is nonzero if the variable has global scope.
494 INDIRECT is nonzero if the variable is a pointer to an object.
496 REGVAR is nonzero if the variable is in a register.
498 A_UNION is nonzero if the variable is an anonymous union member.
500 NAME is a pointer into the VT for the variable's name.
502 LOCATION provides the memory address or register number for the variable.
504 TYPE is a pointer into either the GNTT or LNTT which describes
505 the type of this variable. */
507 struct dntt_type_dvar
509 unsigned int extension: 1;
510 enum dntt_entry_type kind: 10;
511 unsigned int global: 1;
512 unsigned int indirect: 1;
513 unsigned int regvar: 1;
514 unsigned int a_union: 1;
515 unsigned int unused: 17;
524 A DNTT_TYPE_CONST symbol is emitted for program constants.
526 GLOBAL is nonzero if the constant has global scope.
528 INDIRECT is nonzero if the constant is a pointer to an object.
530 LOCATION_TYPE describes where to find the constant's value
531 (in the VT, memory, or embedded in an instruction).
533 CLASSMEM is nonzero if the constant is a member of a class.
535 NAME is a pointer into the VT for the constant's name.
537 LOCATION provides the memory address, register number or pointer
538 into the VT for the constant's value.
540 TYPE is a pointer into either the GNTT or LNTT which describes
541 the type of this variable. */
543 struct dntt_type_const
545 unsigned int extension: 1;
546 enum dntt_entry_type kind: 10;
547 unsigned int global: 1;
548 unsigned int indirect: 1;
549 enum location_type: 3;
550 unsigned int classmem: 1;
551 unsigned int unused: 15;
556 unsigned int displacement;
559 /* DNTT_TYPE_TYPEDEF and DNTT_TYPE_TAGDEF:
561 The same structure is used to describe typedefs and tagdefs.
563 DNTT_TYPE_TYPEDEFS are associated with C "typedefs".
565 DNTT_TYPE_TAGDEFs are associated with C "struct", "union", and "enum"
566 tags, which may have the same name as a typedef in the same scope.
568 GLOBAL is nonzero if the typedef/tagdef has global scope.
570 TYPEINFO is used to determine if full type information is available
571 for a tag. (usually 1, but can be zero for opaque types in C).
573 NAME is a pointer into the VT for the constant's name.
575 TYPE points to the underlying type for the typedef/tagdef in the
578 struct dntt_type_type
580 unsigned int extension: 1;
581 enum dntt_entry_type kind: 10;
582 unsigned int global: 1;
583 unsigned int typeinfo: 1;
584 unsigned int unused: 19;
589 /* DNTT_TYPE_POINTER:
591 Used to describe a pointer to an underlying type.
593 POINTSTO is a pointer into the GNTT or LNTT for the type which this
596 BITLENGTH is the length of the pointer (not the underlying type). */
598 struct dntt_type_pointer
600 unsigned int extension: 1;
601 enum dntt_entry_type kind: 10;
602 unsigned int unused: 21;
603 dnttpointer pointsto;
604 unsigned int bitlength;
610 Used to describe enumerated types.
612 FIRSTMEM is a pointer to a DNTT_TYPE_MEMENUM in the GNTT/LNTT which
613 describes the first member (and contains a pointer to the chain of
616 BITLENGTH is the number of bits used to hold the values of the enum's
619 struct dntt_type_enum
621 unsigned int extension: 1;
622 enum dntt_entry_type kind: 10;
623 unsigned int unused: 21;
624 dnttpointer firstmem;
625 unsigned int bitlength;
630 Used to describe members of an enumerated type.
632 CLASSMEM is nonzero if this member is part of a class.
634 NAME points into the VT for the name of this member.
636 VALUE is the value of this enumeration member.
638 NEXTMEM points to the next DNTT_TYPE_MEMENUM in the chain. */
640 struct dntt_type_memenum
642 unsigned int extension: 1;
643 enum dntt_entry_type kind: 10;
644 unsigned int classmem: 1;
645 unsigned int unused: 20;
653 DECLARATION describes the bitpacking of the set.
655 SUBTYPE points to a DNTT entry describing the type of the members.
657 BITLENGTH is the size of the set. */
661 unsigned int extension: 1;
662 enum dntt_entry_type kind: 10;
663 unsigned int declaration: 2;
664 unsigned int unused: 19;
666 unsigned int bitlength;
669 /* DNTT_TYPE_SUBRANGE
671 DYN_LOW describes the lower bound of the subrange:
673 00 for a constant lower bound (found in LOWBOUND).
675 01 for a dynamic lower bound with the lower bound found in the the
676 memory address pointed to by LOWBOUND.
678 10 for a dynamic lower bound described by an variable found in the
679 DNTT/LNTT (LOWBOUND would be a pointer into the DNTT/LNTT).
681 DYN_HIGH is similar to DYN_LOW, except it describes the upper bound.
683 SUBTYPE points to the type of the subrange.
685 BITLENGTH is the length in bits needed to describe the subrange's
688 struct dntt_type_subrange
690 unsigned int extension: 1;
691 enum dntt_entry_type kind: 10;
692 unsigned int dyn_low: 2;
693 unsigned int dyn_high: 2;
694 unsigned int unused: 17;
698 unsigned int bitlength;
703 DECLARATION describes the bit packing used in the array.
705 ARRAYISBYTES is nonzero if the field in arraylength describes the
706 length in bytes rather than in bits. A value of zero is used to
707 describe an array with size 2**32.
709 ELEMISBYTES is nonzero if the length if each element in the array
710 is describes in bytes rather than bits. A value of zero is used
711 to an element with size 2**32.
713 ELEMORDER is nonzero if the elements are indexed in increasing order.
715 JUSTIFIED if the elements are left justified to index zero.
717 ARRAYLENGTH is the length of the array.
719 INDEXTYPE is a DNTT pointer to the type used to index the array.
721 ELEMTYPE is a DNTT pointer to the type for the array elements.
723 ELEMLENGTH is the length of each element in the array (including
726 Multi-dimensional arrays are represented by ELEMTYPE pointing to
727 another DNTT_TYPE_ARRAY. */
729 struct dntt_type_array
731 unsigned int extension: 1;
732 enum dntt_entry_type kind: 10;
733 unsigned int declaration: 2;
734 unsigned int dyn_low: 2;
735 unsigned int dyn_high: 2;
736 unsigned int arrayisbytes: 1;
737 unsigned int elemisbytes: 1;
738 unsigned int elemorder: 1;
739 unsigned int justified: 1;
740 unsigned int unused: 11;
741 unsigned int arraylength;
742 dnttpointer indextype;
743 dnttpointer elemtype;
744 unsigned int elemlength;
749 DNTT_TYPE_STRUCT is used to describe a C structure.
751 DECLARATION describes the bitpacking used.
753 FIRSTFIELD is a DNTT pointer to the first field of the structure
754 (each field contains a pointer to the next field, walk the list
755 to access all fields of the structure).
757 VARTAGFIELD and VARLIST are used for Pascal variant records.
759 BITLENGTH is the size of the structure in bits. */
761 struct dntt_type_struct
763 unsigned int extension: 1;
764 enum dntt_entry_type kind: 10;
765 unsigned int declaration: 2;
766 unsigned int unused: 19;
767 dnttpointer firstfield;
768 dnttpointer vartagfield;
770 unsigned int bitlength;
775 DNTT_TYPE_UNION is used to describe a C union.
777 FIRSTFIELD is a DNTT pointer to the beginning of the field chain.
779 BITLENGTH is the size of the union in bits. */
781 struct dntt_type_union
783 unsigned int extension: 1;
784 enum dntt_entry_type kind: 10;
785 unsigned int unused: 21;
786 dnttpointer firstfield;
787 unsigned int bitlength;
792 DNTT_TYPE_FIELD describes one field in a structure or union.
794 VISIBILITY is used to describe the visibility of the field
795 (for c++. public = 0, protected = 1, private = 2).
797 A_UNION is nonzero if this field is a member of an anonymous union.
799 STATICMEM is nonzero if this field is a static member of a template.
801 NAME is a pointer into the VT for the name of the field.
803 BITOFFSET gives the offset of this field in bits from the beginning
804 of the structure or union this field is a member of.
806 TYPE is a DNTT pointer to the type describing this field.
808 BITLENGTH is the size of the entry in bits.
810 NEXTFIELD is a DNTT pointer to the next field in the chain. */
812 struct dntt_type_field
814 unsigned int extension: 1;
815 enum dntt_entry_type kind: 10;
816 unsigned int visibility: 2;
817 unsigned int a_union: 1;
818 unsigned int staticmem: 1;
819 unsigned int unused: 17;
821 unsigned int bitoffset;
823 unsigned int bitlength;
824 dnttpointer nextfield;
827 /* DNTT_TYPE_VARIANT is unused by GDB. */
828 /* DNTT_TYPE_FILE is unused by GDB. */
830 /* DNTT_TYPE_COMMON is unused by GDB. */
831 /* DNTT_TYPE_LINK is unused by GDB. */
832 /* DNTT_TYPE_FFUNC_LINK is unused by GDB. */
833 /* DNTT_TYPE_TEMPLATE is unused by GDB. */
835 /* DNTT_TYPE_FUNCTYPE
837 VARARGS is nonzero if this function uses varargs.
839 FIRSTPARAM is a DNTT pointer to the first entry in the parameter
842 RETVAL is a DNTT pointer to the type of the return value. */
844 struct dntt_type_functype
846 unsigned int extension: 1;
847 enum dntt_entry_type kind: 10;
848 unsigned int varargs: 1;
849 unsigned int info: 4;
850 unsigned int unused: 16;
851 unsigned int bitlength;
852 dnttpointer firstparam;
856 /* DNTT_TYPE_WITH is unued by GDB. */
857 /* DNTT_TYPE_COBSTRUCT is unused by GDB. */
858 /* DNTT_TYPE_MODIFIER is unused by GDB. */
859 /* DNTT_TYPE_GENFIELD is unused by GDB. */
860 /* DNTT_TYPE_MEMACCESS is unused by GDB. */
861 /* DNTT_TYPE_VFUNC is unused by GDB. */
862 /* DNTT_TYPE_CLASS_SCOPE is unused by GDB. */
863 /* DNTT_TYPE_FRIEND_CLASS is unused by GDB. */
864 /* DNTT_TYPE_FRIEND_FUNC is unused by GDB. */
865 /* DNTT_TYPE_CLASS unused by GDB. */
866 /* DNTT_TYPE_TEMPLATE unused by GDB. */
867 /* DNTT_TYPE_TEMPL_ARG is unused by GDB. */
868 /* DNTT_TYPE_PTRMEM not used by GDB */
869 /* DNTT_TYPE_INHERITANCE is unused by GDB. */
870 /* DNTT_TYPE_OBJECT_ID is unused by GDB. */
871 /* DNTT_TYPE_XREF is unused by GDB. */
872 /* DNTT_TYPE_SA is unused by GDB. */
874 /* DNTT_TYPE_GENERIC and DNTT_TYPE_BLOCK are convience structures
875 so we can examine a DNTT entry in a generic fashion. */
876 struct dntt_type_generic
878 unsigned int word[9];
881 struct dntt_type_block
883 unsigned int extension: 1;
884 enum dntt_entry_type kind: 10;
885 unsigned int unused: 21;
886 unsigned int word[2];
889 /* One entry in a DNTT (either the LNTT or GNTT). */
892 struct dntt_type_srcfile dsfile;
893 struct dntt_type_module dmodule;
894 struct dntt_type_function dfunc;
895 struct dntt_type_function dentry;
896 struct dntt_type_begin dbegin;
897 struct dntt_type_end dend;
898 struct dntt_type_fparam dfparam;
899 struct dntt_type_svar dsvar;
900 struct dntt_type_dvar ddvar;
901 struct dntt_type_const dconst;
902 struct dntt_type_type dtype;
903 struct dntt_type_type dtag;
904 struct dntt_type_pointer dptr;
905 struct dntt_type_enum denum;
906 struct dntt_type_memenum dmember;
907 struct dntt_type_set dset;
908 struct dntt_type_subrange dsubr;
909 struct dntt_type_array darray;
910 struct dntt_type_struct dstruct;
911 struct dntt_type_union dunion;
912 struct dntt_type_field dfield;
913 struct dntt_type_functype dfunctype;
914 struct dntt_type_generic dgeneric;
915 struct dntt_type_block dblock;
918 /* Source line entry types. */
934 /* A normal source line entry. Simply provides a mapping of a source
935 line number to a code address.
937 SLTDESC will always be SLT_NORMAL or SLT_EXIT. */
941 enum slttype sltdesc: 4;
942 unsigned int line: 28;
946 /* A special source line entry. Provides a mapping of a declaration
947 to a line number. These entries point back into the DNTT which
952 enum slttype sltdesc: 4;
953 unsigned int line: 28;
957 /* Used to describe nesting.
959 For nested languages, an slt_assist entry must follow each SLT_FUNC
960 entry in the SLT. The address field will point forward to the
961 first slt_normal entry within the function's scope. */
965 enum slttype sltdesc: 4;
966 unsigned int unused: 28;
972 unsigned int word[2];
977 struct slt_normal snorm;
978 struct slt_special sspec;
979 struct slt_assist sasst;
980 struct slt_generic sgeneric;
983 #endif /* HP_SYMTAB_INCLUDED */