SCI: adding support to identify uninitialized values, when doing debug output for kernel signatures

svn-id: r50626
This commit is contained in:
Martin Kiewitz 2010-07-03 18:44:44 +00:00
parent 88d1155c5e
commit 5872f5bb1f
2 changed files with 20 additions and 15 deletions

View File

@ -685,6 +685,9 @@ int Kernel::findRegType(reg_t reg) {
if (!reg.segment)
return reg.offset ? KSIG_ARITHMETIC : KSIG_ARITHMETIC | KSIG_NULL;
if (reg.segment == 0xFFFF)
return KSIG_UNINITIALIZED;
// Otherwise it's an object
SegmentObj *mobj = _segMan->getSegmentObj(reg.segment);
if (!mobj)
@ -728,13 +731,14 @@ struct SignatureDebugType {
};
static const SignatureDebugType signatureDebugTypeList[] = {
{ KSIG_NULL, "null" },
{ KSIG_ARITHMETIC, "value" },
{ KSIG_OBJECT, "object" },
{ KSIG_REF, "reference" },
{ KSIG_LIST, "list" },
{ KSIG_NODE, "node" },
{ 0, NULL }
{ KSIG_NULL, "null" },
{ KSIG_ARITHMETIC, "value" },
{ KSIG_UNINITIALIZED, "uninitialized" },
{ KSIG_OBJECT, "object" },
{ KSIG_REF, "reference" },
{ KSIG_LIST, "list" },
{ KSIG_NODE, "node" },
{ 0, NULL }
};
static void kernelSignatureDebugType(const char type) {

View File

@ -99,14 +99,15 @@ struct SelectorCache; // from selector.h
// Compiled signatures
enum {
KSIG_LIST = 0x01,
KSIG_NODE = 0x02,
KSIG_OBJECT = 0x04,
KSIG_REF = 0x08,
KSIG_ARITHMETIC = 0x10,
KSIG_NULL = 0x40,
KSIG_ANY = 0x5f,
KSIG_ELLIPSIS = 0x80
KSIG_LIST = 0x01,
KSIG_NODE = 0x02,
KSIG_OBJECT = 0x04,
KSIG_REF = 0x08,
KSIG_ARITHMETIC = 0x10,
KSIG_UNINITIALIZED = 0x20,
KSIG_NULL = 0x40,
KSIG_ANY = 0x5f,
KSIG_ELLIPSIS = 0x80
};
// ----------------------------------------------------------------------------