diff options
author | Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> | 2023-07-25 12:16:40 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2023-07-26 09:45:55 -0300 |
commit | dbc4b032dc5c4ef0c46e9de23c46b1698bad4412 (patch) | |
tree | 487931b85a4190471e2ff669ba40b286f6684a07 /sysdeps/unix | |
parent | 0b1a76c57782a03685f405ee53e6d5f691d69298 (diff) | |
download | glibc-dbc4b032dc5c4ef0c46e9de23c46b1698bad4412.tar glibc-dbc4b032dc5c4ef0c46e9de23c46b1698bad4412.tar.gz glibc-dbc4b032dc5c4ef0c46e9de23c46b1698bad4412.tar.bz2 glibc-dbc4b032dc5c4ef0c46e9de23c46b1698bad4412.zip |
linux: Fix i686 with gcc6
On __convert_scm_timestamps GCC 6 issues an warning that tvts[0]/tvts[1]
maybe be used uninitialized, however it would be used if type is set to a
value different than 0 (done by either COMPAT_SO_TIMESTAMP_OLD or
COMPAT_SO_TIMESTAMPNS_OLD) which will fallthrough to 'common' label.
It does not show with gcc 7 or more recent versions.
Checked on i686-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/convert_scm_timestamps.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/convert_scm_timestamps.c b/sysdeps/unix/sysv/linux/convert_scm_timestamps.c index 42f9613416..06c8adeee1 100644 --- a/sysdeps/unix/sysv/linux/convert_scm_timestamps.c +++ b/sysdeps/unix/sysv/linux/convert_scm_timestamps.c @@ -23,6 +23,7 @@ # include <string.h> # include <sys/socket.h> # include <socket-constants-time64.h> +# include <libc-diag.h> /* It converts the first SO_TIMESTAMP or SO_TIMESTAMPNS with 32-bit time and appends it to the control buffer. The 32-bit time field is kept as-is. @@ -44,7 +45,15 @@ __convert_scm_timestamps (struct msghdr *msg, socklen_t msgsize) 'struct __kernel_sock_timeval' while for SO_TIMESTAMPNS_NEW is a 'struct __kernel_timespec'. In either case it is two uint64_t members. */ + + /* GCC 6 issues an warning that tvts[0]/tvts[1] maybe be used uninitialized, + however it would be used if type is set to a value different than 0 + (done by either COMPAT_SO_TIMESTAMP_OLD or COMPAT_SO_TIMESTAMPNS_OLD) + which will fallthrough to 'common' label. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (6, "-Wmaybe-uninitialized"); int64_t tvts[2]; + DIAG_POP_NEEDS_COMMENT; int32_t tmp[2]; struct cmsghdr *cmsg, *last = NULL; |