summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurentiu Palcu <laurentiu.palcu@intel.com>2012-09-11 16:55:31 +0300
committerSaul Wold <sgw@linux.intel.com>2012-09-14 18:38:18 -0700
commitaeb336516b6b590f72f0fdfeb1c6817bc68294c6 (patch)
treecf8a0460bf7939725f329587cb2587e008062536
parentdd3edc9fbb674682947e8218202fdbeef8635dd5 (diff)
downloadpoky-aeb336516b6b590f72f0fdfeb1c6817bc68294c6.tar.gz
nativesdk-qemu: fix SDK relocation issue
User mode emulation binaries are linked using a local linker script. The nativesdk ones were not used and the resulting binaries did not have the interp section resized. Hence, those binaries could not be relocated. [YOCTO #3083] (From OE-Core rev: da014e900adfe96f01290c5a8f5fb08e295ca204) Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/qemu/qemu-1.2.0/relocatable_sdk.patch34
-rw-r--r--meta/recipes-devtools/qemu/qemu_0.15.1.bb6
2 files changed, 40 insertions, 0 deletions
diff --git a/meta/recipes-devtools/qemu/qemu-1.2.0/relocatable_sdk.patch b/meta/recipes-devtools/qemu/qemu-1.2.0/relocatable_sdk.patch
new file mode 100644
index 0000000000..0a01a8a048
--- /dev/null
+++ b/meta/recipes-devtools/qemu/qemu-1.2.0/relocatable_sdk.patch
@@ -0,0 +1,34 @@
1Upstream-Status: Inappropriate [SDK specific]
2
3In order to be able to change the dynamic loader path when relocating
4binaries, the interp section has to be made big enough to accomodate
5the new path (4096 is the maximum path length in Linux).
6
7Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
8
9Index: qemu-1.2.0/i386.ld
10===================================================================
11--- qemu-1.2.0.orig/i386.ld
12+++ qemu-1.2.0/i386.ld
13@@ -8,7 +8,7 @@ SECTIONS
14 {
15 /* Read-only sections, merged into text segment: */
16 . = 0x60000000 + SIZEOF_HEADERS;
17- .interp : { *(.interp) }
18+ .interp : { *(.interp); . = 0x1000; }
19 .hash : { *(.hash) }
20 .dynsym : { *(.dynsym) }
21 .dynstr : { *(.dynstr) }
22Index: qemu-1.2.0/x86_64.ld
23===================================================================
24--- qemu-1.2.0.orig/x86_64.ld
25+++ qemu-1.2.0/x86_64.ld
26@@ -6,7 +6,7 @@ SECTIONS
27 {
28 /* Read-only sections, merged into text segment: */
29 . = 0x60000000 + SIZEOF_HEADERS;
30- .interp : { *(.interp) }
31+ .interp : { *(.interp); . = 0x1000; }
32 .hash : { *(.hash) }
33 .dynsym : { *(.dynsym) }
34 .dynstr : { *(.dynstr) }
diff --git a/meta/recipes-devtools/qemu/qemu_0.15.1.bb b/meta/recipes-devtools/qemu/qemu_0.15.1.bb
index f4c86f0c63..3f0b6935e7 100644
--- a/meta/recipes-devtools/qemu/qemu_0.15.1.bb
+++ b/meta/recipes-devtools/qemu/qemu_0.15.1.bb
@@ -29,6 +29,12 @@ SRC_URI[sha256sum] = "7705b14d9b8e4df4a0b1790980e618084261e8daef0672a1aa7a830a0f
29 29
30S = "${WORKDIR}/qemu-${PV}" 30S = "${WORKDIR}/qemu-${PV}"
31 31
32PR = "r1"
33
34SRC_URI_append_virtclass-nativesdk = "\
35 file://relocatable_sdk.patch \
36 "
37
32do_configure_prepend_virtclass-nativesdk() { 38do_configure_prepend_virtclass-nativesdk() {
33 if [ "${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" = "" ] ; then 39 if [ "${@base_contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" = "" ] ; then
34 # Undo the -lX11 added by linker-flags.patch 40 # Undo the -lX11 added by linker-flags.patch