[yocto] Prelink status

Mark Hatle mark.hatle at windriver.com
Thu Oct 29 20:50:57 PDT 2015


I just wanted to update everyone on where we are at.  (I won't bore anyone with
any followups past this.)

IA32 (32-bit and 64-bit):

We believe the problems are resolved.  The error was a combination of prior
patch merge issues and a bug in glibc 2.22.  A patch for the glibc 2.22 has
already been sent to the GLIBC community and I have a change ready for OE.


ARM:

The same glibc 2.22 bug affected ARM as well as IA32.

Also it appears that a patch that went in last fall to enable IFUNC on arm
somehow had a hunk dropped from it.  Now that we've identified and restored this
hunk, it appears to be working again.


MIPS32/MIPS64 (o32, n32, n64):

A new section was added, SHT_MIPS_ABIFLAGS, this was confusing the prelinker
causing it to refused to continue.  A patch has gone in to instruct the
prelinker how to handle this new section (ignore it).


Power (32-bit):

We are still investigating changes that have happened in the past year+ to
binutils and glibc for Power systems.

Power (64-bit):

It is likely this will not work anytime soon.  The ABI has changed and is no
longer compatible with the previous methods of prelinking.  This is fairly low
priority to be fixed, as it's been broken for a while now.


If anyone has any expertise on Power 32-bit or 64-bit ELF, I'm still looking for
help there to get these issues resolved.

--Mark

On 10/26/15 9:28 AM, Mark Hatle wrote:
> I'm cross posting this in an effort to ask for help for the cross-prelink
> project.  (If you are unaware of what the prelinker does, it goes through and
> adjusts the relocation addresses to predefined values in an attempt to speed up
> executable load times.  For embedded systems, this can be fairly critical in
> meeting boot and runtime load performance targets.)
> 
> As some people might be aware, the upstream 'prelink' project that was
> maintained by Jakub Jelinek at Red Hat appears to have been abandoned.
> 
> I've been the maintainer for the Yocto Project's 'prelink-cross' project for a
> few years, but my work has been dealing with compilation issues and other things
> that have to do with using the prelinker in a cross compilation environment.
> 
> This means that unfortunately I'm in a situation where I am having problems
> trying to fix the problems in the prelinker itself, but I am not an ELF expert.
>  Currently the cross prelinker appears to be broken for pretty much every
> architecture and I need help trying to resolve these problems.
> 
> Issues I know of right now:
> 
> Introduction of RTYPE_CLASS_EXTERN_PROTECTED_DATA appears to be causing failures
> on ARM32, x86 and x86_64.
> 
> Some possibly unrelated issue is causing various items to relocate incorrectly
> (IFUNCs perhaps) on ARMv7 builds.
> 
> Power is no longer working properly, most likely due to an optimization in the
> way the PPC GOT table(s) are setup.
> 
> Power64 hasn't been working properly for a while, possibly due to the switch to
> ELFv2.
> 
> MIPS and MIPS64 also do not appear to be working, and I've not found a possible
> cause.
> 
> As you can see, pretty much everything is currently broken and I'm struggling to
> find community people with the right skill sets to help me resolve the issues.
> 
> The current state of my work in progress is available at:
> 
> git://git.yoctoproject.org/prelink-cross
> 
> branch cross_prelink_staging
> 
> If you think you can help, please let me know.
> --Mark
> 




More information about the yocto mailing list