Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 1 | From 90d1bb804033a74b54f64cd5d3127c004c266af8 Mon Sep 17 00:00:00 2001 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 2 | From: Richard Purdie <richard.purdie@linuxfoundation.org> |
| 3 | Date: Wed, 19 Feb 2020 09:51:16 -0800 |
Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 4 | Subject: [PATCH] binutils-nativesdk: Search for alternative ld.so.conf in SDK |
| 5 | installation |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 6 | |
| 7 | We need binutils to look at our ld.so.conf file within the SDK to ensure |
| 8 | we search the SDK's libdirs as well as those from the host system. |
| 9 | |
| 10 | We therefore pass in the directory to the code using a define, then add |
| 11 | it to a section we relocate in a similar way to the way we relocate the |
| 12 | gcc internal paths. This ensures that ld works correctly in our buildtools |
| 13 | tarball. |
| 14 | |
| 15 | Standard sysroot relocation doesn't work since we're not in a sysroot, |
| 16 | we want to use both the host system and SDK libs. |
| 17 | |
| 18 | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> |
| 19 | 2020/1/17 |
| 20 | Upstream-Status: Inappropriate [OE specific tweak] |
| 21 | |
| 22 | Signed-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 | |
| 31 | diff --git a/ld/Makefile.am b/ld/Makefile.am |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 32 | index 12b2c3c453f..0590b7055d0 100644 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 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@ |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 44 | AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) $(JANSSON_CFLAGS) $(ZSTD_CFLAGS) |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 45 | diff --git a/ld/Makefile.in b/ld/Makefile.in |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 46 | index 3d5685d6bae..70643b1ce46 100644 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 47 | --- a/ld/Makefile.in |
| 48 | +++ b/ld/Makefile.in |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 49 | @@ -566,7 +566,8 @@ ZLIB = @zlibdir@ -lz |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 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 | |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 57 | AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) $(JANSSON_CFLAGS) $(ZSTD_CFLAGS) |
Andrew Geissler | 635e0e4 | 2020-08-21 15:58:33 -0500 | [diff] [blame] | 58 | |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 59 | diff --git a/ld/ldelf.c b/ld/ldelf.c |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 60 | index eff6693e052..95787012b89 100644 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 61 | --- a/ld/ldelf.c |
| 62 | +++ b/ld/ldelf.c |
Patrick Williams | 92b42cb | 2022-09-03 06:53:57 -0500 | [diff] [blame] | 63 | @@ -936,7 +936,7 @@ ldelf_check_ld_so_conf (const struct bfd_link_needed_list *l, int force, |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 64 | |
| 65 | info.path = NULL; |
| 66 | info.len = info.alloc = 0; |
| 67 | - tmppath = concat (ld_sysroot, prefix, "/etc/ld.so.conf", |
Andrew Geissler | 635e0e4 | 2020-08-21 15:58:33 -0500 | [diff] [blame] | 68 | + tmppath = concat (ld_sysconfdir, "/etc/ld.so.conf", |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 69 | (const char *) NULL); |
| 70 | if (!ldelf_parse_ld_so_conf (&info, tmppath)) |
| 71 | { |
| 72 | diff --git a/ld/ldmain.c b/ld/ldmain.c |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 73 | index 9290a189b0d..ceaca2d85d0 100644 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 74 | --- a/ld/ldmain.c |
| 75 | +++ b/ld/ldmain.c |
Andrew Geissler | 635e0e4 | 2020-08-21 15:58:33 -0500 | [diff] [blame] | 76 | @@ -70,6 +70,7 @@ char *program_name; |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 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; |
| 84 | diff --git a/ld/ldmain.h b/ld/ldmain.h |
Andrew Geissler | c5535c9 | 2023-01-27 16:10:19 -0600 | [diff] [blame^] | 85 | index dda124b96e8..ba06a7d7be2 100644 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 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; |