Hello, For a powerpc compiler configured with --with-abi=elfv2, an explicit -mabi option other than elfv1 fails to override the default.
For example, after [...]/configure --enable-languages=c --target=powerpc-elf --with-abi=elfv2 make all-gcc This command: ./gcc/xgcc -B./gcc/ t.c -mabi=ieeelongdouble -v issues: ./gcc/cc1 [...] t.c -mabi=ieeelongdouble -mabi=elfv2 elfv2 overrides the user request here, which I think is not as intended. This is controlled by OPTION_DEFAULT_SPECS, where we have {"abi", "%{!mabi=elfv*:-mabi=%(VALUE)}" }, >From https://gcc.gnu.org/pipermail/gcc-patches/2013-November/375042.html I don't see an explicit reason to trigger only on elfv* . It just looks like an oversight with a focus on elfv1 vs elfv2 at the time. The attached patch is a proposal to correct this, simply removing the "elfv" prefix from the spec and adding the corresponding description to the block comment just above. We have been using this for about a year now in gcc-11 based toolchains. This helps our dejagnu testsuite runs for VxWorks on powerpc and hasn't produced any ill side effect to date. The patch also bootstraps and regtests fine on powerpc64-linux. Is this OK to commit? Thanks in advance! With Kind Regards, Olivier 2022-09-14 Olivier Hainque <hain...@adacore.com> * config/rs6000/option-defaults.h (OPTION_DEFAULT_SPECS): Have any -mabi, not only -mabi=elfv*, override the --with-abi configuration default.
commit 33933796b777591007c04448860e781ac17b9070 Author: Olivier Hainque <hain...@adacore.com> AuthorDate: Thu Apr 21 14:44:47 2022 +0000 Commit: Olivier Hainque <hain...@adacore.com> CommitDate: Thu Apr 21 14:47:37 2022 +0000 Fix thinko in --with-abi processing on powerpc Make it so any -mabi overrides what --with-abi requests as a default, not only -mabi=elfv*. Part of V415-021 (-mabi overrides on powerpc) Change-Id: I62763dee62bbbd7d446f2dd091017d0c7e719cab diff --git a/gcc/config/rs6000/option-defaults.h b/gcc/config/rs6000/option-defaults.h index 7ebd115755a..ecf246e6b2e 100644 --- a/gcc/config/rs6000/option-defaults.h +++ b/gcc/config/rs6000/option-defaults.h @@ -47,6 +47,7 @@ #endif /* Support for a compile-time default CPU, et cetera. The rules are: + --with-abi is ignored if -mabi is specified. --with-cpu is ignored if -mcpu is specified; likewise --with-cpu-32 and --with-cpu-64. --with-tune is ignored if -mtune or -mcpu is specified; likewise @@ -54,7 +55,7 @@ --with-float is ignored if -mhard-float or -msoft-float are specified. */ #define OPTION_DEFAULT_SPECS \ - {"abi", "%{!mabi=elfv*:-mabi=%(VALUE)}" }, \ + {"abi", "%{!mabi=*:-mabi=%(VALUE)}" }, \ {"tune", "%{!mtune=*:%{!mcpu=*:-mtune=%(VALUE)}}" }, \ {"tune_32", "%{" OPT_ARCH32 ":%{!mtune=*:%{!mcpu=*:-mtune=%(VALUE)}}}" }, \ {"tune_64", "%{" OPT_ARCH64 ":%{!mtune=*:%{!mcpu=*:-mtune=%(VALUE)}}}" }, \