| Summary: | When the baselib does not match the expected library path, prelinking is not done. | ||
|---|---|---|---|
| Product: | [Yocto Project Subprojects] Cross-prelink | Reporter: | Mark Hatle <mark.hatle> |
| Component: | poky integration | Assignee: | Mark Hatle <mark.hatle> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | enhancement | ||
| Priority: | Medium | CC: | jessica.zhang, richard.purdie, sgw, song.liu, yp.cp.watcher, yp.watcher |
| Version: | unspecified | ||
| Target Milestone: | Future | ||
| Hardware: | x86 | ||
| OS: | Multiple | ||
| Whiteboard: | |||
| OS type for building Yocto: | --- | Type of Regression: | --- |
| Verified: | Documentation change: | Yes (doc changes required) | |
|
Description
Mark Hatle
2012-05-22 15:36:09 UTC
Moving this to M3 as Mark does not have time for it now. Will take a look when we do M3 planning. *** Bug 5413 has been marked as a duplicate of this bug. *** Possible fix for the issue is to add an alternative set of base library paths within the prelinkers internal configuration (see ARM for an example). Another possible way is to pass into the prelinker the valid base library paths, but this interface would require a way of saying which ELF types use which linkers. That may prove to be more difficult for no reasonable benefit. If the cross-prelinker could be modified at compile time to match the distribution, that would work -- but in the past we'd avoided it due to re-use of the binary components. Lowering importance to enhancement. We've know about this for a while, but no real complaints. The prelinker has certain assumptions for the dynamic linker on the target. If the assumption is not met, it will skip prelinking for that target.
Enabling multilib configuration or at a minimum defining:
baselib = "${BASE_LIB_tune-${DEFAULTTUNE}}"
should resolve the issue, with the expectation that the library path will meet the LSB/FHS expectations:
ARM - lib
ARM (AARCH64) - lib64
IA32 (i*86) - lib
IA32 (x32) - libx32
IA32 (x86_64) - lib64
MIPS (o32) - lib
MIPS64 (n32) - lib32
MIPS64 (n64) - lib64
Power (32-bit) - lib
Power (64-bit) - lib64
The prelinker has the following expectations for the ld.so:
arch-alpha.c: .dynamic_linker = "/lib/ld-linux.so.2",
arch-arm.c: .dynamic_linker = "/lib/ld-linux.so.3",
arch-arm.c: .dynamic_linker_alt = "/lib/ld-linux-armhf.so.3",
arch-cris.c: .dynamic_linker = "/lib/ld.so.1",
arch-i386.c: .dynamic_linker = "/lib/ld-linux.so.2",
arch-ia64.c: .dynamic_linker = "/lib/ld-linux-ia64.so.2",
arch-mips.c: .dynamic_linker = "/lib/ld.so.1",
arch-mips.c: .dynamic_linker_alt = "/lib32/ld.so.1",
arch-mips.c: .dynamic_linker = "/lib/ld.so.1",
arch-mips.c: .dynamic_linker_alt = "/lib64/ld.so.1",
arch-ppc64.c: .dynamic_linker = "/lib64/ld64.so.1",
arch-ppc.c: .dynamic_linker = "/lib/ld.so.1",
arch-s390.c: .dynamic_linker = "/lib/ld.so.1",
arch-s390x.c: .dynamic_linker = "/lib/ld64.so.1",
arch-sh.c: .dynamic_linker = "/lib/ld-linux.so.2",
arch-sparc64.c: .dynamic_linker = "/lib64/ld-linux.so.2",
arch-sparc.c: .dynamic_linker = "/lib/ld-linux.so.2",
arch-x86_64.c: .dynamic_linker = "/libx32/ld-linux-x32.so.2",
arch-x86_64.c: .dynamic_linker = "/lib64/ld-linux-x86-64.so.2",
|