Message ID | 20180504214523.11936-1-jimw@sifive.com |
---|---|
State | New |
Headers | show |
Series | RISC-V: Use new linker emulations for glibc ABI. | expand |
On Fri, May 4, 2018 at 2:45 PM, Jim Wilson <jimw@sifive.com> wrote: > I've submitted a binutils patch that adds some new linker emulations to fix > a linker problem with library paths. The rv64/lp64d linker looks in /lib64 > when glibc says it should look in /lib64/lp64d. To make the binutils patch > work, I had to add 4 new emulations because we have 6 ABIs. This patch > modifies the compiler to use the new linker emulations in the linux port. This > was done in a backwards compatible way, so the linker still looks in the > original dir after the ABI specific dir, and I didn't change the emulation > names for the default lp64d and ilp32d ABIs. Committed, with a corrected ChangeLog entry. * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash. (LD_EMUL_SUFFIX): New. (LINK_SPEC): Use it. Jim
diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h index aa8a28d5d31..85561846dad 100644 --- a/gcc/config/riscv/linux.h +++ b/gcc/config/riscv/linux.h @@ -30,7 +30,7 @@ along with GCC; see the file COPYING3. If not see "%{mabi=ilp32d:}" \ "%{mabi=lp64:-sf}" \ "%{mabi=lp64f:-sp}" \ - "%{mabi=lp64d:}" \ + "%{mabi=lp64d:}" #undef MUSL_DYNAMIC_LINKER #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-riscv" XLEN_SPEC MUSL_ABI_SUFFIX ".so.1" @@ -49,8 +49,16 @@ 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 "lriscv \ +-melf" XLEN_SPEC "lriscv" LD_EMUL_SUFFIX " \ %{mno-relax:--no-relax} \ %{shared} \ %{!shared: \