https://github.com/wasmerio/wasmer/pull/3782

error[E0308]: mismatched types
   --> rtsim/src/gen/mod.rs:30:43
    |
30  |         let mut rng = SmallRng::from_seed(seed);
    |                       ------------------- ^^^^ expected an array with a fixed size of 16 elements, found one with 32 elements
    |                       |
    |                       arguments to this function are incorrect
    |
note: associated function defined here
   --> cargo-crates/rand_core-0.6.4/src/lib.rs:319:8
    |
319 |     fn from_seed(seed: Self::Seed) -> Self;
    |        ^^^^^^^^^

--- cargo-crates/wasmer-vm-2.3.0/src/trap/traphandlers.rs.orig	1970-01-01 00:00:00 UTC
+++ cargo-crates/wasmer-vm-2.3.0/src/trap/traphandlers.rs
@@ -271,7 +271,10 @@ cfg_if::cfg_if! {
                 ))] {
                     pc = context.uc_mcontext.gregs[libc::REG_EIP as usize] as usize;
                     sp = context.uc_mcontext.gregs[libc::REG_ESP as usize] as usize;
-                } else if #[cfg(all(target_os = "freebsd", any(target_arch = "x86", target_arch = "x86_64")))] {
+                } else if #[cfg(all(target_os = "freebsd", target_arch = "x86"))] {
+                    pc = context.uc_mcontext.mc_eip as usize;
+                    sp = context.uc_mcontext.mc_esp as usize;
+                } else if #[cfg(all(target_os = "freebsd", target_arch = "x86_64"))] {
                     pc = context.uc_mcontext.mc_rip as usize;
                     sp = context.uc_mcontext.mc_rsp as usize;
                 } else if #[cfg(all(target_vendor = "apple", target_arch = "x86_64"))] {
@@ -337,6 +340,13 @@ cfg_if::cfg_if! {
                     (*context.uc_mcontext).__ss.__rbp = rbp;
                     (*context.uc_mcontext).__ss.__rdi = rdi;
                     (*context.uc_mcontext).__ss.__rsi = rsi;
+                } else if #[cfg(all(target_os = "freebsd", target_arch = "x86"))] {
+                    let TrapHandlerRegs { eip, esp, ebp, ecx, edx } = regs;
+                    context.uc_mcontext.mc_eip = eip as libc::register_t;
+                    context.uc_mcontext.mc_esp = esp as libc::register_t;
+                    context.uc_mcontext.mc_ebp = ebp as libc::register_t;
+                    context.uc_mcontext.mc_ecx = ecx as libc::register_t;
+                    context.uc_mcontext.mc_edx = edx as libc::register_t;
                 } else if #[cfg(all(target_os = "freebsd", target_arch = "x86_64"))] {
                     let TrapHandlerRegs { rip, rsp, rbp, rdi, rsi } = regs;
                     context.uc_mcontext.mc_rip = rip as libc::register_t;
--- rtsim/src/gen/mod.rs.orig	2023-04-14 03:41:36 UTC
+++ rtsim/src/gen/mod.rs
@@ -23,6 +23,9 @@ impl Data {
 
 impl Data {
     pub fn generate(settings: &WorldSettings, world: &World, index: IndexRef) -> Self {
+#[cfg(target_pointer_width = "32")]
+        let mut seed = [0; 16];
+#[cfg(not(target_pointer_width = "32"))]
         let mut seed = [0; 32];
         seed.iter_mut()
             .zip(&mut index.seed.to_le_bytes())
