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

package objabi

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[R_ADDR-1]
	_ = x[R_ADDRPOWER-2]
	_ = x[R_ADDRARM64-3]
	_ = x[R_ADDRMIPS-4]
	_ = x[R_ADDROFF-5]
	_ = x[R_SIZE-6]
	_ = x[R_CALL-7]
	_ = x[R_CALLARM-8]
	_ = x[R_CALLARM64-9]
	_ = x[R_CALLIND-10]
	_ = x[R_CALLPOWER-11]
	_ = x[R_CALLMIPS-12]
	_ = x[R_CALLRISCV-13]
	_ = x[R_CONST-14]
	_ = x[R_PCREL-15]
	_ = x[R_TLS_LE-16]
	_ = x[R_TLS_IE-17]
	_ = x[R_GOTOFF-18]
	_ = x[R_PLT0-19]
	_ = x[R_PLT1-20]
	_ = x[R_PLT2-21]
	_ = x[R_USEFIELD-22]
	_ = x[R_USETYPE-23]
	_ = x[R_USEIFACE-24]
	_ = x[R_USEIFACEMETHOD-25]
	_ = x[R_METHODOFF-26]
	_ = x[R_KEEP-27]
	_ = x[R_POWER_TOC-28]
	_ = x[R_GOTPCREL-29]
	_ = x[R_JMPMIPS-30]
	_ = x[R_DWARFSECREF-31]
	_ = x[R_DWARFFILEREF-32]
	_ = x[R_ARM64_TLS_LE-33]
	_ = x[R_ARM64_TLS_IE-34]
	_ = x[R_ARM64_GOTPCREL-35]
	_ = x[R_ARM64_GOT-36]
	_ = x[R_ARM64_PCREL-37]
	_ = x[R_ARM64_LDST8-38]
	_ = x[R_ARM64_LDST16-39]
	_ = x[R_ARM64_LDST32-40]
	_ = x[R_ARM64_LDST64-41]
	_ = x[R_ARM64_LDST128-42]
	_ = x[R_POWER_TLS_LE-43]
	_ = x[R_POWER_TLS_IE-44]
	_ = x[R_POWER_TLS-45]
	_ = x[R_ADDRPOWER_DS-46]
	_ = x[R_ADDRPOWER_GOT-47]
	_ = x[R_ADDRPOWER_PCREL-48]
	_ = x[R_ADDRPOWER_TOCREL-49]
	_ = x[R_ADDRPOWER_TOCREL_DS-50]
	_ = x[R_RISCV_PCREL_ITYPE-51]
	_ = x[R_RISCV_PCREL_STYPE-52]
	_ = x[R_RISCV_TLS_IE_ITYPE-53]
	_ = x[R_RISCV_TLS_IE_STYPE-54]
	_ = x[R_PCRELDBL-55]
	_ = x[R_ADDRMIPSU-56]
	_ = x[R_ADDRMIPSTLS-57]
	_ = x[R_ADDRCUOFF-58]
	_ = x[R_WASMIMPORT-59]
	_ = x[R_XCOFFREF-60]
}

const _RelocType_name = "R_ADDRR_ADDRPOWERR_ADDRARM64R_ADDRMIPSR_ADDROFFR_SIZER_CALLR_CALLARMR_CALLARM64R_CALLINDR_CALLPOWERR_CALLMIPSR_CALLRISCVR_CONSTR_PCRELR_TLS_LER_TLS_IER_GOTOFFR_PLT0R_PLT1R_PLT2R_USEFIELDR_USETYPER_USEIFACER_USEIFACEMETHODR_METHODOFFR_KEEPR_POWER_TOCR_GOTPCRELR_JMPMIPSR_DWARFSECREFR_DWARFFILEREFR_ARM64_TLS_LER_ARM64_TLS_IER_ARM64_GOTPCRELR_ARM64_GOTR_ARM64_PCRELR_ARM64_LDST8R_ARM64_LDST16R_ARM64_LDST32R_ARM64_LDST64R_ARM64_LDST128R_POWER_TLS_LER_POWER_TLS_IER_POWER_TLSR_ADDRPOWER_DSR_ADDRPOWER_GOTR_ADDRPOWER_PCRELR_ADDRPOWER_TOCRELR_ADDRPOWER_TOCREL_DSR_RISCV_PCREL_ITYPER_RISCV_PCREL_STYPER_RISCV_TLS_IE_ITYPER_RISCV_TLS_IE_STYPER_PCRELDBLR_ADDRMIPSUR_ADDRMIPSTLSR_ADDRCUOFFR_WASMIMPORTR_XCOFFREF"

var _RelocType_index = [...]uint16{0, 6, 17, 28, 38, 47, 53, 59, 68, 79, 88, 99, 109, 120, 127, 134, 142, 150, 158, 164, 170, 176, 186, 195, 205, 221, 232, 238, 249, 259, 268, 281, 295, 309, 323, 339, 350, 363, 376, 390, 404, 418, 433, 447, 461, 472, 486, 501, 518, 536, 557, 576, 595, 615, 635, 645, 656, 669, 680, 692, 702}

func (i RelocType) String() string {
	i -= 1
	if i < 0 || i >= RelocType(len(_RelocType_index)-1) {
		return "RelocType(" + strconv.FormatInt(int64(i+1), 10) + ")"
	}
	return _RelocType_name[_RelocType_index[i]:_RelocType_index[i+1]]
}
