Many of these typedefs are the same accross all architectures or can
be set based on an architecture-independent compiler provided macro
(e.g. __SIZEOF_SIZE_T). These macros have been available since GCC 4.6
and Clang sometime before 3.0 (godbolt.org does not have any older clang
I originally considered using the compiler-provided FOO_TYPE directly.
However, in order to do so we have to check that those match the previous
typedef exactly (not just that they have the same size) since any change
would be an ABI break. For example, changing long to long long results
in different C++ name mangling.
This de-deduplication will allow us to only change the (u)intptr_t
definition in sys/_types.h in CheriBSD instead of having to change
machine/_types.h for all CHERI-enabled architectures.