YunQiang Su <yunqiang...@cipunited.com> 于2022年8月2日周二 19:11写道: > > If we cannot get info from options and cpuinfo, we try to get from: > 1. getauxval(AT_BASE_PLATFORM), introduced since Linux 5.7 > 2. _MIPS_ARCH from host compiler. > > This can fix the wrong loader usage on r5/r6 platform with > -march=native. >
Is it treat as minor fixes? > gcc/ChangeLog: > * config/mips/driver-native.cc (host_detect_local_cpu): > try getauxval(AT_BASE_PLATFORM) and _MIPS_ARCH, too. > --- > gcc/config/mips/driver-native.cc | 22 +++++++++++++++++++--- > 1 file changed, 19 insertions(+), 3 deletions(-) > > diff --git a/gcc/config/mips/driver-native.cc > b/gcc/config/mips/driver-native.cc > index 47627f85ce1..9aa7044c0b8 100644 > --- a/gcc/config/mips/driver-native.cc > +++ b/gcc/config/mips/driver-native.cc > @@ -19,6 +19,7 @@ along with GCC; see the file COPYING3. If not see > > #define IN_TARGET_CODE 1 > > +#include <sys/auxv.h> > #include "config.h" > #include "system.h" > #include "coretypes.h" > @@ -46,15 +47,15 @@ host_detect_local_cpu (int argc, const char **argv) > bool arch; > > if (argc < 1) > - return NULL; > + goto fallback_cpu; > > arch = strcmp (argv[0], "arch") == 0; > if (!arch && strcmp (argv[0], "tune")) > - return NULL; > + goto fallback_cpu; > > f = fopen ("/proc/cpuinfo", "r"); > if (f == NULL) > - return NULL; > + goto fallback_cpu; > > while (fgets (buf, sizeof (buf), f) != NULL) > if (startswith (buf, "cpu model")) > @@ -84,8 +85,23 @@ host_detect_local_cpu (int argc, const char **argv) > > fclose (f); > > +fallback_cpu: > +/*FIXME: how about other OSes, like FreeBSD? */ > +#ifdef __linux__ > + /*Note: getauxval may return NULL as: > + * AT_BASE_PLATFORM is supported since Linux 5.7 > + * Or from older version of qemu-user > + * */ > + if (cpu == NULL) > + cpu = (const char *) getauxval (AT_BASE_PLATFORM); > +#endif > + > if (cpu == NULL) > +#if defined (_MIPS_ARCH) > + cpu = _MIPS_ARCH; > +#else > return NULL; > +#endif > > return concat ("-m", argv[0], "=", cpu, NULL); > } > -- > 2.30.2 >