Re: [PATCH 18/36] perf s390: Always build with -fPIC

Hendrik Brueckner
2017-12-07T08:10:01Z

Hi Arnaldo,

On Wed, Dec 06, 2017 at 11:40:57AM -0300, Arnaldo Carvalho de Melo wrote:
> From: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
>
> On s390, object files must be compiled with position-indepedent code in
> order to be incrementally linked or linked to shared libraries.
> Therefore, add -fPIC to the CFLAGS for s390 to ensure each object file
> is built properly.
>
> Reported-by: Jonathan Hermann <jonathan.hermann@de.ibm.com>
> Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
> Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
> Cc: Thomas Richter <tmricht@linux.vnet.ibm.com>
> Cc: linux s390 list <linux-s390@vger.kernel.org>
> LPU-Reference: 1512031765-9382-1-git-send-email-brueckner@linux.vnet.ibm.com
> Link: https://lkml.kernel.org/n/tip-a8wga8hrl0d0r84cal96fmgv@git.kernel.org
> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> ---
> tools/perf/Makefile.config | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> index 2c437baf8364..bf86c09ca889 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -41,6 +41,7 @@ ifeq ($(SRCARCH),x86)
> LIBUNWIND_LIBS = -lunwind-x86 -llzma -lunwind
> endif
> NO_PERF_REGS := 0
> + CFLAGS += -fPIC
> endif

I was just rebasing my syscall table work on top of your perf/core tree.
It looks like that there is a significant difference compared to linux
master tree.

With f704ef44602fbf403e6722c7ed13f62d17e8cb20 ("s390/perf: add support for
perf_regs and libdw"), Heiko introduced a change in the Makefile.config:

--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -53,6 +53,10 @@ ifeq ($(SRCARCH),arm64)
LIBUNWIND_LIBS = -lunwind -lunwind-aarch64
endif

+ifeq ($(ARCH),s390)
+ NO_PERF_REGS := 0
+endif
+
ifeq ($(NO_PERF_REGS),0)

The CFLAGS actually should applied to the s390 block and not in the x86
block. Somehow this got messed up with git cherryp-pick / am. So actually,
this should go into the section above:

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index ed65e82..0833d9f 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -55,6 +55,7 @@ endif

ifeq ($(ARCH),s390)
NO_PERF_REGS := 0
+ CFLAGS += -fPIC
endif

ifeq ($(NO_PERF_REGS),0)