d7b8ad5c29
Drop patches that are applied upstream Fix the license checksums for changes in LICENSES file the new changes add more copyright notices that were missing earlier Moving ports is no longer needed since ports is now part of libc proper Refresh tzselect-sh.patch to accomodate upstream changes C++ headers discovery relative to target sysroot is fixed differently upstream hence we drop use-sysroot-cxx-headers.patch aarch64 support is already available in 2.17 hence drop the local patches (From OE-Core rev: 83b6fe6d91b924be5a7676e6ee973ce26b5eefc5) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
109 lines
3.9 KiB
Diff
109 lines
3.9 KiB
Diff
Upstream-Status: Inappropriate [SDK specific]
|
|
|
|
This patch puts the dynamic loader path in the binaries, SYSTEM_DIRS strings
|
|
and lengths as well as ld.so.cache path in the dynamic loader to specific
|
|
sections in memory. The sections that contain paths have been allocated a 4096
|
|
byte section, which is the maximum path length in linux. This will allow the
|
|
relocating script to parse the ELF binary, detect the section and easily replace
|
|
the strings in a certain path.
|
|
|
|
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
|
|
|
|
Index: libc/elf/interp.c
|
|
===================================================================
|
|
--- libc.orig/elf/interp.c
|
|
+++ libc/elf/interp.c
|
|
@@ -16,5 +16,5 @@
|
|
License along with the GNU C Library; if not, see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
-const char __invoke_dynamic_linker__[] __attribute__ ((section (".interp")))
|
|
+const char __invoke_dynamic_linker__[4096] __attribute__ ((section (".interp")))
|
|
= RUNTIME_LINKER;
|
|
Index: libc/elf/dl-load.c
|
|
===================================================================
|
|
--- libc.orig/elf/dl-load.c
|
|
+++ libc/elf/dl-load.c
|
|
@@ -144,8 +144,8 @@ static size_t max_capstrlen attribute_re
|
|
/* Get the generated information about the trusted directories. */
|
|
#include "trusted-dirs.h"
|
|
|
|
-static const char system_dirs[] = SYSTEM_DIRS;
|
|
-static const size_t system_dirs_len[] =
|
|
+static const char system_dirs[4096] __attribute__ ((section (".sysdirs"))) = SYSTEM_DIRS;
|
|
+volatile static const size_t system_dirs_len[] __attribute__ ((section (".sysdirslen"))) =
|
|
{
|
|
SYSTEM_DIRS_LEN
|
|
};
|
|
Index: libc/elf/dl-cache.c
|
|
===================================================================
|
|
--- libc.orig/elf/dl-cache.c
|
|
+++ libc/elf/dl-cache.c
|
|
@@ -133,6 +133,10 @@ do \
|
|
while (0)
|
|
|
|
|
|
+const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache"))) =
|
|
+ SYSCONFDIR "/ld.so.cache";
|
|
+
|
|
+
|
|
int
|
|
internal_function
|
|
_dl_cache_libcmp (const char *p1, const char *p2)
|
|
Index: libc/elf/ldconfig.c
|
|
===================================================================
|
|
--- libc.orig/elf/ldconfig.c
|
|
+++ libc/elf/ldconfig.c
|
|
@@ -166,6 +166,9 @@ static struct argp argp =
|
|
options, parse_opt, NULL, doc, NULL, more_help, NULL
|
|
};
|
|
|
|
+
|
|
+extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache")));
|
|
+
|
|
/* Check if string corresponds to an important hardware capability or
|
|
a platform. */
|
|
static int
|
|
Index: libc/sysdeps/generic/dl-cache.h
|
|
===================================================================
|
|
--- libc.orig/sysdeps/generic/dl-cache.h
|
|
+++ libc/sysdeps/generic/dl-cache.h
|
|
@@ -27,10 +27,6 @@
|
|
((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID)
|
|
#endif
|
|
|
|
-#ifndef LD_SO_CACHE
|
|
-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
|
|
-#endif
|
|
-
|
|
#ifndef add_system_dir
|
|
# define add_system_dir(dir) add_dir (dir)
|
|
#endif
|
|
Index: libc/elf/rtld.c
|
|
===================================================================
|
|
--- libc.orig/elf/rtld.c
|
|
+++ libc/elf/rtld.c
|
|
@@ -99,6 +99,7 @@ uintptr_t __pointer_chk_guard_local
|
|
strong_alias (__pointer_chk_guard_local, __pointer_chk_guard)
|
|
#endif
|
|
|
|
+extern const char LD_SO_CACHE[4096] __attribute__ ((section (".ldsocache")));
|
|
|
|
/* List of auditing DSOs. */
|
|
static struct audit_list
|
|
@@ -1031,12 +1032,12 @@ of this helper program; chances are you
|
|
--list list all dependencies and how they are resolved\n\
|
|
--verify verify that given object really is a dynamically linked\n\
|
|
object we can handle\n\
|
|
- --inhibit-cache Do not use " LD_SO_CACHE "\n\
|
|
+ --inhibit-cache Do not use %s\n\
|
|
--library-path PATH use given PATH instead of content of the environment\n\
|
|
variable LD_LIBRARY_PATH\n\
|
|
--inhibit-rpath LIST ignore RUNPATH and RPATH information in object names\n\
|
|
in LIST\n\
|
|
- --audit LIST use objects named in LIST as auditors\n");
|
|
+ --audit LIST use objects named in LIST as auditors\n", LD_SO_CACHE);
|
|
|
|
++_dl_skip_args;
|
|
--_dl_argc;
|