ryujinx-mirror/ARMeilleure/CodeGen/Linking/RelocEntry.cs
FICTURE7 a9343c9364
Refactor PtcInfo (#2625)
* Refactor `PtcInfo`

This change reduces the coupling of `PtcInfo` by moving relocation
tracking to the backend. `RelocEntry`s remains as `RelocEntry`s through
out the pipeline until it actually needs to be written to the PTC
streams. Keeping this representation makes inspecting and manipulating
relocations after compilations less painful. This is something I needed
to do to patch relocations to 0 to diff dumps.

Contributes to #1125.

* Turn `Symbol` & `RelocInfo` into readonly structs

* Add documentation to `CompiledFunction`

* Remove `Compiler.Compile<T>`

Remove `Compiler.Compile<T>` and replace it by `Map<T>` of the
`CompiledFunction` returned.
2021-09-14 01:23:37 +02:00

38 lines
No EOL
1.1 KiB
C#

namespace ARMeilleure.CodeGen.Linking
{
/// <summary>
/// Represents a relocation.
/// </summary>
readonly struct RelocEntry
{
public const int Stride = 13; // Bytes.
/// <summary>
/// Gets the position of the relocation.
/// </summary>
public int Position { get; }
/// <summary>
/// Gets the <see cref="Symbol"/> of the relocation.
/// </summary>
public Symbol Symbol { get; }
/// <summary>
/// Initializes a new instance of the <see cref="RelocEntry"/> struct with the specified position and
/// <see cref="Symbol"/>.
/// </summary>
/// <param name="position">Position of relocation</param>
/// <param name="symbol">Symbol of relocation</param>
public RelocEntry(int position, Symbol symbol)
{
Position = position;
Symbol = symbol;
}
/// <inheritdoc/>
public override string ToString()
{
return $"({nameof(Position)} = {Position}, {nameof(Symbol)} = {Symbol})";
}
}
}