1From b2ccd25828b40310caeb094c0413e3a30a4dc0a5 Mon Sep 17 00:00:00 2001 2From: Richard Purdie <richard.purdie@linuxfoundation.org> 3Date: Wed, 19 Feb 2020 09:51:16 -0800 4Subject: [PATCH] binutils-nativesdk: Search for alternative ld.so.conf in SDK 5 installation 6 7We need binutils to look at our ld.so.conf file within the SDK to ensure 8we search the SDK's libdirs as well as those from the host system. 9 10We therefore pass in the directory to the code using a define, then add 11it to a section we relocate in a similar way to the way we relocate the 12gcc internal paths. This ensures that ld works correctly in our buildtools 13tarball. 14 15Standard sysroot relocation doesn't work since we're not in a sysroot, 16we want to use both the host system and SDK libs. 17 18Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> 192020/1/17 20Upstream-Status: Inappropriate [OE specific tweak] 21 22Signed-off-by: Khem Raj <raj.khem@gmail.com> 23--- 24 ld/Makefile.am | 3 ++- 25 ld/Makefile.in | 3 ++- 26 ld/ldelf.c | 2 +- 27 ld/ldmain.c | 1 + 28 ld/ldmain.h | 1 + 29 5 files changed, 7 insertions(+), 3 deletions(-) 30 31diff --git a/ld/Makefile.am b/ld/Makefile.am 32index b55a873d927..61db131fb0d 100644 33--- a/ld/Makefile.am 34+++ b/ld/Makefile.am 35@@ -42,7 +42,8 @@ ZLIBINC = @zlibinc@ 36 37 ELF_CLFAGS=-DELF_LIST_OPTIONS=@elf_list_options@ \ 38 -DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \ 39- -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ 40+ -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \ 41+ -DSYSCONFDIR="\"$(sysconfdir)\"" 42 WARN_CFLAGS = @WARN_CFLAGS@ 43 NO_WERROR = @NO_WERROR@ 44 AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) 45diff --git a/ld/Makefile.in b/ld/Makefile.in 46index 61e93eeaf1e..860eb21a785 100644 47--- a/ld/Makefile.in 48+++ b/ld/Makefile.in 49@@ -556,7 +556,8 @@ ZLIB = @zlibdir@ -lz 50 ZLIBINC = @zlibinc@ 51 ELF_CLFAGS = -DELF_LIST_OPTIONS=@elf_list_options@ \ 52 -DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \ 53- -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ 54+ -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \ 55+ -DSYSCONFDIR="\"$(sysconfdir)\"" 56 57 AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) 58 59diff --git a/ld/ldelf.c b/ld/ldelf.c 60index 121c25d948f..34cbc60e5e9 100644 61--- a/ld/ldelf.c 62+++ b/ld/ldelf.c 63@@ -930,7 +930,7 @@ ldelf_check_ld_so_conf (const struct bfd_link_needed_list *l, int force, 64 65 info.path = NULL; 66 info.len = info.alloc = 0; 67- tmppath = concat (ld_sysroot, prefix, "/etc/ld.so.conf", 68+ tmppath = concat (ld_sysconfdir, "/ld.so.conf", 69 (const char *) NULL); 70 if (!ldelf_parse_ld_so_conf (&info, tmppath)) 71 { 72diff --git a/ld/ldmain.c b/ld/ldmain.c 73index ea72b14a301..1ae90a77749 100644 74--- a/ld/ldmain.c 75+++ b/ld/ldmain.c 76@@ -70,6 +70,7 @@ char *program_name; 77 78 /* The prefix for system library directories. */ 79 const char *ld_sysroot; 80+char ld_sysconfdir[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSCONFDIR; 81 82 /* The canonical representation of ld_sysroot. */ 83 char *ld_canon_sysroot; 84diff --git a/ld/ldmain.h b/ld/ldmain.h 85index f6d05a02f59..e60292cd522 100644 86--- a/ld/ldmain.h 87+++ b/ld/ldmain.h 88@@ -23,6 +23,7 @@ 89 90 extern char *program_name; 91 extern const char *ld_sysroot; 92+extern char ld_sysconfdir[4096]; 93 extern char *ld_canon_sysroot; 94 extern int ld_canon_sysroot_len; 95 extern FILE *saved_script_handle; 96