Page MenuHomeFreeBSD

Fix build of hyperv with base gcc on i386
ClosedPublic

Authored by dim on Jun 11 2018, 8:32 AM.
Tags
None
Referenced Files
F137919925: D15753.diff
Thu, Nov 27, 6:13 AM
F137869865: D15753.id46285.diff
Wed, Nov 26, 4:17 PM
Unknown Object (File)
Mon, Nov 24, 10:21 PM
Unknown Object (File)
Sun, Nov 23, 5:10 PM
Unknown Object (File)
Fri, Nov 21, 1:07 AM
Unknown Object (File)
Fri, Nov 21, 1:07 AM
Unknown Object (File)
Fri, Nov 21, 1:05 AM
Unknown Object (File)
Fri, Nov 21, 1:03 AM
Subscribers

Details

Summary

Base gcc fails to compile sys/dev/hyperv/pcib/vmbus_pcib.c for i386,
with the following -Werror warnings:

cc1: warnings being treated as errors
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c: In function 'new_pcichild_device':
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c:567: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c: In function 'vmbus_pcib_on_channel_callback':
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c:940: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c: In function 'hv_pci_protocol_negotiation':
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c:1012: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c: In function 'hv_pci_enter_d0':
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c:1073: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c: In function 'hv_send_resources_allocated':
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c:1125: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c: In function 'vmbus_pcib_map_msi':
/usr/src/sys/dev/hyperv/pcib/vmbus_pcib.c:1730: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]

This is because on i386, several casts from uint64_t to a pointer
reduce the value from 64 bit to 32 bit.

For gcc, this can be fixed by an intermediate cast to uintptr_t. Note
that I am assuming the incoming values will always fit into 32 bit!

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 17163
Build 17015: arc lint + arc unit

Event Timeline

This revision was not accepted when it landed; it landed in state Needs Review.Aug 4 2018, 2:57 PM
This revision was automatically updated to reflect the committed changes.