> On Oct 18, 2016, at 6:43 PM, Clayton, Greg <gclay...@apple.com> wrote: > > > On Oct 18, 2016, at 7:48 AM, Giusti, Valentina <valentina.giu...@intel.com> > wrote: > > > > Hi Greg, > > > > Thanks a lot for your reply, please find below my answers. > > > >> You can install new python commands that can do the job to work out > >> the details. > >> > >> http://lldb.llvm.org/python-reference.html > >> > >> See the section named "CREATE A NEW LLDB COMMAND USING A PYTHON > >> FUNCTION". > >> > >> You can basically install a new "intel" command and parse all of the > >> options "show mpx-bounds ..." or "set mpx-bounds ..." from within this new > command. > >> You can use the public LLDB API to look through the process and do > >> things. Let me know if you need any help with this. There is also a > >> API to add custom commands from C++ plug-ins. Enrico Granata did this > >> work and can answer more questions on that. Either way, both commands > >> (python and C++ plug-ins) have access to the public API for LLDB, so > >> the code you will write will use the same API. So I would stick with > >> python for > now to get things working. > >> > > > > I think I would rather start right away with the C++ approach. If I > > understand > correctly, it means to create a specific Intel plugin under the directory > source/Plugins and use the LLDB API to add the custom command. > > That is one way to do this, but any change you make will require a recompile > of > LLDB. > > The only external plug-ins we currently have with LLDB are for adding > commands. See the following code in our test suite where $(trunk) is the root > of > your LLDB checkout: > > $(trunk)/packages/Python/lldbsuite/test/functionalities/plugins/commands > > This show you how to compile a C++ plug-in that will be loaded by LLDB if it > is > placed in the right plug-in location. So this would allow you to distribute > a plug- > in that can work with existing released LLDB in case you care to do so. >
Thanks for mentioning this, I will keep it in mind. However I think I prefer to implement a builtin command. > > > >> Some questions for you: > >> - How do plan on detecting that you have an intel processor? > > > > I thought of checking if the target architecture is either > > llvm::Triple::x86 or > llvm::Triple::x86_64. Do you think there is a better approach to this? > > I guess just checking for the "BNDCFGU" register is what you will need to do? > Yeah, I can probably skip the arch checking step. > > > >> - Do you need access to any process registers? If so, are these > >> registers thread specific? Are these registers available currently on > >> linux and > MacOS? > > > > I only need to access the MPX configuration register, BNDCFGU. As far as I > know, MacOS doesn't have MPX support, so I also didn't implement the MPX > support for MacOS in LLDB, which means it is only available in Linux at the > moment. > > > >> - How do you locate the BT? (or do you even need to?). Is there > >> symbol? Can you extract all values in the bounds table once you locate it? > >> > > > > The bound tables are allocated contiguously in the process memory, starting > from the Bound Directory address which is stored in the BNDCFGU register. > Therefore, in the plugin I only need to access this register, do the > appropriate > calculations and then access the process memory to get the requested bound > table entry. > > Great. This sounds easy to do. Just decide if you prefer a built in command > or to > create an external command shared library plug-in and you are all set to go! > Seems so, thanks! - Val Intel Deutschland GmbH Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Christin Eisenschmid, Christian Lamprechter Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928 _______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev