From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeroen Hofstee Date: Tue, 08 Oct 2013 21:46:30 +0200 Subject: [U-Boot] [PATCH] config.mk: enable -fstack-usage only when it is desired In-Reply-To: <20130930170150.6DA6.AA925319@jp.panasonic.com> References: <20130927110901.5405.AA925319@jp.panasonic.com> <5245C703.6060907@myspectrum.nl> <20130930170150.6DA6.AA925319@jp.panasonic.com> Message-ID: <52546116.1060105@myspectrum.nl> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Masahiro, On 09/30/2013 10:01 AM, Masahiro Yamada wrote: > Hello Jeroen, > >> diff --git a/config.mk b/config.mk >> index 48913f6..177f685 100644 >> --- a/config.mk >> +++ b/config.mk >> @@ -117,7 +117,7 @@ CC_TEST_OFILE := >> $(OBJTREE)/include/generated/cc_test_file.o >> -include $(CC_OPTIONS_CACHE_FILE) >> >> cc-option-sys = $(shell mkdir -p $(dir $(CC_TEST_OFILE)); \ >> - if $(CC) $(CFLAGS) $(1) -S -xc /dev/null -o >> $(CC_TEST_OFILE) \ >> + if $(CC) -Werror $(CFLAGS) $(1) -S -xc /dev/null -o >> $(CC_TEST_OFILE) \ >> > /dev/null 2>&1; then \ >> echo 'CC_OPTIONS += $(strip $1)' >> >> $(CC_OPTIONS_CACHE_FILE); \ >> echo "$(1)"; fi) > > > It looks like this was already suggested by Tom too. > See http://patchwork.ozlabs.org/patch/183174/ > > I tested this patch but unfortunatelly it did not work. > > > I downloaded bfin-linux-gcc 4.6.3 from > ftp://ftp.kernel.org/pub/tools/crosstool/index.html > > I added -Werror to config.mk and I tried: > > CROSS_COMPILE=bfin-linux- ./MAKEALL -a blackfin > > The log message was still sprinkled with lots of warnings like > warning: -fstack-usage not supported for this target [enabled by default] > > So, I looked into it more closely and > I found gcc can compile the input file /dev/null successfully > even if -fstack-usage is not supported. > > > $ bfin-uclinux-gcc -fstack-usage -S -xc /dev/null > $ echo $? > 0 > $ bfin-uclinux-gcc -Werror -fstack-usage -S -xc /dev/null > $ echo $? > 0 > > > > Instead of /dev/null, I prepared a very simple C source code as an input. > > $ cat test.c > int test(void) > { > return 0; > } > $ bfin-uclinux-gcc -fstack-usage -S -xc test.c > test.c: In function 'test': > test.c:4:1: warning: -fstack-usage not supported for this target [enabled by default] > $ echo $? > 0 > $ bfin-uclinux-gcc -fstack-usage -Werror -S -xc test.c > test.c: In function 'test': > test.c:4:1: error: -fstack-usage not supported for this target [-Werror] > cc1: all warnings being treated as errors > $ echo $? > 1 > > This time we can detect unsupported -fstack-usage by the exit status. > > So, along with -Werror, I think /dev/null should also be replaced > with some _REAL_ C source file. > But my concern about this treak is we might go far from Kbuild. > In Linux Kernel, cc-option is impilemented in scripts/Kbuild.include. > It uses /dev/null as input. > I wish U-Boot would someday adopt (not nessarily the same but very > similar) Kbuild. > > If you see Linux Kernel top Makefile, > many of optional CFLAGS are provided thru cc-option and > also can be turned on/off by CONFIG_ switch. > > That is one reason I suggested to introduce CONFIG_CC_STACKUSAGE option. > But this is just my opinion and I would not necessarily stick to this idea. > Please feel free to suggest your thought. > > I tried to google this a bit, one thing I found was http://sourceware.org/bugzilla/show_bug.cgi?id=5210, but I fail to (easily) find a reliable gcc reference. Perhaps we should file a bug? -Werror doesn't work with /dev/null when -fstack-usage is not supported... I cannot comment on your concern regarding Kbuild, since I am unaware of its internals. I just suggested above since it would be a cleaner approach (if it worked...). Regards, Jeroen