diff options
| -rw-r--r-- | meta/recipes-devtools/binutils/binutils/nativesdk-relocation.patch | 80 | ||||
| -rw-r--r-- | meta/recipes-devtools/binutils/binutils_2.33.bb | 2 |
2 files changed, 82 insertions, 0 deletions
diff --git a/meta/recipes-devtools/binutils/binutils/nativesdk-relocation.patch b/meta/recipes-devtools/binutils/binutils/nativesdk-relocation.patch new file mode 100644 index 0000000000..408f7d18b7 --- /dev/null +++ b/meta/recipes-devtools/binutils/binutils/nativesdk-relocation.patch | |||
| @@ -0,0 +1,80 @@ | |||
| 1 | We need binutils to look at our ld.so.conf file within the SDK to ensure | ||
| 2 | we search the SDK's libdirs as well as those from the host system. | ||
| 3 | |||
| 4 | We therefore pass in the directory to the code using a define, then add | ||
| 5 | it to a section we relocate in a similar way to the way we relocate the | ||
| 6 | gcc internal paths. This ensures that ld works correctly in our buildtools | ||
| 7 | tarball. | ||
| 8 | |||
| 9 | Standard sysroot relocation doesn't work since we're not in a sysroot, | ||
| 10 | we want to use both the host system and SDK libs. | ||
| 11 | |||
| 12 | Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> | ||
| 13 | 2020/1/17 | ||
| 14 | Upstream-Status: Inappropriate [OE specific tweak] | ||
| 15 | |||
| 16 | Index: git/ld/Makefile.am | ||
| 17 | =================================================================== | ||
| 18 | --- git.orig/ld/Makefile.am | ||
| 19 | +++ git/ld/Makefile.am | ||
| 20 | @@ -36,7 +36,8 @@ am__skipyacc = | ||
| 21 | |||
| 22 | ELF_CLFAGS=-DELF_LIST_OPTIONS=@elf_list_options@ \ | ||
| 23 | -DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \ | ||
| 24 | - -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ | ||
| 25 | + -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \ | ||
| 26 | + -DSYSCONFDIR="\"$(sysconfdir)\"" | ||
| 27 | WARN_CFLAGS = @WARN_CFLAGS@ | ||
| 28 | NO_WERROR = @NO_WERROR@ | ||
| 29 | AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) | ||
| 30 | Index: git/ld/Makefile.in | ||
| 31 | =================================================================== | ||
| 32 | --- git.orig/ld/Makefile.in | ||
| 33 | +++ git/ld/Makefile.in | ||
| 34 | @@ -546,7 +546,8 @@ am__skiplex = | ||
| 35 | am__skipyacc = | ||
| 36 | ELF_CLFAGS = -DELF_LIST_OPTIONS=@elf_list_options@ \ | ||
| 37 | -DELF_SHLIB_LIST_OPTIONS=@elf_shlib_list_options@ \ | ||
| 38 | - -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ | ||
| 39 | + -DELF_PLT_UNWIND_LIST_OPTIONS=@elf_plt_unwind_list_options@ \ | ||
| 40 | + -DSYSCONFDIR="\"$(sysconfdir)\"" | ||
| 41 | |||
| 42 | AM_CFLAGS = $(WARN_CFLAGS) $(ELF_CLFAGS) | ||
| 43 | @ENABLE_PLUGINS_FALSE@PLUGIN_C = | ||
| 44 | Index: git/ld/emultempl/elf32.em | ||
| 45 | =================================================================== | ||
| 46 | --- git.orig/ld/emultempl/elf32.em | ||
| 47 | +++ git/ld/emultempl/elf32.em | ||
| 48 | @@ -1024,7 +1024,7 @@ gld${EMULATION_NAME}_check_ld_so_conf (c | ||
| 49 | |||
| 50 | info.path = NULL; | ||
| 51 | info.len = info.alloc = 0; | ||
| 52 | - tmppath = concat (ld_sysroot, "${prefix}/etc/ld.so.conf", | ||
| 53 | + tmppath = concat (ld_sysconfdir, "/ld.so.conf", | ||
| 54 | (const char *) NULL); | ||
| 55 | if (!gld${EMULATION_NAME}_parse_ld_so_conf (&info, tmppath)) | ||
| 56 | { | ||
| 57 | Index: git/ld/ldmain.c | ||
| 58 | =================================================================== | ||
| 59 | --- git.orig/ld/ldmain.c | ||
| 60 | +++ git/ld/ldmain.c | ||
| 61 | @@ -68,6 +68,7 @@ char *program_name; | ||
| 62 | |||
| 63 | /* The prefix for system library directories. */ | ||
| 64 | const char *ld_sysroot; | ||
| 65 | +char ld_sysconfdir[4096] __attribute__ ((section (".gccrelocprefix"))) = SYSCONFDIR; | ||
| 66 | |||
| 67 | /* The canonical representation of ld_sysroot. */ | ||
| 68 | char *ld_canon_sysroot; | ||
| 69 | Index: git/ld/ldmain.h | ||
| 70 | =================================================================== | ||
| 71 | --- git.orig/ld/ldmain.h | ||
| 72 | +++ git/ld/ldmain.h | ||
| 73 | @@ -23,6 +23,7 @@ | ||
| 74 | |||
| 75 | extern char *program_name; | ||
| 76 | extern const char *ld_sysroot; | ||
| 77 | +extern char ld_sysconfdir[4096]; | ||
| 78 | extern char *ld_canon_sysroot; | ||
| 79 | extern int ld_canon_sysroot_len; | ||
| 80 | extern FILE *saved_script_handle; | ||
diff --git a/meta/recipes-devtools/binutils/binutils_2.33.bb b/meta/recipes-devtools/binutils/binutils_2.33.bb index 89315915c4..c2833b8447 100644 --- a/meta/recipes-devtools/binutils/binutils_2.33.bb +++ b/meta/recipes-devtools/binutils/binutils_2.33.bb | |||
| @@ -51,5 +51,7 @@ do_install_class-native () { | |||
| 51 | PACKAGE_BEFORE_PN += "libbfd" | 51 | PACKAGE_BEFORE_PN += "libbfd" |
| 52 | FILES_libbfd = "${libdir}/libbfd-*.so" | 52 | FILES_libbfd = "${libdir}/libbfd-*.so" |
| 53 | 53 | ||
| 54 | SRC_URI_append_class-nativesdk = "file://nativesdk-relocation.patch" | ||
| 55 | |||
| 54 | BBCLASSEXTEND = "native nativesdk" | 56 | BBCLASSEXTEND = "native nativesdk" |
| 55 | 57 | ||
