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