src\runtime\src\coreclr\tools\Common\Compiler\DependencyAnalysis\Relocation.cs (161)
113public readonly RelocType RelocType;
603public Relocation(RelocType relocType, int offset, ISymbolNode target)
611public static unsafe void WriteValue(RelocType relocType, void* location, long value)
615case RelocType.IMAGE_REL_BASED_ABSOLUTE:
616case RelocType.IMAGE_REL_BASED_ADDR32NB:
617case RelocType.IMAGE_REL_BASED_HIGHLOW:
618case RelocType.IMAGE_REL_BASED_REL32:
619case RelocType.IMAGE_REL_BASED_RELPTR32:
620case RelocType.IMAGE_REL_SECREL:
621case RelocType.IMAGE_REL_TLSGD:
622case RelocType.IMAGE_REL_TPOFF:
623case RelocType.IMAGE_REL_SYMBOL_SIZE:
624case RelocType.IMAGE_REL_FILE_ABSOLUTE:
625case RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL:
628case RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12:
630case RelocType.IMAGE_REL_BASED_DIR64:
633case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
634case RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL:
637case RelocType.IMAGE_REL_BASED_THUMB_BRANCH24:
640case RelocType.IMAGE_REL_BASED_ARM64_BRANCH26:
643case RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21:
644case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21:
647case RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A:
650case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A:
651case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12:
652case RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A:
655case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L:
658case RelocType.IMAGE_REL_BASED_LOONGARCH64_PC:
661case RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR:
664case RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT:
665case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I:
666case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S:
667bool isStype = (relocType is RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S);
671case RelocType.WASM_TYPE_INDEX_LEB:
672case RelocType.WASM_GLOBAL_INDEX_LEB:
673case RelocType.WASM_FUNCTION_INDEX_LEB:
674case RelocType.WASM_MEMORY_ADDR_LEB:
675case RelocType.WASM_MEMORY_ADDR_REL_LEB:
676case RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB:
680case RelocType.WASM_TABLE_INDEX_SLEB:
681case RelocType.WASM_MEMORY_ADDR_SLEB:
682case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
685case RelocType.WASM_TABLE_INDEX_I32:
686case RelocType.WASM_TABLE_INDEX_REL_I32:
689case RelocType.WASM_TABLE_INDEX_I64:
699public static unsafe int WriteVariableLengthValue(RelocType relocType, byte* location, long value)
704case RelocType.WASM_TYPE_INDEX_LEB:
705case RelocType.WASM_GLOBAL_INDEX_LEB:
706case RelocType.WASM_FUNCTION_INDEX_LEB:
707case RelocType.WASM_MEMORY_ADDR_LEB:
708case RelocType.WASM_MEMORY_ADDR_REL_LEB:
709case RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB:
713case RelocType.WASM_TABLE_INDEX_SLEB:
714case RelocType.WASM_MEMORY_ADDR_SLEB:
715case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
727public static int GetSize(RelocType relocType)
731RelocType.IMAGE_REL_BASED_DIR64 => 8,
732RelocType.IMAGE_REL_BASED_HIGHLOW => 4,
733RelocType.IMAGE_REL_BASED_ADDR32NB => 4,
734RelocType.IMAGE_REL_BASED_REL32 => 4,
735RelocType.IMAGE_REL_BASED_RELPTR32 => 4,
736RelocType.IMAGE_REL_FILE_ABSOLUTE => 4,
740RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21 => 4,
741RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A => 4,
742RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L => 4,
743RelocType.IMAGE_REL_BASED_THUMB_MOV32 => 8,
744RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL => 8,
745RelocType.IMAGE_REL_BASED_THUMB_BRANCH24 => 4,
746RelocType.IMAGE_REL_BASED_ARM64_BRANCH26 => 4,
747RelocType.IMAGE_REL_BASED_LOONGARCH64_PC => 8,
748RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR => 8,
749RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT => 8,
750RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I => 8,
751RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S => 8,
753RelocType.WASM_FUNCTION_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
754RelocType.WASM_TABLE_INDEX_SLEB => WASM_PADDED_RELOC_SIZE_32,
755RelocType.WASM_TYPE_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
756RelocType.WASM_GLOBAL_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
757RelocType.WASM_MEMORY_ADDR_LEB => WASM_PADDED_RELOC_SIZE_32,
758RelocType.WASM_MEMORY_ADDR_SLEB => WASM_PADDED_RELOC_SIZE_32,
759RelocType.WASM_MEMORY_ADDR_REL_LEB => WASM_PADDED_RELOC_SIZE_32,
760RelocType.WASM_MEMORY_ADDR_REL_SLEB => WASM_PADDED_RELOC_SIZE_32,
761RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB => WASM_PADDED_RELOC_SIZE_32,
762RelocType.WASM_TABLE_INDEX_I32 => 4,
763RelocType.WASM_TABLE_INDEX_REL_I32 => 4,
764RelocType.WASM_TABLE_INDEX_I64 => 8,
770public static bool IsVariableLength(RelocType relocType)
774RelocType.WASM_FUNCTION_INDEX_LEB or
775RelocType.WASM_TABLE_INDEX_SLEB or
776RelocType.WASM_TYPE_INDEX_LEB or
777RelocType.WASM_GLOBAL_INDEX_LEB or
778RelocType.WASM_MEMORY_ADDR_LEB or
779RelocType.WASM_MEMORY_ADDR_SLEB or
780RelocType.WASM_MEMORY_ADDR_REL_LEB or
781RelocType.WASM_MEMORY_ADDR_REL_SLEB or
782RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB => true,
787public static int ActualSize(RelocType relocType, long resolvedValue)
792case RelocType.WASM_FUNCTION_INDEX_LEB:
793case RelocType.WASM_TYPE_INDEX_LEB:
794case RelocType.WASM_GLOBAL_INDEX_LEB:
795case RelocType.WASM_MEMORY_ADDR_LEB:
796case RelocType.WASM_MEMORY_ADDR_REL_LEB:
797case RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB:
799case RelocType.WASM_TABLE_INDEX_SLEB:
800case RelocType.WASM_MEMORY_ADDR_SLEB:
801case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
809public static unsafe long ReadValue(RelocType relocType, void* location)
813case RelocType.IMAGE_REL_BASED_ABSOLUTE:
814case RelocType.IMAGE_REL_BASED_ADDR32NB:
815case RelocType.IMAGE_REL_BASED_HIGHLOW:
816case RelocType.IMAGE_REL_BASED_REL32:
817case RelocType.IMAGE_REL_BASED_RELPTR32:
818case RelocType.IMAGE_REL_SECREL:
819case RelocType.IMAGE_REL_TLSGD:
820case RelocType.IMAGE_REL_TPOFF:
821case RelocType.IMAGE_REL_FILE_ABSOLUTE:
822case RelocType.IMAGE_REL_SYMBOL_SIZE:
824case RelocType.IMAGE_REL_BASED_DIR64:
825case RelocType.WASM_TABLE_INDEX_I64:
827case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
828case RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL:
830case RelocType.IMAGE_REL_BASED_THUMB_BRANCH24:
832case RelocType.IMAGE_REL_BASED_ARM64_BRANCH26:
834case RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21:
836case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A:
837case RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A:
838case RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A:
840case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L:
842case RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12:
843case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12:
844case RelocType.IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_HI12:
845case RelocType.IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
849case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21:
853case RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL:
856case RelocType.IMAGE_REL_BASED_LOONGARCH64_PC:
858case RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR:
860case RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT:
861case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I:
862case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S:
863bool isStype = (relocType is RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S);
865case RelocType.WASM_TYPE_INDEX_LEB:
866case RelocType.WASM_GLOBAL_INDEX_LEB:
869case RelocType.WASM_FUNCTION_INDEX_LEB:
870case RelocType.WASM_MEMORY_ADDR_LEB:
871case RelocType.WASM_MEMORY_ADDR_REL_LEB:
872case RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB:
874case RelocType.WASM_TABLE_INDEX_SLEB:
875case RelocType.WASM_MEMORY_ADDR_SLEB:
876case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
878case RelocType.WASM_TABLE_INDEX_I32:
879case RelocType.WASM_TABLE_INDEX_REL_I32:
895public static RelocType GetFileRelocationType(RelocType relocationType)
899case RelocType.IMAGE_REL_BASED_HIGHLOW:
900case RelocType.IMAGE_REL_BASED_DIR64:
901case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
904case RelocType.WASM_TABLE_INDEX_I32:
905return RelocType.IMAGE_REL_BASED_WASM32_TABLE;
907case RelocType.WASM_TABLE_INDEX_I64:
908return RelocType.IMAGE_REL_BASED_WASM64_TABLE;
911return RelocType.IMAGE_REL_BASED_ABSOLUTE;
src\runtime\src\coreclr\tools\Common\Compiler\ObjectWriter\WasmInstructions.cs (16)
328private readonly RelocType _relocType;
330public WasmEncodableSymbol(ISymbolNode symbol, RelocType relocType)
348case RelocType.WASM_FUNCTION_INDEX_LEB:
349case RelocType.WASM_MEMORY_ADDR_LEB:
350case RelocType.WASM_MEMORY_ADDR_REL_LEB:
351case RelocType.WASM_TYPE_INDEX_LEB:
352case RelocType.WASM_GLOBAL_INDEX_LEB:
353case RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB:
357case RelocType.WASM_TABLE_INDEX_SLEB:
358case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
465return base.EncodeSize() + Relocation.GetSize(RelocType.WASM_TYPE_INDEX_LEB) + (int)tableSize;
471int relocSize = Relocation.GetSize(RelocType.WASM_TYPE_INDEX_LEB);
482buffer[0] = new Relocation(RelocType.WASM_TYPE_INDEX_LEB, base.EncodeSize(), _type);
491public WasmLEBConstantReloc(WasmExprKind kind, ISymbolNode symbol, RelocType relocType) : base(kind)
819return new WasmLEBConstantReloc(WasmExprKind.I32Const, symbolNode, RelocType.WASM_MEMORY_ADDR_REL_SLEB);
826public static WasmExpr LoadWithRVAOffset(ISymbolNode symbolNode) => new WasmMemoryArgInstruction<WasmEncodableSymbol>(WasmExprKind.I32Load, 4, new WasmEncodableSymbol(symbolNode, RelocType.WASM_MEMORY_ADDR_REL_LEB));
src\runtime\src\coreclr\tools\Common\JitInterface\CorInfoImpl.cs (35)
4581private RelocType GetRelocType(CorInfoReloc reloc)
4584CorInfoReloc.DIRECT => PointerSize == 8 ? RelocType.IMAGE_REL_BASED_DIR64 : RelocType.IMAGE_REL_BASED_HIGHLOW,
4585CorInfoReloc.RELATIVE32 => RelocType.IMAGE_REL_BASED_REL32,
4586CorInfoReloc.ARM64_BRANCH26 => RelocType.IMAGE_REL_BASED_ARM64_BRANCH26,
4587CorInfoReloc.ARM64_PAGEBASE_REL21 => RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21,
4588CorInfoReloc.ARM64_PAGEOFFSET_12A => RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A,
4589CorInfoReloc.ARM64_PAGEOFFSET_12L => RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L,
4590CorInfoReloc.ARM64_LIN_TLSDESC_ADR_PAGE21 => RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21,
4591CorInfoReloc.ARM64_LIN_TLSDESC_LD64_LO12 => RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12,
4592CorInfoReloc.ARM64_LIN_TLSDESC_ADD_LO12 => RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12,
4593CorInfoReloc.ARM64_LIN_TLSDESC_CALL => RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL,
4594CorInfoReloc.ARM64_WIN_TLS_SECREL_HIGH12A => RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A,
4595CorInfoReloc.ARM64_WIN_TLS_SECREL_LOW12A => RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A,
4596CorInfoReloc.AMD64_WIN_SECREL => RelocType.IMAGE_REL_SECREL,
4597CorInfoReloc.AMD64_LIN_TLSGD => RelocType.IMAGE_REL_TLSGD,
4598CorInfoReloc.ARM32_THUMB_BRANCH24 => RelocType.IMAGE_REL_BASED_THUMB_BRANCH24,
4599CorInfoReloc.ARM32_THUMB_MOV32 => RelocType.IMAGE_REL_BASED_THUMB_MOV32,
4600CorInfoReloc.ARM32_THUMB_MOV32_PCREL => RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL,
4601CorInfoReloc.LOONGARCH64_PC => RelocType.IMAGE_REL_BASED_LOONGARCH64_PC,
4602CorInfoReloc.LOONGARCH64_JIR => RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR,
4603CorInfoReloc.RISCV64_CALL_PLT => RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT,
4604CorInfoReloc.RISCV64_PCREL_I => RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I,
4605CorInfoReloc.RISCV64_PCREL_S => RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S,
4606CorInfoReloc.WASM_FUNCTION_INDEX_LEB => RelocType.WASM_FUNCTION_INDEX_LEB,
4607CorInfoReloc.WASM_TABLE_INDEX_SLEB => RelocType.WASM_TABLE_INDEX_SLEB,
4608CorInfoReloc.WASM_TABLE_INDEX_I32 => RelocType.WASM_TABLE_INDEX_I32,
4609CorInfoReloc.WASM_MEMORY_ADDR_LEB => RelocType.WASM_MEMORY_ADDR_LEB,
4610CorInfoReloc.WASM_MEMORY_ADDR_SLEB => RelocType.WASM_MEMORY_ADDR_SLEB,
4611CorInfoReloc.WASM_MEMORY_ADDR_REL_SLEB => RelocType.WASM_MEMORY_ADDR_REL_SLEB,
4612CorInfoReloc.WASM_MEMORY_ADDR_REL_LEB => RelocType.WASM_MEMORY_ADDR_REL_LEB,
4613CorInfoReloc.WASM_TYPE_INDEX_LEB => RelocType.WASM_TYPE_INDEX_LEB,
4614CorInfoReloc.WASM_GLOBAL_INDEX_LEB => RelocType.WASM_GLOBAL_INDEX_LEB,
4615CorInfoReloc.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB => RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB,
4687RelocType relocType = GetRelocType(fRelocType);