summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/krtld
diff options
context:
space:
mode:
authorToomas Soome <tsoome@me.com>2018-10-30 14:26:23 +0200
committerDan McDonald <danmcd@joyent.com>2018-10-31 14:48:16 -0400
commit508de9f313d4260d23954085ed866e727901964c (patch)
treef30ed795df1891290aceb641080b1186302bec7d /usr/src/uts/common/krtld
parentd06952d085d59072d42d77e29ac5669bbdc25d6e (diff)
downloadillumos-joyent-508de9f313d4260d23954085ed866e727901964c.tar.gz
9940 _kobj_printf must use va_list
Reviewed by: John Levon <john.levon@joyent.com> Reviewed by: Richard Lowe <richlowe@richlowe.net> Reviewed by: Andy Fiddaman <andy@omniosce.org> Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src/uts/common/krtld')
-rw-r--r--usr/src/uts/common/krtld/bootrd.c3
-rw-r--r--usr/src/uts/common/krtld/kobj.c3
-rw-r--r--usr/src/uts/common/krtld/kobj_subr.c17
3 files changed, 16 insertions, 7 deletions
diff --git a/usr/src/uts/common/krtld/bootrd.c b/usr/src/uts/common/krtld/bootrd.c
index 91d9d863be..a79b877e30 100644
--- a/usr/src/uts/common/krtld/bootrd.c
+++ b/usr/src/uts/common/krtld/bootrd.c
@@ -35,6 +35,7 @@
#include <sys/reboot.h>
extern void (*_kobj_printf)(void *, const char *fmt, ...);
+extern void (*_vkobj_printf)(void *, const char *fmt, va_list);
extern int get_weakish_int(int *);
extern struct bootops *ops;
extern struct boot_fs_ops bufs_ops, bhsfs_ops, bbootfs_ops, bcpio_ops;
@@ -244,6 +245,6 @@ kobj_printf(char *fmt, ...)
va_list adx;
va_start(adx, fmt);
- _kobj_printf(ops, fmt, adx);
+ _vkobj_printf(ops, fmt, adx);
va_end(adx);
}
diff --git a/usr/src/uts/common/krtld/kobj.c b/usr/src/uts/common/krtld/kobj.c
index 90303d496b..b98f5c188a 100644
--- a/usr/src/uts/common/krtld/kobj.c
+++ b/usr/src/uts/common/krtld/kobj.c
@@ -297,7 +297,7 @@ int standalone = 1; /* an unwholey kernel? */
int use_iflush; /* iflush after relocations */
/*
- * _kobj_printf()
+ * _kobj_printf() and _vkobj_printf()
*
* Common printf function pointer. Can handle only one conversion
* specification in the format string. Some of the functions invoked
@@ -305,6 +305,7 @@ int use_iflush; /* iflush after relocations */
* specification in the format string.
*/
void (*_kobj_printf)(void *, const char *, ...); /* printf routine */
+void (*_vkobj_printf)(void *, const char *, va_list); /* vprintf routine */
/*
* Standalone function pointers for use within krtld.
diff --git a/usr/src/uts/common/krtld/kobj_subr.c b/usr/src/uts/common/krtld/kobj_subr.c
index 761c8b69f6..8dd6ca7863 100644
--- a/usr/src/uts/common/krtld/kobj_subr.c
+++ b/usr/src/uts/common/krtld/kobj_subr.c
@@ -23,8 +23,6 @@
* Use is subject to license terms.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#include <sys/types.h>
#include <sys/param.h>
#include <sys/systm.h>
@@ -44,15 +42,22 @@
* vector so that krtld may simply refer to bzero etc.
* as usual. See kobj_impl.h.
*/
+extern void vprintf(const char *, va_list);
/*ARGSUSED*/
static void
+vkprintf(void *op, const char *fmt, va_list adx)
+{
+ vprintf(fmt, adx);
+}
+
+static void
kprintf(void *op, const char *fmt, ...)
{
va_list adx;
va_start(adx, fmt);
- vprintf(fmt, adx);
+ vkprintf(op, fmt, adx);
va_end(adx);
}
@@ -109,14 +114,15 @@ stand_strlcat(char *dst, const char *src, size_t dstsize)
void
kobj_setup_standalone_vectors()
{
- _kobj_printf = (void (*)(void *, const char *, ...))bop_printf;
+ _kobj_printf = bop_printf;
+ _vkobj_printf = vbop_printf;
kobj_bcopy = stand_bcopy;
kobj_bzero = stand_bzero;
kobj_strlcat = stand_strlcat;
}
/*
- * Restore the kprintf/bcopy/bzero kobj vectors.
+ * Restore the kprintf/vkprintf/bcopy/bzero kobj vectors.
* We need to undefine the override macros to
* accomplish this.
*
@@ -132,6 +138,7 @@ void
kobj_restore_vectors()
{
_kobj_printf = kprintf;
+ _vkobj_printf = vkprintf;
kobj_bcopy = bcopy;
kobj_bzero = bzero;
kobj_strlcat = strlcat;