Takashi Yoshii wrote:
> Hi,
> 
> For SH, init/fini function prologue is defined in libc/sysdeps/linux/sh/crti.S
> as follows.
> 
> | (frame entry)
> |#ifndef __HAVE_SHARED__
> | (GOT pointer initialization)
> |#endif
> 
> I think this should be "ifdef", but "ifndef".
> Or, are there any reason that GOT should be used (only)in NON-shared case ?
> 
Well, this change has been committed by lethal at
http://www.uclibc.org/cgi-bin/viewcvs.cgi/trunk/uClibc/libc/sysdeps/linux/sh/crti.S?rev=16426&view=diff&r1=16426&r2=16425&p1=trunk/uClibc/libc/sysdeps/linux/sh/crti.S&p2=/trunk/uClibc/libc/sysdeps/linux/sh/crti.S

so, unless there something I'm not understanding too, I suppose it was a 
typo by Paul (aka lethal).
Paul, my you give some lights on this change ?

I'm wondering anyway it the could be a testcase to show a potential 
problem (if this is wrong).

Carmelo
> I did some cleanups as well as invert that conditions.
> Actually, "push r12" is not needed in non-shared case. But, I've left it
>  untouched, because I don't want to modify the function epilogue(crtn.S).
> If fixed, we will have 4 bytes smaller code. Anyone want it ?
> 
> Regards,
> /yoshii
> ---
> libc/sysdeps/linux/sh/crti.S:
>   Fix(invert) __HAVE_SHARED__ condition.
>   Reorder/eliminate instructions.
> 
> Signed-off-by: Takashi YOSHII <[EMAIL PROTECTED]>
> ---
> diff --git a/libc/sysdeps/linux/sh/crti.S b/libc/sysdeps/linux/sh/crti.S
> index a74f96e..a092b78 100644
> --- a/libc/sysdeps/linux/sh/crti.S
> +++ b/libc/sysdeps/linux/sh/crti.S
> @@ -12,20 +12,17 @@ _init:
>       mov.l   r12,@-r15
>       mov.l   r14,@-r15
>       sts.l   pr,@-r15
> -#ifndef __HAVE_SHARED__
> +     mov     r15,r14
> +#ifdef __HAVE_SHARED__
>       mova    .L6,r0
>       mov.l   .L6,r12
> -     add     r0,r12
> -#endif       
> -     mov     r15,r14
>       bra     1f
> -     nop
> +     add     r0,r12
>       .align 2
> -#ifndef __HAVE_SHARED__
>  .L6:
>       .long   _GLOBAL_OFFSET_TABLE_
> -#endif
>  1:
> +#endif
>       
>       .section .fini
>       .hidden  _fini
> @@ -37,19 +34,15 @@ _fini:
>       mov.l   r14,@-r15
>       sts.l   pr,@-r15
>       mov     r15,r14
> -#ifndef __HAVE_SHARED__
> +#ifdef __HAVE_SHARED__
>       mov.l   .L11,r12
>       mova    .L11,r0
> -     add     r0,r12
> -#endif       
> -
>       bra     1f
> -     nop
> +     add     r0,r12
>       .align 2
> -#ifndef __HAVE_SHARED__
>  .L11:
>       .long   _GLOBAL_OFFSET_TABLE_
> -#endif
>  1:
> +#endif
>       
>       .ident  "GCC: (GNU) 3.3.2"
> 
> _______________________________________________
> uClibc mailing list
> uClibc@uclibc.org
> http://busybox.net/cgi-bin/mailman/listinfo/uclibc
> 

_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://busybox.net/cgi-bin/mailman/listinfo/uclibc

Reply via email to