Skip to contentSkip to conversation

gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

PATCH Superseded Alexey Brodkin 3 participants 9 messages Sep 1, 2014 – Apr 21, 2015

v4 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

PATCH v4 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

From: Alexey Brodkin <[email protected]>

The gcc.mk file is passing --enable-target-optspace to gcc configure script, to ask for space-optimized (-Os) target libraries. However, passing this option has the effect of overriding any custom CFLAGS_FOR_TARGET or CXXFLAGS_FOR_TARGET values that may be passed.

These are some situations when it is required to pass custom flags on buildong of libgcc:
* Default flags "-g -Os" lead to build isses as with PowerPC on gcc 4.5
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810)
* Particular CPU requires specific instructions for HW support
* Deep optimizations

Cc Anton Kolesov <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Gustavo Zacarias <[email protected]>

---

Compared to v3 use "=" instead of ":=" which is not actually required here.

---
 package/gcc/gcc.mk | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)
package/gcc/gcc.mk +9 -3
index b344a14..4160180 100644
@@ -107,16 +107,22 @@ HOST_GCC_COMMON_CONF_OPT = \
 HOST_GCC_COMMON_CONF_ENV = \
 	MAKEINFO=missing
 
+GCC_COMMON_TARGET_CFLAGS = $(TARGET_CFLAGS)
+GCC_COMMON_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)
+
 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810
 # Workaround until it's fixed in 4.5.4 or later
 ifeq ($(ARCH),powerpc)
 ifeq ($(findstring x4.5.,x$(GCC_VERSION)),x4.5.)
-HOST_GCC_COMMON_CONF_OPT += --disable-target-optspace
+GCC_COMMON_TARGET_CFLAGS = $(filter-out -Os,$(GCC_COMMON_TARGET_CFLAGS))
+GCC_COMMON_TARGET_CXXFLAGS = $(filter-out -Os,$(GCC_COMMON_TARGET_CXXFLAGS))
 endif
-else
-HOST_GCC_COMMON_CONF_OPT += --enable-target-optspace
 endif
 
+# Propagate options used for target software building to GCC target libs
+HOST_GCC_COMMON_CONF_ENV += CFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)"
+HOST_GCC_COMMON_CONF_ENV += CXXFLAGS_FOR_TARGET="$(GCC_COMMON_TARGET_CXXFLAGS)"
+
 # gcc 4.6.x quadmath requires wchar
 ifneq ($(BR2_TOOLCHAIN_BUILDROOT_WCHAR),y)
 HOST_GCC_COMMON_CONF_OPT += --disable-libquadmath
Signature · 1 line
1.9.3
#1 lore raw

PATCH v4 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

Hi Thomas,

Quoted 16 lines · Alexey Brodkin

From: Alexey Brodkin <[email protected]>

The gcc.mk file is passing --enable-target-optspace to gcc configure script, to ask for space-optimized (-Os) target libraries. However, passing this option has the effect of overriding any custom CFLAGS_FOR_TARGET or CXXFLAGS_FOR_TARGET values that may be passed.

These are some situations when it is required to pass custom flags on buildong of libgcc:
* Default flags "-g -Os" lead to build isses as with PowerPC on gcc 4.5
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810)
* Particular CPU requires specific instructions for HW support
* Deep optimizations

Quoted 7 lines
Cc Anton Kolesov <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Gustavo Zacarias <[email protected]>

---

Compared to v3 use "=" instead of ":=" which is not actually required here.

I'm wondering if this version is fine and we may go ahead an apply it?

Regards,
Alexey

#2 lore raw

PATCH v4 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

Hi Thomas,

Quoted 25 lines · Alexey Brodkin

Hi Thomas,

Quoted 22 lines · Alexey Brodkin

From: Alexey Brodkin <[email protected]>

The gcc.mk file is passing --enable-target-optspace to gcc configure script, to ask for space-optimized (-Os) target libraries. However, passing this option has the effect of overriding any custom CFLAGS_FOR_TARGET or CXXFLAGS_FOR_TARGET values that may be passed.

These are some situations when it is required to pass custom flags on buildong of libgcc:
* Default flags "-g -Os" lead to build isses as with PowerPC on gcc 4.5
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810)
* Particular CPU requires specific instructions for HW support
* Deep optimizations

Cc Anton Kolesov <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Gustavo Zacarias <[email protected]>

---

Quoted 3 lines
Quoted 1 line

Compared to v3 use "=" instead of ":=" which is not actually required here.

I'm wondering if this version is fine and we may go ahead an apply it?

Please treat this as a polite reminder about this pending patch.

Regards,
Alexey

#3 lore raw

PATCH v4 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

Hi Thomas,

Quoted 28 lines · Alexey Brodkin

Hi Thomas,

Quoted 25 lines · Alexey Brodkin

Hi Thomas,

Quoted 22 lines · Alexey Brodkin

From: Alexey Brodkin <[email protected]>

The gcc.mk file is passing --enable-target-optspace to gcc configure script, to ask for space-optimized (-Os) target libraries. However, passing this option has the effect of overriding any custom CFLAGS_FOR_TARGET or CXXFLAGS_FOR_TARGET values that may be passed.

These are some situations when it is required to pass custom flags on buildong of libgcc:
* Default flags "-g -Os" lead to build isses as with PowerPC on gcc 4.5
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43810)
* Particular CPU requires specific instructions for HW support
* Deep optimizations

Cc Anton Kolesov <[email protected]>
Cc Thomas Petazzoni <[email protected]>
Cc Peter Korsgaard <[email protected]>
Cc Gustavo Zacarias <[email protected]>

---

Quoted 5 lines
Quoted 3 lines
Quoted 1 line

Compared to v3 use "=" instead of ":=" which is not actually required here.

I'm wondering if this version is fine and we may go ahead an apply it?

Please treat this as a polite reminder about this pending patch.

Any chance for this change to made its way into upstream Buildroot?

-Alexey

#4 lore raw

PATCH v4 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

Dear Alexey Brodkin,

Quoted 5 lines · Alexey Brodkin
Quoted 3 lines
Quoted 1 line

I'm wondering if this version is fine and we may go ahead an apply it?

Please treat this as a polite reminder about this pending patch.

Any chance for this change to made its way into upstream Buildroot?

Yes. Please give us some time to test it before applying it. It's touching a fairly sensitive area, so we don't apply such patches lightly.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#5 lore raw

PATCH v4 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

Hi Thomas,

Quoted 6 lines · Thomas Petazzoni

Dear Alexey Brodkin,

Quoted 2 lines · Alexey Brodkin
Quoted 2 lines
Quoted 1 line

I'm wondering if this version is fine and we may go ahead an apply it?

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

Please treat this as a polite reminder about this pending patch.

Any chance for this change to made its way into upstream Buildroot?

Yes. Please give us some time to test it before applying it. It's touching a fairly sensitive area, so we don't apply such patches lightly.

Sure, I completely understand and support your comment.
I just want to make sure this change is not lost and in one or other form is applied.

This change is important for us because allows us to build entire target binaries in consistency, otherwise with inconsistent binaries in some corner cases there happen error on linkage of libgcc and other software like busybox etc.

Personally I did build tests this patch for ARC, ARM and PPC (with GCC 4.5), essentially run-time test was only done on ARC because this is the only HW I had handy.

-Alexey

#6 lore raw

PATCH v4 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

In reply to Thomas Petazzoni

Hi Thomas,

Quoted 10 lines · Thomas Petazzoni

Dear Alexey Brodkin,

Quoted 5 lines · Alexey Brodkin
Quoted 3 lines
Quoted 1 line

I'm wondering if this version is fine and we may go ahead an apply it?

Please treat this as a polite reminder about this pending patch.

Any chance for this change to made its way into upstream Buildroot?

Quoted 7 lines

Yes. Please give us some time to test it before applying it. It's touching a fairly sensitive area, so we don't apply such patches lightly.

Best regards,

Thomas

I just got a reminder on my pending patches in Buildroot so I'm updating that one.

This v4 patch should be dropped because it is now superseded with v5
(http://patchwork.ozlabs.org/patch/453849/) which in its turn is just a rebase of v4 on top of more up to date master.

-Alexey

#7 lore raw

PATCH v4 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

Hi Alexey,

Quoted 6 lines · Alexey Brodkin

I just got a reminder on my pending patches in Buildroot so I'm updating that one.

This v4 patch should be dropped because it is now superseded with v5
(http://patchwork.ozlabs.org/patch/453849/) which in its turn is just a rebase of v4 on top of more up to date master.

Please mark this patch as "Superseded" in Buildroot's patchwork, then.

baruch

Signature · 3 lines
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -
#8 lore raw

PATCH v4 1/1 gcc: explicitly use C{XX}FLAGS_FOR_TARGET instead of --enable-target-optspace

Hi Baruch,

Quoted 11 lines · Baruch Siach

Hi Alexey,

Quoted 6 lines · Alexey Brodkin

I just got a reminder on my pending patches in Buildroot so I'm updating that one.

This v4 patch should be dropped because it is now superseded with v5
(http://patchwork.ozlabs.org/patch/453849/) which in its turn is just a rebase of v4 on top of more up to date master.

Please mark this patch as "Superseded" in Buildroot's patchwork, then.

Already done. Made it before sending my previous email.

-Alexey