a9343c9364
* 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.
38 lines
No EOL
1.1 KiB
C#
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})";
|
|
}
|
|
}
|
|
} |