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 | ||
