Skip to content

Commit 0ca2899

Browse files
Copilotagocke
andcommitted
Fix PEObjectWriter riscv/loongarch relocations: remove addend throws, use targetAddress
Agent-Logs-Url: https://github.com/dotnet/runtime/sessions/092c6e3f-2886-45ac-a780-6fdd3ccf61c3 Co-authored-by: agocke <515774+agocke@users.noreply.github.com>
1 parent e1842bb commit 0ca2899

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

src/coreclr/tools/Common/Compiler/ObjectWriter/PEObjectWriter.cs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -934,11 +934,8 @@ private unsafe void ResolveRelocations(int sectionIndex, List<SymbolicRelocation
934934
break;
935935
case RelocType.IMAGE_REL_BASED_LOONGARCH64_PC:
936936
{
937-
if (addend != 0)
938-
{
939-
throw new NotSupportedException();
940-
}
941-
long delta = ((long)symbolImageOffset - (long)(relocOffset & ~0xfff) + ((long)(symbolImageOffset & 0x800) << 1));
937+
long targetAddress = symbolImageOffset + addend;
938+
long delta = (targetAddress - (long)(relocOffset & ~0xfff) + ((targetAddress & 0x800) << 1));
942939
Relocation.WriteValue(reloc.Type, pData, delta);
943940
break;
944941
}
@@ -947,11 +944,8 @@ private unsafe void ResolveRelocations(int sectionIndex, List<SymbolicRelocation
947944
case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_I:
948945
case RelocType.IMAGE_REL_BASED_RISCV64_PCREL_S:
949946
{
950-
if (addend != 0)
951-
{
952-
throw new NotSupportedException();
953-
}
954-
long delta = (long)symbolImageOffset - (long)relocOffset;
947+
long targetAddress = symbolImageOffset + addend;
948+
long delta = targetAddress - (long)relocOffset;
955949
Relocation.WriteValue(reloc.Type, pData, delta);
956950
break;
957951
}

0 commit comments

Comments
 (0)