On Jul 31, 2011, at 7:33 PM, "Lu, Lianhao" <lianhao...@intel.com> wrote:
> 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. Why not have the default multi lib only provide ldd ? Optional multilibs may not provide ldd Is there something that needs ldd/ldconfig to be present in each. Multilibs > > -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 _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core