From 14cceb2631a47815c29d4b57520d6ffee689a2c1 Mon Sep 17 00:00:00 2001 From: Hubert Badocha Date: Wed, 25 Sep 2024 23:21:20 +0200 Subject: [PATCH] misc: adapt to gcc 14.2 JIRA: RTOS-927 --- _startc.c | 18 ++++++++++-------- hal/ia32/acpi.c | 6 ++++++ riscv-sbi/Makefile | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/_startc.c b/_startc.c index b162365b..55ed04a7 100644 --- a/_startc.c +++ b/_startc.c @@ -33,25 +33,27 @@ void _startc(int argc, char **argv, char **env) size_t i, size; /* Load .fastram.text, .data and .rodata sections */ - if (__ramtext_start != __ramtext_load) + if (&__ramtext_start[0] != &__ramtext_load[0]) { hal_memcpy(__ramtext_start, __ramtext_load, __ramtext_end - __ramtext_start); - - if (__data_start != __data_load) + } + if (&__data_start[0] != &__data_load[0]) { hal_memcpy(__data_start, __data_load, __data_end - __data_start); - - if (__rodata_start != __rodata_load) + } + if (&__rodata_start[0] != &__rodata_load[0]) { hal_memcpy(__rodata_start, __rodata_load, __rodata_end - __rodata_start); - + } /* Clear the .bss section */ hal_memset(__bss_start, 0, __bss_end - __bss_start); size = __init_array_end - __init_array_start; - for (i = 0; i < size; i++) + for (i = 0; i < size; i++) { (*__init_array_start[i])(); + } main(); size = __fini_array_end - __fini_array_start; - for (i = size; i > 0; i--) + for (i = size; i > 0; i--) { (*__fini_array_start[i - 1])(); + } } diff --git a/hal/ia32/acpi.c b/hal/ia32/acpi.c index a8c06e6c..b4cab00d 100644 --- a/hal/ia32/acpi.c +++ b/hal/ia32/acpi.c @@ -135,7 +135,13 @@ static rsdp_t *_hal_acpiLookForRsdp(hal_syspage_t *hs, void *start, void *end) static rsdp_t *_hal_acpiFindRsdp(hal_syspage_t *hs) { /* Search EBDA */ + + /* FIXME: pragmas are needed as a result of a bug in GCC -Warray-bounds */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Warray-bounds" unsigned int ebda = ((*(u16 *)0x40eu) << 4) & ~(SIZE_PAGE - 1); +#pragma GCC diagnostic pop + rsdp_t *result; if ((ebda < 0x00080000u) || (ebda > 0x0009ffffu)) { ebda = 0x00080000u; diff --git a/riscv-sbi/Makefile b/riscv-sbi/Makefile index bdaeb498..c38ec2ed 100644 --- a/riscv-sbi/Makefile +++ b/riscv-sbi/Makefile @@ -25,7 +25,7 @@ endif LDGEN ?= $(CC) -CFLAGS += -I. -Iinclude +CFLAGS += -I. -Iinclude -ffreestanding CPPFLAGS += -DPAYLOAD_PATH=\"$(PAYLOAD_PATH)\" ifneq ($(FDT_PATH),)