1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 17:19:20 +00:00

glibc: Improve ldd loader specification

Currently if a tune isn't specified in the table, the loader defaults for the
architecture are used which may or may not match our path specification. This
leads to general confusion.

Change the code to use the linuxloader class which works of architecture, not
tune.

This still isn't perfect as n32/x32 aren't covered but its an improvement
to listing all tunes here.

(From OE-Core rev: 46a6da24b51426bedd9af8a2d63b2992b9d3fa5a)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2018-08-22 14:51:17 +00:00
parent 516697bed6
commit 14dfb7ea59
+10 -25
View File
@@ -1,43 +1,28 @@
def ld_append_if_tune_exists(d, infos, dict):
tune = d.getVar("DEFAULTTUNE") or ""
libdir = d.getVar("base_libdir") or ""
if tune in dict:
infos['ldconfig'].add('{"' + libdir + '/' + dict[tune][0] + '",' + dict[tune][1] + ' }')
infos['lddrewrite'].add(libdir+'/'+dict[tune][0])
inherit linuxloader
def ld_append_if_tune_exists(d, infos):
loader = get_linuxloader(d)
if loader:
infos['ldconfig'].add('{"' + loader + '",' + "FLAG_ELF_LIBC6" + ' }')
infos['lddrewrite'].add(loader)
def glibc_dl_info(d):
ld_info_all = {
"mipsarch": ["ld.so.1", "FLAG_ELF_LIBC6"],
"mipsarchr6": ["ld-linux-mipsn8.so.1", "FLAG_ELF_LIBC6"],
"powerpc": ["ld.so.1", "FLAG_ELF_LIBC6"],
"powerpc-nf": ["ld.so.1", "FLAG_ELF_LIBC6"],
"powerpc64": ["ld64.so.1", "FLAG_ELF_LIBC6"],
"powerpc64-nf": ["ld64.so.1", "FLAG_ELF_LIBC6"],
"core2-32": ["ld-linux.so.2", "FLAG_ELF_LIBC6"],
"core2-64": ["ld-linux-x86-64.so.2", "FLAG_ELF_LIBC6"],
"x86": ["ld-linux.so.2", "FLAG_ELF_LIBC6"],
"x86-64": ["ld-linux-x86-64.so.2", "FLAG_ELF_LIBC6"],
"i586": ["ld-linux.so.2", "FLAG_ELF_LIBC6"],
"corei7-32": ["ld-linux.so.2", "FLAG_ELF_LIBC6"],
"corei7-64": ["ld-linux-x86-64.so.2", "FLAG_ELF_LIBC6"],
}
infos = {'ldconfig':set(), 'lddrewrite':set()}
ld_append_if_tune_exists(d, infos, ld_info_all)
ld_append_if_tune_exists(d, infos)
#DEFAULTTUNE_MULTILIB_ORIGINAL
original_tune=d.getVar("DEFAULTTUNE_MULTILIB_ORIGINAL")
if original_tune:
localdata = bb.data.createCopy(d)
localdata.setVar("DEFAULTTUNE", original_tune)
ld_append_if_tune_exists(localdata, infos, ld_info_all)
ld_append_if_tune_exists(localdata, infos)
variants = d.getVar("MULTILIB_VARIANTS") or ""
for item in variants.split():
localdata = bb.data.createCopy(d)
overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
localdata.setVar("OVERRIDES", overrides)
ld_append_if_tune_exists(localdata, infos, ld_info_all)
ld_append_if_tune_exists(localdata, infos)
infos['ldconfig'] = ','.join(infos['ldconfig'])
infos['lddrewrite'] = ' '.join(infos['lddrewrite'])
return infos