1# Copyright 2015 Free Software Foundation, Inc. 2# 3# Contributed by Intel Corp. <walfred.tedeschi@intel.com>, 4# <mircea.gherzan@intel.com> 5# 6# This program is free software; you can redistribute it and/or modify 7# it under the terms of the GNU General Public License as published by 8# the Free Software Foundation; either version 3 of the License, or 9# (at your option) any later version. 10# 11# This program is distributed in the hope that it will be useful, 12# but WITHOUT ANY WARRANTY; without even the implied warranty of 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14# GNU General Public License for more details. 15# 16# You should have received a copy of the GNU General Public License 17# along with this program. If not, see <http://www.gnu.org/licenses/>. 18 19if { ![istarget i?86-*-*] && ![istarget x86_64-*-* ] } { 20 verbose "Skipping x86 MPX tests." 21 return 22} 23 24standard_testfile 25 26set comp_flags "-fmpx -I${srcdir}/../nat/" 27 28if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ 29 [list debug nowarnings additional_flags=${comp_flags}]] } { 30 return -1 31} 32 33if ![runto_main] { 34 untested "could not run to main" 35 return -1 36} 37 38set supports_mpx 0 39set test "probe MPX support" 40 41gdb_test_multiple "print have_mpx()" $test { 42 -re ".. = 1\r\n$gdb_prompt $" { 43 pass $test 44 set supports_mpx 1 45 } 46 -re ".. = 0\r\n$gdb_prompt $" { 47 pass $test 48 } 49} 50 51if { !$supports_mpx } { 52 unsupported "processor does not support MPX" 53 return 54} 55 56gdb_breakpoint [ gdb_get_line_number "after-decl" ] 57gdb_breakpoint [ gdb_get_line_number "after-alloc" ] 58gdb_breakpoint [ gdb_get_line_number "after-assign" ] 59 60gdb_test "show mpx bound 0x0" "Invalid bounds directory entry at $hex." "NULL address of the pointer" 61 62gdb_continue_to_breakpoint "after-decl" ".*after-decl.*" 63gdb_test "show mpx bound a" "Invalid bounds directory entry at $hex." "pointer instead of pointer address" 64 65gdb_continue_to_breakpoint "after-alloc" ".*after-alloc.*" 66gdb_test "show mpx bound a" "\\\{lbound = $hex, ubound = $hex\\\}: pointer value = $hex, size = \[8, 4\], metadata = 0x0+" "pointer after allocation" 67 68gdb_continue_to_breakpoint "after-assign" ".*after-assign.*" 69gdb_test "show mpx bound x" "\\\{lbound = $hex, ubound = $hex\\\}: pointer value = $hex, size = \[8, 4\], metadata = 0x0+" "pointer after assignment" 70gdb_test "set mpx bound 0x0, 0x1, 0x2" "Invalid bounds directory entry at $hex." "set mpx bound: NULL address of the pointer" 71gdb_test_no_output "set mpx bound x, 0xcafebabe, 0xdeadbeef" "set mpx bound: set bounds for a valid pointer address" 72gdb_test "show mpx bound x" "\\\{lbound = .*cafebabe, ubound = .*deadbeef\\\}: pointer value = $hex, size = $decimal, metadata = 0x0+" "set mpx bound: bounds map entry after set mpx bound" 73 74 75gdb_test "set mpx bound 0x0, 0x1 0x2" "A syntax error in expression.*" "set mpx bound: Controlling syntax error, missing comma " 76gdb_test "set mpx bound 0x0, 0x1" "Wrong number of arguments.*" "set mpx bound: Controlling syntax error, missing argument " 77