Skip to content

Commit

Permalink
lwip: Support silent assertion configuration
Browse files Browse the repository at this point in the history
If silent assert configuration is enabled, LWIP asserts are now 'silent' also.

Also updates KConfig to note that LWIP asserts are also disabled when asserts
are disabled globally (this was already the behaviour, but the config item
suggested otherwise.)

Progress towards #5873
  • Loading branch information
projectgus committed Apr 2, 2021
1 parent bf6ddf2 commit 73d40cb
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
8 changes: 6 additions & 2 deletions components/lwip/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -757,9 +757,13 @@ menu "LWIP"
config LWIP_ESP_LWIP_ASSERT
bool "Enable LWIP ASSERT checks"
default y
depends on !COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE
help
Enable this option allows lwip to check assert.
It is recommended to keep it open, do not close it.
Enable this option keeps LWIP assertion checks enabled.
It is recommended to keep this option enabled.

If asserts are disabled for the entire project, they are also disabled
for LWIP and this option is ignored.

menu "Hooks"

Expand Down
13 changes: 10 additions & 3 deletions components/lwip/port/esp32/include/arch/cc.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,20 @@ typedef int sys_prot_t;
#include <stdio.h>

#define LWIP_PLATFORM_DIAG(x) do {printf x;} while(0)
// __assert_func is the assertion failure handler from newlib, defined in assert.h
#define LWIP_PLATFORM_ASSERT(message) __assert_func(__FILE__, __LINE__, __ASSERT_FUNC, message)

#ifdef NDEBUG
#define LWIP_NOASSERT

#define LWIP_NOASSERT 1

#else // Assertions enabled

#if CONFIG_OPTIMIZATION_ASSERTIONS_SILENT
#define LWIP_PLATFORM_ASSERT(message) abort()
#else
// __assert_func is the assertion failure handler from newlib, defined in assert.h
#define LWIP_PLATFORM_ASSERT(message) __assert_func(__FILE__, __LINE__, __ASSERT_FUNC, message)
#endif

// If assertions are on, the default LWIP_ERROR handler behaviour is to
// abort w/ an assertion failure. Don't do this, instead just print the error (if LWIP_DEBUG is set)
// and run the handler (same as the LWIP_ERROR behaviour if LWIP_NOASSERT is set).
Expand Down

0 comments on commit 73d40cb

Please sign in to comment.