https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85492
--- Comment #7 from Aurelien Jarno <aurelien at aurel32 dot net> ---
(In reply to Jim Wilson from comment #3)
Thanks a lot Jim for finding out the issue without using gdb, that was quite a
challenge.
(In reply to Jim Wilson from comment #6)
> I suggest you handle the glibc patch.
Should I just close this bug and open a new one on the glibc side?
> Note that you can probably also fix this by adding unwind direcives to
> _start to say that the return address is in x0. This would avoid the minor
> code size increase, but takes a little more effort to figure out how to add
> the right unwind directives to assembly code to make this work. I haven't
> tried that.
I think this should be done with the cfi_undefined directive, like in the patch
below:
--- a/sysdeps/riscv/start.S
+++ b/sysdeps/riscv/start.S
@@ -43,6 +43,8 @@
__libc_start_main wants this in a5. */
ENTRY (ENTRY_POINT)
+ /* Mark ra as undefined in order to stop unwinding here! */
+ cfi_undefined (ra)
call .Lload_gp
mv a5, a0 /* rtld_fini. */
/* main may be in a shared library. */