Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Sep 2010 08:30:51 -0700
From:      Garrett Cooper <gcooper@FreeBSD.org>
To:        "Robert N. M. Watson" <rwatson@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, Fabian Keil <freebsd-listen@fabiankeil.de>
Subject:   Re: zfs + uma
Message-ID:  <AANLkTimyBMBM1Bfyz3RjQRoUkEeSPuLEZDb6ws0_XQ-o@mail.gmail.com>
In-Reply-To: <F100D77A-CE16-40DE-B441-02E702B12686@FreeBSD.org>
References:  <4C93236B.4050906@freebsd.org> <4C935F56.4030903@freebsd.org> <alpine.BSF.2.00.1009181221560.86826@fledge.watson.org> <20100918143516.3568f40e@r500.local> <F100D77A-CE16-40DE-B441-02E702B12686@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
--00504501751940c0ea04908a5de9
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

On Sat, Sep 18, 2010 at 6:52 AM, Robert N. M. Watson
<rwatson@freebsd.org> wrote:
>
> On 18 Sep 2010, at 13:35, Fabian Keil wrote:
>
>> Doesn't build for me on amd64:
>>
>> fk@r500 /usr/src/tools/tools/umastat $make
>> Warning: Object directory not changed from original /usr/src/tools/tools=
/umastat
>> cc -O2 -pipe =A0-fno-omit-frame-pointer -std=3Dgnu99 -fstack-protector -=
Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wst=
rict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wn=
o-pointer-sign -c umastat.c
>> cc1: warnings being treated as errors
>> umastat.c: In function 'uma_print_bucketlist':
>> umastat.c:234: warning: format '%llu' expects type 'long long unsigned i=
nt', but argument 3 has type 'uint64_t'
>> umastat.c:234: warning: format '%llu' expects type 'long long unsigned i=
nt', but argument 4 has type 'uint64_t'
>> umastat.c: In function 'uma_print_cache':
>> umastat.c:245: warning: format '%llu' expects type 'long long unsigned i=
nt', but argument 3 has type 'u_int64_t'
>> umastat.c:246: warning: format '%llu' expects type 'long long unsigned i=
nt', but argument 3 has type 'u_int64_t'
>> umastat.c: In function 'main':
>> umastat.c:416: warning: format '%llu' expects type 'long long unsigned i=
nt', but argument 2 has type 'u_int64_t'
>> umastat.c:418: warning: format '%llu' expects type 'long long unsigned i=
nt', but argument 2 has type 'u_int64_t'
>> umastat.c:420: warning: format '%llu' expects type 'long long unsigned i=
nt', but argument 2 has type 'u_int64_t'
>> umastat.c:426: warning: dereferencing type-punned pointer will break str=
ict-aliasing rules
>> umastat.c:429: warning: dereferencing type-punned pointer will break str=
ict-aliasing rules
>> *** Error code 1
>>
>> Stop in /usr/src/tools/tools/umastat.
>>
>> The attached patch seems to work around the problem, I'm not sure if
>> the casts to void* are better than decreasing the WARN level, though ...
>
> This is a 32-bit/64-bit issue. Probably all pointers printing should be c=
onverted to %p, and large integer types to %ju and %jd, perhaps with a cast=
 first to intmax_t or uintmax_t if required.

All types were explicitly declared as u_int64_t, so I'd try this
instead with PRIu64. Very few spots in the code today use void * (and
the ones that do interface with kvm_read(3)).

<OT>
FWIW, kvm_read taking the second argument as unsigned long instead of
void* seems a bit inconsistent:

     ssize_t
     kvm_read(kvm_t *kd, unsigned long addr, void *buf, size_t nbytes);

     ssize_t
     kvm_write(kvm_t *kd, unsigned long addr, const void *buf, size_t nbyte=
s);

but that's a different topic to look at later, if it really matters to anyo=
ne.
</OT>

Thanks,
-Garrett

--00504501751940c0ea04908a5de9
Content-Type: application/octet-stream; name="umastat-64bit.diff"
Content-Disposition: attachment; filename="umastat-64bit.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ge8mva1o0

SW5kZXg6IHVtYXN0YXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1bWFzdGF0LmMJKHJldmlzaW9uIDIxMjIy
MykKKysrIHVtYXN0YXQuYwkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgPHZtL3VtYV9pbnQuaD4KIAogI2luY2x1ZGUgPGVyci5oPgorI2luY2x1ZGUgPGludHR5cGVz
Lmg+CiAjaW5jbHVkZSA8a3ZtLmg+CiAjaW5jbHVkZSA8bWVtc3RhdC5oPgogI2luY2x1ZGUgPHN0
ZGlvLmg+CkBAIC0yMzAsOCArMjMxLDggQEAKIAl9CiAKIAlwcmludGYoIlxuIik7Ci0JcHJpbnRm
KCIlc307ICAvLyB0b3RhbCBjbnQgJWxsdSwgdG90YWwgZW50cmllcyAlbGx1XG4iLCBzcGFjZXMs
Ci0JICAgIHRvdGFsX2NudCwgdG90YWxfZW50cmllcyk7CisJcHJpbnRmKCIlc307ICAvLyB0b3Rh
bCBjbnQgJSJQUkl1NjQiLCB0b3RhbCBlbnRyaWVzICUiUFJJdTY0IlxuIiwKKwkgICAgc3BhY2Vz
LCB0b3RhbF9jbnQsIHRvdGFsX2VudHJpZXMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjQyLDgg
KzI0Myw4IEBACiAJaW50IHJldDsKIAogCXByaW50ZigiJXMlc1slZF0gPSB7XG4iLCBzcGFjZXMs
IG5hbWUsIGNwdSk7Ci0JcHJpbnRmKCIlcyAgdWNfZnJlZXMgPSAlbGx1O1xuIiwgc3BhY2VzLCBj
YWNoZS0+dWNfZnJlZXMpOwotCXByaW50ZigiJXMgIHVjX2FsbG9jcyA9ICVsbHU7XG4iLCBzcGFj
ZXMsIGNhY2hlLT51Y19hbGxvY3MpOworCXByaW50ZigiJXMgIHVjX2ZyZWVzID0gJSJQUkl1NjQi
O1xuIiwgc3BhY2VzLCBjYWNoZS0+dWNfZnJlZXMpOworCXByaW50ZigiJXMgIHVjX2FsbG9jcyA9
ICUiUFJJdTY0IjtcbiIsIHNwYWNlcywgY2FjaGUtPnVjX2FsbG9jcyk7CiAKIAlpZiAoY2FjaGUt
PnVjX2ZyZWVidWNrZXQgIT0gTlVMTCkgewogCQlyZXQgPSBrcmVhZChrdm0sIGNhY2hlLT51Y19m
cmVlYnVja2V0LCAmdWIsIHNpemVvZih1YiksIDApOwpAQCAtNDEyLDExICs0MTMsMTEgQEAKIAkJ
CX0KIAkJCXByaW50ZigiICBab25lIHtcbiIpOwogCQkJcHJpbnRmKCIgICAgdXpfbmFtZSA9IFwi
JXNcIjtcbiIsIG5hbWUpOwotCQkJcHJpbnRmKCIgICAgdXpfYWxsb2NzID0gJWxsdTtcbiIsCisJ
CQlwcmludGYoIiAgICB1el9hbGxvY3MgPSAlIlBSSXU2NCI7XG4iLAogCQkJICAgIHV6cF91c2Vy
c3BhY2UtPnV6X2FsbG9jcyk7Ci0JCQlwcmludGYoIiAgICB1el9mcmVlcyA9ICVsbHU7XG4iLAor
CQkJcHJpbnRmKCIgICAgdXpfZnJlZXMgPSAlIlBSSXU2NCI7XG4iLAogCQkJICAgIHV6cF91c2Vy
c3BhY2UtPnV6X2ZyZWVzKTsKLQkJCXByaW50ZigiICAgIHV6X2ZhaWxzID0gJWxsdTtcbiIsCisJ
CQlwcmludGYoIiAgICB1el9mYWlscyA9ICUiUFJJdTY0IjtcbiIsCiAJCQkgICAgdXpwX3VzZXJz
cGFjZS0+dXpfZmFpbHMpOwogCQkJcHJpbnRmKCIgICAgdXpfZmlsbHMgPSAldTtcbiIsCiAJCQkg
ICAgdXpwX3VzZXJzcGFjZS0+dXpfZmlsbHMpOwo=
--00504501751940c0ea04908a5de9--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTimyBMBM1Bfyz3RjQRoUkEeSPuLEZDb6ws0_XQ-o>