[PATCH 02/15] debug: Increase tst-fortify checks for compiler without __va_arg_pack support

Siddhesh Poyarekar siddhesh@gotplt.org
Thu Dec 21 20:02:04 GMT 2023


On 2023-12-21 13:59, Adhemerval Zanella wrote:
> The fortify wrappers for varargs functions already add fallbacks to
> builtins calls if __va_arg_pack is not supported.

... and in fact helps test the #else part with a different compiler, 
like clang.  BTW, I'm not sure if you've seen this, but Serge Guelton 
used to maintain a _FORTIFY_SOURCE testsuite to do comparative testing 
between clang and gcc:

https://github.com/serge-sans-paille/fortify-test-suite

It would be nice to subsume all of that, if there's additional coverage 
there.

LGTM.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>

> 
> Checked on aarch64, armhf, x86_64, and i686.
> ---
>   debug/tst-fortify.c | 6 +-----
>   1 file changed, 1 insertion(+), 5 deletions(-)
> 
> diff --git a/debug/tst-fortify.c b/debug/tst-fortify.c
> index 20e926751a..5cd9d22feb 100644
> --- a/debug/tst-fortify.c
> +++ b/debug/tst-fortify.c
> @@ -130,7 +130,7 @@ static int num2 = 987654;
>         chk_fail_ok = 0;				\
>         FAIL ();					\
>       }
> -#if __USE_FORTIFY_LEVEL >= 2 && (!defined __cplusplus || defined __va_arg_pack)
> +#if __USE_FORTIFY_LEVEL >= 2
>   # define CHK_FAIL2_START CHK_FAIL_START
>   # define CHK_FAIL2_END CHK_FAIL_END
>   #else
> @@ -419,7 +419,6 @@ do_test (void)
>     stpncpy (buf + 6, "cd", l0 + 5);
>     CHK_FAIL_END
>   
> -# if !defined __cplusplus || defined __va_arg_pack
>     CHK_FAIL_START
>     sprintf (buf + 8, "%d", num1);
>     CHK_FAIL_END
> @@ -439,7 +438,6 @@ do_test (void)
>     CHK_FAIL_START
>     swprintf (wbuf + 8, l0 + 3, L"%d", num1);
>     CHK_FAIL_END
> -# endif
>   
>     memcpy (buf, str1 + 2, 9);
>     CHK_FAIL_START
> @@ -550,7 +548,6 @@ do_test (void)
>         FAIL ();
>     }
>   
> -# if !defined __cplusplus || defined __va_arg_pack
>     CHK_FAIL_START
>     sprintf (a.buf1 + (O + 7), "%d", num1);
>     CHK_FAIL_END
> @@ -562,7 +559,6 @@ do_test (void)
>     CHK_FAIL_START
>     snprintf (a.buf1 + (O + 7), l0 + 3, "%d", num2);
>     CHK_FAIL_END
> -# endif
>   
>     memcpy (a.buf1, str1 + (3 - O), 8 + O);
>     CHK_FAIL_START


More information about the Libc-alpha mailing list