exynos4210_gic: Suppress gcc9 format-truncation warnings
exynos4210_gic_realize() prints the number of cpus into some temporary buffers, but it only allows 3 bytes space for it. That's plenty: existing machines will only ever set this value to EXYNOS4210_NCPUS (2). But the compiler can't always figure that out, so some[*] gcc9 versions emit -Wformat-truncation warnings. We can fix that by hinting the constraint to the compiler with a suitably placed assert(). [*] The bizarre thing here, is that I've long gotten these warnings compiling in a 32-bit x86 container as host - Fedora 30 with gcc-9.2.1-1.fc30.i686 - but it compiles just fine on my normal x86_64 host - Fedora 30 with and gcc-9.2.1-1.fc30.x86_64. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> [PMM: deleted stray blank line] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
cf7beda507
commit
1625073289
@ -293,6 +293,7 @@ static void exynos4210_gic_realize(DeviceState *dev, Error **errp)
|
||||
char cpu_alias_name[sizeof(cpu_prefix) + 3];
|
||||
char dist_alias_name[sizeof(cpu_prefix) + 3];
|
||||
SysBusDevice *gicbusdev;
|
||||
uint32_t n = s->num_cpu;
|
||||
uint32_t i;
|
||||
|
||||
s->gic = qdev_create(NULL, "arm_gic");
|
||||
@ -313,7 +314,13 @@ static void exynos4210_gic_realize(DeviceState *dev, Error **errp)
|
||||
memory_region_init(&s->dist_container, obj, "exynos4210-dist-container",
|
||||
EXYNOS4210_EXT_GIC_DIST_REGION_SIZE);
|
||||
|
||||
for (i = 0; i < s->num_cpu; i++) {
|
||||
/*
|
||||
* This clues in gcc that our on-stack buffers do, in fact have
|
||||
* enough room for the cpu numbers. gcc 9.2.1 on 32-bit x86
|
||||
* doesn't figure this out, otherwise and gives spurious warnings.
|
||||
*/
|
||||
assert(n <= EXYNOS4210_NCPUS);
|
||||
for (i = 0; i < n; i++) {
|
||||
/* Map CPU interface per SMP Core */
|
||||
sprintf(cpu_alias_name, "%s%x", cpu_prefix, i);
|
||||
memory_region_init_alias(&s->cpu_alias[i], obj,
|
||||
|
Loading…
Reference in New Issue
Block a user