On Mon, 14 May 2018 13:52:27 +1000 Nicholas Piggin <npiggin@xxxxxxxxx> wrote: > The powerpc toolchain can compile combinations of 32/64 bit and > big/little endian, so it's convenient to consider, e.g., > > `CC -m64 -mbig-endian` > > To be the C compiler for the purpose of invoking it to build target > artifacts. So overriding the the CC variable to include thse flags the these > works for this purpose. > > Unfortunately that is not compatible with the way the proposed new > Kconfig macro language will work. > > After previous patches in this series, these flags can be carefully > passed in using flags instead. > > Signed-off-by: Nicholas Piggin <npiggin@xxxxxxxxx> > --- > Since v2: > - removed extra -EB in the recordmcount script (thanks mpe) > > arch/powerpc/Makefile | 16 +++++++++------- > scripts/recordmcount.pl | 7 +++++++ > 2 files changed, 16 insertions(+), 7 deletions(-) > > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile > index 167b26a0780c..6faf1d6ad9dd 100644 > --- a/arch/powerpc/Makefile > +++ b/arch/powerpc/Makefile > @@ -75,13 +75,15 @@ endif > endif > > ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y) > -override LD += -EL > +KBUILD_CFLAGS += -mlittle-endian > +LDFLAGS += -EL > LDEMULATION := lppc > GNUTARGET := powerpcle > MULTIPLEWORD := -mno-multiple > KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-save-toc-indirect) > else > -override LD += -EB > +KBUILD_CFLAGS += $(call cc-option,-mbig-endian) > +LDFLAGS += -EB > LDEMULATION := ppc > GNUTARGET := powerpc > MULTIPLEWORD := -mmultiple > @@ -94,19 +96,19 @@ aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1) > aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mabi=elfv2 > endif > > -cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian > -cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian) > ifneq ($(cc-name),clang) > cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mno-strict-align > endif > > +cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian) > +cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian > aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mbig-endian) > aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mlittle-endian > > ifeq ($(HAS_BIARCH),y) > -override AS += -a$(BITS) > -override LD += -m elf$(BITS)$(LDEMULATION) > -override CC += -m$(BITS) > +KBUILD_CFLAGS += -m$(BITS) > +KBUILD_AFLAGS += -m$(BITS) -Wl,-a$(BITS) > +LDFLAGS += -m elf$(BITS)$(LDEMULATION) > KBUILD_ARFLAGS += --target=elf$(BITS)-$(GNUTARGET) > endif > > diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl > index 191eb949d52c..3c67304a7425 100755 > --- a/scripts/recordmcount.pl > +++ b/scripts/recordmcount.pl > @@ -274,6 +274,13 @@ if ($arch eq "x86_64") { > if ($bits == 64) { > $type = ".quad"; > } > + if ($endian eq "big") { > + $cc .= " -mbig-endian "; > + $ld .= " -EB "; > + } else { > + $cc .= " -mlittle-endian "; > + $ld .= " -EL "; > + } Have you tried building all current archs with function tracing enabled to make sure this doesn't break any of them? I can do it if you want. -- Steve > > } elsif ($arch eq "arm") { > $alignment = 2; -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html