On 28/03/2022 10.47, [email protected] wrote:
From: Marc-André Lureau <[email protected]>../hw/arm/digic.c: In function ‘digic_init’: ../hw/arm/digic.c:45:54: error: ‘%d’ directive output may be truncated writing between 1 and 11 bytes into a region of size 5 [-Werror=format-truncation=] 45 | snprintf(name, DIGIC_TIMER_NAME_MLEN, "timer[%d]", i); | ^~ Signed-off-by: Marc-André Lureau <[email protected]> --- hw/arm/digic.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hw/arm/digic.c b/hw/arm/digic.c index 614232165cdc..6df554797734 100644 --- a/hw/arm/digic.c +++ b/hw/arm/digic.c @@ -39,10 +39,7 @@ static void digic_init(Object *obj) object_initialize_child(obj, "cpu", &s->cpu, ARM_CPU_TYPE_NAME("arm946"));for (i = 0; i < DIGIC4_NB_TIMERS; i++) {-#define DIGIC_TIMER_NAME_MLEN 11 - char name[DIGIC_TIMER_NAME_MLEN]; - - snprintf(name, DIGIC_TIMER_NAME_MLEN, "timer[%d]", i); + g_autofree char *name = g_strdup_printf("timer[%d]", i); object_initialize_child(obj, name, &s->timer[i], TYPE_DIGIC_TIMER); }
DIGIC4_NB_TIMERS is 3 ... so the compiler should also be able to see that the string fits fine into the name[] array here. That really sounds like your GCC 12.0 is buggy. Please open a compiler bug ticket.
Thomas
