Port-vax archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [PATCH] VAX libstdc++ common runtime - register used but not saved



Committed:

https://mail-index.netbsd.org/source-changes/2023/07/28/msg146283.html
https://mail-index.netbsd.org/source-changes/2023/07/28/msg146284.html

Kalvis, thanks for your report!

BTW, I think entry mask for __start() is also wrong:

https://nxr.netbsd.org/xref/src/lib/csu/arch/vax/crt0.S#38
> 38 _ENTRY(__start, 0x0101)

This 0x0101 seems like two NOPs copy-paste from pre-ELF code:

http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/csu/vax/Attic/crt0.c.diff?r1=1.8&r2=1.9&hideattic=0&only_with_tag=MAIN&f=h

Can we replace 0x0101 to 0x0000 here?

Thanks,
rin

On Fri, Jul 28, 2023 at 3:23 PM Kalvis Duckmanton <kalvisd%gmail.com@localhost> wrote:
>
> Hello all,
>
> I believe that I've found a problem in libstdc++ for VAX where, in the
> __do_global_ctors_aux function, %r8 is used but not saved.  %r11, which
> is saved, is not used.
>
> I'd like to propose the following change against NetBSD 10.99.6 to
> correct it.
>
> Many thanks
> kalvis
>
>
> ---
>   lib/csu/arch/vax/crtbegin.S | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/csu/arch/vax/crtbegin.S b/lib/csu/arch/vax/crtbegin.S
> index 208c4658a973..207a9d03ec44 100644
> --- a/lib/csu/arch/vax/crtbegin.S
> +++ b/lib/csu/arch/vax/crtbegin.S
> @@ -132,7 +132,7 @@ END(__do_global_dtors_aux)
>
>         .hidden __do_global_ctors_aux
>
> -_ENTRY(__do_global_ctors_aux, 0x0800)
> +_ENTRY(__do_global_ctors_aux, 0x0100)   /* save r8 */
>         tstb    __initialized
>         bneq    4f
>         movb    $1, __initialized
> --
> 2.20.1
>


Home | Main Index | Thread Index | Old Index