// Code generated by "stringer -type=SymKind"; DO NOT EDIT.

package sym

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[Sxxx-0]
	_ = x[STEXT-1]
	_ = x[SELFRXSECT-2]
	_ = x[SMACHOPLT-3]
	_ = x[STYPE-4]
	_ = x[SSTRING-5]
	_ = x[SGOSTRING-6]
	_ = x[SGOFUNC-7]
	_ = x[SGCBITS-8]
	_ = x[SRODATA-9]
	_ = x[SFUNCTAB-10]
	_ = x[SELFROSECT-11]
	_ = x[STYPERELRO-12]
	_ = x[SSTRINGRELRO-13]
	_ = x[SGOSTRINGRELRO-14]
	_ = x[SGOFUNCRELRO-15]
	_ = x[SGCBITSRELRO-16]
	_ = x[SRODATARELRO-17]
	_ = x[SFUNCTABRELRO-18]
	_ = x[SELFRELROSECT-19]
	_ = x[STYPELINK-20]
	_ = x[SITABLINK-21]
	_ = x[SSYMTAB-22]
	_ = x[SPCLNTAB-23]
	_ = x[SFirstWritable-24]
	_ = x[SBUILDINFO-25]
	_ = x[SELFSECT-26]
	_ = x[SMACHO-27]
	_ = x[SMACHOGOT-28]
	_ = x[SWINDOWS-29]
	_ = x[SELFGOT-30]
	_ = x[SNOPTRDATA-31]
	_ = x[SINITARR-32]
	_ = x[SDATA-33]
	_ = x[SXCOFFTOC-34]
	_ = x[SBSS-35]
	_ = x[SNOPTRBSS-36]
	_ = x[SLIBFUZZER_8BIT_COUNTER-37]
	_ = x[SCOVERAGE_COUNTER-38]
	_ = x[SCOVERAGE_AUXVAR-39]
	_ = x[STLSBSS-40]
	_ = x[SXREF-41]
	_ = x[SMACHOSYMSTR-42]
	_ = x[SMACHOSYMTAB-43]
	_ = x[SMACHOINDIRECTPLT-44]
	_ = x[SMACHOINDIRECTGOT-45]
	_ = x[SFILEPATH-46]
	_ = x[SDYNIMPORT-47]
	_ = x[SHOSTOBJ-48]
	_ = x[SUNDEFEXT-49]
	_ = x[SDWARFSECT-50]
	_ = x[SDWARFCUINFO-51]
	_ = x[SDWARFCONST-52]
	_ = x[SDWARFFCN-53]
	_ = x[SDWARFABSFCN-54]
	_ = x[SDWARFTYPE-55]
	_ = x[SDWARFVAR-56]
	_ = x[SDWARFRANGE-57]
	_ = x[SDWARFLOC-58]
	_ = x[SDWARFLINES-59]
	_ = x[SSEHUNWINDINFO-60]
	_ = x[SSEHSECT-61]
}

const _SymKind_name = "SxxxSTEXTSELFRXSECTSMACHOPLTSTYPESSTRINGSGOSTRINGSGOFUNCSGCBITSSRODATASFUNCTABSELFROSECTSTYPERELROSSTRINGRELROSGOSTRINGRELROSGOFUNCRELROSGCBITSRELROSRODATARELROSFUNCTABRELROSELFRELROSECTSTYPELINKSITABLINKSSYMTABSPCLNTABSFirstWritableSBUILDINFOSELFSECTSMACHOSMACHOGOTSWINDOWSSELFGOTSNOPTRDATASINITARRSDATASXCOFFTOCSBSSSNOPTRBSSSLIBFUZZER_8BIT_COUNTERSCOVERAGE_COUNTERSCOVERAGE_AUXVARSTLSBSSSXREFSMACHOSYMSTRSMACHOSYMTABSMACHOINDIRECTPLTSMACHOINDIRECTGOTSFILEPATHSDYNIMPORTSHOSTOBJSUNDEFEXTSDWARFSECTSDWARFCUINFOSDWARFCONSTSDWARFFCNSDWARFABSFCNSDWARFTYPESDWARFVARSDWARFRANGESDWARFLOCSDWARFLINESSSEHUNWINDINFOSSEHSECT"

var _SymKind_index = [...]uint16{0, 4, 9, 19, 28, 33, 40, 49, 56, 63, 70, 78, 88, 98, 110, 124, 136, 148, 160, 173, 186, 195, 204, 211, 219, 233, 243, 251, 257, 266, 274, 281, 291, 299, 304, 313, 317, 326, 349, 366, 382, 389, 394, 406, 418, 435, 452, 461, 471, 479, 488, 498, 510, 521, 530, 542, 552, 561, 572, 581, 592, 606, 614}

func (i SymKind) String() string {
	if i >= SymKind(len(_SymKind_index)-1) {
		return "SymKind(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _SymKind_name[_SymKind_index[i]:_SymKind_index[i+1]]
}
