summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app-arch/lbzip2/files/lbzip2-2.5_p20181227-fix-unaligned.patch33
-rw-r--r--app-arch/lbzip2/lbzip2-2.5_p20181227-r1.ebuild (renamed from app-arch/lbzip2/lbzip2-2.5_p20181227.ebuild)9
2 files changed, 34 insertions, 8 deletions
diff --git a/app-arch/lbzip2/files/lbzip2-2.5_p20181227-fix-unaligned.patch b/app-arch/lbzip2/files/lbzip2-2.5_p20181227-fix-unaligned.patch
new file mode 100644
index 000000000000..c23d1afc4ca5
--- /dev/null
+++ b/app-arch/lbzip2/files/lbzip2-2.5_p20181227-fix-unaligned.patch
@@ -0,0 +1,33 @@
+https://github.com/kjn/lbzip2/pull/25
+
+From d570020ade2add591b97e61927545a005a2d4a6f Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Wed, 7 Aug 2019 11:47:04 -0700
+Subject: [PATCH] Align zero-length array to avoid unaligned accesses
+
+When make_tree() creates the left-justified base table (uint64_t *B)
+it does so with 64-bit stores:
+
+ B[k] = sofar;
+
+But B points to memory in the zero-length array "uint32_t tt[0]" at the
+end of struct decoder_state. Since tt's type is uint32_t, it is only
+aligned to a four byte boundary, and so the 64-bit store in make_tree()
+causes an unaligned trap on strict platforms like sparc.
+---
+ src/decode.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/decode.h b/src/decode.h
+index c9a9086..7c0ca3f 100644
+--- a/src/decode.h
++++ b/src/decode.h
+@@ -62,7 +62,7 @@ struct decoder_state {
+ uint8_t rle_char; /* current character */
+ uint8_t rle_prev; /* prevoius character */
+
+- uint32_t tt[0];
++ uint32_t tt[0] __attribute__((aligned (8)));
+ };
+
+
diff --git a/app-arch/lbzip2/lbzip2-2.5_p20181227.ebuild b/app-arch/lbzip2/lbzip2-2.5_p20181227-r1.ebuild
index 04fa9267b153..7dc8fcd267ff 100644
--- a/app-arch/lbzip2/lbzip2-2.5_p20181227.ebuild
+++ b/app-arch/lbzip2/lbzip2-2.5_p20181227-r1.ebuild
@@ -3,8 +3,6 @@
EAPI="7"
-inherit autotools
-
DESCRIPTION="Parallel bzip2 utility"
HOMEPAGE="https://github.com/kjn/lbzip2/"
SRC_URI="https://dev.gentoo.org/~whissi/dist/${PN}/${P}.tar.gz"
@@ -19,14 +17,9 @@ DEPEND=""
PATCHES=(
"${FILESDIR}"/${PN}-2.3-s_isreg.patch
+ "${FILESDIR}"/${P}-fix-unaligned.patch
)
-src_prepare() {
- default
-
- eautoreconf
-}
-
src_configure() {
local myeconfargs=(
--disable-silent-rules