# Copyright (C) 2015-2019 Free Software Foundation, Inc. # # Contributed by Intel Corp. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . if { ![istarget i?86-*-*] && ![istarget x86_64-*-* ] } { verbose "Skipping x86 MPX tests." return } standard_testfile set comp_flags "-mmpx -fcheck-pointer-bounds -I${srcdir}/../nat/" if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ [list debug nowarnings additional_flags=${comp_flags}]] } { return -1 } if ![runto_main] { untested "could not run to main" return -1 } gdb_test_multiple "print have_mpx ()" "have mpx" { -re ".. = 1\r\n$gdb_prompt " { pass "check whether processor supports MPX" } -re ".. = 0\r\n$gdb_prompt " { verbose "processor does not support MPX; skipping MPX tests" return } } set u_fault [multi_line "Program received signal SIGSEGV, Segmentation fault" \ "Upper bound violation while accessing address $hex" \ "Bounds: \\\[lower = $hex, upper = $hex\\\]"] set l_fault [multi_line "Program received signal SIGSEGV, Segmentation fault" \ "Lower bound violation while accessing address $hex" \ "Bounds: \\\[lower = $hex, upper = $hex\\\]"] for {set i 0} {$i < 15} {incr i} { set message "MPX signal segv Upper: ${i}" if {[gdb_test "continue" "$u_fault.*" $message] != 0} { break } gdb_test "where" ".*#0 $hex in upper.*"\ "$message: should be in upper" } for {set i 0} {$i < 15} {incr i} { set message "MPX signal segv Lower: ${i}" if {[gdb_test "continue" "$l_fault.*" $message] != 0} { break } gdb_test "where" ".*#0 $hex in lower.*"\ "$message: should be in lower" }