linux-user/syscall.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
Add translation for the host error return code of:
getsockopt(19, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0
This fixes the testsuite of the cockpit debian package with a
hppa-linux guest on a x86-64 host.
Signed-off-by: Helge Deller <deller@gmx.de>
---
linux-user/syscall.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index e541fbe09a..52693b4239 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -2809,8 +2809,9 @@ get_timeout:
ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv));
if (ret < 0)
return ret;
- if (optname == SO_TYPE) {
- val = host_to_target_sock_type(val);
+ switch (optname) {
+ case SO_TYPE: val = host_to_target_sock_type(val); break;
+ case SO_ERROR: val = host_to_target_errno(val); break;
}
if (len > lv)
len = lv;
--
2.38.1
Le 16/12/2022 à 11:10, Helge Deller a écrit : > Add translation for the host error return code of: > getsockopt(19, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0 > > This fixes the testsuite of the cockpit debian package with a > hppa-linux guest on a x86-64 host. > > Signed-off-by: Helge Deller <deller@gmx.de> > --- > linux-user/syscall.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index e541fbe09a..52693b4239 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -2809,8 +2809,9 @@ get_timeout: > ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); > if (ret < 0) > return ret; > - if (optname == SO_TYPE) { > - val = host_to_target_sock_type(val); > + switch (optname) { > + case SO_TYPE: val = host_to_target_sock_type(val); break; > + case SO_ERROR: val = host_to_target_errno(val); break; It looks good but I think compiler will complain if you don't have a default case. perhaps "if (optname == SO_TYPE) { } else if (optname == SO_ERROR) { }" would be better. Thanks, Laurent > } > if (len > lv) > len = lv; > -- > 2.38.1 > >
On 1/26/23 17:55, Laurent Vivier wrote: > Le 16/12/2022 à 11:10, Helge Deller a écrit : >> Add translation for the host error return code of: >> getsockopt(19, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0 >> >> This fixes the testsuite of the cockpit debian package with a >> hppa-linux guest on a x86-64 host. >> >> Signed-off-by: Helge Deller <deller@gmx.de> >> --- >> linux-user/syscall.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >> index e541fbe09a..52693b4239 100644 >> --- a/linux-user/syscall.c >> +++ b/linux-user/syscall.c >> @@ -2809,8 +2809,9 @@ get_timeout: >> ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); >> if (ret < 0) >> return ret; >> - if (optname == SO_TYPE) { >> - val = host_to_target_sock_type(val); >> + switch (optname) { >> + case SO_TYPE: val = host_to_target_sock_type(val); break; >> + case SO_ERROR: val = host_to_target_errno(val); break; > > It looks good but I think compiler will complain if you don't have a default case. It didn't for me, but I'm not sure for others. > perhaps "if (optname == SO_TYPE) { } else if (optname == SO_ERROR) { }" would be better. Personally I do prefer this type of switch statement here (which actually avoids such nested "if" statements). But I'm not religious about it, so if you want it as nested "if"s I can send a new patch which will be larger and less readable... Please let me know. Helge > > Thanks, > Laurent >> } >> if (len > lv) >> len = lv; >> -- >> 2.38.1 >> >> >
Le 26/01/2023 à 19:27, Helge Deller a écrit : > On 1/26/23 17:55, Laurent Vivier wrote: >> Le 16/12/2022 à 11:10, Helge Deller a écrit : >>> Add translation for the host error return code of: >>> getsockopt(19, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0 >>> >>> This fixes the testsuite of the cockpit debian package with a >>> hppa-linux guest on a x86-64 host. >>> >>> Signed-off-by: Helge Deller <deller@gmx.de> >>> --- >>> linux-user/syscall.c | 5 +++-- >>> 1 file changed, 3 insertions(+), 2 deletions(-) >>> >>> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >>> index e541fbe09a..52693b4239 100644 >>> --- a/linux-user/syscall.c >>> +++ b/linux-user/syscall.c >>> @@ -2809,8 +2809,9 @@ get_timeout: >>> ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); >>> if (ret < 0) >>> return ret; >>> - if (optname == SO_TYPE) { >>> - val = host_to_target_sock_type(val); >>> + switch (optname) { >>> + case SO_TYPE: val = host_to_target_sock_type(val); break; >>> + case SO_ERROR: val = host_to_target_errno(val); break; >> >> It looks good but I think compiler will complain if you don't have a default case. > > It didn't for me, but I'm not sure for others. It's ok. No errors reported by gcc. however checkscript.sh is not happy: ERROR: trailing statements should be on next line #30: FILE: linux-user/syscall.c:2762: + case SO_TYPE: val = host_to_target_sock_type(val); break; ERROR: trailing statements should be on next line #31: FILE: linux-user/syscall.c:2763: + case SO_ERROR: val = host_to_target_errno(val); break; Thanks, Laurent
Add translation for the host error return code of:
getsockopt(19, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0
This fixes the testsuite of the cockpit debian package with a
hppa-linux guest on a x86-64 host.
Signed-off-by: Helge Deller <deller@gmx.de>
---
v2: Fix indenting to make checkscript.sh happy
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index dac0cfe6c4..06e8612675 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -2809,8 +2809,13 @@ get_timeout:
ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv));
if (ret < 0)
return ret;
- if (optname == SO_TYPE) {
+ switch (optname) {
+ case SO_TYPE:
val = host_to_target_sock_type(val);
+ break;
+ case SO_ERROR:
+ val = host_to_target_errno(val);
+ break;
}
if (len > lv)
len = lv;
Le 27/01/2023 à 21:25, Helge Deller a écrit : > Add translation for the host error return code of: > getsockopt(19, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0 > > This fixes the testsuite of the cockpit debian package with a > hppa-linux guest on a x86-64 host. > > Signed-off-by: Helge Deller <deller@gmx.de> > --- > v2: Fix indenting to make checkscript.sh happy > > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index dac0cfe6c4..06e8612675 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -2809,8 +2809,13 @@ get_timeout: > ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); > if (ret < 0) > return ret; > - if (optname == SO_TYPE) { > + switch (optname) { > + case SO_TYPE: > val = host_to_target_sock_type(val); > + break; > + case SO_ERROR: > + val = host_to_target_errno(val); > + break; > } > if (len > lv) > len = lv; > Applied to my linux-user-for-8.0 branch. Thanks, Laurent
Le 27/01/2023 à 21:25, Helge Deller a écrit : > Add translation for the host error return code of: > getsockopt(19, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0 > > This fixes the testsuite of the cockpit debian package with a > hppa-linux guest on a x86-64 host. > > Signed-off-by: Helge Deller <deller@gmx.de> > --- > v2: Fix indenting to make checkscript.sh happy > > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index dac0cfe6c4..06e8612675 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -2809,8 +2809,13 @@ get_timeout: > ret = get_errno(getsockopt(sockfd, level, optname, &val, &lv)); > if (ret < 0) > return ret; > - if (optname == SO_TYPE) { > + switch (optname) { > + case SO_TYPE: > val = host_to_target_sock_type(val); > + break; > + case SO_ERROR: > + val = host_to_target_errno(val); > + break; > } > if (len > lv) > len = lv; > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
On 1/27/23 10:25, Helge Deller wrote: > Add translation for the host error return code of: > getsockopt(19, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0 > > This fixes the testsuite of the cockpit debian package with a > hppa-linux guest on a x86-64 host. > > Signed-off-by: Helge Deller<deller@gmx.de> > --- Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
© 2016 - 2024 Red Hat, Inc.