]> Cypherpunks repositories - gostls13.git/commitdiff
debug/dwarf: add new constants defined in DWARF 5
authorIan Lance Taylor <iant@golang.org>
Thu, 2 May 2019 00:48:46 +0000 (17:48 -0700)
committerIan Lance Taylor <iant@golang.org>
Tue, 3 Sep 2019 17:32:37 +0000 (17:32 +0000)
Also add a few other missing constants.

Also rerun current version of stringer.

Change-Id: I004ef27f6b40fe2cab64c52d169255dfea43fa01
Reviewed-on: https://go-review.googlesource.com/c/go/+/175137
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
src/debug/dwarf/attr_string.go
src/debug/dwarf/class_string.go
src/debug/dwarf/const.go
src/debug/dwarf/tag_string.go

index 34e3659a64c62ce8bc1cf4b185972d3f4e3c1b32..8a4fff85a408dfcac7e382d50a118d97adaba43b 100644 (file)
@@ -4,81 +4,257 @@ package dwarf
 
 import "strconv"
 
-const _Attr_name = "SiblingLocationNameOrderingByteSizeBitOffsetBitSizeStmtListLowpcHighpcLanguageDiscrDiscrValueVisibilityImportStringLengthCommonRefCompDirConstValueContainingTypeDefaultValueInlineIsOptionalLowerBoundProducerPrototypedReturnAddrStartScopeStrideSizeUpperBoundAbstractOriginAccessibilityAddrClassArtificialBaseTypesCallingCountDataMemberLocDeclColumnDeclFileDeclLineDeclarationDiscrListEncodingExternalFrameBaseFriendIdentifierCaseMacroInfoNamelistItemPrioritySegmentSpecificationStaticLinkTypeUseLocationVarParamVirtualityVtableElemLocAllocatedAssociatedDataLocationStrideEntrypcUseUTF8ExtensionRangesTrampolineCallColumnCallFileCallLineDescription"
+func _() {
+       // An "invalid array index" compiler error signifies that the constant values have changed.
+       // Re-run the stringer command to generate them again.
+       var x [1]struct{}
+       _ = x[AttrSibling-1]
+       _ = x[AttrLocation-2]
+       _ = x[AttrName-3]
+       _ = x[AttrOrdering-9]
+       _ = x[AttrByteSize-11]
+       _ = x[AttrBitOffset-12]
+       _ = x[AttrBitSize-13]
+       _ = x[AttrStmtList-16]
+       _ = x[AttrLowpc-17]
+       _ = x[AttrHighpc-18]
+       _ = x[AttrLanguage-19]
+       _ = x[AttrDiscr-21]
+       _ = x[AttrDiscrValue-22]
+       _ = x[AttrVisibility-23]
+       _ = x[AttrImport-24]
+       _ = x[AttrStringLength-25]
+       _ = x[AttrCommonRef-26]
+       _ = x[AttrCompDir-27]
+       _ = x[AttrConstValue-28]
+       _ = x[AttrContainingType-29]
+       _ = x[AttrDefaultValue-30]
+       _ = x[AttrInline-32]
+       _ = x[AttrIsOptional-33]
+       _ = x[AttrLowerBound-34]
+       _ = x[AttrProducer-37]
+       _ = x[AttrPrototyped-39]
+       _ = x[AttrReturnAddr-42]
+       _ = x[AttrStartScope-44]
+       _ = x[AttrStrideSize-46]
+       _ = x[AttrUpperBound-47]
+       _ = x[AttrAbstractOrigin-49]
+       _ = x[AttrAccessibility-50]
+       _ = x[AttrAddrClass-51]
+       _ = x[AttrArtificial-52]
+       _ = x[AttrBaseTypes-53]
+       _ = x[AttrCalling-54]
+       _ = x[AttrCount-55]
+       _ = x[AttrDataMemberLoc-56]
+       _ = x[AttrDeclColumn-57]
+       _ = x[AttrDeclFile-58]
+       _ = x[AttrDeclLine-59]
+       _ = x[AttrDeclaration-60]
+       _ = x[AttrDiscrList-61]
+       _ = x[AttrEncoding-62]
+       _ = x[AttrExternal-63]
+       _ = x[AttrFrameBase-64]
+       _ = x[AttrFriend-65]
+       _ = x[AttrIdentifierCase-66]
+       _ = x[AttrMacroInfo-67]
+       _ = x[AttrNamelistItem-68]
+       _ = x[AttrPriority-69]
+       _ = x[AttrSegment-70]
+       _ = x[AttrSpecification-71]
+       _ = x[AttrStaticLink-72]
+       _ = x[AttrType-73]
+       _ = x[AttrUseLocation-74]
+       _ = x[AttrVarParam-75]
+       _ = x[AttrVirtuality-76]
+       _ = x[AttrVtableElemLoc-77]
+       _ = x[AttrAllocated-78]
+       _ = x[AttrAssociated-79]
+       _ = x[AttrDataLocation-80]
+       _ = x[AttrStride-81]
+       _ = x[AttrEntrypc-82]
+       _ = x[AttrUseUTF8-83]
+       _ = x[AttrExtension-84]
+       _ = x[AttrRanges-85]
+       _ = x[AttrTrampoline-86]
+       _ = x[AttrCallColumn-87]
+       _ = x[AttrCallFile-88]
+       _ = x[AttrCallLine-89]
+       _ = x[AttrDescription-90]
+       _ = x[AttrBinaryScale-91]
+       _ = x[AttrDecimalScale-92]
+       _ = x[AttrSmall-93]
+       _ = x[AttrDecimalSign-94]
+       _ = x[AttrDigitCount-95]
+       _ = x[AttrPictureString-96]
+       _ = x[AttrMutable-97]
+       _ = x[AttrThreadsScaled-98]
+       _ = x[AttrExplicit-99]
+       _ = x[AttrObjectPointer-100]
+       _ = x[AttrEndianity-101]
+       _ = x[AttrElemental-102]
+       _ = x[AttrPure-103]
+       _ = x[AttrRecursive-104]
+       _ = x[AttrSignature-105]
+       _ = x[AttrMainSubprogram-106]
+       _ = x[AttrDataBitOffset-107]
+       _ = x[AttrConstExpr-108]
+       _ = x[AttrEnumClass-109]
+       _ = x[AttrLinkageName-110]
+       _ = x[AttrStringLengthBitSize-111]
+       _ = x[AttrStringLengthByteSize-112]
+       _ = x[AttrRank-113]
+       _ = x[AttrStrOffsetsBase-114]
+       _ = x[AttrAddrBase-115]
+       _ = x[AttrRnglistsBase-116]
+       _ = x[AttrDwoName-118]
+       _ = x[AttrReference-119]
+       _ = x[AttrRvalueReference-120]
+       _ = x[AttrMacros-121]
+       _ = x[AttrCallAllCalls-122]
+       _ = x[AttrCallAllSourceCalls-123]
+       _ = x[AttrCallAllTailCalls-124]
+       _ = x[AttrCallReturnPC-125]
+       _ = x[AttrCallValue-126]
+       _ = x[AttrCallOrigin-127]
+       _ = x[AttrCallParameter-128]
+       _ = x[AttrCallPC-129]
+       _ = x[AttrCallTailCall-130]
+       _ = x[AttrCallTarget-131]
+       _ = x[AttrCallTargetClobbered-132]
+       _ = x[AttrCallDataLocation-133]
+       _ = x[AttrCallDataValue-134]
+       _ = x[AttrNoreturn-135]
+       _ = x[AttrAlignment-136]
+       _ = x[AttrExportSymbols-137]
+       _ = x[AttrDeleted-138]
+       _ = x[AttrDefaulted-139]
+       _ = x[AttrLoclistsBase-140]
+}
+
+const _Attr_name = "SiblingLocationNameOrderingByteSizeBitOffsetBitSizeStmtListLowpcHighpcLanguageDiscrDiscrValueVisibilityImportStringLengthCommonRefCompDirConstValueContainingTypeDefaultValueInlineIsOptionalLowerBoundProducerPrototypedReturnAddrStartScopeStrideSizeUpperBoundAbstractOriginAccessibilityAddrClassArtificialBaseTypesCallingCountDataMemberLocDeclColumnDeclFileDeclLineDeclarationDiscrListEncodingExternalFrameBaseFriendIdentifierCaseMacroInfoNamelistItemPrioritySegmentSpecificationStaticLinkTypeUseLocationVarParamVirtualityVtableElemLocAllocatedAssociatedDataLocationStrideEntrypcUseUTF8ExtensionRangesTrampolineCallColumnCallFileCallLineDescriptionBinaryScaleDecimalScaleSmallDecimalSignDigitCountPictureStringMutableThreadsScaledExplicitObjectPointerEndianityElementalPureRecursiveSignatureMainSubprogramDataBitOffsetConstExprEnumClassLinkageNameStringLengthBitSizeStringLengthByteSizeRankStrOffsetsBaseAddrBaseRnglistsBaseDwoNameReferenceRvalueReferenceMacrosCallAllCallsCallAllSourceCallsCallAllTailCallsCallReturnPCCallValueCallOriginCallParameterCallPCCallTailCallCallTargetCallTargetClobberedCallDataLocationCallDataValueNoreturnAlignmentExportSymbolsDeletedDefaultedLoclistsBase"
 
 var _Attr_map = map[Attr]string{
-       1:  _Attr_name[0:7],
-       2:  _Attr_name[7:15],
-       3:  _Attr_name[15:19],
-       9:  _Attr_name[19:27],
-       11: _Attr_name[27:35],
-       12: _Attr_name[35:44],
-       13: _Attr_name[44:51],
-       16: _Attr_name[51:59],
-       17: _Attr_name[59:64],
-       18: _Attr_name[64:70],
-       19: _Attr_name[70:78],
-       21: _Attr_name[78:83],
-       22: _Attr_name[83:93],
-       23: _Attr_name[93:103],
-       24: _Attr_name[103:109],
-       25: _Attr_name[109:121],
-       26: _Attr_name[121:130],
-       27: _Attr_name[130:137],
-       28: _Attr_name[137:147],
-       29: _Attr_name[147:161],
-       30: _Attr_name[161:173],
-       32: _Attr_name[173:179],
-       33: _Attr_name[179:189],
-       34: _Attr_name[189:199],
-       37: _Attr_name[199:207],
-       39: _Attr_name[207:217],
-       42: _Attr_name[217:227],
-       44: _Attr_name[227:237],
-       46: _Attr_name[237:247],
-       47: _Attr_name[247:257],
-       49: _Attr_name[257:271],
-       50: _Attr_name[271:284],
-       51: _Attr_name[284:293],
-       52: _Attr_name[293:303],
-       53: _Attr_name[303:312],
-       54: _Attr_name[312:319],
-       55: _Attr_name[319:324],
-       56: _Attr_name[324:337],
-       57: _Attr_name[337:347],
-       58: _Attr_name[347:355],
-       59: _Attr_name[355:363],
-       60: _Attr_name[363:374],
-       61: _Attr_name[374:383],
-       62: _Attr_name[383:391],
-       63: _Attr_name[391:399],
-       64: _Attr_name[399:408],
-       65: _Attr_name[408:414],
-       66: _Attr_name[414:428],
-       67: _Attr_name[428:437],
-       68: _Attr_name[437:449],
-       69: _Attr_name[449:457],
-       70: _Attr_name[457:464],
-       71: _Attr_name[464:477],
-       72: _Attr_name[477:487],
-       73: _Attr_name[487:491],
-       74: _Attr_name[491:502],
-       75: _Attr_name[502:510],
-       76: _Attr_name[510:520],
-       77: _Attr_name[520:533],
-       78: _Attr_name[533:542],
-       79: _Attr_name[542:552],
-       80: _Attr_name[552:564],
-       81: _Attr_name[564:570],
-       82: _Attr_name[570:577],
-       83: _Attr_name[577:584],
-       84: _Attr_name[584:593],
-       85: _Attr_name[593:599],
-       86: _Attr_name[599:609],
-       87: _Attr_name[609:619],
-       88: _Attr_name[619:627],
-       89: _Attr_name[627:635],
-       90: _Attr_name[635:646],
+       1:   _Attr_name[0:7],
+       2:   _Attr_name[7:15],
+       3:   _Attr_name[15:19],
+       9:   _Attr_name[19:27],
+       11:  _Attr_name[27:35],
+       12:  _Attr_name[35:44],
+       13:  _Attr_name[44:51],
+       16:  _Attr_name[51:59],
+       17:  _Attr_name[59:64],
+       18:  _Attr_name[64:70],
+       19:  _Attr_name[70:78],
+       21:  _Attr_name[78:83],
+       22:  _Attr_name[83:93],
+       23:  _Attr_name[93:103],
+       24:  _Attr_name[103:109],
+       25:  _Attr_name[109:121],
+       26:  _Attr_name[121:130],
+       27:  _Attr_name[130:137],
+       28:  _Attr_name[137:147],
+       29:  _Attr_name[147:161],
+       30:  _Attr_name[161:173],
+       32:  _Attr_name[173:179],
+       33:  _Attr_name[179:189],
+       34:  _Attr_name[189:199],
+       37:  _Attr_name[199:207],
+       39:  _Attr_name[207:217],
+       42:  _Attr_name[217:227],
+       44:  _Attr_name[227:237],
+       46:  _Attr_name[237:247],
+       47:  _Attr_name[247:257],
+       49:  _Attr_name[257:271],
+       50:  _Attr_name[271:284],
+       51:  _Attr_name[284:293],
+       52:  _Attr_name[293:303],
+       53:  _Attr_name[303:312],
+       54:  _Attr_name[312:319],
+       55:  _Attr_name[319:324],
+       56:  _Attr_name[324:337],
+       57:  _Attr_name[337:347],
+       58:  _Attr_name[347:355],
+       59:  _Attr_name[355:363],
+       60:  _Attr_name[363:374],
+       61:  _Attr_name[374:383],
+       62:  _Attr_name[383:391],
+       63:  _Attr_name[391:399],
+       64:  _Attr_name[399:408],
+       65:  _Attr_name[408:414],
+       66:  _Attr_name[414:428],
+       67:  _Attr_name[428:437],
+       68:  _Attr_name[437:449],
+       69:  _Attr_name[449:457],
+       70:  _Attr_name[457:464],
+       71:  _Attr_name[464:477],
+       72:  _Attr_name[477:487],
+       73:  _Attr_name[487:491],
+       74:  _Attr_name[491:502],
+       75:  _Attr_name[502:510],
+       76:  _Attr_name[510:520],
+       77:  _Attr_name[520:533],
+       78:  _Attr_name[533:542],
+       79:  _Attr_name[542:552],
+       80:  _Attr_name[552:564],
+       81:  _Attr_name[564:570],
+       82:  _Attr_name[570:577],
+       83:  _Attr_name[577:584],
+       84:  _Attr_name[584:593],
+       85:  _Attr_name[593:599],
+       86:  _Attr_name[599:609],
+       87:  _Attr_name[609:619],
+       88:  _Attr_name[619:627],
+       89:  _Attr_name[627:635],
+       90:  _Attr_name[635:646],
+       91:  _Attr_name[646:657],
+       92:  _Attr_name[657:669],
+       93:  _Attr_name[669:674],
+       94:  _Attr_name[674:685],
+       95:  _Attr_name[685:695],
+       96:  _Attr_name[695:708],
+       97:  _Attr_name[708:715],
+       98:  _Attr_name[715:728],
+       99:  _Attr_name[728:736],
+       100: _Attr_name[736:749],
+       101: _Attr_name[749:758],
+       102: _Attr_name[758:767],
+       103: _Attr_name[767:771],
+       104: _Attr_name[771:780],
+       105: _Attr_name[780:789],
+       106: _Attr_name[789:803],
+       107: _Attr_name[803:816],
+       108: _Attr_name[816:825],
+       109: _Attr_name[825:834],
+       110: _Attr_name[834:845],
+       111: _Attr_name[845:864],
+       112: _Attr_name[864:884],
+       113: _Attr_name[884:888],
+       114: _Attr_name[888:902],
+       115: _Attr_name[902:910],
+       116: _Attr_name[910:922],
+       118: _Attr_name[922:929],
+       119: _Attr_name[929:938],
+       120: _Attr_name[938:953],
+       121: _Attr_name[953:959],
+       122: _Attr_name[959:971],
+       123: _Attr_name[971:989],
+       124: _Attr_name[989:1005],
+       125: _Attr_name[1005:1017],
+       126: _Attr_name[1017:1026],
+       127: _Attr_name[1026:1036],
+       128: _Attr_name[1036:1049],
+       129: _Attr_name[1049:1055],
+       130: _Attr_name[1055:1067],
+       131: _Attr_name[1067:1077],
+       132: _Attr_name[1077:1096],
+       133: _Attr_name[1096:1112],
+       134: _Attr_name[1112:1125],
+       135: _Attr_name[1125:1133],
+       136: _Attr_name[1133:1142],
+       137: _Attr_name[1142:1155],
+       138: _Attr_name[1155:1162],
+       139: _Attr_name[1162:1171],
+       140: _Attr_name[1171:1183],
 }
 
 func (i Attr) String() string {
index a6aabff524fe965524989ec52db58869cbd53589..76de7cad31112213495dd2dd095ed1e6f56c2500 100644 (file)
@@ -4,6 +4,27 @@ package dwarf
 
 import "strconv"
 
+func _() {
+       // An "invalid array index" compiler error signifies that the constant values have changed.
+       // Re-run the stringer command to generate them again.
+       var x [1]struct{}
+       _ = x[ClassUnknown-0]
+       _ = x[ClassAddress-1]
+       _ = x[ClassBlock-2]
+       _ = x[ClassConstant-3]
+       _ = x[ClassExprLoc-4]
+       _ = x[ClassFlag-5]
+       _ = x[ClassLinePtr-6]
+       _ = x[ClassLocListPtr-7]
+       _ = x[ClassMacPtr-8]
+       _ = x[ClassRangeListPtr-9]
+       _ = x[ClassReference-10]
+       _ = x[ClassReferenceSig-11]
+       _ = x[ClassString-12]
+       _ = x[ClassReferenceAlt-13]
+       _ = x[ClassStringAlt-14]
+}
+
 const _Class_name = "ClassUnknownClassAddressClassBlockClassConstantClassExprLocClassFlagClassLinePtrClassLocListPtrClassMacPtrClassRangeListPtrClassReferenceClassReferenceSigClassStringClassReferenceAltClassStringAlt"
 
 var _Class_index = [...]uint8{0, 12, 24, 34, 47, 59, 68, 80, 95, 106, 123, 137, 154, 165, 182, 196}
index 4dda83e6928d332bd1cc97cfa582052e11c860dd..b11bf90c37a866c03f4efaf650549e2e3e17005e 100644 (file)
@@ -71,19 +71,71 @@ const (
        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
+       // The following are new in DWARF 3.
+       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
+       AttrBinaryScale   Attr = 0x5B
+       AttrDecimalScale  Attr = 0x5C
+       AttrSmall         Attr = 0x5D
+       AttrDecimalSign   Attr = 0x5E
+       AttrDigitCount    Attr = 0x5F
+       AttrPictureString Attr = 0x60
+       AttrMutable       Attr = 0x61
+       AttrThreadsScaled Attr = 0x62
+       AttrExplicit      Attr = 0x63
+       AttrObjectPointer Attr = 0x64
+       AttrEndianity     Attr = 0x65
+       AttrElemental     Attr = 0x66
+       AttrPure          Attr = 0x67
+       AttrRecursive     Attr = 0x68
+       // The following are new in DWARF 4.
+       AttrSignature      Attr = 0x69
+       AttrMainSubprogram Attr = 0x6A
+       AttrDataBitOffset  Attr = 0x6B
+       AttrConstExpr      Attr = 0x6C
+       AttrEnumClass      Attr = 0x6D
+       AttrLinkageName    Attr = 0x6E
+       // The following are new in DWARF 5.
+       AttrStringLengthBitSize  Attr = 0x6F
+       AttrStringLengthByteSize Attr = 0x70
+       AttrRank                 Attr = 0x71
+       AttrStrOffsetsBase       Attr = 0x72
+       AttrAddrBase             Attr = 0x73
+       AttrRnglistsBase         Attr = 0x74
+       AttrDwoName              Attr = 0x76
+       AttrReference            Attr = 0x77
+       AttrRvalueReference      Attr = 0x78
+       AttrMacros               Attr = 0x79
+       AttrCallAllCalls         Attr = 0x7A
+       AttrCallAllSourceCalls   Attr = 0x7B
+       AttrCallAllTailCalls     Attr = 0x7C
+       AttrCallReturnPC         Attr = 0x7D
+       AttrCallValue            Attr = 0x7E
+       AttrCallOrigin           Attr = 0x7F
+       AttrCallParameter        Attr = 0x80
+       AttrCallPC               Attr = 0x81
+       AttrCallTailCall         Attr = 0x82
+       AttrCallTarget           Attr = 0x83
+       AttrCallTargetClobbered  Attr = 0x84
+       AttrCallDataLocation     Attr = 0x85
+       AttrCallDataValue        Attr = 0x86
+       AttrNoreturn             Attr = 0x87
+       AttrAlignment            Attr = 0x88
+       AttrExportSymbols        Attr = 0x89
+       AttrDeleted              Attr = 0x8A
+       AttrDefaulted            Attr = 0x8B
+       AttrLoclistsBase         Attr = 0x8C
 )
 
 func (a Attr) GoString() string {
@@ -124,6 +176,25 @@ const (
        formExprloc     format = 0x18
        formFlagPresent format = 0x19
        formRefSig8     format = 0x20
+       // The following are new in DWARF 5.
+       formStrx          format = 0x1A
+       formAddrx         format = 0x1B
+       formRefSup4       format = 0x1C
+       formStrpSup       format = 0x1D
+       formData16        format = 0x1E
+       formLineStrp      format = 0x1F
+       formImplicitConst format = 0x21
+       formLoclistx      format = 0x22
+       formRnglistx      format = 0x23
+       formRefSup8       format = 0x24
+       formStrx1         format = 0x25
+       formStrx2         format = 0x26
+       formStrx3         format = 0x27
+       formStrx4         format = 0x28
+       formAddrx1        format = 0x29
+       formAddrx2        format = 0x2A
+       formAddrx3        format = 0x2B
+       formAddrx4        format = 0x2C
        // Extensions for multi-file compression (.dwz)
        // http://www.dwarfstd.org/ShowIssue.php?issue=120604.1
        formGnuRefAlt  format = 0x1f20
@@ -199,6 +270,15 @@ const (
        TagTypeUnit            Tag = 0x41
        TagRvalueReferenceType Tag = 0x42
        TagTemplateAlias       Tag = 0x43
+       // The following are new in DWARF 5.
+       TagCoarrayType       Tag = 0x44
+       TagGenericSubrange   Tag = 0x45
+       TagDynamicType       Tag = 0x46
+       TagAtomicType        Tag = 0x47
+       TagCallSite          Tag = 0x48
+       TagCallSiteParameter Tag = 0x49
+       TagSkeletonUnit      Tag = 0x4A
+       TagImmutableType     Tag = 0x4B
 )
 
 func (t Tag) GoString() string {
@@ -269,25 +349,54 @@ const (
        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 */
+       // The following are new in DWARF 3.
+       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 */
+       opFormTLSAddress = 0x9B
+       opCallFrameCFA   = 0x9C
+       opBitPiece       = 0x9D
+       // The following are new in DWARF 4.
+       opImplicitValue = 0x9E
+       opStackValue    = 0x9F
+       // The following a new in DWARF 5.
+       opImplicitPointer = 0xA0
+       opAddrx           = 0xA1
+       opConstx          = 0xA2
+       opEntryValue      = 0xA3
+       opConstType       = 0xA4
+       opRegvalType      = 0xA5
+       opDerefType       = 0xA6
+       opXderefType      = 0xA7
+       opConvert         = 0xA8
+       opReinterpret     = 0xA9
        /* 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
+       encAddress      = 0x01
+       encBoolean      = 0x02
+       encComplexFloat = 0x03
+       encFloat        = 0x04
+       encSigned       = 0x05
+       encSignedChar   = 0x06
+       encUnsigned     = 0x07
+       encUnsignedChar = 0x08
+       // The following are new in DWARF 3.
        encImaginaryFloat = 0x09
+       encPackedDecimal  = 0x0A
+       encNumericString  = 0x0B
+       encEdited         = 0x0C
+       encSignedFixed    = 0x0D
+       encUnsignedFixed  = 0x0E
+       encDecimalFloat   = 0x0F
+       // The following are new in DWARF 4.
+       encUTF = 0x10
+       // The following are new in DWARF 5.
+       encUCS   = 0x11
+       encASCII = 0x12
 )
 
 // Statement program standard opcode encodings.
@@ -317,3 +426,38 @@ const (
        // DWARF 4
        lneSetDiscriminator = 4
 )
+
+// Line table directory directory and file name entry formats.
+// These are new in DWARF 5.
+const (
+       lnctPath           = 0x01
+       lnctDirectoryIndex = 0x02
+       lnctTimestamp      = 0x03
+       lnctSize           = 0x04
+       lnctMD5            = 0x05
+)
+
+// Location list entry codes.
+// These are new in DWARF 5.
+const (
+       lleEndOfList       = 0x00
+       lleBaseAddressx    = 0x01
+       lleStartxEndx      = 0x02
+       lleStartxLength    = 0x03
+       lleOffsetPair      = 0x04
+       lleDefaultLocation = 0x05
+       lleBaseAddress     = 0x06
+       lleStartEnd        = 0x07
+       lleStartLength     = 0x08
+)
+
+// Unit header unit type encodings.
+// These are new in DWARF 5.
+const (
+       utCompile      = 0x01
+       utType         = 0x02
+       utPartial      = 0x03
+       utSkeleton     = 0x04
+       utSplitCompile = 0x05
+       utSplitType    = 0x06
+)
index ac396af050f06cf26508d6e7bf3d77031e21012c..b79ea175b06ffa4984485f7cf84dc461967064e9 100644 (file)
@@ -4,20 +4,95 @@ package dwarf
 
 import "strconv"
 
+func _() {
+       // An "invalid array index" compiler error signifies that the constant values have changed.
+       // Re-run the stringer command to generate them again.
+       var x [1]struct{}
+       _ = x[TagArrayType-1]
+       _ = x[TagClassType-2]
+       _ = x[TagEntryPoint-3]
+       _ = x[TagEnumerationType-4]
+       _ = x[TagFormalParameter-5]
+       _ = x[TagImportedDeclaration-8]
+       _ = x[TagLabel-10]
+       _ = x[TagLexDwarfBlock-11]
+       _ = x[TagMember-13]
+       _ = x[TagPointerType-15]
+       _ = x[TagReferenceType-16]
+       _ = x[TagCompileUnit-17]
+       _ = x[TagStringType-18]
+       _ = x[TagStructType-19]
+       _ = x[TagSubroutineType-21]
+       _ = x[TagTypedef-22]
+       _ = x[TagUnionType-23]
+       _ = x[TagUnspecifiedParameters-24]
+       _ = x[TagVariant-25]
+       _ = x[TagCommonDwarfBlock-26]
+       _ = x[TagCommonInclusion-27]
+       _ = x[TagInheritance-28]
+       _ = x[TagInlinedSubroutine-29]
+       _ = x[TagModule-30]
+       _ = x[TagPtrToMemberType-31]
+       _ = x[TagSetType-32]
+       _ = x[TagSubrangeType-33]
+       _ = x[TagWithStmt-34]
+       _ = x[TagAccessDeclaration-35]
+       _ = x[TagBaseType-36]
+       _ = x[TagCatchDwarfBlock-37]
+       _ = x[TagConstType-38]
+       _ = x[TagConstant-39]
+       _ = x[TagEnumerator-40]
+       _ = x[TagFileType-41]
+       _ = x[TagFriend-42]
+       _ = x[TagNamelist-43]
+       _ = x[TagNamelistItem-44]
+       _ = x[TagPackedType-45]
+       _ = x[TagSubprogram-46]
+       _ = x[TagTemplateTypeParameter-47]
+       _ = x[TagTemplateValueParameter-48]
+       _ = x[TagThrownType-49]
+       _ = x[TagTryDwarfBlock-50]
+       _ = x[TagVariantPart-51]
+       _ = x[TagVariable-52]
+       _ = x[TagVolatileType-53]
+       _ = x[TagDwarfProcedure-54]
+       _ = x[TagRestrictType-55]
+       _ = x[TagInterfaceType-56]
+       _ = x[TagNamespace-57]
+       _ = x[TagImportedModule-58]
+       _ = x[TagUnspecifiedType-59]
+       _ = x[TagPartialUnit-60]
+       _ = x[TagImportedUnit-61]
+       _ = x[TagMutableType-62]
+       _ = x[TagCondition-63]
+       _ = x[TagSharedType-64]
+       _ = x[TagTypeUnit-65]
+       _ = x[TagRvalueReferenceType-66]
+       _ = x[TagTemplateAlias-67]
+       _ = x[TagCoarrayType-68]
+       _ = x[TagGenericSubrange-69]
+       _ = x[TagDynamicType-70]
+       _ = x[TagAtomicType-71]
+       _ = x[TagCallSite-72]
+       _ = x[TagCallSiteParameter-73]
+       _ = x[TagSkeletonUnit-74]
+       _ = x[TagImmutableType-75]
+}
+
 const (
        _Tag_name_0 = "ArrayTypeClassTypeEntryPointEnumerationTypeFormalParameter"
        _Tag_name_1 = "ImportedDeclaration"
        _Tag_name_2 = "LabelLexDwarfBlock"
        _Tag_name_3 = "Member"
        _Tag_name_4 = "PointerTypeReferenceTypeCompileUnitStringTypeStructType"
-       _Tag_name_5 = "SubroutineTypeTypedefUnionTypeUnspecifiedParametersVariantCommonDwarfBlockCommonInclusionInheritanceInlinedSubroutineModulePtrToMemberTypeSetTypeSubrangeTypeWithStmtAccessDeclarationBaseTypeCatchDwarfBlockConstTypeConstantEnumeratorFileTypeFriendNamelistNamelistItemPackedTypeSubprogramTemplateTypeParameterTemplateValueParameterThrownTypeTryDwarfBlockVariantPartVariableVolatileTypeDwarfProcedureRestrictTypeInterfaceTypeNamespaceImportedModuleUnspecifiedTypePartialUnitImportedUnitMutableTypeConditionSharedTypeTypeUnitRvalueReferenceTypeTemplateAlias"
+       _Tag_name_5 = "SubroutineTypeTypedefUnionTypeUnspecifiedParametersVariantCommonDwarfBlockCommonInclusionInheritanceInlinedSubroutineModulePtrToMemberTypeSetTypeSubrangeTypeWithStmtAccessDeclarationBaseTypeCatchDwarfBlockConstTypeConstantEnumeratorFileTypeFriendNamelistNamelistItemPackedTypeSubprogramTemplateTypeParameterTemplateValueParameterThrownTypeTryDwarfBlockVariantPartVariableVolatileTypeDwarfProcedureRestrictTypeInterfaceTypeNamespaceImportedModuleUnspecifiedTypePartialUnitImportedUnitMutableTypeConditionSharedTypeTypeUnitRvalueReferenceTypeTemplateAliasCoarrayTypeGenericSubrangeDynamicTypeAtomicTypeCallSiteCallSiteParameterSkeletonUnitImmutableType"
 )
 
 var (
        _Tag_index_0 = [...]uint8{0, 9, 18, 28, 43, 58}
        _Tag_index_2 = [...]uint8{0, 5, 18}
        _Tag_index_4 = [...]uint8{0, 11, 24, 35, 45, 55}
-       _Tag_index_5 = [...]uint16{0, 14, 21, 30, 51, 58, 74, 89, 100, 117, 123, 138, 145, 157, 165, 182, 190, 205, 214, 222, 232, 240, 246, 254, 266, 276, 286, 307, 329, 339, 352, 363, 371, 383, 397, 409, 422, 431, 445, 460, 471, 483, 494, 503, 513, 521, 540, 553}
+       _Tag_index_5 = [...]uint16{0, 14, 21, 30, 51, 58, 74, 89, 100, 117, 123, 138, 145, 157, 165, 182, 190, 205, 214, 222, 232, 240, 246, 254, 266, 276, 286, 307, 329, 339, 352, 363, 371, 383, 397, 409, 422, 431, 445, 460, 471, 483, 494, 503, 513, 521, 540, 553, 564, 579, 590, 600, 608, 625, 637, 650}
 )
 
 func (i Tag) String() string {
@@ -35,7 +110,7 @@ func (i Tag) String() string {
        case 15 <= i && i <= 19:
                i -= 15
                return _Tag_name_4[_Tag_index_4[i]:_Tag_index_4[i+1]]
-       case 21 <= i && i <= 67:
+       case 21 <= i && i <= 75:
                i -= 21
                return _Tag_name_5[_Tag_index_5[i]:_Tag_index_5[i+1]]
        default: