[U-Boot] [PATCH v5] Makefile: add a new script to check -fstack-usage support

Masahiro Yamada yamada.m at jp.panasonic.com
Wed Dec 11 12:11:34 CET 2013


If -fstack-usage option is given to crosstools
that do not support it, gcc displays a warning message
but still exits with status 0.

This means we can not rely on $(call cc-option,...)
to detect if -fstack-usage option is supported or not.

Signed-off-by: Masahiro Yamada <yamada.m at jp.panasonic.com>
---

Some crosstools currently do not support -fstack-usage option.
For example, bfin-uclinux-gcc, which is available at
https://www.kernel.org/pub/tools/crosstool/

If -fstack-usage option is given to such crosstools,
gcc displays a warning message as follows:

    warning: -fstack-usage not supported for this target [enabled by default]

But it still exits with status 0.

So, $(call cc-option,-fstack-usage) does not work as we expect
because cc-option checks exit status
to judge whether the given option is supported or not.


Changes in v5:
  - Rebased on Kbuild series

Changes in v4:
  - Drop executable permission of scripts/gcc-stack-usage.sh
  - Fix commit log
  - Add the rationale below ---

 Makefile                   |  4 +++-
 scripts/gcc-stack-usage.sh | 18 ++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)
 create mode 100644 scripts/gcc-stack-usage.sh

diff --git a/Makefile b/Makefile
index e034677..8f8a131 100644
--- a/Makefile
+++ b/Makefile
@@ -553,7 +553,9 @@ KBUILD_CFLAGS	+= -g
 KBUILD_AFLAGS	+= -g
 
 # Report stack usage if supported
-KBUILD_CFLAGS += $(call cc-option,-fstack-usage)
+ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-stack-usage.sh $(CC)),y)
+	KBUILD_CFLAGS += -fstack-usage
+endif
 
 KBUILD_CFLAGS += $(call cc-option,-Wno-format-nonliteral)
 
diff --git a/scripts/gcc-stack-usage.sh b/scripts/gcc-stack-usage.sh
new file mode 100644
index 0000000..27ac928
--- /dev/null
+++ b/scripts/gcc-stack-usage.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+# Test for gcc '-fstack-usage' support
+# Copyright (C) 2013, Masahiro Yamada <yamada.m at jp.panasonic.com>
+#
+# SPDX-License-Identifier:	GPL-2.0+
+#
+
+TMP="$$"
+
+cat <<END | $@ -Werror -fstack-usage -x c - -c -o $TMP >/dev/null 2>&1 \
+							&& echo "y"
+int main(void)
+{
+	return 0;
+}
+END
+
+rm -f $TMP $TMP.su
-- 
1.8.3.2



More information about the U-Boot mailing list