[PATCH v3] test/argparse: change initialization to workaround LTO
fengchengwen
fengchengwen at huawei.com
Mon Jul 7 08:42:28 CEST 2025
Acked-by: Chengwen Feng <fengchengwen at huawei.com>
On 2025/7/1 23:41, Stephen Hemminger wrote:
> When compiled with Link Time Optimization, the existing code
> generated an error, because the compiler was unable to intuit
> that there was space in the flexible array.
>
> In function ‘test_argparse_copy’,
> inlined from ‘test_argparse_init_obj’ at ../app/test/test_argparse.c:108:2,
> inlined from ‘test_argparse_opt_callback_parse_int_of_no_val’ at ../app/test/test_argparse.c:490:8:
> ../app/test/test_argparse.c:96:17: warning: ‘memcpy’ writing 56 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=]
> 96 | memcpy(&dst->args[i], &src->args[i], sizeof(src->args[i]));
>
> Initializing a structure with flexible array is special case
> and compiler expands the structure to fit. But inside the copy
> function it no longer knew that.
>
> The workaround is to put the copy inside the same function
> and use structure assignment. Also macro should be upper case.
>
> Fixes: 6c5c6571601c ("argparse: verify argument config")
> Cc: fengchengwen at huawei.com
>
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
More information about the dev
mailing list