[09/10] test: gstreamer: Include missing sanitizer/asan_interface.h header
diff mbox series

Message ID 20240624192941.22943-10-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • libcamera: Enable -Wmissing-declarations
Related show

Commit Message

Laurent Pinchart June 24, 2024, 7:29 p.m. UTC
The GStreamet tests define a __asan_default_options() function to
influence the behaviour of ASan. The function is declared in
sanitizer/asan_interface.h, but we don't include the header. This will
cause missing declaration warnings when we enable the
-Wmissing-declarations option.

Include the header to fix the issue. It can't be done unconditionally as
not all toolchains provide ASan, so check for its availability at
configuration time.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 test/gstreamer/gstreamer_test.cpp | 6 ++++++
 test/gstreamer/meson.build        | 7 +++++++
 2 files changed, 13 insertions(+)

Comments

Kieran Bingham June 24, 2024, 9:44 p.m. UTC | #1
Quoting Laurent Pinchart (2024-06-24 20:29:40)
> The GStreamet tests define a __asan_default_options() function to

GStreamer

> influence the behaviour of ASan. The function is declared in
> sanitizer/asan_interface.h, but we don't include the header. This will
> cause missing declaration warnings when we enable the
> -Wmissing-declarations option.
> 
> Include the header to fix the issue. It can't be done unconditionally as
> not all toolchains provide ASan, so check for its availability at
> configuration time.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>  test/gstreamer/gstreamer_test.cpp | 6 ++++++
>  test/gstreamer/meson.build        | 7 +++++++
>  2 files changed, 13 insertions(+)
> 
> diff --git a/test/gstreamer/gstreamer_test.cpp b/test/gstreamer/gstreamer_test.cpp
> index e8119b853e7e..a15fef0e0c07 100644
> --- a/test/gstreamer/gstreamer_test.cpp
> +++ b/test/gstreamer/gstreamer_test.cpp
> @@ -9,12 +9,17 @@
>  
>  #include <libcamera/base/utils.h>
>  
> +#if HAVE_ASAN
> +#include <sanitizer/asan_interface.h>
> +#endif
> +
>  #include "gstreamer_test.h"
>  
>  #include "test.h"
>  
>  using namespace std;
>  
> +#if HAVE_ASAN
>  extern "C" {
>  const char *__asan_default_options()
>  {
> @@ -26,6 +31,7 @@ const char *__asan_default_options()
>         return "detect_leaks=false";
>  }
>  }
> +#endif
>  
>  GstreamerTest::GstreamerTest(unsigned int numStreams)
>         : pipeline_(nullptr), libcameraSrc_(nullptr)
> diff --git a/test/gstreamer/meson.build b/test/gstreamer/meson.build
> index f3ba5a23dfba..37ad125ef3fd 100644
> --- a/test/gstreamer/meson.build
> +++ b/test/gstreamer/meson.build
> @@ -11,8 +11,15 @@ gstreamer_tests = [
>  ]
>  gstreamer_dep = dependency('gstreamer-1.0', required : true)
>  
> +gstreamer_test_args = []
> +
> +if asan_enabled

Ha, I just went looking to figure out where in meson this was defined,
but we create it!


Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

> +    gstreamer_test_args += ['-D', 'HAVE_ASAN=1']
> +endif
> +
>  foreach test : gstreamer_tests
>      exe = executable(test['name'], test['sources'], 'gstreamer_test.cpp',
> +                     cpp_args : gstreamer_test_args,
>                       dependencies : [libcamera_private, gstreamer_dep],
>                       link_with : test_libraries,
>                       include_directories : test_includes_internal)
> -- 
> Regards,
> 
> Laurent Pinchart
>

Patch
diff mbox series

diff --git a/test/gstreamer/gstreamer_test.cpp b/test/gstreamer/gstreamer_test.cpp
index e8119b853e7e..a15fef0e0c07 100644
--- a/test/gstreamer/gstreamer_test.cpp
+++ b/test/gstreamer/gstreamer_test.cpp
@@ -9,12 +9,17 @@ 
 
 #include <libcamera/base/utils.h>
 
+#if HAVE_ASAN
+#include <sanitizer/asan_interface.h>
+#endif
+
 #include "gstreamer_test.h"
 
 #include "test.h"
 
 using namespace std;
 
+#if HAVE_ASAN
 extern "C" {
 const char *__asan_default_options()
 {
@@ -26,6 +31,7 @@  const char *__asan_default_options()
 	return "detect_leaks=false";
 }
 }
+#endif
 
 GstreamerTest::GstreamerTest(unsigned int numStreams)
 	: pipeline_(nullptr), libcameraSrc_(nullptr)
diff --git a/test/gstreamer/meson.build b/test/gstreamer/meson.build
index f3ba5a23dfba..37ad125ef3fd 100644
--- a/test/gstreamer/meson.build
+++ b/test/gstreamer/meson.build
@@ -11,8 +11,15 @@  gstreamer_tests = [
 ]
 gstreamer_dep = dependency('gstreamer-1.0', required : true)
 
+gstreamer_test_args = []
+
+if asan_enabled
+    gstreamer_test_args += ['-D', 'HAVE_ASAN=1']
+endif
+
 foreach test : gstreamer_tests
     exe = executable(test['name'], test['sources'], 'gstreamer_test.cpp',
+                     cpp_args : gstreamer_test_args,
                      dependencies : [libcamera_private, gstreamer_dep],
                      link_with : test_libraries,
                      include_directories : test_includes_internal)