* [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs
@ 2011-08-01 11:01 Lianhao Lu
2011-08-01 11:02 ` [PATCH BUG #1236 1/3] utils.bbclass/multilib.conf: Added misc supporting functions Lianhao Lu
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Lianhao Lu @ 2011-08-01 11:01 UTC (permalink / raw)
To: openembedded-core
This series of patch allow all the eglibc(s) in the current multilib
configuration have the same ldd/ldconfig settings.
We put the dynamic loaders'(ld.so) names in the dictionary of "ld_info_all"
defined 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 ldconfig
binary.
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 llu/bug1236
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=llu/bug1236
Lianhao Lu (3):
utils.bbclass/multilib.conf: Added misc supporting functions.
eglibc: Modify ldd script according to multilib config.
eglibc: Setting KNOWN_INTERPRETER_NAMES for ldconfig.
meta/classes/utils.bbclass | 31 ++++++++++++
meta/conf/bitbake.conf | 1 +
meta/conf/multilib.conf | 6 ++-
.../eglibc/eglibc-2.13/multilib_readlib.patch | 20 ++++++++
meta/recipes-core/eglibc/eglibc-ld.inc | 49 ++++++++++++++++++++
meta/recipes-core/eglibc/eglibc.inc | 1 +
meta/recipes-core/eglibc/eglibc_2.13.bb | 12 ++++-
7 files changed, 118 insertions(+), 2 deletions(-)
create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/multilib_readlib.patch
create mode 100644 meta/recipes-core/eglibc/eglibc-ld.inc
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH BUG #1236 1/3] utils.bbclass/multilib.conf: Added misc supporting functions.
2011-08-01 11:01 [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs Lianhao Lu
@ 2011-08-01 11:02 ` Lianhao Lu
2011-08-01 11:02 ` [PATCH BUG #1236 2/3] eglibc: Modify ldd script according to multilib config Lianhao Lu
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Lianhao Lu @ 2011-08-01 11:02 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] 7+ messages in thread
* [PATCH BUG #1236 2/3] eglibc: Modify ldd script according to multilib config.
2011-08-01 11:01 [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs Lianhao Lu
2011-08-01 11:02 ` [PATCH BUG #1236 1/3] utils.bbclass/multilib.conf: Added misc supporting functions Lianhao Lu
@ 2011-08-01 11:02 ` Lianhao Lu
2011-08-01 17:52 ` Saul Wold
2011-08-01 11:02 ` [PATCH BUG #1236 3/3] eglibc: Setting KNOWN_INTERPRETER_NAMES for ldconfig Lianhao Lu
` (2 subsequent siblings)
4 siblings, 1 reply; 7+ messages in thread
From: Lianhao Lu @ 2011-08-01 11:02 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/classes/utils.bbclass | 10 ++----
meta/recipes-core/eglibc/eglibc-ld.inc | 49 +++++++++++++++++++++++++++++++
meta/recipes-core/eglibc/eglibc.inc | 1 +
meta/recipes-core/eglibc/eglibc_2.13.bb | 6 +++-
4 files changed, 58 insertions(+), 8 deletions(-)
create mode 100644 meta/recipes-core/eglibc/eglibc-ld.inc
diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
index f8adaea..ef4d8fb 100644
--- a/meta/classes/utils.bbclass
+++ b/meta/classes/utils.bbclass
@@ -361,13 +361,9 @@ def all_multilib_tune_values(d, var, unique=True):
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 ""
+ overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
+ localdata.setVar("OVERRIDES", overrides)
+ tunename=localdata.getVar("TUNENAME_virtclass-multilib-" + item, False) or localdata.getVar("TUNENAME", False) or ""
if tunename != "":
localdata.setVar("DEFAULTTUNE", tunename)
value = localdata.getVar(var, True) or ""
diff --git a/meta/recipes-core/eglibc/eglibc-ld.inc b/meta/recipes-core/eglibc/eglibc-ld.inc
new file mode 100644
index 0000000..235ba6c
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-ld.inc
@@ -0,0 +1,49 @@
+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_LIBC6"],
+ "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)
+ overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
+ localdata.setVar("OVERRIDES", overrides)
+ tunename=localdata.getVar("TUNENAME_virtclass-multilib-" + item, False) or localdata.getVar("TUNENAME", 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
+
+EGLIBC_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] 7+ messages in thread
* [PATCH BUG #1236 3/3] eglibc: Setting KNOWN_INTERPRETER_NAMES for ldconfig.
2011-08-01 11:01 [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs Lianhao Lu
2011-08-01 11:02 ` [PATCH BUG #1236 1/3] utils.bbclass/multilib.conf: Added misc supporting functions Lianhao Lu
2011-08-01 11:02 ` [PATCH BUG #1236 2/3] eglibc: Modify ldd script according to multilib config Lianhao Lu
@ 2011-08-01 11:02 ` Lianhao Lu
2011-08-01 11:09 ` [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs Koen Kooi
2011-08-11 22:38 ` Saul Wold
4 siblings, 0 replies; 7+ messages in thread
From: Lianhao Lu @ 2011-08-01 11:02 UTC (permalink / raw)
To: openembedded-core
[BUGID #1236] Part of the bug fixing. Set the correct ld.so names for
ldconfig to deal with the multilib configuration.
Signed-off-by: Lianhao Lu <lianhao.lu@intel.com>
---
.../eglibc/eglibc-2.13/multilib_readlib.patch | 20 ++++++++++++++++++++
meta/recipes-core/eglibc/eglibc_2.13.bb | 8 +++++++-
2 files changed, 27 insertions(+), 1 deletions(-)
create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/multilib_readlib.patch
diff --git a/meta/recipes-core/eglibc/eglibc-2.13/multilib_readlib.patch b/meta/recipes-core/eglibc/eglibc-2.13/multilib_readlib.patch
new file mode 100644
index 0000000..3ebcc6b
--- /dev/null
+++ b/meta/recipes-core/eglibc/eglibc-2.13/multilib_readlib.patch
@@ -0,0 +1,20 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+Replace the OECORE_KNOWN_INTERPRETER_NAMES with the value of
+variable EGLIBC_KNOWN_INTERPRETER_NAMES.
+
+Lianhao Lu, 08/01/2011
+
+--- libc/elf/readlib.c.orgin 2011-08-01 15:24:59.054350012 +0800
++++ libc/elf/readlib.c 2011-08-01 18:10:59.777675546 +0800
+@@ -49,9 +49,7 @@
+ static struct known_names interpreters[] =
+ {
+ { "/lib/" LD_SO, FLAG_ELF_LIBC6 },
+-#ifdef SYSDEP_KNOWN_INTERPRETER_NAMES
+- SYSDEP_KNOWN_INTERPRETER_NAMES
+-#endif
++ OECORE_KNOWN_INTERPRETER_NAMES
+ };
+
+ static struct known_names known_libs[] =
diff --git a/meta/recipes-core/eglibc/eglibc_2.13.bb b/meta/recipes-core/eglibc/eglibc_2.13.bb
index b1bfbf1..60f6a74 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 = "r10"
+PR = "r11"
PR_append = "+svnr${SRCPV}"
EGLIBC_BRANCH="eglibc-2_13"
@@ -16,6 +16,7 @@ SRC_URI = "svn://www.eglibc.org/svn/branches/;module=${EGLIBC_BRANCH};proto=http
file://etc/ld.so.conf \
file://generate-supported.mk \
file://glibc_bug_fix_12454.patch \
+ file://multilib_readlib.patch \
"
LIC_FILES_CHKSUM = "file://LICENSES;md5=98a1128c4b58120182cbea3b1752d8b9 \
file://COPYING;md5=393a5ca445f6965873eca0259a17f833 \
@@ -81,6 +82,7 @@ do_move_ports() {
do_patch_append() {
bb.build.exec_func('do_fix_ia_headers', d)
+ bb.build.exec_func('do_fix_readlib_c', d)
}
# We need to ensure that all of the i386 and x86_64 headers are identical
@@ -170,6 +172,10 @@ do_fix_ia_headers() {
cp ${S}/sysdeps/unix/sysv/linux/x86_64/sys/user.h ${S}/sysdeps/unix/sysv/linux/i386/sys/user.h
}
+do_fix_readlib_c () {
+ sed -i -e 's#OECORE_KNOWN_INTERPRETER_NAMES#${EGLIBC_KNOWN_INTERPRETER_NAMES}#' ${S}/elf/readlib.c
+}
+
do_configure () {
# override this function to avoid the autoconf/automake/aclocal/autoheader
# calls for now
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs
2011-08-01 11:01 [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs Lianhao Lu
` (2 preceding siblings ...)
2011-08-01 11:02 ` [PATCH BUG #1236 3/3] eglibc: Setting KNOWN_INTERPRETER_NAMES for ldconfig Lianhao Lu
@ 2011-08-01 11:09 ` Koen Kooi
2011-08-11 22:38 ` Saul Wold
4 siblings, 0 replies; 7+ messages in thread
From: Koen Kooi @ 2011-08-01 11:09 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
Op 1 aug. 2011, om 13:01 heeft Lianhao Lu het volgende geschreven:
> This series of patch allow all the eglibc(s) in the current multilib
> configuration have the same ldd/ldconfig settings.
>
> We put the dynamic loaders'(ld.so) names in the dictionary of "ld_info_all"
> defined 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 ldconfig
> binary.
>
> 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 llu/bug1236
> http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=llu/bug1236
That branch is against poky, making it really hard for people to test the patches against the oe-core repo you're submitting it against. Please base patches against the oe-core repo when you send them to the oe-core mailinglist.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH BUG #1236 2/3] eglibc: Modify ldd script according to multilib config.
2011-08-01 11:02 ` [PATCH BUG #1236 2/3] eglibc: Modify ldd script according to multilib config Lianhao Lu
@ 2011-08-01 17:52 ` Saul Wold
0 siblings, 0 replies; 7+ messages in thread
From: Saul Wold @ 2011-08-01 17:52 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On 08/01/2011 04:02 AM, Lianhao Lu wrote:
> Part fix of [BUGID #1236].
>
This should be [YOCTO #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/classes/utils.bbclass | 10 ++----
> meta/recipes-core/eglibc/eglibc-ld.inc | 49 +++++++++++++++++++++++++++++++
> meta/recipes-core/eglibc/eglibc.inc | 1 +
> meta/recipes-core/eglibc/eglibc_2.13.bb | 6 +++-
> 4 files changed, 58 insertions(+), 8 deletions(-)
> create mode 100644 meta/recipes-core/eglibc/eglibc-ld.inc
>
> diff --git a/meta/classes/utils.bbclass b/meta/classes/utils.bbclass
> index f8adaea..ef4d8fb 100644
> --- a/meta/classes/utils.bbclass
> +++ b/meta/classes/utils.bbclass
> @@ -361,13 +361,9 @@ def all_multilib_tune_values(d, var, unique=True):
> 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 ""
> + overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
> + localdata.setVar("OVERRIDES", overrides)
> + tunename=localdata.getVar("TUNENAME_virtclass-multilib-" + item, False) or localdata.getVar("TUNENAME", False) or ""
> if tunename != "":
> localdata.setVar("DEFAULTTUNE", tunename)
> value = localdata.getVar(var, True) or ""
> diff --git a/meta/recipes-core/eglibc/eglibc-ld.inc b/meta/recipes-core/eglibc/eglibc-ld.inc
> new file mode 100644
> index 0000000..235ba6c
> --- /dev/null
> +++ b/meta/recipes-core/eglibc/eglibc-ld.inc
> @@ -0,0 +1,49 @@
> +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_LIBC6"],
> + "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)
> + overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
> + localdata.setVar("OVERRIDES", overrides)
> + tunename=localdata.getVar("TUNENAME_virtclass-multilib-" + item, False) or localdata.getVar("TUNENAME", 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
> +
> +EGLIBC_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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs
2011-08-01 11:01 [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs Lianhao Lu
` (3 preceding siblings ...)
2011-08-01 11:09 ` [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs Koen Kooi
@ 2011-08-11 22:38 ` Saul Wold
4 siblings, 0 replies; 7+ messages in thread
From: Saul Wold @ 2011-08-11 22:38 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
On 08/01/2011 04:01 AM, Lianhao Lu wrote:
> This series of patch allow all the eglibc(s) in the current multilib
> configuration have the same ldd/ldconfig settings.
>
> We put the dynamic loaders'(ld.so) names in the dictionary of "ld_info_all"
> defined 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 ldconfig
> binary.
>
> 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 llu/bug1236
> http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=llu/bug1236
>
> Lianhao Lu (3):
> utils.bbclass/multilib.conf: Added misc supporting functions.
> eglibc: Modify ldd script according to multilib config.
> eglibc: Setting KNOWN_INTERPRETER_NAMES for ldconfig.
>
> meta/classes/utils.bbclass | 31 ++++++++++++
> meta/conf/bitbake.conf | 1 +
> meta/conf/multilib.conf | 6 ++-
> .../eglibc/eglibc-2.13/multilib_readlib.patch | 20 ++++++++
> meta/recipes-core/eglibc/eglibc-ld.inc | 49 ++++++++++++++++++++
> meta/recipes-core/eglibc/eglibc.inc | 1 +
> meta/recipes-core/eglibc/eglibc_2.13.bb | 12 ++++-
> 7 files changed, 118 insertions(+), 2 deletions(-)
> create mode 100644 meta/recipes-core/eglibc/eglibc-2.13/multilib_readlib.patch
> create mode 100644 meta/recipes-core/eglibc/eglibc-ld.inc
>
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
Can you please rebase and test this and resend.
Thanks
Sau!
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-08-11 22:42 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-01 11:01 [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs Lianhao Lu
2011-08-01 11:02 ` [PATCH BUG #1236 1/3] utils.bbclass/multilib.conf: Added misc supporting functions Lianhao Lu
2011-08-01 11:02 ` [PATCH BUG #1236 2/3] eglibc: Modify ldd script according to multilib config Lianhao Lu
2011-08-01 17:52 ` Saul Wold
2011-08-01 11:02 ` [PATCH BUG #1236 3/3] eglibc: Setting KNOWN_INTERPRETER_NAMES for ldconfig Lianhao Lu
2011-08-01 11:09 ` [PATCH BUG #1236 0/3] Unify ldd/ldconfig for all multilib eglibcs Koen Kooi
2011-08-11 22:38 ` Saul Wold
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox