diff options
author | Toomas Soome <tsoome@me.com> | 2018-10-30 14:26:23 +0200 |
---|---|---|
committer | Dan McDonald <danmcd@joyent.com> | 2018-10-31 14:48:16 -0400 |
commit | 508de9f313d4260d23954085ed866e727901964c (patch) | |
tree | f30ed795df1891290aceb641080b1186302bec7d /usr/src/uts/common/krtld | |
parent | d06952d085d59072d42d77e29ac5669bbdc25d6e (diff) | |
download | illumos-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.c | 3 | ||||
-rw-r--r-- | usr/src/uts/common/krtld/kobj.c | 3 | ||||
-rw-r--r-- | usr/src/uts/common/krtld/kobj_subr.c | 17 |
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; |