Page MenuHomeFreeBSD

tcp_bbr: avoid gcc -Werror=pointer-to-int-cast on 32-bit arch
ClosedPublic

Authored by rlibby on Wed, Jun 26, 7:50 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Jun 28, 3:41 AM
Unknown Object (File)
Thu, Jun 27, 4:40 PM

Details

Test Plan

make buildkernel on amd64 and i386, examine warnings

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

rlibby added reviewers: rrs, tuexen.

Why is an uint64_t not good enough to hold a pointer? Aren't pointers 32-bit or 64-bit on all architectures FreeBSD supports?

Why is an uint64_t not good enough to hold a pointer? Aren't pointers 32-bit or 64-bit on all architectures FreeBSD supports?

Yeah, uint64_t is always wide enough. gcc's issue on 32-bit arch is that it doesn't like to see a 32-bit pointer cast directly to a 64-bit integer. It issues -Wpointer-to-int-cast, which is an error with our flags. This patch works around that by first casting to an integer type that is the same width as a pointer. From there there is no complaint about the conversion to uint64_t. The patch is intended to be a functional nop, for both 32-bit and 64-bit arch.

Same deal in D45752. Related issue in reverse in D45750.

This revision is now accepted and ready to land.Wed, Jun 26, 8:51 PM