src\runtime\src\coreclr\tools\Common\Compiler\DependencyAnalysis\Relocation.cs (128)
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_THUMB_BRANCH24 => 4,
719RelocType.IMAGE_REL_BASED_ARM64_BRANCH26 => 4,
720RelocType.IMAGE_REL_BASED_LOONGARCH64_PC => 8,
721RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR => 8,
722RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT => 8,
723RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I => 8,
724RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S => 8,
726RelocType.WASM_FUNCTION_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
727RelocType.WASM_TABLE_INDEX_SLEB => WASM_PADDED_RELOC_SIZE_32,
728RelocType.WASM_TYPE_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
729RelocType.WASM_GLOBAL_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
730RelocType.WASM_MEMORY_ADDR_LEB => WASM_PADDED_RELOC_SIZE_32,
731RelocType.WASM_MEMORY_ADDR_SLEB => WASM_PADDED_RELOC_SIZE_32,
732RelocType.WASM_MEMORY_ADDR_REL_LEB => WASM_PADDED_RELOC_SIZE_32,
733RelocType.WASM_MEMORY_ADDR_REL_SLEB => WASM_PADDED_RELOC_SIZE_32,
734RelocType.WASM_TABLE_INDEX_I32 => 4,
735RelocType.WASM_TABLE_INDEX_REL_I32 => 4,
736RelocType.WASM_TABLE_INDEX_I64 => 8,
742public static unsafe long ReadValue(RelocType relocType, void* location)
746case RelocType.IMAGE_REL_BASED_ABSOLUTE:
747case RelocType.IMAGE_REL_BASED_ADDR32NB:
748case RelocType.IMAGE_REL_BASED_HIGHLOW:
749case RelocType.IMAGE_REL_BASED_REL32:
750case RelocType.IMAGE_REL_BASED_RELPTR32:
751case RelocType.IMAGE_REL_SECREL:
752case RelocType.IMAGE_REL_TLSGD:
753case RelocType.IMAGE_REL_TPOFF:
754case RelocType.IMAGE_REL_FILE_ABSOLUTE:
755case RelocType.IMAGE_REL_SYMBOL_SIZE:
757case RelocType.IMAGE_REL_BASED_DIR64:
758case RelocType.WASM_TABLE_INDEX_I64:
760case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
761case RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL:
763case RelocType.IMAGE_REL_BASED_THUMB_BRANCH24:
765case RelocType.IMAGE_REL_BASED_ARM64_BRANCH26:
767case RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21:
769case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A:
770case RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A:
771case RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A:
773case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L:
775case RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12:
776case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12:
777case RelocType.IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_HI12:
778case RelocType.IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
782case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21:
786case RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL:
789case RelocType.IMAGE_REL_BASED_LOONGARCH64_PC:
791case RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR:
793case RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT:
794case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I:
795case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S:
796bool isStype = (relocType is RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S);
798case RelocType.WASM_TYPE_INDEX_LEB:
799case RelocType.WASM_GLOBAL_INDEX_LEB:
802case RelocType.WASM_FUNCTION_INDEX_LEB:
803case RelocType.WASM_MEMORY_ADDR_LEB:
804case RelocType.WASM_MEMORY_ADDR_REL_LEB:
806case RelocType.WASM_TABLE_INDEX_SLEB:
807case RelocType.WASM_MEMORY_ADDR_SLEB:
808case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
810case RelocType.WASM_TABLE_INDEX_I32:
811case RelocType.WASM_TABLE_INDEX_REL_I32:
827public static RelocType GetFileRelocationType(RelocType relocationType)
831case RelocType.IMAGE_REL_BASED_HIGHLOW:
832case RelocType.IMAGE_REL_BASED_DIR64:
833case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
836case RelocType.WASM_TABLE_INDEX_I32:
837return RelocType.IMAGE_REL_BASED_WASM32_TABLE;
839case RelocType.WASM_TABLE_INDEX_I64:
840return RelocType.IMAGE_REL_BASED_WASM64_TABLE;
843return 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)
4238private RelocType GetRelocType(CorInfoReloc reloc)
4241CorInfoReloc.DIRECT => PointerSize == 8 ? RelocType.IMAGE_REL_BASED_DIR64 : RelocType.IMAGE_REL_BASED_HIGHLOW,
4242CorInfoReloc.RELATIVE32 => RelocType.IMAGE_REL_BASED_REL32,
4243CorInfoReloc.ARM64_BRANCH26 => RelocType.IMAGE_REL_BASED_ARM64_BRANCH26,
4244CorInfoReloc.ARM64_PAGEBASE_REL21 => RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21,
4245CorInfoReloc.ARM64_PAGEOFFSET_12A => RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A,
4246CorInfoReloc.ARM64_LIN_TLSDESC_ADR_PAGE21 => RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21,
4247CorInfoReloc.ARM64_LIN_TLSDESC_LD64_LO12 => RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12,
4248CorInfoReloc.ARM64_LIN_TLSDESC_ADD_LO12 => RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12,
4249CorInfoReloc.ARM64_LIN_TLSDESC_CALL => RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL,
4250CorInfoReloc.ARM64_WIN_TLS_SECREL_HIGH12A => RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A,
4251CorInfoReloc.ARM64_WIN_TLS_SECREL_LOW12A => RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A,
4252CorInfoReloc.AMD64_WIN_SECREL => RelocType.IMAGE_REL_SECREL,
4253CorInfoReloc.AMD64_LIN_TLSGD => RelocType.IMAGE_REL_TLSGD,
4254CorInfoReloc.ARM32_THUMB_BRANCH24 => RelocType.IMAGE_REL_BASED_THUMB_BRANCH24,
4255CorInfoReloc.ARM32_THUMB_MOV32 => RelocType.IMAGE_REL_BASED_THUMB_MOV32,
4256CorInfoReloc.ARM32_THUMB_MOV32_PCREL => RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL,
4257CorInfoReloc.LOONGARCH64_PC => RelocType.IMAGE_REL_BASED_LOONGARCH64_PC,
4258CorInfoReloc.LOONGARCH64_JIR => RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR,
4259CorInfoReloc.RISCV64_CALL_PLT => RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT,
4260CorInfoReloc.RISCV64_PCREL_I => RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I,
4261CorInfoReloc.RISCV64_PCREL_S => RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S,
4262CorInfoReloc.WASM_FUNCTION_INDEX_LEB => RelocType.WASM_FUNCTION_INDEX_LEB,
4263CorInfoReloc.WASM_TABLE_INDEX_SLEB => RelocType.WASM_TABLE_INDEX_SLEB,
4264CorInfoReloc.WASM_MEMORY_ADDR_LEB => RelocType.WASM_MEMORY_ADDR_LEB,
4265CorInfoReloc.WASM_MEMORY_ADDR_SLEB => RelocType.WASM_MEMORY_ADDR_SLEB,
4266CorInfoReloc.WASM_MEMORY_ADDR_REL_SLEB => RelocType.WASM_MEMORY_ADDR_REL_SLEB,
4267CorInfoReloc.WASM_MEMORY_ADDR_REL_LEB => RelocType.WASM_MEMORY_ADDR_REL_LEB,
4268CorInfoReloc.WASM_TYPE_INDEX_LEB => RelocType.WASM_TYPE_INDEX_LEB,
4269CorInfoReloc.WASM_GLOBAL_INDEX_LEB => RelocType.WASM_GLOBAL_INDEX_LEB,
4330RelocType relocType = GetRelocType(fRelocType);