diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a30bb11af..8a3075c77 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -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 diff --git a/Kconfig b/Kconfig index ff1a6d017..98e5f2a9e 100644 --- a/Kconfig +++ b/Kconfig @@ -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" diff --git a/components/app_trace/gcov/gcov_rtio.c b/components/app_trace/gcov/gcov_rtio.c index e53eb6431..49598ddcc 100644 --- a/components/app_trace/gcov/gcov_rtio.c +++ b/components/app_trace/gcov/gcov_rtio.c @@ -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 diff --git a/components/bt/CMakeLists.txt b/components/bt/CMakeLists.txt index 1bcea86c4..df32f9f94 100644 --- a/components/bt/CMakeLists.txt +++ b/components/bt/CMakeLists.txt @@ -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() diff --git a/components/bt/bluedroid/osi/list.c b/components/bt/bluedroid/osi/list.c index 634727a66..252420399 100644 --- a/components/bt/bluedroid/osi/list.c +++ b/components/bt/bluedroid/osi/list.c @@ -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; diff --git a/components/bt/component.mk b/components/bt/component.mk index f0c1f1202..eb9b39c02 100644 --- a/components/bt/component.mk +++ b/components/bt/component.mk @@ -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 diff --git a/components/coap/CMakeLists.txt b/components/coap/CMakeLists.txt index 225745e8c..a7800e64f 100644 --- a/components/coap/CMakeLists.txt +++ b/components/coap/CMakeLists.txt @@ -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() \ No newline at end of file diff --git a/components/coap/component.mk b/components/coap/component.mk index 4b3d56f56..bd7b0e0a6 100644 --- a/components/coap/component.mk +++ b/components/coap/component.mk @@ -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 diff --git a/components/cxx/cxx_exception_stubs.cpp b/components/cxx/cxx_exception_stubs.cpp index b67bc2ad3..f09f946dd 100644 --- a/components/cxx/cxx_exception_stubs.cpp +++ b/components/cxx/cxx_exception_stubs.cpp @@ -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. diff --git a/components/cxx/test/test_cxx.cpp b/components/cxx/test/test_cxx.cpp index 91bac6313..ead4774d1 100644 --- a/components/cxx/test/test_cxx.cpp +++ b/components/cxx/test/test_cxx.cpp @@ -1,5 +1,7 @@ #include -#include +#include +#include +#include #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 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 diff --git a/components/espcoredump/test/expected_output_new_CT b/components/espcoredump/test/expected_output_new_CT new file mode 100644 index 000000000..f4e50d853 --- /dev/null +++ b/components/espcoredump/test/expected_output_new_CT @@ -0,0 +1,540 @@ +espcoredump.py v0.2-dev +=============================================================== +==================== ESP32 CORE DUMP START ==================== + +================== CURRENT THREAD REGISTERS =================== +pc 0x400d216d 0x400d216d +lbeg 0x400014fd 1073747197 +lend 0x4000150d 1073747213 +lcount 0xffffffff 4294967295 +sar 0x0 0 +ps 0x60420 394272 +threadptr +br +scompare1 +acclo +acchi +m0 +m1 +m2 +m3 +expstate +f64r_lo +f64r_hi +f64s +fcr +fsr +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
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=) at /home/dragon/esp/esp-idf/components/freertos/tasks.c:1491 + 5 process 4 0x4008559e in vTaskDelay (xTicksToDelay=) at /home/dragon/esp/esp-idf/components/freertos/tasks.c:1491 + 6 process 5 0x4008629c in prvProcessTimerOrBlockTask (xNextExpireTime=, xListWasEmpty=) 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! diff --git a/components/espcoredump/test/test_espcoredump.sh b/components/espcoredump/test/test_espcoredump.sh index 8a8499ce4..7970dd132 100755 --- a/components/espcoredump/test/test_espcoredump.sh +++ b/components/espcoredump/test/test_espcoredump.sh @@ -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; } - diff --git a/components/expat/CMakeLists.txt b/components/expat/CMakeLists.txt index 02037dc21..821705658 100644 --- a/components/expat/CMakeLists.txt +++ b/components/expat/CMakeLists.txt @@ -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() \ No newline at end of file diff --git a/components/expat/component.mk b/components/expat/component.mk index 851f6a8c3..351fe3b74 100644 --- a/components/expat/component.mk +++ b/components/expat/component.mk @@ -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 diff --git a/components/libsodium/CMakeLists.txt b/components/libsodium/CMakeLists.txt index 2ed003f13..aa39b0047 100644 --- a/components/libsodium/CMakeLists.txt +++ b/components/libsodium/CMakeLists.txt @@ -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() \ No newline at end of file diff --git a/components/libsodium/component.mk b/components/libsodium/component.mk index 12dcb571a..c84519cb3 100644 --- a/components/libsodium/component.mk +++ b/components/libsodium/component.mk @@ -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 diff --git a/components/lwip/CMakeLists.txt b/components/lwip/CMakeLists.txt index 068d8a5c4..794d5bc6a 100644 --- a/components/lwip/CMakeLists.txt +++ b/components/lwip/CMakeLists.txt @@ -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() diff --git a/components/lwip/component.mk b/components/lwip/component.mk index d79cbd36c..e33ea7f36 100644 --- a/components/lwip/component.mk +++ b/components/lwip/component.mk @@ -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 diff --git a/components/mqtt/CMakeLists.txt b/components/mqtt/CMakeLists.txt index 27cf1e285..d100f80a0 100644 --- a/components/mqtt/CMakeLists.txt +++ b/components/mqtt/CMakeLists.txt @@ -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() diff --git a/components/mqtt/component.mk b/components/mqtt/component.mk index 19e498025..7c7715954 100644 --- a/components/mqtt/component.mk +++ b/components/mqtt/component.mk @@ -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 diff --git a/components/vfs/vfs_uart.c b/components/vfs/vfs_uart.c index e407de475..7a1fb5914 100644 --- a/components/vfs/vfs_uart.c +++ b/components/vfs/vfs_uart.c @@ -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; diff --git a/docs/conf_common.py b/docs/conf_common.py index 1ff9d351d..2832f83f4 100644 --- a/docs/conf_common.py +++ b/docs/conf_common.py @@ -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 # diff --git a/docs/en/get-started/linux-setup-scratch.rst b/docs/en/get-started/linux-setup-scratch.rst index 72756852f..40b5e432f 100644 --- a/docs/en/get-started/linux-setup-scratch.rst +++ b/docs/en/get-started/linux-setup-scratch.rst @@ -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:: diff --git a/docs/en/get-started/linux-setup.rst b/docs/en/get-started/linux-setup.rst index 1cddf4284..00d024ac5 100644 --- a/docs/en/get-started/linux-setup.rst +++ b/docs/en/get-started/linux-setup.rst @@ -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: diff --git a/docs/en/get-started/macos-setup-scratch.rst b/docs/en/get-started/macos-setup-scratch.rst index 731122723..f743d9995 100644 --- a/docs/en/get-started/macos-setup-scratch.rst +++ b/docs/en/get-started/macos-setup-scratch.rst @@ -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:: diff --git a/docs/en/get-started/macos-setup.rst b/docs/en/get-started/macos-setup.rst index 00e5be431..2708dc6e6 100644 --- a/docs/en/get-started/macos-setup.rst +++ b/docs/en/get-started/macos-setup.rst @@ -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: diff --git a/docs/en/get-started/windows-setup-scratch.rst b/docs/en/get-started/windows-setup-scratch.rst index 4c772eeb3..fc64e2a23 100644 --- a/docs/en/get-started/windows-setup-scratch.rst +++ b/docs/en/get-started/windows-setup-scratch.rst @@ -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:: diff --git a/docs/gen-toolchain-links.py b/docs/gen-toolchain-links.py new file mode 100644 index 000000000..10c2aeef9 --- /dev/null +++ b/docs/gen-toolchain-links.py @@ -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 ") + 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() diff --git a/docs/zh_CN/get-started/linux-setup-scratch.rst b/docs/zh_CN/get-started/linux-setup-scratch.rst index 732a37e4e..3610ce06f 100644 --- a/docs/zh_CN/get-started/linux-setup-scratch.rst +++ b/docs/zh_CN/get-started/linux-setup-scratch.rst @@ -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 编译工具链:: diff --git a/docs/zh_CN/get-started/linux-setup.rst b/docs/zh_CN/get-started/linux-setup.rst index 28b4b3770..d1d658924 100644 --- a/docs/zh_CN/get-started/linux-setup.rst +++ b/docs/zh_CN/get-started/linux-setup.rst @@ -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: diff --git a/docs/zh_CN/get-started/macos-setup-scratch.rst b/docs/zh_CN/get-started/macos-setup-scratch.rst index 5b0ab044c..30d7d7f73 100644 --- a/docs/zh_CN/get-started/macos-setup-scratch.rst +++ b/docs/zh_CN/get-started/macos-setup-scratch.rst @@ -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 编译工具链:: diff --git a/docs/zh_CN/get-started/macos-setup.rst b/docs/zh_CN/get-started/macos-setup.rst index 255a792a7..781a6d746 100644 --- a/docs/zh_CN/get-started/macos-setup.rst +++ b/docs/zh_CN/get-started/macos-setup.rst @@ -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: diff --git a/examples/bluetooth/ble_hid_device_demo/main/CMakeLists.txt b/examples/bluetooth/ble_hid_device_demo/main/CMakeLists.txt index cada4eb3c..1969d3995 100644 --- a/examples/bluetooth/ble_hid_device_demo/main/CMakeLists.txt +++ b/examples/bluetooth/ble_hid_device_demo/main/CMakeLists.txt @@ -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() diff --git a/examples/bluetooth/ble_hid_device_demo/main/component.mk b/examples/bluetooth/ble_hid_device_demo/main/component.mk index 48adb595c..4fa5a1b02 100644 --- a/examples/bluetooth/ble_hid_device_demo/main/component.mk +++ b/examples/bluetooth/ble_hid_device_demo/main/component.mk @@ -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 \ No newline at end of file diff --git a/examples/peripherals/sdio/slave/main/app_main.c b/examples/peripherals/sdio/slave/main/app_main.c index 4f6eeddbc..ced905d90 100644 --- a/examples/peripherals/sdio/slave/main/app_main.c +++ b/examples/peripherals/sdio/slave/main/app_main.c @@ -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; diff --git a/examples/system/gcov/README.md b/examples/system/gcov/README.md index 1115146cc..d1c7126b1 100644 --- a/examples/system/gcov/README.md +++ b/examples/system/gcov/README.md @@ -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) -``` \ No newline at end of file +``` + +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). \ No newline at end of file diff --git a/make/project.mk b/make/project.mk index 364f72970..71d86d316 100644 --- a/make/project.mk +++ b/make/project.mk @@ -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) diff --git a/tools/ci/build_examples.sh b/tools/ci/build_examples.sh index a36ab8f80..81576bf55 100755 --- a/tools/ci/build_examples.sh +++ b/tools/ci/build_examples.sh @@ -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" diff --git a/tools/ci/build_examples_cmake.sh b/tools/ci/build_examples_cmake.sh index 39840a385..849943b93 100755 --- a/tools/ci/build_examples_cmake.sh +++ b/tools/ci/build_examples_cmake.sh @@ -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" diff --git a/tools/cmake/crosstool_version_check.cmake b/tools/cmake/crosstool_version_check.cmake index d572a82a7..1180fc029 100644 --- a/tools/cmake/crosstool_version_check.cmake +++ b/tools/cmake/crosstool_version_check.cmake @@ -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() diff --git a/tools/cmake/idf_functions.cmake b/tools/cmake/idf_functions.cmake index d68eabf62..f84deb70a 100644 --- a/tools/cmake/idf_functions.cmake +++ b/tools/cmake/idf_functions.cmake @@ -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() diff --git a/tools/toolchain_versions.mk b/tools/toolchain_versions.mk new file mode 100644 index 000000000..cf74ef5ec --- /dev/null +++ b/tools/toolchain_versions.mk @@ -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 diff --git a/tools/unit-test-app/components/unity/component.mk b/tools/unit-test-app/components/unity/component.mk index ebd7a7d59..c3c44cc0c 100644 --- a/tools/unit-test-app/components/unity/component.mk +++ b/tools/unit-test-app/components/unity/component.mk @@ -1,3 +1,7 @@ # # Component Makefile # + +ifeq ($(GCC_NOT_5_2_0), 1) +unity.o: CFLAGS += -Wno-unused-const-variable +endif \ No newline at end of file