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...@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 _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core