[v3] s390: Move -msoft-float/-fno-optimize-sibling-calls into compel Makefiles

Submitted by Michael Holzheu on July 21, 2017, 5:26 p.m.

Details

Message ID 20170721192609.2ec3d054@TP-holzheu
State Accepted
Series "s390: Move -msoft-float/-fno-optimize-sibling-calls into compel Makefiles"
Headers show

Commit Message

Michael Holzheu July 21, 2017, 5:26 p.m.
We currently define "CFLAGS += -msoft-float -fno-optimize-sibling-calls"
in Makefile.compel.

Makefile.compel is included into the toplevel Makefile and so changes
CFLAGS which are exported to all criu and zdtm Makefiles.

We must not use -msoft-float outside the compel files. E.g. otherwise for
zdtm we get the following build error:

uptime_grow.o: In function `main':
/tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__floatdidf'
/tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__muldf3'
/tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__floatdidf'
/tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__adddf3

Fix this and move the CFLAGS definition to the compel Makefiles.
We do this by defining a new flag CFLAGS_PIE that is only used for pie code.

Reported-by: Adrian Reber <areber@redhat.com>
Suggested-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
---
 Makefile                  | 12 ++++++++++++
 Makefile.compel           | 10 ----------
 compel/Makefile           |  1 +
 compel/plugins/Makefile   |  4 +++-
 criu/pie/Makefile         |  8 +-------
 criu/pie/Makefile.library |  8 ++------
 6 files changed, 19 insertions(+), 24 deletions(-)

Patch hide | download patch | download mbox

diff --git a/Makefile b/Makefile
index 848cf0f..f236813 100644
--- a/Makefile
+++ b/Makefile
@@ -65,12 +65,24 @@  ifeq ($(ARCH),x86)
         DEFINES		:= -DCONFIG_X86_64
 endif
 
+#
+# CFLAGS_PIE:
+#
+# We assume that compel code does not change floating point registers.
+# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
+# with -msoft-float.
+#
+# Also ensure with -fno-optimize-sibling-calls that we don't create GOT
+# (Global Offset Table) relocations with gcc compilers that don't have
+# commit "S/390: Fix 64 bit sibcall".
 ifeq ($(ARCH),s390)
         ARCH		:= s390
         SRCARCH		:= s390
         VDSO		:= y
         DEFINES		:= -DCONFIG_S390
+        CFLAGS_PIE	:= -msoft-float -fno-optimize-sibling-calls
 endif
+export CFLAGS_PIE
 
 LDARCH ?= $(SRCARCH)
 export LDARCH VDSO
diff --git a/Makefile.compel b/Makefile.compel
index 5c854e3..1ef7f8c 100644
--- a/Makefile.compel
+++ b/Makefile.compel
@@ -70,13 +70,3 @@  compel/$(LIBCOMPEL_SO): compel/$(LIBCOMPEL_A)
 compel-install-targets	+= compel/$(LIBCOMPEL_SO)
 compel-install-targets	+= compel/compel
 compel-install-targets	+= $(compel-plugins)
-
-#
-# Also ensure with -fno-optimize-sibling-calls that we don't create GOT
-# (Global Offset Table) relocations with gcc compilers that don't have
-# commit "S/390: Fix 64 bit sibcall".
-#
-ifeq ($(ARCH),s390)
-CFLAGS += -msoft-float -fno-optimize-sibling-calls
-HOSTCFLAGS += -msoft-float -fno-optimize-sibling-calls
-endif
diff --git a/compel/Makefile b/compel/Makefile
index 43d27f5..7ef01aa 100644
--- a/compel/Makefile
+++ b/compel/Makefile
@@ -11,6 +11,7 @@  ccflags-y		+= -iquote compel/arch/$(ARCH)/src/lib/include
 ccflags-y		+= -iquote compel/include
 ccflags-y		+= -fno-strict-aliasing
 ccflags-y		+= -fPIC
+ccflags-y		+= $(CFLAGS_PIE)
 ldflags-y		+= -r
 
 #
diff --git a/compel/plugins/Makefile b/compel/plugins/Makefile
index 7127425..82c35be 100644
--- a/compel/plugins/Makefile
+++ b/compel/plugins/Makefile
@@ -7,7 +7,9 @@  PLUGIN_ARCH_DIR		:= compel/arch/$(ARCH)/plugins
 #
 # CFLAGS, ASFLAGS, LDFLAGS
 
-#
+# Required for pie code
+ccflags-y		+= $(CFLAGS_PIE)
+
 # UAPI inclusion, referred as <compel/...>
 ccflags-y		+= -I compel/include/uapi
 asflags-y		+= -I compel/include/uapi
diff --git a/criu/pie/Makefile b/criu/pie/Makefile
index 76c3535..de4d667 100644
--- a/criu/pie/Makefile
+++ b/criu/pie/Makefile
@@ -2,6 +2,7 @@  target		:= parasite restorer
 
 CFLAGS		:= $(filter-out -pg $(CFLAGS-GCOV) $(CFLAGS-ASAN),$(CFLAGS))
 ccflags-y	+= $(COMPEL_UAPI_INCLUDES)
+ccflags-y	+= $(CFLAGS_PIE)
 ccflags-y	+= -DCR_NOGLIBC
 ccflags-y	+= -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
 ccflags-y	+= -Wp,-U_FORTIFY_SOURCE -Wp,-D_FORTIFY_SOURCE=0
@@ -16,13 +17,6 @@  ifeq ($(SRCARCH),arm)
 	ccflags-y	+= -marm
 endif
 
-# We assume that compel code does not change floating point registers.
-# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
-# with -msoft-float.
-ifeq ($(SRCARCH),s390)
-	ccflags-y	+= -msoft-float
-endif
-
 asflags-y	+= -D__ASSEMBLY__
 
 LDS		:= compel/arch/$(SRCARCH)/scripts/compel-pack.lds.S
diff --git a/criu/pie/Makefile.library b/criu/pie/Makefile.library
index ceadc1d..f268b5d 100644
--- a/criu/pie/Makefile.library
+++ b/criu/pie/Makefile.library
@@ -37,13 +37,9 @@  CFLAGS		:= $(filter-out -pg $(CFLAGS-GCOV) $(CFLAGS-ASAN),$(CFLAGS))
 
 asflags-y		:= -D__ASSEMBLY__
 ccflags-y		+= $(COMPEL_UAPI_INCLUDES)
+ccflags-y		+= $(CFLAGS_PIE)
 
 ifeq ($(SRCARCH),arm)
 	ccflags-y	+= -marm
 endif
-# We assume that compel code does not change floating point registers.
-# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
-# with -msoft-float.
-ifeq ($(SRCARCH),s390)
-	ccflags-y	+= -msoft-float
-endif
+

Comments

Dmitry Safonov July 21, 2017, 5:28 p.m.
On 07/21/2017 08:26 PM, Michael Holzheu wrote:
> We currently define "CFLAGS += -msoft-float -fno-optimize-sibling-calls"
> in Makefile.compel.
> 
> Makefile.compel is included into the toplevel Makefile and so changes
> CFLAGS which are exported to all criu and zdtm Makefiles.
> 
> We must not use -msoft-float outside the compel files. E.g. otherwise for
> zdtm we get the following build error:
> 
> uptime_grow.o: In function `main':
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__floatdidf'
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__muldf3'
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__floatdidf'
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__adddf3
> 
> Fix this and move the CFLAGS definition to the compel Makefiles.
> We do this by defining a new flag CFLAGS_PIE that is only used for pie code.
> 
> Reported-by: Adrian Reber <areber@redhat.com>
> Suggested-by: Dmitry Safonov <dsafonov@virtuozzo.com>
> Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>

Looks good,
Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>

Adrian, could you check if that works for you?

> ---
>   Makefile                  | 12 ++++++++++++
>   Makefile.compel           | 10 ----------
>   compel/Makefile           |  1 +
>   compel/plugins/Makefile   |  4 +++-
>   criu/pie/Makefile         |  8 +-------
>   criu/pie/Makefile.library |  8 ++------
>   6 files changed, 19 insertions(+), 24 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 848cf0f..f236813 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -65,12 +65,24 @@ ifeq ($(ARCH),x86)
>           DEFINES		:= -DCONFIG_X86_64
>   endif
>   
> +#
> +# CFLAGS_PIE:
> +#
> +# We assume that compel code does not change floating point registers.
> +# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
> +# with -msoft-float.
> +#
> +# Also ensure with -fno-optimize-sibling-calls that we don't create GOT
> +# (Global Offset Table) relocations with gcc compilers that don't have
> +# commit "S/390: Fix 64 bit sibcall".
>   ifeq ($(ARCH),s390)
>           ARCH		:= s390
>           SRCARCH		:= s390
>           VDSO		:= y
>           DEFINES		:= -DCONFIG_S390
> +        CFLAGS_PIE	:= -msoft-float -fno-optimize-sibling-calls
>   endif
> +export CFLAGS_PIE
>   
>   LDARCH ?= $(SRCARCH)
>   export LDARCH VDSO
> diff --git a/Makefile.compel b/Makefile.compel
> index 5c854e3..1ef7f8c 100644
> --- a/Makefile.compel
> +++ b/Makefile.compel
> @@ -70,13 +70,3 @@ compel/$(LIBCOMPEL_SO): compel/$(LIBCOMPEL_A)
>   compel-install-targets	+= compel/$(LIBCOMPEL_SO)
>   compel-install-targets	+= compel/compel
>   compel-install-targets	+= $(compel-plugins)
> -
> -#
> -# Also ensure with -fno-optimize-sibling-calls that we don't create GOT
> -# (Global Offset Table) relocations with gcc compilers that don't have
> -# commit "S/390: Fix 64 bit sibcall".
> -#
> -ifeq ($(ARCH),s390)
> -CFLAGS += -msoft-float -fno-optimize-sibling-calls
> -HOSTCFLAGS += -msoft-float -fno-optimize-sibling-calls
> -endif
> diff --git a/compel/Makefile b/compel/Makefile
> index 43d27f5..7ef01aa 100644
> --- a/compel/Makefile
> +++ b/compel/Makefile
> @@ -11,6 +11,7 @@ ccflags-y		+= -iquote compel/arch/$(ARCH)/src/lib/include
>   ccflags-y		+= -iquote compel/include
>   ccflags-y		+= -fno-strict-aliasing
>   ccflags-y		+= -fPIC
> +ccflags-y		+= $(CFLAGS_PIE)
>   ldflags-y		+= -r
>   
>   #
> diff --git a/compel/plugins/Makefile b/compel/plugins/Makefile
> index 7127425..82c35be 100644
> --- a/compel/plugins/Makefile
> +++ b/compel/plugins/Makefile
> @@ -7,7 +7,9 @@ PLUGIN_ARCH_DIR		:= compel/arch/$(ARCH)/plugins
>   #
>   # CFLAGS, ASFLAGS, LDFLAGS
>   
> -#
> +# Required for pie code
> +ccflags-y		+= $(CFLAGS_PIE)
> +
>   # UAPI inclusion, referred as <compel/...>
>   ccflags-y		+= -I compel/include/uapi
>   asflags-y		+= -I compel/include/uapi
> diff --git a/criu/pie/Makefile b/criu/pie/Makefile
> index 76c3535..de4d667 100644
> --- a/criu/pie/Makefile
> +++ b/criu/pie/Makefile
> @@ -2,6 +2,7 @@ target		:= parasite restorer
>   
>   CFLAGS		:= $(filter-out -pg $(CFLAGS-GCOV) $(CFLAGS-ASAN),$(CFLAGS))
>   ccflags-y	+= $(COMPEL_UAPI_INCLUDES)
> +ccflags-y	+= $(CFLAGS_PIE)
>   ccflags-y	+= -DCR_NOGLIBC
>   ccflags-y	+= -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
>   ccflags-y	+= -Wp,-U_FORTIFY_SOURCE -Wp,-D_FORTIFY_SOURCE=0
> @@ -16,13 +17,6 @@ ifeq ($(SRCARCH),arm)
>   	ccflags-y	+= -marm
>   endif
>   
> -# We assume that compel code does not change floating point registers.
> -# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
> -# with -msoft-float.
> -ifeq ($(SRCARCH),s390)
> -	ccflags-y	+= -msoft-float
> -endif
> -
>   asflags-y	+= -D__ASSEMBLY__
>   
>   LDS		:= compel/arch/$(SRCARCH)/scripts/compel-pack.lds.S
> diff --git a/criu/pie/Makefile.library b/criu/pie/Makefile.library
> index ceadc1d..f268b5d 100644
> --- a/criu/pie/Makefile.library
> +++ b/criu/pie/Makefile.library
> @@ -37,13 +37,9 @@ CFLAGS		:= $(filter-out -pg $(CFLAGS-GCOV) $(CFLAGS-ASAN),$(CFLAGS))
>   
>   asflags-y		:= -D__ASSEMBLY__
>   ccflags-y		+= $(COMPEL_UAPI_INCLUDES)
> +ccflags-y		+= $(CFLAGS_PIE)
>   
>   ifeq ($(SRCARCH),arm)
>   	ccflags-y	+= -marm
>   endif
> -# We assume that compel code does not change floating point registers.
> -# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
> -# with -msoft-float.
> -ifeq ($(SRCARCH),s390)
> -	ccflags-y	+= -msoft-float
> -endif
> +
>
Adrian Reber July 24, 2017, 9:53 a.m.
That works, thanks.

Tested-by: Adrian Reber <areber@redhat.com>


On Fri, Jul 21, 2017 at 07:26:09PM +0200, Michael Holzheu wrote:
> We currently define "CFLAGS += -msoft-float -fno-optimize-sibling-calls"
> in Makefile.compel.
> 
> Makefile.compel is included into the toplevel Makefile and so changes
> CFLAGS which are exported to all criu and zdtm Makefiles.
> 
> We must not use -msoft-float outside the compel files. E.g. otherwise for
> zdtm we get the following build error:
> 
> uptime_grow.o: In function `main':
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__floatdidf'
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__muldf3'
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__floatdidf'
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__adddf3
> 
> Fix this and move the CFLAGS definition to the compel Makefiles.
> We do this by defining a new flag CFLAGS_PIE that is only used for pie code.
> 
> Reported-by: Adrian Reber <areber@redhat.com>
> Suggested-by: Dmitry Safonov <dsafonov@virtuozzo.com>
> Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
> ---
>  Makefile                  | 12 ++++++++++++
>  Makefile.compel           | 10 ----------
>  compel/Makefile           |  1 +
>  compel/plugins/Makefile   |  4 +++-
>  criu/pie/Makefile         |  8 +-------
>  criu/pie/Makefile.library |  8 ++------
>  6 files changed, 19 insertions(+), 24 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 848cf0f..f236813 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -65,12 +65,24 @@ ifeq ($(ARCH),x86)
>          DEFINES		:= -DCONFIG_X86_64
>  endif
>  
> +#
> +# CFLAGS_PIE:
> +#
> +# We assume that compel code does not change floating point registers.
> +# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
> +# with -msoft-float.
> +#
> +# Also ensure with -fno-optimize-sibling-calls that we don't create GOT
> +# (Global Offset Table) relocations with gcc compilers that don't have
> +# commit "S/390: Fix 64 bit sibcall".
>  ifeq ($(ARCH),s390)
>          ARCH		:= s390
>          SRCARCH		:= s390
>          VDSO		:= y
>          DEFINES		:= -DCONFIG_S390
> +        CFLAGS_PIE	:= -msoft-float -fno-optimize-sibling-calls
>  endif
> +export CFLAGS_PIE
>  
>  LDARCH ?= $(SRCARCH)
>  export LDARCH VDSO
> diff --git a/Makefile.compel b/Makefile.compel
> index 5c854e3..1ef7f8c 100644
> --- a/Makefile.compel
> +++ b/Makefile.compel
> @@ -70,13 +70,3 @@ compel/$(LIBCOMPEL_SO): compel/$(LIBCOMPEL_A)
>  compel-install-targets	+= compel/$(LIBCOMPEL_SO)
>  compel-install-targets	+= compel/compel
>  compel-install-targets	+= $(compel-plugins)
> -
> -#
> -# Also ensure with -fno-optimize-sibling-calls that we don't create GOT
> -# (Global Offset Table) relocations with gcc compilers that don't have
> -# commit "S/390: Fix 64 bit sibcall".
> -#
> -ifeq ($(ARCH),s390)
> -CFLAGS += -msoft-float -fno-optimize-sibling-calls
> -HOSTCFLAGS += -msoft-float -fno-optimize-sibling-calls
> -endif
> diff --git a/compel/Makefile b/compel/Makefile
> index 43d27f5..7ef01aa 100644
> --- a/compel/Makefile
> +++ b/compel/Makefile
> @@ -11,6 +11,7 @@ ccflags-y		+= -iquote compel/arch/$(ARCH)/src/lib/include
>  ccflags-y		+= -iquote compel/include
>  ccflags-y		+= -fno-strict-aliasing
>  ccflags-y		+= -fPIC
> +ccflags-y		+= $(CFLAGS_PIE)
>  ldflags-y		+= -r
>  
>  #
> diff --git a/compel/plugins/Makefile b/compel/plugins/Makefile
> index 7127425..82c35be 100644
> --- a/compel/plugins/Makefile
> +++ b/compel/plugins/Makefile
> @@ -7,7 +7,9 @@ PLUGIN_ARCH_DIR		:= compel/arch/$(ARCH)/plugins
>  #
>  # CFLAGS, ASFLAGS, LDFLAGS
>  
> -#
> +# Required for pie code
> +ccflags-y		+= $(CFLAGS_PIE)
> +
>  # UAPI inclusion, referred as <compel/...>
>  ccflags-y		+= -I compel/include/uapi
>  asflags-y		+= -I compel/include/uapi
> diff --git a/criu/pie/Makefile b/criu/pie/Makefile
> index 76c3535..de4d667 100644
> --- a/criu/pie/Makefile
> +++ b/criu/pie/Makefile
> @@ -2,6 +2,7 @@ target		:= parasite restorer
>  
>  CFLAGS		:= $(filter-out -pg $(CFLAGS-GCOV) $(CFLAGS-ASAN),$(CFLAGS))
>  ccflags-y	+= $(COMPEL_UAPI_INCLUDES)
> +ccflags-y	+= $(CFLAGS_PIE)
>  ccflags-y	+= -DCR_NOGLIBC
>  ccflags-y	+= -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
>  ccflags-y	+= -Wp,-U_FORTIFY_SOURCE -Wp,-D_FORTIFY_SOURCE=0
> @@ -16,13 +17,6 @@ ifeq ($(SRCARCH),arm)
>  	ccflags-y	+= -marm
>  endif
>  
> -# We assume that compel code does not change floating point registers.
> -# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
> -# with -msoft-float.
> -ifeq ($(SRCARCH),s390)
> -	ccflags-y	+= -msoft-float
> -endif
> -
>  asflags-y	+= -D__ASSEMBLY__
>  
>  LDS		:= compel/arch/$(SRCARCH)/scripts/compel-pack.lds.S
> diff --git a/criu/pie/Makefile.library b/criu/pie/Makefile.library
> index ceadc1d..f268b5d 100644
> --- a/criu/pie/Makefile.library
> +++ b/criu/pie/Makefile.library
> @@ -37,13 +37,9 @@ CFLAGS		:= $(filter-out -pg $(CFLAGS-GCOV) $(CFLAGS-ASAN),$(CFLAGS))
>  
>  asflags-y		:= -D__ASSEMBLY__
>  ccflags-y		+= $(COMPEL_UAPI_INCLUDES)
> +ccflags-y		+= $(CFLAGS_PIE)
>  
>  ifeq ($(SRCARCH),arm)
>  	ccflags-y	+= -marm
>  endif
> -# We assume that compel code does not change floating point registers.
> -# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
> -# with -msoft-float.
> -ifeq ($(SRCARCH),s390)
> -	ccflags-y	+= -msoft-float
> -endif
> +
> -- 
> 2.7.4
>
Andrey Vagin July 24, 2017, 10:30 p.m.
Applied, thanks!

On Fri, Jul 21, 2017 at 07:26:09PM +0200, Michael Holzheu wrote:
> We currently define "CFLAGS += -msoft-float -fno-optimize-sibling-calls"
> in Makefile.compel.
> 
> Makefile.compel is included into the toplevel Makefile and so changes
> CFLAGS which are exported to all criu and zdtm Makefiles.
> 
> We must not use -msoft-float outside the compel files. E.g. otherwise for
> zdtm we get the following build error:
> 
> uptime_grow.o: In function `main':
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__floatdidf'
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__muldf3'
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__floatdidf'
> /tmp/2/criu/test/zdtm/static/uptime_grow.c:36: undefined reference to `__adddf3
> 
> Fix this and move the CFLAGS definition to the compel Makefiles.
> We do this by defining a new flag CFLAGS_PIE that is only used for pie code.
> 
> Reported-by: Adrian Reber <areber@redhat.com>
> Suggested-by: Dmitry Safonov <dsafonov@virtuozzo.com>
> Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
> ---
>  Makefile                  | 12 ++++++++++++
>  Makefile.compel           | 10 ----------
>  compel/Makefile           |  1 +
>  compel/plugins/Makefile   |  4 +++-
>  criu/pie/Makefile         |  8 +-------
>  criu/pie/Makefile.library |  8 ++------
>  6 files changed, 19 insertions(+), 24 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 848cf0f..f236813 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -65,12 +65,24 @@ ifeq ($(ARCH),x86)
>          DEFINES		:= -DCONFIG_X86_64
>  endif
>  
> +#
> +# CFLAGS_PIE:
> +#
> +# We assume that compel code does not change floating point registers.
> +# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
> +# with -msoft-float.
> +#
> +# Also ensure with -fno-optimize-sibling-calls that we don't create GOT
> +# (Global Offset Table) relocations with gcc compilers that don't have
> +# commit "S/390: Fix 64 bit sibcall".
>  ifeq ($(ARCH),s390)
>          ARCH		:= s390
>          SRCARCH		:= s390
>          VDSO		:= y
>          DEFINES		:= -DCONFIG_S390
> +        CFLAGS_PIE	:= -msoft-float -fno-optimize-sibling-calls
>  endif
> +export CFLAGS_PIE
>  
>  LDARCH ?= $(SRCARCH)
>  export LDARCH VDSO
> diff --git a/Makefile.compel b/Makefile.compel
> index 5c854e3..1ef7f8c 100644
> --- a/Makefile.compel
> +++ b/Makefile.compel
> @@ -70,13 +70,3 @@ compel/$(LIBCOMPEL_SO): compel/$(LIBCOMPEL_A)
>  compel-install-targets	+= compel/$(LIBCOMPEL_SO)
>  compel-install-targets	+= compel/compel
>  compel-install-targets	+= $(compel-plugins)
> -
> -#
> -# Also ensure with -fno-optimize-sibling-calls that we don't create GOT
> -# (Global Offset Table) relocations with gcc compilers that don't have
> -# commit "S/390: Fix 64 bit sibcall".
> -#
> -ifeq ($(ARCH),s390)
> -CFLAGS += -msoft-float -fno-optimize-sibling-calls
> -HOSTCFLAGS += -msoft-float -fno-optimize-sibling-calls
> -endif
> diff --git a/compel/Makefile b/compel/Makefile
> index 43d27f5..7ef01aa 100644
> --- a/compel/Makefile
> +++ b/compel/Makefile
> @@ -11,6 +11,7 @@ ccflags-y		+= -iquote compel/arch/$(ARCH)/src/lib/include
>  ccflags-y		+= -iquote compel/include
>  ccflags-y		+= -fno-strict-aliasing
>  ccflags-y		+= -fPIC
> +ccflags-y		+= $(CFLAGS_PIE)
>  ldflags-y		+= -r
>  
>  #
> diff --git a/compel/plugins/Makefile b/compel/plugins/Makefile
> index 7127425..82c35be 100644
> --- a/compel/plugins/Makefile
> +++ b/compel/plugins/Makefile
> @@ -7,7 +7,9 @@ PLUGIN_ARCH_DIR		:= compel/arch/$(ARCH)/plugins
>  #
>  # CFLAGS, ASFLAGS, LDFLAGS
>  
> -#
> +# Required for pie code
> +ccflags-y		+= $(CFLAGS_PIE)
> +
>  # UAPI inclusion, referred as <compel/...>
>  ccflags-y		+= -I compel/include/uapi
>  asflags-y		+= -I compel/include/uapi
> diff --git a/criu/pie/Makefile b/criu/pie/Makefile
> index 76c3535..de4d667 100644
> --- a/criu/pie/Makefile
> +++ b/criu/pie/Makefile
> @@ -2,6 +2,7 @@ target		:= parasite restorer
>  
>  CFLAGS		:= $(filter-out -pg $(CFLAGS-GCOV) $(CFLAGS-ASAN),$(CFLAGS))
>  ccflags-y	+= $(COMPEL_UAPI_INCLUDES)
> +ccflags-y	+= $(CFLAGS_PIE)
>  ccflags-y	+= -DCR_NOGLIBC
>  ccflags-y	+= -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
>  ccflags-y	+= -Wp,-U_FORTIFY_SOURCE -Wp,-D_FORTIFY_SOURCE=0
> @@ -16,13 +17,6 @@ ifeq ($(SRCARCH),arm)
>  	ccflags-y	+= -marm
>  endif
>  
> -# We assume that compel code does not change floating point registers.
> -# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
> -# with -msoft-float.
> -ifeq ($(SRCARCH),s390)
> -	ccflags-y	+= -msoft-float
> -endif
> -
>  asflags-y	+= -D__ASSEMBLY__
>  
>  LDS		:= compel/arch/$(SRCARCH)/scripts/compel-pack.lds.S
> diff --git a/criu/pie/Makefile.library b/criu/pie/Makefile.library
> index ceadc1d..f268b5d 100644
> --- a/criu/pie/Makefile.library
> +++ b/criu/pie/Makefile.library
> @@ -37,13 +37,9 @@ CFLAGS		:= $(filter-out -pg $(CFLAGS-GCOV) $(CFLAGS-ASAN),$(CFLAGS))
>  
>  asflags-y		:= -D__ASSEMBLY__
>  ccflags-y		+= $(COMPEL_UAPI_INCLUDES)
> +ccflags-y		+= $(CFLAGS_PIE)
>  
>  ifeq ($(SRCARCH),arm)
>  	ccflags-y	+= -marm
>  endif
> -# We assume that compel code does not change floating point registers.
> -# On s390 gcc uses fprs to cache gprs. Therefore disable floating point
> -# with -msoft-float.
> -ifeq ($(SRCARCH),s390)
> -	ccflags-y	+= -msoft-float
> -endif
> +
> -- 
> 2.7.4
> 
> _______________________________________________
> CRIU mailing list
> CRIU@openvz.org
> https://lists.openvz.org/mailman/listinfo/criu