From aedf7568d5c21a6bac0e88278de70005e3240ae2 Mon Sep 17 00:00:00 2001 From: Funda Wang Date: Mon, 4 Nov 2024 22:04:41 +0800 Subject: [PATCH] Handle DT_MIPS_RLD_MAP_REL on MIPS (debian bug#820335) (cherry picked from commit 48fee88e9e2bb13ae38bb4274fe91c31d5c9fc3c) --- chrpath-fix-mips-segfault.patch | 31 +++++++++++++++++++++++++++++++ chrpath.spec | 7 ++++++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 chrpath-fix-mips-segfault.patch diff --git a/chrpath-fix-mips-segfault.patch b/chrpath-fix-mips-segfault.patch new file mode 100644 index 0000000..c9239b7 --- /dev/null +++ b/chrpath-fix-mips-segfault.patch @@ -0,0 +1,31 @@ +--- chrpath-0.18.orig/killrpath.c ++++ chrpath-0.18/killrpath.c +@@ -78,10 +78,26 @@ + dynpos = 0; + for (i = 0; DYNSS(i, d_tag) != DT_NULL; i++) + { +- if (is_e32()) ++ if (is_e32()) { + ((Elf32_Dyn *)dyns)[dynpos] = ((Elf32_Dyn *)dyns)[i]; +- else ++#ifdef DT_MIPS_RLD_MAP_REL ++ /* DT_MIPS_RLD_MAP_REL is relative to the offset of the tag. ++ Adjust it consequently. */ ++ if (DYNSS(i, d_tag) == DT_MIPS_RLD_MAP_REL) ++ ((Elf32_Dyn *)dyns)[dynpos].d_un.d_val = ++ DO_SWAPU32(DYNSU(i, d_un.d_val) + ++ (i - dynpos) * sizeof(Elf32_Dyn)); ++#endif ++ } else { + ((Elf64_Dyn *)dyns)[dynpos] = ((Elf64_Dyn *)dyns)[i]; ++#ifdef DT_MIPS_RLD_MAP_REL ++ /* Ditto */ ++ if (DYNSS(i, d_tag) == DT_MIPS_RLD_MAP_REL) ++ ((Elf64_Dyn *)dyns)[dynpos].d_un.d_val = ++ DO_SWAPU64(DYNSU(i, d_un.d_val) + ++ (i - dynpos) * sizeof(Elf64_Dyn)); ++#endif ++ } + if ( ! elf_dynpath_tag(DYNSS(i, d_tag)) ) + dynpos++; + } diff --git a/chrpath.spec b/chrpath.spec index 63be993..be7b034 100644 --- a/chrpath.spec +++ b/chrpath.spec @@ -1,10 +1,12 @@ Name: chrpath Version: 0.16 -Release: 13 +Release: 14 Summary: Modify the dynamic library load path (rpath) of compiled programs License: GPL+ URL: https://github.com/openEuler-BaseService/chrpath Source0: https://alioth-archive.debian.org/releases/%{name}/%{name}/%{version}/%{name}-%{version}.tar.gz +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=820335 +Patch0: chrpath-fix-mips-segfault.patch BuildRequires: gcc @@ -39,6 +41,9 @@ make check %{_mandir}/man1/chrpath.1* %changelog +* Mon Nov 04 2024 Funda Wang - 0.16-14 +- Handle DT_MIPS_RLD_MAP_REL on MIPS (debian bug#820335) + * Tue Oct 25 2022 yanglongkang - 0.16-13 - rebuild for next release -- Gitee