On 06.02.24 16:47, 'Earl Chew' via EFI Boot Guard wrote:
> Use AX_VALGRIND_CHECK in configure.ac to enable support
> for check-valgrind target that uses valgrind when running
> unit tests.
> 
> Signed-off-by: Earl Chew <earl_c...@yahoo.com>
> ---
>  .github/workflows/main.yaml            |  3 ++-
>  Makefile.am                            |  2 +-
>  configure.ac                           |  6 ++++++
>  tools/tests/Makefile.am                |  2 ++
>  tools/tests/test_ebgenv_api_internal.c | 24 +++++++++++++++---------
>  5 files changed, 26 insertions(+), 11 deletions(-)
> 
> diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml
> index 2cce035..5c589d8 100644
> --- a/.github/workflows/main.yaml
> +++ b/.github/workflows/main.yaml
> @@ -44,7 +44,7 @@ jobs:
>            sudo apt-get update
>            sudo apt-get install --no-install-recommends \
>                autoconf-archive gcc-multilib gnu-efi libpci-dev check \
> -              bats libarchive-zip-perl
> +              bats libarchive-zip-perl valgrind
>        - name: Install i386 dependencies
>          if: ${{ matrix.target == 'i386' }}
>          run: |
> @@ -124,6 +124,7 @@ jobs:
>            pushd build >/dev/null
>            ../configure
>            make check -j $(nproc)
> +          make check-valgrind -j $(nproc)

This target is not generated in my setup. Configure reports

...
checking for valgrind... valgrind
checking for Valgrind tool memcheck... yes
...

What am I missing?

Jan

>            sudo make install
>            time bats --tap ../tests
>            popd >/dev/null
> diff --git a/Makefile.am b/Makefile.am
> index 3b05e7c..68c0f59 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -15,7 +15,7 @@
>  # Copyright (C) 2013 Karel Zak <k...@redhat.com>
>  #
>  
> -ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
> +ACLOCAL_AMFLAGS = -I m4 --install ${ACLOCAL_FLAGS}
>  AM_MAKEFLAGS = --no-print-directory
>  
>  efibootguarddir = $(libdir)/efibootguard
> diff --git a/configure.ac b/configure.ac
> index 1738968..afff539 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -235,6 +235,12 @@ AS_IF([test "x$enable_completion" != "xno"],
>        ])
>  AM_CONDITIONAL([COMPLETION], [test "x$enable_completion" != "xno"])
>  
> +AX_VALGRIND_DFLT(memcheck, on)
> +AX_VALGRIND_DFLT(helgrind, off)
> +AX_VALGRIND_DFLT(drd, off)
> +AX_VALGRIND_DFLT(sgcheck, off)
> +AX_VALGRIND_CHECK
> +
>  # 
> ------------------------------------------------------------------------------
>  AC_CONFIG_FILES([
>       Makefile
> diff --git a/tools/tests/Makefile.am b/tools/tests/Makefile.am
> index 58fd26f..97d4367 100644
> --- a/tools/tests/Makefile.am
> +++ b/tools/tests/Makefile.am
> @@ -108,3 +108,5 @@ test_fat_SOURCES = test_fat.c $(SRC_TEST_COMMON)
>  test_fat_LDADD = $(FAT_TESTLIB) $(LIBCHECK_LIBS)
>  
>  TESTS = $(check_PROGRAMS)
> +
> +@VALGRIND_CHECK_RULES@
> diff --git a/tools/tests/test_ebgenv_api_internal.c 
> b/tools/tests/test_ebgenv_api_internal.c
> index 6a3d816..08d690d 100644
> --- a/tools/tests/test_ebgenv_api_internal.c
> +++ b/tools/tests/test_ebgenv_api_internal.c
> @@ -165,12 +165,14 @@ END_TEST
>  
>  START_TEST(ebgenv_api_internal_bgenv_write)
>  {
> +     bool err = true;
> +
>       bool res;
>       BGENV *dummy_env;
>  
>       dummy_env = calloc(1, sizeof(BGENV));
>       if (!dummy_env) {
> -             goto bgew_error;
> +             goto finally;
>       }
>  
>       RESET_FAKE(write_env);
> @@ -194,25 +196,29 @@ START_TEST(ebgenv_api_internal_bgenv_write)
>        */
>       dummy_env->desc = calloc(1, sizeof(CONFIG_PART));
>       if (!dummy_env->desc) {
> -             goto bgew_error;
> +             goto finally;
>       }
>  
>       dummy_env->data = calloc(1, sizeof(BG_ENVDATA));
>       if (!dummy_env->data) {
> -             goto bgew_error;
> +             goto finally;
>       }
>  
>       res = bgenv_write(dummy_env);
>       ck_assert(write_env_fake.call_count == 1);
>       ck_assert(res == true);
>  
> -     return;
> +     err = false;
> +
> +finally:
> +     if (dummy_env) {
> +             free(dummy_env->data);
> +             free(dummy_env->desc);
> +             free(dummy_env);
> +     }
>  
> -bgew_error:
> -     free(dummy_env->data);
> -     free(dummy_env->desc);
> -     free(dummy_env);
> -     exit(errno);
> +     if (err)
> +             ck_abort();
>  }
>  END_TEST
>  

-- 
Siemens AG, Technology
Linux Expert Center

-- 
You received this message because you are subscribed to the Google Groups "EFI 
Boot Guard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to efibootguard-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/efibootguard-dev/eee70a90-81f3-4851-b25f-3a7fe67f54e3%40siemens.com.

Reply via email to