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` (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...
(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...

Back to Bug 1840272 Comment 23