Nicholas Piggin <npig...@gmail.com> writes: > On Tue, 1 Nov 2016 15:41:12 +1100 > Nicholas Piggin <npig...@gmail.com> wrote: > >> On Tue, 1 Nov 2016 15:22:19 +1100 >> Nicholas Piggin <npig...@gmail.com> wrote: >> >> > The powerpc64 linker generates fpr save/restore functions on-demand, >> > placing them in the .sfpr section. So remove the explicitly coded ones >> > from the 64 build. >> > >> > Have 32-bit put save/restore functions into .sfpr section rather than >> > .text, to match 64-bit. >> > >> > And explicitly have the linker script place the section rather than >> > leaving it as orphan. >> > >> > Signed-off-by: Nicholas Piggin <npig...@gmail.com> >> > --- >> > >> > I tested this with 64-bit optimize-for-size build with modules, >> > and that works okay. >> >> No I didn't, it's broken. I'll send an update shortly. > > Working (hopefully) patch this time. I also removed the 32-bit changes > which aren't really necessary: > > The powerpc64 linker generates fpr save/restore functions on-demand, > placing them in the .sfpr section. Module linking (because it's a > "non-final" link) requires --save-restore-funcs for this. > > Remove the explicitly coded save/restore functions from the 64 build. > > And explicitly have the linker script place the section rather than > leaving it as orphan.
> > Signed-off-by: Nicholas Piggin <npig...@gmail.com> > --- > arch/powerpc/Makefile | 4 + > arch/powerpc/boot/Makefile | 3 +- > arch/powerpc/boot/crtsavres.S | 8 +- > arch/powerpc/kernel/vmlinux.lds.S | 6 + > arch/powerpc/lib/Makefile | 5 +- > arch/powerpc/lib/crtsavres.S | 238 > +------------------------------------- > 6 files changed, 22 insertions(+), 242 deletions(-) > > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile > index fe76cfe..8ea7c9e 100644 > --- a/arch/powerpc/Makefile > +++ b/arch/powerpc/Makefile > @@ -179,7 +179,11 @@ else > CHECKFLAGS += -D__LITTLE_ENDIAN__ > endif > > +ifeq ($(CONFIG_PPC32),y) > KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o > +else > +KBUILD_LDFLAGS_MODULE += --save-restore-funcs As discussed offline, this option is reasonably new, added in 2014 and appearing in binutils 2.25. So it's too new to require, we can use it if it's there, but we still need a fallback for when it's not. cheers