[PATCH] ipa: libipa: matrix: Fix incorrect symbol namespace

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Jun 24 10:03:25 CEST 2024


Hi Barnabás,

On Fri, Jun 21, 2024 at 04:24:41PM +0000, Barnabás Pőcze wrote:
> 2024. június 21., péntek 17:23 keltezéssel, Laurent Pinchart <laurent.pinchart at ideasonboard.com> írta:
> 
> > The matrixVlidateYaml() function is declared in the libcamera::ipa::
> > namespace, but defined in the libcamera:: namespace. This causes a
> > dynamic linking error at runtime. Fix it by moving the function
> > definition.
> 
> `-Werror=missing-declarations` can catch this. Although it needs the following change
> as well to build:
> 
> diff --git a/include/libcamera/base/log.h b/include/libcamera/base/log.h
> index b5775e49..7da62b51 100644
> --- a/include/libcamera/base/log.h
> +++ b/include/libcamera/base/log.h
> @@ -48,6 +49,7 @@ private:
>  extern const LogCategory &_LOG_CATEGORY(name)();
>  
>  #define LOG_DEFINE_CATEGORY(name)                                      \
> +LOG_DECLARE_CATEGORY(name)                                             \
>  const LogCategory &_LOG_CATEGORY(name)()                               \
>  {                                                                      \
>         /* The instance will be deleted by the Logger destructor. */    \
> 

That's a great idea. We considered in the past changing linker options
to try and get the link to fail at build time but there were some
drawbacks (I don't recall the exact details). Adding
-Werror=missing-declarations may not catch all problems, but it should
help quite a bit (it would have caught this issue) without any real
downside. I'll send a patch.

> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> >  src/ipa/libipa/matrix.cpp | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/src/ipa/libipa/matrix.cpp b/src/ipa/libipa/matrix.cpp
> > index 7f000382d33b..8346f0d34160 100644
> > --- a/src/ipa/libipa/matrix.cpp
> > +++ b/src/ipa/libipa/matrix.cpp
> > @@ -122,8 +122,6 @@ namespace ipa {
> >   * \return Matrix sum of matrices \a m1 and \a m2
> >   */
> > 
> > -} /* namespace ipa */
> > -
> >  #ifndef __DOXYGEN__
> >  /*
> >   * The YAML data shall be a list of numerical values. Its size shall be equal
> > @@ -146,4 +144,6 @@ bool matrixValidateYaml(const YamlObject &obj, unsigned int size)
> >  }
> >  #endif /* __DOXYGEN__ */
> > 
> > +} /* namespace ipa */
> > +
> >  } /* namespace libcamera */

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list