diff -Naur dhcpcd-9.4.0.orig/src/script.c dhcpcd-9.4.0/src/script.c
--- dhcpcd-9.4.0.orig/src/script.c	2020-12-28 18:29:20.000000000 +0530
+++ dhcpcd-9.4.0/src/script.c	2021-03-26 18:07:05.126455543 +0530
@@ -38,7 +38,9 @@
 #include <errno.h>
 #include <pwd.h>
 #include <signal.h>
+#if !defined (__UCLIBC__)
 #include <spawn.h>
+#endif
 #include <stdarg.h>
 #include <stdlib.h>
 #include <string.h>
@@ -89,8 +91,10 @@
 pid_t
 script_exec(char *const *argv, char *const *env)
 {
+#if !defined (__UCLIBC__)
 	pid_t pid = 0;
 	posix_spawnattr_t attr;
+#endif
 	int r;
 #ifdef USE_SIGNALS
 	size_t i;
@@ -99,7 +103,7 @@
 #else
 	UNUSED(ctx);
 #endif
-
+#if !defined (__UCLIBC__)
 	/* posix_spawn is a safe way of executing another image
 	 * and changing signals back to how they should be. */
 	if (posix_spawnattr_init(&attr) == -1)
@@ -123,7 +127,22 @@
 		return -1;
 	}
 	return pid;
-}
+#else
+	switch (fork()) {
+	case -1:
+ 		return -1;
+	case 0:
+		execve(argv[0], argv, env);
+		/* execve() returns only on error */
+		fprintf(stderr, "execve failed due to %s\n", strerror(errno));
+		/* not usually reached */
+               	exit(EXIT_FAILURE);
+	default: /* parent */
+		wait(&r);
+	}
+	return 0;
+#endif
+ }
 
 #ifdef INET
 static int
