[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