Commit Graph

26 Commits

Author SHA1 Message Date
Jakob Hasse aabdb2c7a1 [system]: Made longjmp save for context switch
* Patched longjmp to be context-switch safe
  longjmp modifies the windowbase and windowstart
  registers, which isn't safe if a context switch
  occurs during the modification. After a context
  switch, windowstart and windowbase will be
  different, leading to a wrongly set windowstart
  bit due to longjmp writing it based on the
  windowbase before the context switch. This
  corrupts the registers at the next window
  overflow reaching that wrongly set bit.

  The solution is to disable interrupts during
  this code. It is only 6 instructions long,
  the impact shouldn't be significant.

  The fix is implemented as a wrapper which
  replaces the original first instructions of
  longjmp which are buggy. Then, it jumps back
  to execute the rest of the original longjmp
  function.

  Added a comparably reliable test to the
  test apps.
2021-07-21 09:48:48 +08:00
Angus Gratton 23a0ecedbf Merge branch 'feature/prevent_unwind_code_linking_4.2' into 'release/v4.2'
[C++]: prevent unwind code linking (backport 4.2)

See merge request espressif/esp-idf!13801
2021-06-22 04:48:45 +00:00
Ivan Grokhotkov 2a81167470 tests: gdb_loadable_elf: adjust the breakpoint location for ESP32 ECO3
The previous location was the return from the first ets_printf call
that prints ROM sign-on message. Since the main function was patched
in ECO3, the new address no longer works — there is no instruction at
0x40007901 in ECO3 ROM. This could be solved by setting two
breakpoints (one would work for ECO <=2, the other for ECO3), but we
would need to remove the unused breakpoint later.
Fix this by setting the breakpoint at ets_printf. This means that when
debugging a loadable ELF the ROM sign-on message will no longer be
shown, but this doesn't seem to be an issue.
2021-06-18 15:09:47 +02:00
Jakob Hasse dd08575c29 [C++]: wrapper functions around unwind code
* Replaced all C++ exception related
  functions with wrappers if -fno-exception
  is used. This prevents linking of the
  corresponding code in libgcc. The code
  size will decrease by around 7-9 KB when
  building with -fno-exception.
* added no except test app

Closes https://github.com/espressif/esp-idf/pull/5380
Closes https://github.com/espressif/esp-idf/issues/5363
Closes https://github.com/espressif/esp-idf/issues/5224
Closes IDFGH-3153
Closes IDF-2577
2021-06-01 15:09:46 +08:00
Ivan Grokhotkov a82d0cf9f1 Merge branch 'bugfix/panic_instr_fetch_prohibited_v4.2' into 'release/v4.2'
panic: don't interrupt the backtrace for InstrFetchProhibited exceptions (v4.2)

See merge request espressif/esp-idf!10293
2020-12-16 04:09:37 +08:00
Ivan Grokhotkov 4b5146a4ad test_apps: add build test for !CONFIG_SPI_FLASH_YIELD_DURING_ERASE 2020-10-14 02:42:46 +00:00
Ivan Grokhotkov 7092be7422 test_apps: add coredump tests for int_wdt 2020-10-14 02:42:46 +00:00
Renz Bagaporo d41f856576 cmake: fix C identifier generation from embedded file 2020-09-28 21:08:56 +08:00
Angus Gratton e610df5870 Merge branch 'bugfix/esp32s2_panic_handler_iram_v4.2' into 'release/v4.2'
esp_common: allow placing panic handler into IRAM on ESP32-S2 (v4.2)

See merge request espressif/esp-idf!10295
2020-09-25 07:40:06 +08:00
Ivan Grokhotkov 8749c46284 esp_common: allow placing panic handler into IRAM on ESP32-S2 2020-09-18 15:35:48 +00:00
Ivan Grokhotkov acfe648367 ci: add startup test with -O2 optimization level 2020-09-04 21:33:49 +02:00
Ivan Grokhotkov c3d2942675 panic: skip over the first invalid PC in case of InstrFetchProhibited
InstrFetchProhibited usually occurs because of a jump to an invalid
pointer. In this case, PC in the exception frame is the address of
the jump destination. 'esp_ptr_executable' check in print_backtrace
function recognizes the first frame as invalid, and the backtrace is
interrupted. This prevents the user from finding the location where
the invalid pointer is dereferenced.

Bypass the 'esp_ptr_executable' check if the exception cause is
InstrFetchProhibited. Update the test case to no longer ignore this
issue.
2020-09-04 20:45:38 +02:00
Ivan Grokhotkov 418b68a197 test_apps: add panic test 2020-05-12 22:27:06 +02:00
Roland Dobai 79e58eff8f Add JTAG related example tests 2020-05-05 11:08:33 +02:00
Ivan Grokhotkov 8a4cc99d90 test_apps: don't download partition table in loadable elf test 2020-05-05 09:45:51 +02:00
Ivan Grokhotkov 5e95bc1d21 test_apps: make it possible to run gdb_loadable_elf app locally 2020-05-04 19:10:06 +02:00
Roland Dobai 58bbd99b9c Fix missed deprecated Kconfig option caused by tabs in sdkconfig.rename 2020-04-30 18:23:21 +02:00
Roland Dobai 2d709c6384 Migrate "loadable elf" test from hello_world example to test_apps 2020-04-29 09:17:28 +02:00
Ivan Grokhotkov 7f18576e23 Merge branch 'bugfix/inline_get_cpu_id_hal_func' into 'master'
soc: put hal function to get core id in IRAM

See merge request espressif/esp-idf!8107
2020-03-26 18:14:51 +08:00
Renz Bagaporo b2fd9dd51c ci: add basic startup test for when CONFIG_COMPILER_OPTIMIZATION_NONE=y 2020-03-25 10:00:39 +08:00
Ivan Grokhotkov 2548a3e528 ci: add startup tests with VFS disabled 2020-03-20 14:07:10 +01:00
ChenJianxing 5019419496 esp32s2: fix when enable multi phy init data bin compile err. 2020-03-11 18:03:21 +08:00
ronghulin ffd8c26780 feature: support multiple PHY init data 2020-03-05 16:14:00 +08:00
Ivan Grokhotkov 240ec7444f ci: add build test for TRAX feature 2020-02-19 14:02:35 +01:00
Ivan Grokhotkov 1cbb2287be ci: add build test for custom console UART pins 2020-02-19 08:13:23 +01:00
David Cermak 30c6e27bcc CI: document test-apps feature, updated test-apps structure 2020-02-06 16:46:41 +00:00