Răsfoiți Sursa

soc: fix backtraces containing ROM functions

esp_ptr_executable would return false for pointers to ROM, which would
interrupt the backtrace. This makes ROM ranges recognized as
executable.
Ivan Grokhotkov 6 ani în urmă
părinte
comite
d9534b3d6a

+ 1 - 1
components/soc/esp32/include/soc/soc.h

@@ -240,7 +240,7 @@
 #define SOC_IROM_LOW            0x400D0000
 #define SOC_IROM_HIGH           0x40400000
 #define SOC_IROM_MASK_LOW       0x40000000
-#define SOC_IROM_MASK_HIGH      0x40070000
+#define SOC_IROM_MASK_HIGH      0x40064F00
 #define SOC_CACHE_PRO_LOW       0x40070000
 #define SOC_CACHE_PRO_HIGH      0x40078000
 #define SOC_CACHE_APP_LOW       0x40078000

+ 2 - 0
components/soc/esp32s2beta/include/soc/soc.h

@@ -184,6 +184,8 @@
 #define SOC_DROM_HIGH   0x3F400000
 #define SOC_IROM_LOW    0x40080000
 #define SOC_IROM_HIGH   0x40c00000
+#define SOC_IROM_MASK_LOW  0x40000000
+#define SOC_IROM_MASK_HIGH 0x4001A100
 #define SOC_IRAM_LOW    0x40020000
 #define SOC_IRAM_HIGH   0x40070000
 #define SOC_DRAM_LOW    0x3FFB0000

+ 1 - 0
components/soc/include/soc/soc_memory_layout.h

@@ -155,6 +155,7 @@ inline static bool IRAM_ATTR esp_ptr_executable(const void *p)
     intptr_t ip = (intptr_t) p;
     return (ip >= SOC_IROM_LOW && ip < SOC_IROM_HIGH)
         || (ip >= SOC_IRAM_LOW && ip < SOC_IRAM_HIGH)
+        || (ip >= SOC_IROM_MASK_LOW && ip < SOC_IROM_MASK_HIGH)
         || (ip >= SOC_RTC_IRAM_LOW && ip < SOC_RTC_IRAM_HIGH);
 }