src\runtime\src\coreclr\tools\Common\Compiler\DependencyAnalysis\Relocation.cs (126)
112public readonly RelocType RelocType;
602public Relocation(RelocType relocType, int offset, ISymbolNode target)
610public static unsafe void WriteValue(RelocType relocType, void* location, long value)
614case RelocType.IMAGE_REL_BASED_ABSOLUTE:
615case RelocType.IMAGE_REL_BASED_ADDR32NB:
616case RelocType.IMAGE_REL_BASED_HIGHLOW:
617case RelocType.IMAGE_REL_BASED_REL32:
618case RelocType.IMAGE_REL_BASED_RELPTR32:
619case RelocType.IMAGE_REL_SECREL:
620case RelocType.IMAGE_REL_TLSGD:
621case RelocType.IMAGE_REL_TPOFF:
622case RelocType.IMAGE_REL_SYMBOL_SIZE:
623case RelocType.IMAGE_REL_FILE_ABSOLUTE:
624case RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL:
627case RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12:
629case RelocType.IMAGE_REL_BASED_DIR64:
632case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
633case RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL:
636case RelocType.IMAGE_REL_BASED_THUMB_BRANCH24:
639case RelocType.IMAGE_REL_BASED_ARM64_BRANCH26:
642case RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21:
643case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21:
646case RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A:
649case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A:
650case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12:
651case RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A:
654case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L:
657case RelocType.IMAGE_REL_BASED_LOONGARCH64_PC:
660case RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR:
663case RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT:
664case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I:
665case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S:
666bool isStype = (relocType is RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S);
670case RelocType.WASM_TYPE_INDEX_LEB:
671case RelocType.WASM_GLOBAL_INDEX_LEB:
672case RelocType.WASM_FUNCTION_INDEX_LEB:
673case RelocType.WASM_MEMORY_ADDR_LEB:
674case RelocType.WASM_MEMORY_ADDR_REL_LEB:
678case RelocType.WASM_TABLE_INDEX_SLEB:
679case RelocType.WASM_MEMORY_ADDR_SLEB:
680case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
683case RelocType.WASM_TABLE_INDEX_I32:
684case RelocType.WASM_TABLE_INDEX_REL_I32:
687case RelocType.WASM_TABLE_INDEX_I64:
700public static int GetSize(RelocType relocType)
704RelocType.IMAGE_REL_BASED_DIR64 => 8,
705RelocType.IMAGE_REL_BASED_HIGHLOW => 4,
706RelocType.IMAGE_REL_BASED_ADDR32NB => 4,
707RelocType.IMAGE_REL_BASED_REL32 => 4,
708RelocType.IMAGE_REL_BASED_RELPTR32 => 4,
709RelocType.IMAGE_REL_FILE_ABSOLUTE => 4,
713RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21 => 4,
714RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A => 4,
715RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L => 4,
716RelocType.IMAGE_REL_BASED_THUMB_MOV32 => 8,
717RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL => 8,
718RelocType.IMAGE_REL_BASED_LOONGARCH64_PC => 8,
719RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR => 8,
720RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT => 8,
721RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I => 8,
722RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S => 8,
724RelocType.WASM_FUNCTION_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
725RelocType.WASM_TABLE_INDEX_SLEB => WASM_PADDED_RELOC_SIZE_32,
726RelocType.WASM_TYPE_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
727RelocType.WASM_GLOBAL_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
728RelocType.WASM_MEMORY_ADDR_LEB => WASM_PADDED_RELOC_SIZE_32,
729RelocType.WASM_MEMORY_ADDR_SLEB => WASM_PADDED_RELOC_SIZE_32,
730RelocType.WASM_MEMORY_ADDR_REL_LEB => WASM_PADDED_RELOC_SIZE_32,
731RelocType.WASM_MEMORY_ADDR_REL_SLEB => WASM_PADDED_RELOC_SIZE_32,
732RelocType.WASM_TABLE_INDEX_I32 => 4,
733RelocType.WASM_TABLE_INDEX_REL_I32 => 4,
734RelocType.WASM_TABLE_INDEX_I64 => 8,
740public static unsafe long ReadValue(RelocType relocType, void* location)
744case RelocType.IMAGE_REL_BASED_ABSOLUTE:
745case RelocType.IMAGE_REL_BASED_ADDR32NB:
746case RelocType.IMAGE_REL_BASED_HIGHLOW:
747case RelocType.IMAGE_REL_BASED_REL32:
748case RelocType.IMAGE_REL_BASED_RELPTR32:
749case RelocType.IMAGE_REL_SECREL:
750case RelocType.IMAGE_REL_TLSGD:
751case RelocType.IMAGE_REL_TPOFF:
752case RelocType.IMAGE_REL_FILE_ABSOLUTE:
753case RelocType.IMAGE_REL_SYMBOL_SIZE:
755case RelocType.IMAGE_REL_BASED_DIR64:
757case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
758case RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL:
760case RelocType.IMAGE_REL_BASED_THUMB_BRANCH24:
762case RelocType.IMAGE_REL_BASED_ARM64_BRANCH26:
764case RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21:
766case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A:
767case RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A:
768case RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A:
770case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L:
772case RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12:
773case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12:
774case RelocType.IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_HI12:
775case RelocType.IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
779case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21:
783case RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL:
786case RelocType.IMAGE_REL_BASED_LOONGARCH64_PC:
788case RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR:
790case RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT:
791case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I:
792case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S:
793bool isStype = (relocType is RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S);
795case RelocType.WASM_FUNCTION_INDEX_LEB:
796case RelocType.WASM_TABLE_INDEX_SLEB:
797case RelocType.WASM_TABLE_INDEX_I32:
798case RelocType.WASM_TABLE_INDEX_REL_I32:
799case RelocType.WASM_TABLE_INDEX_I64:
800case RelocType.WASM_TYPE_INDEX_LEB:
801case RelocType.WASM_GLOBAL_INDEX_LEB:
805case RelocType.WASM_MEMORY_ADDR_LEB:
806case RelocType.WASM_MEMORY_ADDR_REL_LEB:
809case RelocType.WASM_MEMORY_ADDR_SLEB:
810case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
826public static RelocType GetFileRelocationType(RelocType relocationType)
830case RelocType.IMAGE_REL_BASED_HIGHLOW:
831case RelocType.IMAGE_REL_BASED_DIR64:
832case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
835case RelocType.WASM_TABLE_INDEX_I32:
836return RelocType.IMAGE_REL_BASED_WASM32_TABLE;
838case RelocType.WASM_TABLE_INDEX_I64:
839return RelocType.IMAGE_REL_BASED_WASM64_TABLE;
842return RelocType.IMAGE_REL_BASED_ABSOLUTE;
src\runtime\src\coreclr\tools\Common\Compiler\ObjectWriter\WasmInstructions.cs (15)
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:
356case RelocType.WASM_TABLE_INDEX_SLEB:
357case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
464return base.EncodeSize() + Relocation.GetSize(RelocType.WASM_TYPE_INDEX_LEB) + (int)tableSize;
470int relocSize = Relocation.GetSize(RelocType.WASM_TYPE_INDEX_LEB);
481buffer[0] = new Relocation(RelocType.WASM_TYPE_INDEX_LEB, base.EncodeSize(), _type);
490public WasmLEBConstantReloc(WasmExprKind kind, ISymbolNode symbol, RelocType relocType) : base(kind)
818return new WasmLEBConstantReloc(WasmExprKind.I32Const, symbolNode, RelocType.WASM_MEMORY_ADDR_REL_SLEB);
825public 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 (32)
4240private RelocType GetRelocType(CorInfoReloc reloc)
4243CorInfoReloc.DIRECT => PointerSize == 8 ? RelocType.IMAGE_REL_BASED_DIR64 : RelocType.IMAGE_REL_BASED_HIGHLOW,
4244CorInfoReloc.RELATIVE32 => RelocType.IMAGE_REL_BASED_REL32,
4245CorInfoReloc.ARM64_BRANCH26 => RelocType.IMAGE_REL_BASED_ARM64_BRANCH26,
4246CorInfoReloc.ARM64_PAGEBASE_REL21 => RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21,
4247CorInfoReloc.ARM64_PAGEOFFSET_12A => RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A,
4248CorInfoReloc.ARM64_LIN_TLSDESC_ADR_PAGE21 => RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21,
4249CorInfoReloc.ARM64_LIN_TLSDESC_LD64_LO12 => RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12,
4250CorInfoReloc.ARM64_LIN_TLSDESC_ADD_LO12 => RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12,
4251CorInfoReloc.ARM64_LIN_TLSDESC_CALL => RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL,
4252CorInfoReloc.ARM64_WIN_TLS_SECREL_HIGH12A => RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A,
4253CorInfoReloc.ARM64_WIN_TLS_SECREL_LOW12A => RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A,
4254CorInfoReloc.AMD64_WIN_SECREL => RelocType.IMAGE_REL_SECREL,
4255CorInfoReloc.AMD64_LIN_TLSGD => RelocType.IMAGE_REL_TLSGD,
4256CorInfoReloc.ARM32_THUMB_BRANCH24 => RelocType.IMAGE_REL_BASED_THUMB_BRANCH24,
4257CorInfoReloc.ARM32_THUMB_MOV32 => RelocType.IMAGE_REL_BASED_THUMB_MOV32,
4258CorInfoReloc.ARM32_THUMB_MOV32_PCREL => RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL,
4259CorInfoReloc.LOONGARCH64_PC => RelocType.IMAGE_REL_BASED_LOONGARCH64_PC,
4260CorInfoReloc.LOONGARCH64_JIR => RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR,
4261CorInfoReloc.RISCV64_CALL_PLT => RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT,
4262CorInfoReloc.RISCV64_PCREL_I => RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I,
4263CorInfoReloc.RISCV64_PCREL_S => RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S,
4264CorInfoReloc.WASM_FUNCTION_INDEX_LEB => RelocType.WASM_FUNCTION_INDEX_LEB,
4265CorInfoReloc.WASM_TABLE_INDEX_SLEB => RelocType.WASM_TABLE_INDEX_SLEB,
4266CorInfoReloc.WASM_MEMORY_ADDR_LEB => RelocType.WASM_MEMORY_ADDR_LEB,
4267CorInfoReloc.WASM_MEMORY_ADDR_SLEB => RelocType.WASM_MEMORY_ADDR_SLEB,
4268CorInfoReloc.WASM_MEMORY_ADDR_REL_SLEB => RelocType.WASM_MEMORY_ADDR_REL_SLEB,
4269CorInfoReloc.WASM_MEMORY_ADDR_REL_LEB => RelocType.WASM_MEMORY_ADDR_REL_LEB,
4270CorInfoReloc.WASM_TYPE_INDEX_LEB => RelocType.WASM_TYPE_INDEX_LEB,
4271CorInfoReloc.WASM_GLOBAL_INDEX_LEB => RelocType.WASM_GLOBAL_INDEX_LEB,
4334RelocType relocType = GetRelocType(fRelocType);