diff options
-rw-r--r-- | meta/recipes-core/eglibc/eglibc-2.15/relocatable_sdk.patch | 81 | ||||
-rw-r--r-- | meta/recipes-core/eglibc/eglibc-2.16/relocatable_sdk.patch | 108 | ||||
-rw-r--r-- | meta/recipes-core/eglibc/eglibc_2.15.bb | 6 | ||||
-rw-r--r-- | meta/recipes-core/eglibc/eglibc_2.16.bb | 6 |
4 files changed, 197 insertions, 4 deletions
diff --git a/meta/recipes-core/eglibc/eglibc-2.15/relocatable_sdk.patch b/meta/recipes-core/eglibc/eglibc-2.15/relocatable_sdk.patch new file mode 100644 index 0000000000..0ee25d60d7 --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-2.15/relocatable_sdk.patch | |||
@@ -0,0 +1,81 @@ | |||
1 | Upstream-Status: Inappropriate [SDK specific] | ||
2 | |||
3 | This patch puts the dynamic loader path in the binaries, SYSTEM_DIRS strings | ||
4 | and lengths as well as ld.so.cache path in the dynamic loader to specific | ||
5 | sections in memory. The sections that contain paths have been allocated a 4096 | ||
6 | byte section, which is the maximum path length in linux. This will allow the | ||
7 | relocating script to parse the ELF binary, detect the section and easily replace | ||
8 | the strings in a certain path. | ||
9 | |||
10 | Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> | ||
11 | |||
12 | Index: libc/elf/interp.c | ||
13 | =================================================================== | ||
14 | --- libc.orig/elf/interp.c | ||
15 | +++ libc/elf/interp.c | ||
16 | @@ -17,5 +17,5 @@ | ||
17 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | ||
18 | 02111-1307 USA. */ | ||
19 | |||
20 | -const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp"))) | ||
21 | +const char __invoke_dynamic_linker__[4096] __attribute__ ((section (".interp"))) | ||
22 | = RUNTIME_LINKER; | ||
23 | Index: libc/elf/dl-load.c | ||
24 | =================================================================== | ||
25 | --- libc.orig/elf/dl-load.c | ||
26 | +++ libc/elf/dl-load.c | ||
27 | @@ -145,8 +145,8 @@ static size_t max_capstrlen attribute_re | ||
28 | /* Get the generated information about the trusted directories. */ | ||
29 | #include "trusted-dirs.h" | ||
30 | |||
31 | -static const char system_dirs[] = SYSTEM_DIRS; | ||
32 | -static const size_t system_dirs_len[] = | ||
33 | +static const char system_dirs[4096] __attribute__ ((section (".sysdirs"))) = SYSTEM_DIRS; | ||
34 | +volatile static const size_t system_dirs_len[] __attribute__ ((section (".sysdirslen"))) = | ||
35 | { | ||
36 | SYSTEM_DIRS_LEN | ||
37 | }; | ||
38 | Index: libc/elf/dl-cache.c | ||
39 | =================================================================== | ||
40 | --- libc.orig/elf/dl-cache.c | ||
41 | +++ libc/elf/dl-cache.c | ||
42 | @@ -134,6 +134,10 @@ do \ | ||
43 | while (0) | ||
44 | |||
45 | |||
46 | +const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache"))) = | ||
47 | + SYSCONFDIR "/ld.so.cache"; | ||
48 | + | ||
49 | + | ||
50 | int | ||
51 | internal_function | ||
52 | _dl_cache_libcmp (const char *p1, const char *p2) | ||
53 | Index: libc/elf/ldconfig.c | ||
54 | =================================================================== | ||
55 | --- libc.orig/elf/ldconfig.c | ||
56 | +++ libc/elf/ldconfig.c | ||
57 | @@ -167,6 +167,9 @@ static struct argp argp = | ||
58 | options, parse_opt, NULL, doc, NULL, more_help, NULL | ||
59 | }; | ||
60 | |||
61 | + | ||
62 | +extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache"))); | ||
63 | + | ||
64 | /* Check if string corresponds to an important hardware capability or | ||
65 | a platform. */ | ||
66 | static int | ||
67 | Index: libc/sysdeps/generic/dl-cache.h | ||
68 | =================================================================== | ||
69 | --- libc.orig/sysdeps/generic/dl-cache.h | ||
70 | +++ libc/sysdeps/generic/dl-cache.h | ||
71 | @@ -28,10 +28,6 @@ | ||
72 | ((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID) | ||
73 | #endif | ||
74 | |||
75 | -#ifndef LD_SO_CACHE | ||
76 | -# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache" | ||
77 | -#endif | ||
78 | - | ||
79 | #ifndef add_system_dir | ||
80 | # define add_system_dir(dir) add_dir (dir) | ||
81 | #endif | ||
diff --git a/meta/recipes-core/eglibc/eglibc-2.16/relocatable_sdk.patch b/meta/recipes-core/eglibc/eglibc-2.16/relocatable_sdk.patch new file mode 100644 index 0000000000..ca5f17ba58 --- /dev/null +++ b/meta/recipes-core/eglibc/eglibc-2.16/relocatable_sdk.patch | |||
@@ -0,0 +1,108 @@ | |||
1 | Upstream-Status: Inappropriate [SDK specific] | ||
2 | |||
3 | This patch puts the dynamic loader path in the binaries, SYSTEM_DIRS strings | ||
4 | and lengths as well as ld.so.cache path in the dynamic loader to specific | ||
5 | sections in memory. The sections that contain paths have been allocated a 4096 | ||
6 | byte section, which is the maximum path length in linux. This will allow the | ||
7 | relocating script to parse the ELF binary, detect the section and easily replace | ||
8 | the strings in a certain path. | ||
9 | |||
10 | Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> | ||
11 | |||
12 | Index: libc/elf/interp.c | ||
13 | =================================================================== | ||
14 | --- libc.orig/elf/interp.c | ||
15 | +++ libc/elf/interp.c | ||
16 | @@ -16,5 +16,5 @@ | ||
17 | License along with the GNU C Library; if not, see | ||
18 | <http://www.gnu.org/licenses/>. */ | ||
19 | |||
20 | -const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp"))) | ||
21 | +const char __invoke_dynamic_linker__[4096] __attribute__ ((section (".interp"))) | ||
22 | = RUNTIME_LINKER; | ||
23 | Index: libc/elf/dl-load.c | ||
24 | =================================================================== | ||
25 | --- libc.orig/elf/dl-load.c | ||
26 | +++ libc/elf/dl-load.c | ||
27 | @@ -144,8 +144,8 @@ static size_t max_capstrlen attribute_re | ||
28 | /* Get the generated information about the trusted directories. */ | ||
29 | #include "trusted-dirs.h" | ||
30 | |||
31 | -static const char system_dirs[] = SYSTEM_DIRS; | ||
32 | -static const size_t system_dirs_len[] = | ||
33 | +static const char system_dirs[4096] __attribute__ ((section (".sysdirs"))) = SYSTEM_DIRS; | ||
34 | +volatile static const size_t system_dirs_len[] __attribute__ ((section (".sysdirslen"))) = | ||
35 | { | ||
36 | SYSTEM_DIRS_LEN | ||
37 | }; | ||
38 | Index: libc/elf/dl-cache.c | ||
39 | =================================================================== | ||
40 | --- libc.orig/elf/dl-cache.c | ||
41 | +++ libc/elf/dl-cache.c | ||
42 | @@ -133,6 +133,10 @@ do \ | ||
43 | while (0) | ||
44 | |||
45 | |||
46 | +const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache"))) = | ||
47 | + SYSCONFDIR "/ld.so.cache"; | ||
48 | + | ||
49 | + | ||
50 | int | ||
51 | internal_function | ||
52 | _dl_cache_libcmp (const char *p1, const char *p2) | ||
53 | Index: libc/elf/ldconfig.c | ||
54 | =================================================================== | ||
55 | --- libc.orig/elf/ldconfig.c | ||
56 | +++ libc/elf/ldconfig.c | ||
57 | @@ -166,6 +166,9 @@ static struct argp argp = | ||
58 | options, parse_opt, NULL, doc, NULL, more_help, NULL | ||
59 | }; | ||
60 | |||
61 | + | ||
62 | +extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache"))); | ||
63 | + | ||
64 | /* Check if string corresponds to an important hardware capability or | ||
65 | a platform. */ | ||
66 | static int | ||
67 | Index: libc/sysdeps/generic/dl-cache.h | ||
68 | =================================================================== | ||
69 | --- libc.orig/sysdeps/generic/dl-cache.h | ||
70 | +++ libc/sysdeps/generic/dl-cache.h | ||
71 | @@ -27,10 +27,6 @@ | ||
72 | ((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID) | ||
73 | #endif | ||
74 | |||
75 | -#ifndef LD_SO_CACHE | ||
76 | -# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache" | ||
77 | -#endif | ||
78 | - | ||
79 | #ifndef add_system_dir | ||
80 | # define add_system_dir(dir) add_dir (dir) | ||
81 | #endif | ||
82 | Index: libc/elf/rtld.c | ||
83 | =================================================================== | ||
84 | --- libc.orig/elf/rtld.c | ||
85 | +++ libc/elf/rtld.c | ||
86 | @@ -99,6 +99,7 @@ uintptr_t __pointer_chk_guard_local | ||
87 | strong_alias (__pointer_chk_guard_local, __pointer_chk_guard) | ||
88 | #endif | ||
89 | |||
90 | +extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache"))); | ||
91 | |||
92 | /* List of auditing DSOs. */ | ||
93 | static struct audit_list | ||
94 | @@ -1031,12 +1032,12 @@ of this helper program; chances are you | ||
95 | --list list all dependencies and how they are resolved\n\ | ||
96 | --verify verify that given object really is a dynamically linked\n\ | ||
97 | object we can handle\n\ | ||
98 | - --inhibit-cache Do not use " LD_SO_CACHE "\n\ | ||
99 | + --inhibit-cache Do not use %s\n\ | ||
100 | --library-path PATH use given PATH instead of content of the environment\n\ | ||
101 | variable LD_LIBRARY_PATH\n\ | ||
102 | --inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\ | ||
103 | in LIST\n\ | ||
104 | - --audit LIST use objects named in LIST as auditors\n"); | ||
105 | + --audit LIST use objects named in LIST as auditors\n", LD_SO_CACHE); | ||
106 | |||
107 | ++_dl_skip_args; | ||
108 | --_dl_argc; | ||
diff --git a/meta/recipes-core/eglibc/eglibc_2.15.bb b/meta/recipes-core/eglibc/eglibc_2.15.bb index d9cb048690..69db5c91ae 100644 --- a/meta/recipes-core/eglibc/eglibc_2.15.bb +++ b/meta/recipes-core/eglibc/eglibc_2.15.bb | |||
@@ -3,7 +3,7 @@ require eglibc.inc | |||
3 | SRCREV = "19294" | 3 | SRCREV = "19294" |
4 | 4 | ||
5 | DEPENDS += "gperf-native" | 5 | DEPENDS += "gperf-native" |
6 | PR = "r12" | 6 | PR = "r13" |
7 | PR_append = "+svnr${SRCPV}" | 7 | PR_append = "+svnr${SRCPV}" |
8 | 8 | ||
9 | EGLIBC_BRANCH="eglibc-2_15" | 9 | EGLIBC_BRANCH="eglibc-2_15" |
@@ -33,7 +33,9 @@ LIC_FILES_CHKSUM = "file://LICENSES;md5=98a1128c4b58120182cbea3b1752d8b9 \ | |||
33 | file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \ | 33 | file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \ |
34 | file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff " | 34 | file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff " |
35 | 35 | ||
36 | SRC_URI_append_virtclass-nativesdk = " file://ld-search-order.patch" | 36 | SRC_URI_append_virtclass-nativesdk = " file://ld-search-order.patch \ |
37 | file://relocatable_sdk.patch \ | ||
38 | " | ||
37 | S = "${WORKDIR}/${EGLIBC_BRANCH}/libc" | 39 | S = "${WORKDIR}/${EGLIBC_BRANCH}/libc" |
38 | B = "${WORKDIR}/build-${TARGET_SYS}" | 40 | B = "${WORKDIR}/build-${TARGET_SYS}" |
39 | 41 | ||
diff --git a/meta/recipes-core/eglibc/eglibc_2.16.bb b/meta/recipes-core/eglibc/eglibc_2.16.bb index f9a8f6da68..b053a5bf71 100644 --- a/meta/recipes-core/eglibc/eglibc_2.16.bb +++ b/meta/recipes-core/eglibc/eglibc_2.16.bb | |||
@@ -3,7 +3,7 @@ require eglibc.inc | |||
3 | SRCREV = "19383" | 3 | SRCREV = "19383" |
4 | 4 | ||
5 | DEPENDS += "gperf-native" | 5 | DEPENDS += "gperf-native" |
6 | PR = "r4" | 6 | PR = "r5" |
7 | PR_append = "+svnr${SRCPV}" | 7 | PR_append = "+svnr${SRCPV}" |
8 | 8 | ||
9 | EGLIBC_BRANCH="eglibc-2_16" | 9 | EGLIBC_BRANCH="eglibc-2_16" |
@@ -31,7 +31,9 @@ LIC_FILES_CHKSUM = "file://LICENSES;md5=98a1128c4b58120182cbea3b1752d8b9 \ | |||
31 | file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \ | 31 | file://posix/rxspencer/COPYRIGHT;md5=dc5485bb394a13b2332ec1c785f5d83a \ |
32 | file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff " | 32 | file://COPYING.LIB;md5=bbb461211a33b134d42ed5ee802b37ff " |
33 | 33 | ||
34 | SRC_URI_append_virtclass-nativesdk = " file://ld-search-order.patch" | 34 | SRC_URI_append_virtclass-nativesdk = " file://ld-search-order.patch \ |
35 | file://relocatable_sdk.patch \ | ||
36 | " | ||
35 | S = "${WORKDIR}/${EGLIBC_BRANCH}/libc" | 37 | S = "${WORKDIR}/${EGLIBC_BRANCH}/libc" |
36 | B = "${WORKDIR}/build-${TARGET_SYS}" | 38 | B = "${WORKDIR}/build-${TARGET_SYS}" |
37 | 39 | ||