The various structures in the mod_metadata set of a FreeBSD
kernel and modules contain pointers. The FreeBSD loader
correctly deals with a mismatch in loader build and
kernel (e.g. 32-bit i386/ppc loader, loading 64-bit amd64/ppc64
kernels), but wasn't dealing with the inverse case where a
64-bit loader was loading a 32-bit kernel.
This manifested itself as a 32-bit bhyve guest with ZFS root
not being able to load the zfs kernel module or determine
the dependency on opensolaris.ko.
Currently, the code is only built for and amd64 loader. However,
it would be simple to add other architectures should they need
this feature by adding to the conditional compilation guards.