On Thu, Jun 16, 2016 at 09:49:10PM +0200, Waldemar Brodkorb wrote:
> Hi Vineet,
> Vineet Gupta wrote,
> 
> > On Wednesday 15 June 2016 08:34 PM, Waldemar Brodkorb wrote:
> > > Hi Vineet,
> > > Vineet Gupta wrote,
> > >
> > >> Signed-off-by: Vineet Gupta <vgu...@synopsys.com>
> > >> ---
> > >>  libc/sysdeps/linux/arc/crt1.S | 8 ++++++--
> > >>  1 file changed, 6 insertions(+), 2 deletions(-)
> > >>
> > >> diff --git a/libc/sysdeps/linux/arc/crt1.S 
> > >> b/libc/sysdeps/linux/arc/crt1.S
> > >> index 95c41f888850..e38c8e81b2c0 100644
> > >> --- a/libc/sysdeps/linux/arc/crt1.S
> > >> +++ b/libc/sysdeps/linux/arc/crt1.S
> > >> @@ -41,11 +41,15 @@ __start:
> > >>  
> > >>          mov_s   r5, r0          ; rltd_fini
> > >>          add_s   r2, sp, 4       ; argv
> > >> -
> > >> +#ifdef L_Scrt1
> > >> +        add     r0, pcl, @main@pcl
> > >> +        add     r3, pcl, @_init@pcl
> > >> +        add     r4, pcl, @_fini@pcl
> > >> +#else
> > >>          mov_s   r0, main
> > >>          mov_s   r3, _init
> > >>          mov     r4, _fini
> > >> -
> > >> +#endif
> > >>          and     sp, sp, -8
> > >>          mov     r6, sp
> > > Can you please be a little more descriptive why this patch is
> > > useful? Will ARC support static PIE or is Scrt1.o used in other
> > > code?
> > 
> > This is for a dynamically linked PIE - can we have static linked PIE ? 
> > Current
> > approach of taking addresses of functions, in not position independent but 
> > still
> > works for the normal dynamically linked executables (non PIE) since the 
> > zero based
> > addresses are rightly resolved in final link. This is not true for PIE 
> > hence we
> > need a really position independent way (PC relative addr) to pass those 
> > function
> > addresses.
> 
> You can try static PIE with binutils 2.26 and up with
> -Wl,--no-dynamic-linker, but my tests with ARM/MIPS failed.
> So I am not sure if crt1.S is the problem or something else.

Static PIE requires an rcrt1.o that's responsible for performing
self-relocation equivalent to what the dynamic linker does to itself.
Scrt1.o is for dynamic-linker PIE (and it's compatible with linking in
non-PIE code whether it's static or dynamic linked, but not necessary
in those cases).

Rich
_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to