Merge branch 'feature/crosstool_backport' into 'master'

Backport of work of gcc8 toolchain to v3

See merge request idf/esp-idf!3154
This commit is contained in:
Ivan Grokhotkov 2018-09-21 14:07:41 +08:00
commit 2e6e87816c
43 changed files with 987 additions and 141 deletions

View file

@ -32,6 +32,9 @@ variables:
APPLY_BOT_FILTER_SCRIPT: "$CI_PROJECT_DIR/tools/ci/apply_bot_filter.py"
CHECKOUT_REF_SCRIPT: "$CI_PROJECT_DIR/tools/ci/checkout_project_ref.py"
# Docker images
BOT_DOCKER_IMAGE_TAG: ":latest"
# When 'fetch' strategy is used, Gitlab removes untracked files before checking out
# new revision. However if the new revision doesn't include some of the submodules
# which were present in the old revision, such submodule directories would not be
@ -644,7 +647,7 @@ check_submodule_sync:
assign_test:
tags:
- assign_test
image: $CI_DOCKER_REGISTRY/ubuntu-test-env
image: $CI_DOCKER_REGISTRY/ubuntu-test-env$BOT_DOCKER_IMAGE_TAG
stage: assign_test
# gitlab ci do not support match job with RegEx or wildcard now in dependencies.
# we have a lot build example jobs. now we don't use dependencies, just download all artificats of build stage.
@ -810,6 +813,7 @@ example_test_001_01:
example_test_002_01:
<<: *example_test_template
image: $CI_DOCKER_REGISTRY/ubuntu-test-env$BOT_DOCKER_IMAGE_TAG
tags:
- ESP32
- Example_ShieldBox

View file

@ -176,6 +176,13 @@ config WARN_WRITE_STRINGS
For C++, this warns about the deprecated conversion from string
literals to ``char *``.
config DISABLE_GCC8_WARNINGS
bool "Disable new warnings introduced in GCC 6 - 8"
default "n"
help
Enable this option if using GCC 6 or newer, and wanting to disable warnings which don't appear with GCC 5.
endmenu # Compiler Options
menu "Component config"

View file

@ -31,10 +31,13 @@
#include "esp_log.h"
const static char *TAG = "esp_gcov_rtio";
static void (*s_gcov_exit)(void);
#if GCC_NOT_5_2_0
void __gcov_dump(void);
void __gcov_reset(void);
#else
/* The next code for old GCC */
/* TODO: remove code extracted from GCC when IDF toolchain will be updated */
/*=============== GCC CODE START ====================*/
static void (*s_gcov_exit)(void);
/* Root of a program/shared-object state */
struct gcov_root
{
@ -53,27 +56,36 @@ static void esp_gcov_reset_status(void)
__gcov_root.dumped = 0;
__gcov_root.run_counted = 0;
}
/*=============== GCC CODE END ====================*/
#endif
static int esp_dbg_stub_gcov_dump_do(void)
{
int ret = ESP_OK;
ESP_EARLY_LOGV(TAG, "Alloc apptrace down buf %d bytes", ESP_GCOV_DOWN_BUF_SIZE);
void *down_buf = malloc(ESP_GCOV_DOWN_BUF_SIZE);
if (down_buf == NULL) {
ESP_EARLY_LOGE(TAG, "Could not allocate memory for the buffer");
return ESP_ERR_NO_MEM;
}
ESP_EARLY_LOGV(TAG, "Config apptrace down buf");
esp_apptrace_down_buffer_config(down_buf, ESP_GCOV_DOWN_BUF_SIZE);
ESP_EARLY_LOGV(TAG, "Dump data...");
#if GCC_NOT_5_2_0
__gcov_dump();
// reset dump status to allow incremental data accumulation
__gcov_reset();
#else
ESP_EARLY_LOGV(TAG, "Check for dump handler %p", s_gcov_exit);
if (s_gcov_exit) {
ESP_EARLY_LOGV(TAG, "Alloc apptrace down buf %d bytes", ESP_GCOV_DOWN_BUF_SIZE);
void *down_buf = malloc(ESP_GCOV_DOWN_BUF_SIZE);
if (down_buf == NULL) {
ESP_EARLY_LOGE(TAG, "Failed to send files transfer stop cmd (%d)!", ret);
return ESP_ERR_NO_MEM;
}
ESP_EARLY_LOGV(TAG, "Config apptrace down buf");
esp_apptrace_down_buffer_config(down_buf, ESP_GCOV_DOWN_BUF_SIZE);
ESP_EARLY_LOGV(TAG, "Dump data... %p", s_gcov_exit);
s_gcov_exit();
ESP_EARLY_LOGV(TAG, "Free apptrace down buf");
free(down_buf);
// reset dump status to allow incremental data accumulation
esp_gcov_reset_status();
}
#endif
ESP_EARLY_LOGV(TAG, "Free apptrace down buf");
free(down_buf);
ESP_EARLY_LOGV(TAG, "Finish file transfer session");
ret = esp_apptrace_fstop(ESP_APPTRACE_DEST_TRAX);
if (ret != ESP_OK) {
@ -91,24 +103,26 @@ static int esp_dbg_stub_gcov_dump_do(void)
*/
static int esp_dbg_stub_gcov_entry(void)
{
#if GCC_NOT_5_2_0
return esp_dbg_stub_gcov_dump_do();
#else
int ret = ESP_OK;
// disable IRQs on this CPU, other CPU is halted by OpenOCD
unsigned irq_state = portENTER_CRITICAL_NESTED();
ret = esp_dbg_stub_gcov_dump_do();
// reset dump status to allow incremental data accumulation
esp_gcov_reset_status();
portEXIT_CRITICAL_NESTED(irq_state);
return ret;
#endif
}
void esp_gcov_dump()
{
#if CONFIG_FREERTOS_UNICORE == 0
// disable IRQs on this CPU, other CPU is halted by OpenOCD
unsigned irq_state = portENTER_CRITICAL_NESTED();
#if !CONFIG_FREERTOS_UNICORE
int other_core = xPortGetCoreID() ? 0 : 1;
esp_cpu_stall(other_core);
#endif
while (!esp_apptrace_host_is_connected(ESP_APPTRACE_DEST_TRAX)) {
// to avoid complains that task watchdog got triggered for other tasks
TIMERG0.wdt_wprotect=TIMG_WDT_WKEY_VALUE;
@ -121,24 +135,27 @@ void esp_gcov_dump()
}
esp_dbg_stub_gcov_dump_do();
// reset dump status to allow incremental data accumulation
esp_gcov_reset_status();
#if CONFIG_FREERTOS_UNICORE == 0
#if !CONFIG_FREERTOS_UNICORE
esp_cpu_unstall(other_core);
#endif
portEXIT_CRITICAL_NESTED(irq_state);
}
int gcov_rtio_atexit(void (*function)(void))
int gcov_rtio_atexit(void (*function)(void) __attribute__ ((unused)))
{
#if GCC_NOT_5_2_0
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
#else
ESP_EARLY_LOGV(TAG, "%s %p", __FUNCTION__, function);
s_gcov_exit = function;
#endif
esp_dbg_stub_entry_set(ESP_DBG_STUB_ENTRY_GCOV, (uint32_t)&esp_dbg_stub_gcov_entry);
return 0;
}
void *gcov_rtio_fopen(const char *path, const char *mode)
{
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
ESP_EARLY_LOGV(TAG, "%s '%s' '%s'", __FUNCTION__, path, mode);
return esp_apptrace_fopen(ESP_APPTRACE_DEST_TRAX, path, mode);
}
@ -150,8 +167,10 @@ int gcov_rtio_fclose(void *stream)
size_t gcov_rtio_fread(void *ptr, size_t size, size_t nmemb, void *stream)
{
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
return esp_apptrace_fread(ESP_APPTRACE_DEST_TRAX, ptr, size, nmemb, stream);
ESP_EARLY_LOGV(TAG, "%s read %u", __FUNCTION__, size*nmemb);
size_t sz = esp_apptrace_fread(ESP_APPTRACE_DEST_TRAX, ptr, size, nmemb, stream);
ESP_EARLY_LOGV(TAG, "%s actually read %u", __FUNCTION__, sz);
return sz;
}
size_t gcov_rtio_fwrite(const void *ptr, size_t size, size_t nmemb, void *stream)
@ -162,17 +181,15 @@ size_t gcov_rtio_fwrite(const void *ptr, size_t size, size_t nmemb, void *stream
int gcov_rtio_fseek(void *stream, long offset, int whence)
{
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
int ret = esp_apptrace_fseek(ESP_APPTRACE_DEST_TRAX, stream, offset, whence);
ESP_EARLY_LOGV(TAG, "%s EXIT", __FUNCTION__);
ESP_EARLY_LOGV(TAG, "%s(%p %ld %d) = %d", __FUNCTION__, stream, offset, whence, ret);
return ret;
}
long gcov_rtio_ftell(void *stream)
{
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
long ret = esp_apptrace_ftell(ESP_APPTRACE_DEST_TRAX, stream);
ESP_EARLY_LOGV(TAG, "%s", __FUNCTION__);
ESP_EARLY_LOGV(TAG, "%s(%p) = %ld", __FUNCTION__, stream, ret);
return ret;
}
#endif

View file

@ -277,6 +277,10 @@ set(COMPONENT_PRIV_REQUIRES nvs_flash)
register_component()
if(CONFIG_BT_ENABLED)
if(GCC_NOT_5_2_0)
component_compile_options(-Wno-implicit-fallthrough -Wno-unused-const-variable)
endif()
target_link_libraries(bt "-L${CMAKE_CURRENT_LIST_DIR}/lib")
target_link_libraries(bt btdm_app)
endif()

View file

@ -97,13 +97,13 @@ list_node_t *list_back_node(const list_t *list) {
}
bool list_insert_after(list_t *list, list_node_t *prev_node, void *data) {
assert(list != NULL);
assert(prev_node != NULL);
assert(data != NULL);
list_node_t *node = (list_node_t *) osi_calloc(sizeof(list_node_t));
if (!node)
return false;
assert(list != NULL);
assert(prev_node != NULL);
assert(data != NULL);
list_node_t *node = (list_node_t *)osi_calloc(sizeof(list_node_t));
if (!node) {
return false;
}
node->next = prev_node->next;
node->data = data;
prev_node->next = node;

View file

@ -17,6 +17,11 @@ COMPONENT_ADD_LINKER_DEPS := $(patsubst %,$(COMPONENT_PATH)/lib/lib%.a,$(LIBS))
COMPONENT_SUBMODULES += lib
ifeq ($(GCC_NOT_5_2_0), 1)
# TODO: annotate fallthroughs in Bluedroid code with comments
CFLAGS += -Wno-implicit-fallthrough
endif
endif
@ -114,4 +119,12 @@ COMPONENT_SRCDIRS += bluedroid/bta/dm \
bluedroid/utils \
bluedroid/api \
bluedroid
ifeq ($(GCC_NOT_5_2_0), 1)
bluedroid/bta/sdp/bta_sdp_act.o: CFLAGS += -Wno-unused-const-variable
bluedroid/btc/core/btc_config.o: CFLAGS += -Wno-unused-const-variable
bluedroid/stack/btm/btm_sec.o: CFLAGS += -Wno-unused-const-variable
bluedroid/stack/smp/smp_keys.o: CFLAGS += -Wno-unused-const-variable
endif
endif

View file

@ -32,8 +32,10 @@ set_source_files_properties(
PROPERTIES COMPILE_FLAGS
-Wno-write-strings)
# Temporary suppress "fallthrough" warnings until they are fixed in libcoap repo
set_source_files_properties(
libcoap/src/option.c
PROPERTIES COMPILE_FLAGS
-Wno-implicit-fallthrough)
if(GCC_NOT_5_2_0)
# Temporary suppress "fallthrough" warnings until they are fixed in libcoap repo
set_source_files_properties(
libcoap/src/option.c
PROPERTIES COMPILE_FLAGS
-Wno-implicit-fallthrough)
endif()

View file

@ -12,5 +12,7 @@ COMPONENT_SUBMODULES += libcoap
libcoap/src/debug.o: CFLAGS += -Wno-write-strings
libcoap/src/pdu.o: CFLAGS += -Wno-write-strings
ifeq ($(GCC_NOT_5_2_0), 1)
# Temporary suppress "fallthrough" warnings until they are fixed in libcoap repo
libcoap/src/option.o: CFLAGS += -Wno-implicit-fallthrough
endif

View file

@ -36,42 +36,26 @@ extern "C" void __cxx_fatal_exception_int(int i)
abort();
}
#if !GCC_NOT_5_2_0
void std::__throw_bad_exception(void) __attribute__((alias("__cxx_fatal_exception")));
void std::__throw_bad_alloc(void) __attribute__((alias("__cxx_fatal_exception")));
void std::__throw_bad_cast(void) __attribute__((alias("__cxx_fatal_exception")));
void std::__throw_bad_typeid(void) __attribute__((alias("__cxx_fatal_exception")));
void std::__throw_logic_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_domain_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_invalid_argument(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_length_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_out_of_range(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_out_of_range_fmt(const char*, ...) __attribute__((alias("__cxx_fatal_exception_message_va")));
void std::__throw_runtime_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_range_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_overflow_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_underflow_error(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_ios_failure(const char*) __attribute__((alias("__cxx_fatal_exception_message")));
void std::__throw_system_error(int) __attribute__((alias("__cxx_fatal_exception_int")));
void std::__throw_bad_function_call(void) __attribute__((alias("__cxx_fatal_exception")));
void std::__throw_future_error(int) __attribute__((alias("__cxx_fatal_exception_int")));
#endif
/* The following definitions are needed because libstdc++ is also compiled with
__throw_exception_again defined to throw, and some other exception code in a few places.

View file

@ -1,5 +1,7 @@
#include <vector>
#include <algorithm>
#include <numeric>
#include <stdexcept>
#include <string>
#include "unity.h"
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
@ -271,6 +273,22 @@ TEST_CASE("c++ exceptions emergency pool", "[cxx] [ignore]")
#endif
}
#else // !CONFIG_CXX_EXCEPTIONS
TEST_CASE("std::out_of_range exception when -fno-exceptions", "[cxx][reset=abort,SW_CPU_RESET]")
{
std::vector<int> v(10);
v.at(20) = 42;
TEST_FAIL_MESSAGE("Unreachable because we are aborted on the line above");
}
TEST_CASE("std::bad_alloc exception when -fno-exceptions", "[cxx][reset=abort,SW_CPU_RESET]")
{
std::string s = std::string(2000000000, 'a');
(void)s;
TEST_FAIL_MESSAGE("Unreachable because we are aborted on the line above");
}
#endif
/* These test cases pull a lot of code from libstdc++ and are disabled for now

View file

@ -0,0 +1,540 @@
espcoredump.py v0.2-dev
===============================================================
==================== ESP32 CORE DUMP START ====================
================== CURRENT THREAD REGISTERS ===================
pc 0x400d216d 0x400d216d <recur_func+77>
lbeg 0x400014fd 1073747197
lend 0x4000150d 1073747213
lcount 0xffffffff 4294967295
sar 0x0 0
ps 0x60420 394272
threadptr <unavailable>
br <unavailable>
scompare1 <unavailable>
acclo <unavailable>
acchi <unavailable>
m0 <unavailable>
m1 <unavailable>
m2 <unavailable>
m3 <unavailable>
expstate <unavailable>
f64r_lo <unavailable>
f64r_hi <unavailable>
f64s <unavailable>
fcr <unavailable>
fsr <unavailable>
a0 0x400d2148 1074602312
a1 0x3ffb7bc0 1073445824
a2 0x2 2
a3 0x3f403c36 1061174326
a4 0x3ffb7c00 1073445888
a5 0x3ffae8f4 1073408244
a6 0x0 0
a7 0x0 0
a8 0x5 5
a9 0xffffffad -83
a10 0x20 32
a11 0x3ffb3e6c 1073430124
a12 0x1 1
a13 0x80 128
a14 0x1 1
a15 0x0 0
==================== CURRENT THREAD STACK =====================
#0 0x400d216d in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:70
#1 0x400d2148 in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:63
#2 0x400d2148 in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:63
#3 0x400d2190 in unaligned_ptr_task (pvParameter=0x0) at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:80
======================== THREADS INFO =========================
Id Target Id Frame
* 1 <main task> 0x400d216d in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:70
2 process 1 0x400e4a86 in esp_vApplicationWaitiHook () at /home/dragon/esp/esp-idf/components/esp32/freertos_hooks.c:66
3 process 2 0x400e4a86 in esp_vApplicationWaitiHook () at /home/dragon/esp/esp-idf/components/esp32/freertos_hooks.c:66
4 process 3 0x4008559e in vTaskDelay (xTicksToDelay=<optimized out>) at /home/dragon/esp/esp-idf/components/freertos/tasks.c:1491
5 process 4 0x4008559e in vTaskDelay (xTicksToDelay=<optimized out>) at /home/dragon/esp/esp-idf/components/freertos/tasks.c:1491
6 process 5 0x4008629c in prvProcessTimerOrBlockTask (xNextExpireTime=<optimized out>, xListWasEmpty=<optimized out>) at /home/dragon/esp/esp-idf/components/freertos/timers.c:588
7 process 6 0x400846ad in xQueueGenericReceive (xQueue=0x3ffaea30, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at /home/dragon/esp/esp-idf/components/freertos/queue.c:1591
8 process 7 0x4008114a in esp_crosscore_int_send_yield (core_id=1) at /home/dragon/esp/esp-idf/components/esp32/crosscore_int.c:112
9 process 8 0x400846ad in xQueueGenericReceive (xQueue=0x3ffafd44, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at /home/dragon/esp/esp-idf/components/freertos/queue.c:1591
======================= ALL MEMORY REGIONS ========================
Name Address Size Attrs
.rtc.text 0x400c0000 0x0 RW
.rtc_noinit 0x50000000 0x0 RW
.iram0.vectors 0x40080000 0x400 R XA
.iram0.text 0x40080400 0x93f8 RWXA
.dram0.data 0x3ffb0000 0x2288 RW A
.noinit 0x3ffb2288 0x0 RW
.flash.rodata 0x3f400020 0x6cd4 RW A
.flash.text 0x400d0018 0x14cb4 R XA
.coredump.tasks.data 0x3ffb3e04 0x164 RW
.coredump.tasks.data 0x3ffb7b00 0x1d0 RW
.coredump.tasks.data 0x3ffb56fc 0x164 RW
.coredump.tasks.data 0x3ffb5590 0x164 RW
.coredump.tasks.data 0x3ffb5c68 0x164 RW
.coredump.tasks.data 0x3ffb5b00 0x160 RW
.coredump.tasks.data 0x3ffb3c9c 0x164 RW
.coredump.tasks.data 0x3ffb7360 0x16c RW
.coredump.tasks.data 0x3ffb3f6c 0x164 RW
.coredump.tasks.data 0x3ffb8370 0x164 RW
.coredump.tasks.data 0x3ffb66c8 0x164 RW
.coredump.tasks.data 0x3ffb6540 0x180 RW
.coredump.tasks.data 0x3ffafa88 0x164 RW
.coredump.tasks.data 0x3ffaf900 0x180 RW
.coredump.tasks.data 0x3ffb3b34 0x164 RW
.coredump.tasks.data 0x3ffb3980 0x1ac RW
.coredump.tasks.data 0x3ffafd98 0x164 RW
.coredump.tasks.data 0x3ffb35a0 0x188 RW
====================== CORE DUMP MEMORY CONTENTS ========================
.coredump.tasks.data 0x3ffb3e04 0x164 RW
0x3ffb3e04: 0x3ffb7b70 0x3ffb7c70 0x0000006d 0x3ffb2d3c
0x3ffb3e14: 0x3ffb2d3c 0x3ffb3e04 0x3ffb2d34 0x00000012
0x3ffb3e24: 0xa5a5a5a5 0xa5a5a5a5 0x3ffb3e04 0x00000000
0x3ffb3e34: 0x00000007 0x3ffb74d4 0x6c616e75 0x656e6769
0x3ffb3e44: 0x74705f64 0x00745f72 0x00000001 0x3ffb7cd0
0x3ffb3e54: 0x00000000 0x00060820 0x00000007 0x00000000
0x3ffb3e64: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb3e74: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb3e84: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb3e94: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb3ea4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3eb4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ec4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ed4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ee4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ef4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f04: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f14: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f24: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f34: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f44: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f54: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f64: 0x00000000
.coredump.tasks.data 0x3ffb7b00 0x1d0 RW
0x3ffb7b00: 0x3f403b68 0x400d216d 0x00060430 0x800d2148
0x3ffb7b10: 0x3ffb7bc0 0x00000002 0x3f403c36 0x3ffb7c00
0x3ffb7b20: 0x3ffae8f4 0x00000000 0x00000000 0x00000005
0x3ffb7b30: 0xffffffad 0x00000020 0x3ffb3e6c 0x00000001
0x3ffb7b40: 0x00000080 0x00000001 0x00000000 0x00000000
0x3ffb7b50: 0x0000001d 0x00000005 0x400014fd 0x4000150d
0x3ffb7b60: 0xffffffff 0x00000001 0x00000080 0x4008217c
0x3ffb7b70: 0x3ffb0f8c 0x00000000 0x00000000 0x00000000
0x3ffb7b80: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb7b90: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7ba0: 0x00000001 0x00000080 0x00000001 0x00000000
0x3ffb7bb0: 0x800d2148 0x3ffb7bf0 0x00000001 0x3ffae8f4
0x3ffb7bc0: 0x800d27a7 0x3ffb7bf0 0x0000000a 0x3ffae8f4
0x3ffb7bd0: 0x3ffb7c00 0x3ffae8f4 0x00000000 0x00000000
0x3ffb7be0: 0x800d2190 0x3ffb7c20 0x0000000a 0x00000001
0x3ffb7bf0: 0x3f403b93 0x0000001e 0x3f403c35 0x00000001
0x3ffb7c00: 0x00060023 0x00000001 0x00060021 0x3ffb3aa0
0x3ffb7c10: 0x00000000 0x3ffb7c50 0x00000000 0x00000000
0x3ffb7c20: 0x00000003 0x3ffb7c50 0x00000000 0x00000000
0x3ffb7c30: 0x3ffb106c 0x3ffb3e04 0x00000000 0x00000000
0x3ffb7c40: 0x00000000 0x3ffb7c70 0x00000000 0x00000000
0x3ffb7c50: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7c60: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7c70: 0x00000000 0x00000000 0x3ffb7c7c 0x00000000
0x3ffb7c80: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7c90: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7ca0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7cb0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7cc0: 0x00000000 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffb56fc 0x164 RW
0x3ffb56fc: 0x3ffb5590 0x3ffb5690 0x195c72d9 0x3ffb5c70
0x3ffb570c: 0x3ffb2cb0 0x3ffb56fc 0x3ffb2ca8 0x00000019
0x3ffb571c: 0x490223d5 0xf77c8d12 0x3ffb56fc 0x00000000
0x3ffb572c: 0x00000000 0x3ffb52f8 0x454c4449 0x7a300030
0x3ffb573c: 0x91128825 0x00f6b6f0 0x00000000 0x3ffb56f4
0x3ffb574c: 0x00000000 0x00060220 0x00000000 0x00000000
0x3ffb575c: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb576c: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb577c: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb578c: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb579c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57ac: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57bc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57cc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57dc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57ec: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57fc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb580c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb581c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb582c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb583c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb584c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb585c: 0x8fe33c00
.coredump.tasks.data 0x3ffb5590 0x164 RW
0x3ffb5590: 0x400821d8 0x400e4a86 0x00060230 0x800857b8
0x3ffb55a0: 0x3ffb5650 0x00000008 0x00000000 0x00000001
0x3ffb55b0: 0x3ffb5c68 0x00000000 0x00000001 0x3ffb2bac
0x3ffb55c0: 0x3ffb2b90 0x00000000 0x00000001 0x00000000
0x3ffb55d0: 0x00000001 0x00060021 0x00060823 0x00000000
0x3ffb55e0: 0x80084bdc 0x3ffb5610 0x00000000 0x00000000
0x3ffb55f0: 0x00000000 0x400823d1 0x00000001 0x400864e8
0x3ffb5600: 0x3ffae901 0x00000000 0x00000000 0x00000000
0x3ffb5610: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb5620: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5630: 0x00000000 0x00000001 0x00060021 0x00060823
0x3ffb5640: 0x00000000 0x3ffb5670 0x00000000 0x00000000
0x3ffb5650: 0x00000001 0x3ffb5c68 0x00000000 0x00000001
0x3ffb5660: 0x00000000 0x3ffb5690 0x00000000 0x00000000
0x3ffb5670: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5680: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5690: 0x00000000 0x00000000 0x3ffb569c 0x00000000
0x3ffb56a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56b0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56c0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56d0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56e0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56f0: 0x00000000
.coredump.tasks.data 0x3ffb5c68 0x164 RW
0x3ffb5c68: 0x3ffb5b00 0x3ffb5c00 0xe7e3b153 0x3ffb2cb0
0x3ffb5c78: 0x3ffb5704 0x3ffb5c68 0x3ffb2ca8 0x00000019
0x3ffb5c88: 0xbd385aa8 0x3b1ece45 0x3ffb5c68 0x00000000
0x3ffb5c98: 0x00000000 0x3ffb5864 0x454c4449 0x8e700031
0x3ffb5ca8: 0x0b5d9160 0x00ec3ae7 0x00000001 0x3ffb5c60
0x3ffb5cb8: 0x00000000 0x00060e20 0x00000000 0x00000000
0x3ffb5cc8: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb5cd8: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb5ce8: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb5cf8: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb5d08: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d18: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d28: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d38: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d48: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d58: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d68: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d78: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d88: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d98: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5da8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5db8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5dc8: 0x5fb19b00
.coredump.tasks.data 0x3ffb5b00 0x160 RW
0x3ffb5b00: 0x400821d8 0x400e4a86 0x00060e30 0x800857b8
0x3ffb5b10: 0x3ffb5bc0 0x00000008 0x00000001 0x00000000
0x3ffb5b20: 0x3ffb56fc 0x00000000 0x00000001 0x3ffb2bcc
0x3ffb5b30: 0x3ffb2b90 0x00000000 0x80000001 0x00000000
0x3ffb5b40: 0x00000001 0x00060021 0x00000000 0x00000000
0x3ffb5b50: 0x00060020 0x00000001 0x00000000 0x00000000
0x3ffb5b60: 0x00000000 0x400823d1 0x00000001 0x400864e8
0x3ffb5b70: 0x3ffaef1c 0x00000000 0x00000000 0x00000000
0x3ffb5b80: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb5b90: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5ba0: 0x00000000 0x00000001 0x00060021 0x00000000
0x3ffb5bb0: 0x00000000 0x3ffb5be0 0x00000000 0x00000000
0x3ffb5bc0: 0x00000000 0x3ffb56fc 0x00000000 0x00000001
0x3ffb5bd0: 0x00000000 0x3ffb5c00 0x00000000 0x00000000
0x3ffb5be0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5bf0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c00: 0x00000000 0x00000000 0x3ffb5c0c 0x00000000
0x3ffb5c10: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c20: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c30: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c40: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c50: 0x00000000 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffb3c9c 0x164 RW
0x3ffb3c9c: 0x3ffb7360 0x3ffb7460 0x000000d1 0x3ffb2c9c
0x3ffb3cac: 0x3ffb3f74 0x3ffb3c9c 0x3ffb2c94 0x00000014
0x3ffb3cbc: 0x3ffb6c24 0x3ffb6c24 0x3ffb3c9c 0x00000000
0x3ffb3ccc: 0x00000005 0x3ffb6cd0 0x5f646162 0x5f727470
0x3ffb3cdc: 0x6b736174 0x00a5a500 0x7fffffff 0x3ffb74cc
0x3ffb3cec: 0x00000000 0x00060021 0x00000005 0x00000000
0x3ffb3cfc: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb3d0c: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb3d1c: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb3d2c: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb3d3c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d4c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d5c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d6c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d7c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d8c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d9c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dac: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dbc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dcc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ddc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dec: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dfc: 0xa5a5a500
.coredump.tasks.data 0x3ffb7360 0x16c RW
0x3ffb7360: 0x400821d8 0x4008559e 0x00060230 0x800d2113
0x3ffb7370: 0x3ffb7420 0x000000d1 0x00000000 0x3ffb106c
0x3ffb7380: 0x3ffb3c9c 0x00000000 0x00000000 0x8008559e
0x3ffb7390: 0x3ffb7400 0x00000000 0x000000d1 0x00060023
0x3ffb73a0: 0x00000001 0x00060021 0x3ffb5b70 0x00000000
0x3ffb73b0: 0x800d27a4 0x3ffb73e0 0x400014fd 0x4000150d
0x3ffb73c0: 0xfffffff9 0x400823d1 0x00000001 0x400864e8
0x3ffb73d0: 0x3ffb077c 0x00000000 0x00000000 0x00000000
0x3ffb73e0: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb73f0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7400: 0x00060023 0x00000001 0x00060021 0x3ffb5b70
0x3ffb7410: 0x00000000 0x3ffb7440 0x00000000 0x00000000
0x3ffb7420: 0x3ffb106c 0x3ffb3c9c 0x00000000 0x00000000
0x3ffb7430: 0x00000000 0x3ffb7460 0x00000000 0x00000000
0x3ffb7440: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7450: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7460: 0x00000000 0x00000000 0x3ffb746c 0x00000000
0x3ffb7470: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7480: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7490: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb74a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb74b0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb74c0: 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffb3f6c 0x164 RW
0x3ffb3f6c: 0x3ffb8370 0x3ffb8470 0x000000d1 0x3ffb3ca4
0x3ffb3f7c: 0x3ffb2c9c 0x3ffb3f6c 0x3ffb2c94 0x0000000f
0x3ffb3f8c: 0x3ffb3cb8 0x3ffb6c24 0x3ffb3f6c 0x00000000
0x3ffb3f9c: 0x0000000a 0x3ffb7cd8 0x6c696166 0x615f6465
0x3ffb3fac: 0x72657373 0x00745f74 0x00000000 0x3ffb84d4
0x3ffb3fbc: 0x00000000 0x00060021 0x0000000a 0x00000000
0x3ffb3fcc: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb3fdc: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb3fec: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb3ffc: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb400c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb401c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb402c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb403c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb404c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb405c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb406c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb407c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb408c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb409c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb40ac: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb40bc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb40cc: 0x00000000
.coredump.tasks.data 0x3ffb8370 0x164 RW
0x3ffb8370: 0x400821d8 0x4008559e 0x00060230 0x800d20a3
0x3ffb8380: 0x3ffb8430 0x000000d1 0x00000000 0x3ffb106c
0x3ffb8390: 0x3ffb3f6c 0x00000000 0x00000000 0x8008559e
0x3ffb83a0: 0x3ffb8410 0x00000000 0x000000d1 0x00060023
0x3ffb83b0: 0x00000001 0x00060021 0x00000000 0x00000000
0x3ffb83c0: 0x800d27a4 0x3ffb83f0 0x400014fd 0x4000150d
0x3ffb83d0: 0xfffffff8 0x400823d1 0x00000001 0x400864e8
0x3ffb83e0: 0x3ffb178c 0x00000000 0x00000000 0x00000000
0x3ffb83f0: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb8400: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb8410: 0x00060023 0x00000001 0x00060021 0x00000000
0x3ffb8420: 0x00000000 0x3ffb8450 0x00000000 0x00000000
0x3ffb8430: 0x3ffb106c 0x3ffb3f6c 0x00000000 0x00000000
0x3ffb8440: 0x00000000 0x3ffb8470 0x00000000 0x00000000
0x3ffb8450: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb8460: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb8470: 0x00000000 0x00000000 0x3ffb847c 0x00000000
0x3ffb8480: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb8490: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb84a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb84b0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb84c0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb84d0: 0x00000000
.coredump.tasks.data 0x3ffb66c8 0x164 RW
0x3ffb66c8: 0x3ffb6540 0x3ffb6660 0x00000000 0x3ffb2c88
0x3ffb66d8: 0x3ffb2c88 0x3ffb66c8 0x3ffb2c80 0x00000018
0x3ffb66e8: 0x3ffb5dfc 0x3ffb5dfc 0x3ffb66c8 0x3ffb5df4
0x3ffb66f8: 0x00000001 0x3ffb5ec4 0x20726d54 0x00637653
0x3ffb6708: 0xd39f0f55 0x00a2af81 0x00000000 0x3ffb66c0
0x3ffb6718: 0x00000000 0x00060021 0x00000001 0x00000000
0x3ffb6728: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb6738: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb6748: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb6758: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb6768: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6778: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6788: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6798: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67a8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67b8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67c8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67d8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67e8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67f8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6808: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6818: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6828: 0x97f9e600
.coredump.tasks.data 0x3ffb6540 0x180 RW
0x3ffb6540: 0x400821d8 0x4008629c 0x00060830 0x8008638f
0x3ffb6550: 0x3ffb6600 0x3ffb2ea8 0x00000000 0x00000001
0x3ffb6560: 0x3ffb510c 0x00000000 0x00000001 0x8008629c
0x3ffb6570: 0x3ffb65e0 0x00000000 0x3ffb2c00 0x3ffb5e18
0x3ffb6580: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6590: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
0x3ffb65a0: 0x00000000 0x400823d1 0x00000000 0x400864e8
0x3ffb65b0: 0x3ffaf97c 0x00000000 0x00000000 0x00000000
0x3ffb65c0: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb65d0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb65e0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb65f0: 0x00000000 0x3ffb6630 0x00000000 0x00000000
0x3ffb6600: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6610: 0x3ffaf97c 0x00000000 0x00000000 0x00000000
0x3ffb6620: 0x00000000 0x3ffb6660 0x00000000 0x00000000
0x3ffb6630: 0x00000001 0x00000000 0x00000000 0x00000000
0x3ffb6640: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6650: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6660: 0x00000000 0x00000000 0x3ffb666c 0x00000000
0x3ffb6670: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6680: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6690: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb66a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb66b0: 0x00000000 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffafa88 0x164 RW
0x3ffafa88: 0x3ffaf900 0x3ffafa20 0x5ff990da 0x3ffb3b3c
0x3ffafa98: 0x3ffafda0 0x3ffafa88 0x3ffb2c24 0x00000003
0x3ffafaa8: 0x3ffaea5c 0x3ffaea5c 0x3ffafa88 0x3ffaea54
0x3ffafab8: 0x00000016 0x3ffaea84 0x5f707365 0x656d6974
0x3ffafac8: 0xe11f0072 0x00f45ee9 0x00000000 0x3ffafa80
0x3ffafad8: 0x00000000 0x00060021 0x00000016 0x00000000
0x3ffafae8: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffafaf8: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffafb08: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffafb18: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffafb28: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb38: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb48: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb58: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb68: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb78: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb88: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb98: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafba8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafbb8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafbc8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafbd8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafbe8: 0x354b8800
.coredump.tasks.data 0x3ffaf900 0x180 RW
0x3ffaf900: 0x400821d8 0x400846ad 0x00060030 0x800d14fb
0x3ffaf910: 0x3ffaf9c0 0x3ffaea30 0x00000000 0x3ffaea78
0x3ffaf920: 0x00000000 0x00000001 0x00000001 0x800846ad
0x3ffaf930: 0x3ffaf9a0 0x00000000 0x3ffb2e9c 0x3ffb2e9c
0x3ffaf940: 0x00000001 0x00060021 0x00000000 0x00000000
0x3ffaf950: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
0x3ffaf960: 0x00000000 0x400823d1 0x00000001 0x400864e8
0x3ffaf970: 0x3ffa8d3c 0x00000000 0x00000000 0x00000000
0x3ffaf980: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffaf990: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffaf9a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffaf9b0: 0x00000000 0x3ffafa00 0x00000000 0x00000000
0x3ffaf9c0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffaf9d0: 0xffffffff 0x00000000 0x00000000 0x00000000
0x3ffaf9e0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffaf9f0: 0x00000000 0x3ffafa20 0x00000000 0x00000000
0x3ffafa00: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa10: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa20: 0x00000000 0x00000000 0x3ffafa2c 0x00000000
0x3ffafa30: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa40: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa50: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa60: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa70: 0x00000000 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffb3b34 0x164 RW
0x3ffb3b34: 0x3ffb3980 0x3ffb3ac0 0x88083cc0 0x3ffb2c2c
0x3ffb3b44: 0x3ffafa90 0x3ffb3b34 0x3ffb2c24 0x00000001
0x3ffb3b54: 0x3ffaff2c 0x3ffaff2c 0x3ffb3b34 0x3ffaff24
0x3ffb3b64: 0x00000018 0x3ffb3730 0x31637069 0xeff9c300
0x3ffb3b74: 0xc4c0f656 0x008423ac 0x00000001 0x3ffb3b2c
0x3ffb3b84: 0x00000000 0x00060021 0x00000018 0x00000000
0x3ffb3b94: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb3ba4: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb3bb4: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb3bc4: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb3bd4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3be4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3bf4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c04: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c14: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c24: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c34: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c44: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c54: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c64: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c74: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c84: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c94: 0x048ed900
.coredump.tasks.data 0x3ffb3980 0x1ac RW
0x3ffb3980: 0x400821d8 0x4008114a 0x00060030 0x800846ad
0x3ffb3990: 0x3ffb3a40 0x00000001 0x3ffb2e9c 0x3ffb2ea0
0x3ffb39a0: 0x3ffe7c90 0x00000000 0x00060723 0x8008114a
0x3ffb39b0: 0x3ffb3a20 0x3ff000e0 0x00000001 0x3ffb102c
0x3ffb39c0: 0x00000001 0x00060020 0x00060023 0x00000000
0x3ffb39d0: 0x3ffb3a40 0x00000001 0x00000000 0x00000000
0x3ffb39e0: 0x00000000 0x400823d1 0x00000001 0x400864e8
0x3ffb39f0: 0x3ffacddc 0x00000000 0x00000000 0x00000000
0x3ffb3a00: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb3a10: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3a20: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb3a30: 0x800811b3 0x3ffb3a60 0x3ffaff00 0x00000000
0x3ffb3a40: 0x00000001 0x00000001 0x00060020 0x00060023
0x3ffb3a50: 0x00000000 0x3ffb3aa0 0x00000001 0x40082ff8
0x3ffb3a60: 0x00000000 0x00000009 0x00000000 0x00060723
0x3ffb3a70: 0xffffffff 0x3ffb3aa0 0x00000001 0x40082ff8
0x3ffb3a80: 0x3ffaff48 0x00000000 0x00000001 0x00000000
0x3ffb3a90: 0x00000000 0x3ffb3ac0 0x00000000 0x00000000
0x3ffb3aa0: 0x00000001 0x00000000 0x00000000 0x00000000
0x3ffb3ab0: 0x80080f2c 0x3ffe7d80 0x00000028 0x00000028
0x3ffb3ac0: 0x00000000 0x00000000 0x3ffb3acc 0x00000000
0x3ffb3ad0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ae0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3af0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3b00: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3b10: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3b20: 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffafd98 0x164 RW
0x3ffafd98: 0x3ffb35a0 0x3ffb36c0 0x73fa8154 0x3ffafa90
0x3ffafda8: 0x3ffb2c2c 0x3ffafd98 0x3ffb2c24 0x00000001
0x3ffafdb8: 0x3ffafd70 0x3ffafd70 0x3ffafd98 0x3ffafd68
0x3ffafdc8: 0x00000018 0x3ffb332c 0x30637069 0x1e3d8600
0x3ffafdd8: 0xfe7fd40a 0x0014a8b5 0x00000000 0x3ffb3728
0x3ffafde8: 0x00000000 0x00060021 0x00000018 0x00000000
0x3ffafdf8: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffafe08: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffafe18: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffafe28: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffafe38: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe48: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe58: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe68: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe78: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe88: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe98: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafea8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafeb8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafec8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafed8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafee8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafef8: 0x7eb2c400
.coredump.tasks.data 0x3ffb35a0 0x188 RW
0x3ffb35a0: 0x400821d8 0x400846ad 0x00060030 0x800811b3
0x3ffb35b0: 0x3ffb3660 0x3ffafd44 0x00000000 0x3ffafd8c
0x3ffb35c0: 0x00000000 0x00000001 0x00000001 0x800846ad
0x3ffb35d0: 0x3ffb3640 0x00000000 0x3ffb2e9c 0x3ffb2e9c
0x3ffb35e0: 0x3ffe3af0 0x00000000 0x00000002 0x00000000
0x3ffb35f0: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
0x3ffb3600: 0x00000000 0x400823d1 0x3ffe3af0 0x400864e8
0x3ffb3610: 0x3ffac9dc 0x00000000 0x00000000 0x00000000
0x3ffb3620: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb3630: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3640: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3650: 0x00000000 0x3ffb36a0 0x00000000 0x00000000
0x3ffb3660: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3670: 0xffffffff 0x00000000 0x00000000 0x00000000
0x3ffb3680: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3690: 0x00000000 0x3ffb36c0 0x00000000 0x00000000
0x3ffb36a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb36b0: 0x80080eaa 0x3ffe3ba0 0x3ffb2c0c 0x3ffb2ee4
0x3ffb36c0: 0x00000000 0x00000000 0x3ffb36cc 0x00000000
0x3ffb36d0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb36e0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb36f0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3700: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3710: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3720: 0x00000000 0x00000000
===================== ESP32 CORE DUMP END =====================
===============================================================
Done!

View file

@ -1,10 +1,16 @@
#! /bin/bash
if [ "$(xtensa-esp32-elf-gcc -dumpversion)" = "5.2.0" ]; then
EXPECTED_OUTPUT="expected_output"
else
# GCC_NOT_5_2_0 just a hint to remove later
EXPECTED_OUTPUT="expected_output_new_CT"
fi
{ coverage debug sys \
&& coverage erase \
&& coverage run -a --source=espcoredump ../espcoredump.py info_corefile -m -t b64 -c coredump.b64 test.elf &> output \
&& diff expected_output output \
&& diff ${EXPECTED_OUTPUT} output \
&& coverage run -a --source=espcoredump ./test_espcoredump.py \
&& coverage report \
; } || { echo 'The test for espcoredump has failed!'; exit 1; }

View file

@ -14,4 +14,6 @@ component_compile_definitions(HAVE_EXPAT_CONFIG_H)
component_compile_definitions(HAVE_GETRANDOM)
# Temporary suppress "fallthrough" warnings until they are fixed in expat repo
component_compile_options(-Wno-implicit-fallthrough)
if(GCC_NOT_5_2_0)
component_compile_options(-Wno-implicit-fallthrough)
endif()

View file

@ -6,7 +6,8 @@ COMPONENT_ADD_INCLUDEDIRS := expat/expat/lib port/include
COMPONENT_SRCDIRS := expat/expat/lib port
CFLAGS += -DHAVE_EXPAT_CONFIG_H -DHAVE_GETRANDOM
ifeq ($(GCC_NOT_5_2_0), 1)
# Temporary suppress "fallthrough" warnings until they are fixed in expat repo
CFLAGS += -Wno-implicit-fallthrough
endif
COMPONENT_SUBMODULES += expat

View file

@ -139,11 +139,8 @@ component_compile_definitions(
__STDC_CONSTANT_MACROS
)
component_compile_options(-Wno-unknown-pragmas)
# patch around warnings in third-party files
set_source_files_properties(
${SRC}/crypto_pwhash/argon2/argon2-fill-block-ref.c
${SRC}/crypto_pwhash/argon2/pwhash_argon2i.c
${SRC}/crypto_pwhash/argon2/argon2-core.c
${SRC}/crypto_pwhash/scryptsalsa208sha256/pwhash_scryptsalsa208sha256.c
@ -155,10 +152,18 @@ set_source_files_properties(
PROPERTIES COMPILE_FLAGS
-Wno-unused-variable
)
set_source_files_properties(
${SRC}/crypto_pwhash/argon2/argon2-fill-block-ref.c
PROPERTIES COMPILE_FLAGS
-Wno-unknown-pragmas
)
# Temporary suppress "fallthrough" warnings until they are fixed in libsodium repo
set_source_files_properties(
${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c
${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c
PROPERTIES COMPILE_FLAGS
-Wno-implicit-fallthrough)
if(GCC_NOT_5_2_0)
set_source_files_properties(
${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.c
${SRC}/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.c
PROPERTIES COMPILE_FLAGS
-Wno-implicit-fallthrough
)
endif()

View file

@ -87,6 +87,8 @@ CFLAGS += -DNATIVE_LITTLE_ENDIAN -DHAVE_WEAK_SYMBOLS -D__STDC_LIMIT_MACROS -D__
# randombytes.c needs to pull in platform-specific implementation
$(LSRC)/randombytes/randombytes.o: CFLAGS+=-DRANDOMBYTES_DEFAULT_IMPLEMENTATION
ifeq ($(GCC_NOT_5_2_0), 1)
# Temporary suppress "fallthrough" warnings until they are fixed in libsodium repo
$(LSRC)/crypto_shorthash/siphash24/ref/shorthash_siphashx24_ref.o: CFLAGS += -Wno-implicit-fallthrough
$(LSRC)/crypto_shorthash/siphash24/ref/shorthash_siphash24_ref.o: CFLAGS += -Wno-implicit-fallthrough
endif

View file

@ -126,3 +126,16 @@ register_component()
# lots of LWIP source files evaluate macros that check address of stack variables
component_compile_options(-Wno-address)
if(GCC_NOT_5_2_0)
set_source_files_properties(
lwip/src/netif/ppp/ppp.c
PROPERTIES COMPILE_FLAGS
-Wno-uninitialized
)
set_source_files_properties(
lwip/src/netif/ppp/pppos.c
PROPERTIES COMPILE_FLAGS
-Wno-implicit-fallthrough
)
endif()

View file

@ -28,3 +28,8 @@ ifdef CONFIG_PPP_SUPPORT
endif
CFLAGS += -Wno-address # lots of LWIP source files evaluate macros that check address of stack variables
ifeq ($(GCC_NOT_5_2_0), 1)
lwip/src/netif/ppp/ppp.o: CFLAGS += -Wno-uninitialized
lwip/src/netif/ppp/pppos.o: CFLAGS += -Wno-implicit-fallthrough
endif

View file

@ -9,3 +9,11 @@ set(COMPONENT_SRCS "esp-mqtt/mqtt_client.c"
set(COMPONENT_REQUIRES lwip nghttp mbedtls tcp_transport)
register_component()
if(GCC_NOT_5_2_0)
# Temporary suppress "format-overflow" warning until we are fixed in esp-mqtt repo
set_source_files_properties(
esp-mqtt/lib/transport_ws.c
PROPERTIES COMPILE_FLAGS
-Wno-format-overflow)
endif()

View file

@ -2,3 +2,7 @@ COMPONENT_SUBMODULES += esp-mqtt
COMPONENT_ADD_INCLUDEDIRS := esp-mqtt/include
COMPONENT_SRCDIRS := esp-mqtt esp-mqtt/lib
COMPONENT_PRIV_INCLUDEDIRS := esp-mqtt/lib/include
ifeq ($(GCC_NOT_5_2_0), 1)
esp-mqtt/lib/transport_ws.o: CFLAGS += -Wno-format-overflow
endif

View file

@ -443,7 +443,9 @@ static int uart_tcsetattr(int fd, int optional_actions, const struct termios *p)
errno = EINVAL;
return -1;
}
// intentional fall-through to the next case
/* FALLTHRU */
case TCSAFLUSH:
if (uart_flush_input(fd) != ESP_OK) {
errno = EINVAL;

View file

@ -89,6 +89,12 @@ def generate_version_specific_includes(app):
call_with_python('../gen-version-specific-includes.py {} {}'.format(app.config.language, version_tmpdir))
copy_if_modified(version_tmpdir, '{}/inc'.format(builddir))
# Generate toolchain download links
print("Generating toolchain download links")
base_url = 'https://dl.espressif.com/dl/'
toolchain_tmpdir = '{}/toolchain_inc'.format(builddir)
call_with_python('../gen-toolchain-links.py ../../tools/toolchain_versions.mk {} {}'.format(base_url, toolchain_tmpdir))
copy_if_modified(toolchain_tmpdir, '{}/inc'.format(builddir))
# http://stackoverflow.com/questions/12772927/specifying-an-online-image-in-sphinx-restructuredtext-format
#

View file

@ -49,12 +49,9 @@ Compile the Toolchain from Source
TODO
Download ``crosstool-NG`` and build it::
Download ``crosstool-NG`` and build it:
cd ~/esp
git clone -b xtensa-1.22.x https://github.com/espressif/crosstool-NG.git
cd crosstool-NG
./bootstrap && ./configure --enable-local && make install
.. include:: /_build/inc/scratch-build-code.inc
Build the toolchain::

View file

@ -29,21 +29,27 @@ To compile with ESP-IDF you need to get the following packages:
Toolchain Setup
===============
.. include:: /_build/inc/download-links.inc
ESP32 toolchain for Linux is available for download from Espressif website:
- for 64-bit Linux:
https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
|download_link_linux64|
- for 32-bit Linux:
https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz
|download_link_linux32|
1. Download this file, then extract it in ``~/esp`` directory::
1. Download this file, then extract it in ``~/esp`` directory:
mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
- for 64-bit Linux:
.. include:: /_build/inc/unpack-code-linux64.inc
- for 32-bit Linux:
.. include:: /_build/inc/unpack-code-linux32.inc
.. _setup-linux-toolchain-add-it-to-path:

View file

@ -44,12 +44,9 @@ Create a symlink to your work directory::
cd ~/esp
ln -s /Volumes/ctng crosstool-NG
Download ``crosstool-NG`` and build it::
Download ``crosstool-NG`` and build it:
cd ~/esp
git clone -b xtensa-1.22.x https://github.com/espressif/crosstool-NG.git
cd crosstool-NG
./bootstrap && ./configure --enable-local && make install
.. include:: /_build/inc/scratch-build-code.inc
Build the toolchain::

View file

@ -17,15 +17,15 @@ Install Prerequisites
Toolchain Setup
===============
.. include:: /_build/inc/download-links.inc
ESP32 toolchain for macOS is available for download from Espressif website:
https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz
|download_link_osx|
Download this file, then extract it in ``~/esp`` directory::
Download this file, then extract it in ``~/esp`` directory:
mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-osx-1.22.0-80-g6c4433a-5.2.0.tar.gz
.. include:: /_build/inc/unpack-code-osx.inc
.. _setup-macos-toolchain-add-it-to-path:

View file

@ -76,9 +76,11 @@ Add this line to ``/etc/profile`` in the MSYS directory in order to permanently
Alternative Setup: Just download a toolchain
============================================
.. include:: /_build/inc/download-links.inc
If you already have an MSYS2 install or want to do things differently, you can download just the toolchain here:
https://dl.espressif.com/dl/xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip
|download_link_win32|
.. note::

View file

@ -0,0 +1,78 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# This script generates toolchain download links and toolchain unpacking
# code snippets based on information found in $IDF_PATH/tools/toolchain_versions.mk
#
from __future__ import print_function
import sys
import os
def main():
if len(sys.argv) != 4:
print("Usage: gen-toolchain-links.py <versions file> <base download URL> <output directory>")
sys.exit(1)
out_dir = sys.argv[3]
if not os.path.exists(out_dir):
print("Creating directory %s" % out_dir)
os.mkdir(out_dir)
base_url = sys.argv[2]
versions_file = sys.argv[1]
version_vars = {}
with open(versions_file) as f:
for line in f:
name, var = line.partition("=")[::2]
version_vars[name.strip()] = var.strip()
gcc_version = version_vars["CURRENT_TOOLCHAIN_GCC_VERSION"]
toolchain_desc = version_vars["CURRENT_TOOLCHAIN_COMMIT_DESC_SHORT"]
unpack_code_linux_macos = """
::
mkdir -p ~/esp
cd ~/esp
tar -x{}f ~/Downloads/{}
"""
scratch_build_code_linux_macos = """
::
cd ~/esp
git clone -b xtensa-1.22.x https://github.com/espressif/crosstool-NG.git
cd crosstool-NG
./bootstrap && ./configure --enable-local && make install
"""
platform_info = [ ["linux64", "tar.gz", "z", unpack_code_linux_macos],
["linux32", "tar.gz", "z", unpack_code_linux_macos],
["osx", "tar.gz", "z", unpack_code_linux_macos],
["win32", "zip", None, None]]
with open(os.path.join(out_dir, 'download-links.inc'), "w") as links_file:
for p in platform_info:
platform_name = p[0]
extension = p[1]
unpack_cmd = p[2]
unpack_code = p[3]
archive_name = 'xtensa-esp32-elf-{}-{}-{}.{}'.format(
platform_name, toolchain_desc, gcc_version, extension)
print('.. |download_link_{}| replace:: {}{}'.format(
platform_name, base_url, archive_name), file=links_file)
if unpack_code is not None:
with open(os.path.join(out_dir, 'unpack-code-%s.inc' % platform_name), "w") as f:
print(unpack_code.format(unpack_cmd, archive_name), file=f)
with open(os.path.join(out_dir, 'scratch-build-code.inc'), "w") as code_file:
print(scratch_build_code_linux_macos, file=code_file)
if __name__ == "__main__":
main()

View file

@ -48,12 +48,9 @@
TODO
下载 ``crosstool-NG`` 然后编译::
下载 ``crosstool-NG`` 然后编译:
cd ~/esp
git clone -b xtensa-1.22.x https://github.com/espressif/crosstool-NG.git
cd crosstool-NG
./bootstrap && ./configure --enable-local && make install
.. include:: /_build/inc/scratch-build-code.inc
编译工具链::

View file

@ -30,21 +30,27 @@ Linux 平台工具链的标准设置
工具链的设置
===============
.. include:: /_build/inc/download-links.inc
Linux 版的 ESP32 工具链可以从 Espressif 的网站下载:
- 64-bit Linux
https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
|download_link_linux64|
- 32-bit Linux
https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz
|download_link_linux32|
1. 下载完成后,将它解压到 ``~/esp`` 目录: ::
1. 下载完成后,将它解压到 ``~/esp`` 目录: :
mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
- 64-bit Linux:
.. include:: /_build/inc/unpack-code-linux64.inc
- 32-bit Linux:
.. include:: /_build/inc/unpack-code-linux32.inc
.. _setup-linux-toolchain-add-it-to-path:

View file

@ -44,12 +44,9 @@
cd ~/esp
ln -s /Volumes/ctng crosstool-NG
下载 ``crosstool-NG`` 然后编译::
下载 ``crosstool-NG`` 然后编译:
cd ~/esp
git clone -b xtensa-1.22.x https://github.com/espressif/crosstool-NG.git
cd crosstool-NG
./bootstrap && ./configure --enable-local && make install
.. include:: /_build/inc/scratch-build-code.inc
编译工具链::

View file

@ -19,15 +19,15 @@
安装工具链
===============
.. include:: /_build/inc/download-links.inc
Mac OS 版本的 ESP32 工具链可以从以下地址下载:
https://dl.espressif.com/dl/xtensa-esp32-elf-osx-1.22.0-75-gbaf03c2-5.2.0.tar.gz
|download_link_osx|
下载压缩文件之后,解压到 ``~/esp`` 目录中::
下载压缩文件之后,解压到 ``~/esp`` 目录中:
mkdir -p ~/esp
cd ~/esp
tar -xzf ~/Downloads/xtensa-esp32-elf-osx-1.22.0-75-gbaf03c2-5.2.0.tar.gz
.. include:: /_build/inc/unpack-code-osx.inc
.. _setup-macos-toolchain-add-it-to-path:

View file

@ -5,3 +5,7 @@ set(COMPONENT_SRCS "ble_hidd_demo_main.c"
set(COMPONENT_ADD_INCLUDEDIRS ".")
register_component()
if(GCC_NOT_5_2_0)
component_compile_options(-Wno-unused-const-variable)
endif()

View file

@ -1,10 +1,7 @@
#
# Main Makefile. This is basically the same as a component makefile.
#
# This Makefile should, at the very least, just include $(SDK_PATH)/make/component_common.mk. By default,
# this will take the sources in the src/ directory, compile them and link them into
# lib(subdirectory_name).a in the build directory. This behaviour is entirely configurable,
# please read the ESP-IDF documents if you need to do this.
#
# include $(IDF_PATH)/make/component_common.mk
ifeq ($(GCC_NOT_5_2_0), 1)
hid_device_le_prf.o: CFLAGS += -Wno-unused-const-variable
endif

View file

@ -130,7 +130,7 @@ static esp_err_t task_write_reg()
if (i >= 28 && i <= 31) continue;
sdio_slave_write_reg(i, read+3*i);
}
uint8_t reg[64];
uint8_t reg[64] = {0};
for (int i = 0; i < 64; i++) {
//skip interrupt regs.
if (i >= 28 && i <= 31) continue;

View file

@ -157,4 +157,7 @@ Writing directory view page.
Overall coverage rate:
lines......: 90.0% (18 of 20 lines)
functions..: 100.0% (3 of 3 functions)
```
```
NOTE: Since `lcov` tool is not part of GCC bundle it can happen that format of GCOV binary data has been changed and your local version of `lcov` fails to understand it.
So it always better to use the latest `lcov` version from [LCOV repo](https://github.com/linux-test-project/lcov).

View file

@ -277,6 +277,22 @@ COMMON_WARNING_FLAGS = -Wall -Werror=all \
-Wextra \
-Wno-unused-parameter -Wno-sign-compare
ifdef CONFIG_DISABLE_GCC8_WARNINGS
COMMON_WARNING_FLAGS += -Wno-parentheses \
-Wno-sizeof-pointer-memaccess \
-Wno-clobbered \
-Wno-format-overflow \
-Wno-stringop-truncation \
-Wno-misleading-indentation \
-Wno-cast-function-type \
-Wno-implicit-fallthrough \
-Wno-unused-const-variable \
-Wno-switch-unreachable \
-Wno-format-truncation \
-Wno-memset-elt-size \
-Wno-int-in-bool-context
endif
ifdef CONFIG_WARN_WRITE_STRINGS
COMMON_WARNING_FLAGS += -Wwrite-strings
endif #CONFIG_WARN_WRITE_STRINGS
@ -376,6 +392,14 @@ OBJCOPY := $(call dequote,$(CONFIG_TOOLPREFIX))objcopy
SIZE := $(call dequote,$(CONFIG_TOOLPREFIX))size
export CC CXX LD AR OBJCOPY SIZE
COMPILER_VERSION_STR := $(shell $(CC) -dumpversion)
COMPILER_VERSION_NUM := $(subst .,,$(COMPILER_VERSION_STR))
GCC_NOT_5_2_0 := $(shell expr $(COMPILER_VERSION_STR) != "5.2.0")
export COMPILER_VERSION_STR COMPILER_VERSION_NUM GCC_NOT_5_2_0
CPPFLAGS += -DGCC_NOT_5_2_0=$(GCC_NOT_5_2_0)
export CPPFLAGS
PYTHON=$(call dequote,$(CONFIG_PYTHON))
# the app is the main executable built by the project
@ -562,28 +586,41 @@ print_flash_cmd: partition_table_get_info blank_ota_data
# Check toolchain version using the output of xtensa-esp32-elf-gcc --version command.
# The output normally looks as follows
# xtensa-esp32-elf-gcc (crosstool-NG crosstool-ng-1.22.0-59-ga194053) 4.8.5
# The part in brackets is extracted into TOOLCHAIN_COMMIT_DESC variable,
# the part after the brackets is extracted into TOOLCHAIN_GCC_VER.
# xtensa-esp32-elf-gcc (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a) 5.2.0
# The part in brackets is extracted into TOOLCHAIN_COMMIT_DESC variable
ifdef CONFIG_TOOLPREFIX
ifndef MAKE_RESTARTS
TOOLCHAIN_COMMIT_DESC := $(shell $(CC) --version | sed -E -n 's|.*crosstool-ng-([0-9]+).([0-9]+).([0-9]+)-([0-9]+)-g([0-9a-f]{7}).*|\1.\2.\3-\4-g\5|gp')
TOOLCHAIN_GCC_VER := $(shell $(CC) --version | sed -E -n 's|xtensa-esp32-elf-gcc.*\ \(.*\)\ (.*)|\1|gp')
TOOLCHAIN_HEADER := $(shell $(CC) --version | head -1)
TOOLCHAIN_PATH := $(shell which $(CC))
TOOLCHAIN_COMMIT_DESC := $(shell $(CC) --version | sed -E -n 's|.*\(crosstool-NG (.*)\).*|\1|gp')
TOOLCHAIN_GCC_VER := $(COMPILER_VERSION_STR)
# Officially supported version(s)
SUPPORTED_TOOLCHAIN_COMMIT_DESC := 1.22.0-80-g6c4433a
SUPPORTED_TOOLCHAIN_GCC_VERSIONS := 5.2.0
include $(IDF_PATH)/tools/toolchain_versions.mk
ifndef IS_BOOTLOADER_BUILD
$(info Toolchain path: $(TOOLCHAIN_PATH))
endif
ifdef TOOLCHAIN_COMMIT_DESC
ifneq ($(TOOLCHAIN_COMMIT_DESC), $(SUPPORTED_TOOLCHAIN_COMMIT_DESC))
$(info WARNING: Toolchain version is not supported: $(TOOLCHAIN_COMMIT_DESC))
$(info Expected to see version: $(SUPPORTED_TOOLCHAIN_COMMIT_DESC))
$(info Please check ESP-IDF setup instructions and update the toolchain, or proceed at your own risk.)
else
ifndef IS_BOOTLOADER_BUILD
$(info Toolchain version: $(TOOLCHAIN_COMMIT_DESC))
endif
endif
ifeq (,$(findstring $(TOOLCHAIN_GCC_VER), $(SUPPORTED_TOOLCHAIN_GCC_VERSIONS)))
$(info WARNING: Compiler version is not supported: $(TOOLCHAIN_GCC_VER))
$(info Expected to see version(s): $(SUPPORTED_TOOLCHAIN_GCC_VERSIONS))
$(info Please check ESP-IDF setup instructions and update the toolchain, or proceed at your own risk.)
else
ifndef IS_BOOTLOADER_BUILD
$(info Compiler version: $(TOOLCHAIN_GCC_VER))
endif
endif
else
$(info WARNING: Failed to find Xtensa toolchain, may need to alter PATH or set one in the configuration menu)

View file

@ -157,8 +157,18 @@ echo -e "\nFound issues:"
# Ignore the next messages:
# "error.o" or "-Werror" in compiler's command line
# "reassigning to symbol" or "changes choice state" in sdkconfig
sort -u "${LOG_SUSPECTED}" | \
grep -v "library/error\.o\|\ -Werror\|error\.d\|reassigning to symbol\|changes choice state" \
# 'Compiler and toochain versions is not supported' from make/project.mk
IGNORE_WARNS="\
library/error\.o\
\|\ -Werror\
\|error\.d\
\|reassigning to symbol\
\|changes choice state\
\|Compiler version is not supported\
\|Toolchain version is not supported\
"
sort -u "${LOG_SUSPECTED}" | grep -v "${IGNORE_WARNS}" \
&& RESULT=$RESULT_ISSUES \
|| echo -e "\tNone"

View file

@ -160,8 +160,17 @@ echo -e "\nFound issues:"
# Ignore the next messages:
# "error.o" or "-Werror" in compiler's command line
# "reassigning to symbol" or "changes choice state" in sdkconfig
sort -u "${LOG_SUSPECTED}" | \
grep -v "library/error.o\|\ -Werror\|reassigning to symbol\|changes choice state" \
# 'Compiler and toochain versions is not supported' from crosstool_version_check.cmake
IGNORE_WARNS="\
library/error\.o\
\|\ -Werror\
\|error\.d\
\|reassigning to symbol\
\|changes choice state\
\|crosstool_version_check\.cmake\
"
sort -u "${LOG_SUSPECTED}" | grep -v "${IGNORE_WARNS}" \
&& RESULT=$RESULT_ISSUES \
|| echo -e "\tNone"

View file

@ -17,7 +17,6 @@ function(crosstool_version_check expected_ctng_version)
OUTPUT_QUIET)
string(REGEX MATCH "crosstool-ng-[0-9a-g\\.-]+" ctng_version "${toolchain_stderr}")
string(REPLACE "crosstool-ng-" "" ctng_version "${ctng_version}")
# We use FIND to match version instead of STREQUAL because some toolchains are built
# with longer git hash strings than others. This will match any version which starts with
# the expected version string.
@ -30,3 +29,21 @@ function(crosstool_version_check expected_ctng_version)
"doesn't match supported version ${expected_ctng_version}. ${ctng_version_warning}")
endif()
endfunction()
function(get_expected_ctng_version _toolchain_ver _gcc_ver)
file(STRINGS ${IDF_PATH}/tools/toolchain_versions.mk config_contents)
foreach(name_and_value ${config_contents})
# Strip spaces
string(REPLACE " " "" name_and_value ${name_and_value})
# Find variable name
string(REGEX MATCH "^[^=]+" name ${name_and_value})
# Find the value
string(REPLACE "${name}=" "" value ${name_and_value})
# Getting values
if("${name}" STREQUAL "SUPPORTED_TOOLCHAIN_COMMIT_DESC")
set("${_toolchain_ver}" "${value}" PARENT_SCOPE)
elseif("${name}" STREQUAL "SUPPORTED_TOOLCHAIN_GCC_VERSIONS")
set(${_gcc_ver} "${value}" PARENT_SCOPE)
endif()
endforeach()
endfunction()

View file

@ -40,6 +40,13 @@ macro(idf_set_global_variables)
# path to idf.py tool
set(IDFTOOL ${PYTHON} "${IDF_PATH}/tools/idf.py")
# Temporary trick to support both gcc5 and gcc8 builds
if(CMAKE_C_COMPILER_VERSION VERSION_EQUAL 5.2.0)
set(GCC_NOT_5_2_0 0)
else()
set(GCC_NOT_5_2_0 1)
endif()
endmacro()
# Add all the IDF global compiler & preprocessor options
@ -86,6 +93,30 @@ function(idf_set_global_compiler_options)
-Wno-old-style-declaration
)
if(CONFIG_DISABLE_GCC8_WARNINGS)
add_compile_options(
-Wno-parentheses
-Wno-sizeof-pointer-memaccess
-Wno-clobbered
)
# doesn't use GCC_NOT_5_2_0 because idf_set_global_variables was not called before
if(NOT CMAKE_C_COMPILER_VERSION VERSION_EQUAL 5.2.0)
add_compile_options(
-Wno-format-overflow
-Wno-stringop-truncation
-Wno-misleading-indentation
-Wno-cast-function-type
-Wno-implicit-fallthrough
-Wno-unused-const-variable
-Wno-switch-unreachable
-Wno-format-truncation
-Wno-memset-elt-size
-Wno-int-in-bool-context
)
endif()
endif()
# Stack protection
if(NOT BOOTLOADER_BUILD)
if(CONFIG_STACK_CHECK_NORM)
@ -114,6 +145,8 @@ function(idf_set_global_compiler_options)
endif()
endif()
# Temporary trick to support both gcc5 and gcc8 builds
add_definitions(-DGCC_NOT_5_2_0=${GCC_NOT_5_2_0})
endfunction()
@ -134,8 +167,9 @@ function(idf_verify_environment)
# Warn if the toolchain version doesn't match
#
# TODO: make these platform-specific for diff toolchains
gcc_version_check("5.2.0")
crosstool_version_check("1.22.0-80-g6c4433a")
get_expected_ctng_version(expected_toolchain expected_gcc)
gcc_version_check("${expected_gcc}")
crosstool_version_check("${expected_toolchain}")
endfunction()

View file

@ -0,0 +1,6 @@
SUPPORTED_TOOLCHAIN_COMMIT_DESC = crosstool-ng-1.22.0-80-g6c4433a
SUPPORTED_TOOLCHAIN_GCC_VERSIONS = 5.2.0
CURRENT_TOOLCHAIN_COMMIT_DESC = crosstool-ng-1.22.0-80-g6c4433a
CURRENT_TOOLCHAIN_COMMIT_DESC_SHORT = 1.22.0-80-g6c4433a
CURRENT_TOOLCHAIN_GCC_VERSION = 5.2.0

View file

@ -1,3 +1,7 @@
#
# Component Makefile
#
ifeq ($(GCC_NOT_5_2_0), 1)
unity.o: CFLAGS += -Wno-unused-const-variable
endif