[PATCH] gcc: Apply multilib fix to ARC as well
Khem Raj
raj.khem at gmail.com
Sun Jun 20 14:44:31 PDT 2021
this looks fine,
On Sun, Jun 20, 2021 at 11:52 AM Alexey Brodkin
<Alexey.Brodkin at synopsys.com> wrote:
>
> W/o that hack target GCC assume existence of per-mcpu folders,
> which are missing.
>
> In particular G++ failed to find "bits/c++config.h":
> ------------------>8------------------
> root at hsdk:~# cat test.cc
> #include <cstdlib>
>
> int myfunc(void)
> {
> }
>
> root at hsdk:~# g++ -c test.cc -v
> Using built-in specs.
> COLLECT_GCC=g++
> Target: arc-oe-linux
> Configured with: ../../../../../../work-shared/gcc-11.1.0-r0/gcc-11.1.0/configure --build=x86_64-linux --host=arc-oe-linux --target=arc-oe-linux --prefix=/usr --exec_prefix=/usr -x
> Thread model: posix
> Supported LTO compression algorithms: zlib
> gcc version 11.1.1 20210523 (GCC)
> COLLECT_GCC_OPTIONS='-c' '-v' '-shared-libgcc' '-mcpu=hs38_linux'
> /usr/libexec/gcc/arc-oe-linux/11.1.1/cc1plus -quiet -v -imultilib hs38_linux -D_GNU_SOURCE test.cc -quiet -dumpbase test.cc -dumpbase-ext .cc -mcpu=hs38_linux -version -o /tmp/ccs
> GNU C++17 (GCC) version 11.1.1 20210523 (arc-oe-linux)
> compiled by GNU C version 11.1.1 20210523, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version none
> GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129242
> ignoring nonexistent directory "/usr/lib/gcc/arc-oe-linux/11.1.1/../../../../include/c++/11.1.1/arc-oe-linux/hs38_linux"
> ignoring nonexistent directory "/usr/lib/arc-oe-linux/11.1.1/include"
> ignoring nonexistent directory "/usr/local/include"
> ignoring nonexistent directory "/usr/lib/gcc/arc-oe-linux/11.1.1/../../../../arc-oe-linux/include"
> #include "..." search starts here:
> #include <...> search starts here:
> /usr/lib/gcc/arc-oe-linux/11.1.1/../../../../include/c++/11.1.1
> /usr/lib/gcc/arc-oe-linux/11.1.1/../../../../include/c++/11.1.1/backward
> /usr/lib/gcc/arc-oe-linux/11.1.1/include
> /usr/lib/gcc/arc-oe-linux/11.1.1/include-fixed
> /usr/include
> End of search list.
> GNU C++17 (GCC) version 11.1.1 20210523 (arc-oe-linux)
> compiled by GNU C version 11.1.1 20210523, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version none
> GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129242
> Compiler executable checksum: 6df2f07a822bfbbb80a61414b712b75d
> In file included from test.cc:1:
> /usr/include/c++/11.1.1/cstdlib:41:10: fatal error: bits/c++config.h: No such file or directory
> 41 | #include <bits/c++config.h>
> | ^~~~~~~~~~~~~~~~~~
> compilation terminated.
> ------------------>8------------------
>
> Note "ignoring nonexistent directory "/usr/lib/gcc/arc-oe-linux/11.1.1/../../../../include/c++/11.1.1/arc-oe-linux/hs38_linux"
> message which is being used by GCC due to the fact of implicit "-mcpu=hs38_linux".
>
> In fact this header "bits/c++config.h" is located in "/usr/lib/gcc/arc-oe-linux/11.1.1/../../../../include/c++/11.1.1/arc-oe-linux"
> on target.
>
> Signed-off-by: Alexey Brodkin <abrodkin at synopsys.com>
> ---
> .../gcc/gcc/0004-64-bit-multilib-hack.patch | 23 +++++++++++++++++++---
> 1 file changed, 20 insertions(+), 3 deletions(-)
>
> diff --git a/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch b/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch
> index 789f57343b..8184e68743 100644
> --- a/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch
> +++ b/meta/recipes-devtools/gcc/gcc/0004-64-bit-multilib-hack.patch
> @@ -1,4 +1,4 @@
> -From 28e7c312b1292ca216d4b54ec9f6b7ac055907a8 Mon Sep 17 00:00:00 2001
> +From 2fa5c93641b75a662839c1b6eee172b6c481c70e Mon Sep 17 00:00:00 2001
> From: Khem Raj <raj.khem at gmail.com>
> Date: Fri, 29 Mar 2013 09:10:06 +0400
> Subject: [PATCH] 64-bit multilib hack.
> @@ -19,7 +19,7 @@ and be able to patch these entries with a complete set of correct paths but this
> don't have such code at this point. This is something the target gcc recipe should do
> and override these platform defaults in its build config.
>
> -Do same for riscv64 and aarch64
> +Do same for riscv64, aarch64 & arc
>
> RP 15/8/11
>
> @@ -30,11 +30,12 @@ Signed-off-by: Elvis Dowson <elvis.dowson at gmail.com>
> Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
> ---
> gcc/config/aarch64/t-aarch64-linux | 8 ++++----
> + gcc/config/arc/t-multilib-linux | 4 ++--
> gcc/config/i386/t-linux64 | 6 ++----
> gcc/config/mips/t-linux64 | 10 +++-------
> gcc/config/riscv/t-linux | 6 ++++--
> gcc/config/rs6000/t-linux64 | 5 ++---
> - 5 files changed, 15 insertions(+), 20 deletions(-)
> + 6 files changed, 17 insertions(+), 22 deletions(-)
>
> diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux
> index 241b0ef20b6..a7dadb2d64f 100644
> @@ -53,6 +54,22 @@ index 241b0ef20b6..a7dadb2d64f 100644
>
> -MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32)
> +#MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32)
> +diff --git a/gcc/config/arc/t-multilib-linux b/gcc/config/arc/t-multilib-linux
> +index fc3fff640a2..d58e28f6df8 100644
> +--- a/gcc/config/arc/t-multilib-linux
> ++++ b/gcc/config/arc/t-multilib-linux
> +@@ -16,9 +16,9 @@
> + # along with GCC; see the file COPYING3. If not see
> + # <http://www.gnu.org/licenses/>.
> +
> +-MULTILIB_OPTIONS = mcpu=hs/mcpu=archs/mcpu=hs38/mcpu=hs38_linux/mcpu=arc700/mcpu=nps400
> ++#MULTILIB_OPTIONS = mcpu=hs/mcpu=archs/mcpu=hs38/mcpu=hs38_linux/mcpu=arc700/mcpu=nps400
> +
> +-MULTILIB_DIRNAMES = hs archs hs38 hs38_linux arc700 nps400
> ++#MULTILIB_DIRNAMES = hs archs hs38 hs38_linux arc700 nps400
> +
> + # Aliases:
> + MULTILIB_MATCHES += mcpu?arc700=mA7
> diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64
> index d288b093522..7b5980a9d21 100644
> --- a/gcc/config/i386/t-linux64
> --
> 2.16.2
>
More information about the linux-snps-arc
mailing list