I'm the maintainer of c-ares (https://c-ares.org) and have been scanning the CI build logs for various systems to catch warnings, and on Alpine Linux (which obviously uses musl c) we get these warnings, specifically when using clang (but not oddly not on gcc): /__w/c-ares/c-ares/src/lib/ares__sortaddrinfo.c:93:9: warning: cast from 'const struct in6_addr *' to 'unsigned char *' drops const qualifier [-Wcast-qual]    93 |     if (IN6_IS_ADDR_MULTICAST(&addr6->sin6_addr)) {       |         ^ /usr/include/netinet/in.h:120:48: note: expanded from macro 'IN6_IS_ADDR_MULTICAST'   120 | #define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff)       |                                                ^ /__w/c-ares/c-ares/src/lib/ares__sortaddrinfo.c:95:16: warning: cast from 'const struct in6_addr *' to 'unsigned int *' drops const qualifier [-Wcast-qual]    95 |     } else if (IN6_IS_ADDR_LOOPBACK(&addr6->sin6_addr) ||       |                ^ /usr/include/netinet/in.h:115:24: note: expanded from macro 'IN6_IS_ADDR_LOOPBACK'   115 |         (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \       |                        ^ /__w/c-ares/c-ares/src/lib/ares__sortaddrinfo.c:96:16: warning: cast from 'const struct in6_addr *' to 'unsigned char *' drops const qualifier [-Wcast-qual]    96 | IN6_IS_ADDR_LINKLOCAL(&addr6->sin6_addr)) {       |                ^ /usr/include/netinet/in.h:123:24: note: expanded from macro 'IN6_IS_ADDR_LINKLOCAL'   123 |         ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0x80)       |                        ^ /__w/c-ares/c-ares/src/lib/ares__sortaddrinfo.c:141:16: warning: cast from 'const struct in6_addr *' to 'unsigned int *' drops const qualifier [-Wcast-qual]   141 |     } else if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) {       |                ^ /usr/include/netinet/in.h:129:24: note: expanded from macro 'IN6_IS_ADDR_V4MAPPED'   129 |         (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \       |                        ^ /__w/c-ares/c-ares/src/lib/ares__sortaddrinfo.c:149:16: warning: cast from 'const struct in6_addr *' to 'unsigned int *' drops const qualifier [-Wcast-qual]   149 |     } else if (IN6_IS_ADDR_V4COMPAT(&addr6->sin6_addr)) {       |                ^ /usr/include/netinet/in.h:134:24: note: expanded from macro 'IN6_IS_ADDR_V4COMPAT'   134 |         (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \       |                        ^ /__w/c-ares/c-ares/src/lib/ares__sortaddrinfo.c:151:16: warning: cast from 'const struct in6_addr *' to 'unsigned char *' drops const qualifier [-Wcast-qual]   151 |     } else if (IN6_IS_ADDR_SITELOCAL(&addr6->sin6_addr)) {       |                ^ /usr/include/netinet/in.h:126:24: note: expanded from macro 'IN6_IS_ADDR_SITELOCAL'   126 |         ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0xc0)       |                        ^ /__w/c-ares/c-ares/src/lib/ares__sortaddrinfo.c:189:16: warning: cast from 'const struct in6_addr *' to 'unsigned int *' drops const qualifier [-Wcast-qual]   189 |     } else if (IN6_IS_ADDR_V4COMPAT(&addr6->sin6_addr) ||       |                ^ /usr/include/netinet/in.h:134:24: note: expanded from macro 'IN6_IS_ADDR_V4COMPAT'   134 |         (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \       |                        ^ Full build output: https://github.com/c-ares/c-ares/actions/runs/10219723015/job/28278549865 I've attached a patch that will silence this warning by always casting to the comparison to const, but otherwise not impact the behavior. -Brad