This reverts commit 37d57ac9a636f2235f9060e84fb8dd7968abd1dc. The resolution to https://sourceware.org/bugzilla/show_bug.cgi?id=22962 let GCC pass -m emulation to ld and let the ld emulation configure default library paths. This scheme is problematic:
* It's not ld's business to specify default -L. Different platforms have different opinions on the hierarchy and all other arches work well without ld's default -L. * If some ABI derived library paths are desired, the compiler driver is in a better position to make the decision and traditionally has done this. * -m emulation is opaque to the compiler driver. It doesn't affect -B, so data files like crt*.o, libasan_preinit.o, and libtsan_preinit.o are not affected. As is, many platforms just use symlinks to fake the lib64/{ilp32{,f},lp64{,f}} hierarchies needed by the GNU ld emulation. They can always specify -L explicitly if they want some ABI derived library paths. See also the rejected https://reviews.llvm.org/D95755 gcc/Changelog: * config/riscv/linux.h (LD_EMUL_SUFFIX): Remove. (LINK_SPEC): Remove LD_EMUL_SUFFIX. --- gcc/config/riscv/linux.h | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h index 38803723ba9..e0ff6e6a178 100644 --- a/gcc/config/riscv/linux.h +++ b/gcc/config/riscv/linux.h @@ -49,16 +49,8 @@ along with GCC; see the file COPYING3. If not see #define CPP_SPEC "%{pthread:-D_REENTRANT}" -#define LD_EMUL_SUFFIX \ - "%{mabi=lp64d:}" \ - "%{mabi=lp64f:_lp64f}" \ - "%{mabi=lp64:_lp64}" \ - "%{mabi=ilp32d:}" \ - "%{mabi=ilp32f:_ilp32f}" \ - "%{mabi=ilp32:_ilp32}" - #define LINK_SPEC "\ --melf" XLEN_SPEC DEFAULT_ENDIAN_SPEC "riscv" LD_EMUL_SUFFIX " \ +-melf" XLEN_SPEC DEFAULT_ENDIAN_SPEC "riscv \ %{mno-relax:--no-relax} \ %{mbig-endian:-EB} \ %{mlittle-endian:-EL} \ -- 2.36.1.476.g0c4daa206d-goog