Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1276472

[PATCH 01/16] tools build: Clean CFLAGS and LDFLAGS for fixdep

From Wang Nan <wangnan0@huawei.com>
Newsgroups linux.kernel
Subject [PATCH 01/16] tools build: Clean CFLAGS and LDFLAGS for fixdep
Date 2015-11-24 14:50 +0100
Message-ID <qym8O-jw-19@gated-at.bofh.it> (permalink)
References <qylZ8-g8-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Sometimes variables passed to tools/build is dangerous. For example, on
my platform there is a gcc problem (gcc 4.8.1):

It passes stackprotector-all feature check:
 $ gcc -fstack-protector-all./test.c
 $ echo $?
 0

But requires LDFLAGS support if separete compiling and linking:
 $ gcc -fstack-protector-all -c ./test.c
 $ gcc ./test.o
 ./test.o: In function `main':
 test.c:(.text+0xb): undefined reference to `__stack_chk_guard'
 test.c:(.text+0x21): undefined reference to `__stack_chk_guard'
 collect2: error: ld returned 1 exit status
 $ gcc -fstack-protector-all ./test.o
 $ echo $?
 0
 $ gcc ./test.o -lssp
 $ echo $?
 0

In this environment perf building throws an error:

 $ make
   BUILD:   Doing 'make -j24' parallel build
 config/Makefile:344: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR
 config/Makefile:403: No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev
 config/Makefile:418: slang not found, disables TUI support. Please install slang-devel or libslang-dev
 config/Makefile:432: GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev
 config/Makefile:564: No bfd.h/libbfd found, please install binutils-dev[el]/zlib-static/libiberty-dev to gain symbol demangling
 config/Makefile:606: No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev
   CC       fixdep.o
   LD       fixdep-in.o
   LINK     fixdep
 fixdep-in.o: In function `parse_dep_file':
 /kernel/tools/build/fixdep.c:47: undefined reference to `__stack_chk_guard'
 /kernel/tools/build/fixdep.c:117: undefined reference to `__stack_chk_guard'
 fixdep-in.o: In function `main':
 /kernel-hydrogen/tools/build/fixdep.c:156: undefined reference to `__stack_chk_guard'
 /kernel/tools/build/fixdep.c:168: undefined reference to `__stack_chk_guard'
 collect2: error: ld returned 1 exit status
 make[2]: *** [fixdep] Error 1
 make[1]: *** [fixdep] Error 2
 make: *** [all] Error 2

This is because CFLAGS in perf building pollutes CFLAGS used for fixdep,
passes -fstack-protector-all to fixdep builder which is obviously not
required. Since fixdep is a small host side tool, we should keep its
CFLAGS/LDFLAGS simple anc clean.

This patch clear CFLAGS and LDFLAGS passed to fixdep building, so such
gcc problem won't block perf building.

Signed-off-by: Wang Nan <wangnan0@huawei.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/build/Makefile.include | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/build/Makefile.include b/tools/build/Makefile.include
index 4e09ad6..6254760 100644
--- a/tools/build/Makefile.include
+++ b/tools/build/Makefile.include
@@ -4,7 +4,7 @@ ifdef CROSS_COMPILE
 fixdep:
 else
 fixdep:
-	$(Q)$(MAKE) -C $(srctree)/tools/build fixdep
+	$(Q)$(MAKE) -C $(srctree)/tools/build CFLAGS= LDFLAGS= fixdep
 endif
 
 .PHONY: fixdep
-- 
1.8.3.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH 01/16] tools build: Clean CFLAGS and LDFLAGS for fixdep Wang Nan <wangnan0@huawei.com> - 2015-11-24 14:50 +0100
  [tip:perf/core] tools build: Clean CFLAGS and LDFLAGS for fixdep tip-bot for Wang Nan <tipbot@zytor.com> - 2015-11-26 09:30 +0100

csiph-web