lkml.org 
[lkml]   [2015]   [Sep]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRE: [PATCH 1/3] MIPS: Initial implementation of a VDSO
Date
Alex Smith <alex@alex-smith.me.uk> writes:
> > +
> > + /* lapc <symbol> is an alias to addiupc reg, <symbol> - .
> > + *
> > + * We can't use addiupc because there is no label-label
> > + * support for the addiupc reloc
> > + */
> > + __asm__("lapc %0, _start \n"
> > + : "=r" (addr) : :);
>
> Just curious - if lapc is just an alias to addiupc, why does that work
> but not addiupc? IIRC I did try addiupc previously but removed it
> because it wasn't working, didn't know about lapc!

This is just an unfortunate quirk of how the implementation is done in
binutils. We don't recognise the special case that:

addiupc <reg>, <sym> - .

is the same as

lapc <reg>, <sym>

And therefore don't know that we can just use the MIPS_PC19_S2 reloc
(name of that reloc may not be perfectly correct). It is a special
case as the RHS of the expression in ADDIUPC above can be theoretically
anything so we only support assembly time constants with addiupc.

Apart from the need to document the LAPC alias somewhere I'm not sure
we need do anything to improve addiupc itself particularly.

Thanks,
Matthew
\
 
 \ /
  Last update: 2015-09-28 15:21    [W:0.235 / U:0.800 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site