summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToomas Soome <tsoome@me.com>2020-09-16 22:45:34 +0300
committerToomas Soome <tsoome@me.com>2020-09-25 20:34:45 +0300
commit28de4f3c3209c81f9a96e2019d44a0b9adcb74cb (patch)
tree4ef303f9cfefbd28622d901f115d8f3e717ab886
parent3e1c5f3a80260eb14c78730bcaca9e6c74f528a0 (diff)
downloadillumos-joyent-28de4f3c3209c81f9a96e2019d44a0b9adcb74cb.tar.gz
13173 loader: add strtoul, strtoull, memmem and abort
Reviewed by: Robert Mustacchi <rm+illumos@fingolfin.org> Reviewed by: Andy Fiddaman <andy@omniosce.org> Approved by: Dan McDonald <danmcd@joyent.com>
-rw-r--r--usr/src/boot/Makefile.version2
-rw-r--r--usr/src/boot/lib/libstand/Makefile.inc9
-rw-r--r--usr/src/boot/lib/libstand/abort.c34
-rw-r--r--usr/src/boot/lib/libstand/stand.h10
-rw-r--r--usr/src/boot/lib/libstand/strtol.c124
-rw-r--r--usr/src/boot/lib/libstand/strtoul.c121
-rw-r--r--usr/src/boot/sys/boot/libstand/Makefile.com3
-rw-r--r--usr/src/common/util/explicit_bzero.c (renamed from usr/src/lib/libc/port/gen/explicit_bzero.c)0
-rw-r--r--usr/src/common/util/memmem.c (renamed from usr/src/lib/libc/port/gen/memmem.c)0
-rw-r--r--usr/src/common/util/strtol.c22
-rw-r--r--usr/src/common/util/strtoll.c24
-rw-r--r--usr/src/common/util/strtoul.c24
-rw-r--r--usr/src/common/util/strtoull.c26
-rw-r--r--usr/src/lib/libc/amd64/Makefile4
-rw-r--r--usr/src/lib/libc/i386/Makefile.com4
-rw-r--r--usr/src/lib/libc/sparc/Makefile.com4
-rw-r--r--usr/src/lib/libc/sparcv9/Makefile.com4
17 files changed, 122 insertions, 293 deletions
diff --git a/usr/src/boot/Makefile.version b/usr/src/boot/Makefile.version
index 1df520dd7d..8644947a6e 100644
--- a/usr/src/boot/Makefile.version
+++ b/usr/src/boot/Makefile.version
@@ -33,4 +33,4 @@ LOADER_VERSION = 1.1
# Use date like formatting here, YYYY.MM.DD.XX, without leading zeroes.
# The version is processed from left to right, the version number can only
# be increased.
-BOOT_VERSION = $(LOADER_VERSION)-2020.09.17.1
+BOOT_VERSION = $(LOADER_VERSION)-2020.09.24.1
diff --git a/usr/src/boot/lib/libstand/Makefile.inc b/usr/src/boot/lib/libstand/Makefile.inc
index 00c1e34664..633005d142 100644
--- a/usr/src/boot/lib/libstand/Makefile.inc
+++ b/usr/src/boot/lib/libstand/Makefile.inc
@@ -22,16 +22,15 @@
# standalone components and stuff we have modified locally
SRCS= $(ZLIB)/gzguts.h $(ZLIB)/zutil.h
-SRCS += $(SASRC)/__main.c $(SASRC)/assert.c
+SRCS += $(SASRC)/__main.c $(SASRC)/abort.c $(SASRC)/assert.c
SRCS += $(SASRC)/bcd.c $(SASRC)/environment.c
-SRCS += $(SASRC)/getopt.c $(SASRC)/strtol.c
-SRCS += $(SASRC)/strtoul.c $(SASRC)/random.c
+SRCS += $(SASRC)/getopt.c $(SASRC)/random.c
SRCS += $(SASRC)/sbrk.c $(SASRC)/twiddle.c
SRCS += $(SASRC)/zalloc.c $(SASRC)/zalloc_malloc.c
-OBJS= __main.o assert.o bcd.o environment.o \
+OBJS= __main.o abort.o assert.o bcd.o environment.o \
getopt.o gets.o globals.o pager.o panic.o printf.o \
- strdup.o strerror.o strtol.o strtoul.o random.o \
+ strdup.o strerror.o strtol.o strtoll.o strtoul.o strtoull.o random.o \
sbrk.o twiddle.o zalloc.o zalloc_malloc.o
# private (pruned) versions of libc string functions
diff --git a/usr/src/boot/lib/libstand/abort.c b/usr/src/boot/lib/libstand/abort.c
new file mode 100644
index 0000000000..663555a333
--- /dev/null
+++ b/usr/src/boot/lib/libstand/abort.c
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2018 Netflix, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+
+#include <stand.h>
+
+void
+abort(void)
+{
+ panic("Bootloader aborted by abort");
+}
diff --git a/usr/src/boot/lib/libstand/stand.h b/usr/src/boot/lib/libstand/stand.h
index 6526eb6d76..1af513b5fa 100644
--- a/usr/src/boot/lib/libstand/stand.h
+++ b/usr/src/boot/lib/libstand/stand.h
@@ -298,9 +298,6 @@ extern struct dirent *readdirfd(int);
extern void srandom(ulong_t seed);
extern ulong_t random(void);
-/* imports from stdlib, locally modified */
-extern long strtol(const char *, char **, int);
-extern unsigned long strtoul(const char *, char **, int);
extern char *optarg; /* getopt(3) external variables */
extern int optind, opterr, optopt, optreset;
extern int getopt(int, char * const [], const char *);
@@ -354,6 +351,13 @@ extern int unsetenv(const char *name);
extern ev_sethook_t env_noset; /* refuse set operation */
extern ev_unsethook_t env_nounset; /* refuse unset operation */
+/* stdlib.h routines */
+extern long strtol(const char *__restrict, char **__restrict, int);
+extern long long strtoll(const char *__restrict, char **__restrict, int);
+extern unsigned long strtoul(const char *__restrict, char **__restrict, int);
+extern unsigned long long strtoull(const char *__restrict, char **__restrict,
+ int);
+
/* BCD conversions (undocumented) */
extern uchar_t const bcd2bin_data[];
extern uchar_t const bin2bcd_data[];
diff --git a/usr/src/boot/lib/libstand/strtol.c b/usr/src/boot/lib/libstand/strtol.c
deleted file mode 100644
index 20a1d2f08f..0000000000
--- a/usr/src/boot/lib/libstand/strtol.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-
-#include "stand.h"
-#include <limits.h>
-
-/*
- * Convert a string to a long integer.
- *
- * Ignores `locale' stuff. Assumes that the upper and lower case
- * alphabets and digits are each contiguous.
- */
-long
-strtol(const char *nptr, char **endptr, int base)
-{
- const char *s;
- unsigned long acc;
- unsigned char c;
- unsigned long cutoff;
- int neg = 0, any, cutlim;
-
- /* Be sensible about NULL strings */
- if (nptr == NULL)
- nptr = "";
- s = nptr;
-
- /*
- * Skip white space and pick up leading +/- sign if any.
- * If base is 0, allow 0x for hex and 0 for octal, else
- * assume decimal; if base is already 16, allow 0x.
- */
- do {
- c = *s++;
- } while (isspace(c));
- if (c == '-') {
- neg = 1;
- c = *s++;
- } else if (c == '+')
- c = *s++;
- if ((base == 0 || base == 16) &&
- c == '0' && (*s == 'x' || *s == 'X')) {
- c = s[1];
- s += 2;
- base = 16;
- }
- if (base == 0)
- base = c == '0' ? 8 : 10;
-
- /*
- * Compute the cutoff value between legal numbers and illegal
- * numbers. That is the largest legal value, divided by the
- * base. An input number that is greater than this value, if
- * followed by a legal input character, is too big. One that
- * is equal to this value may be valid or not; the limit
- * between valid and invalid numbers is then based on the last
- * digit. For instance, if the range for longs is
- * [-2147483648..2147483647] and the input base is 10,
- * cutoff will be set to 214748364 and cutlim to either
- * 7 (neg==0) or 8 (neg==1), meaning that if we have accumulated
- * a value > 214748364, or equal but the next digit is > 7 (or 8),
- * the number is too big, and we will return a range error.
- *
- * Set any if any `digits' consumed; make it negative to indicate
- * overflow.
- */
- cutoff = neg ? -(unsigned long)LONG_MIN : LONG_MAX;
- cutlim = cutoff % (unsigned long)base;
- cutoff /= (unsigned long)base;
- for (acc = 0, any = 0; ; c = *s++) {
- if (!isascii(c))
- break;
- if (isdigit(c))
- c -= '0';
- else if (isalpha(c))
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- else
- break;
- if (c >= base)
- break;
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- any = -1;
- else {
- any = 1;
- acc *= base;
- acc += c;
- }
- }
- if (any < 0) {
- acc = neg ? LONG_MIN : LONG_MAX;
- errno = ERANGE;
- } else if (neg)
- acc = -acc;
- if (endptr != NULL)
- *endptr = (char *)(any ? s - 1 : nptr);
- return (acc);
-}
diff --git a/usr/src/boot/lib/libstand/strtoul.c b/usr/src/boot/lib/libstand/strtoul.c
deleted file mode 100644
index 0c7147c2ab..0000000000
--- a/usr/src/boot/lib/libstand/strtoul.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Copyright (c) 2011 The FreeBSD Foundation
- * All rights reserved.
- * Portions of this software were developed by David Chisnall
- * under sponsorship from the FreeBSD Foundation.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if defined(LIBC_SCCS) && !defined(lint)
-static char sccsid[] = "@(#)strtoul.c 8.1 (Berkeley) 6/4/93";
-#endif /* LIBC_SCCS and not lint */
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "stand.h"
-#include <limits.h>
-
-/*
- * Convert a string to an unsigned long integer.
- *
- * Assumes that the upper and lower case
- * alphabets and digits are each contiguous.
- */
-unsigned long
-strtoul(const char * __restrict nptr, char ** __restrict endptr, int base)
-{
- const char *s;
- unsigned long acc;
- char c;
- unsigned long cutoff;
- int neg, any, cutlim;
-
- /*
- * See strtol for comments as to the logic used.
- */
- s = nptr;
- do {
- c = *s++;
- } while (isspace((unsigned char)c));
- if (c == '-') {
- neg = 1;
- c = *s++;
- } else {
- neg = 0;
- if (c == '+')
- c = *s++;
- }
- if ((base == 0 || base == 16) &&
- c == '0' && (*s == 'x' || *s == 'X') &&
- ((s[1] >= '0' && s[1] <= '9') ||
- (s[1] >= 'A' && s[1] <= 'F') ||
- (s[1] >= 'a' && s[1] <= 'f'))) {
- c = s[1];
- s += 2;
- base = 16;
- }
- if (base == 0)
- base = c == '0' ? 8 : 10;
- acc = any = 0;
- if (base < 2 || base > 36)
- goto noconv;
-
- cutoff = ULONG_MAX / base;
- cutlim = ULONG_MAX % base;
- for ( ; ; c = *s++) {
- if (c >= '0' && c <= '9')
- c -= '0';
- else if (c >= 'A' && c <= 'Z')
- c -= 'A' - 10;
- else if (c >= 'a' && c <= 'z')
- c -= 'a' - 10;
- else
- break;
- if (c >= base)
- break;
- if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
- any = -1;
- else {
- any = 1;
- acc *= base;
- acc += c;
- }
- }
- if (any < 0) {
- acc = ULONG_MAX;
- errno = ERANGE;
- } else if (!any) {
-noconv:
- errno = EINVAL;
- } else if (neg)
- acc = -acc;
- if (endptr != NULL)
- *endptr = (char *)(any ? s - 1 : nptr);
- return (acc);
-}
diff --git a/usr/src/boot/sys/boot/libstand/Makefile.com b/usr/src/boot/sys/boot/libstand/Makefile.com
index 5159856528..f796b31626 100644
--- a/usr/src/boot/sys/boot/libstand/Makefile.com
+++ b/usr/src/boot/sys/boot/libstand/Makefile.com
@@ -28,6 +28,7 @@ include $(ZFSSRC)/Makefile.inc
LIBCSRC= $(SRC)/lib/libc
OBJS += explicit_bzero.o
+OBJS += memmem.o
CPPFLAGS += -I$(SRC)/uts/common
@@ -70,5 +71,5 @@ x86:
%.o: $(LZ4)/%.c
$(COMPILE.c) $<
-%.o: $(LIBCSRC)/port/gen/%.c
+%.o: $(SRC)/common/util/%.c
$(COMPILE.c) $<
diff --git a/usr/src/lib/libc/port/gen/explicit_bzero.c b/usr/src/common/util/explicit_bzero.c
index bcc7fa3f88..bcc7fa3f88 100644
--- a/usr/src/lib/libc/port/gen/explicit_bzero.c
+++ b/usr/src/common/util/explicit_bzero.c
diff --git a/usr/src/lib/libc/port/gen/memmem.c b/usr/src/common/util/memmem.c
index a0f396e7c4..a0f396e7c4 100644
--- a/usr/src/lib/libc/port/gen/memmem.c
+++ b/usr/src/common/util/memmem.c
diff --git a/usr/src/common/util/strtol.c b/usr/src/common/util/strtol.c
index e46e86b7d1..aeed49ca83 100644
--- a/usr/src/common/util/strtol.c
+++ b/usr/src/common/util/strtol.c
@@ -29,18 +29,25 @@
*/
/* Copyright (c) 1988 AT&T */
-/* All Rights Reserved */
+/* All Rights Reserved */
#if defined(_KERNEL) && !defined(_BOOT)
+#include <sys/null.h>
#include <sys/errno.h>
#else /* _KERNEL && !_BOOT */
-#if !defined(_BOOT) && !defined(_KMDB)
+#if !defined(_BOOT) && !defined(_KMDB) && !defined(_STANDALONE)
#include "lint.h"
-#endif /* !_BOOT && !_KMDB */
+#endif /* !_BOOT && !_KMDB && !_STANDALONE */
+#if defined(_STANDALONE)
+#include <sys/cdefs.h>
+#include <stand.h>
+#include <limits.h>
+#else
#include <errno.h>
#include <ctype.h>
#include <limits.h>
#include <stdlib.h>
+#endif /* _STANDALONE */
#endif /* _KERNEL && !_BOOT */
#include "strtolctype.h"
#include <sys/types.h>
@@ -62,7 +69,7 @@ strtol(const char *str, char **nptr, int base)
const char **ptr = (const char **)nptr;
const unsigned char *ustr = (const unsigned char *)str;
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr; /* in case no number is formed */
if (base < 0 || base > MBASE || base == 1) {
/* base is invalid -- should be a fatal error */
@@ -84,13 +91,14 @@ strtol(const char *str, char **nptr, int base)
c = *++ustr;
}
}
- if (base == 0)
+ if (base == 0) {
if (c != '0')
base = 10;
else if (ustr[1] == 'x' || ustr[1] == 'X')
base = 16;
else
base = 8;
+ }
/*
* for any base > 10, the digits incrementally following
* 9 are assumed to be "abc...z" or "ABC...Z"
@@ -125,7 +133,7 @@ strtol(const char *str, char **nptr, int base)
val -= xx;
c = *++ustr;
}
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr;
#if defined(_KERNEL) && !defined(_BOOT)
*result = neg ? val : -val;
@@ -137,7 +145,7 @@ strtol(const char *str, char **nptr, int base)
overflow:
for (c = *++ustr; lisalnum(c) && (xx = DIGIT(c)) < base; (c = *++ustr))
;
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr;
#if defined(_KERNEL) && !defined(_BOOT)
return (ERANGE);
diff --git a/usr/src/common/util/strtoll.c b/usr/src/common/util/strtoll.c
index 6e654c9ed5..05dcdd56da 100644
--- a/usr/src/common/util/strtoll.c
+++ b/usr/src/common/util/strtoll.c
@@ -25,18 +25,27 @@
*/
/* Copyright (c) 1988 AT&T */
-/* All Rights Reserved */
+/* All Rights Reserved */
#if defined(_KERNEL) && !defined(_BOOT)
+#include <sys/null.h>
#include <sys/errno.h>
#else /* _KERNEL && !_BOOT */
-#if !defined(_BOOT) && !defined(_KMDB)
+#if !defined(_BOOT) && !defined(_KMDB) && !defined(_STANDALONE)
#include "lint.h"
-#endif /* !_BOOT && !_KMDB */
+#endif /* !_BOOT && !_KMDB && !_STANDALONE */
+#if defined(_STANDALONE)
+#include <sys/cdefs.h>
+#include <stand.h>
+#include <limits.h>
+
+typedef long long longlong_t;
+#else
#include <errno.h>
#include <ctype.h>
#include <limits.h>
#include <stdlib.h>
+#endif /* _STANDALONE */
#endif /* _KERNEL && !_BOOT */
#include "strtolctype.h"
#include <sys/types.h>
@@ -58,7 +67,7 @@ strtoll(const char *str, char **nptr, int base)
const char **ptr = (const char **)nptr;
const unsigned char *ustr = (const unsigned char *)str;
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr; /* in case no number is formed */
if (base < 0 || base > MBASE || base == 1) {
/* base is invalid -- should be a fatal error */
@@ -80,13 +89,14 @@ strtoll(const char *str, char **nptr, int base)
c = *++ustr;
}
}
- if (base == 0)
+ if (base == 0) {
if (c != '0')
base = 10;
else if (ustr[1] == 'x' || ustr[1] == 'X')
base = 16;
else
base = 8;
+ }
/*
* for any base > 10, the digits incrementally following
* 9 are assumed to be "abc...z" or "ABC...Z"
@@ -120,7 +130,7 @@ strtoll(const char *str, char **nptr, int base)
val -= xx;
c = *++ustr;
}
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr;
#if defined(_KERNEL) && !defined(_BOOT)
*result = neg ? val : -val;
@@ -132,7 +142,7 @@ strtoll(const char *str, char **nptr, int base)
overflow:
for (c = *++ustr; lisalnum(c) && (xx = DIGIT(c)) < base; (c = *++ustr))
;
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr;
#if defined(_KERNEL) && !defined(_BOOT)
return (ERANGE);
diff --git a/usr/src/common/util/strtoul.c b/usr/src/common/util/strtoul.c
index 3b1eff90c1..f890afc262 100644
--- a/usr/src/common/util/strtoul.c
+++ b/usr/src/common/util/strtoul.c
@@ -25,18 +25,25 @@
*/
/* Copyright (c) 1988 AT&T */
-/* All Rights Reserved */
+/* All Rights Reserved */
#if defined(_KERNEL) && !defined(_BOOT)
+#include <sys/null.h>
#include <sys/errno.h>
#else /* _KERNEL && !_BOOT */
-#if !defined(_BOOT) && !defined(_KMDB)
+#if !defined(_BOOT) && !defined(_KMDB) && !defined(_STANDALONE)
#include "lint.h"
-#endif /* !_BOOT && !_KMDB */
+#endif /* !_BOOT && !_KMDB && !_STANDALONE */
+#if defined(_STANDALONE)
+#include <sys/cdefs.h>
+#include <stand.h>
+#include <limits.h>
+#else
#include <errno.h>
#include <ctype.h>
#include <limits.h>
#include <stdlib.h>
+#endif /* _STANDALONE */
#endif /* _KERNEL && !_BOOT */
#include "strtolctype.h"
#include <sys/types.h>
@@ -57,7 +64,7 @@ strtoul(const char *str, char **nptr, int base)
const char **ptr = (const char **)nptr;
const unsigned char *ustr = (const unsigned char *)str;
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr; /* in case no number is formed */
if (base < 0 || base > MBASE || base == 1) {
/* base is invalid -- should be a fatal error */
@@ -79,13 +86,14 @@ strtoul(const char *str, char **nptr, int base)
c = *++ustr;
}
}
- if (base == 0)
+ if (base == 0) {
if (c != '0')
base = 10;
else if (ustr[1] == 'x' || ustr[1] == 'X')
base = 16;
else
base = 8;
+ }
/*
* for any base > 10, the digits incrementally following
* 9 are assumed to be "abc...z" or "ABC...Z"
@@ -108,12 +116,12 @@ strtoul(const char *str, char **nptr, int base)
if (val > multmax)
goto overflow;
val *= base;
- if (ULONG_MAX - val < xx)
+ if (ULONG_MAX - val < (unsigned long)xx)
goto overflow;
val += xx;
c = *++ustr;
}
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr;
#if defined(_KERNEL) && !defined(_BOOT)
*result = neg ? -val : val;
@@ -125,7 +133,7 @@ strtoul(const char *str, char **nptr, int base)
overflow:
for (c = *++ustr; lisalnum(c) && (xx = DIGIT(c)) < base; (c = *++ustr))
;
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr;
#if defined(_KERNEL) && !defined(_BOOT)
return (ERANGE);
diff --git a/usr/src/common/util/strtoull.c b/usr/src/common/util/strtoull.c
index ca7713d524..4a415f37d2 100644
--- a/usr/src/common/util/strtoull.c
+++ b/usr/src/common/util/strtoull.c
@@ -25,18 +25,27 @@
*/
/* Copyright (c) 1988 AT&T */
-/* All Rights Reserved */
+/* All Rights Reserved */
#if defined(_KERNEL) && !defined(_BOOT)
+#include <sys/null.h>
#include <sys/errno.h>
#else /* _KERNEL && !_BOOT */
-#if !defined(_BOOT) && !defined(_KMDB)
+#if !defined(_BOOT) && !defined(_KMDB) && !defined(_STANDALONE)
#include "lint.h"
-#endif /* !_BOOT && !_KMDB */
+#endif /* !_BOOT && !_KMDB && !_STANDALONE */
+#if defined(_STANDALONE)
+#include <sys/cdefs.h>
+#include <stand.h>
+#include <limits.h>
+
+typedef unsigned long long u_longlong_t;
+#else
#include <errno.h>
#include <ctype.h>
#include <limits.h>
#include <stdlib.h>
+#endif /* _STANDALONE */
#endif /* _KERNEL && !_BOOT */
#include "strtolctype.h"
#include <sys/types.h>
@@ -57,7 +66,7 @@ strtoull(const char *str, char **nptr, int base)
const char **ptr = (const char **)nptr;
const unsigned char *ustr = (const unsigned char *)str;
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr; /* in case no number is formed */
if (base < 0 || base > MBASE || base == 1) {
/* base is invalid -- should be a fatal error */
@@ -79,13 +88,14 @@ strtoull(const char *str, char **nptr, int base)
c = *++ustr;
}
}
- if (base == 0)
+ if (base == 0) {
if (c != '0')
base = 10;
else if (ustr[1] == 'x' || ustr[1] == 'X')
base = 16;
else
base = 8;
+ }
/*
* for any base > 10, the digits incrementally following
* 9 are assumed to be "abc...z" or "ABC...Z"
@@ -108,12 +118,12 @@ strtoull(const char *str, char **nptr, int base)
if (val > multmax)
goto overflow;
val *= base;
- if (ULLONG_MAX - val < xx)
+ if (ULLONG_MAX - val < (unsigned long long)xx)
goto overflow;
val += xx;
c = *++ustr;
}
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr;
#if defined(_KERNEL) && !defined(_BOOT)
*result = neg ? -val : val;
@@ -125,7 +135,7 @@ strtoull(const char *str, char **nptr, int base)
overflow:
for (c = *++ustr; lisalnum(c) && (xx = DIGIT(c)) < base; (c = *++ustr))
;
- if (ptr != (const char **)0)
+ if (ptr != NULL)
*ptr = (char *)ustr;
#if defined(_KERNEL) && !defined(_BOOT)
return (ERANGE);
diff --git a/usr/src/lib/libc/amd64/Makefile b/usr/src/lib/libc/amd64/Makefile
index d1e6809d83..2c428afacb 100644
--- a/usr/src/lib/libc/amd64/Makefile
+++ b/usr/src/lib/libc/amd64/Makefile
@@ -103,6 +103,8 @@ COMOBJS= \
bcopy.o \
bsearch.o \
bzero.o \
+ explicit_bzero.o \
+ memmem.o \
qsort.o \
strtol.o \
strtoul.o \
@@ -388,7 +390,6 @@ PORTGEN= \
euclen.o \
event_port.o \
execvp.o \
- explicit_bzero.o \
fattach.o \
fdetach.o \
fdopendir.o \
@@ -467,7 +468,6 @@ PORTGEN= \
madvise.o \
malloc.o \
memalign.o \
- memmem.o \
memset_s.o \
mkdev.o \
mkdtemp.o \
diff --git a/usr/src/lib/libc/i386/Makefile.com b/usr/src/lib/libc/i386/Makefile.com
index 526c2fbc6f..35f96feda3 100644
--- a/usr/src/lib/libc/i386/Makefile.com
+++ b/usr/src/lib/libc/i386/Makefile.com
@@ -104,6 +104,8 @@ COMOBJS= \
bcopy.o \
bsearch.o \
bzero.o \
+ explicit_bzero.o \
+ memmem.o \
qsort.o \
strtol.o \
strtoul.o \
@@ -425,7 +427,6 @@ PORTGEN= \
euclen.o \
event_port.o \
execvp.o \
- explicit_bzero.o \
fattach.o \
fdetach.o \
fdopendir.o \
@@ -504,7 +505,6 @@ PORTGEN= \
madvise.o \
malloc.o \
memalign.o \
- memmem.o \
memset_s.o \
mkdev.o \
mkdtemp.o \
diff --git a/usr/src/lib/libc/sparc/Makefile.com b/usr/src/lib/libc/sparc/Makefile.com
index 7d5155b373..abd0d25056 100644
--- a/usr/src/lib/libc/sparc/Makefile.com
+++ b/usr/src/lib/libc/sparc/Makefile.com
@@ -127,7 +127,9 @@ COMOBJS= \
bcopy.o \
bzero.o \
bsearch.o \
+ explicit_bzero.o \
memccpy.o \
+ memmem.o \
qsort.o \
strtol.o \
strtoul.o \
@@ -451,7 +453,6 @@ PORTGEN= \
euclen.o \
event_port.o \
execvp.o \
- explicit_bzero.o \
fattach.o \
fdetach.o \
fdopendir.o \
@@ -531,7 +532,6 @@ PORTGEN= \
madvise.o \
malloc.o \
memalign.o \
- memmem.o \
memset_s.o \
mkdev.o \
mkdtemp.o \
diff --git a/usr/src/lib/libc/sparcv9/Makefile.com b/usr/src/lib/libc/sparcv9/Makefile.com
index ac784aceca..f5bfaf5c9d 100644
--- a/usr/src/lib/libc/sparcv9/Makefile.com
+++ b/usr/src/lib/libc/sparcv9/Makefile.com
@@ -130,7 +130,9 @@ COMOBJS= \
bcopy.o \
bsearch.o \
bzero.o \
+ explicit_bzero.o \
memccpy.o \
+ memmem.o \
qsort.o \
strtol.o \
strtoul.o \
@@ -409,7 +411,6 @@ PORTGEN= \
euclen.o \
event_port.o \
execvp.o \
- explicit_bzero.o \
fattach.o \
fdetach.o \
fdopendir.o \
@@ -489,7 +490,6 @@ PORTGEN= \
madvise.o \
malloc.o \
memalign.o \
- memmem.o \
memset_s.o \
mkdev.o \
mkdtemp.o \