[Lldb-commits] [PATCH] D29078: This patch implements a command to access and manipulate the Intel(R) MPX Boundary Tables.
Greg Clayton via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Wed Jan 25 11:25:13 PST 2017
clayborg added inline comments.
================
Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:151
+ //
+ bd_entry--;
+
----------------
There is indeed a bug in SBData::SetData():
```
void SBData::SetData(lldb::SBError &error, const void *buf, size_t size,
lldb::ByteOrder endian, uint8_t addr_size) {
if (!m_opaque_sp.get())
m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size));
else
m_opaque_sp->SetData(buf, size, endian);
```
Note that if "m_opaque_sp" already exists, it doesn't set the address byte size.
I will fix this and check it in, then things should work for you.
================
Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:219
+}
+
+static std::vector<uint8_t> uIntToU8(uint64_t input, size_t size) {
----------------
I'll fix SBData and this should work
================
Comment at: tools/intel-mpx/IntelMPXTablePlugin.cpp:315
+ return true;
+}
+
----------------
The GetValueAsUnsigned() should work. If you look at an x86_64 program:
```
(lldb) script
>>> r = lldb.frame.FindRegister('rax')
>>> print r
(unsigned long) rax = 0x0000000100000f10
>>> print r.GetValueAsUnsigned(0)
4294971152
>>> hex(4294971152)
'0x100000f10'
```
Maybe you defined "bndcfgu" the register in a way that makes this not work? This should work and you should step through the code to see why this fails for "bndcfgu". Let me know what you find.
https://reviews.llvm.org/D29078
More information about the lldb-commits
mailing list