arguments when the argument fits into a register)
container-regs
- The value for this key is a comma separated list of decimal register
- numbers.
+ The value for this key is a comma separated list of raw hex (no
+ leading "0x") register numbers.
This specifies that this register is contained in other concrete
register values. For example "eax" is in the lower 32 bits of the
"rax" register value for x86_64, so "eax" could specify that it is
contained in "rax" by specifying the register number for "rax".
- "container-regs:0,1;"
+ "container-regs:00,0a,3b;"
This is handy for defining what GDB used to call "pseudo" registers.
These registers are never requested by LLDB via the register read
of this register.
invalidate-regs
- The value for this key is a comma separated list of decimal register
- numbers.
+ The value for this key is a comma separated list of raw hex (no
+ leading "0x") register numbers.
This specifies which register values should be invalidated when this
register is modified.
- "invalidate-regs:1,2,3;"
+ "invalidate-regs:01,0b,1e;"
This is handy when modifying a specific register can cause other
register values to change. For example, when debugging an ARM target,
value_pair = value_pair.second.split(',');
if (!value_pair.first.empty())
{
- value_regs.push_back (Args::StringToUInt32 (value_pair.first.str().c_str()));
+ uint32_t reg = Args::StringToUInt32 (value_pair.first.str().c_str(), LLDB_INVALID_REGNUM, 16);
+ if (reg != LLDB_INVALID_REGNUM)
+ value_regs.push_back (reg);
}
} while (!value_pair.second.empty());
}
value_pair = value_pair.second.split(',');
if (!value_pair.first.empty())
{
- invalidate_regs.push_back (Args::StringToUInt32 (value_pair.first.str().c_str()));
+ uint32_t reg = Args::StringToUInt32 (value_pair.first.str().c_str(), LLDB_INVALID_REGNUM, 16);
+ if (reg != LLDB_INVALID_REGNUM)
+ invalidate_regs.push_back (reg);
}
} while (!value_pair.second.empty());
}