* [Buildroot] [PATCH 1/1] binutils/gcc: make it possible to use lto
@ 2014-11-09 11:56 Peter Kümmel
2014-11-09 13:00 ` Thomas Petazzoni
0 siblings, 1 reply; 5+ messages in thread
From: Peter Kümmel @ 2014-11-09 11:56 UTC (permalink / raw)
To: buildroot
When -flto is used the compiler and binutils have to support lto.
ar/ranlib needs to be called with the lto plugin, therefore use
the wrappers provided by GCC: *-gcc-ar and *-gcc-ranlib.
Signed-off-by: Peter K?mmel <syntheticpp@gmx.net>
---
package/binutils/binutils.mk | 2 ++
package/gcc/gcc.mk | 2 ++
2 files changed, 4 insertions(+)
diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
index b8dab5d..e552abc 100644
--- a/package/binutils/binutils.mk
+++ b/package/binutils/binutils.mk
@@ -48,6 +48,7 @@ BINUTILS_DISABLE_GDB_CONF_OPTS = \
BINUTILS_CONF_OPTS = --disable-multilib --disable-werror \
--host=$(GNU_TARGET_NAME) \
--target=$(GNU_TARGET_NAME) \
+ --enable-plugins --enable-lto \
--enable-install-libiberty \
$(BINUTILS_DISABLE_GDB_CONF_OPTS) \
$(BINUTILS_EXTRA_CONFIG_OPTIONS)
@@ -67,6 +68,7 @@ endif
HOST_BINUTILS_CONF_OPTS = --disable-multilib --disable-werror \
--target=$(GNU_TARGET_NAME) \
--disable-shared --enable-static \
+ --enable-plugins --enable-lto \
--with-sysroot=$(STAGING_DIR) \
$(BINUTILS_DISABLE_GDB_CONF_OPTS) \
$(BINUTILS_EXTRA_CONFIG_OPTIONS)
diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index cdd71aa..a8853f7 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -92,6 +92,8 @@ HOST_GCC_COMMON_CONF_OPTS = \
--with-gnu-ld \
--disable-libssp \
--disable-multilib \
+ --enable-plugins \
+ --enable-lto \
--with-gmp=$(HOST_DIR)/usr \
--with-mpfr=$(HOST_DIR)/usr
--
1.9.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 1/1] binutils/gcc: make it possible to use lto
2014-11-09 11:56 [Buildroot] [PATCH 1/1] binutils/gcc: make it possible to use lto Peter Kümmel
@ 2014-11-09 13:00 ` Thomas Petazzoni
2014-11-09 13:16 ` Peter Kuemmel
2014-11-10 9:28 ` Peter Kuemmel
0 siblings, 2 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2014-11-09 13:00 UTC (permalink / raw)
To: buildroot
Dear Peter K?mmel,
On Sun, 9 Nov 2014 12:56:01 +0100, Peter K?mmel wrote:
> When -flto is used the compiler and binutils have to support lto.
> ar/ranlib needs to be called with the lto plugin, therefore use
> the wrappers provided by GCC: *-gcc-ar and *-gcc-ranlib.
>
> Signed-off-by: Peter K?mmel <syntheticpp@gmx.net>
> ---
> package/binutils/binutils.mk | 2 ++
> package/gcc/gcc.mk | 2 ++
> 2 files changed, 4 insertions(+)
>
> diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
> index b8dab5d..e552abc 100644
> --- a/package/binutils/binutils.mk
> +++ b/package/binutils/binutils.mk
> @@ -48,6 +48,7 @@ BINUTILS_DISABLE_GDB_CONF_OPTS = \
> BINUTILS_CONF_OPTS = --disable-multilib --disable-werror \
> --host=$(GNU_TARGET_NAME) \
> --target=$(GNU_TARGET_NAME) \
> + --enable-plugins --enable-lto \
> --enable-install-libiberty \
> $(BINUTILS_DISABLE_GDB_CONF_OPTS) \
> $(BINUTILS_EXTRA_CONFIG_OPTIONS)
> @@ -67,6 +68,7 @@ endif
> HOST_BINUTILS_CONF_OPTS = --disable-multilib --disable-werror \
> --target=$(GNU_TARGET_NAME) \
> --disable-shared --enable-static \
> + --enable-plugins --enable-lto \
> --with-sysroot=$(STAGING_DIR) \
> $(BINUTILS_DISABLE_GDB_CONF_OPTS) \
> $(BINUTILS_EXTRA_CONFIG_OPTIONS)
> diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
> index cdd71aa..a8853f7 100644
> --- a/package/gcc/gcc.mk
> +++ b/package/gcc/gcc.mk
> @@ -92,6 +92,8 @@ HOST_GCC_COMMON_CONF_OPTS = \
> --with-gnu-ld \
> --disable-libssp \
> --disable-multilib \
> + --enable-plugins \
> + --enable-lto \
> --with-gmp=$(HOST_DIR)/usr \
> --with-mpfr=$(HOST_DIR)/usr
>
Should we make this optional?
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 1/1] binutils/gcc: make it possible to use lto
2014-11-09 13:00 ` Thomas Petazzoni
@ 2014-11-09 13:16 ` Peter Kuemmel
2014-11-10 9:28 ` Peter Kuemmel
1 sibling, 0 replies; 5+ messages in thread
From: Peter Kuemmel @ 2014-11-09 13:16 UTC (permalink / raw)
To: buildroot
> Gesendet: Sonntag, 09. November 2014 um 14:00 Uhr
> Von: "Thomas Petazzoni" <thomas.petazzoni@free-electrons.com>
> An: "Peter K?mmel" <syntheticpp@gmx.net>
> Cc: buildroot at buildroot.org
> Betreff: Re: [Buildroot] [PATCH 1/1] binutils/gcc: make it possible to use lto
>
> Dear Peter K?mmel,
>
> On Sun, 9 Nov 2014 12:56:01 +0100, Peter K?mmel wrote:
> > When -flto is used the compiler and binutils have to support lto.
> > ar/ranlib needs to be called with the lto plugin, therefore use
> > the wrappers provided by GCC: *-gcc-ar and *-gcc-ranlib.
> >
> > Signed-off-by: Peter K?mmel <syntheticpp@gmx.net>
> > ---
> > package/binutils/binutils.mk | 2 ++
> > package/gcc/gcc.mk | 2 ++
> > 2 files changed, 4 insertions(+)
> >
> > diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
> > index b8dab5d..e552abc 100644
> > --- a/package/binutils/binutils.mk
> > +++ b/package/binutils/binutils.mk
> > @@ -48,6 +48,7 @@ BINUTILS_DISABLE_GDB_CONF_OPTS = \
> > BINUTILS_CONF_OPTS = --disable-multilib --disable-werror \
> > --host=$(GNU_TARGET_NAME) \
> > --target=$(GNU_TARGET_NAME) \
> > + --enable-plugins --enable-lto \
> > --enable-install-libiberty \
> > $(BINUTILS_DISABLE_GDB_CONF_OPTS) \
> > $(BINUTILS_EXTRA_CONFIG_OPTIONS)
> > @@ -67,6 +68,7 @@ endif
> > HOST_BINUTILS_CONF_OPTS = --disable-multilib --disable-werror \
> > --target=$(GNU_TARGET_NAME) \
> > --disable-shared --enable-static \
> > + --enable-plugins --enable-lto \
> > --with-sysroot=$(STAGING_DIR) \
> > $(BINUTILS_DISABLE_GDB_CONF_OPTS) \
> > $(BINUTILS_EXTRA_CONFIG_OPTIONS)
> > diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
> > index cdd71aa..a8853f7 100644
> > --- a/package/gcc/gcc.mk
> > +++ b/package/gcc/gcc.mk
> > @@ -92,6 +92,8 @@ HOST_GCC_COMMON_CONF_OPTS = \
> > --with-gnu-ld \
> > --disable-libssp \
> > --disable-multilib \
> > + --enable-plugins \
> > + --enable-lto \
> > --with-gmp=$(HOST_DIR)/usr \
> > --with-mpfr=$(HOST_DIR)/usr
> >
>
> Should we make this optional?
>
I've tested with binutils 2.24 and gcc 4.9.2.
Also binutils 2.22 configures with this flags.
So I think it doesn't hurt to enable by default,
at least when the buidroot compiler is used. Not
sure about very old external GCCs, which have no lto.
Peter
> Thomas
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 1/1] binutils/gcc: make it possible to use lto
2014-11-09 13:00 ` Thomas Petazzoni
2014-11-09 13:16 ` Peter Kuemmel
@ 2014-11-10 9:28 ` Peter Kuemmel
2014-11-10 9:45 ` Thomas Petazzoni
1 sibling, 1 reply; 5+ messages in thread
From: Peter Kuemmel @ 2014-11-10 9:28 UTC (permalink / raw)
To: buildroot
> Gesendet: Sonntag, 09. November 2014 um 14:00 Uhr
> Von: "Thomas Petazzoni" <thomas.petazzoni@free-electrons.com>
> An: "Peter K?mmel" <syntheticpp@gmx.net>
> Cc: buildroot at buildroot.org
> Betreff: Re: [Buildroot] [PATCH 1/1] binutils/gcc: make it possible to use lto
>
> Dear Peter K?mmel,
>
> On Sun, 9 Nov 2014 12:56:01 +0100, Peter K?mmel wrote:
> > When -flto is used the compiler and binutils have to support lto.
> > ar/ranlib needs to be called with the lto plugin, therefore use
> > the wrappers provided by GCC: *-gcc-ar and *-gcc-ranlib.
> >
> > Signed-off-by: Peter K?mmel <syntheticpp@gmx.net>
> > ---
> > package/binutils/binutils.mk | 2 ++
> > package/gcc/gcc.mk | 2 ++
> > 2 files changed, 4 insertions(+)
> >
> > diff --git a/package/binutils/binutils.mk b/package/binutils/binutils.mk
> > index b8dab5d..e552abc 100644
> > --- a/package/binutils/binutils.mk
> > +++ b/package/binutils/binutils.mk
> > @@ -48,6 +48,7 @@ BINUTILS_DISABLE_GDB_CONF_OPTS = \
> > BINUTILS_CONF_OPTS = --disable-multilib --disable-werror \
> > --host=$(GNU_TARGET_NAME) \
> > --target=$(GNU_TARGET_NAME) \
> > + --enable-plugins --enable-lto \
> > --enable-install-libiberty \
> > $(BINUTILS_DISABLE_GDB_CONF_OPTS) \
> > $(BINUTILS_EXTRA_CONFIG_OPTIONS)
> > @@ -67,6 +68,7 @@ endif
> > HOST_BINUTILS_CONF_OPTS = --disable-multilib --disable-werror \
> > --target=$(GNU_TARGET_NAME) \
> > --disable-shared --enable-static \
> > + --enable-plugins --enable-lto \
> > --with-sysroot=$(STAGING_DIR) \
> > $(BINUTILS_DISABLE_GDB_CONF_OPTS) \
> > $(BINUTILS_EXTRA_CONFIG_OPTIONS)
> > diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
> > index cdd71aa..a8853f7 100644
> > --- a/package/gcc/gcc.mk
> > +++ b/package/gcc/gcc.mk
> > @@ -92,6 +92,8 @@ HOST_GCC_COMMON_CONF_OPTS = \
> > --with-gnu-ld \
> > --disable-libssp \
> > --disable-multilib \
> > + --enable-plugins \
> > + --enable-lto \
> > --with-gmp=$(HOST_DIR)/usr \
> > --with-mpfr=$(HOST_DIR)/usr
> >
>
> Should we make this optional?
Thought more about it: it is not necessary to make it optional.
Using --enable-plugins --enable-lto in binutils only allows using lto,
but when not used, it doesn't change anything. And these options are
available in the binutils versions supported by buildroot.
Also all buildroot's builds of the GCC (>=4.7) support the lto flags,
and when -flto is not used nothing changed.
So in both cases optional support of lto is provided without changing
behavior when lto is not used.
Peter
>
> Thomas
> --
> Thomas Petazzoni, CTO, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH 1/1] binutils/gcc: make it possible to use lto
2014-11-10 9:28 ` Peter Kuemmel
@ 2014-11-10 9:45 ` Thomas Petazzoni
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2014-11-10 9:45 UTC (permalink / raw)
To: buildroot
Dear Peter Kuemmel,
On Mon, 10 Nov 2014 10:28:18 +0100, Peter Kuemmel wrote:
> Thought more about it: it is not necessary to make it optional.
> Using --enable-plugins --enable-lto in binutils only allows using lto,
> but when not used, it doesn't change anything. And these options are
> available in the binutils versions supported by buildroot.
>
> Also all buildroot's builds of the GCC (>=4.7) support the lto flags,
> and when -flto is not used nothing changed.
>
> So in both cases optional support of lto is provided without changing
> behavior when lto is not used.
Ok. What about older versions of gcc/binutils, such as gcc 4.2, gcc
4.5, or binutils 2.18. We still support gcc 4.2 and binutils 2.18 for
the AVR32 architecture (even though it's marked deprecated, we still
haven't removed the support for this arch). We still have gcc 4.5 as
the default for Blackfin.
I guess some of those older versions don't support LTO, so maybe a
Config.in knob BR2_GCC_SUPPORTS_LTO will be needed, and ditto for
binutils.
Best regards,
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-11-10 9:45 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-09 11:56 [Buildroot] [PATCH 1/1] binutils/gcc: make it possible to use lto Peter Kümmel
2014-11-09 13:00 ` Thomas Petazzoni
2014-11-09 13:16 ` Peter Kuemmel
2014-11-10 9:28 ` Peter Kuemmel
2014-11-10 9:45 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox