Files
poky/meta/conf/machine/include/arm
Khem Raj 04eac1f2b6 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.

(From OE-Core rev: e64f0c1b6ac5d598a79a21de5f3060f83cb9523e)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Ross Burton <ross.burton@arm.com>
Cc: Jon Mason <jdmason@kudzu.us>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-02-02 10:38:28 +00:00
..
2021-08-02 15:44:10 +01:00

2012/03/30 - Mark Hatle mark.hatle@windriver.com

  • Initial Revision

The ARM architecture definitions are split among a number of files. The primary definitions for the variables are handled by the core arch-arm.inc file.

TUNE_ARCH is set to either "arm" or "armeb" depending on the value of the existence of the "bigendian" feature in a given tune.

A small set of ARM specific variables have been defined to allow TUNE_PKGARCH to be automatically defined. Optimized tunings must NOT change the definiton of TUNE_PKGARCH. TUNE_PKGACH:tune- will be ignored. The format of the package arch is enforced by the TUNE_PKGARCH default. The format must be of the form: [t][e][hf][b][-vfp][-neon]

TUNE_PKGARCH is defined as: ${ARMPKGARCH}${ARMPKGSFX_THUMB}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}

ARMPKGARCH - This is the core package arch component specified by each tuning. This is the primary identifier of a tuning. Usual values are: arm, armv4, armv5, armv6, armv7a, etc.

ARMPKGSFX_THUMB - This is the thumb specific suffix. Curently it is defined in feature-arm-thumb.inc.

ARMPKGSFX_DSP - This is the DSP specific suffix. Currently this is set to 'e' when on armv5 and the dsp feature is enabled.

ARMPKGSFX_EABI - This is the eabi specific suffix. There are currently two defined ABIs specificed, standard EABI and Hard Float (VFP) EABI.
When the callconvention-hard is enabled, "hf" is specified, otherwise it is blank.

ARMPKGSFX_ENDIAN - This is the endian specific suffix. It is defined in the core arch-arm.inc file.

ARMPKGSFX_FPU - This is the FPU specific suffix. The suffix indicates specific FPU optimizations. 'vfp' and 'neon' are both defined.