This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/85142] Wrong -print-multi-os-directory & -print-multi-lib output for riscv64 + multilib
- From: "wilson at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Sat, 07 Apr 2018 00:30:40 +0000
- Subject: [Bug target/85142] Wrong -print-multi-os-directory & -print-multi-lib output for riscv64 + multilib
- Auto-submitted: auto-generated
- References: <bug-85142-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85142
--- Comment #10 from Jim Wilson <wilson at gcc dot gnu.org> ---
The main problem turns out to be your deletion of MULTILIB_REUSE. You get an
error if MULTILIB_REUSE refers to directories that aren't in MULTILIB_REQUIRED,
but deleting the whole thing is wrong, as this is required to handle the fact
that imafdc and gc are the same architecture.
Defining MULTILIB_REUSE makes MULTILIB_MATCHES unnecessary. The RISC-V port is
using default options specified by configure, so MULTILIB_DEFAULTS appears to
be unnecessary.
Adding back to your patch
MULTILIB_REUSE = \
march.rv64imafdc/mabi.lp64d=march.rv64imafd/mabi.lp64d \
march.rv64imafdc/mabi.lp64d=march.rv64gc/mabi.lp64d \
march.rv64imafdc/mabi.lp64d=march.rv64g/mabi.lp64d
I get
gamma05:2256$ ./xgcc -B./ --print-multi-lib
.;
lib64/lp64d;@march=rv64imafdc@mabi=lp64d
gamma05:2257$ ./xgcc -B./ --print-multi-dir
lib64/lp64d
gamma05:2258$ ./xgcc -B./ --print-multi-os-directory
../lib64/lp64d
gamma05:2259$
which looks mostly OK.
We still have two multilibs according to print-multi-lib though. The default
one will never match, because it is identical to the second one, and hence will
never be used. We are wasting time building it and installing it. It will
install into /usr/lib which we don't want. To get rid of the extra multilib, I
need to add multilib defaults again. With that change, I now get
gamma05:2331$ ./xgcc -B./ --print-multi-lib
.;
gamma05:2332$ ./xgcc -B./ --print-multi-dir
lib64/lp64d
gamma05:2333$ ./xgcc -B./ --print-multi-os-directory
../lib64/lp64d
which looks right. Only one copy of the libraries are built, and they get
installed in the right place, in ../lib64/lp64d.
I'll attach my patch.