* [RFC BUG #1236 0/2] Modify ldd script for multilib.
@ 2011-07-29 14:57 Lianhao Lu
2011-07-29 14:57 ` [RFC BUG #1236 1/2] utils.bbclass/multilib.conf: Added misc supporting functions Lianhao Lu
2011-07-29 14:57 ` [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config Lianhao Lu
0 siblings, 2 replies; 8+ messages in thread
From: Lianhao Lu @ 2011-07-29 14:57 UTC (permalink / raw)
To: openembedded-core
This is part of the BUG #1236 fixing. Current there seems no way to get the
dynamic loader(ld.so) names for all the ABIs configured in the multilib
configuration during runtime. So we put the ld.so names in the dictionary
"ld_info_all" in the file eglibc-ld.inc. This dictionary is indexed by the
TUNENAME. To support a new ABI, new entry should be added into this dictionary
along with the new ABI's TUNENAME.
The information in ld_info_all can be used for both ldd script, and the
KNOWN_INTERPRETER_NAMES in the file ldconfig.h (which has not been done yet).
The following changes since commit f94b781695cd8fa387daff16ecbf3987a0883018:
Bruce Ashfield (1):
poky.conf: explicitly referenced preferred linux-yocto version
are available in the git repository at:
git://git.pokylinux.org/poky-contrib llub/bug1236
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=llu/1236
Lianhao Lu (2):
utils.bbclass/multilib.conf: Added misc supporting functions.
eglibc: Modify ldd script according to multilib config.
meta/classes/utils.bbclass | 35 ++++++++++++++++++++
meta/conf/bitbake.conf | 1 +
meta/conf/multilib.conf | 6 +++-
meta/recipes-core/eglibc/eglibc-ld.inc | 53 +++++++++++++++++++++++++++++++
meta/recipes-core/eglibc/eglibc.inc | 1 +
meta/recipes-core/eglibc/eglibc_2.13.bb | 6 +++-
6 files changed, 100 insertions(+), 2 deletions(-)
create mode 100644 meta/recipes-core/eglibc/eglibc-ld.inc
^ permalink raw reply [flat|nested] 8+ messages in thread
* [RFC BUG #1236 1/2] utils.bbclass/multilib.conf: Added misc supporting functions.
2011-07-29 14:57 [RFC BUG #1236 0/2] Modify ldd script for multilib Lianhao Lu
@ 2011-07-29 14:57 ` Lianhao Lu
2011-07-29 14:57 ` [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config Lianhao Lu
1 sibling, 0 replies; 8+ messages in thread
From: Lianhao Lu @ 2011-07-29 14:57 UTC (permalink / raw)
To: openembedded-core
1. Added variable MULTILIB_VARIANTS to store all the instance variants
for multilib extend.
2. Added function all_multilib_tune_values to collect the variable
values for all multilib instance.
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
---
meta/classes/utils.bbclass | 35 +++++++++++++++++++++++++++++++++++
meta/conf/bitbake.conf | 1 +
meta/conf/multilib.conf | 6 +++++-
3 files changed, 41 insertions(+), 1 deletions(-)
diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
index 8c3a9b8..f8adaea 100644
--- a/meta/classes/utils.bbclass
+++ b/meta/classes/utils.bbclass
@@ -341,3 +341,38 @@ def base_set_filespath(path, d):
for o in overrides.split(":"):
filespath.append(os.path.join(p, o))
return ":".join(filespath)
+
+def extend_variants(d, var, extend, delim=':'):
+ """Return a string of all bb class extend variants for the given extend"""
+ variants = []
+ whole = d.getVar(var, True) or ""
+ for ext in whole.split():
+ eext = ext.split(delim)
+ if len(eext) > 1 and eext[0] == extend:
+ variants.append(eext[1])
+ return " ".join(variants)
+
+def all_multilib_tune_values(d, var, unique=True):
+ """Return a string of all ${var} in all multilib tune configuration"""
+ values = []
+ value = d.getVar(var, True) or ""
+ if value != "":
+ values.append(value)
+ 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)
+ value = localdata.getVar(var, True) or ""
+ if value != "":
+ values.append(value)
+ if unique:
+ values = set(values)
+ return " ".join(values)
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 6e109ec..bcff50e 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -736,3 +736,4 @@ BB_HASHTASK_WHITELIST ?= "(.*-cross$|.*-native$|.*-cross-initial$|.*-cross-inter
BB_HASHBASE_WHITELIST ?= "TMPDIR FILE PATH PWD BB_TASKHASH BBPATH DL_DIR SSTATE_DIR THISDIR FILESEXTRAPATHS FILE_DIRNAME HOME LOGNAME SHELL TERM USER FILESPATH USERNAME STAGING_DIR_HOST STAGING_DIR_TARGET COREBASE"
MLPREFIX ??= ""
+MULTILIB_VARIANTS ??= ""
diff --git a/meta/conf/multilib.conf b/meta/conf/multilib.conf
index 894b7a5..60760df 100644
--- a/meta/conf/multilib.conf
+++ b/meta/conf/multilib.conf
@@ -1,6 +1,11 @@
baselib = "${@d.getVar('BASE_LIB_tune-' + (d.getVar('DEFAULTTUNE', True) or 'INVALID'), True) or 'lib'}"
+MULTILIB_VARIANTS = "${@extend_variants(d,'MULTILIBS','multilib')}"
+
+TUNENAME_virtclass-multilib-lib64 ?= "x86-64"
+TUNENAME_virtclass-multilib-lib32 ?= "x86"
+
MULTILIBS ??= "multilib:lib32"
BBCLASSEXTEND_append_pn-linux-libc-headers = " ${MULTILIBS}"
BBCLASSEXTEND_append_pn-eglibc-initial = " ${MULTILIBS}"
@@ -21,4 +26,3 @@ BBCLASSEXTEND_append_pn-bash = " ${MULTILIBS}"
BBCLASSEXTEND_append_pn-ncurses = " ${MULTILIBS}"
BBCLASSEXTEND_append_pn-expat = " ${MULTILIBS}"
BBCLASSEXTEND_append_pn-eglibc-locale = " ${MULTILIBS}"
-
--
1.7.0.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config.
2011-07-29 14:57 [RFC BUG #1236 0/2] Modify ldd script for multilib Lianhao Lu
2011-07-29 14:57 ` [RFC BUG #1236 1/2] utils.bbclass/multilib.conf: Added misc supporting functions Lianhao Lu
@ 2011-07-29 14:57 ` Lianhao Lu
2011-07-29 15:38 ` Phil Blundell
2011-07-30 20:04 ` Khem Raj
1 sibling, 2 replies; 8+ messages in thread
From: Lianhao Lu @ 2011-07-29 14:57 UTC (permalink / raw)
To: openembedded-core
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.
Signed-off-by: Lianhao Lu <lianhao.lu@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
--
1.7.0.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config.
2011-07-29 14:57 ` [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config Lianhao Lu
@ 2011-07-29 15:38 ` Phil Blundell
2011-07-30 1:00 ` Lu, Lianhao
2011-07-30 20:04 ` Khem Raj
1 sibling, 1 reply; 8+ messages in thread
From: Phil Blundell @ 2011-07-29 15:38 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On Fri, 2011-07-29 at 22:57 +0800, Lianhao Lu wrote:
> + "x86": ["ld-linux.so.2", "FLAG_ELF_LIBC5"],
That looks a bit weird to me. Are you sure that's right?
p.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config.
2011-07-29 15:38 ` Phil Blundell
@ 2011-07-30 1:00 ` Lu, Lianhao
0 siblings, 0 replies; 8+ messages in thread
From: Lu, Lianhao @ 2011-07-30 1:00 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
> -----Original Message-----
> From: openembedded-core-bounces@lists.openembedded.org
> [mailto:openembedded-core-bounces@lists.openembedded.org] On Behalf Of
> Phil Blundell
> Sent: Friday, July 29, 2011 11:38 PM
> To: Patches and discussions about the oe-core layer
> Subject: Re: [OE-core] [RFC BUG #1236 2/2] eglibc: Modify ldd script according
> to multilib config.
>
> On Fri, 2011-07-29 at 22:57 +0800, Lianhao Lu wrote:
> > + "x86": ["ld-linux.so.2", "FLAG_ELF_LIBC5"],
>
> That looks a bit weird to me. Are you sure that's right?
>
Oops, it should be FLAG_ELF_LIBC6.
-Lianhao
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config.
2011-07-29 14:57 ` [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config Lianhao Lu
2011-07-29 15:38 ` Phil Blundell
@ 2011-07-30 20:04 ` Khem Raj
2011-08-01 2:33 ` Lu, Lianhao
1 sibling, 1 reply; 8+ messages in thread
From: Khem Raj @ 2011-07-30 20:04 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
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
>
> Signed-off-by: Lianhao Lu <lianhao.lu@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
--
Khem Raj
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config.
2011-07-30 20:04 ` Khem Raj
@ 2011-08-01 2:33 ` Lu, Lianhao
2011-08-01 6:11 ` Khem Raj
0 siblings, 1 reply; 8+ messages in thread
From: Lu, Lianhao @ 2011-08-01 2:33 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
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@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
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config.
2011-08-01 2:33 ` Lu, Lianhao
@ 2011-08-01 6:11 ` Khem Raj
0 siblings, 0 replies; 8+ messages in thread
From: Khem Raj @ 2011-08-01 6:11 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
Cc: Patches and discussions about the oe-core layer
On Jul 31, 2011, at 7:33 PM, "Lu, Lianhao" <lianhao.lu@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.lu@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
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-08-01 6:14 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-29 14:57 [RFC BUG #1236 0/2] Modify ldd script for multilib Lianhao Lu
2011-07-29 14:57 ` [RFC BUG #1236 1/2] utils.bbclass/multilib.conf: Added misc supporting functions Lianhao Lu
2011-07-29 14:57 ` [RFC BUG #1236 2/2] eglibc: Modify ldd script according to multilib config Lianhao Lu
2011-07-29 15:38 ` Phil Blundell
2011-07-30 1:00 ` Lu, Lianhao
2011-07-30 20:04 ` Khem Raj
2011-08-01 2:33 ` Lu, Lianhao
2011-08-01 6:11 ` Khem Raj
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox