2009-09-17 17:41:44

by Kyle McMartin

[permalink] [raw]
Subject: [PATCH] fix ppc64 build failure on fedora

From: Kyle McMartin <[email protected]>

For some reason or another (newer gcc?) on Fedora 12 koji builders we're
seeing _restgpr0_$n symbols instead of _restgpr_$n as handled in the
prom_init_check.sh file:
Checking prom_init.o symbol '_restgpr0_14'
Error: External symbol '_restgpr0_14' referenced from prom_init.c
Checking prom_init.o symbol '_restgpr0_17'

Add cases to handle this to the filter portion of the script.

Signed-off-by: Kyle McMartin <[email protected]>
---

diff --git a/arch/powerpc/kernel/prom_init_check.sh b/arch/powerpc/kernel/prom_init_check.sh
index 1ac136b..9f82f49 100644
--- a/arch/powerpc/kernel/prom_init_check.sh
+++ b/arch/powerpc/kernel/prom_init_check.sh
@@ -52,12 +52,18 @@ do
if [ "${UNDEF:0:9}" = "_restgpr_" ]; then
OK=1
fi
+ if [ "${UNDEF:0:10}" = "_restgpr0_" ]; then
+ OK=1
+ fi
if [ "${UNDEF:0:11}" = "_rest32gpr_" ]; then
OK=1
fi
if [ "${UNDEF:0:9}" = "_savegpr_" ]; then
OK=1
fi
+ if [ "${UNDEF:0:10}" = "_savegpr0_" ]; then
+ OK=1
+ fi
if [ "${UNDEF:0:11}" = "_save32gpr_" ]; then
OK=1
fi


2009-09-17 17:57:52

by Kyle McMartin

[permalink] [raw]
Subject: Re: [PATCH] fix ppc64 build failure on fedora

On Thu, Sep 17, 2009 at 01:41:44PM -0400, Kyle McMartin wrote:
> For some reason or another (newer gcc?) on Fedora 12 koji builders we're
> seeing _restgpr0_$n symbols instead of _restgpr_$n as handled in the
> prom_init_check.sh file:
> Checking prom_init.o symbol '_restgpr0_14'
> Error: External symbol '_restgpr0_14' referenced from prom_init.c
> Checking prom_init.o symbol '_restgpr0_17'
>
> Add cases to handle this to the filter portion of the script.
>

Sorry, after reading the gcc code for this, I've realized this is
clearly wrong and must be a toolchain defect...

Apologies for the noise.

cheers, Kyle

2009-09-18 01:50:26

by Benjamin Herrenschmidt

[permalink] [raw]
Subject: Re: [PATCH] fix ppc64 build failure on fedora

On Thu, 2009-09-17 at 13:41 -0400, Kyle McMartin wrote:
> From: Kyle McMartin <[email protected]>
>
> For some reason or another (newer gcc?) on Fedora 12 koji builders we're
> seeing _restgpr0_$n symbols instead of _restgpr_$n as handled in the
> prom_init_check.sh file:
> Checking prom_init.o symbol '_restgpr0_14'
> Error: External symbol '_restgpr0_14' referenced from prom_init.c
> Checking prom_init.o symbol '_restgpr0_17'
>
> Add cases to handle this to the filter portion of the script.

My concern tho is if one of thse is actually called ... we implement
them in arch/powerpc/lib/crtsaveres.S but with the "other" names..

Ben.

> Signed-off-by: Kyle McMartin <[email protected]>
> ---
>
> diff --git a/arch/powerpc/kernel/prom_init_check.sh b/arch/powerpc/kernel/prom_init_check.sh
> index 1ac136b..9f82f49 100644
> --- a/arch/powerpc/kernel/prom_init_check.sh
> +++ b/arch/powerpc/kernel/prom_init_check.sh
> @@ -52,12 +52,18 @@ do
> if [ "${UNDEF:0:9}" = "_restgpr_" ]; then
> OK=1
> fi
> + if [ "${UNDEF:0:10}" = "_restgpr0_" ]; then
> + OK=1
> + fi
> if [ "${UNDEF:0:11}" = "_rest32gpr_" ]; then
> OK=1
> fi
> if [ "${UNDEF:0:9}" = "_savegpr_" ]; then
> OK=1
> fi
> + if [ "${UNDEF:0:10}" = "_savegpr0_" ]; then
> + OK=1
> + fi
> if [ "${UNDEF:0:11}" = "_save32gpr_" ]; then
> OK=1
> fi
> _______________________________________________
> Linuxppc-dev mailing list
> [email protected]
> https://lists.ozlabs.org/listinfo/linuxppc-dev

2009-09-18 02:21:47

by Kyle McMartin

[permalink] [raw]
Subject: Re: [PATCH] fix ppc64 build failure on fedora

On Fri, Sep 18, 2009 at 11:50:06AM +1000, Benjamin Herrenschmidt wrote:
> On Thu, 2009-09-17 at 13:41 -0400, Kyle McMartin wrote:
> > From: Kyle McMartin <[email protected]>
> >
> > For some reason or another (newer gcc?) on Fedora 12 koji builders we're
> > seeing _restgpr0_$n symbols instead of _restgpr_$n as handled in the
> > prom_init_check.sh file:
> > Checking prom_init.o symbol '_restgpr0_14'
> > Error: External symbol '_restgpr0_14' referenced from prom_init.c
> > Checking prom_init.o symbol '_restgpr0_17'
> >
> > Add cases to handle this to the filter portion of the script.
>
> My concern tho is if one of thse is actually called ... we implement
> them in arch/powerpc/lib/crtsaveres.S but with the "other" names..
>

Sorry, this appears to be a GCC "feature" introduced in gcc4.5 which is
generating out of line save/restore on ppc64 at -Os. Thanks to Jakub's
suggestion I ended up working around this by building ppc with -O2 for
now (CC_OPTIMIZE_FOR_SIZE)

In any case, according to the gcc "docs" for this, these functions are
supposed to be provided by the linker in the ppc64 case, so it wasn't
correct to try and add them.

I believe Alan Modra said he'd look at the ld issue with regards to
this.

cheers, Kyle