src\runtime\src\coreclr\tools\Common\Compiler\DependencyAnalysis\Relocation.cs (131)
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:
702public static int GetSize(RelocType relocType)
706RelocType.IMAGE_REL_BASED_DIR64 => 8,
707RelocType.IMAGE_REL_BASED_HIGHLOW => 4,
708RelocType.IMAGE_REL_BASED_ADDR32NB => 4,
709RelocType.IMAGE_REL_BASED_REL32 => 4,
710RelocType.IMAGE_REL_BASED_RELPTR32 => 4,
711RelocType.IMAGE_REL_FILE_ABSOLUTE => 4,
715RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21 => 4,
716RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A => 4,
717RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L => 4,
718RelocType.IMAGE_REL_BASED_THUMB_MOV32 => 8,
719RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL => 8,
720RelocType.IMAGE_REL_BASED_THUMB_BRANCH24 => 4,
721RelocType.IMAGE_REL_BASED_ARM64_BRANCH26 => 4,
722RelocType.IMAGE_REL_BASED_LOONGARCH64_PC => 8,
723RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR => 8,
724RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT => 8,
725RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I => 8,
726RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S => 8,
728RelocType.WASM_FUNCTION_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
729RelocType.WASM_TABLE_INDEX_SLEB => WASM_PADDED_RELOC_SIZE_32,
730RelocType.WASM_TYPE_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
731RelocType.WASM_GLOBAL_INDEX_LEB => WASM_PADDED_RELOC_SIZE_32,
732RelocType.WASM_MEMORY_ADDR_LEB => WASM_PADDED_RELOC_SIZE_32,
733RelocType.WASM_MEMORY_ADDR_SLEB => WASM_PADDED_RELOC_SIZE_32,
734RelocType.WASM_MEMORY_ADDR_REL_LEB => WASM_PADDED_RELOC_SIZE_32,
735RelocType.WASM_MEMORY_ADDR_REL_SLEB => WASM_PADDED_RELOC_SIZE_32,
736RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB => WASM_PADDED_RELOC_SIZE_32,
737RelocType.WASM_TABLE_INDEX_I32 => 4,
738RelocType.WASM_TABLE_INDEX_REL_I32 => 4,
739RelocType.WASM_TABLE_INDEX_I64 => 8,
745public static unsafe long ReadValue(RelocType relocType, void* location)
749case RelocType.IMAGE_REL_BASED_ABSOLUTE:
750case RelocType.IMAGE_REL_BASED_ADDR32NB:
751case RelocType.IMAGE_REL_BASED_HIGHLOW:
752case RelocType.IMAGE_REL_BASED_REL32:
753case RelocType.IMAGE_REL_BASED_RELPTR32:
754case RelocType.IMAGE_REL_SECREL:
755case RelocType.IMAGE_REL_TLSGD:
756case RelocType.IMAGE_REL_TPOFF:
757case RelocType.IMAGE_REL_FILE_ABSOLUTE:
758case RelocType.IMAGE_REL_SYMBOL_SIZE:
760case RelocType.IMAGE_REL_BASED_DIR64:
761case RelocType.WASM_TABLE_INDEX_I64:
763case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
764case RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL:
766case RelocType.IMAGE_REL_BASED_THUMB_BRANCH24:
768case RelocType.IMAGE_REL_BASED_ARM64_BRANCH26:
770case RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21:
772case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A:
773case RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A:
774case RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A:
776case RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12L:
778case RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12:
779case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12:
780case RelocType.IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_HI12:
781case RelocType.IMAGE_REL_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
785case RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21:
789case RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL:
792case RelocType.IMAGE_REL_BASED_LOONGARCH64_PC:
794case RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR:
796case RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT:
797case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I:
798case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S:
799bool isStype = (relocType is RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S);
801case RelocType.WASM_TYPE_INDEX_LEB:
802case RelocType.WASM_GLOBAL_INDEX_LEB:
805case RelocType.WASM_FUNCTION_INDEX_LEB:
806case RelocType.WASM_MEMORY_ADDR_LEB:
807case RelocType.WASM_MEMORY_ADDR_REL_LEB:
808case RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB:
810case RelocType.WASM_TABLE_INDEX_SLEB:
811case RelocType.WASM_MEMORY_ADDR_SLEB:
812case RelocType.WASM_MEMORY_ADDR_REL_SLEB:
814case RelocType.WASM_TABLE_INDEX_I32:
815case RelocType.WASM_TABLE_INDEX_REL_I32:
831public static RelocType GetFileRelocationType(RelocType relocationType)
835case RelocType.IMAGE_REL_BASED_HIGHLOW:
836case RelocType.IMAGE_REL_BASED_DIR64:
837case RelocType.IMAGE_REL_BASED_THUMB_MOV32:
840case RelocType.WASM_TABLE_INDEX_I32:
841return RelocType.IMAGE_REL_BASED_WASM32_TABLE;
843case RelocType.WASM_TABLE_INDEX_I64:
844return RelocType.IMAGE_REL_BASED_WASM64_TABLE;
847return 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 (33)
4291private RelocType GetRelocType(CorInfoReloc reloc)
4294CorInfoReloc.DIRECT => PointerSize == 8 ? RelocType.IMAGE_REL_BASED_DIR64 : RelocType.IMAGE_REL_BASED_HIGHLOW,
4295CorInfoReloc.RELATIVE32 => RelocType.IMAGE_REL_BASED_REL32,
4296CorInfoReloc.ARM64_BRANCH26 => RelocType.IMAGE_REL_BASED_ARM64_BRANCH26,
4297CorInfoReloc.ARM64_PAGEBASE_REL21 => RelocType.IMAGE_REL_BASED_ARM64_PAGEBASE_REL21,
4298CorInfoReloc.ARM64_PAGEOFFSET_12A => RelocType.IMAGE_REL_BASED_ARM64_PAGEOFFSET_12A,
4299CorInfoReloc.ARM64_LIN_TLSDESC_ADR_PAGE21 => RelocType.IMAGE_REL_AARCH64_TLSDESC_ADR_PAGE21,
4300CorInfoReloc.ARM64_LIN_TLSDESC_LD64_LO12 => RelocType.IMAGE_REL_AARCH64_TLSDESC_LD64_LO12,
4301CorInfoReloc.ARM64_LIN_TLSDESC_ADD_LO12 => RelocType.IMAGE_REL_AARCH64_TLSDESC_ADD_LO12,
4302CorInfoReloc.ARM64_LIN_TLSDESC_CALL => RelocType.IMAGE_REL_AARCH64_TLSDESC_CALL,
4303CorInfoReloc.ARM64_WIN_TLS_SECREL_HIGH12A => RelocType.IMAGE_REL_ARM64_TLS_SECREL_HIGH12A,
4304CorInfoReloc.ARM64_WIN_TLS_SECREL_LOW12A => RelocType.IMAGE_REL_ARM64_TLS_SECREL_LOW12A,
4305CorInfoReloc.AMD64_WIN_SECREL => RelocType.IMAGE_REL_SECREL,
4306CorInfoReloc.AMD64_LIN_TLSGD => RelocType.IMAGE_REL_TLSGD,
4307CorInfoReloc.ARM32_THUMB_BRANCH24 => RelocType.IMAGE_REL_BASED_THUMB_BRANCH24,
4308CorInfoReloc.ARM32_THUMB_MOV32 => RelocType.IMAGE_REL_BASED_THUMB_MOV32,
4309CorInfoReloc.ARM32_THUMB_MOV32_PCREL => RelocType.IMAGE_REL_BASED_THUMB_MOV32_PCREL,
4310CorInfoReloc.LOONGARCH64_PC => RelocType.IMAGE_REL_BASED_LOONGARCH64_PC,
4311CorInfoReloc.LOONGARCH64_JIR => RelocType.IMAGE_REL_BASED_LOONGARCH64_JIR,
4312CorInfoReloc.RISCV64_CALL_PLT => RelocType.IMAGE_REL_BASED_RISCV64_CALL_PLT,
4313CorInfoReloc.RISCV64_PCREL_I => RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I,
4314CorInfoReloc.RISCV64_PCREL_S => RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S,
4315CorInfoReloc.WASM_FUNCTION_INDEX_LEB => RelocType.WASM_FUNCTION_INDEX_LEB,
4316CorInfoReloc.WASM_TABLE_INDEX_SLEB => RelocType.WASM_TABLE_INDEX_SLEB,
4317CorInfoReloc.WASM_MEMORY_ADDR_LEB => RelocType.WASM_MEMORY_ADDR_LEB,
4318CorInfoReloc.WASM_MEMORY_ADDR_SLEB => RelocType.WASM_MEMORY_ADDR_SLEB,
4319CorInfoReloc.WASM_MEMORY_ADDR_REL_SLEB => RelocType.WASM_MEMORY_ADDR_REL_SLEB,
4320CorInfoReloc.WASM_MEMORY_ADDR_REL_LEB => RelocType.WASM_MEMORY_ADDR_REL_LEB,
4321CorInfoReloc.WASM_TYPE_INDEX_LEB => RelocType.WASM_TYPE_INDEX_LEB,
4322CorInfoReloc.WASM_GLOBAL_INDEX_LEB => RelocType.WASM_GLOBAL_INDEX_LEB,
4323CorInfoReloc.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB => RelocType.WASM_CLR_RESTORE_CONTEXT_EXCEPTION_TAG_LEB,
4384RelocType relocType = GetRelocType(fRelocType);