blob: 4b4d73d21de42dc9a766e7623813b2b1e005fe31 [file] [log] [blame]
Andrew Geissler82c905d2020-04-13 13:39:40 -05001From d057b215f114f6158b4010ab44a19cae9dcc8386 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 4a9b8404b7..1c132d3ce4 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 46d9b14077..e453bc1b33 100644
47--- a/ld/Makefile.in
48+++ b/ld/Makefile.in
49@@ -555,7 +555,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 @ENABLE_PLUGINS_FALSE@PLUGIN_C =
59diff --git a/ld/ldelf.c b/ld/ldelf.c
60index 2e27cf48a8..a095d6aac5 100644
61--- a/ld/ldelf.c
62+++ b/ld/ldelf.c
63@@ -907,7 +907,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 c4af10f4e9..da1ad17763 100644
74--- a/ld/ldmain.c
75+++ b/ld/ldmain.c
76@@ -69,6 +69,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 0f05821d1e..54c36a94ce 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;