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