This is an automated email from the ASF dual-hosted git repository. xiaoxiang pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit 004607039541d6784bb4d36375ff42b82a8ba0c5 Author: liwenxiang1 <[email protected]> AuthorDate: Mon Jan 6 16:02:22 2025 +0800 arch/x86_64:Add runtime stack size analysis Add runtime stack size analysis tool Signed-off-by: liwenxiang1 <[email protected]> --- arch/x86_64/include/irq.h | 2 +- arch/x86_64/src/cmake/Toolchain.cmake | 4 ++++ arch/x86_64/src/common/Toolchain.defs | 6 ++++++ arch/x86_64/src/intel64/intel64_handlers.c | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/arch/x86_64/include/irq.h b/arch/x86_64/include/irq.h index 574f5874586..b404a23dd55 100644 --- a/arch/x86_64/include/irq.h +++ b/arch/x86_64/include/irq.h @@ -150,7 +150,7 @@ static inline_function bool up_interrupt_context(void) { bool flag; __asm__ volatile("movb %%gs:(%c1), %0" - : "=qm" (flag) + : "=qr" (flag) : "i" (offsetof(struct intel64_cpu_s, interrupt_context))); return flag; diff --git a/arch/x86_64/src/cmake/Toolchain.cmake b/arch/x86_64/src/cmake/Toolchain.cmake index 66780c438c7..fdff54ab0bc 100644 --- a/arch/x86_64/src/cmake/Toolchain.cmake +++ b/arch/x86_64/src/cmake/Toolchain.cmake @@ -77,6 +77,10 @@ if(${CONFIG_STACK_USAGE_WARNING}) endif() endif() +if(CONFIG_ARCH_INSTRUMENT_ALL) + add_compile_options(-finstrument-functions) +endif() + if(CONFIG_COVERAGE_ALL) add_compile_options(-fprofile-arcs -ftest-coverage -fno-inline) endif() diff --git a/arch/x86_64/src/common/Toolchain.defs b/arch/x86_64/src/common/Toolchain.defs index 6be1980d1a6..ff2309e3c16 100644 --- a/arch/x86_64/src/common/Toolchain.defs +++ b/arch/x86_64/src/common/Toolchain.defs @@ -71,6 +71,12 @@ ifneq ($(CONFIG_STACK_USAGE_WARNING),0) ARCHOPTIMIZATION += -Wstack-usage=$(CONFIG_STACK_USAGE_WARNING) endif +# Instrumentation options + +ifeq ($(CONFIG_ARCH_INSTRUMENT_ALL),y) + ARCHOPTIMIZATION += -finstrument-functions +endif + ARCHCFLAGS += -fno-common -Wno-attributes ARCHCXXFLAGS += -fno-common -Wno-attributes -nostdinc++ diff --git a/arch/x86_64/src/intel64/intel64_handlers.c b/arch/x86_64/src/intel64/intel64_handlers.c index 61949c8abcb..93a536c8c0d 100644 --- a/arch/x86_64/src/intel64/intel64_handlers.c +++ b/arch/x86_64/src/intel64/intel64_handlers.c @@ -188,7 +188,7 @@ uint64_t *irq_handler(uint64_t *regs, uint64_t irq_no) * ****************************************************************************/ -nosanitize_address +noinstrument_function nosanitize_address uint64_t *irq_xcp_regs(void) { /* This must be the simplest as possible, so we not use too much registers.
