diff options
author | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-11-02 11:07:33 +0900 |
---|---|---|
committer | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-11-02 11:07:33 +0900 |
commit | 1c7d6584a7811b7785ae5c1e378f14b5ba0971cf (patch) | |
tree | cd70a267a5ef105ba32f200aa088e281fbd85747 /external/poky/meta/recipes-devtools/prelink/prelink | |
parent | 4204309872da5cb401cbb2729d9e2d4869a87f42 (diff) |
basesystem-jjsandbox/ToshikazuOhiwa/master-jj
recipes
Diffstat (limited to 'external/poky/meta/recipes-devtools/prelink/prelink')
2 files changed, 110 insertions, 51 deletions
diff --git a/external/poky/meta/recipes-devtools/prelink/prelink/0001-Add-MIPS-gnu-hash-support.patch b/external/poky/meta/recipes-devtools/prelink/prelink/0001-Add-MIPS-gnu-hash-support.patch new file mode 100644 index 00000000..da0275bf --- /dev/null +++ b/external/poky/meta/recipes-devtools/prelink/prelink/0001-Add-MIPS-gnu-hash-support.patch @@ -0,0 +1,110 @@ +From 05240e13668422c4f9118f2cde953ec875d0d68f Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Tue, 14 Jan 2020 01:37:22 -0800 +Subject: [PATCH] Add MIPS gnu hash support + +Upstream-Status: Pending +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- + src/arch-mips.c | 1 + + src/prelink.c | 1 + + src/prelink.h | 5 +++++ + 3 files changed, 7 insertions(+) + +--- a/src/arch-mips.c ++++ b/src/arch-mips.c +@@ -324,6 +324,7 @@ mips_adjust_dyn (DSO *dso, int n, GElf_D + case DT_MIPS_BASE_ADDRESS: + case DT_MIPS_RLD_MAP: + case DT_MIPS_OPTIONS: ++ case DT_MIPS_XHASH: + if (dyn->d_un.d_ptr >= start) + dyn->d_un.d_ptr += adjust; + return 1; +--- a/src/prelink.c ++++ b/src/prelink.c +@@ -425,6 +425,7 @@ prelink_prepare (DSO *dso) + { + case SHT_HASH: + case SHT_GNU_HASH: ++ case SHT_MIPS_XHASH: + case SHT_DYNSYM: + case SHT_REL: + case SHT_RELA: +--- a/src/prelink.h ++++ b/src/prelink.h +@@ -114,6 +114,11 @@ typedef uint8_t Elf64_Byte; + #define SHT_MIPS_ABIFLAGS 0x7000002a + #endif + ++#ifndef SHT_MIPS_XHASH ++#define DT_MIPS_XHASH 0x70000036 ++#define SHT_MIPS_XHASH 0x7000002b ++#endif ++ + #ifndef RSS_UNDEF + #define RSS_UNDEF 0 + #endif +--- a/src/dso.c ++++ b/src/dso.c +@@ -109,6 +109,11 @@ read_dynamic (DSO *dso) + dso->info_DT_GNU_HASH = dyn.d_un.d_val; + dso->info_set_mask |= (1ULL << DT_GNU_HASH_BIT); + } ++ else if (dyn.d_tag == DT_MIPS_XHASH) ++ { ++ dso->info_DT_GNU_HASH = dyn.d_un.d_val; ++ dso->info_set_mask |= (1ULL << DT_GNU_HASH_BIT); ++ } + else if (dyn.d_tag == DT_TLSDESC_PLT) + { + dso->info_DT_TLSDESC_PLT = dyn.d_un.d_val; +@@ -1463,6 +1468,7 @@ adjust_dso (DSO *dso, GElf_Addr start, G + break; + case SHT_HASH: + case SHT_GNU_HASH: ++ case SHT_MIPS_XHASH: + case SHT_NOBITS: + case SHT_STRTAB: + break; +--- a/src/space.c ++++ b/src/space.c +@@ -61,6 +61,7 @@ print_sections (DSO *dso, GElf_Ehdr *ehd + { SHT_GNU_versym, "VERSYM" }, + { SHT_GNU_LIBLIST, "LIBLIST" }, + { SHT_GNU_HASH, "GNU_HASH" }, ++ { SHT_MIPS_XHASH, "MIPS_XHASH" }, + { 0, NULL } + }; + +@@ -183,6 +184,7 @@ readonly_is_movable (DSO *dso, GElf_Ehdr + { + case SHT_HASH: + case SHT_GNU_HASH: ++ case SHT_MIPS_XHASH: + case SHT_DYNSYM: + case SHT_REL: + case SHT_RELA: +@@ -558,6 +560,7 @@ find_readonly_space (DSO *dso, GElf_Shdr + { + case SHT_HASH: + case SHT_GNU_HASH: ++ case SHT_MIPS_XHASH: + case SHT_DYNSYM: + case SHT_STRTAB: + case SHT_GNU_verdef: +--- a/src/exec.c ++++ b/src/exec.c +@@ -65,7 +65,11 @@ update_dynamic_tags (DSO *dso, GElf_Shdr + || (dynamic_info_is_set (dso, DT_GNU_HASH_BIT) + && dso->info_DT_GNU_HASH == old_shdr[j].sh_addr + && old_shdr[j].sh_type == SHT_GNU_HASH +- && set_dynamic (dso, DT_GNU_HASH, shdr[i].sh_addr, 1))) ++ && set_dynamic (dso, DT_GNU_HASH, shdr[i].sh_addr, 1)) ++ || (dynamic_info_is_set (dso, DT_GNU_HASH_BIT) ++ && dso->info_DT_GNU_HASH == old_shdr[j].sh_addr ++ && old_shdr[j].sh_type == SHT_MIPS_XHASH ++ && set_dynamic (dso, DT_MIPS_XHASH, shdr[i].sh_addr, 1))) + return 1; + } + diff --git a/external/poky/meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch b/external/poky/meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch deleted file mode 100644 index b1688243..00000000 --- a/external/poky/meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 2136969e3e196b9cf7f4788340efa4b1d9b39565 Mon Sep 17 00:00:00 2001 -From: Robert Yang <liezhi.yang@windriver.com> -Date: Thu, 11 Oct 2018 10:05:52 +0800 -Subject: [PATCH] src/arch-mips.c: check info->resolvetls before use its member - -The info->resolvetls might be NULL according to src/prelink.c: -[snip] - /* Dynamic linker does not depend on any other library, - all symbols resolve to themselves with the exception - of SHN_UNDEF symbols which resolve to 0. */ -if (info->symtab[r_sym].st_shndx == SHN_UNDEF) - { - info->resolveent = NULL; - info->resolvetls = NULL; -[snip] - -So we must check it before use its members, otherwise, there might be -Segmentation fault error. - -Fixed: -MACHINE = "qemumips" -IMAGE_INSTALL_append = " qemu" -$ bitbake core-image-minimal -[snip] -| /path/to/qemumips-poky-linux/core-image-minimal/1.0-r0/temp/run.prelink_image.1000: line 111: 1010 Segmentation fault (core dumped) -[snip] - -Upstream-Status: Submitted [https://lists.yoctoproject.org/pipermail/yocto/2018-October/042812.html] - -Signed-off-by: Robert Yang <liezhi.yang@windriver.com> ---- - src/arch-mips.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/arch-mips.c b/src/arch-mips.c -index ccb1834..02c608f 100644 ---- a/src/arch-mips.c -+++ b/src/arch-mips.c -@@ -567,7 +567,8 @@ mips_prelink_reloc (struct prelink_info *info, GElf_Addr r_offset, - if (dso->ehdr.e_type == ET_EXEC) - { - value = info->resolve (info, r_sym, r_type); -- value += info->resolvetls->offset - TLS_TP_OFFSET; -+ if (info->resolvetls != NULL) -+ value += info->resolvetls->offset - TLS_TP_OFFSET; - if (r_type == R_MIPS_TLS_TPREL32) - mips_prelink_32bit_reloc (dso, rela, value); - else --- -2.7.4 - |