template <typename T>

struct RemoteAbiTranscriber

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

This is the main point of specialization, which is the responsibility of the

definer of T. It gets explicit (often partial) specializations for the most

interesting types. Otherwise the default implementation handles three kinds

of "uninteresting" types:

* Single-byte integral types that are copied verbatim (e.g. bool, uint8_t).

* Single-byte enum types that are copied verbatim.

* All

<lib

/elfldltl/layout.h> and

<lib

/elfldltl/field.h> types (regardless

of ElfClass and ElfData, as per elfldltl::kIsLayout) are copied verbatim.

* Class / struct types are copied member-by-member. To make this work

they must provide the API of Abi* template aliases described below.

Explicit partial specializations below cover the

<lib

/elfldltl/field.h>

types, which are copied verbatim; and std::array, which is copied piecewise

(separately transcribing each element, however that type is specialized).

The partial specialization of elfldltl::AbiPtr is the only generic type

that's considered "interesting". elfldltl::AbiPtr or its derivatives (such

as AbiSpan) must be used for all pointers in transcribable data structures.

Those must take an AbiTraits template class parameter and propagate it down

to all the ABI-sensitive types, especially AbiPtr.