Function Records are required to be aligned on 8 bits. This is enforced for each
records except the first, when one relies on the default alignment within and
std::string. There's no such guarantee, and indeed on 32 bits for some
implementation of std::string this is not enforced.
Provide a portable implementation based on llvm's MemoryBuffer.
worth a comment that this block computes the size taking into account of padding.