diff --git a/Tools/ardupilotwaf/boards.py b/Tools/ardupilotwaf/boards.py index d18ffab3f0..85fd4ddabe 100644 --- a/Tools/ardupilotwaf/boards.py +++ b/Tools/ardupilotwaf/boards.py @@ -663,6 +663,13 @@ class chibios(Board): else: cfg.msg("Enabling ChibiOS asserts", "no") + if cfg.env.ENABLE_MALLOC_GUARD: + cfg.msg("Enabling malloc guard", "yes") + env.CFLAGS += [ '-DHAL_CHIBIOS_ENABLE_MALLOC_GUARD' ] + env.CXXFLAGS += [ '-DHAL_CHIBIOS_ENABLE_MALLOC_GUARD' ] + else: + cfg.msg("Enabling malloc guard", "no") + env.LIB += ['gcc', 'm'] env.GIT_SUBMODULES += [ diff --git a/Tools/ardupilotwaf/chibios.py b/Tools/ardupilotwaf/chibios.py index ef50e85b34..a5d1036cf8 100644 --- a/Tools/ardupilotwaf/chibios.py +++ b/Tools/ardupilotwaf/chibios.py @@ -292,6 +292,9 @@ def load_env_vars(env): print("env set %s=%s" % (k, v)) if env.ENABLE_ASSERTS: env.CHIBIOS_BUILD_FLAGS += ' ENABLE_ASSERTS=yes' + if env.ENABLE_MALLOC_GUARD: + env.CHIBIOS_BUILD_FLAGS += ' ENABLE_MALLOC_GUARD=yes' + def setup_optimization(env): '''setup optimization flags for build''' diff --git a/wscript b/wscript index 9b2a3a8d63..d7f0fde33d 100644 --- a/wscript +++ b/wscript @@ -96,6 +96,11 @@ def options(opt): default=False, help='enable OS level asserts.') + g.add_option('--enable-malloc-guard', + action='store_true', + default=False, + help='enable malloc guard regions.') + g.add_option('--bootloader', action='store_true', default=False, @@ -277,6 +282,7 @@ def configure(cfg): cfg.env.DEBUG = cfg.options.debug cfg.env.ENABLE_ASSERTS = cfg.options.enable_asserts cfg.env.BOOTLOADER = cfg.options.bootloader + cfg.env.ENABLE_MALLOC_GUARD = cfg.options.enable_malloc_guard cfg.env.OPTIONS = cfg.options.__dict__