// 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_USEGENERICIFACEMETHOD-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_PCREL_LDST8-38]
	_ = x[R_ARM64_PCREL_LDST16-39]
	_ = x[R_ARM64_PCREL_LDST32-40]
	_ = x[R_ARM64_PCREL_LDST64-41]
	_ = x[R_ARM64_LDST8-42]
	_ = x[R_ARM64_LDST16-43]
	_ = x[R_ARM64_LDST32-44]
	_ = x[R_ARM64_LDST64-45]
	_ = x[R_ARM64_LDST128-46]
	_ = x[R_POWER_TLS_LE-47]
	_ = x[R_POWER_TLS_IE-48]
	_ = x[R_POWER_TLS-49]
	_ = x[R_POWER_TLS_IE_PCREL34-50]
	_ = x[R_POWER_TLS_LE_TPREL34-51]
	_ = x[R_ADDRPOWER_DS-52]
	_ = x[R_ADDRPOWER_GOT-53]
	_ = x[R_ADDRPOWER_GOT_PCREL34-54]
	_ = x[R_ADDRPOWER_PCREL-55]
	_ = x[R_ADDRPOWER_TOCREL-56]
	_ = x[R_ADDRPOWER_TOCREL_DS-57]
	_ = x[R_ADDRPOWER_D34-58]
	_ = x[R_ADDRPOWER_PCREL34-59]
	_ = x[R_RISCV_CALL-60]
	_ = x[R_RISCV_CALL_TRAMP-61]
	_ = x[R_RISCV_PCREL_ITYPE-62]
	_ = x[R_RISCV_PCREL_STYPE-63]
	_ = x[R_RISCV_TLS_IE_ITYPE-64]
	_ = x[R_RISCV_TLS_IE_STYPE-65]
	_ = x[R_PCRELDBL-66]
	_ = x[R_ADDRLOONG64-67]
	_ = x[R_ADDRLOONG64U-68]
	_ = x[R_ADDRLOONG64TLS-69]
	_ = x[R_ADDRLOONG64TLSU-70]
	_ = x[R_CALLLOONG64-71]
	_ = x[R_LOONG64_TLS_IE_PCREL_HI-72]
	_ = x[R_LOONG64_TLS_IE_LO-73]
	_ = x[R_JMPLOONG64-74]
	_ = x[R_ADDRMIPSU-75]
	_ = x[R_ADDRMIPSTLS-76]
	_ = x[R_ADDRCUOFF-77]
	_ = x[R_WASMIMPORT-78]
	_ = x[R_XCOFFREF-79]
	_ = x[R_PEIMAGEOFF-80]
	_ = x[R_INITORDER-81]
}

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_USEGENERICIFACEMETHODR_METHODOFFR_KEEPR_POWER_TOCR_GOTPCRELR_JMPMIPSR_DWARFSECREFR_DWARFFILEREFR_ARM64_TLS_LER_ARM64_TLS_IER_ARM64_GOTPCRELR_ARM64_GOTR_ARM64_PCRELR_ARM64_PCREL_LDST8R_ARM64_PCREL_LDST16R_ARM64_PCREL_LDST32R_ARM64_PCREL_LDST64R_ARM64_LDST8R_ARM64_LDST16R_ARM64_LDST32R_ARM64_LDST64R_ARM64_LDST128R_POWER_TLS_LER_POWER_TLS_IER_POWER_TLSR_POWER_TLS_IE_PCREL34R_POWER_TLS_LE_TPREL34R_ADDRPOWER_DSR_ADDRPOWER_GOTR_ADDRPOWER_GOT_PCREL34R_ADDRPOWER_PCRELR_ADDRPOWER_TOCRELR_ADDRPOWER_TOCREL_DSR_ADDRPOWER_D34R_ADDRPOWER_PCREL34R_RISCV_CALLR_RISCV_CALL_TRAMPR_RISCV_PCREL_ITYPER_RISCV_PCREL_STYPER_RISCV_TLS_IE_ITYPER_RISCV_TLS_IE_STYPER_PCRELDBLR_ADDRLOONG64R_ADDRLOONG64UR_ADDRLOONG64TLSR_ADDRLOONG64TLSUR_CALLLOONG64R_LOONG64_TLS_IE_PCREL_HIR_LOONG64_TLS_IE_LOR_JMPLOONG64R_ADDRMIPSUR_ADDRMIPSTLSR_ADDRCUOFFR_WASMIMPORTR_XCOFFREFR_PEIMAGEOFFR_INITORDER"

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, 233, 244, 250, 261, 271, 280, 293, 307, 321, 335, 351, 362, 375, 394, 414, 434, 454, 467, 481, 495, 509, 524, 538, 552, 563, 585, 607, 621, 636, 659, 676, 694, 715, 730, 749, 761, 779, 798, 817, 837, 857, 867, 880, 894, 910, 927, 940, 965, 984, 996, 1007, 1020, 1031, 1043, 1053, 1065, 1076}

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