<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Thanks! I just figured that the errors are caused by some missing configuration in the Makefile and by different behavior of 32b Python.<br>
The fix should be available soon.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">BR<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">- Val<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></a></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Dimitar Vlahovski [mailto:dvlahovski@google.com]
<br>
<b>Sent:</b> Tuesday, September 6, 2016 2:36 PM<br>
<b>To:</b> Giusti, Valentina <valentina.giusti@intel.com><br>
<b>Cc:</b> lldb-commits@lists.llvm.org<br>
<b>Subject:</b> Re: [Lldb-commits] [lldb] r280703 - Revert "Intel(R) Memory Protection Extensions (Intel(R) MPX) support."<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">Hi,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I built lldb with this cmake config:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> 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<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The failing tests logs are here:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><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><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><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><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The tests are failing for i386.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">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)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">And just debugged that with lldb and did a "register read -a".<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Hope that helps,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Dimitar<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Tue, Sep 6, 2016 at 12:34 PM, Giusti, Valentina <<a href="mailto:valentina.giusti@intel.com" target="_blank">valentina.giusti@intel.com</a>> wrote:<o:p></o:p></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">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@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" target="_blank">
http://llvm.org/viewvc/llvm-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:1032;encoding:vector;format:vector-<br>
> uint64;set:Memory<br>
> Protection Extensions;ehframe:101;dwarf: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:1048;encoding:vector;format:vector-<br>
> uint64;set:Memory<br>
> Protection Extensions;ehframe:102;dwarf: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:1064;encoding:vector;format:vector-<br>
> uint64;set:Memory<br>
> Protection Extensions;ehframe:103;dwarf: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:1080;encoding:vector;format:vector-<br>
> uint64;set:Memory<br>
> Protection Extensions;ehframe:104;dwarf: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;offset:1096;encoding:vector;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;offset:1104;encoding:vector;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/lldbsuite/test/functionalities/register/Makefile<br>
>       - copied, changed from r280697,<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/Makefile<br>
><br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/TestRegisters<br>
> .py<br>
>       - copied, changed from r280697,<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/TestRegisters.py<br>
>     lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/a.cpp<br>
>       - copied, changed from r280697,<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/a.cpp<br>
>     lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/main.cpp<br>
>       - copied, changed from r280697,<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/main.cpp<br>
> Removed:<br>
><br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/Makefile<br>
><br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/TestMPXRegisters.py<br>
><br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/main.cpp<br>
><br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/Makefile<br>
><br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/TestRegisters.py<br>
><br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/a.cpp<br>
><br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/main.cpp<br>
> Modified:<br>
>     lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp<br>
>     lldb/trunk/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp<br>
><br>
> lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cp<br>
> p<br>
><br>
> lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.h<br>
>     lldb/trunk/source/Plugins/Process/Utility/RegisterContext_x86.h<br>
>     lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_i386.h<br>
>     lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_x86_64.h<br>
>     lldb/trunk/source/Plugins/Process/Utility/lldb-x86-register-enums.h<br>
>     lldb/trunk/source/Plugins/Process/gdb-<br>
> remote/GDBRemoteCommunicationServerLLGS.cpp<br>
>     lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp<br>
><br>
> Copied:<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/Makefile<br>
> (from r280697,<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/Makefile)<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/Make<br>
> file?p2=lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/Make<br>
> file&p1=lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/regis<br>
> ter_command/Makefile&r1=280697&r2=280703&rev=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/Makefile (original)<br>
> +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/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/lldbsuite/test/functionalities/register/TestRegisters<br>
> .py (from r280697,<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/TestRegisters.py)<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/TestR<br>
> egisters.py?p2=lldb/trunk/packages/Python/lldbsuite/test/functionalities/regist<br>
> er/TestRegisters.py&p1=lldb/trunk/packages/Python/lldbsuite/test/functionaliti<br>
> es/register/register_command/TestRegisters.py&r1=280697&r2=280703&rev=2<br>
> 80703&view=diff<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/TestRegisters.py (original)<br>
> +++<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/TestRegisters<br>
> .py Tue Sep  6 06:00:37 2016<br>
> @@ -41,12 +41,11 @@ class RegisterCommandsTestCase(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=["i386"]) # Writing of mxcsr register fails,<br>
> presumably due to a kernel/hardware problem<br>
> @@ -290,14 +289,12 @@ class RegisterCommandsTestCase(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(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(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/lldbsuite/test/functionalities/register/a.cpp<br>
> (from r280697,<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/a.cpp)<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/a.cpp<br>
> ?p2=lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/a.cpp&p<br>
> 1=lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_c<br>
> ommand/a.cpp&r1=280697&r2=280703&rev=280703&view=diff<br>
> =================================================================<br>
> =============<br>
>     (empty)<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/Makefile<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_<br>
> xtended_registers/Makefile?rev=280702&view=auto<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/Makefile (original)<br>
> +++<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/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/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/TestMPXRegisters.py<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_<br>
> xtended_registers/TestMPXRegisters.py?rev=280702&view=auto<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/TestMPXRegisters.py (original)<br>
> +++<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/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(TestBase):<br>
> -<br>
> -    mydir = TestBase.compute_mydir(__file__)<br>
> -<br>
> -    def setUp(self):<br>
> -        TestBase.setUp(self)<br>
> -        self.has_teardown = False<br>
> -<br>
> -    def tearDown(self):<br>
> -        self.dbg.GetSelectedTarget().GetProcess().Destroy()<br>
> -        TestBase.tearDown(self)<br>
> -<br>
> -    @skipIfiOSSimulator<br>
> -    @skipIf(compiler="clang")<br>
> -    @expectedFailureAll(oslist=["linux"], compiler="gcc", compiler_version=["<",<br>
> "5"])<br>
> -    @skipIf(archs=no_match(['amd64', 'i386', 'x86_64']))<br>
> -    def test_mpx_registers_with_example_code(self):<br>
> -        """Test MPX registers with example code."""<br>
> -        self.build()<br>
> -        self.mpx_registers_with_example_code()<br>
> -<br>
> -    def mpx_registers_with_example_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-strategy always')<br>
> -        self.addTearDownHook(<br>
> -            lambda: self.runCmd("settings set target.inline-breakpoint-strategy<br>
> always"))<br>
> -<br>
> -        lldbutil.run_break_set_by_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/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/main.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_<br>
> xtended_registers/main.cpp?rev=280702&view=auto<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/main.cpp (original)<br>
> +++<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/intel_xtended<br>
> _registers/main.cpp (removed)<br>
> @@ -1,69 +0,0 @@<br>
> -//===-- main.cpp ------------------------------------------------*- 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>
> -////===----------------------------------------------------------------------===//<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/lldbsuite/test/functionalities/register/main.cpp<br>
> (from r280697,<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/main.cpp)<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/main.<br>
> cpp?p2=lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/main<br>
> .cpp&p1=lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/regi<br>
> ster_command/main.cpp&r1=280697&r2=280703&rev=280703&view=diff<br>
> =================================================================<br>
> =============<br>
>     (empty)<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/Makefile<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/regist<br>
> er_command/Makefile?rev=280702&view=auto<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/Makefile (original)<br>
> +++<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/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/lldbsuite/test/functionalities/register/register_com<br>
> mand/TestRegisters.py<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/regist<br>
> er_command/TestRegisters.py?rev=280702&view=auto<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/TestRegisters.py (original)<br>
> +++<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/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(TestBase):<br>
> -<br>
> -    mydir = TestBase.compute_mydir(__file__)<br>
> -<br>
> -    def setUp(self):<br>
> -        TestBase.setUp(self)<br>
> -        self.has_teardown = False<br>
> -<br>
> -    def tearDown(self):<br>
> -        self.dbg.GetSelectedTarget().GetProcess().Destroy()<br>
> -        TestBase.tearDown(self)<br>
> -<br>
> -    @skipIfiOSSimulator<br>
> -    @skipIf(archs=no_match(['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=["i386"]) # Writing of mxcsr register fails,<br>
> presumably due to a kernel/hardware problem<br>
> -    @skipIf(archs=no_match(['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=["i386"]) # "register read fstat" always<br>
> return 0xffff<br>
> -    @skipIfFreeBSD    #<a href="http://llvm.org/pr25057" target="_blank">llvm.org/pr25057</a><br>
> -    @skipIf(archs=no_match(['amd64', 'i386', 'x86_64']))<br>
> -    def test_fp_special_purpose_register_read(self):<br>
> -        """Test commands that read fpu special purpose registers."""<br>
> -        self.build()<br>
> -        self.fp_special_purpose_register_read()<br>
> -<br>
> -    @skipIfiOSSimulator<br>
> -    @skipIf(archs=no_match(['amd64', 'arm', 'i386', 'x86_64']))<br>
> -    def test_register_expressions(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(['amd64', 'x86_64']))<br>
> -    def test_convenience_registers(self):<br>
> -        """Test convenience registers."""<br>
> -        self.build()<br>
> -        self.convenience_registers()<br>
> -<br>
> -    @skipIfiOSSimulator<br>
> -    @skipIf(archs=no_match(['amd64', 'x86_64']))<br>
> -    def test_convenience_registers_with_process_attach(self):<br>
> -        """Test convenience registers after a 'process attach'."""<br>
> -        self.build()<br>
> -        self.convenience_registers_with_process_attach(test_16bit_regs=False)<br>
> -<br>
> -    @skipIfiOSSimulator<br>
> -    @skipIf(archs=no_match(['amd64', 'x86_64']))<br>
> -    def test_convenience_registers_16bit_with_process_attach(self):<br>
> -        """Test convenience registers after a 'process attach'."""<br>
> -        self.build()<br>
> -        self.convenience_registers_with_process_attach(test_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_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("darwin"):<br>
> -            self.platform = "" # TODO: add support for "log enable darwin registers"<br>
> -<br>
> -        if sys.platform.startswith("freebsd"):<br>
> -            self.platform = "freebsd"<br>
> -<br>
> -        if sys.platform.startswith("linux"):<br>
> -            self.platform = "linux"<br>
> -<br>
> -        if sys.platform.startswith("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_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(), "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_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.GetState() == lldb.eStateStopped,<br>
> -                        PROCESS_STOPPED)<br>
> -<br>
> -        thread = process.GetThreadAtIndex(0)<br>
> -        self.assertTrue(thread.IsValid(), "current thread is valid")<br>
> -<br>
> -        currentFrame = thread.GetFrameAtIndex(0)<br>
> -        self.assertTrue(currentFrame.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", lldb.eValueTypeRegister)<br>
> -        error = lldb.SBError()<br>
> -        reg_value_fstat_initial = value.GetValueAsUnsigned(error, 0)<br>
> -<br>
> -        self.assertTrue(error.Success(), "reading a value for fstat")<br>
> -        value = currentFrame.FindValue("ftag", lldb.eValueTypeRegister)<br>
> -        error = lldb.SBError()<br>
> -        reg_value_ftag_initial = value.GetValueAsUnsigned(error, 0)<br>
> -<br>
> -        self.assertTrue(error.Success(), "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_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_directory())<br>
> -<br>
> -        process = target.GetProcess()<br>
> -        self.assertTrue(process.GetState() == lldb.eStateStopped,<br>
> PROCESS_STOPPED)<br>
> -<br>
> -        thread = process.GetThreadAtIndex(0)<br>
> -        self.assertTrue(thread.IsValid(), "current thread is valid")<br>
> -<br>
> -        currentFrame = thread.GetFrameAtIndex(0)<br>
> -        self.assertTrue(currentFrame.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("st0").IsValid():<br>
> -                st0regname = "st0"<br>
> -            elif currentFrame.FindRegister("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(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(currentFrame, "ymm0", new_value)<br>
> -                self.write_and_read(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(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_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.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/lldbsuite/test/functionalities/register/register_com<br>
> mand/a.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/regist<br>
> er_command/a.cpp?rev=280702&view=auto<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/a.cpp (original)<br>
> +++<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/a.cpp (removed)<br>
> @@ -1,44 +0,0 @@<br>
> -//===-- a.cpp ------------------------------------------------*- 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>
> -//===----------------------------------------------------------------------===//<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(value);<br>
> -    val *= 2 ;<br>
> -    return val;<br>
> -}<br>
><br>
> Removed:<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/main.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/regist<br>
> er_command/main.cpp?rev=280702&view=auto<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/main.cpp (original)<br>
> +++<br>
> lldb/trunk/packages/Python/lldbsuite/test/functionalities/register/register_com<br>
> mand/main.cpp (removed)<br>
> @@ -1,36 +0,0 @@<br>
> -//===-- main.cpp ------------------------------------------------*- 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>
> -//===----------------------------------------------------------------------===//<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[])<o:p></o:p></p>
<p class="MsoNormal">> -{<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(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/SysV-i386/ABISysV_i386.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-" target="_blank">
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-</a><br>
> i386/ABISysV_i386.cpp?rev=280703&r1=280702&r2=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> --- lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp (original)<br>
> +++ lldb/trunk/source/Plugins/ABI/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_register_infos);<br>
><br>
> Modified: lldb/trunk/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-" target="_blank">
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-</a><br>
> x86_64/ABISysV_x86_64.cpp?rev=280703&r1=280702&r2=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> --- lldb/trunk/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp (original)<br>
> +++ lldb/trunk/source/Plugins/ABI/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_register_infos);<br>
><br>
> Modified:<br>
> lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cp<br>
> p<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x<br>
> 86_64.cpp?rev=280703&r1=280702&r2=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cp<br>
> p (original)<br>
> +++<br>
> lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.cp<br>
> p Tue Sep  6 06:00:37 2016<br>
> @@ -130,21 +130,6 @@ namespace<br>
>      static_assert((sizeof(g_avx_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_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_regnums_x86_64) /<br>
> sizeof(g_avx_regnums_x86_64[0])) - 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_regnums_x86_64) /<br>
> sizeof(g_mpx_regnums_x86_64[0])) - 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_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_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_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_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_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_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_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_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.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.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_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_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_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_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_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.SetErrorStringWithFormat(<br>
> -                    "NativeRegisterContextLinux_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_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.SetErrorStringWithFormat(<br>
> -                    "NativeRegisterContextLinux_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_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_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_x86_64::ReadF<br>
>  {<br>
>      const FPRType fpr_type = GetFPRType ();<br>
>      const lldb_private::ArchSpec& target_arch =<br>
> GetRegisterInfoInterface().GetTargetArchitecture();<br>
> -<br>
>      switch (fpr_type)<br>
>      {<br>
>      case FPRType::eFPRTypeFXSAVE:<br>
> @@ -1144,50 +1029,6 @@ NativeRegisterContextLinux_x86_64::ReadF<br>
>      }<br>
>  }<br>
><br>
> -bool<br>
> -NativeRegisterContextLinux_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_x86_64::CopyXSTATEtoMPX(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_x86_64::CopyMPXtoXSTATE(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.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.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_x86_64::IsWatchpointHit(uint32_t wp_index, bool<br>
> &is_hit)<br>
>  {<br>
><br>
> Modified:<br>
> lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x<br>
> 86_64.h?rev=280703&r1=280702&r2=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> ---<br>
> lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_x86_64.h<br>
> (original)<br>
> +++<br>
> lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_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_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/Process/Utility/RegisterContext_x86.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/Plugins/Process/Utility/RegisterContext_x86.h?rev=2<br>
> 80703&r1=280702&r2=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> --- lldb/trunk/source/Plugins/Process/Utility/RegisterContext_x86.h (original)<br>
> +++ lldb/trunk/source/Plugins/Process/Utility/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>
>  //---------------------------------------------------------------------------<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/Process/Utility/RegisterInfos_i386.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_i386.h?rev=280<br>
> 703&r1=280702&r2=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> --- lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_i386.h (original)<br>
> +++ lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_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/Process/Utility/RegisterInfos_x86_64.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_x86_64.h?rev=2<br>
> 80703&r1=280702&r2=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> --- lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_x86_64.h (original)<br>
> +++ lldb/trunk/source/Plugins/Process/Utility/RegisterInfos_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_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/Process/Utility/lldb-x86-register-enums.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/Plugins/Process/Utility/lldb-x86-register-<br>
> enums.h?rev=280703&r1=280702&r2=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> --- lldb/trunk/source/Plugins/Process/Utility/lldb-x86-register-enums.h (original)<br>
> +++ lldb/trunk/source/Plugins/Process/Utility/lldb-x86-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>
>      //---------------------------------------------------------------------------<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/Process/gdb-<br>
> remote/GDBRemoteCommunicationServerLLGS.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/Plugins/Process/gdb-<br>
> remote/GDBRemoteCommunicationServerLLGS.cpp?rev=280703&r1=280702&r<br>
> 2=280703&view=diff<br>
> =================================================================<br>
> =============<br>
> --- lldb/trunk/source/Plugins/Process/gdb-<br>
> remote/GDBRemoteCommunicationServerLLGS.cpp (original)<br>
> +++ lldb/trunk/source/Plugins/Process/gdb-<br>
> remote/GDBRemoteCommunicationServerLLGS.cpp Tue Sep  6 06:00:37 2016<br>
> @@ -1566,7 +1566,6 @@ GDBRemoteCommunicationServerLLGS::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/Process/gdb-<br>
> remote/ProcessGDBRemote.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-" target="_blank">http://llvm.org/viewvc/llvm-</a><br>
> project/lldb/trunk/source/Plugins/Process/gdb-<br>
> remote/ProcessGDBRemote.cpp?rev=280703&r1=280702&r2=280703&view=dif<br>
> f<br>
> =================================================================<br>
> =============<br>
> --- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp<br>
> (original)<br>
> +++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp Tue<br>
> Sep  6 06:00:37 2016<br>
> @@ -610,7 +610,6 @@ ProcessGDBRemote::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>
> _______________________________________________<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" target="_blank">
http://lists.llvm.org/cgi-bin/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" 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<o:p></o:p></p>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<p><font style="font-size: 9px;">Intel Deutschland GmbH<br>
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany<br>
Tel: +49 89 99 8853-0, www.intel.de<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</font><br>
</p>
</body>
</html>