diff options
author | Jason M. Bills <jason.m.bills@linux.intel.com> | 2020-07-10 00:15:49 +0300 |
---|---|---|
committer | Jason M. Bills <jason.m.bills@linux.intel.com> | 2020-07-10 00:15:49 +0300 |
commit | f24c1e9afc47a421831278b57377951e71494d92 (patch) | |
tree | f01c5b14beb4bf31905f769569ed647884491cea /poky/meta/recipes-devtools/prelink | |
parent | 057594a8bb8d062d72244196170c2d78947d318a (diff) | |
parent | 31e5d79893f21786cb0635ab3640d50ff6202f6a (diff) | |
download | openbmc-f24c1e9afc47a421831278b57377951e71494d92.tar.xz |
Merge tag 'wht-0.66' of ssh://git-amr-1.devtools.intel.com:29418/openbmc-openbmc into update
Diffstat (limited to 'poky/meta/recipes-devtools/prelink')
3 files changed, 113 insertions, 54 deletions
diff --git a/poky/meta/recipes-devtools/prelink/prelink/0001-Add-MIPS-gnu-hash-support.patch b/poky/meta/recipes-devtools/prelink/prelink/0001-Add-MIPS-gnu-hash-support.patch new file mode 100644 index 000000000..da0275bfc --- /dev/null +++ b/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/poky/meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch b/poky/meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch deleted file mode 100644 index b1688243a..000000000 --- a/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 - diff --git a/poky/meta/recipes-devtools/prelink/prelink_git.bb b/poky/meta/recipes-devtools/prelink/prelink_git.bb index f0946de2c..e197af9ee 100644 --- a/poky/meta/recipes-devtools/prelink/prelink_git.bb +++ b/poky/meta/recipes-devtools/prelink/prelink_git.bb @@ -9,7 +9,7 @@ and executables, so that far fewer relocations need to be resolved at \ runtime and thus programs come up faster." LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b" -SRCREV = "a853a5d715d84eec93aa68e8f2df26b7d860f5b2" +SRCREV = "f9975537dbfd9ade0fc813bd5cf5fcbe41753a37" PV = "1.0+git${SRCPV}" # @@ -28,12 +28,12 @@ FILES_${PN}-cron = "${sysconfdir}/cron.daily ${sysconfdir}/default" PACKAGES =+ "${PN}-cron" SRC_URI = "git://git.yoctoproject.org/prelink-cross.git;branch=cross_prelink_staging \ + file://0001-Add-MIPS-gnu-hash-support.patch \ file://prelink.conf \ file://prelink.cron.daily \ file://prelink.default \ file://macros.prelink \ - file://0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch \ -" + " UPSTREAM_CHECK_COMMITS = "1" # error: error.h: No such file or directory |