lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 1 Dec 2017 11:11:37 +0900
From:   Namhyung Kim <namhyung@...nel.org>
To:     Jiri Olsa <jolsa@...nel.org>
Cc:     Arnaldo Carvalho de Melo <acme@...nel.org>,
        lkml <linux-kernel@...r.kernel.org>,
        Ingo Molnar <mingo@...nel.org>,
        David Ahern <dsahern@...il.com>,
        Peter Zijlstra <a.p.zijlstra@...llo.nl>, kernel-team@....com
Subject: Re: [PATCH 2/3] perf tools: Fix build for hardened environments

Hi Jiri,

On Wed, Nov 08, 2017 at 11:27:38AM +0100, Jiri Olsa wrote:
> From: Jiri Olsa <jolsa@...hat.com>
> 
> 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 <jolsa@...nel.org>
> ---
>  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
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ