public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Michał Górny" <mgorny@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-util/debugedit/files/, dev-util/debugedit/
Date: Thu, 14 Mar 2019 12:24:00 +0000 (UTC)	[thread overview]
Message-ID: <1552566221.0e56e352403a2405a99465e68218e84a057933b4.mgorny@gentoo> (raw)

commit:     0e56e352403a2405a99465e68218e84a057933b4
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 13 18:07:16 2019 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Mar 14 12:23:41 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0e56e352

dev-util/debugedit: Apply GCC breakage workaround

Thanks to slyfox for the patch.

Closes: https://bugs.gentoo.org/666954
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-util/debugedit/debugedit-4.14.2-r1.ebuild      | 92 ++++++++++++++++++++++
 .../files/debugedit-4.14.2-no-reorder.patch        | 57 ++++++++++++++
 2 files changed, 149 insertions(+)

diff --git a/dev-util/debugedit/debugedit-4.14.2-r1.ebuild b/dev-util/debugedit/debugedit-4.14.2-r1.ebuild
new file mode 100644
index 00000000000..0aabb6cf18d
--- /dev/null
+++ b/dev-util/debugedit/debugedit-4.14.2-r1.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic
+
+MY_P=rpm-${PV}
+DESCRIPTION="Stand-alone debugedit from RPM"
+HOMEPAGE="http://www.rpm.org
+	https://github.com/rpm-software-management/rpm"
+SRC_URI="http://ftp.rpm.org/releases/rpm-$(ver_cut 1-2).x/${MY_P}.tar.bz2"
+
+LICENSE="GPL-2+ LGPL-2+"
+SLOT="0"
+KEYWORDS="~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux"
+IUSE=""
+
+RDEPEND="
+	sys-libs/zlib:=
+	>=dev-libs/popt-1.7
+	dev-libs/elfutils
+	dev-libs/nss
+"
+DEPEND="${RDEPEND}
+	virtual/pkgconfig
+"
+
+S=${WORKDIR}/${MY_P}
+
+src_prepare() {
+	# do not reorder sections, ever; otherwise it breaks gcc
+	# https://bugs.gentoo.org/666954
+	eapply "${FILESDIR}"/debugedit-4.14.2-no-reorder.patch
+	eapply_user
+
+	# cheat it into believing we're bundling db
+	mkdir -p db/dist || die
+	touch db/dist/configure || die
+	chmod +x db/dist/configure || die
+	echo 'install:' > db3/Makefile || die
+
+	# TODO: why do we need to do this?
+	mkdir rpm || die
+	find -name '*.h' -exec cp {} rpm/ ';' || die
+}
+
+src_configure() {
+	append-cppflags -I"${EPREFIX}/usr/include/nss" -I"${EPREFIX}/usr/include/nspr"
+	local myconf=(
+		# force linking to static librpmio
+		--disable-shared
+
+		# disable linking compression libraries
+		ac_cv_header_bzlib_h=no
+		ac_cv_header_lzma_h=no
+		--disable-zstd
+
+		# fake some libraries we don't use
+		ac_cv_header_magic_h=yes
+		ac_cv_lib_magic_magic_open=yes
+
+		# use nss as crypto provider
+		--with-crypto=nss
+
+		# disable other stuff irrelevant to debugedit
+		--disable-nls
+		--disable-python
+		--without-acl
+		--without-archive
+		--without-cap
+		--without-external-db
+		--without-hackingdocs
+		--without-lua
+		--without-selinux
+	)
+	econf "${myconf[@]}"
+}
+
+src_compile() {
+	emake -C misc
+	emake -C rpmio
+	emake debugedit
+}
+
+src_test() {
+	:
+}
+
+src_install() {
+	dobin debugedit
+}

diff --git a/dev-util/debugedit/files/debugedit-4.14.2-no-reorder.patch b/dev-util/debugedit/files/debugedit-4.14.2-no-reorder.patch
new file mode 100644
index 00000000000..0c196a842b4
--- /dev/null
+++ b/dev-util/debugedit/files/debugedit-4.14.2-no-reorder.patch
@@ -0,0 +1,57 @@
+From 0779d60cb5941610dd1f31632aa1655bf2cc447a Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Sat, 6 Oct 2018 17:56:00 +0100
+Subject: [PATCH] debugedit: don't reorder sections
+
+In https://bugs.gentoo.org/666954 debugedit processed
+crtbeginS.o from gcc-8.2.0 and turned into invalid ELF:
+
+```
+$ cp crtbeginS-ok-7.3.0.o.back crtbeginS-ok-7.3.0.o
+$ debugedit -i -b $(pwd) -d /usr/src/debug -l ./foo crtbeginS-ok-7.3.0.o
+$ export LANG=C
+$ readelf -a crtbeginS-ok-7.3.0.o.back >/dev/null && echo ok
+readelf: Warning: [ 9]: Info field (8) should index a relocatable section.
+ok
+
+$ readelf -a crtbeginS-ok-7.3.0.o >/dev/null && echo ok
+readelf: Warning: [ 9]: Info field (8) should index a relocatable section.
+readelf: Error:  bad symbol index: 54495f00 in reloc
+readelf: Error:  bad symbol index: 656c6261 in reloc
+readelf: Error:  bad symbol index: 62615465 in reloc
+readelf: Error:  bad symbol index: 69665f61 in reloc
+readelf: Warning: local symbol 11 found at index >= symtab's sh_info value of 11
+readelf: Warning: local symbol 14 found at index >= symtab's sh_info value of 11
+readelf: Warning: local symbol 15 found at index >= symtab's sh_info value of 11
+```
+
+Ths fix is not to reorder sections as debugedit does not
+account for offset change.
+
+debugedit already does it for final executables and shared libraries.
+
+Bug: https://bugs.gentoo.org/666954
+Closes: https://github.com/rpm-software-management/rpm/issues/423
+Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+---
+ tools/debugedit.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/tools/debugedit.c b/tools/debugedit.c
+index 84568dd29..a723283c0 100644
+--- a/tools/debugedit.c
++++ b/tools/debugedit.c
+@@ -2347,10 +2347,9 @@ fdopen_dso (int fd, const char *name)
+       goto error_out;
+     }
+ 
+-  /* If there are phdrs we want to maintain the layout of the
+-     allocated sections in the file.  */
+-  if (phnum != 0)
+-    elf_flagelf (elf, ELF_C_SET, ELF_F_LAYOUT);
++  /* We maintain the layout of the allocated sections in the file:
++     https://github.com/rpm-software-management/rpm/issues/423  */
++  elf_flagelf (elf, ELF_C_SET, ELF_F_LAYOUT);
+ 
+   memset (dso, 0, sizeof(DSO));
+   dso->elf = elf;


             reply	other threads:[~2019-03-14 12:24 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-14 12:24 Michał Górny [this message]
  -- strict thread matches above, loose matches on Subject: below --
2019-06-20  8:01 [gentoo-commits] repo/gentoo:master commit in: dev-util/debugedit/files/, dev-util/debugedit/ Michał Górny
2019-09-08  6:43 Michał Górny
2021-09-03  6:53 Michał Górny
2022-02-02  6:14 Sam James
2022-07-18  0:26 Sam James
2023-09-18  9:01 Sam James
2024-01-28 15:35 Sam James

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1552566221.0e56e352403a2405a99465e68218e84a057933b4.mgorny@gentoo \
    --to=mgorny@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox