(In reply to Petr Sumbera from comment #22) > Build with provided patch file on Solaris fails with: > ``` > 25:43.52 In file included from /builds/psumbera/mozilla-central-build/obj-x86_64-pc-solaris2.11/ipc/ipdl/_ipdlheaders/mozilla/dom/PBrowserChild.h:49, > 25:43.52 from /builds/psumbera/mozilla-central-build/obj-x86_64-pc-solaris2.11/dist/include/mozilla/dom/BrowserChild.h:11, > 25:43.52 from /builds/psumbera/mozilla-central-build/uriloader/exthandler/ExternalHelperAppChild.cpp:8, > 25:43.52 from Unified_cpp_uriloader_exthandler0.cpp:11: > 25:43.52 /builds/psumbera/mozilla-central-build/obj-x86_64-pc-solaris2.11/dist/include/nsIFrame.h:388:8: note: ‘mozilla::FrameProperties::PropertyType<mozilla::SmallValueHolder<mozilla::FrameBidiData> >’ {aka ‘struct mozilla::FrameBidiData’} declared here > 25:43.52 388 | struct FrameBidiData { > 25:43.52 | ^~~~~~~~~~~~~ > 25:45.15 In file included from Unified_cpp_widget_gtk0.cpp:47: > 25:45.15 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp: In function ‘void SyncDmaBuf(int, uint64_t)’: > 25:45.15 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp:792:50: error: expected primary-expression before ‘struct’ > 25:45.15 792 | #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) > 25:45.15 | ^~~~~~ > 25:45.15 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp:792:50: note: in definition of macro ‘DMA_BUF_IOCTL_SYNC’ > 25:45.15 792 | #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) > 25:45.15 | ^~~~~~ > 25:45.20 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp:792:28: error: ‘_IOW’ was not declared in this scope > 25:45.20 792 | #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) > 25:45.20 | ^~~~ > 25:45.20 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp:792:28: note: in definition of macro ‘DMA_BUF_IOCTL_SYNC’ > 25:45.20 792 | #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) > 25:45.20 | ^~~~ > ``` for me the `_IOW` macro is defined in `sys/ioccom.h` (see https://github.com/openbsd/src/blob/master/sys/sys/ioccom.h#L60) and seems widely used for all ioctl-related functions/code, and afaict my builds don't fail on it like yours. Solaris probably has it in a header which might not be included...
Bug 1840272 Comment 23 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
(In reply to Petr Sumbera from comment #22) > Build with provided patch file on Solaris fails with: > ``` > 25:43.52 In file included from /builds/psumbera/mozilla-central-build/obj-x86_64-pc-solaris2.11/ipc/ipdl/_ipdlheaders/mozilla/dom/PBrowserChild.h:49, > 25:43.52 from /builds/psumbera/mozilla-central-build/obj-x86_64-pc-solaris2.11/dist/include/mozilla/dom/BrowserChild.h:11, > 25:43.52 from /builds/psumbera/mozilla-central-build/uriloader/exthandler/ExternalHelperAppChild.cpp:8, > 25:43.52 from Unified_cpp_uriloader_exthandler0.cpp:11: > 25:43.52 /builds/psumbera/mozilla-central-build/obj-x86_64-pc-solaris2.11/dist/include/nsIFrame.h:388:8: note: ‘mozilla::FrameProperties::PropertyType<mozilla::SmallValueHolder<mozilla::FrameBidiData> >’ {aka ‘struct mozilla::FrameBidiData’} declared here > 25:43.52 388 | struct FrameBidiData { > 25:43.52 | ^~~~~~~~~~~~~ > 25:45.15 In file included from Unified_cpp_widget_gtk0.cpp:47: > 25:45.15 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp: In function ‘void SyncDmaBuf(int, uint64_t)’: > 25:45.15 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp:792:50: error: expected primary-expression before ‘struct’ > 25:45.15 792 | #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) > 25:45.15 | ^~~~~~ > 25:45.15 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp:792:50: note: in definition of macro ‘DMA_BUF_IOCTL_SYNC’ > 25:45.15 792 | #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) > 25:45.15 | ^~~~~~ > 25:45.20 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp:792:28: error: ‘_IOW’ was not declared in this scope > 25:45.20 792 | #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) > 25:45.20 | ^~~~ > 25:45.20 /builds/psumbera/mozilla-central-build/widget/gtk/DMABufSurface.cpp:792:28: note: in definition of macro ‘DMA_BUF_IOCTL_SYNC’ > 25:45.20 792 | #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync) > 25:45.20 | ^~~~ > ``` for me the `_IOW` macro is defined in `sys/ioccom.h` (a low-level kernel header, see https://github.com/openbsd/src/blob/master/sys/sys/ioccom.h#L60) and seems widely used for all ioctl-related functions/code, and afaict my builds don't fail on it like yours. Solaris probably has it in a header which might not be included...