gcc-target: Enable fp arch extention when fpu is available

Message ID 20180620052106.22306-1-raj.khem@gmail.com
State New
Headers show
Series
  • gcc-target: Enable fp arch extention when fpu is available
Related show

Commit Message

Khem Raj June 20, 2018, 5:21 a.m.
This is especially needed when defaulting to hard-float ABI
Fixes errors e.g.
cc1: error: -mfloat-abi=hard: selected processor lacks an FPU

Fixes [YOCTO #12795]

Signed-off-by: Khem Raj <raj.khem@gmail.com>

Cc: Ross Burton <ross.burton@intel.com>
---
 meta/recipes-devtools/gcc/gcc-target.inc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

-- 
2.17.1

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Comments

Andre McCurdy June 20, 2018, 11:33 p.m. | #1
On Tue, Jun 19, 2018 at 10:21 PM, Khem Raj <raj.khem@gmail.com> wrote:
> This is especially needed when defaulting to hard-float ABI

> Fixes errors e.g.

> cc1: error: -mfloat-abi=hard: selected processor lacks an FPU

>

> Fixes [YOCTO #12795]

>

> Signed-off-by: Khem Raj <raj.khem@gmail.com>

> Cc: Ross Burton <ross.burton@intel.com>

> ---

>  meta/recipes-devtools/gcc/gcc-target.inc | 6 +++---

>  1 file changed, 3 insertions(+), 3 deletions(-)

>

> diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc

> index 56e4b95af4..92cad28b7a 100644

> --- a/meta/recipes-devtools/gcc/gcc-target.inc

> +++ b/meta/recipes-devtools/gcc/gcc-target.inc

> @@ -14,9 +14,9 @@ EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"

>  # specific). For example, for ARM, ARMv6+ adds atomic instructions that may

>  # affect the ABI in the gcc-runtime libs. Since we can't rely on gcc on the

>  # target to always be passed -march etc, its built-in default needs to be safe.

> -EXTRA_OECONF_append_armv6 = " --with-arch=armv6"

> -EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"

> -EXTRA_OECONF_append_armv7ve = " --with-arch=armv7ve"

> +EXTRA_OECONF_append_armv6 = " --with-arch=armv6${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"

> +EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"

> +EXTRA_OECONF_append_armv7ve = " --with-arch=armv7ve${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"


Does this work for gcc7?

>  # libcc1 requres gcc_cv_objdump when cross build, but gcc_cv_objdump is

>  # set in subdir gcc, so subdir libcc1 can't use it, export it here to

> --

> 2.17.1

>

> --

> _______________________________________________

> Openembedded-core mailing list

> Openembedded-core@lists.openembedded.org

> http://lists.openembedded.org/mailman/listinfo/openembedded-core

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core
Khem Raj June 21, 2018, 1:05 a.m. | #2
No, it wont AFAICT, I guess we need to move this into gcc-8.0.bb
On Wed, Jun 20, 2018 at 4:33 PM Andre McCurdy <armccurdy@gmail.com> wrote:
>

> On Tue, Jun 19, 2018 at 10:21 PM, Khem Raj <raj.khem@gmail.com> wrote:

> > This is especially needed when defaulting to hard-float ABI

> > Fixes errors e.g.

> > cc1: error: -mfloat-abi=hard: selected processor lacks an FPU

> >

> > Fixes [YOCTO #12795]

> >

> > Signed-off-by: Khem Raj <raj.khem@gmail.com>

> > Cc: Ross Burton <ross.burton@intel.com>

> > ---

> >  meta/recipes-devtools/gcc/gcc-target.inc | 6 +++---

> >  1 file changed, 3 insertions(+), 3 deletions(-)

> >

> > diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc

> > index 56e4b95af4..92cad28b7a 100644

> > --- a/meta/recipes-devtools/gcc/gcc-target.inc

> > +++ b/meta/recipes-devtools/gcc/gcc-target.inc

> > @@ -14,9 +14,9 @@ EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"

> >  # specific). For example, for ARM, ARMv6+ adds atomic instructions that may

> >  # affect the ABI in the gcc-runtime libs. Since we can't rely on gcc on the

> >  # target to always be passed -march etc, its built-in default needs to be safe.

> > -EXTRA_OECONF_append_armv6 = " --with-arch=armv6"

> > -EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"

> > -EXTRA_OECONF_append_armv7ve = " --with-arch=armv7ve"

> > +EXTRA_OECONF_append_armv6 = " --with-arch=armv6${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"

> > +EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"

> > +EXTRA_OECONF_append_armv7ve = " --with-arch=armv7ve${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"

>

> Does this work for gcc7?

>

> >  # libcc1 requres gcc_cv_objdump when cross build, but gcc_cv_objdump is

> >  # set in subdir gcc, so subdir libcc1 can't use it, export it here to

> > --

> > 2.17.1

> >

> > --

> > _______________________________________________

> > Openembedded-core mailing list

> > Openembedded-core@lists.openembedded.org

> > http://lists.openembedded.org/mailman/listinfo/openembedded-core

-- 
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Patch

diff --git a/meta/recipes-devtools/gcc/gcc-target.inc b/meta/recipes-devtools/gcc/gcc-target.inc
index 56e4b95af4..92cad28b7a 100644
--- a/meta/recipes-devtools/gcc/gcc-target.inc
+++ b/meta/recipes-devtools/gcc/gcc-target.inc
@@ -14,9 +14,9 @@  EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"
 # specific). For example, for ARM, ARMv6+ adds atomic instructions that may
 # affect the ABI in the gcc-runtime libs. Since we can't rely on gcc on the
 # target to always be passed -march etc, its built-in default needs to be safe.
-EXTRA_OECONF_append_armv6 = " --with-arch=armv6"
-EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"
-EXTRA_OECONF_append_armv7ve = " --with-arch=armv7ve"
+EXTRA_OECONF_append_armv6 = " --with-arch=armv6${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
+EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
+EXTRA_OECONF_append_armv7ve = " --with-arch=armv7ve${@'+fp' if d.getVar('TARGET_FPU') == 'hard' else ''}"
 
 # libcc1 requres gcc_cv_objdump when cross build, but gcc_cv_objdump is
 # set in subdir gcc, so subdir libcc1 can't use it, export it here to