Plan 9 from Bell Labs’s /usr/web/sources/contrib/ericvh/go-plan9/src/pkg/debug/dwarf/const.go

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


// Copyright 2009 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Constants

package dwarf

import "strconv"

// An Attr identifies the attribute type in a DWARF Entry's Field.
type Attr uint32

const (
	AttrSibling		Attr	= 0x01;
	AttrLocation		Attr	= 0x02;
	AttrName		Attr	= 0x03;
	AttrOrdering		Attr	= 0x09;
	AttrByteSize		Attr	= 0x0B;
	AttrBitOffset		Attr	= 0x0C;
	AttrBitSize		Attr	= 0x0D;
	AttrStmtList		Attr	= 0x10;
	AttrLowpc		Attr	= 0x11;
	AttrHighpc		Attr	= 0x12;
	AttrLanguage		Attr	= 0x13;
	AttrDiscr		Attr	= 0x15;
	AttrDiscrValue		Attr	= 0x16;
	AttrVisibility		Attr	= 0x17;
	AttrImport		Attr	= 0x18;
	AttrStringLength	Attr	= 0x19;
	AttrCommonRef		Attr	= 0x1A;
	AttrCompDir		Attr	= 0x1B;
	AttrConstValue		Attr	= 0x1C;
	AttrContainingType	Attr	= 0x1D;
	AttrDefaultValue	Attr	= 0x1E;
	AttrInline		Attr	= 0x20;
	AttrIsOptional		Attr	= 0x21;
	AttrLowerBound		Attr	= 0x22;
	AttrProducer		Attr	= 0x25;
	AttrPrototyped		Attr	= 0x27;
	AttrReturnAddr		Attr	= 0x2A;
	AttrStartScope		Attr	= 0x2C;
	AttrStrideSize		Attr	= 0x2E;
	AttrUpperBound		Attr	= 0x2F;
	AttrAbstractOrigin	Attr	= 0x31;
	AttrAccessibility	Attr	= 0x32;
	AttrAddrClass		Attr	= 0x33;
	AttrArtificial		Attr	= 0x34;
	AttrBaseTypes		Attr	= 0x35;
	AttrCalling		Attr	= 0x36;
	AttrCount		Attr	= 0x37;
	AttrDataMemberLoc	Attr	= 0x38;
	AttrDeclColumn		Attr	= 0x39;
	AttrDeclFile		Attr	= 0x3A;
	AttrDeclLine		Attr	= 0x3B;
	AttrDeclaration		Attr	= 0x3C;
	AttrDiscrList		Attr	= 0x3D;
	AttrEncoding		Attr	= 0x3E;
	AttrExternal		Attr	= 0x3F;
	AttrFrameBase		Attr	= 0x40;
	AttrFriend		Attr	= 0x41;
	AttrIdentifierCase	Attr	= 0x42;
	AttrMacroInfo		Attr	= 0x43;
	AttrNamelistItem	Attr	= 0x44;
	AttrPriority		Attr	= 0x45;
	AttrSegment		Attr	= 0x46;
	AttrSpecification	Attr	= 0x47;
	AttrStaticLink		Attr	= 0x48;
	AttrType		Attr	= 0x49;
	AttrUseLocation		Attr	= 0x4A;
	AttrVarParam		Attr	= 0x4B;
	AttrVirtuality		Attr	= 0x4C;
	AttrVtableElemLoc	Attr	= 0x4D;
	AttrAllocated		Attr	= 0x4E;
	AttrAssociated		Attr	= 0x4F;
	AttrDataLocation	Attr	= 0x50;
	AttrStride		Attr	= 0x51;
	AttrEntrypc		Attr	= 0x52;
	AttrUseUTF8		Attr	= 0x53;
	AttrExtension		Attr	= 0x54;
	AttrRanges		Attr	= 0x55;
	AttrTrampoline		Attr	= 0x56;
	AttrCallColumn		Attr	= 0x57;
	AttrCallFile		Attr	= 0x58;
	AttrCallLine		Attr	= 0x59;
	AttrDescription		Attr	= 0x5A;
)

var attrNames = [...]string{
	AttrSibling: "Sibling",
	AttrLocation: "Location",
	AttrName: "Name",
	AttrOrdering: "Ordering",
	AttrByteSize: "ByteSize",
	AttrBitOffset: "BitOffset",
	AttrBitSize: "BitSize",
	AttrStmtList: "StmtList",
	AttrLowpc: "Lowpc",
	AttrHighpc: "Highpc",
	AttrLanguage: "Language",
	AttrDiscr: "Discr",
	AttrDiscrValue: "DiscrValue",
	AttrVisibility: "Visibility",
	AttrImport: "Import",
	AttrStringLength: "StringLength",
	AttrCommonRef: "CommonRef",
	AttrCompDir: "CompDir",
	AttrConstValue: "ConstValue",
	AttrContainingType: "ContainingType",
	AttrDefaultValue: "DefaultValue",
	AttrInline: "Inline",
	AttrIsOptional: "IsOptional",
	AttrLowerBound: "LowerBound",
	AttrProducer: "Producer",
	AttrPrototyped: "Prototyped",
	AttrReturnAddr: "ReturnAddr",
	AttrStartScope: "StartScope",
	AttrStrideSize: "StrideSize",
	AttrUpperBound: "UpperBound",
	AttrAbstractOrigin: "AbstractOrigin",
	AttrAccessibility: "Accessibility",
	AttrAddrClass: "AddrClass",
	AttrArtificial: "Artificial",
	AttrBaseTypes: "BaseTypes",
	AttrCalling: "Calling",
	AttrCount: "Count",
	AttrDataMemberLoc: "DataMemberLoc",
	AttrDeclColumn: "DeclColumn",
	AttrDeclFile: "DeclFile",
	AttrDeclLine: "DeclLine",
	AttrDeclaration: "Declaration",
	AttrDiscrList: "DiscrList",
	AttrEncoding: "Encoding",
	AttrExternal: "External",
	AttrFrameBase: "FrameBase",
	AttrFriend: "Friend",
	AttrIdentifierCase: "IdentifierCase",
	AttrMacroInfo: "MacroInfo",
	AttrNamelistItem: "NamelistItem",
	AttrPriority: "Priority",
	AttrSegment: "Segment",
	AttrSpecification: "Specification",
	AttrStaticLink: "StaticLink",
	AttrType: "Type",
	AttrUseLocation: "UseLocation",
	AttrVarParam: "VarParam",
	AttrVirtuality: "Virtuality",
	AttrVtableElemLoc: "VtableElemLoc",
	AttrAllocated: "Allocated",
	AttrAssociated: "Associated",
	AttrDataLocation: "DataLocation",
	AttrStride: "Stride",
	AttrEntrypc: "Entrypc",
	AttrUseUTF8: "UseUTF8",
	AttrExtension: "Extension",
	AttrRanges: "Ranges",
	AttrTrampoline: "Trampoline",
	AttrCallColumn: "CallColumn",
	AttrCallFile: "CallFile",
	AttrCallLine: "CallLine",
	AttrDescription: "Description",
}

func (a Attr) String() string {
	if int(a) < len(attrNames) {
		s := attrNames[a];
		if s != "" {
			return s
		}
	}
	return strconv.Itoa(int(a));
}

func (a Attr) GoString() string {
	if int(a) < len(attrNames) {
		s := attrNames[a];
		if s != "" {
			return "dwarf.Attr" + s
		}
	}
	return "dwarf.Attr(" + strconv.Itoa64(int64(a)) + ")";
}

// A format is a DWARF data encoding format.
type format uint32

const (
	// value formats
	formAddr	format	= 0x01;
	formDwarfBlock2	format	= 0x03;
	formDwarfBlock4	format	= 0x04;
	formData2	format	= 0x05;
	formData4	format	= 0x06;
	formData8	format	= 0x07;
	formString	format	= 0x08;
	formDwarfBlock	format	= 0x09;
	formDwarfBlock1	format	= 0x0A;
	formData1	format	= 0x0B;
	formFlag	format	= 0x0C;
	formSdata	format	= 0x0D;
	formStrp	format	= 0x0E;
	formUdata	format	= 0x0F;
	formRefAddr	format	= 0x10;
	formRef1	format	= 0x11;
	formRef2	format	= 0x12;
	formRef4	format	= 0x13;
	formRef8	format	= 0x14;
	formRefUdata	format	= 0x15;
	formIndirect	format	= 0x16;
)

// A Tag is the classification (the type) of an Entry.
type Tag uint32

const (
	TagArrayType			Tag	= 0x01;
	TagClassType			Tag	= 0x02;
	TagEntryPoint			Tag	= 0x03;
	TagEnumerationType		Tag	= 0x04;
	TagFormalParameter		Tag	= 0x05;
	TagImportedDeclaration		Tag	= 0x08;
	TagLabel			Tag	= 0x0A;
	TagLexDwarfBlock		Tag	= 0x0B;
	TagMember			Tag	= 0x0D;
	TagPointerType			Tag	= 0x0F;
	TagReferenceType		Tag	= 0x10;
	TagCompileUnit			Tag	= 0x11;
	TagStringType			Tag	= 0x12;
	TagStructType			Tag	= 0x13;
	TagSubroutineType		Tag	= 0x15;
	TagTypedef			Tag	= 0x16;
	TagUnionType			Tag	= 0x17;
	TagUnspecifiedParameters	Tag	= 0x18;
	TagVariant			Tag	= 0x19;
	TagCommonDwarfBlock		Tag	= 0x1A;
	TagCommonInclusion		Tag	= 0x1B;
	TagInheritance			Tag	= 0x1C;
	TagInlinedSubroutine		Tag	= 0x1D;
	TagModule			Tag	= 0x1E;
	TagPtrToMemberType		Tag	= 0x1F;
	TagSetType			Tag	= 0x20;
	TagSubrangeType			Tag	= 0x21;
	TagWithStmt			Tag	= 0x22;
	TagAccessDeclaration		Tag	= 0x23;
	TagBaseType			Tag	= 0x24;
	TagCatchDwarfBlock		Tag	= 0x25;
	TagConstType			Tag	= 0x26;
	TagConstant			Tag	= 0x27;
	TagEnumerator			Tag	= 0x28;
	TagFileType			Tag	= 0x29;
	TagFriend			Tag	= 0x2A;
	TagNamelist			Tag	= 0x2B;
	TagNamelistItem			Tag	= 0x2C;
	TagPackedType			Tag	= 0x2D;
	TagSubprogram			Tag	= 0x2E;
	TagTemplateTypeParameter	Tag	= 0x2F;
	TagTemplateValueParameter	Tag	= 0x30;
	TagThrownType			Tag	= 0x31;
	TagTryDwarfBlock		Tag	= 0x32;
	TagVariantPart			Tag	= 0x33;
	TagVariable			Tag	= 0x34;
	TagVolatileType			Tag	= 0x35;
	TagDwarfProcedure		Tag	= 0x36;
	TagRestrictType			Tag	= 0x37;
	TagInterfaceType		Tag	= 0x38;
	TagNamespace			Tag	= 0x39;
	TagImportedModule		Tag	= 0x3A;
	TagUnspecifiedType		Tag	= 0x3B;
	TagPartialUnit			Tag	= 0x3C;
	TagImportedUnit			Tag	= 0x3D;
	TagMutableType			Tag	= 0x3E;
)

var tagNames = [...]string{
	TagArrayType: "ArrayType",
	TagClassType: "ClassType",
	TagEntryPoint: "EntryPoint",
	TagEnumerationType: "EnumerationType",
	TagFormalParameter: "FormalParameter",
	TagImportedDeclaration: "ImportedDeclaration",
	TagLabel: "Label",
	TagLexDwarfBlock: "LexDwarfBlock",
	TagMember: "Member",
	TagPointerType: "PointerType",
	TagReferenceType: "ReferenceType",
	TagCompileUnit: "CompileUnit",
	TagStringType: "StringType",
	TagStructType: "StructType",
	TagSubroutineType: "SubroutineType",
	TagTypedef: "Typedef",
	TagUnionType: "UnionType",
	TagUnspecifiedParameters: "UnspecifiedParameters",
	TagVariant: "Variant",
	TagCommonDwarfBlock: "CommonDwarfBlock",
	TagCommonInclusion: "CommonInclusion",
	TagInheritance: "Inheritance",
	TagInlinedSubroutine: "InlinedSubroutine",
	TagModule: "Module",
	TagPtrToMemberType: "PtrToMemberType",
	TagSetType: "SetType",
	TagSubrangeType: "SubrangeType",
	TagWithStmt: "WithStmt",
	TagAccessDeclaration: "AccessDeclaration",
	TagBaseType: "BaseType",
	TagCatchDwarfBlock: "CatchDwarfBlock",
	TagConstType: "ConstType",
	TagConstant: "Constant",
	TagEnumerator: "Enumerator",
	TagFileType: "FileType",
	TagFriend: "Friend",
	TagNamelist: "Namelist",
	TagNamelistItem: "NamelistItem",
	TagPackedType: "PackedType",
	TagSubprogram: "Subprogram",
	TagTemplateTypeParameter: "TemplateTypeParameter",
	TagTemplateValueParameter: "TemplateValueParameter",
	TagThrownType: "ThrownType",
	TagTryDwarfBlock: "TryDwarfBlock",
	TagVariantPart: "VariantPart",
	TagVariable: "Variable",
	TagVolatileType: "VolatileType",
	TagDwarfProcedure: "DwarfProcedure",
	TagRestrictType: "RestrictType",
	TagInterfaceType: "InterfaceType",
	TagNamespace: "Namespace",
	TagImportedModule: "ImportedModule",
	TagUnspecifiedType: "UnspecifiedType",
	TagPartialUnit: "PartialUnit",
	TagImportedUnit: "ImportedUnit",
	TagMutableType: "MutableType",
}

func (t Tag) String() string {
	if int(t) < len(tagNames) {
		s := tagNames[t];
		if s != "" {
			return s
		}
	}
	return strconv.Itoa(int(t));
}

func (t Tag) GoString() string {
	if int(t) < len(tagNames) {
		s := tagNames[t];
		if s != "" {
			return "dwarf.Tag" + s
		}
	}
	return "dwarf.Tag(" + strconv.Itoa64(int64(t)) + ")";
}

// Location expression operators.
// The debug info encodes value locations like 8(R3)
// as a sequence of these op codes.
// This package does not implement full expressions;
// the opPlusUconst operator is expected by the type parser.
const (
	opAddr		= 0x03;	/* 1 op, const addr */
	opDeref		= 0x06;
	opConst1u	= 0x08;	/* 1 op, 1 byte const */
	opConst1s	= 0x09;	/*	" signed */
	opConst2u	= 0x0A;	/* 1 op, 2 byte const  */
	opConst2s	= 0x0B;	/*	" signed */
	opConst4u	= 0x0C;	/* 1 op, 4 byte const */
	opConst4s	= 0x0D;	/*	" signed */
	opConst8u	= 0x0E;	/* 1 op, 8 byte const */
	opConst8s	= 0x0F;	/*	" signed */
	opConstu	= 0x10;	/* 1 op, LEB128 const */
	opConsts	= 0x11;	/*	" signed */
	opDup		= 0x12;
	opDrop		= 0x13;
	opOver		= 0x14;
	opPick		= 0x15;	/* 1 op, 1 byte stack index */
	opSwap		= 0x16;
	opRot		= 0x17;
	opXderef	= 0x18;
	opAbs		= 0x19;
	opAnd		= 0x1A;
	opDiv		= 0x1B;
	opMinus		= 0x1C;
	opMod		= 0x1D;
	opMul		= 0x1E;
	opNeg		= 0x1F;
	opNot		= 0x20;
	opOr		= 0x21;
	opPlus		= 0x22;
	opPlusUconst	= 0x23;	/* 1 op, ULEB128 addend */
	opShl		= 0x24;
	opShr		= 0x25;
	opShra		= 0x26;
	opXor		= 0x27;
	opSkip		= 0x2F;	/* 1 op, signed 2-byte constant */
	opBra		= 0x28;	/* 1 op, signed 2-byte constant */
	opEq		= 0x29;
	opGe		= 0x2A;
	opGt		= 0x2B;
	opLe		= 0x2C;
	opLt		= 0x2D;
	opNe		= 0x2E;
	opLit0		= 0x30;
	/* OpLitN = OpLit0 + N for N = 0..31 */
	opReg0	= 0x50;
	/* OpRegN = OpReg0 + N for N = 0..31 */
	opBreg0	= 0x70;	/* 1 op, signed LEB128 constant */
	/* OpBregN = OpBreg0 + N for N = 0..31 */
	opRegx		= 0x90;	/* 1 op, ULEB128 register */
	opFbreg		= 0x91;	/* 1 op, SLEB128 offset */
	opBregx		= 0x92;	/* 2 op, ULEB128 reg; SLEB128 off */
	opPiece		= 0x93;	/* 1 op, ULEB128 size of piece */
	opDerefSize	= 0x94;	/* 1-byte size of data retrieved */
	opXderefSize	= 0x95;	/* 1-byte size of data retrieved */
	opNop		= 0x96;
	/* next four new in Dwarf v3 */
	opPushObjAddr	= 0x97;
	opCall2		= 0x98;	/* 2-byte offset of DIE */
	opCall4		= 0x99;	/* 4-byte offset of DIE */
	opCallRef	= 0x9A;	/* 4- or 8- byte offset of DIE */
	/* 0xE0-0xFF reserved for user-specific */
)

// Basic type encodings -- the value for AttrEncoding in a TagBaseType Entry.
const (
	encAddress		= 0x01;
	encBoolean		= 0x02;
	encComplexFloat		= 0x03;
	encFloat		= 0x04;
	encSigned		= 0x05;
	encSignedChar		= 0x06;
	encUnsigned		= 0x07;
	encUnsignedChar		= 0x08;
	encImaginaryFloat	= 0x09;
)

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].