From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751862AbdLACLm (ORCPT ); Thu, 30 Nov 2017 21:11:42 -0500 Received: from LGEAMRELO11.lge.com ([156.147.23.51]:37518 "EHLO lgeamrelo11.lge.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750735AbdLACLl (ORCPT ); Thu, 30 Nov 2017 21:11:41 -0500 X-Original-SENDERIP: 156.147.1.125 X-Original-MAILFROM: namhyung@kernel.org X-Original-SENDERIP: 10.177.227.17 X-Original-MAILFROM: namhyung@kernel.org Date: Fri, 1 Dec 2017 11:11:37 +0900 From: Namhyung Kim To: Jiri Olsa Cc: Arnaldo Carvalho de Melo , lkml , Ingo Molnar , David Ahern , Peter Zijlstra , kernel-team@lge.com Subject: Re: [PATCH 2/3] perf tools: Fix build for hardened environments Message-ID: <20171201021137.GA30867@sejong> References: <20171108102739.30338-1-jolsa@kernel.org> <20171108102739.30338-3-jolsa@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20171108102739.30338-3-jolsa@kernel.org> User-Agent: Mutt/1.9.1 (2017-09-22) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jiri, On Wed, Nov 08, 2017 at 11:27:38AM +0100, Jiri Olsa wrote: > From: Jiri Olsa > > On Fedora systems the perl and python CFLAGS/LDFLAGS include the > hardened specs from redhat-rpm-config package. We apply them only > for perl/python objects, which makes them not compatible with the > rest of the objects and the build fails with: > > /usr/bin/ld: perf-in.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC > /usr/bin/ld: libperf.a(libperf-in.o): relocation R_X86_64_32S against `.text' can not be used when making a shared object; recompile with -fPIC > /usr/bin/ld: final link failed: Nonrepresentable section on output > collect2: error: ld returned 1 exit status > make[2]: *** [Makefile.perf:507: perf] Error 1 > make[1]: *** [Makefile.perf:210: sub-make] Error 2 > make: *** [Makefile:69: all] Error 2 > > Mainly it's caused by perl/python objects being compiled with: > > -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 > > which prevent the final link impossible, because it will check > for 'proper' objects with following option: > > -specs=/usr/lib/rpm/redhat/redhat-hardened-ld Just for curiousity, could you please show me the contents of the two files? (Are they big?) Thanks, Namhyung > > Fixing this by using the perl/python CFLAGS/LDFLAGS options > for all the objects. > > Link: http://lkml.kernel.org/n/tip-bib4nb5dei0ubk83534efamz@git.kernel.org > Signed-off-by: Jiri Olsa > --- > tools/perf/Makefile.config | 2 ++ > tools/perf/scripts/perl/Perf-Trace-Util/Build | 2 +- > tools/perf/scripts/python/Perf-Trace-Util/Build | 2 +- > tools/perf/util/block-range.c | 2 +- > tools/perf/util/scripting-engines/Build | 4 ++-- > 5 files changed, 7 insertions(+), 5 deletions(-) > > diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config > index f6786fa2419f..5e3734e4c1e4 100644 > --- a/tools/perf/Makefile.config > +++ b/tools/perf/Makefile.config > @@ -587,6 +587,7 @@ else > NO_LIBPERL := 1 > msg := $(warning Missing perl devel files. Disabling perl scripting support, please install perl-ExtUtils-Embed/libperl-dev); > else > + CFLAGS += $(PERL_EMBED_CCOPTS) > LDFLAGS += $(PERL_EMBED_LDFLAGS) > EXTLIBS += $(PERL_EMBED_LIBADD) > $(call detected,CONFIG_LIBPERL) > @@ -636,6 +637,7 @@ else > $(warning $(and ,)) > $(error $(and ,)) > else > + CFLAGS += $(PYTHON_EMBED_CCOPTS) > LDFLAGS += $(PYTHON_EMBED_LDFLAGS) > EXTLIBS += $(PYTHON_EMBED_LIBADD) > LANG_BINDINGS += $(obj-perf)python/perf.so > diff --git a/tools/perf/scripts/perl/Perf-Trace-Util/Build b/tools/perf/scripts/perl/Perf-Trace-Util/Build > index 34faecf774ae..ff9a452677fc 100644 > --- a/tools/perf/scripts/perl/Perf-Trace-Util/Build > +++ b/tools/perf/scripts/perl/Perf-Trace-Util/Build > @@ -1,5 +1,5 @@ > libperf-y += Context.o > > -CFLAGS_Context.o += $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes > +CFLAGS_Context.o += -Wno-redundant-decls -Wno-strict-prototypes > CFLAGS_Context.o += -Wno-unused-parameter -Wno-nested-externs -Wno-undef > CFLAGS_Context.o += -Wno-switch-default -Wno-shadow > diff --git a/tools/perf/scripts/python/Perf-Trace-Util/Build b/tools/perf/scripts/python/Perf-Trace-Util/Build > index aefc15c9444a..cd4da129c017 100644 > --- a/tools/perf/scripts/python/Perf-Trace-Util/Build > +++ b/tools/perf/scripts/python/Perf-Trace-Util/Build > @@ -1,3 +1,3 @@ > libperf-y += Context.o > > -CFLAGS_Context.o += $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs > +CFLAGS_Context.o += -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-nested-externs > diff --git a/tools/perf/util/block-range.c b/tools/perf/util/block-range.c > index f1451c987eec..ff76d5f1d96f 100644 > --- a/tools/perf/util/block-range.c > +++ b/tools/perf/util/block-range.c > @@ -15,7 +15,7 @@ static void block_range__debug(void) > */ > #if 1 > struct rb_node *rb; > - u64 old = 0; /* NULL isn't executable */ > + u64 old __maybe_unused = 0; /* NULL isn't executable */ > > for (rb = rb_first(&block_ranges.root); rb; rb = rb_next(rb)) { > struct block_range *entry = rb_entry(rb, struct block_range, node); > diff --git a/tools/perf/util/scripting-engines/Build b/tools/perf/util/scripting-engines/Build > index 82d28c67e0f3..38cd25ce1503 100644 > --- a/tools/perf/util/scripting-engines/Build > +++ b/tools/perf/util/scripting-engines/Build > @@ -1,6 +1,6 @@ > libperf-$(CONFIG_LIBPERL) += trace-event-perl.o > libperf-$(CONFIG_LIBPYTHON) += trace-event-python.o > > -CFLAGS_trace-event-perl.o += $(PERL_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow -Wno-nested-externs -Wno-undef -Wno-switch-default > +CFLAGS_trace-event-perl.o += -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow -Wno-nested-externs -Wno-undef -Wno-switch-default > > -CFLAGS_trace-event-python.o += $(PYTHON_EMBED_CCOPTS) -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow > +CFLAGS_trace-event-python.o += -Wno-redundant-decls -Wno-strict-prototypes -Wno-unused-parameter -Wno-shadow > -- > 2.13.6 >