[PATCH v1] utils: mojom: Fix build error caused by the mojom tool update
Kieran Bingham
kieran.bingham at ideasonboard.com
Thu Feb 15 11:46:12 CET 2024
Quoting Naushir Patuck (2024-02-15 08:23:42)
> The update to the mojom tool in commit d17de86904f0 causes build errors
> with gcc 12.2 release builds. One such error is:
>
> In file included from src/libcamera/proxy/worker/raspberrypi_ipa_proxy_worker.cpp:18:
> In static member function ‘static libcamera::ipa::RPi::ProcessParams libcamera::IPADataSerializer<libcamera::ipa::RPi::ProcessParams>::deserialize(std::vector<unsigned char>::const_iterator, std::vector<unsigned char>::const_iterator, libcamera::ControlSerializer*)’,
> inlined from ‘void IPAProxyRPiWorker::readyRead()’ at src/libcamera/proxy/worker/raspberrypi_ipa_proxy_worker.cpp:302:70:
> include/libcamera/ipa/raspberrypi_ipa_serializer.h:1172:32: error: ‘*(uint32_t*)((char*)&ret + offsetof(libcamera::ipa::RPi::ProcessParams, libcamera::ipa::RPi::ProcessParams::buffers.libcamera::ipa::RPi::BufferIds::bayer))’ may be used uninitialized [-Werror=maybe-uninitialized]
> 1172 | return ret;
>
> The failure is caused by the new auto-generated IPA interface not
> initialising POD types to a default value. This is because the updated
> mojom library uses a new mojom.ValueKind class to represent POD types,
> whereas the interface generator script uses the mojom.Kind class, which
> is correct for the older mojom library.
Interesting, that explains why we had to add
- https://patchwork.libcamera.org/patch/19446/
but clearly it wasn't a complete solution.
>
> Fix this breakage by switching the interface generator script to use
> mojom.ValueKind to test for POD types.
>
> Fixes: d17de86904f0 ("utils: ipc: Update mojo")
> Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
> ---
> utils/ipc/generators/mojom_libcamera_generator.py | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/utils/ipc/generators/mojom_libcamera_generator.py b/utils/ipc/generators/mojom_libcamera_generator.py
> index 582818c98b5f..99d905de456c 100644
> --- a/utils/ipc/generators/mojom_libcamera_generator.py
> +++ b/utils/ipc/generators/mojom_libcamera_generator.py
> @@ -72,7 +72,7 @@ def ParamsCommaSep(l):
> def GetDefaultValue(element):
> if element.default is not None:
> return element.default
> - if type(element.kind) == mojom.Kind:
> + if type(element.kind) == mojom.ValueKind:
Yeah, I have no idea ;-) I'll leave this to Paul as he's the expert
here. But I'm happy to merge if we're sure it's the right fix, and all
the other tests pass.
Acked-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> return '0'
> if IsFlags(element):
> return ''
> --
> 2.34.1
>
More information about the libcamera-devel
mailing list