compile, runtime: permit anonymous and empty fields in C header

Permit putting structs with anonymous and empty fields in the C header
file that is used to build the C runtime code.  This is
required for upcoming 1.13 support, as the m struct has picked up an
anonymous field.

Doing this lets the C header contain all the type descriptor structs,
so start using those in the C code.  This cuts the number of copies of
type descriptor definitions from 3 to 2.

Change-Id: I726d49856dd10f7ae15d994716b67b5e24a450d0
Reviewed-by: Cherry Zhang <>
Reviewed-by: Than McIntosh <>
12 files changed