feat(zephyr): v4.4 migration fixes/improvements

Zephyr v4.4 has stricter compiler policies. This commit fixes following:
- fix implicit casting errors
- fix IPV6 related typos/variables/structures
- fix zephyr fd relevant implicit casting

Signed-off-by: Krisztian Szilvasi <34309983+kr-t@users.noreply.github.com>
This commit is contained in:
Krisztian Szilvasi 2026-04-16 14:43:10 +02:00
parent 11eb2069c4
commit d1a577ea0e
No known key found for this signature in database
3 changed files with 15 additions and 15 deletions

View File

@ -438,7 +438,7 @@ apply_relocation(AOTModule *module, uint8 *target_section_addr,
| ((lower & 0x7000) >> 4) | (lower & 0x00ff); | ((lower & 0x7000) >> 4) | (lower & 0x00ff);
offset = (offset ^ 0x8000) - 0x8000; offset = (offset ^ 0x8000) - 0x8000;
offset += (symbol_addr + reloc_addend); offset += ((intptr_t)symbol_addr + reloc_addend);
if (reloc_type == R_ARM_THM_MOVT_PREL if (reloc_type == R_ARM_THM_MOVT_PREL
|| reloc_type == R_ARM_THM_MOVW_PREL_NC) || reloc_type == R_ARM_THM_MOVW_PREL_NC)

View File

@ -2215,15 +2215,15 @@ wasmtime_ssp_poll_oneoff(wasm_exec_env_t exec_env, struct fd_table *curfds,
__WASI_RIGHT_POLL_FD_READWRITE, 0); __WASI_RIGHT_POLL_FD_READWRITE, 0);
if (error == 0) { if (error == 0) {
// Temporary workaround (see PR#4377) // Temporary workaround (see PR#4377)
#ifdef BH_PLATFORM_ZEPHYR
os_file_handle tfd = fos[i]->file_handle->fd;
#else
os_file_handle tfd = fos[i]->file_handle; os_file_handle tfd = fos[i]->file_handle;
#endif
// Proper file descriptor on which we can poll(). // Proper file descriptor on which we can poll().
pfds[i] = (os_poll_file_handle){ pfds[i] = (os_poll_file_handle){
#ifdef BH_PLATFORM_ZEPHYR
.fd = tfd->fd,
#else
.fd = tfd, .fd = tfd,
#endif
.events = s->u.type == __WASI_EVENTTYPE_FD_READ .events = s->u.type == __WASI_EVENTTYPE_FD_READ
? POLLIN ? POLLIN
: POLLOUT, : POLLOUT,

View File

@ -24,7 +24,7 @@ textual_addr_to_sockaddr(const char *textual, int port, struct sockaddr *out,
{ {
struct sockaddr_in *v4; struct sockaddr_in *v4;
#ifdef IPPROTO_IPV6 #ifdef IPPROTO_IPV6
struct sockaddr_in *v6; struct sockaddr_in6 *v6;
#endif #endif
assert(textual); assert(textual);
@ -38,11 +38,11 @@ textual_addr_to_sockaddr(const char *textual, int port, struct sockaddr *out,
} }
#ifdef IPPROTO_IPV6 #ifdef IPPROTO_IPV6
v6 = (struct sockaddr_in *)out; v6 = (struct sockaddr_in6 *)out;
if (zsock_inet_pton(AF_INET6, textual, &v6->sin6_addr.s6_addr) == 1) { if (zsock_inet_pton(AF_INET6, textual, &v6->sin6_addr.s6_addr) == 1) {
v6->sin6_family = AF_INET6; v6->sin6_family = AF_INET6;
v6->sin6_port = htons(port); v6->sin6_port = htons(port);
*out_len = sizeof(struct sockaddr_in); *out_len = sizeof(struct sockaddr_in6);
return true; return true;
} }
#endif #endif
@ -67,7 +67,7 @@ sockaddr_to_bh_sockaddr(const struct sockaddr *sockaddr,
#ifdef IPPROTO_IPV6 #ifdef IPPROTO_IPV6
case AF_INET6: case AF_INET6:
{ {
struct sockaddr_in *addr = (struct sockaddr_in *)sockaddr; struct sockaddr_in6 *addr = (struct sockaddr_in6 *)sockaddr;
size_t i; size_t i;
bh_sockaddr->port = ntohs(addr->sin6_port); bh_sockaddr->port = ntohs(addr->sin6_port);
@ -245,7 +245,7 @@ os_socket_bind(bh_socket_t socket, const char *host, int *port)
} }
else { else {
#ifdef IPPROTO_IPV6 #ifdef IPPROTO_IPV6
*port = ntohs(((struct sockaddr_in *)&addr)->sin6_port); *port = ntohs(((struct sockaddr_in6 *)&addr)->sin6_port);
#else #else
return BHT_ERROR; return BHT_ERROR;
#endif #endif
@ -906,10 +906,10 @@ os_socket_set_ip_add_membership(bh_socket_t socket,
((uint16_t *)mreq.ipv6mr_multiaddr.s6_addr)[i] = ((uint16_t *)mreq.ipv6mr_multiaddr.s6_addr)[i] =
imr_multiaddr->ipv6[i]; imr_multiaddr->ipv6[i];
} }
mreq.ipv6mr_interface = imr_interface; mreq.ipv6mr_ifindex = imr_interface;
if (setsockopt(socket->fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &mreq, if (zsock_setsockopt(socket->fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP,
sizeof(mreq)) &mreq, sizeof(mreq))
!= 0) { != 0) {
return BHT_ERROR; return BHT_ERROR;
} }
@ -947,7 +947,7 @@ os_socket_set_ip_drop_membership(bh_socket_t socket,
((uint16_t *)mreq.ipv6mr_multiaddr.s6_addr)[i] = ((uint16_t *)mreq.ipv6mr_multiaddr.s6_addr)[i] =
imr_multiaddr->ipv6[i]; imr_multiaddr->ipv6[i];
} }
mreq.ipv6mr_interface = imr_interface; mreq.ipv6mr_ifindex = imr_interface;
if (zsock_setsockopt(socket->fd, IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP, if (zsock_setsockopt(socket->fd, IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP,
&mreq, sizeof(mreq)) &mreq, sizeof(mreq))