| # This test code is part of GDB, the GNU debugger. |
| |
| # Copyright 2010-2021 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/>. |
| |
| # Auxiliary function to set the language to fortran. |
| # The result is 1 (true) for success, 0 (false) for failure. |
| |
| proc set_lang_fortran {} { |
| if [gdb_test_no_output "set language fortran"] { |
| return 0 |
| } |
| if [gdb_test "show language" ".* source language is \"fortran\"." \ |
| "set language to \"fortran\""] { |
| return 0 |
| } |
| return 1 |
| } |
| |
| proc fortran_int4 {} { |
| if {[test_compiler_info {gcc-4-[012]-*}]} { |
| return "int4" |
| } elseif {[test_compiler_info {gcc-*}]} { |
| return "integer\\(kind=4\\)" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "integer" |
| } elseif {[test_compiler_info {icc-*}]} { |
| return "INTEGER\\(4\\)" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| proc fortran_int8 {} { |
| if {[test_compiler_info {gcc-4-[012]-*}]} { |
| return "int8" |
| } elseif {[test_compiler_info {gcc-*}]} { |
| return "integer\\(kind=8\\)" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "integer\\*8" |
| } elseif {[test_compiler_info {icc-*}]} { |
| return "INTEGER\\(8\\)" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| proc fortran_real4 {} { |
| if {[test_compiler_info {gcc-4-[012]-*}]} { |
| return "real4" |
| } elseif {[test_compiler_info {gcc-*}]} { |
| return "real\\(kind=4\\)" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "real" |
| } elseif {[test_compiler_info {icc-*}]} { |
| return "REAL\\(4\\)" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| proc fortran_real8 {} { |
| if {[test_compiler_info {gcc-4-[012]-*}]} { |
| return "real8" |
| } elseif {[test_compiler_info {gcc-*}]} { |
| return "real\\(kind=8\\)" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "double precision" |
| } elseif {[test_compiler_info {icc-*}]} { |
| return "REAL\\(8\\)" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| proc fortran_complex4 {} { |
| if {[test_compiler_info {gcc-4-[012]-*}]} { |
| return "complex4" |
| } elseif {[test_compiler_info {gcc-*}]} { |
| return "complex\\(kind=4\\)" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "complex" |
| } elseif {[test_compiler_info {icc-*}]} { |
| return "COMPLEX\\(4\\)" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| proc fortran_complex8 {} { |
| if {[test_compiler_info {gcc-4-[012]-*}]} { |
| return "complex8" |
| } elseif {[test_compiler_info {gcc-*}]} { |
| return "complex\\(kind=8\\)" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "double complex" |
| } elseif {[test_compiler_info {icc-*}]} { |
| return "COMPLEX\\(8\\)" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| proc fortran_complex16 {} { |
| if {[test_compiler_info {gcc-4-[012]-*}]} { |
| return "complex16" |
| } elseif {[test_compiler_info {gcc-*}]} { |
| return "complex\\(kind=16\\)" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "quad complex" |
| } elseif {[test_compiler_info {icc-*}]} { |
| return "COMPLEX\\(16\\)" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| proc fortran_logical4 {} { |
| if {[test_compiler_info {gcc-4-[012]-*}]} { |
| return "logical4" |
| } elseif {[test_compiler_info {gcc-*}]} { |
| return "logical\\(kind=4\\)" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "logical" |
| } elseif {[test_compiler_info {icc-*}]} { |
| return "LOGICAL\\(4\\)" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| proc fortran_character1 {} { |
| if {[test_compiler_info {gcc-4-[012]-*}]} { |
| return "character1" |
| } elseif {[test_compiler_info {gcc-*}]} { |
| return "character\\(kind=1\\)" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "character" |
| } elseif {[test_compiler_info {icc-*}]} { |
| return "CHARACTER\\(1\\)" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| # Return name of the main procedure based on the compiler version. |
| |
| proc fortran_main {} { |
| if {[test_compiler_info {gcc-4-[012]-*}] |
| || [test_compiler_info {gcc-*}] |
| || [test_compiler_info {icc-*}]} { |
| return "MAIN__" |
| } elseif {[test_compiler_info {clang-*}]} { |
| return "MAIN_" |
| } else { |
| return "unknown" |
| } |
| } |
| |
| # Fortran version of runto_main. |
| |
| proc fortran_runto_main { } { |
| return [runto [fortran_main]] |
| } |