Message ID | alpine.LFD.2.21.2008281657110.24175@redsun52.ssa.fujisawa.hgst.com |
---|---|
State | Accepted |
Headers | show |
Series | RISC-V/libgcc: Use `-fasynchronous-unwind-tables' for LIB2_DIVMOD_FUNCS | expand |
Hi Maciej: LGTM, thanks for your patch! On Sat, Aug 29, 2020 at 9:19 PM Maciej W. Rozycki via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > Use `-fasynchronous-unwind-tables' rather than `-fexceptions > -fnon-call-exceptions' in LIB2_DIVMOD_FUNCS compilation flags so as to > provide unwind tables for the affected functions while not pulling the > unwinder proper, which is not required here. > > Beyond saving program space it fixes a RISC-V glibc build error due to > unsatisfied `malloc' and `free' references from the unwinder causing > link errors with `ld.so' where libgcc has been built at -O0. > > libgcc/ > * config/riscv/t-elf (LIB2_DIVMOD_EXCEPTION_FLAGS): New > variable. > --- > Hi, > > As Mon, Aug 31st (a bank holiday in England) will be my last day at > Western Digital and I won't be able to submit patches on behalf of the > company afterwards here is a replacement change for RISC-V only in case > the generic one discussed here: > > <https://gcc.gnu.org/pipermail/gcc-patches/2020-August/552327.html > > does not go through. While I won't be able to submit changes I will > continue watching the discussion and I will be able to commit either > change once there is the final outcome, just as anyone would. > > This change has passed full GCC regression testing with the > `riscv64-linux-gnu' target, RV64/lp64d and RV32/ilp32d multilibs, using > QEMU in the Linux user emulation mode. > > Maciej > --- > libgcc/config/riscv/t-elf | 2 ++ > 1 file changed, 2 insertions(+) > > gcc-riscv-libgcc-divmod-asynchronous-unwind-tables.diff > Index: gcc/libgcc/config/riscv/t-elf > =================================================================== > --- gcc.orig/libgcc/config/riscv/t-elf > +++ gcc/libgcc/config/riscv/t-elf > @@ -4,3 +4,5 @@ LIB2ADD += $(srcdir)/config/riscv/save-r > $(srcdir)/config/riscv/div.S \ > $(srcdir)/config/riscv/atomic.c \ > > +# Avoid the full unwinder being pulled along with the division libcalls. > +LIB2_DIVMOD_EXCEPTION_FLAGS := -fasynchronous-unwind-tables
On Sun, Aug 30, 2020 at 11:39 PM Kito Cheng <kito.cheng@gmail.com> wrote > Hi Maciej: > LGTM, thanks for your patch! I don't see this patch in the FSF GCC tree. Maciej are you going to commit it? Or do you want us to commit it for you? Jim
Hi Jim, > On Sun, Aug 30, 2020 at 11:39 PM Kito Cheng <kito.cheng@gmail.com> wrote > > Hi Maciej: > > LGTM, thanks for your patch! > > I don't see this patch in the FSF GCC tree. Maciej are you going to > commit it? Or do you want us to commit it for you? Since my departure from WDC I have been largely away, travelling and doing all kinds of personal stuff. I hoped someone would pick it up and make some progress with the generic change I proposed earlier: <https://gcc.gnu.org/pipermail/gcc-patches/2020-August/552327.html> which would make the RISC-V-specific hack redundant, but clearly no one could be bothered enough. I have pushed this change then so as not to hinder RISC-V support in GCC. Thanks, Kito, for your review! Maciej
Index: gcc/libgcc/config/riscv/t-elf =================================================================== --- gcc.orig/libgcc/config/riscv/t-elf +++ gcc/libgcc/config/riscv/t-elf @@ -4,3 +4,5 @@ LIB2ADD += $(srcdir)/config/riscv/save-r $(srcdir)/config/riscv/div.S \ $(srcdir)/config/riscv/atomic.c \ +# Avoid the full unwinder being pulled along with the division libcalls. +LIB2_DIVMOD_EXCEPTION_FLAGS := -fasynchronous-unwind-tables