summaryrefslogtreecommitdiff
path: root/dev-util/unifdef
diff options
context:
space:
mode:
Diffstat (limited to 'dev-util/unifdef')
-rw-r--r--dev-util/unifdef/Manifest2
-rw-r--r--dev-util/unifdef/files/unifdef-2.12-fortify.patch96
-rw-r--r--dev-util/unifdef/unifdef-2.12-r2.ebuild28
3 files changed, 126 insertions, 0 deletions
diff --git a/dev-util/unifdef/Manifest b/dev-util/unifdef/Manifest
index 7a3b06d9c754..aaef6bd2bb81 100644
--- a/dev-util/unifdef/Manifest
+++ b/dev-util/unifdef/Manifest
@@ -1,5 +1,7 @@
AUX unifdef-2.12-c23.patch 1822 BLAKE2B 9af6961cdded00053b6de12616c0a0ecbede675d8cb8c69dad8e392f83ad8cd0f175ca0e06ec113b8cd4194a829ba2a72254b1e2cfee1716fdccad722ee45b07 SHA512 688c10e6190e11ecd7db596cf906ef137dd2f00be478f784591e6553d5632c2690f607b9bcb1d598dbe6c965eecac7f716379033935dbc782696fc5322293871
+AUX unifdef-2.12-fortify.patch 13531 BLAKE2B fdd87b95feb58c9d88c9c610ee6bcb041e2d0547ee6b03fae9d461fbb9a82dca6960078435be5021ab4a45da3ca7a2a86d5b9668b1cab2b0f4052266fa5c2fc6 SHA512 dfe2eeca31d3136325fc48a826b38f976f01bec640e5abf18543976b7f2778f8a94829a1e064baff988095b1fdc713bed051a659a01f5d986abd08219e393bc1
AUX unifdef-2.12-tests.patch 677 BLAKE2B 67ea52814b0a993df4f639262332b462f62f38b257a28a97c2a0cc8cd115c41638cfec27ebe0ffab98e99787c8ee3700da33f4d5bed3fb8a3234a6741092a8b5 SHA512 ab8b6dbab6c4122a15551b881e715bd33dff9d500dfffee065851da983bc43331c2cdea56bee6a2b7b45f0b0847cf9c807430f497b1d83f5fb90e1dce83d09f5
DIST unifdef-2.12.tar.xz 66912 BLAKE2B c56069f92921f7a994c759d9cb1d271c1d8da0b5faf0acd84c2add13622e1240e4d3aea3fa4a9e082739cc1999bcacbf255dfeb0c5ec6a183e2a3e1bb599dbc4 SHA512 df78cf931989b5e604e68e0bf00490782d385a575b51584e4be44535b6bde5f9e2abff14510f8f426670d9f6f1abfb5768da5e108bdefd6c9d0c8356a05164b5
EBUILD unifdef-2.12-r1.ebuild 652 BLAKE2B 8c5e9995210b0681fc8be0e3b5a270d01724e16b78fef1d2553a8ff63f673ce6887af51c2dc19fc31e1c7a9a0d7024d0ee148a889e83a9aab170e8f48949ddb0 SHA512 09728079be68a1a11ae753d87571eb08561e063994c00a46bb6055aa44824c9510079425ff1efc3286562783a481810901c89aa20752fc65a4c06729ae22917c
+EBUILD unifdef-2.12-r2.ebuild 693 BLAKE2B d20058ded516c269a812ed5930d1a1964afff8009e088556c12feac74465de3db7253d546390effdfb9e58f3c6acaf12c640556c20173a1eb5789357726d4fcf SHA512 97b8dd4a2d058143abc054d9de2ceab3ad29aa32c21f0ad6301e591136683fbefbb8d11c07981a4996b95c149bad886b9396b2ed8d6a8331a43061b2a05a2788
MISC metadata.xml 246 BLAKE2B e371bdda99f18de9d4959b40af5e1f7db0bff64ab41b6dbc969b7164ea72e37dc2ad2bfff677d36b0bc3611aa8c13f7a37eca8794af46f545e906b2397576d23 SHA512 1b64b2fd4bfcaa4429bb6c99bc4006dd4151ca8a054469acd90f2035144caba993498ec8954b100b698972c3006915072be35358bb3454de59cf2928b4d08a2e
diff --git a/dev-util/unifdef/files/unifdef-2.12-fortify.patch b/dev-util/unifdef/files/unifdef-2.12-fortify.patch
new file mode 100644
index 000000000000..1974aaae7e39
--- /dev/null
+++ b/dev-util/unifdef/files/unifdef-2.12-fortify.patch
@@ -0,0 +1,96 @@
+https://bugs.gentoo.org/836698
+https://gcc.gnu.org/PR120205
+https://github.com/fanf2/unifdef/pull/15
+
+From 9791614057fe7fc72babd78708fdd07857fef9cf Mon Sep 17 00:00:00 2001
+From: Martin Liska <mliska@suse.cz>
+Date: Wed, 10 Aug 2022 10:06:55 +0200
+Subject: [PATCH] Fix fgets(..., size=1)
+
+I noticed the following 2 tests are failing with -O1
+-D_FORTIFY_SOURCE=1:
+
+[ 44s] FAILED: whitespace-1.out: unifdef -DFOO whitespace.c
+[ 44s] FAILED: whitespace-2.out: unifdef -DBAR whitespace.c
+
+It's caused by fact that:
+
+fgets returns '\0' if n == 1:
+
+char *
+_IO_fgets (char *buf, int n, FILE *fp)
+{
+ size_t count;
+ char *result;
+ int old_error;
+ CHECK_FILE (fp, NULL);
+ if (n <= 0)
+ return NULL;
+ if (__glibc_unlikely (n == 1))
+ {
+ /* Another irregular case: since we have to store a NUL byte and
+ there is only room for exactly one byte, we don't have to
+ read anything. */
+ buf[0] = '\0';
+ return buf;
+ }
+---
+ tests/whitespace-1.experr | 2 --
+ tests/whitespace-1.expout | 5 +++++
+ tests/whitespace-1.exprc | 2 +-
+ tests/whitespace-2.expout | 3 ++-
+ unifdef.c | 3 ++-
+ 5 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/tests/whitespace-1.experr b/tests/whitespace-1.experr
+index cb23fce..e69de29 100644
+--- a/tests/whitespace-1.experr
++++ b/tests/whitespace-1.experr
+@@ -1,2 +0,0 @@
+-unifdef: whitespace.c: 4: Obfuscated preprocessor control line (#if line 1 depth 1)
+-unifdef: Output may be truncated
+diff --git a/tests/whitespace-1.expout b/tests/whitespace-1.expout
+index 257cc56..14dd150 100644
+--- a/tests/whitespace-1.expout
++++ b/tests/whitespace-1.expout
+@@ -1 +1,6 @@
+ foo
++ //spong
++
++#ifdef BAR
++bar
++#endif
+diff --git a/tests/whitespace-1.exprc b/tests/whitespace-1.exprc
+index 0cfbf08..d00491f 100644
+--- a/tests/whitespace-1.exprc
++++ b/tests/whitespace-1.exprc
+@@ -1 +1 @@
+-2
++1
+diff --git a/tests/whitespace-2.expout b/tests/whitespace-2.expout
+index 84cabfe..43f6399 100644
+--- a/tests/whitespace-2.expout
++++ b/tests/whitespace-2.expout
+@@ -1,5 +1,6 @@
+ #ifdef FOO
+ foo
+-#endif //spong
++#endif
++ //spong
+
+ bar
+diff --git a/unifdef.c b/unifdef.c
+index dc145a2..b7335aa 100644
+--- a/unifdef.c
++++ b/unifdef.c
+@@ -846,7 +846,8 @@ parseline(void)
+ newline or if there is too much whitespace in a directive */
+ if (linestate == LS_HASH) {
+ long len = cp - tline;
+- if (fgets(tline + len, MAXLINE - len, input) == NULL) {
++ const char *line = fgets(tline + len, MAXLINE - len, input);
++ if (line == NULL || *line == '\0') {
+ if (ferror(input))
+ err(2, "can't read %s", filename);
+ debug("parser insert newline at EOF", linenum);
+
diff --git a/dev-util/unifdef/unifdef-2.12-r2.ebuild b/dev-util/unifdef/unifdef-2.12-r2.ebuild
new file mode 100644
index 000000000000..7a54bf93f918
--- /dev/null
+++ b/dev-util/unifdef/unifdef-2.12-r2.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+DESCRIPTION="remove #ifdef'ed lines from a file while otherwise leaving the file alone"
+HOMEPAGE="https://dotat.at/prog/unifdef/"
+SRC_URI="https://dotat.at/prog/unifdef/${P}.tar.xz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-tests.patch
+ "${FILESDIR}"/${P}-c23.patch
+ "${FILESDIR}"/${P}-fortify.patch
+)
+
+DOCS=( README )
+
+src_prepare() {
+ sed -i "/^prefix/s:=.*:=${EPREFIX}/usr:" Makefile || die
+ tc-export CC
+ default
+}