Re: [OE-core] [PATCH] armv8/armv9: Avoid using -march when -mcpu is chosen
On Fri, Jan 26, 2024 at 03:31:41PM -0800, Khem Raj wrote: > Current include logic goes into generic arm v8/v9 architecture tunes and > adds corresponding -march option after synthesizing it from various tune > fragments, this is fine for a machine which is using armv8/armv9 based > tunes but cortex tunes are intentionally using -mcpu option based on > selected tune value. So when cortex based default tune is selected for a > machine, it will add both -mcpu and -march to the compiler commandline > which can result in invalid combinations for this pair in gcc's own > logic. This can then result in compiler warnings/errors reporting this > > e.g. > > aarch64-yoe-linux-gcc -mcpu=cortex-a72.cortex-a53 -march=armv8-a+crc+crypto > -mbranch-protection=standard > ... > cc1: error: switch '-mcpu=cortex-a72.cortex-a53' conflicts with > '-march=armv8-a+crc+crypto' switch and resulted in options '+crc+crypto' > being added [-Werror] > > This is seen in lot of configure test results in glibc 2.39 and the > warning is promoted to errors by gcc in some of these checks especially > with gcc-14, the logs also show it as warning in other places in > configure checks. > > mcpu option will compute relevant march implicitly as it specifies a cpu > implementation and this will be the right value to use, therefore do not > specify -march when -mcpu is already describing the cpu. > > Signed-off-by: Khem Raj > Cc: Ross Burton > Cc: Jon Mason Looks good to me. Reviewed-by: Jon Mason I have some coming that I'll need to tweak to match these. So, expect those soon. Thanks, Jon > --- > meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc | 3 ++- > meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc | 3 ++- > meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc | 3 ++- > meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc| 3 ++- > .../machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc | 3 ++- > meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc | 3 ++- > .../machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc | 3 ++- > meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc | 3 ++- > meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc| 3 ++- > meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc | 3 ++- > meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc | 3 ++- > meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc | 3 ++- > meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc | 3 ++- > meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc | 3 ++- > meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc | 3 ++- > meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc| 3 ++- > meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc| 3 ++- > meta/conf/machine/include/arm/armv8a/tune-cortexa35.inc| 3 ++- > meta/conf/machine/include/arm/armv8a/tune-cortexa53.inc| 3 ++- > .../machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc| 3 ++- > meta/conf/machine/include/arm/armv8a/tune-cortexa57.inc| 3 ++- > .../machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc| 3 ++- > meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc| 3 ++- > .../machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc| 3 ++- > .../machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc| 3 ++- > meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc| 3 ++- > meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc| 3 ++- > meta/conf/machine/include/arm/armv9a/tune-neoversen2.inc | 3 ++- > 28 files changed, 56 insertions(+), 28 deletions(-) > > diff --git a/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc > b/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc > index 493ad67b21d..0a115be8a47 100644 > --- a/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc > +++ b/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc > @@ -10,5 +10,6 @@ require conf/machine/include/arm/arch-armv8-1m-main.inc > > AVAILTUNES+= "cortexm55" > ARMPKGARCH:tune-cortexm55 = "cortexm55" > -TUNE_FEATURES:tune-cortexm55 = > "${TUNE_FEATURES:tune-armv8-1m-main} cortexm55" > +# We do not want -march since -mcpu is added above to cover for it > +TUNE_FEATURES:tune-cortexm55 = "cortexm55" > PACKAGE_EXTRA_ARCHS:tune-cortexm55 = > "${PACKAGE_EXTRA_ARCHS:tune-armv8-1m-main} cortexm55" > diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc > b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc > index d130b4b90ad..5e63b45ae0e 100644 > --- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc > +++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc > @@ -8,6 +8,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc > # Little Endian base configs > AVAILTUNES += "cortexa55" >
[OE-core] [PATCH] armv8/armv9: Avoid using -march when -mcpu is chosen
Current include logic goes into generic arm v8/v9 architecture tunes and adds corresponding -march option after synthesizing it from various tune fragments, this is fine for a machine which is using armv8/armv9 based tunes but cortex tunes are intentionally using -mcpu option based on selected tune value. So when cortex based default tune is selected for a machine, it will add both -mcpu and -march to the compiler commandline which can result in invalid combinations for this pair in gcc's own logic. This can then result in compiler warnings/errors reporting this e.g. aarch64-yoe-linux-gcc -mcpu=cortex-a72.cortex-a53 -march=armv8-a+crc+crypto -mbranch-protection=standard ... cc1: error: switch '-mcpu=cortex-a72.cortex-a53' conflicts with '-march=armv8-a+crc+crypto' switch and resulted in options '+crc+crypto' being added [-Werror] This is seen in lot of configure test results in glibc 2.39 and the warning is promoted to errors by gcc in some of these checks especially with gcc-14, the logs also show it as warning in other places in configure checks. mcpu option will compute relevant march implicitly as it specifies a cpu implementation and this will be the right value to use, therefore do not specify -march when -mcpu is already describing the cpu. Signed-off-by: Khem Raj Cc: Ross Burton Cc: Jon Mason --- meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc | 3 ++- meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc | 3 ++- meta/conf/machine/include/arm/armv8-2a/tune-cortexa65.inc | 3 ++- meta/conf/machine/include/arm/armv8-2a/tune-cortexa65ae.inc| 3 ++- .../machine/include/arm/armv8-2a/tune-cortexa75-cortexa55.inc | 3 ++- meta/conf/machine/include/arm/armv8-2a/tune-cortexa75.inc | 3 ++- .../machine/include/arm/armv8-2a/tune-cortexa76-cortexa55.inc | 3 ++- meta/conf/machine/include/arm/armv8-2a/tune-cortexa76.inc | 3 ++- meta/conf/machine/include/arm/armv8-2a/tune-cortexa76ae.inc| 3 ++- meta/conf/machine/include/arm/armv8-2a/tune-cortexa77.inc | 3 ++- meta/conf/machine/include/arm/armv8-2a/tune-neoversee1.inc | 3 ++- meta/conf/machine/include/arm/armv8-2a/tune-octeontx2.inc | 3 ++- meta/conf/machine/include/arm/armv8-m/tune-cortexm23.inc | 3 ++- meta/conf/machine/include/arm/armv8-m/tune-cortexm33.inc | 3 ++- meta/conf/machine/include/arm/armv8-m/tune-cortexm35p.inc | 3 ++- meta/conf/machine/include/arm/armv8a/tune-cortexa32.inc| 3 ++- meta/conf/machine/include/arm/armv8a/tune-cortexa34.inc| 3 ++- meta/conf/machine/include/arm/armv8a/tune-cortexa35.inc| 3 ++- meta/conf/machine/include/arm/armv8a/tune-cortexa53.inc| 3 ++- .../machine/include/arm/armv8a/tune-cortexa57-cortexa53.inc| 3 ++- meta/conf/machine/include/arm/armv8a/tune-cortexa57.inc| 3 ++- .../machine/include/arm/armv8a/tune-cortexa72-cortexa53.inc| 3 ++- meta/conf/machine/include/arm/armv8a/tune-cortexa72.inc| 3 ++- .../machine/include/arm/armv8a/tune-cortexa73-cortexa35.inc| 3 ++- .../machine/include/arm/armv8a/tune-cortexa73-cortexa53.inc| 3 ++- meta/conf/machine/include/arm/armv8a/tune-cortexa73.inc| 3 ++- meta/conf/machine/include/arm/armv8r/tune-cortexr52.inc| 3 ++- meta/conf/machine/include/arm/armv9a/tune-neoversen2.inc | 3 ++- 28 files changed, 56 insertions(+), 28 deletions(-) diff --git a/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc b/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc index 493ad67b21d..0a115be8a47 100644 --- a/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc +++ b/meta/conf/machine/include/arm/armv8-1m/tune-cortexm55.inc @@ -10,5 +10,6 @@ require conf/machine/include/arm/arch-armv8-1m-main.inc AVAILTUNES+= "cortexm55" ARMPKGARCH:tune-cortexm55 = "cortexm55" -TUNE_FEATURES:tune-cortexm55 = "${TUNE_FEATURES:tune-armv8-1m-main} cortexm55" +# We do not want -march since -mcpu is added above to cover for it +TUNE_FEATURES:tune-cortexm55 = "cortexm55" PACKAGE_EXTRA_ARCHS:tune-cortexm55 = "${PACKAGE_EXTRA_ARCHS:tune-armv8-1m-main} cortexm55" diff --git a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc index d130b4b90ad..5e63b45ae0e 100644 --- a/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc +++ b/meta/conf/machine/include/arm/armv8-2a/tune-cortexa55.inc @@ -8,6 +8,7 @@ require conf/machine/include/arm/arch-armv8-2a.inc # Little Endian base configs AVAILTUNES += "cortexa55" ARMPKGARCH:tune-cortexa55 = "cortexa55" -TUNE_FEATURES:tune-cortexa55 = "${TUNE_FEATURES:tune-armv8-2a-crypto} cortexa55" +# We do not want -march since -mcpu is added above to cover for it +TUNE_FEATURES:tune-cortexa55 = "aarch64 crypto cortexa55" PACKAGE_EXTRA_ARCHS:tune-cortexa55= "${PACKAGE_EXTRA_ARCHS:tune-armv8-2a-crypto}