mirror of
https://github.com/espressif/esp-idf
synced 2025-03-09 17:19:09 -04:00
Merge branch 'fix/coredump-gcc-analyzer-warnings_v5.4' into 'release/v5.4'
fix(system): fix GCC-14 analyzer warnings for coredump (v5.4) See merge request espressif/esp-idf!35521
This commit is contained in:
commit
012de83f3c
@ -301,7 +301,7 @@ void esp_panic_handler(panic_info_t *info)
|
||||
char *panic_reason_str = NULL;
|
||||
if (info->pseudo_excause) {
|
||||
panic_reason_str = (char *)info->reason;
|
||||
} else if (g_panic_abort && strlen(g_panic_abort_details)) {
|
||||
} else if (g_panic_abort) {
|
||||
panic_reason_str = g_panic_abort_details;
|
||||
}
|
||||
if (panic_reason_str) {
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "sdkconfig.h"
|
||||
#include "esp_system.h"
|
||||
#include "esp_private/system_internal.h"
|
||||
#include "esp_macros.h"
|
||||
#include "esp_attr.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_rom_sys.h"
|
||||
@ -114,7 +115,5 @@ void IRAM_ATTR esp_restart_noos(void)
|
||||
|
||||
// Reset PRO CPU
|
||||
esp_rom_software_reset_cpu(0);
|
||||
while (true) {
|
||||
;
|
||||
}
|
||||
ESP_INFINITE_LOOP();
|
||||
}
|
||||
|
@ -209,7 +209,7 @@ static int elf_write_note_header(core_dump_elf_t *self,
|
||||
elf_note note_hdr = { 0 };
|
||||
|
||||
memcpy(name_buffer, name, name_len);
|
||||
note_hdr.n_namesz = ALIGN_UP(name_len, 4);
|
||||
note_hdr.n_namesz = ALIGN_UP(name_len + 1, 4);
|
||||
note_hdr.n_descsz = data_sz;
|
||||
note_hdr.n_type = type;
|
||||
// write note header
|
||||
@ -242,7 +242,7 @@ static int elf_write_note(core_dump_elf_t *self,
|
||||
// write segment data during second pass
|
||||
if (self->elf_stage == ELF_STAGE_PLACE_DATA) {
|
||||
ELF_CHECK_ERR(data, ELF_PROC_ERR_OTHER, "Invalid data pointer %x.", (uint32_t)data);
|
||||
err = elf_write_note_header(self, name, name_len, data_sz, type);
|
||||
err = elf_write_note_header(self, name, strlen(name), data_sz, type);
|
||||
if (err != ESP_OK) {
|
||||
return err;
|
||||
}
|
||||
@ -688,7 +688,7 @@ static void elf_write_core_dump_note_cb(void *opaque, const char *data)
|
||||
|
||||
static int elf_add_wdt_panic_details(core_dump_elf_t *self)
|
||||
{
|
||||
uint32_t name_len = sizeof(ELF_ESP_CORE_DUMP_PANIC_DETAILS_NOTE_NAME);
|
||||
uint32_t name_len = sizeof(ELF_ESP_CORE_DUMP_PANIC_DETAILS_NOTE_NAME) - 1;
|
||||
core_dump_elf_opaque_t param = {
|
||||
.self = self,
|
||||
.total_size = 0,
|
||||
|
@ -185,7 +185,7 @@ static esp_err_t esp_core_dump_flash_write_data(core_dump_write_data_t* wr_data,
|
||||
wr_data->off += COREDUMP_CACHE_SIZE;
|
||||
|
||||
/* Update checksum with the newly written data on the flash. */
|
||||
esp_core_dump_checksum_update(&wr_data->checksum_ctx, &wr_data->cached_data, COREDUMP_CACHE_SIZE);
|
||||
esp_core_dump_checksum_update(&wr_data->checksum_ctx, wr_data->cached_data, COREDUMP_CACHE_SIZE);
|
||||
|
||||
/* Reset cache from the next use. */
|
||||
wr_data->cached_bytes = 0;
|
||||
|
@ -1076,11 +1076,11 @@ def test_tcb_corrupted(dut: PanicTestDut, target: str, config: str, test_func_na
|
||||
dut.run_test_func(test_func_name)
|
||||
if dut.is_xtensa:
|
||||
dut.expect_gme('LoadProhibited')
|
||||
dut.expect_reg_dump(0)
|
||||
dut.expect_reg_dump()
|
||||
dut.expect_backtrace()
|
||||
else:
|
||||
dut.expect_gme('Load access fault')
|
||||
dut.expect_reg_dump(0)
|
||||
dut.expect_reg_dump()
|
||||
dut.expect_stack_dump()
|
||||
|
||||
dut.expect_elf_sha256()
|
||||
|
@ -96,9 +96,13 @@ class PanicTestDut(IdfDut):
|
||||
"""Expect method for Guru Meditation Errors"""
|
||||
self.expect_exact(f"Guru Meditation Error: Core 0 panic'ed ({reason})")
|
||||
|
||||
def expect_reg_dump(self, core: int = 0) -> None:
|
||||
"""Expect method for the register dump"""
|
||||
self.expect(r'Core\s+%d register dump:' % core)
|
||||
def expect_reg_dump(self, core: Optional[int] = None) -> None:
|
||||
if core is None:
|
||||
# Match any core num
|
||||
self.expect(r'Core\s+\d+\s+register dump:')
|
||||
else:
|
||||
# Match the exact core num provided
|
||||
self.expect(r'Core\s+%d\s+register dump:' % core)
|
||||
|
||||
def expect_cpu_reset(self) -> None:
|
||||
# no digital system reset for panic handling restarts (see IDF-7255)
|
||||
|
Loading…
x
Reference in New Issue
Block a user