[OE-core] [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config.
Lu, Lianhao
lianhao.lu at intel.com
Mon Aug 1 02:33:33 UTC 2011
Khem Raj wrote on 2011-07-31:
> On Friday, July 29, 2011 10:57:27 PM Lianhao Lu wrote:
>> Part fix of [BUGID #1236].
>>
>> 1. Collect all the values for RTLDLIST for the current multilib
>> configuration to modify the ldd scripts.
>>
>> 2. Collect all the values for KNOWN_INTERPRETER_NAMES for the
>> current multilib configuration.
>
> why is this needed ? eglibc build system has mechanism to emit
> correct ld.so names into RTLDLIST. If its missing something then it should be fixed in eglibc.
> This list will require to be maintained all the time weather you add a
> new architecture or ld.so is revved up
This is because we want the ldd/ldconfig in each eglibc can work on all the ABIs included in the current multilib configuration.
-Lianhao
>>
>> Signed-off-by: Lianhao Lu <lianhao.lu at intel.com>
>> ---
>> meta/recipes-core/eglibc/eglibc-ld.inc | 53
>> +++++++++++++++++++++++++++++++ meta/recipes-core/eglibc/eglibc.inc
> |
>> 1 +
>> meta/recipes-core/eglibc/eglibc_2.13.bb | 6 +++-
>> 3 files changed, 59 insertions(+), 1 deletions(-) create mode
>> 100644 meta/recipes-core/eglibc/eglibc-ld.inc
>>
>> diff --git a/meta/recipes-core/eglibc/eglibc-ld.inc
>> b/meta/recipes-core/eglibc/eglibc-ld.inc new file mode 100644 index
>> 0000000..ad60964 --- /dev/null +++
>> b/meta/recipes-core/eglibc/eglibc-ld.inc @@ -0,0 +1,53 @@ +def
>> ld_append_if_tune_exists(d, infos, dict): + tune =
>> d.getVar("DEFAULTTUNE", True) or "" + libdir = d.getVar("base_libdir",
>> True) or "" + if dict.has_key(tune): + infos['ldconfig'].add('{ "' +
>> libdir + '/' + dict[tune][0] + '",' ++ dict[tune][1] + ' }')
>> + infos['lddrewrite'].add(libdir+'/'+dict[tune] [0]) + +def
>> eglibc_dl_info(d): + ld_info_all = { + "mips": ["ld.so.1",
>> "FLAG_ELF_LIBC6"], + "mips64-n32": ["ld.so.1", "FLAG_ELF_LIBC6"],
>> + "mips64": ["ld.so.1", "FLAG_ELF_LIBC6"], + "mipsel": ["ld.so.1",
>> "FLAG_ELF_LIBC6"], + "mips64el-n32": ["ld.so.1", "FLAG_ELF_LIBC6"],
>> + "mips64el": ["ld.so.1", "FLAG_ELF_LIBC6"], + "mips-nf": ["ld.so.1",
>> "FLAG_ELF_LIBC6"], + "mips64-nf-n32": ["ld.so.1", "FLAG_ELF_LIBC6"],
>> + "mips64-nf": ["ld.so.1", "FLAG_ELF_LIBC6"], + "mips64el-nf-n32":
>> ["ld.so.1", "FLAG_ELF_LIBC6"], + "mips64el-nf": ["ld.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": ["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_LIBC5"], + "x86-64":
>> ["ld-linux-x86-64.so.2", "FLAG_ELF_LIBC6"], + "i586":
>> ["ld-linux.so.2", "FLAG_ELF_LIBC6"], + } + + infos = {'ldconfig':set(),
>> 'lddrewrite':set()} + ld_append_if_tune_exists(d, infos, ld_info_all)
>> + variants = d.getVar("MULTILIB_VARIANTS", True) or "" + for item in
>> variants.split(): + localdata = bb.data.createCopy(d) + #Fix ME.
>> OVERRIDES not work, we have to set DEFAULTTUNE to TUNENAME
>> + #overrides = localdata.getVar("OVERRIDES", False) +
>> ":virtclass-multilib-" + item + #localdata.setVar("OVERRIDES",
>> overrides) + if localdata.getVar("BBEXTENDVARIANT", True) == item:
>> + tunename=localdata.getVar("TUNENAME", False) or "" + else:
>> + tunename=localdata.getVar("TUNENAME_virtclass-multilib-" +
> item,
> False)
>> or "" + if tunename != "":
>> + localdata.setVar("DEFAULTTUNE", tunename)
>> + ld_append_if_tune_exists(localdata, infos, ld_info_all)
>> +
>> + infos['ldconfig'] = ' '.join(infos['ldconfig'])
>> + infos['lddrewrite'] = ' '.join(infos['lddrewrite'])
>> + return infos
>> +
>> +ALL_KNOWN_INTERPRETER_NAMES = "${@eglibc_dl_info(d)['ldconfig']}"
>> +RTLDLIST = "${@eglibc_dl_info(d)['lddrewrite']}"
>> diff --git a/meta/recipes-core/eglibc/eglibc.inc
>> b/meta/recipes-core/eglibc/eglibc.inc index 1b2e630..0ed4359 100644
>> --- a/meta/recipes-core/eglibc/eglibc.inc
>> +++ b/meta/recipes-core/eglibc/eglibc.inc
>> @@ -1,4 +1,5 @@
>> require eglibc-common.inc
>> +require eglibc-ld.inc
>>
>> STAGINGCC = "gcc-cross-intermediate"
>> STAGINGCC_virtclass-nativesdk = "gcc-crosssdk-intermediate"
>> diff --git a/meta/recipes-core/eglibc/eglibc_2.13.bb
>> b/meta/recipes-core/eglibc/eglibc_2.13.bb index 41fe7c7..b1bfbf1
>> 100644
>> --- a/meta/recipes-core/eglibc/eglibc_2.13.bb
>> +++ b/meta/recipes-core/eglibc/eglibc_2.13.bb
>> @@ -3,7 +3,7 @@ require eglibc.inc
>> SRCREV = "14157"
>>
>> DEPENDS += "gperf-native"
>> -PR = "r9"
>> +PR = "r10"
>> PR_append = "+svnr${SRCPV}"
>>
>> EGLIBC_BRANCH="eglibc-2_13" @@ -199,6 +199,10 @@ do_compile () {
>> rpcgen -h $r -o $h || oewarn "unable to generate header for $r"
>> done )
>> +
>> + echo "Adjust dynamic loader list to ${EGLIBC_DYNAMIC_LOADERS}"
>> + [ -z "${RTLDLIST}" ] && return
>> + sed -i ${B}/elf/ldd -e 's#^\(RTLDLIST=\).*$#\1"${RTLDLIST}"#'
>> }
>>
>> require eglibc-package.inc
Best Regards,
Lianhao
More information about the Openembedded-core
mailing list