[PATCH V2] ldso: fix fdpic support broken from prelink patch

Filippo ARCIDIACONO filippo.arcidiacono at st.com
Mon Mar 26 14:36:54 UTC 2012



> -----Original Message-----
> From: Mike Frysinger [mailto:vapier at gentoo.org]
> Sent: Sunday, March 25, 2012 8:15 AM
> To: uclibc at uclibc.org
> Cc: Filippo ARCIDIACONO
> Subject: Re: [PATCH V2] ldso: fix fdpic support broken from prelink
> patch
> 
> On Wednesday 07 March 2012 04:07:01 Filippo ARCIDIACONO wrote:
> > The fdpic support has been broken since the prelink support was
> added,
> > because it didn't take into account DL_LOADADDR_TYPE could be a
> > different type of ElfW(Addr).
> 
> it compiles now, so that's an improvement :).  i don't have hardware
> setup atm to test the runtime, but i wouldn't be surprised if there
> were other issues unrelated that'd break things.
> 
> > --- a/ldso/ldso/c6x/dl-sysdep.h
> > +++ b/ldso/ldso/c6x/dl-sysdep.h
> >
> > +/* Define this to set the library offset. */ #ifndef
> > +DL_SET_LIB_OFFSET # define DL_SET_LIB_OFFSET(offset)
> > +(_dl_library_offset = 0) #endif
> > +
> > +/* Define this to get the real object's load address. */ #ifndef
> > +DL_GET_LOADADDR_MAPADDR # define DL_GET_LOADADDR_MAPADDR(loadaddr,
> > +mapaddr) (loadaddr) #endif
> 
> using ifndef in these arch files doesn't make much sense.  just drop
> those checks.

You are right. I missed.

> 
> also, seems like _dl_library_offset is always set to 0. 

_dl_library_offset is 0 for fdpic and c6x archs only.

> would make more sense i think to have the macro read:
> #define DL_SET_LIB_OFFSET(offset)
> 
> and then add a new macro for declaring the _dl_library_offset variable
> which the common code would use to setup a static, and these arches
> would define to 0

IIUC, I should add something like:

#define DEF_LIBRARY_OFFSET() static unsigned long _dl_library_offset

For common code, while for c6x and fdpic:

#define DEF_LIBRARY_OFFSET() unsigned long _dl_library_offset = 0

Is this what you mean?

Thanks for review,
Filippo



More information about the uClibc mailing list