Skip to content

Commit

Permalink
dev-libs/elfutils: add missing section update on reorder, bug #666954
Browse files Browse the repository at this point in the history
Fix picked from https://sourceware.org/ml/elfutils-devel/2019-q2/msg00077.html
by Mark Wielaard.

Bug: https://bugs.gentoo.org/666954
Bug: rpm-software-management/rpm#423
Package-Manager: Portage-2.3.66, Repoman-2.3.12
Signed-off-by: Sergei Trofimovich <[email protected]>
  • Loading branch information
Sergei Trofimovich committed May 13, 2019
1 parent f3e0d07 commit f1c4349
Show file tree
Hide file tree
Showing 3 changed files with 179 additions and 0 deletions.
71 changes: 71 additions & 0 deletions dev-libs/elfutils/elfutils-0.173-r2.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit flag-o-matic multilib-minimal

DESCRIPTION="Libraries/utilities to handle ELF objects (drop in replacement for libelf)"
HOMEPAGE="http://elfutils.org/"
SRC_URI="https://sourceware.org/elfutils/ftp/${PV}/${P}.tar.bz2"

LICENSE="|| ( GPL-2+ LGPL-3+ ) utils? ( GPL-3+ )"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux"
IUSE="bzip2 lzma nls static-libs test +threads +utils"

RDEPEND=">=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
!dev-libs/libelf"
DEPEND="${RDEPEND}
nls? ( sys-devel/gettext )
>=sys-devel/flex-2.5.4a
sys-devel/m4"

PATCHES=(
"${FILESDIR}"/${PN}-0.118-PaX-support.patch
"${FILESDIR}"/${PN}-0.173-partial-core.patch
"${FILESDIR}"/${PN}-0.175-disable-biarch-test-PR24158.patch
"${FILESDIR}"/${PN}-0.173-reorder.patch
)

src_prepare() {
default

if ! use static-libs; then
sed -i -e '/^lib_LIBRARIES/s:=.*:=:' -e '/^%.os/s:%.o$::' lib{asm,dw,elf}/Makefile.in || die
fi
sed -i 's:-Werror::' */Makefile.in || die
}

src_configure() {
use test && append-flags -g #407135
multilib-minimal_src_configure
}

multilib_src_configure() {
ECONF_SOURCE="${S}" econf \
$(use_enable nls) \
$(use_enable threads thread-safety) \
--program-prefix="eu-" \
--with-zlib \
$(use_with bzip2 bzlib) \
$(use_with lzma)
}

multilib_src_test() {
env LD_LIBRARY_PATH="${BUILD_DIR}/libelf:${BUILD_DIR}/libebl:${BUILD_DIR}/libdw:${BUILD_DIR}/libasm" \
LC_ALL="C" \
emake check VERBOSE=1
}

multilib_src_install_all() {
einstalldocs
dodoc NOTES
# These build quick, and are needed for most tests, so don't
# disable their building when the USE flag is disabled.
if ! use utils; then
rm -rf "${ED}"/usr/bin || die
fi
}
71 changes: 71 additions & 0 deletions dev-libs/elfutils/elfutils-0.176-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit flag-o-matic multilib-minimal

DESCRIPTION="Libraries/utilities to handle ELF objects (drop in replacement for libelf)"
HOMEPAGE="http://elfutils.org/"
SRC_URI="https://sourceware.org/elfutils/ftp/${PV}/${P}.tar.bz2"

LICENSE="|| ( GPL-2+ LGPL-3+ ) utils? ( GPL-3+ )"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux"
IUSE="bzip2 lzma nls static-libs test +threads +utils"

RDEPEND=">=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
!dev-libs/libelf"
DEPEND="${RDEPEND}
nls? ( sys-devel/gettext )
>=sys-devel/flex-2.5.4a
sys-devel/m4"

PATCHES=(
"${FILESDIR}"/${PN}-0.118-PaX-support.patch
"${FILESDIR}"/${PN}-0.175-disable-biarch-test-PR24158.patch
"${FILESDIR}"/${PN}-0.173-reorder.patch
)

src_prepare() {
default

if ! use static-libs; then
sed -i -e '/^lib_LIBRARIES/s:=.*:=:' -e '/^%.os/s:%.o$::' lib{asm,dw,elf}/Makefile.in || die
fi
# https://sourceware.org/PR23914
sed -i 's:-Werror::' */Makefile.in || die
}

src_configure() {
use test && append-flags -g #407135
multilib-minimal_src_configure
}

multilib_src_configure() {
ECONF_SOURCE="${S}" econf \
$(use_enable nls) \
$(use_enable threads thread-safety) \
--program-prefix="eu-" \
--with-zlib \
$(use_with bzip2 bzlib) \
$(use_with lzma)
}

multilib_src_test() {
env LD_LIBRARY_PATH="${BUILD_DIR}/libelf:${BUILD_DIR}/libebl:${BUILD_DIR}/libdw:${BUILD_DIR}/libasm" \
LC_ALL="C" \
emake check VERBOSE=1
}

multilib_src_install_all() {
einstalldocs
dodoc NOTES
# These build quick, and are needed for most tests, so don't
# disable their building when the USE flag is disabled.
if ! use utils; then
rm -rf "${ED}"/usr/bin || die
fi
}
37 changes: 37 additions & 0 deletions dev-libs/elfutils/files/elfutils-0.173-reorder.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
https://bugs.gentoo.org/666954
https://github.com/rpm-software-management/rpm/issues/423
https://sourceware.org/ml/elfutils-devel/2019-q2/msg00077.html

From: Mark Wielaard <mark at klomp dot org>
Subject: [PATCH] libelf: Mark shdr_flags dirty if offset or size changes during update.
Date: Mon, 13 May 2019 00:13:42 +0200
Message-Id: <[email protected]>

We forgot to mark the shdr_flags dirty when only the sh_size or
sh_offset changed during elf_update (). This meant that if there were
no other shdr changes we only wrote out the section data, but didn't
write out the shdr table to the file.

Signed-off-by: Mark Wielaard <[email protected]>
---
libelf/elf32_updatenull.c | 5 +-

--- a/libelf/elf32_updatenull.c
+++ b/libelf/elf32_updatenull.c
@@ -366,12 +366,15 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum)
}

/* See whether the section size is correct. */
+ int size_changed = 0;
update_if_changed (shdr->sh_size, (GElf_Word) offset,
- changed);
+ size_changed);
+ changed |= size_changed;

if (shdr->sh_type != SHT_NOBITS)
size += offset;

+ scn->shdr_flags |= (offset_changed | size_changed);
scn->flags |= changed;
}

0 comments on commit f1c4349

Please sign in to comment.