Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
elf: skip old version symbols during lookup
This patch modifies dynamic loader lookup logic to make it skip old symbols which are marked as such per version symbols table. This gap in symbols lookup logic would affect some executables that depend on libraries that happen to have multiple symbol implementation versions. The good example is numactl that depends on libnuma.so. One can test this patch by trying to run numactl before and after: ``` ./scripts/manifest_from_host.sh -w numactl && ./scripts/build fs=rofs -j4 --append-manifest ./scripts/run.py -e '/numactl --show' ``` For details of ELF symbol versioning, please read https://www.akkadia.org/drepper/symbol-versioning. This paragraph is most applicable to what this patch addresses: "If the highest bit (no. 15) of the version symbol value is set, the object is hidden and must not be used. In this case the linker must treat the symbol as not present in the object." Please note this patch does NOT make OSv dynamic linker fully implement symbols versioning logic. Signed-off-by: Waldemar Kozaczuk <[email protected]> Message-Id: <[email protected]>
- Loading branch information