github.com/ice-blockchain/go/src@v0.0.0-20240403114104-1564d284e521/debug/dwarf/const.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // Constants 6 7 package dwarf 8 9 //go:generate stringer -type Attr -trimprefix=Attr 10 11 // An Attr identifies the attribute type in a DWARF [Entry.Field]. 12 type Attr uint32 13 14 const ( 15 AttrSibling Attr = 0x01 16 AttrLocation Attr = 0x02 17 AttrName Attr = 0x03 18 AttrOrdering Attr = 0x09 19 AttrByteSize Attr = 0x0B 20 AttrBitOffset Attr = 0x0C 21 AttrBitSize Attr = 0x0D 22 AttrStmtList Attr = 0x10 23 AttrLowpc Attr = 0x11 24 AttrHighpc Attr = 0x12 25 AttrLanguage Attr = 0x13 26 AttrDiscr Attr = 0x15 27 AttrDiscrValue Attr = 0x16 28 AttrVisibility Attr = 0x17 29 AttrImport Attr = 0x18 30 AttrStringLength Attr = 0x19 31 AttrCommonRef Attr = 0x1A 32 AttrCompDir Attr = 0x1B 33 AttrConstValue Attr = 0x1C 34 AttrContainingType Attr = 0x1D 35 AttrDefaultValue Attr = 0x1E 36 AttrInline Attr = 0x20 37 AttrIsOptional Attr = 0x21 38 AttrLowerBound Attr = 0x22 39 AttrProducer Attr = 0x25 40 AttrPrototyped Attr = 0x27 41 AttrReturnAddr Attr = 0x2A 42 AttrStartScope Attr = 0x2C 43 AttrStrideSize Attr = 0x2E 44 AttrUpperBound Attr = 0x2F 45 AttrAbstractOrigin Attr = 0x31 46 AttrAccessibility Attr = 0x32 47 AttrAddrClass Attr = 0x33 48 AttrArtificial Attr = 0x34 49 AttrBaseTypes Attr = 0x35 50 AttrCalling Attr = 0x36 51 AttrCount Attr = 0x37 52 AttrDataMemberLoc Attr = 0x38 53 AttrDeclColumn Attr = 0x39 54 AttrDeclFile Attr = 0x3A 55 AttrDeclLine Attr = 0x3B 56 AttrDeclaration Attr = 0x3C 57 AttrDiscrList Attr = 0x3D 58 AttrEncoding Attr = 0x3E 59 AttrExternal Attr = 0x3F 60 AttrFrameBase Attr = 0x40 61 AttrFriend Attr = 0x41 62 AttrIdentifierCase Attr = 0x42 63 AttrMacroInfo Attr = 0x43 64 AttrNamelistItem Attr = 0x44 65 AttrPriority Attr = 0x45 66 AttrSegment Attr = 0x46 67 AttrSpecification Attr = 0x47 68 AttrStaticLink Attr = 0x48 69 AttrType Attr = 0x49 70 AttrUseLocation Attr = 0x4A 71 AttrVarParam Attr = 0x4B 72 AttrVirtuality Attr = 0x4C 73 AttrVtableElemLoc Attr = 0x4D 74 // The following are new in DWARF 3. 75 AttrAllocated Attr = 0x4E 76 AttrAssociated Attr = 0x4F 77 AttrDataLocation Attr = 0x50 78 AttrStride Attr = 0x51 79 AttrEntrypc Attr = 0x52 80 AttrUseUTF8 Attr = 0x53 81 AttrExtension Attr = 0x54 82 AttrRanges Attr = 0x55 83 AttrTrampoline Attr = 0x56 84 AttrCallColumn Attr = 0x57 85 AttrCallFile Attr = 0x58 86 AttrCallLine Attr = 0x59 87 AttrDescription Attr = 0x5A 88 AttrBinaryScale Attr = 0x5B 89 AttrDecimalScale Attr = 0x5C 90 AttrSmall Attr = 0x5D 91 AttrDecimalSign Attr = 0x5E 92 AttrDigitCount Attr = 0x5F 93 AttrPictureString Attr = 0x60 94 AttrMutable Attr = 0x61 95 AttrThreadsScaled Attr = 0x62 96 AttrExplicit Attr = 0x63 97 AttrObjectPointer Attr = 0x64 98 AttrEndianity Attr = 0x65 99 AttrElemental Attr = 0x66 100 AttrPure Attr = 0x67 101 AttrRecursive Attr = 0x68 102 // The following are new in DWARF 4. 103 AttrSignature Attr = 0x69 104 AttrMainSubprogram Attr = 0x6A 105 AttrDataBitOffset Attr = 0x6B 106 AttrConstExpr Attr = 0x6C 107 AttrEnumClass Attr = 0x6D 108 AttrLinkageName Attr = 0x6E 109 // The following are new in DWARF 5. 110 AttrStringLengthBitSize Attr = 0x6F 111 AttrStringLengthByteSize Attr = 0x70 112 AttrRank Attr = 0x71 113 AttrStrOffsetsBase Attr = 0x72 114 AttrAddrBase Attr = 0x73 115 AttrRnglistsBase Attr = 0x74 116 AttrDwoName Attr = 0x76 117 AttrReference Attr = 0x77 118 AttrRvalueReference Attr = 0x78 119 AttrMacros Attr = 0x79 120 AttrCallAllCalls Attr = 0x7A 121 AttrCallAllSourceCalls Attr = 0x7B 122 AttrCallAllTailCalls Attr = 0x7C 123 AttrCallReturnPC Attr = 0x7D 124 AttrCallValue Attr = 0x7E 125 AttrCallOrigin Attr = 0x7F 126 AttrCallParameter Attr = 0x80 127 AttrCallPC Attr = 0x81 128 AttrCallTailCall Attr = 0x82 129 AttrCallTarget Attr = 0x83 130 AttrCallTargetClobbered Attr = 0x84 131 AttrCallDataLocation Attr = 0x85 132 AttrCallDataValue Attr = 0x86 133 AttrNoreturn Attr = 0x87 134 AttrAlignment Attr = 0x88 135 AttrExportSymbols Attr = 0x89 136 AttrDeleted Attr = 0x8A 137 AttrDefaulted Attr = 0x8B 138 AttrLoclistsBase Attr = 0x8C 139 ) 140 141 func (a Attr) GoString() string { 142 if str, ok := _Attr_map[a]; ok { 143 return "dwarf.Attr" + str 144 } 145 return "dwarf." + a.String() 146 } 147 148 // A format is a DWARF data encoding format. 149 type format uint32 150 151 const ( 152 // value formats 153 formAddr format = 0x01 154 formDwarfBlock2 format = 0x03 155 formDwarfBlock4 format = 0x04 156 formData2 format = 0x05 157 formData4 format = 0x06 158 formData8 format = 0x07 159 formString format = 0x08 160 formDwarfBlock format = 0x09 161 formDwarfBlock1 format = 0x0A 162 formData1 format = 0x0B 163 formFlag format = 0x0C 164 formSdata format = 0x0D 165 formStrp format = 0x0E 166 formUdata format = 0x0F 167 formRefAddr format = 0x10 168 formRef1 format = 0x11 169 formRef2 format = 0x12 170 formRef4 format = 0x13 171 formRef8 format = 0x14 172 formRefUdata format = 0x15 173 formIndirect format = 0x16 174 // The following are new in DWARF 4. 175 formSecOffset format = 0x17 176 formExprloc format = 0x18 177 formFlagPresent format = 0x19 178 formRefSig8 format = 0x20 179 // The following are new in DWARF 5. 180 formStrx format = 0x1A 181 formAddrx format = 0x1B 182 formRefSup4 format = 0x1C 183 formStrpSup format = 0x1D 184 formData16 format = 0x1E 185 formLineStrp format = 0x1F 186 formImplicitConst format = 0x21 187 formLoclistx format = 0x22 188 formRnglistx format = 0x23 189 formRefSup8 format = 0x24 190 formStrx1 format = 0x25 191 formStrx2 format = 0x26 192 formStrx3 format = 0x27 193 formStrx4 format = 0x28 194 formAddrx1 format = 0x29 195 formAddrx2 format = 0x2A 196 formAddrx3 format = 0x2B 197 formAddrx4 format = 0x2C 198 // Extensions for multi-file compression (.dwz) 199 // http://www.dwarfstd.org/ShowIssue.php?issue=120604.1 200 formGnuRefAlt format = 0x1f20 201 formGnuStrpAlt format = 0x1f21 202 ) 203 204 //go:generate stringer -type Tag -trimprefix=Tag 205 206 // A Tag is the classification (the type) of an [Entry]. 207 type Tag uint32 208 209 const ( 210 TagArrayType Tag = 0x01 211 TagClassType Tag = 0x02 212 TagEntryPoint Tag = 0x03 213 TagEnumerationType Tag = 0x04 214 TagFormalParameter Tag = 0x05 215 TagImportedDeclaration Tag = 0x08 216 TagLabel Tag = 0x0A 217 TagLexDwarfBlock Tag = 0x0B 218 TagMember Tag = 0x0D 219 TagPointerType Tag = 0x0F 220 TagReferenceType Tag = 0x10 221 TagCompileUnit Tag = 0x11 222 TagStringType Tag = 0x12 223 TagStructType Tag = 0x13 224 TagSubroutineType Tag = 0x15 225 TagTypedef Tag = 0x16 226 TagUnionType Tag = 0x17 227 TagUnspecifiedParameters Tag = 0x18 228 TagVariant Tag = 0x19 229 TagCommonDwarfBlock Tag = 0x1A 230 TagCommonInclusion Tag = 0x1B 231 TagInheritance Tag = 0x1C 232 TagInlinedSubroutine Tag = 0x1D 233 TagModule Tag = 0x1E 234 TagPtrToMemberType Tag = 0x1F 235 TagSetType Tag = 0x20 236 TagSubrangeType Tag = 0x21 237 TagWithStmt Tag = 0x22 238 TagAccessDeclaration Tag = 0x23 239 TagBaseType Tag = 0x24 240 TagCatchDwarfBlock Tag = 0x25 241 TagConstType Tag = 0x26 242 TagConstant Tag = 0x27 243 TagEnumerator Tag = 0x28 244 TagFileType Tag = 0x29 245 TagFriend Tag = 0x2A 246 TagNamelist Tag = 0x2B 247 TagNamelistItem Tag = 0x2C 248 TagPackedType Tag = 0x2D 249 TagSubprogram Tag = 0x2E 250 TagTemplateTypeParameter Tag = 0x2F 251 TagTemplateValueParameter Tag = 0x30 252 TagThrownType Tag = 0x31 253 TagTryDwarfBlock Tag = 0x32 254 TagVariantPart Tag = 0x33 255 TagVariable Tag = 0x34 256 TagVolatileType Tag = 0x35 257 // The following are new in DWARF 3. 258 TagDwarfProcedure Tag = 0x36 259 TagRestrictType Tag = 0x37 260 TagInterfaceType Tag = 0x38 261 TagNamespace Tag = 0x39 262 TagImportedModule Tag = 0x3A 263 TagUnspecifiedType Tag = 0x3B 264 TagPartialUnit Tag = 0x3C 265 TagImportedUnit Tag = 0x3D 266 TagMutableType Tag = 0x3E // Later removed from DWARF. 267 TagCondition Tag = 0x3F 268 TagSharedType Tag = 0x40 269 // The following are new in DWARF 4. 270 TagTypeUnit Tag = 0x41 271 TagRvalueReferenceType Tag = 0x42 272 TagTemplateAlias Tag = 0x43 273 // The following are new in DWARF 5. 274 TagCoarrayType Tag = 0x44 275 TagGenericSubrange Tag = 0x45 276 TagDynamicType Tag = 0x46 277 TagAtomicType Tag = 0x47 278 TagCallSite Tag = 0x48 279 TagCallSiteParameter Tag = 0x49 280 TagSkeletonUnit Tag = 0x4A 281 TagImmutableType Tag = 0x4B 282 ) 283 284 func (t Tag) GoString() string { 285 if t <= TagTemplateAlias { 286 return "dwarf.Tag" + t.String() 287 } 288 return "dwarf." + t.String() 289 } 290 291 // Location expression operators. 292 // The debug info encodes value locations like 8(R3) 293 // as a sequence of these op codes. 294 // This package does not implement full expressions; 295 // the opPlusUconst operator is expected by the type parser. 296 const ( 297 opAddr = 0x03 /* 1 op, const addr */ 298 opDeref = 0x06 299 opConst1u = 0x08 /* 1 op, 1 byte const */ 300 opConst1s = 0x09 /* " signed */ 301 opConst2u = 0x0A /* 1 op, 2 byte const */ 302 opConst2s = 0x0B /* " signed */ 303 opConst4u = 0x0C /* 1 op, 4 byte const */ 304 opConst4s = 0x0D /* " signed */ 305 opConst8u = 0x0E /* 1 op, 8 byte const */ 306 opConst8s = 0x0F /* " signed */ 307 opConstu = 0x10 /* 1 op, LEB128 const */ 308 opConsts = 0x11 /* " signed */ 309 opDup = 0x12 310 opDrop = 0x13 311 opOver = 0x14 312 opPick = 0x15 /* 1 op, 1 byte stack index */ 313 opSwap = 0x16 314 opRot = 0x17 315 opXderef = 0x18 316 opAbs = 0x19 317 opAnd = 0x1A 318 opDiv = 0x1B 319 opMinus = 0x1C 320 opMod = 0x1D 321 opMul = 0x1E 322 opNeg = 0x1F 323 opNot = 0x20 324 opOr = 0x21 325 opPlus = 0x22 326 opPlusUconst = 0x23 /* 1 op, ULEB128 addend */ 327 opShl = 0x24 328 opShr = 0x25 329 opShra = 0x26 330 opXor = 0x27 331 opSkip = 0x2F /* 1 op, signed 2-byte constant */ 332 opBra = 0x28 /* 1 op, signed 2-byte constant */ 333 opEq = 0x29 334 opGe = 0x2A 335 opGt = 0x2B 336 opLe = 0x2C 337 opLt = 0x2D 338 opNe = 0x2E 339 opLit0 = 0x30 340 /* OpLitN = OpLit0 + N for N = 0..31 */ 341 opReg0 = 0x50 342 /* OpRegN = OpReg0 + N for N = 0..31 */ 343 opBreg0 = 0x70 /* 1 op, signed LEB128 constant */ 344 /* OpBregN = OpBreg0 + N for N = 0..31 */ 345 opRegx = 0x90 /* 1 op, ULEB128 register */ 346 opFbreg = 0x91 /* 1 op, SLEB128 offset */ 347 opBregx = 0x92 /* 2 op, ULEB128 reg; SLEB128 off */ 348 opPiece = 0x93 /* 1 op, ULEB128 size of piece */ 349 opDerefSize = 0x94 /* 1-byte size of data retrieved */ 350 opXderefSize = 0x95 /* 1-byte size of data retrieved */ 351 opNop = 0x96 352 // The following are new in DWARF 3. 353 opPushObjAddr = 0x97 354 opCall2 = 0x98 /* 2-byte offset of DIE */ 355 opCall4 = 0x99 /* 4-byte offset of DIE */ 356 opCallRef = 0x9A /* 4- or 8- byte offset of DIE */ 357 opFormTLSAddress = 0x9B 358 opCallFrameCFA = 0x9C 359 opBitPiece = 0x9D 360 // The following are new in DWARF 4. 361 opImplicitValue = 0x9E 362 opStackValue = 0x9F 363 // The following a new in DWARF 5. 364 opImplicitPointer = 0xA0 365 opAddrx = 0xA1 366 opConstx = 0xA2 367 opEntryValue = 0xA3 368 opConstType = 0xA4 369 opRegvalType = 0xA5 370 opDerefType = 0xA6 371 opXderefType = 0xA7 372 opConvert = 0xA8 373 opReinterpret = 0xA9 374 /* 0xE0-0xFF reserved for user-specific */ 375 ) 376 377 // Basic type encodings -- the value for AttrEncoding in a TagBaseType Entry. 378 const ( 379 encAddress = 0x01 380 encBoolean = 0x02 381 encComplexFloat = 0x03 382 encFloat = 0x04 383 encSigned = 0x05 384 encSignedChar = 0x06 385 encUnsigned = 0x07 386 encUnsignedChar = 0x08 387 // The following are new in DWARF 3. 388 encImaginaryFloat = 0x09 389 encPackedDecimal = 0x0A 390 encNumericString = 0x0B 391 encEdited = 0x0C 392 encSignedFixed = 0x0D 393 encUnsignedFixed = 0x0E 394 encDecimalFloat = 0x0F 395 // The following are new in DWARF 4. 396 encUTF = 0x10 397 // The following are new in DWARF 5. 398 encUCS = 0x11 399 encASCII = 0x12 400 ) 401 402 // Statement program standard opcode encodings. 403 const ( 404 lnsCopy = 1 405 lnsAdvancePC = 2 406 lnsAdvanceLine = 3 407 lnsSetFile = 4 408 lnsSetColumn = 5 409 lnsNegateStmt = 6 410 lnsSetBasicBlock = 7 411 lnsConstAddPC = 8 412 lnsFixedAdvancePC = 9 413 414 // DWARF 3 415 lnsSetPrologueEnd = 10 416 lnsSetEpilogueBegin = 11 417 lnsSetISA = 12 418 ) 419 420 // Statement program extended opcode encodings. 421 const ( 422 lneEndSequence = 1 423 lneSetAddress = 2 424 lneDefineFile = 3 425 426 // DWARF 4 427 lneSetDiscriminator = 4 428 ) 429 430 // Line table directory and file name entry formats. 431 // These are new in DWARF 5. 432 const ( 433 lnctPath = 0x01 434 lnctDirectoryIndex = 0x02 435 lnctTimestamp = 0x03 436 lnctSize = 0x04 437 lnctMD5 = 0x05 438 ) 439 440 // Location list entry codes. 441 // These are new in DWARF 5. 442 const ( 443 lleEndOfList = 0x00 444 lleBaseAddressx = 0x01 445 lleStartxEndx = 0x02 446 lleStartxLength = 0x03 447 lleOffsetPair = 0x04 448 lleDefaultLocation = 0x05 449 lleBaseAddress = 0x06 450 lleStartEnd = 0x07 451 lleStartLength = 0x08 452 ) 453 454 // Unit header unit type encodings. 455 // These are new in DWARF 5. 456 const ( 457 utCompile = 0x01 458 utType = 0x02 459 utPartial = 0x03 460 utSkeleton = 0x04 461 utSplitCompile = 0x05 462 utSplitType = 0x06 463 ) 464 465 // Opcodes for DWARFv5 debug_rnglists section. 466 const ( 467 rleEndOfList = 0x0 468 rleBaseAddressx = 0x1 469 rleStartxEndx = 0x2 470 rleStartxLength = 0x3 471 rleOffsetPair = 0x4 472 rleBaseAddress = 0x5 473 rleStartEnd = 0x6 474 rleStartLength = 0x7 475 )