diff options
author | Dimitar Vlahovski <dvlahovski@google.com> | 2016-09-06 11:00:37 +0000 |
---|---|---|
committer | Dimitar Vlahovski <dvlahovski@google.com> | 2016-09-06 11:00:37 +0000 |
commit | ee44a92df6964df623f8bddca96b3007c80ce613 (patch) | |
tree | b63f0d3c19b7216a0e4b7703dac6aea077979d76 /lldb/packages/Python/lldbsuite | |
parent | 209b6e2e78d3817e797386c92f234d380d92918d (diff) | |
download | bcm5719-llvm-ee44a92df6964df623f8bddca96b3007c80ce613.tar.gz bcm5719-llvm-ee44a92df6964df623f8bddca96b3007c80ce613.zip |
Revert "Intel(R) Memory Protection Extensions (Intel(R) MPX) support."
This reverts commit rL280668 because the register tests fail on i386
Linux.
I investigated a little bit what causes the failure - there are missing
registers when running 'register read -a'.
This is the output I got at the bottom:
"""
...
Memory Protection Extensions:
bnd0 = {0x0000000000000000 0x0000000000000000}
bnd1 = {0x0000000000000000 0x0000000000000000}
bnd2 = {0x0000000000000000 0x0000000000000000}
bnd3 = {0x0000000000000000 0x0000000000000000}
unknown:
2 registers were unavailable.
"""
Also looking at the packets exchanged between the client and server:
"""
...
history[308] tid=0x7338 < 19> send packet: $qRegisterInfo4a#d7
history[309] tid=0x7338 < 130> read packet:
$name:bnd0;bitsize:128;offset:1032;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:101;dwarf:101;#48
history[310] tid=0x7338 < 19> send packet: $qRegisterInfo4b#d8
history[311] tid=0x7338 < 130> read packet:
$name:bnd1;bitsize:128;offset:1048;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:102;dwarf:102;#52
history[312] tid=0x7338 < 19> send packet: $qRegisterInfo4c#d9
history[313] tid=0x7338 < 130> read packet:
$name:bnd2;bitsize:128;offset:1064;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:103;dwarf:103;#53
history[314] tid=0x7338 < 19> send packet: $qRegisterInfo4d#da
history[315] tid=0x7338 < 130> read packet:
$name:bnd3;bitsize:128;offset:1080;encoding:vector;format:vector-uint64;set:Memory
Protection Extensions;ehframe:104;dwarf:104;#54
history[316] tid=0x7338 < 19> send packet: $qRegisterInfo4e#db
history[317] tid=0x7338 < 76> read packet:
$name:bndcfgu;bitsize:64;offset:1096;encoding:vector;format:vector-uint8;#99
history[318] tid=0x7338 < 19> send packet: $qRegisterInfo4f#dc
history[319] tid=0x7338 < 78> read packet:
$name:bndstatus;bitsize:64;offset:1104;encoding:vector;format:vector-uint8;#8e
...
"""
The bndcfgu and bndstatus registers don't have the 'Memory Protections
Extension' set. I looked at the code and it seems that that is set
correctly.
So I'm not sure what's the problem or where does it come from.
Also there is a second failure related to something like this in the
tests:
"""
registerSet.GetName().lower()
"""
For some reason the registerSet.GetName() returns None.
llvm-svn: 280703
Diffstat (limited to 'lldb/packages/Python/lldbsuite')
7 files changed, 4 insertions, 156 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/register/Makefile index 3c6deff2d97..7144b25c58c 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/Makefile +++ b/lldb/packages/Python/lldbsuite/test/functionalities/register/Makefile @@ -1,4 +1,4 @@ -LEVEL = ../../../make +LEVEL = ../../make CXX_SOURCES := main.cpp a.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/TestRegisters.py b/lldb/packages/Python/lldbsuite/test/functionalities/register/TestRegisters.py index 10665af44fd..21de3ab7cc3 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/TestRegisters.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/register/TestRegisters.py @@ -41,12 +41,11 @@ class RegisterCommandsTestCase(TestBase): if self.getArchitecture() in ['amd64', 'i386', 'x86_64']: self.runCmd("register read xmm0") self.runCmd("register read ymm15") # may be available - self.runCmd("register read bnd0") # may be available elif self.getArchitecture() in ['arm']: self.runCmd("register read s0") self.runCmd("register read q15") # may be available - self.expect("register read -s 4", substrs = ['invalid register set index: 4'], error = True) + self.expect("register read -s 3", substrs = ['invalid register set index: 3'], error = True) @skipIfiOSSimulator @skipIfTargetAndroid(archs=["i386"]) # Writing of mxcsr register fails, presumably due to a kernel/hardware problem @@ -290,14 +289,12 @@ class RegisterCommandsTestCase(TestBase): self.runCmd("register write " + st0regname + " \"{0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00}\"") self.expect("register read " + st0regname + " --format f", substrs = [st0regname + ' = 0']) - has_avx = False - has_mpx = False + has_avx = False registerSets = currentFrame.GetRegisters() # Returns an SBValueList. for registerSet in registerSets: if 'advanced vector extensions' in registerSet.GetName().lower(): has_avx = True - if 'memory protection extension' in registerSet.GetName().lower(): - has_mpx = True + break if has_avx: new_value = "{0x01 0x02 0x03 0x00 0x00 0x00 0x00 0x00 0x09 0x0a 0x2f 0x2f 0x2f 0x2f 0x0e 0x0f 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0c 0x0d 0x0e 0x0f}" @@ -307,21 +304,6 @@ class RegisterCommandsTestCase(TestBase): else: self.runCmd("register read ymm0") - if has_mpx: - # Test write and read for bnd0. - new_value_w = "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f 0x10}" - self.runCmd("register write bnd0 \'" + new_value_w + "\'") - new_value_r = "{0x0807060504030201 0x100f0e0d0c0b0a09}" - self.expect("register read bnd0", substrs = ['bnd0 = ', new_value_r]) - self.expect("expr $bnd0", substrs = ['vector_type']) - - # Test write and for bndstatus. - new_value = "{0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08}" - self.write_and_read(currentFrame, "bndstatus", new_value) - self.expect("expr $bndstatus", substrs = ['vector_type']) - else: - self.runCmd("register read bnd0") - def convenience_registers(self): """Test convenience registers.""" self.common_setup() diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/a.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/register/a.cpp index fbacec1918e..fbacec1918e 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/a.cpp +++ b/lldb/packages/Python/lldbsuite/test/functionalities/register/a.cpp diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/Makefile deleted file mode 100644 index 901ed77822a..00000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -LEVEL = ../../../make - -CXX_SOURCES := main.cpp -CXXFLAGS += -mmpx -fcheck-pointer-bounds -fuse-ld=bfd -LDFLAGS += -mmpx -fcheck-pointer-bounds -fuse-ld=bfd -include $(LEVEL)/Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/TestMPXRegisters.py b/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/TestMPXRegisters.py deleted file mode 100644 index 22907b1a96a..00000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/TestMPXRegisters.py +++ /dev/null @@ -1,59 +0,0 @@ -""" -Test the MPX registers. -""" - -from __future__ import print_function - -import os, sys, time -import re -import lldb -from lldbsuite.test.decorators import * -from lldbsuite.test.lldbtest import * -from lldbsuite.test import lldbutil - - -class RegisterCommandsTestCase(TestBase): - - mydir = TestBase.compute_mydir(__file__) - - def setUp(self): - TestBase.setUp(self) - self.has_teardown = False - - def tearDown(self): - self.dbg.GetSelectedTarget().GetProcess().Destroy() - TestBase.tearDown(self) - - @skipIfiOSSimulator - @skipIf(compiler="clang") - @expectedFailureAll(oslist=["linux"], compiler="gcc", compiler_version=["<", "5"]) - @skipIf(archs=no_match(['amd64', 'i386', 'x86_64'])) - def test_mpx_registers_with_example_code(self): - """Test MPX registers with example code.""" - self.build() - self.mpx_registers_with_example_code() - - def mpx_registers_with_example_code(self): - """Test MPX registers after running example code.""" - self.line = line_number('main.cpp', '// Set a break point here.') - - exe = os.path.join(os.getcwd(), "a.out") - self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET) - - self.runCmd('settings set target.inline-breakpoint-strategy always') - self.addTearDownHook( - lambda: self.runCmd("settings set target.inline-breakpoint-strategy always")) - - lldbutil.run_break_set_by_file_and_line(self, "main.cpp", self.line, num_expected_locations=1) - self.runCmd("run", RUN_SUCCEEDED) - - self.expect("thread backtrace", STOPPED_DUE_TO_BREAKPOINT, - substrs = ["stop reason = breakpoint 1."]) - - self.expect("register read -s 3", - substrs = ['bnd0 = {0x0000000000000010 0xffffffffffffffe6}', - 'bnd1 = {0x0000000000000020 0xffffffffffffffd6}', - 'bnd2 = {0x0000000000000030 0xffffffffffffffc6}', - 'bnd3 = {0x0000000000000040 0xffffffffffffffb6}', - 'bndcfgu = {0x01 0x80 0xb5 0x76 0xff 0x7f 0x00 0x00}', - 'bndstatus = {0x02 0x80 0xb5 0x76 0xff 0x7f 0x00 0x00}']) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/main.cpp deleted file mode 100644 index 1366d964e0f..00000000000 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/intel_xtended_registers/main.cpp +++ /dev/null @@ -1,69 +0,0 @@ -//===-- main.cpp ------------------------------------------------*- C++ -*-===// -//// -//// The LLVM Compiler Infrastructure -//// -//// This file is distributed under the University of Illinois Open Source -//// License. See LICENSE.TXT for details. -//// -////===----------------------------------------------------------------------===// -// - -#include <cpuid.h> -#include <cstddef> - -int -main(int argc, char const *argv[]) -{ - unsigned int rax, rbx, rcx, rdx; - - // Check if XSAVE is enabled. - if (!__get_cpuid(1, &rax, &rbx, &rcx, &rdx) || (rcx & bit_OSXSAVE) != bit_OSXSAVE) - return -1; - - // Check if MPX is enabled. - if (__get_cpuid_max(0, NULL) > 7) - { - __cpuid_count(7, 0, rax, rbx, rcx, rdx); - if ((rbx & bit_MPX) != bit_MPX) - return -1; - } - else - return -1; - -// Run MPX test code. -#if defined(__x86_64__) - asm("mov $16, %rax\n\t" - "mov $9, %rdx\n\t" - "bndmk (%rax,%rdx), %bnd0\n\t" - "mov $32, %rax\n\t" - "mov $9, %rdx\n\t" - "bndmk (%rax,%rdx), %bnd1\n\t" - "mov $48, %rax\n\t" - "mov $9, %rdx\n\t" - "bndmk (%rax,%rdx), %bnd2\n\t" - "mov $64, %rax\n\t" - "mov $9, %rdx\n\t" - "bndmk (%rax,%rdx), %bnd3\n\t" - "bndstx %bnd3, (%rax) \n\t" - "nop\n\t"); -#endif -#if defined(__i386__) - asm("mov $16, %eax\n\t" - "mov $9, %edx\n\t" - "bndmk (%eax,%edx), %bnd0\n\t" - "mov $32, %eax\n\t" - "mov $9, %edx\n\t" - "bndmk (%eax,%edx), %bnd1\n\t" - "mov $48, %eax\n\t" - "mov $9, %edx\n\t" - "bndmk (%eax,%edx), %bnd2\n\t" - "mov $64, %eax\n\t" - "mov $9, %edx\n\t" - "bndmk (%eax,%edx), %bnd3\n\t" - "bndstx %bnd3, (%eax)\n\t" - "nop\n\t"); -#endif - asm("nop\n\t"); // Set a break point here. - - return 0; -} diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/register/main.cpp index 156515768dd..156515768dd 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/register/register_command/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/functionalities/register/main.cpp |