Print this page
11626 introduce /etc/versions/build
11627 clean up UUID code for ::status
*** 21,31 ****
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/*
! * Copyright (c) 2013, Joyent, Inc. All rights reserved.
*/
/*
* Libkvm Kernel Target
*
--- 21,31 ----
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
*/
/*
! * Copyright 2019 Joyent, Inc.
*/
/*
* Libkvm Kernel Target
*
*** 49,58 ****
--- 49,59 ----
#include <sys/kobj_impl.h>
#include <sys/utsname.h>
#include <sys/panic.h>
#include <sys/dumphdr.h>
#include <sys/dumpadm.h>
+ #include <sys/uuid.h>
#include <dlfcn.h>
#include <libctf.h>
#include <string.h>
#include <fcntl.h>
*** 66,75 ****
--- 67,77 ----
#include <mdb/mdb_io_impl.h>
#include <mdb/mdb_ctf.h>
#include <mdb/mdb_kvm.h>
#include <mdb/mdb_module.h>
#include <mdb/mdb_kb.h>
+ #include <mdb/mdb_ks.h>
#include <mdb/mdb.h>
#define KT_RELOC_BUF(buf, obase, nbase) \
((uintptr_t)(buf) - (uintptr_t)(obase) + (uintptr_t)(nbase))
*** 92,101 ****
--- 94,105 ----
} kt_maparg_t;
static const char KT_MODULE[] = "mdb_ks";
static const char KT_CTFPARENT[] = "genunix";
+ static void (*print_buildversion)(void);
+
static void
kt_load_module(kt_data_t *kt, mdb_tgt_t *t, kt_module_t *km)
{
km->km_data = mdb_alloc(km->km_datasz, UM_SLEEP);
*** 483,506 ****
}
mdb_printf("operating system: %s %s (%s)\n",
uts.release, uts.version, uts.machine);
if (kt->k_dumphdr) {
dumphdr_t *dh = kt->k_dumphdr;
mdb_printf("image uuid: %s\n", dh->dump_uuid[0] != '\0' ?
dh->dump_uuid : "(not set)");
mdb_printf("panic message: %s\n", dh->dump_panicstring);
kt->k_dump_print_content(dh, kt->k_dumpcontent);
} else {
! char uuid[37];
! if (mdb_readsym(uuid, 37, "dump_osimage_uuid") == 37 &&
! uuid[36] == '\0') {
! mdb_printf("image uuid: %s\n", uuid);
}
}
return (DCMD_OK);
}
--- 487,515 ----
}
mdb_printf("operating system: %s %s (%s)\n",
uts.release, uts.version, uts.machine);
+ if (print_buildversion != NULL)
+ print_buildversion();
+
if (kt->k_dumphdr) {
dumphdr_t *dh = kt->k_dumphdr;
mdb_printf("image uuid: %s\n", dh->dump_uuid[0] != '\0' ?
dh->dump_uuid : "(not set)");
mdb_printf("panic message: %s\n", dh->dump_panicstring);
kt->k_dump_print_content(dh, kt->k_dumpcontent);
} else {
! char uuid[UUID_PRINTABLE_STRING_LENGTH];
! if (mdb_readsym(uuid, sizeof (uuid),
! "dump_osimage_uuid") == sizeof (uuid) &&
! uuid[sizeof (uuid) - 1] == '\0') {
! mdb_printf("image uuid: %s\n", uuid[0] != '\0' ?
! uuid : "(not set)");
}
}
return (DCMD_OK);
}
*** 580,589 ****
--- 589,601 ----
if (mdb_module_load(KT_MODULE, MDB_MOD_GLOBAL) < 0) {
warn("failed to load kernel support module -- "
"some modules may not load\n");
}
+ print_buildversion = (void (*)(void))dlsym(RTLD_NEXT,
+ "mdb_print_buildversion");
+
if (mdb_prop_postmortem && kt->k_dumphdr != NULL) {
sym = dlsym(RTLD_NEXT, "mdb_dump_print_content");
if (sym != NULL)
kt->k_dump_print_content = (void (*)())sym;