For 32-bit Android `socklen_t` is defined as `int32_t`. --- a/include/host/wasi/environ.h +++ b/include/host/wasi/environ.h @@ -964,7 +964,7 @@ WasiExpect sockGetOpt(__wasi_fd_t Fd, int32_t Level, int32_t Name, void *FlagPtr, - uint32_t *FlagSizePtr) const noexcept { + socklen_t *FlagSizePtr) const noexcept { auto Node = getNodeOrNull(Fd); if (unlikely(!Node)) { return WasiUnexpect(__WASI_ERRNO_BADF); --- a/include/host/wasi/inode.h +++ b/include/host/wasi/inode.h @@ -540,7 +540,7 @@ WasiExpect sockShutdown(__wasi_sdflags_t SdFlags) const noexcept; WasiExpect sockGetOpt(int32_t Level, int32_t Name, void *FlagPtr, - uint32_t *FlagSizePtr) const noexcept; + socklen_t *FlagSizePtr) const noexcept; WasiExpect sockSetOpt(int32_t Level, int32_t Name, void *FlagPtr, uint32_t FlagSizePtr) const noexcept; --- a/include/host/wasi/vinode.h +++ b/include/host/wasi/vinode.h @@ -603,7 +603,7 @@ } WasiExpect sockGetOpt(int32_t Level, int32_t OptName, void *FlagPtr, - uint32_t *FlagSizePtr) const noexcept { + socklen_t *FlagSizePtr) const noexcept { return Node.sockGetOpt(Level, OptName, FlagPtr, FlagSizePtr); } WasiExpect sockSetOpt(int32_t Level, int32_t OptName, void *FlagPtr, --- a/include/host/wasi/wasifunc.h +++ b/include/host/wasi/wasifunc.h @@ -455,7 +455,7 @@ Expect body(Runtime::Instance::MemoryInstance *MemInst, int32_t Fd, int32_t Level, int32_t Name, uint32_t FlagPtr, - uint32_t FlagSizePtr); + socklen_t FlagSizePtr); }; class WasiSockSetOpt : public Wasi { --- a/lib/host/wasi/inode-linux.cpp +++ b/lib/host/wasi/inode-linux.cpp @@ -1060,7 +1060,7 @@ WasiExpect INode::sockGetOpt(int32_t Level, int32_t OptName, void *FlagPtr, - uint32_t *FlagSizePtr) const noexcept { + socklen_t *FlagSizePtr) const noexcept { auto SysLevel = toSockOptLevel(static_cast<__wasi_sock_opt_level_t>(Level)); auto SysOptName = toSockOptSoName(static_cast<__wasi_sock_opt_so_t>(OptName)); if (OptName == __WASI_SOCK_OPT_SO_ERROR) { --- a/lib/host/wasi/wasifunc.cpp +++ b/lib/host/wasi/wasifunc.cpp @@ -1854,13 +1854,13 @@ Expect WasiSockGetOpt::body(Runtime::Instance::MemoryInstance *MemInst, int32_t Fd, int32_t Level, int32_t Name, uint32_t FlagPtr, - uint32_t FlagSizePtr) { + socklen_t FlagSizePtr) { if (MemInst == nullptr) { return __WASI_ERRNO_FAULT; } - uint32_t *InnerFlagSizePtr = MemInst->getPointer(FlagSizePtr); + socklen_t *InnerFlagSizePtr = MemInst->getPointer(FlagSizePtr); if (InnerFlagSizePtr == nullptr) { return __WASI_ERRNO_FAULT; }