The current code computes the minimum element length based on the type
used to create the descriptor and uses that as the element length
whenever it is greater than 0. This means that the elem_len parameter
is essentially ignored for any type where we can compute a minimum
element length (which includes CFI_type_char[16|32]_t), and we may
therefore end up with descriptors with a lower element length than
expected.
This patch fixes the issue by explicitly doing what the standard says,
i.e. it uses the given elem_len for character types, CFI_type_struct
and CFI_type_other, and ignores it (falls back to the minimum element
length) for everything else.