diff mbox series

RISC-V/libgcc: Use `-fasynchronous-unwind-tables' for LIB2_DIVMOD_FUNCS

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

Commit Message

Maciej W. Rozycki Aug. 29, 2020, 1:18 p.m. UTC
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

Comments

Kito Cheng Aug. 31, 2020, 6:38 a.m. UTC | #1
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
Jim Wilson Sept. 28, 2020, 7:38 p.m. UTC | #2
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
Maciej W. Rozycki Sept. 29, 2020, 12:26 a.m. UTC | #3
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
diff mbox series

Patch

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