Message ID | 20201005165850.88425-1-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | tests/tcg/linux-test: Adjust getsockname for musl | expand |
On 10/5/20 6:58 PM, Richard Henderson wrote: > Unlike glibc, musl does not use transparent unions to hide > the different structures that overlap struct sockaddr. > > Add an explicit cast to work around this. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > tests/tcg/multiarch/linux-test.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tests/tcg/multiarch/linux-test.c b/tests/tcg/multiarch/linux-test.c > index 8a7c15cd31..96bbad5823 100644 > --- a/tests/tcg/multiarch/linux-test.c > +++ b/tests/tcg/multiarch/linux-test.c > @@ -296,7 +296,7 @@ static void test_socket(void) > server_fd = server_socket(); > /* find out what port we got */ > socklen = sizeof(server_addr); > - ret = getsockname(server_fd, &server_addr, &socklen); > + ret = getsockname(server_fd, (struct sockaddr *)&server_addr, &socklen); > chk_error(ret); > server_port = ntohs(server_addr.sin_port); > >
On 10/5/20 11:58 AM, Richard Henderson wrote: > Unlike glibc, musl does not use transparent unions to hide > the different structures that overlap struct sockaddr. > > Add an explicit cast to work around this. Bah. I meant to point out that this affects our microblaze docker cross-compile. r~ > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > tests/tcg/multiarch/linux-test.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tests/tcg/multiarch/linux-test.c b/tests/tcg/multiarch/linux-test.c > index 8a7c15cd31..96bbad5823 100644 > --- a/tests/tcg/multiarch/linux-test.c > +++ b/tests/tcg/multiarch/linux-test.c > @@ -296,7 +296,7 @@ static void test_socket(void) > server_fd = server_socket(); > /* find out what port we got */ > socklen = sizeof(server_addr); > - ret = getsockname(server_fd, &server_addr, &socklen); > + ret = getsockname(server_fd, (struct sockaddr *)&server_addr, &socklen); > chk_error(ret); > server_port = ntohs(server_addr.sin_port); > >
diff --git a/tests/tcg/multiarch/linux-test.c b/tests/tcg/multiarch/linux-test.c index 8a7c15cd31..96bbad5823 100644 --- a/tests/tcg/multiarch/linux-test.c +++ b/tests/tcg/multiarch/linux-test.c @@ -296,7 +296,7 @@ static void test_socket(void) server_fd = server_socket(); /* find out what port we got */ socklen = sizeof(server_addr); - ret = getsockname(server_fd, &server_addr, &socklen); + ret = getsockname(server_fd, (struct sockaddr *)&server_addr, &socklen); chk_error(ret); server_port = ntohs(server_addr.sin_port);
Unlike glibc, musl does not use transparent unions to hide the different structures that overlap struct sockaddr. Add an explicit cast to work around this. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- tests/tcg/multiarch/linux-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)