From d49016d3faf684319bf3ac37450558920d70be03 Mon Sep 17 00:00:00 2001
|
From: Richard Purdie <richard.purdie@linuxfoundation.org>
|
Date: Wed, 19 Feb 2020 09:51:16 -0800
|
Subject: [PATCH] binutils-nativesdk: Search for alternative ld.so.conf in SDK
|
installation
|
|
We need binutils to look at our ld.so.conf file within the SDK to ensure
|
we search the SDK's libdirs as well as those from the host system.
|
|
We therefore pass in the directory to the code using a define, then add
|
it to a section we relocate in a similar way to the way we relocate the
|
gcc internal paths. This ensures that ld works correctly in our buildtools
|
tarball.
|
|
Standard sysroot relocation doesn't work since we're not in a sysroot,
|
we want to use both the host system and SDK libs.
|
|
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
2020/1/17
|
Upstream-Status: Inappropriate [OE specific tweak]
|
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
---
|
ld/Makefile.am | 3 ++-
|
ld/Makefile.in | 3 ++-
|
ld/ldelf.c | 2 +-
|
ld/ldmain.c | 1 +
|
ld/ldmain.h | 1 +
|
5 files changed, 7 insertions(+), 3 deletions(-)
|
|
diff --git a/ld/Makefile.am b/ld/Makefile.am
|
index f8e99325361..fd196541f59 100644
|
--- a/ld/Makefile.am
|
+++ b/ld/Makefile.am
|
@@ -42,7 +42,8 @@ ZLIBINC = @zlibinc@
|
|
ELF_CLFAGS=-DELF_LIST_OPTIONS=@elf_list_options@ \
|
-DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \
|
- -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@
|
+ -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \
|
+ -DSYSCONFDIR="\"$(sysconfdir)\""
|
WARN_CFLAGS = @WARN_CFLAGS@
|
NO_WERROR = @NO_WERROR@
|
AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
|
diff --git a/ld/Makefile.in b/ld/Makefile.in
|
index ef2e99e08da..cb8f5bfb70e 100644
|
--- a/ld/Makefile.in
|
+++ b/ld/Makefile.in
|
@@ -555,7 +555,8 @@ ZLIB = @zlibdir@ -lz
|
ZLIBINC = @zlibinc@
|
ELF_CLFAGS = -DELF_LIST_OPTIONS=@elf_list_options@ \
|
-DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \
|
- -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@
|
+ -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \
|
+ -DSYSCONFDIR="\"$(sysconfdir)\""
|
|
AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS)
|
|
diff --git a/ld/ldelf.c b/ld/ldelf.c
|
index 21e655bb55c..d1615003ede 100644
|
--- a/ld/ldelf.c
|
+++ b/ld/ldelf.c
|
@@ -911,7 +911,7 @@ ldelf_check_ld_so_conf (const struct bfd_link_needed_list *l, int force,
|
|
info.path = NULL;
|
info.len = info.alloc = 0;
|
- tmppath = concat (ld_sysroot, prefix, "/etc/ld.so.conf",
|
+ tmppath = concat (ld_sysconfdir, "/etc/ld.so.conf",
|
(const char *) NULL);
|
if (!ldelf_parse_ld_so_conf (&info, tmppath))
|
{
|
diff --git a/ld/ldmain.c b/ld/ldmain.c
|
index 42660eb9a3c..5a4a4d5da3d 100644
|
--- a/ld/ldmain.c
|
+++ b/ld/ldmain.c
|
@@ -70,6 +70,7 @@ char *program_name;
|
|
/* The prefix for system library directories. */
|
const char *ld_sysroot;
|
+char ld_sysconfdir[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSCONFDIR;
|
|
/* The canonical representation of ld_sysroot. */
|
char *ld_canon_sysroot;
|
diff --git a/ld/ldmain.h b/ld/ldmain.h
|
index 39d08a6c378..4c3519e7970 100644
|
--- a/ld/ldmain.h
|
+++ b/ld/ldmain.h
|
@@ -23,6 +23,7 @@
|
|
extern char *program_name;
|
extern const char *ld_sysroot;
|
+extern char ld_sysconfdir[4096];
|
extern char *ld_canon_sysroot;
|
extern int ld_canon_sysroot_len;
|
extern FILE *saved_script_handle;
|