| From 3bbec749ec9fe681ade6812c48c541a752fcffd5 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 03/17] 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 02c4fc16395..a5762227f0a 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 2fe12e14f63..8f0c83ac8d2 100644 |
| --- a/ld/Makefile.in |
| +++ b/ld/Makefile.in |
| @@ -548,7 +548,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 bada3ade2d7..b4784009d7a 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 08be9030cb5..f5c5a336320 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 ac7db5720d5..1cbe1771912 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; |
| -- |
| 2.28.0 |
| |