Просмотр исходного кода

bootloader_support: fix stringop-overflow warning with `PERF` compiler optimization

This commit fixes build issue because of function `bootloader_common_reset_rtc_retain_mem`
getting inlined with compiler optimization level set to `PERF` (-O2).

Build failure log:
-----------------

In function 'bootloader_common_reset_rtc_retain_mem',
    inlined from 'bootloader_common_update_rtc_retain_mem' at /h/esp-idf/components/bootloader_support/src/bootloader_common_loader.c:183:13:
/h/esp-idf/components/bootloader_support/src/bootloader_common_loader.c:159:5: error: 'memset' writing 16 bytes into a region of size 0 overflows the destination [-Werror=stringop-overflow=]
  159 |     memset(rtc_retain_mem, 0, sizeof(rtc_retain_mem_t));
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Mahavir Jain 3 лет назад
Родитель
Сommit
4aaf02b093

+ 1 - 1
components/bootloader_support/src/bootloader_common_loader.c

@@ -151,7 +151,7 @@ static void update_rtc_retain_mem_crc(void)
     rtc_retain_mem->crc = esp_rom_crc32_le(UINT32_MAX, (uint8_t*)rtc_retain_mem, rtc_retain_mem_size());
 }
 
-void bootloader_common_reset_rtc_retain_mem(void)
+NOINLINE_ATTR void bootloader_common_reset_rtc_retain_mem(void)
 {
     #pragma GCC diagnostic push
     #pragma GCC diagnostic ignored "-Wstringop-overflow"

+ 1 - 0
tools/test_apps/system/bootloader_sections/sdkconfig.ci.rtc_retain

@@ -1 +1,2 @@
 CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP=y
+CONFIG_COMPILER_OPTIMIZATION_PERF=y