binutils-gdb/gdb/testsuite/lib/aarch64.exp
Andrew Burgess 1d506c26d9 Update copyright year range in header of all files managed by GDB
This commit is the result of the following actions:

  - Running gdb/copyright.py to update all of the copyright headers to
    include 2024,

  - Manually updating a few files the copyright.py script told me to
    update, these files had copyright headers embedded within the
    file,

  - Regenerating gdbsupport/Makefile.in to refresh it's copyright
    date,

  - Using grep to find other files that still mentioned 2023.  If
    these files were updated last year from 2022 to 2023 then I've
    updated them this year to 2024.

I'm sure I've probably missed some dates.  Feel free to fix them up as
you spot them.
2024-01-12 15:49:57 +00:00

153 lines
4.4 KiB
Text

# Copyright 2023-2024 Free Software Foundation, Inc.
# 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 <http://www.gnu.org/licenses/>. */
# Support routines for aarch64-specific tests
#
# Return a regular expression that matches what gdb would print for a
# 1-dimension vector containing ELEMENTS elements of value BYTE.
#
# The pattern is of the form "{BYTE <repeats ELEMENTS times>".
#
proc 1d_array_value_pattern { byte elements } {
set brace_open "{"
set brace_close "}"
append data $brace_open $byte
if {$elements > 1} {
append data " <repeats $elements times>"
}
append data $brace_close
verbose -log "1d_array_value_pattern Pattern string is..."
verbose -log $data
return $data
}
#
# Return a regular expression that matches what gdb would print for a
# 2-dimension vector containing ROWS rows and COLUMNS columns of elements
# of value BYTE.
#
# The pattern is of the form
# "{{BYTE <repeats COLUMNS times>} <repeats ROWS times>}".
#
proc 2d_array_value_pattern { byte rows columns } {
set brace_open "{"
set brace_close "}"
append data $brace_open [1d_array_value_pattern $byte $columns]
if {$rows > 1} {
append data " <repeats $rows times>"
}
append data $brace_close
verbose -log "2d_array_value_pattern Pattern string is..."
verbose -log $data
return $data
}
#
# Initialize register NAME, a 1-dimension vector, with ELEMENTS elements
# by setting all elements to BYTE. ELEMENTS is limited at 256 for memory
# usage purposes.
#
# The initialization is of the form "{BYTE, BYTE, BYTE ...}".
#
proc initialize_1d_array { name byte elements } {
set brace_open "{"
set brace_close "}"
append data $brace_open
# Build the assignment in a single shot.
for {set element 0} {$element < $elements} {incr element} {
# Construct the initializer by appending elements to it.
append data $byte
# If this isn't the last element, add a comma.
if {[expr $element + 1] < $elements} {
append data ", "
}
}
append data $brace_close
verbose -log "initialization string is..."
verbose -log $data
gdb_test_no_output "set $name = $data" "write to $name"
}
#
# Return an initializer string for a 2-dimension vector with ROWS rows and
# COLUMNS columns, initializing all elements to BYTE for register NAME.
#
# COLUMNS is limited to 256 elements for memory usage purposes.
#
# The initialization is of the form "{{BYTE, BYTE}, ..., {BYTE, BYTE}}}".
#
proc initialize_2d_array { name byte rows columns } {
set brace_open "{"
set brace_close "}"
if {[expr $rows * $columns] <= 256} {
# Build the assignment in a single shot, as we have a maximum of 256
# elements.
for {set row 0} {$row < $rows} {incr row} {
append data $brace_open
for {set column 0} {$column < $columns} {incr column} {
# Construct the initializer by appending elements to it.
append data $byte
# If this isn't the last column, add a comma.
if {[expr $column + 1] < $columns} {
append data ", "
}
}
append data $brace_close
# If this isn't the last row, add a comma.
if {[expr $row + 1] < $rows} {
append data ","
}
}
set data $brace_open$data
set data $data$brace_close
verbose -log "initialization string is..."
verbose -log $data
gdb_test_no_output "set $name = $data" "write to $name"
} else {
# There are too many elements to initialize (more than 256), so we
# will do the initialization row by row.
for {set row 0} {$row < $rows} {incr row} {
initialize_1d_array "$name\[$row\]" $byte $columns
}
}
}
#
# Validate the values of the FPSIMD registers.
#
proc check_fpsimd_regs { byte state vl svl} {
set fpsimd_pattern [string_to_regexp [1d_array_value_pattern $byte 16]]
for {set number 0} {$number < 32} {incr number} {
set register_name "\$v${number}\.b\.u"
gdb_test "print sizeof $register_name" " = 16"
gdb_test "print $register_name" $fpsimd_pattern
}
}