diff --git a/libbb/Kbuild.src b/libbb/Kbuild.src
index 458973f..73201a6 100644
--- a/libbb/Kbuild.src
+++ b/libbb/Kbuild.src
@@ -40,7 +40,6 @@
 lib-y += get_console.o
 lib-y += get_last_path_component.o
 lib-y += get_line_from_file.o
-lib-y += getopt32.o
 lib-y += getpty.o
 lib-y += get_volsize.o
 lib-y += herror_msg.o
diff --git a/libbb/getopt32.c b/libbb/getopt32.c
index 80f4cc0..129840c 100644
--- a/libbb/getopt32.c
+++ b/libbb/getopt32.c
@@ -6,12 +6,13 @@
  *
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
-
 #if ENABLE_LONG_OPTS || ENABLE_FEATURE_GETOPT_LONG
 # include <getopt.h>
 #endif
 #include "libbb.h"
 
+//kbuild:lib-y += getopt32.o
+
 /*      Documentation
 
 uint32_t
@@ -170,21 +171,6 @@
 
 Special characters:
 
- "-"    A group consisting of just a dash forces all arguments
-        to be treated as options, even if they have no leading dashes.
-        Next char in this case can't be a digit (0-9), use ':' or end of line.
-        Example:
-
-        opt_complementary = "-:w-x:x-w"; // "-w-x:x-w" would also work,
-        getopt32(argv, "wx");            // but is less readable
-
-        This makes it possible to use options without a dash (./program w x)
-        as well as with a dash (./program -x).
-
-        NB: getopt32() will leak a small amount of memory if you use
-        this option! Do not use it if there is a possibility of recursive
-        getopt32() calls.
-
  "--"   A double dash at the beginning of opt_complementary means the
         argv[1] string should always be treated as options, even if it isn't
         prefixed with a "-".  This is useful for special syntax in applets
@@ -373,8 +359,7 @@
 	int max_arg = -1;
 
 #define SHOW_USAGE_IF_ERROR     1
-#define ALL_ARGV_IS_OPTS        2
-#define FIRST_ARGV_IS_OPT       4
+#define FIRST_ARGV_IS_OPT       2
 
 	int spec_flgs = 0;
 
@@ -486,8 +471,7 @@
 				if (c == '-') {
 					spec_flgs |= FIRST_ARGV_IS_OPT;
 					s++;
-				} else
-					spec_flgs |= ALL_ARGV_IS_OPTS;
+				}
 			} else {
 				min_arg = c - '0';
 				s++;
@@ -551,9 +535,9 @@
 	opt_complementary = NULL;
 	va_end(p);
 
-	if (spec_flgs & (FIRST_ARGV_IS_OPT | ALL_ARGV_IS_OPTS)) {
+	if (spec_flgs & FIRST_ARGV_IS_OPT) {
 		pargv = argv + 1;
-		while (*pargv) {
+		if (*pargv) {
 			if (pargv[0][0] != '-' && pargv[0][0] != '\0') {
 				/* Can't use alloca: opts with params will
 				 * return pointers to stack!
@@ -563,9 +547,6 @@
 				strcpy(pp + 1, *pargv);
 				*pargv = pp;
 			}
-			if (!(spec_flgs & ALL_ARGV_IS_OPTS))
-				break;
-			pargv++;
 		}
 	}
 
diff --git a/libbb/getopt_allopts.c b/libbb/getopt_allopts.c
new file mode 100644
index 0000000..a67d2b7
--- /dev/null
+++ b/libbb/getopt_allopts.c
@@ -0,0 +1,27 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * Copyright (C) 2017 Denys Vlasenko
+ *
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
+ */
+#include "libbb.h"
+
+//kbuild:lib-y += getopt_allopts.o
+
+void FAST_FUNC make_all_argv_opts(char **argv)
+{
+	/* Note: we skip argv[0] */
+	while (*++argv) {
+		char *p;
+
+		if (argv[0][0] == '-')
+			continue;
+		/* Neither top nor ps care if "" arg turns into "-" */
+		/*if (argv[0][0] == '\0')
+			continue;*/
+		p = xmalloc(strlen(*argv) + 2);
+		*p = '-';
+		strcpy(p + 1, *argv);
+		*argv = p;
+	}
+}
