RISC-V: Re-enable -msave-restore for shared libraries.
This re-enables -msave-restore for shared libraries, and uses the t-slibgcc-libgcc file to get the save-restore routines included directly in shared libraries so that we don't need to indirect through the PLT to reach them, which doesn't work. gcc/ * config/riscv/riscv.c (riscv_option_override): Revert 2019-08-30 change. libgcc/ * config.host (riscv*-*-linux*): Add t-slibgcc-libgcc to tmake_file. (riscv*-*-freebsd*): Likewise. From-SVN: r275478
This commit is contained in:
parent
e83573abb3
commit
2f4d895197
|
@ -1,3 +1,8 @@
|
||||||
|
2019-09-06 Jim Wilson <jimw@sifive.com>
|
||||||
|
|
||||||
|
* config/riscv/riscv.c (riscv_option_override): Revert 2019-08-30
|
||||||
|
change.
|
||||||
|
|
||||||
2019-09-06 Segher Boessenkool <segher@kernel.crashing.org>
|
2019-09-06 Segher Boessenkool <segher@kernel.crashing.org>
|
||||||
|
|
||||||
* config/rs6000/rs6000.md (unspec): Delete UNSPEC_MV_CR_OV.
|
* config/rs6000/rs6000.md (unspec): Delete UNSPEC_MV_CR_OV.
|
||||||
|
|
|
@ -4636,16 +4636,6 @@ riscv_option_override (void)
|
||||||
error ("%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32"
|
error ("%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32"
|
||||||
" [%<-mriscv-attribute%>]");
|
" [%<-mriscv-attribute%>]");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* The save-restore routines use t0 which is clobbered by the plt header,
|
|
||||||
so we can't use them when building shared libraries. */
|
|
||||||
if (TARGET_SAVE_RESTORE && flag_pic && TARGET_PLT)
|
|
||||||
{
|
|
||||||
target_flags &= ~MASK_SAVE_RESTORE;
|
|
||||||
if (target_flags_explicit & MASK_SAVE_RESTORE)
|
|
||||||
warning (0, "%<-msave-restore%> disabled; not supported with PLT "
|
|
||||||
"based shared libraries");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Implement TARGET_CONDITIONAL_REGISTER_USAGE. */
|
/* Implement TARGET_CONDITIONAL_REGISTER_USAGE. */
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2019-09-06 Jim Wilson <jimw@sifive.com>
|
||||||
|
|
||||||
|
* config.host (riscv*-*-linux*): Add t-slibgcc-libgcc to tmake_file.
|
||||||
|
(riscv*-*-freebsd*): Likewise.
|
||||||
|
|
||||||
2019-09-03 Ulrich Weigand <uweigand@de.ibm.com>
|
2019-09-03 Ulrich Weigand <uweigand@de.ibm.com>
|
||||||
|
|
||||||
* config.host: Remove references to spu.
|
* config.host: Remove references to spu.
|
||||||
|
|
|
@ -1201,12 +1201,12 @@ pru-*-*)
|
||||||
tm_file="$tm_file pru/pru-abi.h"
|
tm_file="$tm_file pru/pru-abi.h"
|
||||||
;;
|
;;
|
||||||
riscv*-*-linux*)
|
riscv*-*-linux*)
|
||||||
tmake_file="${tmake_file} riscv/t-softfp${host_address} t-softfp riscv/t-elf riscv/t-elf${host_address}"
|
tmake_file="${tmake_file} riscv/t-softfp${host_address} t-softfp riscv/t-elf riscv/t-elf${host_address} t-slibgcc-libgcc"
|
||||||
extra_parts="$extra_parts crtbegin.o crtend.o crti.o crtn.o crtendS.o crtbeginT.o"
|
extra_parts="$extra_parts crtbegin.o crtend.o crti.o crtn.o crtendS.o crtbeginT.o"
|
||||||
md_unwind_header=riscv/linux-unwind.h
|
md_unwind_header=riscv/linux-unwind.h
|
||||||
;;
|
;;
|
||||||
riscv*-*-freebsd*)
|
riscv*-*-freebsd*)
|
||||||
tmake_file="${tmake_file} riscv/t-softfp${host_address} t-softfp riscv/t-elf riscv/t-elf${host_address}"
|
tmake_file="${tmake_file} riscv/t-softfp${host_address} t-softfp riscv/t-elf riscv/t-elf${host_address} t-slibgcc-libgcc"
|
||||||
extra_parts="$extra_parts crtbegin.o crtend.o crti.o crtn.o crtendS.o crtbeginT.o"
|
extra_parts="$extra_parts crtbegin.o crtend.o crti.o crtn.o crtendS.o crtbeginT.o"
|
||||||
;;
|
;;
|
||||||
riscv*-*-*)
|
riscv*-*-*)
|
||||||
|
|
Loading…
Reference in New Issue