0.180-7 - Add elfutils-0.180-shf-compressed.patch
This commit is contained in:
parent
29f2206fd8
commit
98c6807f3d
68
elfutils-0.180-shf-compressed.patch
Normal file
68
elfutils-0.180-shf-compressed.patch
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
commit 55c5c9a568ed707bcea1388bf3a525212d8cf4b8
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Wed Aug 19 23:41:24 2020 +0200
|
||||||
|
|
||||||
|
libelf: Fixup SHF_COMPRESSED sh_addralign in elf_update if necessary.
|
||||||
|
|
||||||
|
In elf_getdata.c we have the following to compensate for possibly
|
||||||
|
bad sh_addralign values of compressed sections:
|
||||||
|
|
||||||
|
/* Compressed data has a header, but then compressed data.
|
||||||
|
Make sure to set the alignment of the header explicitly,
|
||||||
|
don't trust the file alignment for the section, it is
|
||||||
|
often wrong. */
|
||||||
|
if ((flags & SHF_COMPRESSED) != 0)
|
||||||
|
{
|
||||||
|
entsize = 1;
|
||||||
|
align = __libelf_type_align (elf->class, ELF_T_CHDR);
|
||||||
|
}
|
||||||
|
|
||||||
|
Which makes sure the d_data alignment is correct for the Chdr struct
|
||||||
|
at the start of the compressed section.
|
||||||
|
|
||||||
|
But this means that if a user just reads such a compressed section
|
||||||
|
without changing it, and then tries to write it out again using
|
||||||
|
elf_update they get an error message about d_align and sh_addralign
|
||||||
|
being out of sync.
|
||||||
|
|
||||||
|
We already correct obviously incorrect sh_entsize fields.
|
||||||
|
Do the same for the sh_addralign field of a SHF_COMPRESSED section.
|
||||||
|
|
||||||
|
Signed-off-by: Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
|
||||||
|
index 8f6d2d2d..77044c1c 100644
|
||||||
|
--- a/libelf/ChangeLog
|
||||||
|
+++ b/libelf/ChangeLog
|
||||||
|
@@ -1,3 +1,8 @@
|
||||||
|
+2020-08-19 Mark Wielaard <mark@klomp.org>
|
||||||
|
+
|
||||||
|
+ * elf32_updatenull.c (updatenull_wrlock): Fixup the sh_addralign
|
||||||
|
+ of an SHF_COMPRESSED section if necessary.
|
||||||
|
+
|
||||||
|
2020-06-04 Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
* elf.h: Update from glibc.
|
||||||
|
diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c
|
||||||
|
index 5f3cdbf6..d0d4d1eb 100644
|
||||||
|
--- a/libelf/elf32_updatenull.c
|
||||||
|
+++ b/libelf/elf32_updatenull.c
|
||||||
|
@@ -267,6 +267,18 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum)
|
||||||
|
update_if_changed (shdr->sh_entsize, sh_entsize,
|
||||||
|
scn->shdr_flags);
|
||||||
|
|
||||||
|
+ /* Likewise for the alignment of a compressed section.
|
||||||
|
+ For a SHF_COMPRESSED section set the correct
|
||||||
|
+ sh_addralign value, which must match the d_align of
|
||||||
|
+ the data (see __libelf_set_rawdata in elf_getdata.c). */
|
||||||
|
+ if ((shdr->sh_flags & SHF_COMPRESSED) != 0)
|
||||||
|
+ {
|
||||||
|
+ sh_align = __libelf_type_align (ELFW(ELFCLASS,LIBELFBITS),
|
||||||
|
+ ELF_T_CHDR);
|
||||||
|
+ update_if_changed (shdr->sh_addralign, sh_align,
|
||||||
|
+ scn->shdr_flags);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (scn->data_read == 0
|
||||||
|
&& __libelf_set_rawdata_wrlock (scn) != 0)
|
||||||
|
/* Something went wrong. The error value is already set. */
|
@ -1,6 +1,6 @@
|
|||||||
Name: elfutils
|
Name: elfutils
|
||||||
Version: 0.180
|
Version: 0.180
|
||||||
%global baserelease 6
|
%global baserelease 7
|
||||||
Release: %{baserelease}%{?dist}
|
Release: %{baserelease}%{?dist}
|
||||||
URL: http://elfutils.org/
|
URL: http://elfutils.org/
|
||||||
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
|
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
|
||||||
@ -56,6 +56,7 @@ BuildRequires: curl
|
|||||||
|
|
||||||
# Patches
|
# Patches
|
||||||
Patch1: elfutils-0.180-mhd-result.patch
|
Patch1: elfutils-0.180-mhd-result.patch
|
||||||
|
Patch2: elfutils-0.180-shf-compressed.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Elfutils is a collection of utilities, including stack (to show
|
Elfutils is a collection of utilities, including stack (to show
|
||||||
@ -225,6 +226,7 @@ such servers to download those files on demand.
|
|||||||
|
|
||||||
# Apply patches
|
# Apply patches
|
||||||
%patch1 -p1 -b .mhd_result
|
%patch1 -p1 -b .mhd_result
|
||||||
|
%patch2 -p1 -b .shf_compressed
|
||||||
|
|
||||||
# In case the above patches added any new test scripts, make sure they
|
# In case the above patches added any new test scripts, make sure they
|
||||||
# are executable.
|
# are executable.
|
||||||
@ -405,6 +407,9 @@ exit 0
|
|||||||
%systemd_postun_with_restart debuginfod.service
|
%systemd_postun_with_restart debuginfod.service
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Aug 25 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.180-7
|
||||||
|
- Add elfutils-0.180-shf-compressed.patch
|
||||||
|
|
||||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.180-6
|
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.180-6
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user