mirror of
https://anongit.gentoo.org/git/repo/gentoo.git
synced 2025-06-11 07:44:12 +02:00
245 lines
4.6 KiB
Diff
245 lines
4.6 KiB
Diff
Patch emailed to upstream.
|
|
|
|
From 216e770ced47ad0017cd43033ef213c2634fe87a Mon Sep 17 00:00:00 2001
|
|
From: Sam James <sam@gentoo.org>
|
|
Date: Tue, 6 Dec 2022 08:53:14 +0000
|
|
Subject: [PATCH] sgmls-1.1: fix configure script with Clang 16
|
|
|
|
Clang 16 makes -Wimplicit-function-declaration and -Wimplicit-int errors by default.
|
|
|
|
Unfortunately, this can lead to misconfiguration or miscompilation of software as configure
|
|
tests may then return the wrong result. In this case, it led to a build failure
|
|
(see https://bugs.gentoo.org/883203).
|
|
|
|
We also fix -Wstrict-prototypes while here as it's easy to do and it prepares
|
|
us for C23.
|
|
|
|
For more information, see LWN.net [0] or LLVM's Discourse [1], the Gentoo wiki [2],
|
|
or the (new) c-std-porting mailing list [3].
|
|
|
|
[0] https://lwn.net/Articles/913505/
|
|
[1] https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213
|
|
[2] https://wiki.gentoo.org/wiki/Modern_C_porting
|
|
[3] hosted at lists.linux.dev.
|
|
|
|
Bug: https://bugs.gentoo.org/883203
|
|
Signed-off-by: Sam James <sam@gentoo.org>
|
|
--- a/sgmls-1.1/configure
|
|
+++ b/sgmls-1.1/configure
|
|
@@ -110,13 +110,14 @@ cat >doit.c <<\EOF
|
|
|
|
#include <ctype.h>
|
|
#include <signal.h>
|
|
+#include <stdlib.h>
|
|
|
|
-static int whoops()
|
|
+static void whoops(int signal)
|
|
{
|
|
_exit(1);
|
|
}
|
|
|
|
-main()
|
|
+int main(void)
|
|
{
|
|
int c;
|
|
#ifdef isascii
|
|
@@ -213,9 +214,9 @@ else
|
|
fi
|
|
|
|
cat >doit.c <<\EOF
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+#include <stdio.h>
|
|
+#include <stdlib.h>
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0)
|
|
remove("foo");
|
|
@@ -231,9 +232,9 @@ else
|
|
fi
|
|
|
|
cat >doit.c <<\EOF
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+#include <unistd.h>
|
|
+#include <stdlib.h>
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0)
|
|
getopt(argc, argv, "v");
|
|
@@ -249,9 +250,9 @@ else
|
|
fi
|
|
|
|
cat >doit.c <<\EOF
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+#include <stdlib.h>
|
|
+#include <unistd.h>
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0)
|
|
access("foo", 4);
|
|
@@ -267,9 +268,9 @@ else
|
|
fi
|
|
|
|
cat >doit.c <<\EOF
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+#include <stdlib.h>
|
|
+#include <unistd.h>
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0)
|
|
vfork();
|
|
@@ -285,9 +286,9 @@ else
|
|
fi
|
|
|
|
cat >doit.c <<\EOF
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+#include <stdlib.h>
|
|
+#include <sys/wait.h>
|
|
+int main(int argc, char **argv)
|
|
{
|
|
|
|
if (argc == 0) {
|
|
@@ -306,10 +307,9 @@ else
|
|
fi
|
|
|
|
cat >doit.c <<\EOF
|
|
+#include <stdlib.h>
|
|
#include <string.h>
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0)
|
|
strerror(0);
|
|
@@ -326,9 +326,8 @@ fi
|
|
|
|
cat >doit.c <<\EOF
|
|
#include <strings.h>
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+#include <stdlib.h>
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0)
|
|
bcopy((char *)0, (char *)0, 0);
|
|
@@ -340,10 +339,9 @@ if $CC $CFLAGS -o doit doit.c $LIBS >/dev/null 2>&1 && ./doit 2>/dev/null
|
|
then
|
|
# Only use BSD_STRINGS if ANSI string functions don't work.
|
|
cat >doit.c <<\EOF
|
|
+#include <stdlib.h>
|
|
#include <string.h>
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0)
|
|
memcpy((char *)0, (char *)0, 0);
|
|
@@ -363,9 +361,8 @@ fi
|
|
|
|
cat >doit.c <<\EOF
|
|
#include <signal.h>
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+#include <stdlib.h>
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0)
|
|
raise(SIGINT);
|
|
@@ -382,9 +379,8 @@ fi
|
|
|
|
cat >doit.c <<\EOF
|
|
#include <stdio.h>
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+#include <stdlib.h>
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0) {
|
|
fpos_t pos;
|
|
@@ -404,12 +400,11 @@ fi
|
|
|
|
cat >doit.c <<\EOF
|
|
#include <unistd.h>
|
|
+#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <sys/wait.h>
|
|
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0) {
|
|
pid_t pid;
|
|
@@ -436,14 +431,15 @@ fi
|
|
|
|
cat >doit.c <<\EOF
|
|
#include <stdio.h>
|
|
+#include <stdlib.h>
|
|
#include <signal.h>
|
|
|
|
-static int whoops()
|
|
+static void whoops(int signal)
|
|
{
|
|
_exit(1);
|
|
}
|
|
|
|
-main()
|
|
+int main(void)
|
|
{
|
|
char buf[30];
|
|
#ifdef SIGSEGV
|
|
@@ -469,10 +465,9 @@ fi
|
|
|
|
cat >doit.c <<\EOF
|
|
#include <nl_types.h>
|
|
+#include <stdlib.h>
|
|
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+int main(int argc, char **argv)
|
|
{
|
|
if (argc == 0) {
|
|
nl_catd d = catopen("foo", 0);
|
|
@@ -492,12 +487,11 @@ fi
|
|
|
|
cat >doit.c <<\EOF
|
|
#include <limits.h>
|
|
+#include <stdlib.h>
|
|
|
|
char c = UCHAR_MAX;
|
|
|
|
-main(argc, argv)
|
|
-int argc;
|
|
-char **argv;
|
|
+int main(int argc, char **argv)
|
|
{
|
|
#if CHAR_MIN < 0
|
|
exit(!(c < 0));
|
|
@@ -512,7 +506,8 @@ then
|
|
char_signed=
|
|
else
|
|
cat >doit.c <<\EOF
|
|
-main()
|
|
+#include <stdlib.h>
|
|
+int main(void)
|
|
{
|
|
int i;
|
|
|
|
--
|
|
2.38.1
|