prelink: Fix Segmentation fault error when prelink qemu
cover prelink: Fix Segmentation fault error when prelink qemu
The following changes since commit d0d55add6cb01252a46d829ade75666920b676fa:
libxml2: Make it compatible with externalsrc (2018-10-10 14:33:34 +0100)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib rbt/prelink
http://cgit.openembedded.org/openembedded-core-contrib/log/?h=rbt/prelink
Robert Yang (1):
prelink: Fix Segmentation fault error when prelink qemu
...ps.c-check-info-resolvetls-before-use-its.patch | 51 ++++++++++++++++++++++ meta/recipes-devtools/prelink/prelink_git.bb | 1 + 2 files changed, 52 insertions(+) create mode 100644 meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch
Signature · 1 line
2.7.4
PATCH 1/1 prelink: Fix Segmentation fault error when prelink qemu
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]
--- ...ps.c-check-info-resolvetls-before-use-its.patch | 51 ++++++++++++++++++++++ meta/recipes-devtools/prelink/prelink_git.bb | 1 + 2 files changed, 52 insertions(+) create mode 100644 meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch
meta/recipes-devtools/prelink/prelink/0001-src-arch-mips.c-check-info-resolvetls-before-use-its.patch new file +51 -0
@@ -0,0 +1,51 @@ +From 2136969e3e196b9cf7f4788340efa4b1d9b39565 Mon Sep 17 00:00:00 2001 +From: Robert Yang <[email protected]> +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 <[email protected]> +--- + 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 +
meta/recipes-devtools/prelink/prelink_git.bb +1 -0
@@ -32,6 +32,7 @@ SRC_URI = "git://git.yoctoproject.org/prelink-cross.git;branch=cross_prelink_sta 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"
Signature · 1 line
2.7.4