template <typename T, class Elf, class RemoteTraits>

struct RemoteAbiTranscriber

Defined at line 363 of file ../../sdk/lib/ld/include/lib/ld/remote-abi-transcriber.h

Ultimately the only truly interesting kind of specialization is for

pointers, via AbiPtr. The remote pointer value's representation is always

Elf::Addr, but how it's computed is delegated back to the Context object

that's passed into FromLocal via the `FromLocalPtr` method:

```

std::optional

<Addr

> FromLocalPtr(const LocalT

&

ptr);

```

Here LocalT is the local equivalent of T, `RemoteAbiTranscriber

<T

>::Local`:

the remote type `AbiPtr

<T

, Elf, RemoteTraits>` corresponds to the local type

`AbiPtr

<LocalT

, Elf>`. This method can be templated and/or have specific

overloads for specific types: it must be callable with a `const LocalT

&

`

when `AbiPtr

<LocalT

>` is used.

This method must have a non-const overload if the Context object is passed

to FromLocal as `const Context

&

`. If there is only a non-const overload of

FromLocalPtr, then a mutable (or rvalue) `Context` object must be passed to

FromLocal, since that reference (or value) is what MemberFromLocal will be

called on.

'FromLocalPtr' can return `std::nullopt` for failure. The details of the

failure should be diagnosed in some fashion before return, using the Context

object as appropriate to direct that. On success, it should yield the

address value that this pointer should have in the remote address space.

Public Methods

template <typename Context>
bool FromLocal (Context && ctx, Remote & out, const Local & in)

Defined at line 382 of file ../../sdk/lib/ld/include/lib/ld/remote-abi-transcriber.h