<div dir="ltr">Hi,<div><br></div><div>I built lldb with this cmake config:</div><div> cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang-3.6 -DCMAKE_CXX_COMPILER=clang++-3.6 -DLLVM_ENABLE_EH=ON -DLLVM_ENABLE_RTTI=ON ../../llvm<br></div><div><br></div><div>The failing tests logs are here:</div><div><a href="http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/19105">http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/19105</a><br></div><div><a href="http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/19105/steps/test1/logs/stdio">http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/19105/steps/test1/logs/stdio</a><br></div><div><br></div><div>The tests are failing for i386.</div><div>So I created a C++ program (with only a "main return 0" in it) and compiled it as 32 bit binary (g++ -m32 test.cpp -g)</div><div>And just debugged that with lldb and did a "register read -a".</div><div><br></div><div>Hope that helps,</div><div>Dimitar</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 6, 2016 at 12:34 PM, Giusti, Valentina <span dir="ltr"><<a href="mailto:valentina.giusti@intel.com" target="_blank">valentina.giusti@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Dimitar,<br>
<br>
Thanks for investigating what are the issues. Unfortunately I cannot reproduce the problem locally.<br>
Could you please share with me the details of how lldb was built and how the tests are run?<br>
<br>
Thanks and BR,<br>
- Valentina<br>
<br>
> -----Original Message-----<br>
> From: lldb-commits [mailto:<a href="mailto:lldb-commits-bounces@lists.llvm.org">lldb-commits-bounces@<wbr>lists.llvm.org</a>] On Behalf Of<br>
> Dimitar Vlahovski via lldb-commits<br>
> Sent: Tuesday, September 6, 2016 1:01 PM<br>
> To: <a href="mailto:lldb-commits@lists.llvm.org">lldb-commits@lists.llvm.org</a><br>
> Subject: [Lldb-commits] [lldb] r280703 - Revert "Intel(R) Memory Protection<br>
> Extensions (Intel(R) MPX) support."<br>
><br>
> Author: dvlahovski<br>
> Date: Tue Sep 6 06:00:37 2016<br>
> New Revision: 280703<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=280703&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=280703&view=rev</a><br>
> Log:<br>
> Revert "Intel(R) Memory Protection Extensions (Intel(R) MPX) support."<br>
><br>
> This reverts commit rL280668 because the register tests fail on i386<br>
> Linux.<br>
><br>
> I investigated a little bit what causes the failure - there are missing<br>
> registers when running 'register read -a'.<br>
> This is the output I got at the bottom:<br>
> """<br>
> ...<br>
> Memory Protection Extensions:<br>
> bnd0 = {0x0000000000000000 0x0000000000000000}<br>
> bnd1 = {0x0000000000000000 0x0000000000000000}<br>
> bnd2 = {0x0000000000000000 0x0000000000000000}<br>
> bnd3 = {0x0000000000000000 0x0000000000000000}<br>
><br>
> unknown:<br>
> 2 registers were unavailable.<br>
> """<br>
><br>
> Also looking at the packets exchanged between the client and server:<br>
> """<br>
> ...<br>
> history[308] tid=0x7338 < 19> send packet: $qRegisterInfo4a#d7<br>
> history[309] tid=0x7338 < 130> read packet:<br>
> $name:bnd0;bitsize:128;offset:<wbr>1032;encoding:vector;format:<wbr>vector-<br>
> uint64;set:Memory<br>
> Protection Extensions;ehframe:101;dwarf:<wbr>101;#48<br>
> history[310] tid=0x7338 < 19> send packet: $qRegisterInfo4b#d8<br>
> history[311] tid=0x7338 < 130> read packet:<br>
> $name:bnd1;bitsize:128;offset:<wbr>1048;encoding:vector;format:<wbr>vector-<br>
> uint64;set:Memory<br>
> Protection Extensions;ehframe:102;dwarf:<wbr>102;#52<br>
> history[312] tid=0x7338 < 19> send packet: $qRegisterInfo4c#d9<br>
> history[313] tid=0x7338 < 130> read packet:<br>
> $name:bnd2;bitsize:128;offset:<wbr>1064;encoding:vector;format:<wbr>vector-<br>
> uint64;set:Memory<br>
> Protection Extensions;ehframe:103;dwarf:<wbr>103;#53<br>
> history[314] tid=0x7338 < 19> send packet: $qRegisterInfo4d#da<br>
> history[315] tid=0x7338 < 130> read packet:<br>
> $name:bnd3;bitsize:128;offset:<wbr>1080;encoding:vector;format:<wbr>vector-<br>
> uint64;set:Memory<br>
> Protection Extensions;ehframe:104;dwarf:<wbr>104;#54<br>
> history[316] tid=0x7338 < 19> send packet: $qRegisterInfo4e#db<br>
> history[317] tid=0x7338 < 76> read packet:<br>
> $name:bndcfgu;bitsize:64;<wbr>offset:1096;encoding:vector;<wbr>format:vector-uint8;#99<br>
> history[318] tid=0x7338 < 19> send packet: $qRegisterInfo4f#dc<br>
> history[319] tid=0x7338 < 78> read packet:<br>
> $name:bndstatus;bitsize:64;<wbr>offset:1104;encoding:vector;<wbr>format:vector-<br>
> uint8;#8e<br>
> ...<br>
> """<br>
><br>
> The bndcfgu and bndstatus registers don't have the 'Memory Protections<br>
> Extension' set. I looked at the code and it seems that that is set<br>
> correctly.<br>
><br>
> So I'm not sure what's the problem or where does it come from.<br>
><br>
> Also there is a second failure related to something like this in the<br>
> tests:<br>
> """<br>
> registerSet.GetName().lower()<br>
> """<br>
><br>
> For some reason the registerSet.GetName() returns None.<br>
><br>
> Added:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>Makefile<br>
> - copied, changed from r280697,<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/Makefile<br>
><br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>TestRegisters<br>
> .py<br>
> - copied, changed from r280697,<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/TestRegisters.py<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/a.cpp<br>
> - copied, changed from r280697,<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/a.cpp<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/main.<wbr>cpp<br>
> - copied, changed from r280697,<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/main.cpp<br>
> Removed:<br>
><br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/Makefile<br>
><br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/TestMPXRegisters.py<br>
><br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/main.cpp<br>
><br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/Makefile<br>
><br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/TestRegisters.py<br>
><br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/a.cpp<br>
><br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/main.cpp<br>
> Modified:<br>
> lldb/trunk/source/Plugins/ABI/<wbr>SysV-i386/ABISysV_i386.cpp<br>
> lldb/trunk/source/Plugins/ABI/<wbr>SysV-x86_64/ABISysV_x86_64.cpp<br>
><br>
> lldb/trunk/source/Plugins/<wbr>Process/Linux/<wbr>NativeRegisterContextLinux_<wbr>x86_64.cp<br>
> p<br>
><br>
> lldb/trunk/source/Plugins/<wbr>Process/Linux/<wbr>NativeRegisterContextLinux_<wbr>x86_64.h<br>
> lldb/trunk/source/Plugins/<wbr>Process/Utility/<wbr>RegisterContext_x86.h<br>
> lldb/trunk/source/Plugins/<wbr>Process/Utility/RegisterInfos_<wbr>i386.h<br>
> lldb/trunk/source/Plugins/<wbr>Process/Utility/RegisterInfos_<wbr>x86_64.h<br>
> lldb/trunk/source/Plugins/<wbr>Process/Utility/lldb-x86-<wbr>register-enums.h<br>
> lldb/trunk/source/Plugins/<wbr>Process/gdb-<br>
> remote/<wbr>GDBRemoteCommunicationServerLL<wbr>GS.cpp<br>
> lldb/trunk/source/Plugins/<wbr>Process/gdb-remote/<wbr>ProcessGDBRemote.cpp<br>
><br>
> Copied:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>Makefile<br>
> (from r280697,<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/Makefile)<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/Make<br>
> file?p2=lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/Make<br>
> file&p1=lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/regis<br>
> ter_command/Makefile&r1=<wbr>280697&r2=280703&rev=280703&<wbr>view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/Makefile (original)<br>
> +++ lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>Makefile<br>
> Tue Sep 6 06:00:37 2016<br>
> @@ -1,4 +1,4 @@<br>
> -LEVEL = ../../../make<br>
> +LEVEL = ../../make<br>
><br>
> CXX_SOURCES := main.cpp a.cpp<br>
><br>
><br>
> Copied:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>TestRegisters<br>
> .py (from r280697,<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/TestRegisters.py)<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/TestR<br>
> egisters.py?p2=lldb/trunk/<wbr>packages/Python/lldbsuite/<wbr>test/functionalities/regist<br>
> er/TestRegisters.py&p1=lldb/<wbr>trunk/packages/Python/<wbr>lldbsuite/test/functionaliti<br>
> es/register/register_command/<wbr>TestRegisters.py&r1=280697&r2=<wbr>280703&rev=2<br>
> 80703&view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/TestRegisters.py (original)<br>
> +++<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>TestRegisters<br>
> .py Tue Sep 6 06:00:37 2016<br>
> @@ -41,12 +41,11 @@ class RegisterCommandsTestCase(<wbr>TestBase)<br>
> if self.getArchitecture() in ['amd64', 'i386', 'x86_64']:<br>
> self.runCmd("register read xmm0")<br>
> self.runCmd("register read ymm15") # may be available<br>
> - self.runCmd("register read bnd0") # may be available<br>
> elif self.getArchitecture() in ['arm']:<br>
> self.runCmd("register read s0")<br>
> self.runCmd("register read q15") # may be available<br>
><br>
> - self.expect("register read -s 4", substrs = ['invalid register set index: 4'],<br>
> error = True)<br>
> + self.expect("register read -s 3", substrs = ['invalid register set index: 3'],<br>
> error = True)<br>
><br>
> @skipIfiOSSimulator<br>
> @skipIfTargetAndroid(archs=["<wbr>i386"]) # Writing of mxcsr register fails,<br>
> presumably due to a kernel/hardware problem<br>
> @@ -290,14 +289,12 @@ class RegisterCommandsTestCase(<wbr>TestBase)<br>
> self.runCmd("register write " + st0regname + " \"{0x00 0x00 0x00 0x00<br>
> 0x00 0x00 0x00 0x00 0x00 0x00}\"")<br>
> self.expect("register read " + st0regname + " --format f", substrs =<br>
> [st0regname + ' = 0'])<br>
><br>
> - has_avx = False<br>
> - has_mpx = False<br>
> + has_avx = False<br>
> registerSets = currentFrame.GetRegisters() # Returns an SBValueList.<br>
> for registerSet in registerSets:<br>
> if 'advanced vector extensions' in registerSet.GetName().lower():<br>
> has_avx = True<br>
> - if 'memory protection extension' in registerSet.GetName().lower():<br>
> - has_mpx = True<br>
> + break<br>
><br>
> if has_avx:<br>
> new_value = "{0x01 0x02 0x03 0x00 0x00 0x00 0x00 0x00 0x09 0x0a<br>
> 0x2f 0x2f 0x2f 0x2f 0x0e 0x0f 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00<br>
> 0x00 0x00 0x00 0x0c 0x0d 0x0e 0x0f}"<br>
> @@ -307,21 +304,6 @@ class RegisterCommandsTestCase(<wbr>TestBase)<br>
> else:<br>
> self.runCmd("register read ymm0")<br>
><br>
> - if has_mpx:<br>
> - # Test write and read for bnd0.<br>
> - new_value_w = "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a<br>
> 0x0b 0x0c 0x0d 0x0e 0x0f 0x10}"<br>
> - self.runCmd("register write bnd0 \'" + new_value_w + "\'")<br>
> - new_value_r = "{0x0807060504030201 0x100f0e0d0c0b0a09}"<br>
> - self.expect("register read bnd0", substrs = ['bnd0 = ', new_value_r])<br>
> - self.expect("expr $bnd0", substrs = ['vector_type'])<br>
> -<br>
> - # Test write and for bndstatus.<br>
> - new_value = "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08}"<br>
> - self.write_and_read(<wbr>currentFrame, "bndstatus", new_value)<br>
> - self.expect("expr $bndstatus", substrs = ['vector_type'])<br>
> - else:<br>
> - self.runCmd("register read bnd0")<br>
> -<br>
> def convenience_registers(self):<br>
> """Test convenience registers."""<br>
> self.common_setup()<br>
><br>
> Copied: lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/a.cpp<br>
> (from r280697,<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/a.cpp)<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/a.cpp<br>
> ?p2=lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/a.<wbr>cpp&p<br>
> 1=lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_c<br>
> ommand/a.cpp&r1=280697&r2=<wbr>280703&rev=280703&view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> (empty)<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/Makefile<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/<wbr>intel_<br>
> xtended_registers/Makefile?<wbr>rev=280702&view=auto<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/Makefile (original)<br>
> +++<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/Makefile (removed)<br>
> @@ -1,6 +0,0 @@<br>
> -LEVEL = ../../../make<br>
> -<br>
> -CXX_SOURCES := main.cpp<br>
> -CXXFLAGS += -mmpx -fcheck-pointer-bounds -fuse-ld=bfd<br>
> -LDFLAGS += -mmpx -fcheck-pointer-bounds -fuse-ld=bfd<br>
> -include $(LEVEL)/Makefile.rules<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/TestMPXRegisters.py<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/<wbr>intel_<br>
> xtended_registers/<wbr>TestMPXRegisters.py?rev=<wbr>280702&view=auto<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/TestMPXRegisters.py (original)<br>
> +++<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/TestMPXRegisters.py (removed)<br>
> @@ -1,59 +0,0 @@<br>
> -"""<br>
> -Test the MPX registers.<br>
> -"""<br>
> -<br>
> -from __future__ import print_function<br>
> -<br>
> -import os, sys, time<br>
> -import re<br>
> -import lldb<br>
> -from lldbsuite.test.decorators import *<br>
> -from lldbsuite.test.lldbtest import *<br>
> -from lldbsuite.test import lldbutil<br>
> -<br>
> -<br>
> -class RegisterCommandsTestCase(<wbr>TestBase):<br>
> -<br>
> - mydir = TestBase.compute_mydir(__file_<wbr>_)<br>
> -<br>
> - def setUp(self):<br>
> - TestBase.setUp(self)<br>
> - self.has_teardown = False<br>
> -<br>
> - def tearDown(self):<br>
> - self.dbg.GetSelectedTarget().<wbr>GetProcess().Destroy()<br>
> - TestBase.tearDown(self)<br>
> -<br>
> - @skipIfiOSSimulator<br>
> - @skipIf(compiler="clang")<br>
> - @expectedFailureAll(oslist=["<wbr>linux"], compiler="gcc", compiler_version=["<",<br>
> "5"])<br>
> - @skipIf(archs=no_match(['<wbr>amd64', 'i386', 'x86_64']))<br>
> - def test_mpx_registers_with_<wbr>example_code(self):<br>
> - """Test MPX registers with example code."""<br>
> - self.build()<br>
> - self.mpx_registers_with_<wbr>example_code()<br>
> -<br>
> - def mpx_registers_with_example_<wbr>code(self):<br>
> - """Test MPX registers after running example code."""<br>
> - self.line = line_number('main.cpp', '// Set a break point here.')<br>
> -<br>
> - exe = os.path.join(os.getcwd(), "a.out")<br>
> - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)<br>
> -<br>
> - self.runCmd('settings set target.inline-breakpoint-<wbr>strategy always')<br>
> - self.addTearDownHook(<br>
> - lambda: self.runCmd("settings set target.inline-breakpoint-<wbr>strategy<br>
> always"))<br>
> -<br>
> - lldbutil.run_break_set_by_<wbr>file_and_line(self, "main.cpp", self.line,<br>
> num_expected_locations=1)<br>
> - self.runCmd("run", RUN_SUCCEEDED)<br>
> -<br>
> - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT,<br>
> - substrs = ["stop reason = breakpoint 1."])<br>
> -<br>
> - self.expect("register read -s 3",<br>
> - substrs = ['bnd0 = {0x0000000000000010 0xffffffffffffffe6}',<br>
> - 'bnd1 = {0x0000000000000020 0xffffffffffffffd6}',<br>
> - 'bnd2 = {0x0000000000000030 0xffffffffffffffc6}',<br>
> - 'bnd3 = {0x0000000000000040 0xffffffffffffffb6}',<br>
> - 'bndcfgu = {0x01 0x80 0xb5 0x76 0xff 0x7f 0x00 0x00}',<br>
> - 'bndstatus = {0x02 0x80 0xb5 0x76 0xff 0x7f 0x00 0x00}'])<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/main.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/<wbr>intel_<br>
> xtended_registers/main.cpp?<wbr>rev=280702&view=auto<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/main.cpp (original)<br>
> +++<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>intel_xtended<br>
> _registers/main.cpp (removed)<br>
> @@ -1,69 +0,0 @@<br>
> -//===-- main.cpp ------------------------------<wbr>------------------*- C++ -*-===//<br>
> -////<br>
> -//// The LLVM Compiler Infrastructure<br>
> -////<br>
> -//// This file is distributed under the University of Illinois Open Source<br>
> -//// License. See LICENSE.TXT for details.<br>
> -////<br>
> -////===----------------------<wbr>------------------------------<wbr>------------------===//<br>
> -//<br>
> -<br>
> -#include <cpuid.h><br>
> -#include <cstddef><br>
> -<br>
> -int<br>
> -main(int argc, char const *argv[])<br>
> -{<br>
> - unsigned int rax, rbx, rcx, rdx;<br>
> -<br>
> - // Check if XSAVE is enabled.<br>
> - if (!__get_cpuid(1, &rax, &rbx, &rcx, &rdx) || (rcx & bit_OSXSAVE) !=<br>
> bit_OSXSAVE)<br>
> - return -1;<br>
> -<br>
> - // Check if MPX is enabled.<br>
> - if (__get_cpuid_max(0, NULL) > 7)<br>
> - {<br>
> - __cpuid_count(7, 0, rax, rbx, rcx, rdx);<br>
> - if ((rbx & bit_MPX) != bit_MPX)<br>
> - return -1;<br>
> - }<br>
> - else<br>
> - return -1;<br>
> -<br>
> -// Run MPX test code.<br>
> -#if defined(__x86_64__)<br>
> - asm("mov $16, %rax\n\t"<br>
> - "mov $9, %rdx\n\t"<br>
> - "bndmk (%rax,%rdx), %bnd0\n\t"<br>
> - "mov $32, %rax\n\t"<br>
> - "mov $9, %rdx\n\t"<br>
> - "bndmk (%rax,%rdx), %bnd1\n\t"<br>
> - "mov $48, %rax\n\t"<br>
> - "mov $9, %rdx\n\t"<br>
> - "bndmk (%rax,%rdx), %bnd2\n\t"<br>
> - "mov $64, %rax\n\t"<br>
> - "mov $9, %rdx\n\t"<br>
> - "bndmk (%rax,%rdx), %bnd3\n\t"<br>
> - "bndstx %bnd3, (%rax) \n\t"<br>
> - "nop\n\t");<br>
> -#endif<br>
> -#if defined(__i386__)<br>
> - asm("mov $16, %eax\n\t"<br>
> - "mov $9, %edx\n\t"<br>
> - "bndmk (%eax,%edx), %bnd0\n\t"<br>
> - "mov $32, %eax\n\t"<br>
> - "mov $9, %edx\n\t"<br>
> - "bndmk (%eax,%edx), %bnd1\n\t"<br>
> - "mov $48, %eax\n\t"<br>
> - "mov $9, %edx\n\t"<br>
> - "bndmk (%eax,%edx), %bnd2\n\t"<br>
> - "mov $64, %eax\n\t"<br>
> - "mov $9, %edx\n\t"<br>
> - "bndmk (%eax,%edx), %bnd3\n\t"<br>
> - "bndstx %bnd3, (%eax)\n\t"<br>
> - "nop\n\t");<br>
> -#endif<br>
> - asm("nop\n\t"); // Set a break point here.<br>
> -<br>
> - return 0;<br>
> -}<br>
><br>
> Copied:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/main.<wbr>cpp<br>
> (from r280697,<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/main.cpp)<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/main.<br>
> cpp?p2=lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/main<br>
> .cpp&p1=lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/regi<br>
> ster_command/main.cpp&r1=<wbr>280697&r2=280703&rev=280703&<wbr>view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> (empty)<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/Makefile<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/<wbr>regist<br>
> er_command/Makefile?rev=<wbr>280702&view=auto<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/Makefile (original)<br>
> +++<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/Makefile (removed)<br>
> @@ -1,5 +0,0 @@<br>
> -LEVEL = ../../../make<br>
> -<br>
> -CXX_SOURCES := main.cpp a.cpp<br>
> -<br>
> -include $(LEVEL)/Makefile.rules<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/TestRegisters.py<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/<wbr>regist<br>
> er_command/TestRegisters.py?<wbr>rev=280702&view=auto<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/TestRegisters.py (original)<br>
> +++<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/TestRegisters.py (removed)<br>
> @@ -1,368 +0,0 @@<br>
> -"""<br>
> -Test the 'register' command.<br>
> -"""<br>
> -<br>
> -from __future__ import print_function<br>
> -<br>
> -<br>
> -<br>
> -import os, sys, time<br>
> -import re<br>
> -import lldb<br>
> -from lldbsuite.test.decorators import *<br>
> -from lldbsuite.test.lldbtest import *<br>
> -from lldbsuite.test import lldbutil<br>
> -<br>
> -class RegisterCommandsTestCase(<wbr>TestBase):<br>
> -<br>
> - mydir = TestBase.compute_mydir(__file_<wbr>_)<br>
> -<br>
> - def setUp(self):<br>
> - TestBase.setUp(self)<br>
> - self.has_teardown = False<br>
> -<br>
> - def tearDown(self):<br>
> - self.dbg.GetSelectedTarget().<wbr>GetProcess().Destroy()<br>
> - TestBase.tearDown(self)<br>
> -<br>
> - @skipIfiOSSimulator<br>
> - @skipIf(archs=no_match(['<wbr>amd64', 'arm', 'i386', 'x86_64']))<br>
> - def test_register_commands(self):<br>
> - """Test commands related to registers, in particular vector registers."""<br>
> - self.build()<br>
> - self.common_setup()<br>
> -<br>
> - # verify that logging does not assert<br>
> - self.log_enable("registers")<br>
> -<br>
> - self.expect("register read -a", MISSING_EXPECTED_REGISTERS,<br>
> - substrs = ['registers were unavailable'], matching = False)<br>
> -<br>
> - if self.getArchitecture() in ['amd64', 'i386', 'x86_64']:<br>
> - self.runCmd("register read xmm0")<br>
> - self.runCmd("register read ymm15") # may be available<br>
> - self.runCmd("register read bnd0") # may be available<br>
> - elif self.getArchitecture() in ['arm']:<br>
> - self.runCmd("register read s0")<br>
> - self.runCmd("register read q15") # may be available<br>
> -<br>
> - self.expect("register read -s 4", substrs = ['invalid register set index: 4'],<br>
> error = True)<br>
> -<br>
> - @skipIfiOSSimulator<br>
> - @skipIfTargetAndroid(archs=["<wbr>i386"]) # Writing of mxcsr register fails,<br>
> presumably due to a kernel/hardware problem<br>
> - @skipIf(archs=no_match(['<wbr>amd64', 'arm', 'i386', 'x86_64']))<br>
> - def test_fp_register_write(self):<br>
> - """Test commands that write to registers, in particular floating-point<br>
> registers."""<br>
> - self.build()<br>
> - self.fp_register_write()<br>
> -<br>
> - @skipIfiOSSimulator<br>
> - @expectedFailureAndroid(archs=<wbr>["i386"]) # "register read fstat" always<br>
> return 0xffff<br>
> - @skipIfFreeBSD #<a href="http://llvm.org/pr25057" rel="noreferrer" target="_blank">llvm.org/pr25057</a><br>
> - @skipIf(archs=no_match(['<wbr>amd64', 'i386', 'x86_64']))<br>
> - def test_fp_special_purpose_<wbr>register_read(self):<br>
> - """Test commands that read fpu special purpose registers."""<br>
> - self.build()<br>
> - self.fp_special_purpose_<wbr>register_read()<br>
> -<br>
> - @skipIfiOSSimulator<br>
> - @skipIf(archs=no_match(['<wbr>amd64', 'arm', 'i386', 'x86_64']))<br>
> - def test_register_expressions(<wbr>self):<br>
> - """Test expression evaluation with commands related to registers."""<br>
> - self.build()<br>
> - self.common_setup()<br>
> -<br>
> - if self.getArchitecture() in ['amd64', 'i386', 'x86_64']:<br>
> - gpr = "eax"<br>
> - vector = "xmm0"<br>
> - elif self.getArchitecture() in ['arm']:<br>
> - gpr = "r0"<br>
> - vector = "q0"<br>
> -<br>
> - self.expect("expr/x $%s" % gpr, substrs = ['unsigned int', ' = 0x'])<br>
> - self.expect("expr $%s" % vector, substrs = ['vector_type'])<br>
> - self.expect("expr (unsigned int)$%s[0]" % vector, substrs = ['unsigned int'])<br>
> -<br>
> - if self.getArchitecture() in ['amd64', 'x86_64']:<br>
> - self.expect("expr -- ($rax & 0xffffffff) == $eax", substrs = ['true'])<br>
> -<br>
> - @skipIfiOSSimulator<br>
> - @skipIf(archs=no_match(['<wbr>amd64', 'x86_64']))<br>
> - def test_convenience_registers(<wbr>self):<br>
> - """Test convenience registers."""<br>
> - self.build()<br>
> - self.convenience_registers()<br>
> -<br>
> - @skipIfiOSSimulator<br>
> - @skipIf(archs=no_match(['<wbr>amd64', 'x86_64']))<br>
> - def test_convenience_registers_<wbr>with_process_attach(self):<br>
> - """Test convenience registers after a 'process attach'."""<br>
> - self.build()<br>
> - self.convenience_registers_<wbr>with_process_attach(test_<wbr>16bit_regs=False)<br>
> -<br>
> - @skipIfiOSSimulator<br>
> - @skipIf(archs=no_match(['<wbr>amd64', 'x86_64']))<br>
> - def test_convenience_registers_<wbr>16bit_with_process_attach(<wbr>self):<br>
> - """Test convenience registers after a 'process attach'."""<br>
> - self.build()<br>
> - self.convenience_registers_<wbr>with_process_attach(test_<wbr>16bit_regs=True)<br>
> -<br>
> - def common_setup(self):<br>
> - exe = os.path.join(os.getcwd(), "a.out")<br>
> -<br>
> - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)<br>
> -<br>
> - # Break in main().<br>
> - lldbutil.run_break_set_by_<wbr>symbol (self, "main", num_expected_locations=-<br>
> 1)<br>
> -<br>
> - self.runCmd("run", RUN_SUCCEEDED)<br>
> -<br>
> - # The stop reason of the thread should be breakpoint.<br>
> - self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,<br>
> - substrs = ['stopped', 'stop reason = breakpoint'])<br>
> -<br>
> - # platform specific logging of the specified category<br>
> - def log_enable(self, category):<br>
> - # This intentionally checks the host platform rather than the target<br>
> - # platform as logging is host side.<br>
> - self.platform = ""<br>
> - if sys.platform.startswith("<wbr>darwin"):<br>
> - self.platform = "" # TODO: add support for "log enable darwin registers"<br>
> -<br>
> - if sys.platform.startswith("<wbr>freebsd"):<br>
> - self.platform = "freebsd"<br>
> -<br>
> - if sys.platform.startswith("<wbr>linux"):<br>
> - self.platform = "linux"<br>
> -<br>
> - if sys.platform.startswith("<wbr>netbsd"):<br>
> - self.platform = "netbsd"<br>
> -<br>
> - if self.platform != "":<br>
> - self.log_file = os.path.join(os.getcwd(), 'TestRegisters.log')<br>
> - self.runCmd("log enable " + self.platform + " " + str(category) + "<br>
> registers -v -f " + self.log_file, RUN_SUCCEEDED)<br>
> - if not self.has_teardown:<br>
> - def remove_log(self):<br>
> - if os.path.exists(self.log_file):<br>
> - os.remove(self.log_file)<br>
> - self.has_teardown = True<br>
> - self.addTearDownHook(remove_<wbr>log)<br>
> -<br>
> - def write_and_read(self, frame, register, new_value, must_exist = True):<br>
> - value = frame.FindValue(register, lldb.eValueTypeRegister)<br>
> - if must_exist:<br>
> - self.assertTrue(value.IsValid(<wbr>), "finding a value for register " + register)<br>
> - elif not value.IsValid():<br>
> - return # If register doesn't exist, skip this test<br>
> -<br>
> - self.runCmd("register write " + register + " \'" + new_value + "\'")<br>
> - self.expect("register read " + register, substrs = [register + ' = ', new_value])<br>
> -<br>
> - def fp_special_purpose_register_<wbr>read(self):<br>
> - exe = os.path.join(os.getcwd(), "a.out")<br>
> -<br>
> - # Create a target by the debugger.<br>
> - target = self.dbg.CreateTarget(exe)<br>
> - self.assertTrue(target, VALID_TARGET)<br>
> -<br>
> - # Launch the process and stop.<br>
> - self.expect ("run", PROCESS_STOPPED, substrs = ['stopped'])<br>
> -<br>
> - # Check stop reason; Should be either signal SIGTRAP or EXC_BREAKPOINT<br>
> - output = self.res.GetOutput()<br>
> - matched = False<br>
> - substrs = ['stop reason = EXC_BREAKPOINT', 'stop reason = signal<br>
> SIGTRAP']<br>
> - for str1 in substrs:<br>
> - matched = output.find(str1) != -1<br>
> - with recording(self, False) as sbuf:<br>
> - print("%s sub string: %s" % ('Expecting', str1), file=sbuf)<br>
> - print("Matched" if matched else "Not Matched", file=sbuf)<br>
> - if matched:<br>
> - break<br>
> - self.assertTrue(matched, STOPPED_DUE_TO_SIGNAL)<br>
> -<br>
> - process = target.GetProcess()<br>
> - self.assertTrue(process.<wbr>GetState() == lldb.eStateStopped,<br>
> - PROCESS_STOPPED)<br>
> -<br>
> - thread = process.GetThreadAtIndex(0)<br>
> - self.assertTrue(thread.<wbr>IsValid(), "current thread is valid")<br>
> -<br>
> - currentFrame = thread.GetFrameAtIndex(0)<br>
> - self.assertTrue(currentFrame.<wbr>IsValid(), "current frame is valid")<br>
> -<br>
> - # Extract the value of fstat and ftag flag at the point just before<br>
> - # we start pushing floating point values on st% register stack<br>
> - value = currentFrame.FindValue("fstat"<wbr>, lldb.eValueTypeRegister)<br>
> - error = lldb.SBError()<br>
> - reg_value_fstat_initial = value.GetValueAsUnsigned(<wbr>error, 0)<br>
> -<br>
> - self.assertTrue(error.Success(<wbr>), "reading a value for fstat")<br>
> - value = currentFrame.FindValue("ftag", lldb.eValueTypeRegister)<br>
> - error = lldb.SBError()<br>
> - reg_value_ftag_initial = value.GetValueAsUnsigned(<wbr>error, 0)<br>
> -<br>
> - self.assertTrue(error.Success(<wbr>), "reading a value for ftag")<br>
> - fstat_top_pointer_initial = (reg_value_fstat_initial & 0x3800)>>11<br>
> -<br>
> - # Execute 'si' aka 'thread step-inst' instruction 5 times and with<br>
> - # every execution verify the value of fstat and ftag registers<br>
> - for x in range(0,5):<br>
> - # step into the next instruction to push a value on 'st' register stack<br>
> - self.runCmd ("si", RUN_SUCCEEDED)<br>
> -<br>
> - # Verify fstat and save it to be used for verification in next execution of<br>
> 'si' command<br>
> - if not (reg_value_fstat_initial & 0x3800):<br>
> - self.expect("register read fstat",<br>
> - substrs = ['fstat' + ' = ', str("0x%0.4x" %((reg_value_fstat_initial &<br>
> ~(0x3800))| 0x3800))])<br>
> - reg_value_fstat_initial = ((reg_value_fstat_initial & ~(0x3800))|<br>
> 0x3800)<br>
> - fstat_top_pointer_initial = 7<br>
> - else :<br>
> - self.expect("register read fstat",<br>
> - substrs = ['fstat' + ' = ', str("0x%0.4x" % (reg_value_fstat_initial -<br>
> 0x0800))])<br>
> - reg_value_fstat_initial = (reg_value_fstat_initial - 0x0800)<br>
> - fstat_top_pointer_initial -= 1<br>
> -<br>
> - # Verify ftag and save it to be used for verification in next execution of<br>
> 'si' command<br>
> - self.expect("register read ftag",<br>
> - substrs = ['ftag' + ' = ', str("0x%0.2x" % (reg_value_ftag_initial | (1<<<br>
> fstat_top_pointer_initial)))])<br>
> - reg_value_ftag_initial = reg_value_ftag_initial | (1<<<br>
> fstat_top_pointer_initial)<br>
> -<br>
> - def fp_register_write(self):<br>
> - exe = os.path.join(os.getcwd(), "a.out")<br>
> -<br>
> - # Create a target by the debugger.<br>
> - target = self.dbg.CreateTarget(exe)<br>
> - self.assertTrue(target, VALID_TARGET)<br>
> -<br>
> - lldbutil.run_break_set_by_<wbr>symbol (self, "main", num_expected_locations=-<br>
> 1)<br>
> -<br>
> - # Launch the process, and do not stop at the entry point.<br>
> - process = target.LaunchSimple (None, None,<br>
> self.get_process_working_<wbr>directory())<br>
> -<br>
> - process = target.GetProcess()<br>
> - self.assertTrue(process.<wbr>GetState() == lldb.eStateStopped,<br>
> PROCESS_STOPPED)<br>
> -<br>
> - thread = process.GetThreadAtIndex(0)<br>
> - self.assertTrue(thread.<wbr>IsValid(), "current thread is valid")<br>
> -<br>
> - currentFrame = thread.GetFrameAtIndex(0)<br>
> - self.assertTrue(currentFrame.<wbr>IsValid(), "current frame is valid")<br>
> -<br>
> - if self.getArchitecture() in ['amd64', 'i386', 'x86_64']:<br>
> - reg_list = [<br>
> - # reg value must-have<br>
> - ("fcw", "0x0000ff0e", False),<br>
> - ("fsw", "0x0000ff0e", False),<br>
> - ("ftw", "0x0000ff0e", False),<br>
> - ("ip", "0x0000ff0e", False),<br>
> - ("dp", "0x0000ff0e", False),<br>
> - ("mxcsr", "0x0000ff0e", False),<br>
> - ("mxcsrmask", "0x0000ff0e", False),<br>
> - ]<br>
> -<br>
> - st0regname = None<br>
> - if currentFrame.FindRegister("<wbr>st0").IsValid():<br>
> - st0regname = "st0"<br>
> - elif currentFrame.FindRegister("<wbr>stmm0").IsValid():<br>
> - st0regname = "stmm0"<br>
> - if st0regname is not None:<br>
> - # reg value<br>
> must-have<br>
> - reg_list.append((st0regname, "{0x01 0x02 0x03 0x00 0x00 0x00 0x00<br>
> 0x00 0x00 0x00}", True))<br>
> - reg_list.append(("xmm0", "{0x01 0x02 0x03 0x00 0x00 0x00 0x00<br>
> 0x00 0x09 0x0a 0x2f 0x2f 0x2f 0x2f 0x2f 0x2f}", True))<br>
> - reg_list.append(("xmm15", "{0x01 0x02 0x03 0x00 0x00 0x00 0x00<br>
> 0x00 0x09 0x0a 0x2f 0x2f 0x2f 0x2f 0x0e 0x0f}", False))<br>
> - elif self.getArchitecture() in ['arm']:<br>
> - reg_list = [<br>
> - # reg value must-have<br>
> - ("fpscr", "0xfbf79f9f", True),<br>
> - ("s0", "1.25", True),<br>
> - ("s31", "0.75", True),<br>
> - ("d1", "123", True),<br>
> - ("d17", "987", False),<br>
> - ("q1", "{0x01 0x02 0x03 0x00 0x00 0x00 0x00 0x00 0x09 0x0a 0x2f<br>
> 0x2f 0x2f 0x2f 0x2f 0x2f}", True),<br>
> - ("q14", "{0x01 0x02 0x03 0x00 0x00 0x00 0x00 0x00 0x09 0x0a 0x2f<br>
> 0x2f 0x2f 0x2f 0x0e 0x0f}", False),<br>
> - ]<br>
> -<br>
> - for (reg, val, must) in reg_list:<br>
> - self.write_and_read(<wbr>currentFrame, reg, val, must)<br>
> -<br>
> - if self.getArchitecture() in ['amd64', 'i386', 'x86_64']:<br>
> - self.runCmd("register write " + st0regname + " \"{0x00 0x00 0x00 0x00<br>
> 0x00 0x00 0x00 0x00 0x00 0x00}\"")<br>
> - self.expect("register read " + st0regname + " --format f", substrs =<br>
> [st0regname + ' = 0'])<br>
> -<br>
> - has_avx = False<br>
> - has_mpx = False<br>
> - registerSets = currentFrame.GetRegisters() # Returns an SBValueList.<br>
> - for registerSet in registerSets:<br>
> - if 'advanced vector extensions' in registerSet.GetName().lower():<br>
> - has_avx = True<br>
> - if 'memory protection extension' in registerSet.GetName().lower():<br>
> - has_mpx = True<br>
> -<br>
> - if has_avx:<br>
> - new_value = "{0x01 0x02 0x03 0x00 0x00 0x00 0x00 0x00 0x09 0x0a<br>
> 0x2f 0x2f 0x2f 0x2f 0x0e 0x0f 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00<br>
> 0x00 0x00 0x00 0x0c 0x0d 0x0e 0x0f}"<br>
> - self.write_and_read(<wbr>currentFrame, "ymm0", new_value)<br>
> - self.write_and_read(<wbr>currentFrame, "ymm7", new_value)<br>
> - self.expect("expr $ymm0", substrs = ['vector_type'])<br>
> - else:<br>
> - self.runCmd("register read ymm0")<br>
> -<br>
> - if has_mpx:<br>
> - # Test write and read for bnd0.<br>
> - new_value_w = "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a<br>
> 0x0b 0x0c 0x0d 0x0e 0x0f 0x10}"<br>
> - self.runCmd("register write bnd0 \'" + new_value_w + "\'")<br>
> - new_value_r = "{0x0807060504030201 0x100f0e0d0c0b0a09}"<br>
> - self.expect("register read bnd0", substrs = ['bnd0 = ', new_value_r])<br>
> - self.expect("expr $bnd0", substrs = ['vector_type'])<br>
> -<br>
> - # Test write and for bndstatus.<br>
> - new_value = "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08}"<br>
> - self.write_and_read(<wbr>currentFrame, "bndstatus", new_value)<br>
> - self.expect("expr $bndstatus", substrs = ['vector_type'])<br>
> - else:<br>
> - self.runCmd("register read bnd0")<br>
> -<br>
> - def convenience_registers(self):<br>
> - """Test convenience registers."""<br>
> - self.common_setup()<br>
> -<br>
> - # The command "register read -a" does output a derived register like eax...<br>
> - self.expect("register read -a", matching=True,<br>
> - substrs = ['eax'])<br>
> -<br>
> - # ...however, the vanilla "register read" command should not output<br>
> derived registers like eax.<br>
> - self.expect("register read", matching=False,<br>
> - substrs = ['eax'])<br>
> -<br>
> - # Test reading of rax and eax.<br>
> - self.expect("register read rax eax",<br>
> - substrs = ['rax = 0x', 'eax = 0x'])<br>
> -<br>
> - # Now write rax with a unique bit pattern and test that eax indeed<br>
> represents the lower half of rax.<br>
> - self.runCmd("register write rax 0x1234567887654321")<br>
> - self.expect("register read rax 0x1234567887654321",<br>
> - substrs = ['0x1234567887654321'])<br>
> -<br>
> - def convenience_registers_with_<wbr>process_attach(self, test_16bit_regs):<br>
> - """Test convenience registers after a 'process attach'."""<br>
> - exe = os.path.join(os.getcwd(), "a.out")<br>
> -<br>
> - # Spawn a new process<br>
> - pid = self.spawnSubprocess(exe, ['wait_for_attach']).pid<br>
> - self.addTearDownHook(self.<wbr>cleanupSubprocesses)<br>
> -<br>
> - if self.TraceOn():<br>
> - print("pid of spawned process: %d" % pid)<br>
> -<br>
> - self.runCmd("process attach -p %d" % pid)<br>
> -<br>
> - # Check that "register read eax" works.<br>
> - self.runCmd("register read eax")<br>
> -<br>
> - if self.getArchitecture() in ['amd64', 'x86_64']:<br>
> - self.expect("expr -- ($rax & 0xffffffff) == $eax",<br>
> - substrs = ['true'])<br>
> -<br>
> - if test_16bit_regs:<br>
> - self.expect("expr -- $ax == (($ah << 8) | $al)",<br>
> - substrs = ['true'])<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/a.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/<wbr>regist<br>
> er_command/a.cpp?rev=280702&<wbr>view=auto<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/a.cpp (original)<br>
> +++<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/a.cpp (removed)<br>
> @@ -1,44 +0,0 @@<br>
> -//===-- a.cpp ------------------------------<wbr>------------------*- C++ -*-===//<br>
> -//<br>
> -// The LLVM Compiler Infrastructure<br>
> -//<br>
> -// This file is distributed under the University of Illinois Open Source<br>
> -// License. See LICENSE.TXT for details.<br>
> -//<br>
> -//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
> -#include <stdio.h><br>
> -<br>
> -long double<br>
> -return_long_double (long double value)<br>
> -{<br>
> -#if defined (__i386__) || defined (__x86_64__)<br>
> - float a=2, b=4,c=8, d=16, e=32, f=64, k=128, l=256, add=0;<br>
> - __asm__ (<br>
> - "int3 ;"<br>
> - "flds %1 ;"<br>
> - "flds %2 ;"<br>
> - "flds %3 ;"<br>
> - "flds %4 ;"<br>
> - "flds %5 ;"<br>
> - "flds %6 ;"<br>
> - "flds %7 ;"<br>
> - "faddp ;" : "=g" (add) : "g" (a), "g" (b), "g" (c), "g" (d), "g" (e), "g" (f), "g" (k),<br>
> "g" (l) ); // Set break point at this line.<br>
> -#endif // #if defined (__i386__) || defined (__x86_64__)<br>
> - return value;<br>
> -}<br>
> -<br>
> -long double<br>
> -outer_return_long_double (long double value)<br>
> -{<br>
> - long double val = return_long_double(value);<br>
> - val *= 2 ;<br>
> - return val;<br>
> -}<br>
> -<br>
> -long double<br>
> -outermost_return_long_double (long double value)<br>
> -{<br>
> - long double val = outer_return_long_double(<wbr>value);<br>
> - val *= 2 ;<br>
> - return val;<br>
> -}<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/main.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/<wbr>Python/lldbsuite/test/<wbr>functionalities/register/<wbr>regist<br>
> er_command/main.cpp?rev=<wbr>280702&view=auto<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/main.cpp (original)<br>
> +++<br>
> lldb/trunk/packages/Python/<wbr>lldbsuite/test/<wbr>functionalities/register/<wbr>register_com<br>
> mand/main.cpp (removed)<br>
> @@ -1,36 +0,0 @@<br>
> -//===-- main.cpp ------------------------------<wbr>------------------*- C++ -*-===//<br>
> -//<br>
> -// The LLVM Compiler Infrastructure<br>
> -//<br>
> -// This file is distributed under the University of Illinois Open Source<br>
> -// License. See LICENSE.TXT for details.<br>
> -//<br>
> -//===------------------------<wbr>------------------------------<wbr>----------------===//<br>
> -#include <stdio.h><br>
> -<br>
> -#include <chrono><br>
> -#include <thread><br>
> -<br>
> -long double outermost_return_long_double (long double my_long_double);<br>
> -<br>
> -int main (int argc, char const *argv[])<br>
> -{<br>
> - lldb_enable_attach();<br>
> -<br>
> - char my_string[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 0};<br>
> - double my_double = 1234.5678;<br>
> - long double my_long_double = 1234.5678;<br>
> -<br>
> - // For simplicity assume that any cmdline argument means wait for attach.<br>
> - if (argc > 1)<br>
> - {<br>
> - volatile int wait_for_attach=1;<br>
> - while (wait_for_attach)<br>
> - std::this_thread::sleep_for(<wbr>std::chrono::microseconds(1));<br>
> - }<br>
> -<br>
> - printf("my_string=%s\n", my_string);<br>
> - printf("my_double=%g\n", my_double);<br>
> - outermost_return_long_double (my_long_double);<br>
> - return 0;<br>
> -}<br>
><br>
> Modified: lldb/trunk/source/Plugins/ABI/<wbr>SysV-i386/ABISysV_i386.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lldb/trunk/source/<wbr>Plugins/ABI/SysV-</a><br>
> i386/ABISysV_i386.cpp?rev=<wbr>280703&r1=280702&r2=280703&<wbr>view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> --- lldb/trunk/source/Plugins/ABI/<wbr>SysV-i386/ABISysV_i386.cpp (original)<br>
> +++ lldb/trunk/source/Plugins/ABI/<wbr>SysV-i386/ABISysV_i386.cpp Tue Sep 6<br>
> 06:00:37 2016<br>
> @@ -104,12 +104,7 @@ enum dwarf_regnums<br>
> dwarf_mm4,<br>
> dwarf_mm5,<br>
> dwarf_mm6,<br>
> - dwarf_mm7,<br>
> -<br>
> - dwarf_bnd0 = 101,<br>
> - dwarf_bnd1,<br>
> - dwarf_bnd2,<br>
> - dwarf_bnd3<br>
> + dwarf_mm7<br>
> };<br>
><br>
> static RegisterInfo g_register_infos[] =<br>
> @@ -164,13 +159,7 @@ static RegisterInfo g_register_infos[] =<br>
> { "ymm4" , nullptr, 32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> LLDB_INVALID_REGNUM , dwarf_ymm4 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr,<br>
> 0},<br>
> { "ymm5" , nullptr, 32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> LLDB_INVALID_REGNUM , dwarf_ymm5 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr,<br>
> 0},<br>
> { "ymm6" , nullptr, 32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> LLDB_INVALID_REGNUM , dwarf_ymm6 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr,<br>
> 0},<br>
> - { "ymm7" , nullptr, 32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> LLDB_INVALID_REGNUM , dwarf_ymm7 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr,<br>
> 0},<br>
> - { "bnd0" , nullptr, 16, 0, eEncodingVector, eFormatVectorOfUInt64,{<br>
> dwarf_bnd0 , dwarf_bnd0 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr,<br>
> 0},<br>
> - { "bnd1" , nullptr, 16, 0, eEncodingVector, eFormatVectorOfUInt64,{<br>
> dwarf_bnd1 , dwarf_bnd1 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr,<br>
> 0},<br>
> - { "bnd2" , nullptr, 16, 0, eEncodingVector, eFormatVectorOfUInt64,{<br>
> dwarf_bnd2 , dwarf_bnd2 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr,<br>
> 0},<br>
> - { "bnd3" , nullptr, 16, 0, eEncodingVector, eFormatVectorOfUInt64,{<br>
> dwarf_bnd3 , dwarf_bnd3 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr,<br>
> 0},<br>
> - { "bndcfgu", nullptr, 8, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM,<br>
> LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0},<br>
> - { "bndstatus", nullptr, 8, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM,<br>
> LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0}<br>
> + { "ymm7" , nullptr, 32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> LLDB_INVALID_REGNUM , dwarf_ymm7 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr,<br>
> 0}<br>
> };<br>
><br>
> static const uint32_t k_num_register_infos =<br>
> llvm::array_lengthof(g_<wbr>register_infos);<br>
><br>
> Modified: lldb/trunk/source/Plugins/ABI/<wbr>SysV-x86_64/ABISysV_x86_64.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/lldb/trunk/source/<wbr>Plugins/ABI/SysV-</a><br>
> x86_64/ABISysV_x86_64.cpp?rev=<wbr>280703&r1=280702&r2=280703&<wbr>view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> --- lldb/trunk/source/Plugins/ABI/<wbr>SysV-x86_64/ABISysV_x86_64.cpp (original)<br>
> +++ lldb/trunk/source/Plugins/ABI/<wbr>SysV-x86_64/ABISysV_x86_64.cpp Tue Sep 6<br>
> 06:00:37 2016<br>
> @@ -95,11 +95,7 @@ enum dwarf_regnums<br>
> dwarf_ymm12,<br>
> dwarf_ymm13,<br>
> dwarf_ymm14,<br>
> - dwarf_ymm15,<br>
> - dwarf_bnd0 = 126,<br>
> - dwarf_bnd1,<br>
> - dwarf_bnd2,<br>
> - dwarf_bnd3<br>
> + dwarf_ymm15<br>
> };<br>
><br>
> static RegisterInfo g_register_infos[] =<br>
> @@ -178,13 +174,7 @@ static RegisterInfo g_register_infos[] =<br>
> { "ymm12" , nullptr,32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> dwarf_ymm12 , dwarf_ymm12 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> },<br>
> { "ymm13" , nullptr,32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> dwarf_ymm13 , dwarf_ymm13 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> },<br>
> { "ymm14" , nullptr,32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> dwarf_ymm14 , dwarf_ymm14 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> },<br>
> - { "ymm15" , nullptr,32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> dwarf_ymm15 , dwarf_ymm15 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> },<br>
> - { "bnd0" , nullptr,16, 0, eEncodingVector, eFormatVectorOfUInt64,{<br>
> dwarf_bnd0 , dwarf_bnd0 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> },<br>
> - { "bnd1" , nullptr,16, 0, eEncodingVector, eFormatVectorOfUInt64,{<br>
> dwarf_bnd1 , dwarf_bnd1 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> },<br>
> - { "bnd2" , nullptr,16, 0, eEncodingVector, eFormatVectorOfUInt64,{<br>
> dwarf_bnd2 , dwarf_bnd2 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> },<br>
> - { "bnd3" , nullptr,16, 0, eEncodingVector, eFormatVectorOfUInt64,{<br>
> dwarf_bnd3 , dwarf_bnd3 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> },<br>
> - { "bndcfgu", nullptr,8, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM<br>
> , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> },<br>
> - { "bndstatus", nullptr,8, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM<br>
> , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0<br>
> }<br>
> + { "ymm15" , nullptr,32, 0, eEncodingVector, eFormatVectorOfUInt8, {<br>
> dwarf_ymm15 , dwarf_ymm15 , LLDB_INVALID_REGNUM ,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 }<br>
> };<br>
><br>
> static const uint32_t k_num_register_infos =<br>
> llvm::array_lengthof(g_<wbr>register_infos);<br>
><br>
> Modified:<br>
> lldb/trunk/source/Plugins/<wbr>Process/Linux/<wbr>NativeRegisterContextLinux_<wbr>x86_64.cp<br>
> p<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/<wbr>Plugins/Process/Linux/<wbr>NativeRegisterContextLinux_x<br>
> 86_64.cpp?rev=280703&r1=<wbr>280702&r2=280703&view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/source/Plugins/<wbr>Process/Linux/<wbr>NativeRegisterContextLinux_<wbr>x86_64.cp<br>
> p (original)<br>
> +++<br>
> lldb/trunk/source/Plugins/<wbr>Process/Linux/<wbr>NativeRegisterContextLinux_<wbr>x86_64.cp<br>
> p Tue Sep 6 06:00:37 2016<br>
> @@ -130,21 +130,6 @@ namespace<br>
> static_assert((sizeof(g_avx_<wbr>regnums_i386) / sizeof(g_avx_regnums_i386[0]))<br>
> - 1 == k_num_avx_registers_i386,<br>
> " g_avx_regnums_i386 has wrong number of register infos");<br>
><br>
> - // x64 32-bit MPX registers.<br>
> - static const uint32_t<br>
> - g_mpx_regnums_i386[] =<br>
> - {<br>
> - lldb_bnd0_i386,<br>
> - lldb_bnd1_i386,<br>
> - lldb_bnd2_i386,<br>
> - lldb_bnd3_i386,<br>
> - lldb_bndcfgu_i386,<br>
> - lldb_bndstatus_i386,<br>
> - LLDB_INVALID_REGNUM // register sets need to end with this flag<br>
> - };<br>
> - static_assert((sizeof(g_mpx_<wbr>regnums_i386) /<br>
> sizeof(g_mpx_regnums_i386[0])) - 1 == k_num_mpx_registers_i386,<br>
> - "g_mpx_regnums_x86_64 has wrong number of register infos");<br>
> -<br>
> // x86 64-bit general purpose registers.<br>
> static const<br>
> uint32_t g_gpr_regnums_x86_64[] =<br>
> @@ -306,47 +291,29 @@ namespace<br>
> static_assert((sizeof(g_avx_<wbr>regnums_x86_64) /<br>
> sizeof(g_avx_regnums_x86_64[0]<wbr>)) - 1 == k_num_avx_registers_x86_64,<br>
> "g_avx_regnums_x86_64 has wrong number of register infos");<br>
><br>
> - // x86 64-bit MPX registers.<br>
> - static const uint32_t<br>
> - g_mpx_regnums_x86_64[] =<br>
> - {<br>
> - lldb_bnd0_x86_64,<br>
> - lldb_bnd1_x86_64,<br>
> - lldb_bnd2_x86_64,<br>
> - lldb_bnd3_x86_64,<br>
> - lldb_bndcfgu_x86_64,<br>
> - lldb_bndstatus_x86_64,<br>
> - LLDB_INVALID_REGNUM // register sets need to end with this flag<br>
> - };<br>
> - static_assert((sizeof(g_mpx_<wbr>regnums_x86_64) /<br>
> sizeof(g_mpx_regnums_x86_64[0]<wbr>)) - 1 == k_num_mpx_registers_x86_64,<br>
> - "g_mpx_regnums_x86_64 has wrong number of register infos");<br>
> -<br>
> // Number of register sets provided by this context.<br>
> enum<br>
> {<br>
> k_num_extended_register_sets = 1,<br>
> - k_num_register_sets = 4<br>
> + k_num_register_sets = 3<br>
> };<br>
><br>
> // Register sets for x86 32-bit.<br>
> static const RegisterSet<br>
> g_reg_sets_i386[k_num_<wbr>register_sets] =<br>
> {<br>
> - { "General Purpose Registers", "gpr", k_num_gpr_registers_i386,<br>
> g_gpr_regnums_i386 },<br>
> - { "Floating Point Registers", "fpu", k_num_fpr_registers_i386,<br>
> g_fpu_regnums_i386 },<br>
> - { "Advanced Vector Extensions", "avx", k_num_avx_registers_i386,<br>
> g_avx_regnums_i386 },<br>
> - { "Memory Protection Extensions", "mpx", k_num_mpx_registers_i386,<br>
> g_mpx_regnums_i386 }<br>
> + { "General Purpose Registers", "gpr", k_num_gpr_registers_i386,<br>
> g_gpr_regnums_i386 },<br>
> + { "Floating Point Registers", "fpu", k_num_fpr_registers_i386,<br>
> g_fpu_regnums_i386 },<br>
> + { "Advanced Vector Extensions", "avx", k_num_avx_registers_i386,<br>
> g_avx_regnums_i386 }<br>
> };<br>
><br>
> // Register sets for x86 64-bit.<br>
> static const RegisterSet<br>
> g_reg_sets_x86_64[k_num_<wbr>register_sets] =<br>
> {<br>
> - { "General Purpose Registers", "gpr", k_num_gpr_registers_x86_64,<br>
> g_gpr_regnums_x86_64 },<br>
> - { "Floating Point Registers", "fpu", k_num_fpr_registers_x86_64,<br>
> g_fpu_regnums_x86_64 },<br>
> - { "Advanced Vector Extensions", "avx", k_num_avx_registers_x86_64,<br>
> g_avx_regnums_x86_64 },<br>
> - { "Memory Protection Extensions", "mpx", k_num_mpx_registers_x86_64,<br>
> g_mpx_regnums_x86_64 }<br>
> -<br>
> + { "General Purpose Registers", "gpr", k_num_gpr_registers_x86_64,<br>
> g_gpr_regnums_x86_64 },<br>
> + { "Floating Point Registers", "fpu", k_num_fpr_registers_x86_64,<br>
> g_fpu_regnums_x86_64 },<br>
> + { "Advanced Vector Extensions", "avx", k_num_avx_registers_x86_64,<br>
> g_avx_regnums_x86_64 }<br>
> };<br>
> }<br>
><br>
> @@ -401,7 +368,6 @@ NativeRegisterContextLinux_<wbr>x86_64::Nativ<br>
> m_fpr (),<br>
> m_iovec (),<br>
> m_ymm_set (),<br>
> - m_mpx_set (),<br>
> m_reg_info (),<br>
> m_gpr_x86_64 ()<br>
> {<br>
> @@ -413,7 +379,6 @@ NativeRegisterContextLinux_<wbr>x86_64::Nativ<br>
> m_reg_info.num_gpr_registers = k_num_gpr_registers_i386;<br>
> m_reg_info.num_fpr_registers = k_num_fpr_registers_i386;<br>
> m_reg_info.num_avx_registers = k_num_avx_registers_i386;<br>
> - m_reg_info.num_mpx_registers = k_num_mpx_registers_i386;<br>
> m_reg_info.last_gpr = k_last_gpr_i386;<br>
> m_reg_info.first_fpr = k_first_fpr_i386;<br>
> m_reg_info.last_fpr = k_last_fpr_i386;<br>
> @@ -425,10 +390,6 @@ NativeRegisterContextLinux_<wbr>x86_64::Nativ<br>
> m_reg_info.last_xmm = lldb_xmm7_i386;<br>
> m_reg_info.first_ymm = lldb_ymm0_i386;<br>
> m_reg_info.last_ymm = lldb_ymm7_i386;<br>
> - m_reg_info.first_mpxr = lldb_bnd0_i386;<br>
> - m_reg_info.last_mpxr = lldb_bnd3_i386;<br>
> - m_reg_info.first_mpxc = lldb_bndcfgu_i386;<br>
> - m_reg_info.last_mpxc = lldb_bndstatus_i386;<br>
> m_reg_info.first_dr = lldb_dr0_i386;<br>
> m_reg_info.gpr_flags = lldb_eflags_i386;<br>
> break;<br>
> @@ -437,7 +398,6 @@ NativeRegisterContextLinux_<wbr>x86_64::Nativ<br>
> m_reg_info.num_gpr_registers = k_num_gpr_registers_x86_64;<br>
> m_reg_info.num_fpr_registers = k_num_fpr_registers_x86_64;<br>
> m_reg_info.num_avx_registers = k_num_avx_registers_x86_64;<br>
> - m_reg_info.num_mpx_registers = k_num_mpx_registers_x86_64;<br>
> m_reg_info.last_gpr = k_last_gpr_x86_64;<br>
> m_reg_info.first_fpr = k_first_fpr_x86_64;<br>
> m_reg_info.last_fpr = k_last_fpr_x86_64;<br>
> @@ -449,10 +409,6 @@ NativeRegisterContextLinux_<wbr>x86_64::Nativ<br>
> m_reg_info.last_xmm = lldb_xmm15_x86_64;<br>
> m_reg_info.first_ymm = lldb_ymm0_x86_64;<br>
> m_reg_info.last_ymm = lldb_ymm15_x86_64;<br>
> - m_reg_info.first_mpxr = lldb_bnd0_x86_64;<br>
> - m_reg_info.last_mpxr = lldb_bnd3_x86_64;<br>
> - m_reg_info.first_mpxc = lldb_bndcfgu_x86_64;<br>
> - m_reg_info.last_mpxc = lldb_bndstatus_x86_64;<br>
> m_reg_info.first_dr = lldb_dr0_x86_64;<br>
> m_reg_info.gpr_flags = lldb_rflags_x86_64;<br>
> break;<br>
> @@ -598,28 +554,7 @@ NativeRegisterContextLinux_<wbr>x86_64::ReadR<br>
> return error;<br>
> }<br>
> }<br>
> - if (reg >= m_reg_info.first_mpxr && reg <= m_reg_info.last_mpxr)<br>
> - {<br>
> - if (GetFPRType() == eFPRTypeXSAVE && CopyXSTATEtoMPX(reg))<br>
> - reg_value.SetBytes(m_mpx_set.<wbr>mpxr[reg -<br>
> m_reg_info.first_mpxr].bytes, reg_info->byte_size,<br>
> - byte_order);<br>
> - else<br>
> - {<br>
> - error.SetErrorString("failed to copy mpx register value");<br>
> - return error;<br>
> - }<br>
> - }<br>
> - if (reg >= m_reg_info.first_mpxc && reg <= m_reg_info.last_mpxc)<br>
> - {<br>
> - if (GetFPRType() == eFPRTypeXSAVE && CopyXSTATEtoMPX(reg))<br>
> - reg_value.SetBytes(m_mpx_set.<wbr>mpxc[reg -<br>
> m_reg_info.first_mpxc].bytes, reg_info->byte_size,<br>
> - byte_order);<br>
> - else<br>
> - {<br>
> - error.SetErrorString("failed to copy mpx register value");<br>
> - return error;<br>
> - }<br>
> - }<br>
> +<br>
> if (reg_value.GetType() != RegisterValue::eTypeBytes)<br>
> error.SetErrorString ("write failed - type was expected to be<br>
> RegisterValue::eTypeBytes");<br>
><br>
> @@ -699,26 +634,6 @@ NativeRegisterContextLinux_<wbr>x86_64::Write<br>
> if (!CopyYMMtoXSTATE(reg_index, GetByteOrder()))<br>
> return Error ("CopyYMMtoXSTATE() failed");<br>
> }<br>
> - if (reg_index >= m_reg_info.first_mpxr && reg_index <=<br>
> m_reg_info.last_mpxr)<br>
> - {<br>
> - if (GetFPRType() != eFPRTypeXSAVE)<br>
> - return Error("target processor does not support MPX");<br>
> -<br>
> - ::memcpy(m_mpx_set.mpxr[reg_<wbr>index - m_reg_info.first_mpxr].bytes,<br>
> reg_value.GetBytes(),<br>
> - reg_value.GetByteSize());<br>
> - if (!CopyMPXtoXSTATE(reg_index))<br>
> - return Error("CopyMPXtoXSTATE() failed");<br>
> - }<br>
> - if (reg_index >= m_reg_info.first_mpxc && reg_index <=<br>
> m_reg_info.last_mpxc)<br>
> - {<br>
> - if (GetFPRType() != eFPRTypeXSAVE)<br>
> - return Error("target processor does not support MPX");<br>
> -<br>
> - ::memcpy(m_mpx_set.mpxc[reg_<wbr>index -<br>
> m_reg_info.first_mpxc].bytes, reg_value.GetBytes(),<br>
> - reg_value.GetByteSize());<br>
> - if (!CopyMPXtoXSTATE(reg_index))<br>
> - return Error("CopyMPXtoXSTATE() failed");<br>
> - }<br>
> }<br>
> else<br>
> {<br>
> @@ -762,12 +677,6 @@ NativeRegisterContextLinux_<wbr>x86_64::Write<br>
> if (!CopyYMMtoXSTATE(reg_index, GetByteOrder()))<br>
> return Error ("CopyYMMtoXSTATE() failed");<br>
> }<br>
> -<br>
> - if (IsMPX(reg_index))<br>
> - {<br>
> - if (!CopyMPXtoXSTATE(reg_index))<br>
> - return Error("CopyMPXtoXSTATE() failed");<br>
> - }<br>
> return Error ();<br>
> }<br>
> return Error ("failed - register wasn't recognized to be a GPR or an FPR, write<br>
> strategy unknown");<br>
> @@ -818,17 +727,6 @@ NativeRegisterContextLinux_<wbr>x86_64::ReadA<br>
> }<br>
> }<br>
><br>
> - for (uint32_t reg = m_reg_info.first_mpxr; reg <= m_reg_info.last_mpxc;<br>
> ++reg)<br>
> - {<br>
> - if (!CopyXSTATEtoMPX(reg))<br>
> - {<br>
> - error.<wbr>SetErrorStringWithFormat(<br>
> - "NativeRegisterContextLinux_<wbr>x86_64::%s CopyXSTATEtoMPX() failed<br>
> for reg num %" PRIu32, __FUNCTION__,<br>
> - reg);<br>
> - return error;<br>
> - }<br>
> - }<br>
> -<br>
> // Copy the extended register state including the assembled ymm registers.<br>
> ::memcpy (dst, &m_fpr, sizeof (m_fpr));<br>
> }<br>
> @@ -908,17 +806,6 @@ NativeRegisterContextLinux_<wbr>x86_64::Write<br>
> return error;<br>
> }<br>
> }<br>
> -<br>
> - for (uint32_t reg = m_reg_info.first_mpxr; reg <= m_reg_info.last_mpxc;<br>
> ++reg)<br>
> - {<br>
> - if (!CopyMPXtoXSTATE(reg))<br>
> - {<br>
> - error.<wbr>SetErrorStringWithFormat(<br>
> - "NativeRegisterContextLinux_<wbr>x86_64::%s CopyMPXtoXSTATE() failed<br>
> for reg num %" PRIu32, __FUNCTION__,<br>
> - reg);<br>
> - return error;<br>
> - }<br>
> - }<br>
> }<br>
><br>
> return error;<br>
> @@ -933,7 +820,7 @@ NativeRegisterContextLinux_<wbr>x86_64::IsReg<br>
> if (GetFPRType () == eFPRTypeXSAVE)<br>
> {<br>
> // AVX is the first extended register set.<br>
> - num_sets += 2;<br>
> + ++num_sets;<br>
> }<br>
> return (set_index < num_sets);<br>
> }<br>
> @@ -983,8 +870,7 @@ NativeRegisterContextLinux_<wbr>x86_64::IsFPR<br>
> bool generic_fpr = IsFPR(reg_index);<br>
><br>
> if (fpr_type == eFPRTypeXSAVE)<br>
> - return generic_fpr || IsAVX(reg_index) || IsMPX(reg_index);<br>
> -<br>
> + return generic_fpr || IsAVX(reg_index);<br>
> return generic_fpr;<br>
> }<br>
><br>
> @@ -1119,7 +1005,6 @@ NativeRegisterContextLinux_<wbr>x86_64::ReadF<br>
> {<br>
> const FPRType fpr_type = GetFPRType ();<br>
> const lldb_private::ArchSpec& target_arch =<br>
> GetRegisterInfoInterface().<wbr>GetTargetArchitecture();<br>
> -<br>
> switch (fpr_type)<br>
> {<br>
> case FPRType::eFPRTypeFXSAVE:<br>
> @@ -1144,50 +1029,6 @@ NativeRegisterContextLinux_<wbr>x86_64::ReadF<br>
> }<br>
> }<br>
><br>
> -bool<br>
> -NativeRegisterContextLinux_<wbr>x86_64::IsMPX(uint32_t reg_index) const<br>
> -{<br>
> - return (m_reg_info.first_mpxr <= reg_index && reg_index <=<br>
> m_reg_info.last_mpxc);<br>
> -}<br>
> -<br>
> -bool<br>
> -NativeRegisterContextLinux_<wbr>x86_64::CopyXSTATEtoMPX(<wbr>uint32_t reg)<br>
> -{<br>
> - if (!IsMPX(reg))<br>
> - return false;<br>
> -<br>
> - if (reg >= m_reg_info.first_mpxr && reg <= m_reg_info.last_mpxr)<br>
> - {<br>
> - ::memcpy(m_mpx_set.mpxr[reg - m_reg_info.first_mpxr].bytes,<br>
> - m_fpr.xstate.xsave.mpxr[reg - m_reg_info.first_mpxr].bytes,<br>
> sizeof(MPXReg));<br>
> - }<br>
> - else<br>
> - {<br>
> - ::memcpy(m_mpx_set.mpxc[reg - m_reg_info.first_mpxc].bytes,<br>
> - m_fpr.xstate.xsave.mpxc[reg - m_reg_info.first_mpxc].bytes,<br>
> sizeof(MPXCsr));<br>
> - }<br>
> - return true;<br>
> -}<br>
> -<br>
> -bool<br>
> -NativeRegisterContextLinux_<wbr>x86_64::CopyMPXtoXSTATE(<wbr>uint32_t reg)<br>
> -{<br>
> - if (!IsMPX(reg))<br>
> - return false;<br>
> -<br>
> - if (reg >= m_reg_info.first_mpxr && reg <= m_reg_info.last_mpxr)<br>
> - {<br>
> - ::memcpy(m_fpr.xstate.xsave.<wbr>mpxr[reg - m_reg_info.first_mpxr].bytes,<br>
> - m_mpx_set.mpxr[reg - m_reg_info.first_mpxr].bytes,<br>
> sizeof(MPXReg));<br>
> - }<br>
> - else<br>
> - {<br>
> - ::memcpy(m_fpr.xstate.xsave.<wbr>mpxc[reg - m_reg_info.first_mpxc].bytes,<br>
> - m_mpx_set.mpxc[reg - m_reg_info.first_mpxc].bytes,<br>
> sizeof(MPXCsr));<br>
> - }<br>
> - return true;<br>
> -}<br>
> -<br>
> Error<br>
> NativeRegisterContextLinux_<wbr>x86_64::IsWatchpointHit(<wbr>uint32_t wp_index, bool<br>
> &is_hit)<br>
> {<br>
><br>
> Modified:<br>
> lldb/trunk/source/Plugins/<wbr>Process/Linux/<wbr>NativeRegisterContextLinux_<wbr>x86_64.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/<wbr>Plugins/Process/Linux/<wbr>NativeRegisterContextLinux_x<br>
> 86_64.h?rev=280703&r1=280702&<wbr>r2=280703&view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> ---<br>
> lldb/trunk/source/Plugins/<wbr>Process/Linux/<wbr>NativeRegisterContextLinux_<wbr>x86_64.h<br>
> (original)<br>
> +++<br>
> lldb/trunk/source/Plugins/<wbr>Process/Linux/<wbr>NativeRegisterContextLinux_<wbr>x86_64.h<br>
> Tue Sep 6 06:00:37 2016<br>
> @@ -111,7 +111,6 @@ namespace process_linux {<br>
> uint32_t num_gpr_registers;<br>
> uint32_t num_fpr_registers;<br>
> uint32_t num_avx_registers;<br>
> - uint32_t num_mpx_registers;<br>
><br>
> uint32_t last_gpr;<br>
> uint32_t first_fpr;<br>
> @@ -125,10 +124,6 @@ namespace process_linux {<br>
> uint32_t last_xmm;<br>
> uint32_t first_ymm;<br>
> uint32_t last_ymm;<br>
> - uint32_t first_mpxr;<br>
> - uint32_t last_mpxr;<br>
> - uint32_t first_mpxc;<br>
> - uint32_t last_mpxc;<br>
><br>
> uint32_t first_dr;<br>
> uint32_t gpr_flags;<br>
> @@ -139,7 +134,6 @@ namespace process_linux {<br>
> FPR m_fpr;<br>
> IOVEC m_iovec;<br>
> YMM m_ymm_set;<br>
> - MPX m_mpx_set;<br>
> RegInfo m_reg_info;<br>
> uint64_t m_gpr_x86_64[k_num_gpr_<wbr>registers_x86_64];<br>
> uint32_t m_fctrl_offset_in_userarea;<br>
> @@ -166,16 +160,7 @@ namespace process_linux {<br>
> CopyYMMtoXSTATE(uint32_t reg, lldb::ByteOrder byte_order);<br>
><br>
> bool<br>
> - CopyXSTATEtoMPX(uint32_t reg);<br>
> -<br>
> - bool<br>
> - CopyMPXtoXSTATE(uint32_t reg);<br>
> -<br>
> - bool<br>
> - IsAVX(uint32_t reg_index) const;<br>
> -<br>
> - bool<br>
> - IsMPX(uint32_t reg_index) const;<br>
> + IsAVX (uint32_t reg_index) const;<br>
> };<br>
><br>
> } // namespace process_linux<br>
><br>
> Modified: lldb/trunk/source/Plugins/<wbr>Process/Utility/<wbr>RegisterContext_x86.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/<wbr>Plugins/Process/Utility/<wbr>RegisterContext_x86.h?rev=2<br>
> 80703&r1=280702&r2=280703&<wbr>view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> --- lldb/trunk/source/Plugins/<wbr>Process/Utility/<wbr>RegisterContext_x86.h (original)<br>
> +++ lldb/trunk/source/Plugins/<wbr>Process/Utility/<wbr>RegisterContext_x86.h Tue Sep 6<br>
> 06:00:37 2016<br>
> @@ -116,13 +116,10 @@ enum<br>
> dwarf_ss_i386 = 42,<br>
> dwarf_ds_i386 = 43,<br>
> dwarf_fs_i386 = 44,<br>
> - dwarf_gs_i386 = 45,<br>
> + dwarf_gs_i386 = 45<br>
> +<br>
> // I believe the ymm registers use the dwarf_xmm%_i386 register numbers<br>
> and<br>
> // then differentiate based on size of the register.<br>
> - dwarf_bnd0_i386 = 101,<br>
> - dwarf_bnd1_i386,<br>
> - dwarf_bnd2_i386,<br>
> - dwarf_bnd3_i386,<br>
> };<br>
><br>
> //----------------------------<wbr>------------------------------<wbr>-----------------<br>
> @@ -219,11 +216,6 @@ enum<br>
> dwarf_ymm13h_x86_64,<br>
> dwarf_ymm14h_x86_64,<br>
> dwarf_ymm15h_x86_64,<br>
> - // MPX registers<br>
> - dwarf_bnd0_x86_64 = 126,<br>
> - dwarf_bnd1_x86_64,<br>
> - dwarf_bnd2_x86_64,<br>
> - dwarf_bnd3_x86_64,<br>
> // AVX2 Vector Mask Registers<br>
> // dwarf_k0_x86_64 = 118,<br>
> // dwarf_k1_x86_64,<br>
> @@ -299,39 +291,19 @@ struct YMM<br>
> YMMReg ymm[16]; // assembled from ymmh and xmm registers<br>
> };<br>
><br>
> -struct MPXReg<br>
> -{<br>
> - uint8_t bytes[16]; // MPX 128 bit bound registers<br>
> -};<br>
> -<br>
> -struct MPXCsr<br>
> -{<br>
> - uint8_t bytes[8]; // MPX 64 bit bndcfgu and bndstatus registers<br>
> (collectively BNDCSR state)<br>
> -};<br>
> -<br>
> -struct MPX<br>
> -{<br>
> - MPXReg mpxr[4];<br>
> - MPXCsr mpxc[2];<br>
> -};<br>
> -<br>
> struct XSAVE_HDR<br>
> {<br>
> uint64_t xstate_bv; // OS enabled xstate mask to determine the extended<br>
> states supported by the processor<br>
> - uint64_t xcomp_bv; // Mask to indicate the format of the XSAVE area and<br>
> of the XRSTOR instruction<br>
> - uint64_t reserved1[1];<br>
> + uint64_t reserved1[2];<br>
> uint64_t reserved2[5];<br>
> } __attribute__((packed));<br>
><br>
> -// x86 extensions to FXSAVE (i.e. for AVX and MPX processors)<br>
> -struct XSAVE<br>
> +// x86 extensions to FXSAVE (i.e. for AVX processors)<br>
> +struct XSAVE<br>
> {<br>
> FXSAVE i387; // floating point registers typical in i387_fxsave_struct<br>
> XSAVE_HDR header; // The xsave_hdr_struct can be used to determine if<br>
> the following extensions are usable<br>
> YMMHReg ymmh[16]; // High 16 bytes of each of 16 YMM registers (the<br>
> low bytes are in FXSAVE.xmm for compatibility with SSE)<br>
> - uint64_t reserved3[16];<br>
> - MPXReg mpxr[4]; // MPX BNDREG state, containing 128-bit bound<br>
> registers BND0-BND3<br>
> - MPXCsr mpxc[2]; // MPX BNDCSR state, containing 64-bit BNDCFGU and<br>
> BNDSTATUS registers<br>
> // Slot any extensions to the register file here<br>
> } __attribute__((packed, aligned (64)));<br>
><br>
><br>
> Modified: lldb/trunk/source/Plugins/<wbr>Process/Utility/RegisterInfos_<wbr>i386.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/<wbr>Plugins/Process/Utility/<wbr>RegisterInfos_i386.h?rev=280<br>
> 703&r1=280702&r2=280703&view=<wbr>diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> --- lldb/trunk/source/Plugins/<wbr>Process/Utility/RegisterInfos_<wbr>i386.h (original)<br>
> +++ lldb/trunk/source/Plugins/<wbr>Process/Utility/RegisterInfos_<wbr>i386.h Tue Sep 6<br>
> 06:00:37 2016<br>
> @@ -35,16 +35,6 @@<br>
> LLVM_EXTENSION offsetof(FXSAVE, xmm[7]) + \<br>
> sizeof(XMMReg) + (32 * reg_index))<br>
><br>
> -#define BNDR_OFFSET(reg_index) \<br>
> - (LLVM_EXTENSION offsetof(UserArea, i387) + \<br>
> - LLVM_EXTENSION offsetof(FPR, xstate) + \<br>
> - LLVM_EXTENSION offsetof(XSAVE, mpxr[reg_index]))<br>
> -<br>
> -#define BNDC_OFFSET(reg_index) \<br>
> - (LLVM_EXTENSION offsetof(UserArea, i387) + \<br>
> - LLVM_EXTENSION offsetof(FPR, xstate) + \<br>
> - LLVM_EXTENSION offsetof(XSAVE, mpxc[reg_index]))<br>
> -<br>
> // Number of bytes needed to represent a FPR.<br>
> #if !defined(FPR_SIZE)<br>
> #define FPR_SIZE(reg) sizeof(((FXSAVE*)NULL)->reg)<br>
> @@ -59,10 +49,6 @@<br>
> // Number of bytes needed to represent a YMM register.<br>
> #define YMM_SIZE sizeof(YMMReg)<br>
><br>
> -// Number of bytes needed to represent MPX registers.<br>
> -#define BNDR_SIZE sizeof(MPXReg)<br>
> -#define BNDC_SIZE sizeof(MPXCsr)<br>
> -<br>
> // Note that the size and offset will be updated by platform-specific classes.<br>
> #define DEFINE_GPR(reg, alt, kind1, kind2, kind3, kind4) \<br>
> { #reg, alt, sizeof(((GPR*)NULL)->reg), GPR_OFFSET(reg), eEncodingUint, \<br>
> @@ -99,18 +85,6 @@<br>
> { LLDB_INVALID_REGNUM, dwarf_xmm##i##_i386,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_##reg##i##_i386 }, \<br>
> NULL, NULL, NULL, 0}<br>
><br>
> -#define DEFINE_BNDR(reg, i) \<br>
> - { #reg#i, NULL, BNDR_SIZE, LLVM_EXTENSION BNDR_OFFSET(i), \<br>
> - eEncodingVector, eFormatVectorOfUInt64, \<br>
> - { dwarf_##reg##i##_i386, dwarf_##reg##i##_i386,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_##reg##i##_i386 }, \<br>
> - NULL, NULL }<br>
> -<br>
> -#define DEFINE_BNDC(name, i) \<br>
> - { #name, NULL, BNDC_SIZE, LLVM_EXTENSION BNDC_OFFSET(i), \<br>
> - eEncodingVector, eFormatVectorOfUInt8, \<br>
> - { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_##name##_x86_64 }, \<br>
> - NULL, NULL }<br>
> -<br>
> #define DEFINE_DR(reg, i) \<br>
> { #reg#i, NULL, DR_SIZE, DR_OFFSET(i), eEncodingUint, eFormatHex, \<br>
> { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,<br>
> LLDB_INVALID_REGNUM, \<br>
> @@ -214,15 +188,6 @@ g_register_infos_i386[] =<br>
> DEFINE_YMM(ymm, 6),<br>
> DEFINE_YMM(ymm, 7),<br>
><br>
> - // MPX registers<br>
> - DEFINE_BNDR(bnd, 0),<br>
> - DEFINE_BNDR(bnd, 1),<br>
> - DEFINE_BNDR(bnd, 2),<br>
> - DEFINE_BNDR(bnd, 3),<br>
> -<br>
> - DEFINE_BNDC(bndcfgu, 0),<br>
> - DEFINE_BNDC(bndstatus, 1),<br>
> -<br>
> // Debug registers for lldb internal use<br>
> DEFINE_DR(dr, 0),<br>
> DEFINE_DR(dr, 1),<br>
><br>
> Modified: lldb/trunk/source/Plugins/<wbr>Process/Utility/RegisterInfos_<wbr>x86_64.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/<wbr>Plugins/Process/Utility/<wbr>RegisterInfos_x86_64.h?rev=2<br>
> 80703&r1=280702&r2=280703&<wbr>view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> --- lldb/trunk/source/Plugins/<wbr>Process/Utility/RegisterInfos_<wbr>x86_64.h (original)<br>
> +++ lldb/trunk/source/Plugins/<wbr>Process/Utility/RegisterInfos_<wbr>x86_64.h Tue Sep 6<br>
> 06:00:37 2016<br>
> @@ -34,16 +34,6 @@<br>
> LLVM_EXTENSION offsetof(XSAVE, ymmh[0]) + \<br>
> (32 * reg_index))<br>
><br>
> -#define BNDR_OFFSET(reg_index) \<br>
> - (LLVM_EXTENSION offsetof(UserArea, fpr) + \<br>
> - LLVM_EXTENSION offsetof(FPR, xstate) + \<br>
> - LLVM_EXTENSION offsetof(XSAVE, mpxr[reg_index]))<br>
> -<br>
> -#define BNDC_OFFSET(reg_index) \<br>
> - (LLVM_EXTENSION offsetof(UserArea, fpr) + \<br>
> - LLVM_EXTENSION offsetof(FPR, xstate) + \<br>
> - LLVM_EXTENSION offsetof(XSAVE, mpxc[reg_index]))<br>
> -<br>
> #ifdef DECLARE_REGISTER_INFOS_X86_64_<wbr>STRUCT<br>
><br>
> // Number of bytes needed to represent a FPR.<br>
> @@ -58,10 +48,6 @@<br>
> // Number of bytes needed to represent a YMM register.<br>
> #define YMM_SIZE sizeof(YMMReg)<br>
><br>
> -// Number of bytes needed to represent MPX registers.<br>
> -#define BNDR_SIZE sizeof(MPXReg)<br>
> -#define BNDC_SIZE sizeof(MPXCsr)<br>
> -<br>
> #define DR_SIZE sizeof(((DBG*)NULL)->dr[0])<br>
><br>
> // RegisterKind: EHFrame, DWARF, Generic, Process Plugin, LLDB<br>
> @@ -99,18 +85,6 @@<br>
> { dwarf_##reg##i##h_x86_64, dwarf_##reg##i##h_x86_64,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_##reg##i##_x86_64 },<br>
> \<br>
> NULL, NULL, NULL, 0}<br>
><br>
> -#define DEFINE_BNDR(reg, i) \<br>
> - { #reg#i, NULL, BNDR_SIZE, LLVM_EXTENSION BNDR_OFFSET(i),<br>
> \<br>
> - eEncodingVector, eFormatVectorOfUInt64, \<br>
> - { dwarf_##reg##i##_x86_64, dwarf_##reg##i##_x86_64,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_##reg##i##_x86_64 },<br>
> \<br>
> - NULL, NULL }<br>
> -<br>
> -#define DEFINE_BNDC(name, i) \<br>
> - { #name, NULL, BNDC_SIZE, LLVM_EXTENSION BNDC_OFFSET(i),<br>
> \<br>
> - eEncodingVector, eFormatVectorOfUInt8, \<br>
> - { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,<br>
> LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, lldb_##name##_x86_64 }, \<br>
> - NULL, NULL }<br>
> -<br>
> #define DEFINE_DR(reg, i) \<br>
> { #reg#i, NULL, DR_SIZE, DR_OFFSET(i), eEncodingUint, eFormatHex, \<br>
> { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,<br>
> LLDB_INVALID_REGNUM, \<br>
> @@ -277,15 +251,6 @@ g_register_infos_x86_64[] =<br>
> DEFINE_YMM(ymm, 14),<br>
> DEFINE_YMM(ymm, 15),<br>
><br>
> - // MPX registers<br>
> - DEFINE_BNDR(bnd, 0),<br>
> - DEFINE_BNDR(bnd, 1),<br>
> - DEFINE_BNDR(bnd, 2),<br>
> - DEFINE_BNDR(bnd, 3),<br>
> -<br>
> - DEFINE_BNDC(bndcfgu, 0),<br>
> - DEFINE_BNDC(bndstatus, 1),<br>
> -<br>
> // Debug registers for lldb internal use<br>
> DEFINE_DR(dr, 0),<br>
> DEFINE_DR(dr, 1),<br>
><br>
> Modified: lldb/trunk/source/Plugins/<wbr>Process/Utility/lldb-x86-<wbr>register-enums.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/<wbr>Plugins/Process/Utility/lldb-<wbr>x86-register-<br>
> enums.h?rev=280703&r1=280702&<wbr>r2=280703&view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> --- lldb/trunk/source/Plugins/<wbr>Process/Utility/lldb-x86-<wbr>register-enums.h (original)<br>
> +++ lldb/trunk/source/Plugins/<wbr>Process/Utility/lldb-x86-<wbr>register-enums.h Tue Sep<br>
> 6 06:00:37 2016<br>
> @@ -106,18 +106,6 @@ namespace lldb_private<br>
> lldb_ymm7_i386,<br>
> k_last_avx_i386 = lldb_ymm7_i386,<br>
><br>
> - k_first_mpxr_i386,<br>
> - lldb_bnd0_i386 = k_first_mpxr_i386,<br>
> - lldb_bnd1_i386,<br>
> - lldb_bnd2_i386,<br>
> - lldb_bnd3_i386,<br>
> - k_last_mpxr = lldb_bnd3_i386,<br>
> -<br>
> - k_first_mpxc_i386,<br>
> - lldb_bndcfgu_i386 = k_first_mpxc_i386,<br>
> - lldb_bndstatus_i386,<br>
> - k_last_mpxc_i386 = lldb_bndstatus_i386,<br>
> -<br>
> lldb_dr0_i386,<br>
> lldb_dr1_i386,<br>
> lldb_dr2_i386,<br>
> @@ -131,8 +119,7 @@ namespace lldb_private<br>
> k_num_gpr_registers_i386 = k_last_gpr_i386 - k_first_gpr_i386 + 1,<br>
> k_num_fpr_registers_i386 = k_last_fpr_i386 - k_first_fpr_i386 + 1,<br>
> k_num_avx_registers_i386 = k_last_avx_i386 - k_first_avx_i386 + 1,<br>
> - k_num_mpx_registers_i386 = k_last_mpxc_i386 - k_first_mpxr_i386 + 1,<br>
> - k_num_user_registers_i386 = k_num_gpr_registers_i386 +<br>
> k_num_fpr_registers_i386 + k_num_avx_registers_i386 +<br>
> k_num_mpx_registers_i386,<br>
> + k_num_user_registers_i386 = k_num_gpr_registers_i386 +<br>
> k_num_fpr_registers_i386 + k_num_avx_registers_i386,<br>
> };<br>
><br>
> //----------------------------<wbr>------------------------------<wbr>-----------------<br>
> @@ -287,18 +274,6 @@ namespace lldb_private<br>
> lldb_ymm15_x86_64,<br>
> k_last_avx_x86_64 = lldb_ymm15_x86_64,<br>
><br>
> - k_first_mpxr_x86_64,<br>
> - lldb_bnd0_x86_64 = k_first_mpxr_x86_64,<br>
> - lldb_bnd1_x86_64,<br>
> - lldb_bnd2_x86_64,<br>
> - lldb_bnd3_x86_64,<br>
> - k_last_mpxr_x86_64 = lldb_bnd3_x86_64,<br>
> -<br>
> - k_first_mpxc_x86_64,<br>
> - lldb_bndcfgu_x86_64 = k_first_mpxc_x86_64,<br>
> - lldb_bndstatus_x86_64,<br>
> - k_last_mpxc_x86_64 = lldb_bndstatus_x86_64,<br>
> -<br>
> lldb_dr0_x86_64,<br>
> lldb_dr1_x86_64,<br>
> lldb_dr2_x86_64,<br>
> @@ -312,8 +287,7 @@ namespace lldb_private<br>
> k_num_gpr_registers_x86_64 = k_last_gpr_x86_64 - k_first_gpr_x86_64 +<br>
> 1,<br>
> k_num_fpr_registers_x86_64 = k_last_fpr_x86_64 - k_first_fpr_x86_64 + 1,<br>
> k_num_avx_registers_x86_64 = k_last_avx_x86_64 - k_first_avx_x86_64 +<br>
> 1,<br>
> - k_num_mpx_registers_x86_64 = k_last_mpxc_x86_64 -<br>
> k_first_mpxr_x86_64 + 1,<br>
> - k_num_user_registers_x86_64 = k_num_gpr_registers_x86_64 +<br>
> k_num_fpr_registers_x86_64 + k_num_avx_registers_x86_64 +<br>
> k_num_mpx_registers_x86_64,<br>
> + k_num_user_registers_x86_64 = k_num_gpr_registers_x86_64 +<br>
> k_num_fpr_registers_x86_64 + k_num_avx_registers_x86_64,<br>
> };<br>
><br>
> }<br>
><br>
> Modified: lldb/trunk/source/Plugins/<wbr>Process/gdb-<br>
> remote/<wbr>GDBRemoteCommunicationServerLL<wbr>GS.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/<wbr>Plugins/Process/gdb-<br>
> remote/<wbr>GDBRemoteCommunicationServerLL<wbr>GS.cpp?rev=280703&r1=280702&r<br>
> 2=280703&view=diff<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> --- lldb/trunk/source/Plugins/<wbr>Process/gdb-<br>
> remote/<wbr>GDBRemoteCommunicationServerLL<wbr>GS.cpp (original)<br>
> +++ lldb/trunk/source/Plugins/<wbr>Process/gdb-<br>
> remote/<wbr>GDBRemoteCommunicationServerLL<wbr>GS.cpp Tue Sep 6 06:00:37 2016<br>
> @@ -1566,7 +1566,6 @@ GDBRemoteCommunicationServerLL<wbr>GS::Handle<br>
> case eFormatVectorOfSInt32: response.PutCString ("format:vector-<br>
> sint32;"); break;<br>
> case eFormatVectorOfUInt32: response.PutCString ("format:vector-<br>
> uint32;"); break;<br>
> case eFormatVectorOfFloat32: response.PutCString ("format:vector-<br>
> float32;"); break;<br>
> - case eFormatVectorOfUInt64: response.PutCString ("format:vector-<br>
> uint64;"); break;<br>
> case eFormatVectorOfUInt128: response.PutCString ("format:vector-<br>
> uint128;"); break;<br>
> default: break;<br>
> };<br>
><br>
> Modified: lldb/trunk/source/Plugins/<wbr>Process/gdb-<br>
> remote/ProcessGDBRemote.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/<wbr>Plugins/Process/gdb-<br>
> remote/ProcessGDBRemote.cpp?<wbr>rev=280703&r1=280702&r2=<wbr>280703&view=dif<br>
> f<br>
> ==============================<wbr>==============================<wbr>=====<br>
> =============<br>
> --- lldb/trunk/source/Plugins/<wbr>Process/gdb-remote/<wbr>ProcessGDBRemote.cpp<br>
> (original)<br>
> +++ lldb/trunk/source/Plugins/<wbr>Process/gdb-remote/<wbr>ProcessGDBRemote.cpp Tue<br>
> Sep 6 06:00:37 2016<br>
> @@ -610,7 +610,6 @@ ProcessGDBRemote::<wbr>BuildDynamicRegisterIn<br>
> .Case("vector-sint32", eFormatVectorOfSInt32)<br>
> .Case("vector-uint32", eFormatVectorOfUInt32)<br>
> .Case("vector-float32", eFormatVectorOfFloat32)<br>
> - .Case("vector-uint64", eFormatVectorOfUInt64)<br>
> .Case("vector-uint128", eFormatVectorOfUInt128)<br>
> .Default(eFormatInvalid);<br>
> }<br>
> @@ -4546,8 +4545,6 @@ ParseRegisters (XMLNode feature_node, Gd<br>
> reg_info.format = eFormatVectorOfUInt32;<br>
> else if (value == "vector-float32")<br>
> reg_info.format = eFormatVectorOfFloat32;<br>
> - else if (value == "vector-uint64")<br>
> - reg_info.format = eFormatVectorOfUInt64;<br>
> else if (value == "vector-uint128")<br>
> reg_info.format = eFormatVectorOfUInt128;<br>
> }<br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> lldb-commits mailing list<br>
> <a href="mailto:lldb-commits@lists.llvm.org">lldb-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/lldb-commits</a><br>
Intel Deutschland GmbH<br>
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany<br>
Tel: +49 89 99 8853-0, <a href="http://www.intel.de" rel="noreferrer" target="_blank">www.intel.de</a><br>
Managing Directors: Christin Eisenschmid, Christian Lamprechter<br>
Chairperson of the Supervisory Board: Nicole Lau<br>
Registered Office: Munich<br>
Commercial Register: Amtsgericht Muenchen HRB 186928<br>
</blockquote></div><br></div>