From: Philipp Psurek <philipp.psurek@gmail.com>
To: linux-nfs@vger.kernel.org
Subject: tools/locktest/testlk.c:84: argument 4 has type ‘__off64_t {aka long long int}’
Date: Sun, 03 Jun 2018 18:30:20 +0200 [thread overview]
Message-ID: <1528043420.3598.4.camel@gmail.com> (raw)
Hi,
I got this error on 32 bit ARM:
make[2]: Entering directory
'/home/portage/portage/net-fs/nfs-utils-2.3.2/work/nfs-utils-
2.3.2/tools/locktest'
armv7a-hardfloat-linux-gnueabi-gcc -DHAVE_CONFIG_H -I.
-I../../support/include
-I/usr/include/tirpc -D_GNU_SOURCE -pipe -Wall -Wextra
-Werror=strict-prototypes -Werror=missing-prototypes
-Werror=missing-declarations -Werror=format=2 -Werror=undef
-Werror=missing-include-dirs -Werror=strict-aliasing=2 -Werror=init-
self
-Werror=implicit-function-declaration -Werror=return-type -
Werror=switch
-Werror=overflow -Werror=parentheses -Werror=aggregate-return
-Werror=unused-result -fno-strict-aliasing -Werror=format-overflow=2
-Werror=int-conversion -Werror=incompatible-pointer-types
-Werror=misleading-indentation -O3 -pipe -fomit-frame-pointer
-mcpu=cortex-a7
-mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -ffast-math -c -o
testlk.o
testlk.c
testlk.c: In function ‘main’:
testlk.c:84:45: error: format ‘%ld’ expects argument of type ‘long
int’, but
argument 4 has type ‘__off64_t {aka long long int}’ [-Werror=format=]
printf("%s: conflicting lock by %d on (%ld;%ld)\n",
~~^
%lld
fname, fl.l_pid, fl.l_start, fl.l_len);
~~~~~~~~~~
testlk.c:84:49: error: format ‘%ld’ expects argument of type ‘long
int’, but
argument 5 has type ‘__off64_t {aka long long int}’ [-Werror=format=]
printf("%s: conflicting lock by %d on (%ld;%ld)\n",
~~^
%lld
fname, fl.l_pid, fl.l_start, fl.l_len);
You can not assume long is 64 bit wide on 32 bit architectures. You
have to use
long long. Please apply the patch below
* 2nd change removes whitespace
* 3rd change is this bug
* 1st change suppress this warning from gcc-7 and higher:
testlk.c: In function 'main':
testlk.c:30:4: warning: this statement may fall through
[-Wimplicit-fallthrough=]
usage(0);
^~~~~~~~
testlk.c:31:3: note: here
case 'r':
^~~~
see
https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/Warning-Options.html#index
-Wimplicit-fallthrough_003d
I provide you this bug via email, because I can not upload files into
Bugzilla
https://bugzilla.linux-nfs.org/show_bug.cgi?id=325
Your Bugzilla has also an invalid security certificate
https://bugzilla.linux-nfs.org/show_bug.cgi?id=323
The Bug described in this email is
https://bugzilla.linux-nfs.org/show_bug.cgi?id=324
------------------------------------------------------
fl.l_start and fl.l_len are 64 bit wide. It has been assumed that long
is 64 bit in a printf(), which is incorrect on a 32 bit archtecture
* 1st change suppress fall through warning from gcc-7 and higher
* 2nd change removes whitespace
* 3rd change is this bug and changes this into a long long
Signed-off-by: Philipp Psurek <philipp.psurek@gmail.com>
---
--- a/tools/locktest/testlk.c 2018-05-22 20:33:01.000000000 +0200
+++ b/tools/locktest/testlk.c 2018-06-03 17:26:36.800202901 +0200
@@ -28,6 +28,7 @@
switch (c) {
case 'h':
usage(0);
+ /* fall through */
case 'r':
cmd = F_SETLK;
typ = F_RDLCK;
@@ -75,13 +76,13 @@
if (fcntl(fd, cmd, &fl) < 0)
fatal("fcntl");
printf("fcntl: ok\n");
-
+
/* printf("TP2\n"); */
if (cmd == F_GETLK) {
if (fl.l_type == F_UNLCK) {
printf("%s: no conflicting lock\n", fname);
} else {
- printf("%s: conflicting lock by %d on
(%ld;%ld)\n",
+ printf("%s: conflicting lock by %d on
(%lld;%lld)\n",
fname, fl.l_pid, fl.l_start,
fl.l_len);
}
return 0;
next reply other threads:[~2018-06-03 16:30 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-03 16:30 Philipp Psurek [this message]
2018-06-03 16:34 ` tools/locktest/testlk.c:84: argument 4 has type ‘__off64_t {aka long long int}’ Philipp Psurek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1528043420.3598.4.camel@gmail.com \
--to=philipp.psurek@gmail.com \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.