// 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_CONST-13]
	_ = x[R_PCREL-14]
	_ = x[R_TLS_LE-15]
	_ = x[R_TLS_IE-16]
	_ = x[R_GOTOFF-17]
	_ = x[R_PLT0-18]
	_ = x[R_PLT1-19]
	_ = x[R_PLT2-20]
	_ = x[R_USEFIELD-21]
	_ = x[R_USETYPE-22]
	_ = x[R_USEIFACE-23]
	_ = x[R_USEIFACEMETHOD-24]
	_ = x[R_METHODOFF-25]
	_ = x[R_KEEP-26]
	_ = x[R_POWER_TOC-27]
	_ = x[R_GOTPCREL-28]
	_ = x[R_JMPMIPS-29]
	_ = x[R_DWARFSECREF-30]
	_ = x[R_DWARFFILEREF-31]
	_ = x[R_ARM64_TLS_LE-32]
	_ = x[R_ARM64_TLS_IE-33]
	_ = x[R_ARM64_GOTPCREL-34]
	_ = x[R_ARM64_GOT-35]
	_ = x[R_ARM64_PCREL-36]
	_ = x[R_ARM64_LDST8-37]
	_ = x[R_ARM64_LDST16-38]
	_ = x[R_ARM64_LDST32-39]
	_ = x[R_ARM64_LDST64-40]
	_ = x[R_ARM64_LDST128-41]
	_ = x[R_POWER_TLS_LE-42]
	_ = x[R_POWER_TLS_IE-43]
	_ = x[R_POWER_TLS-44]
	_ = x[R_ADDRPOWER_DS-45]
	_ = x[R_ADDRPOWER_GOT-46]
	_ = x[R_ADDRPOWER_PCREL-47]
	_ = x[R_ADDRPOWER_TOCREL-48]
	_ = x[R_ADDRPOWER_TOCREL_DS-49]
	_ = x[R_RISCV_CALL-50]
	_ = x[R_RISCV_CALL_TRAMP-51]
	_ = x[R_RISCV_PCREL_ITYPE-52]
	_ = x[R_RISCV_PCREL_STYPE-53]
	_ = x[R_RISCV_TLS_IE_ITYPE-54]
	_ = x[R_RISCV_TLS_IE_STYPE-55]
	_ = x[R_PCRELDBL-56]
	_ = x[R_ADDRMIPSU-57]
	_ = x[R_ADDRMIPSTLS-58]
	_ = x[R_ADDRCUOFF-59]
	_ = x[R_WASMIMPORT-60]
	_ = x[R_XCOFFREF-61]
}

const _RelocType_name = "R_ADDRR_ADDRPOWERR_ADDRARM64R_ADDRMIPSR_ADDROFFR_SIZER_CALLR_CALLARMR_CALLARM64R_CALLINDR_CALLPOWERR_CALLMIPSR_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_CALLR_RISCV_CALL_TRAMPR_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, 116, 123, 131, 139, 147, 153, 159, 165, 175, 184, 194, 210, 221, 227, 238, 248, 257, 270, 284, 298, 312, 328, 339, 352, 365, 379, 393, 407, 422, 436, 450, 461, 475, 490, 507, 525, 546, 558, 576, 595, 614, 634, 654, 664, 675, 688, 699, 711, 721}

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]]
}
