binutils-gdb/gdb/testsuite/lib/pascal.exp
Joel Brobecker 61baf725ec update copyright year range in GDB files
This applies the second part of GDB's End of Year Procedure, which
updates the copyright year range in all of GDB's files.

gdb/ChangeLog:

        Update copyright year range in all GDB files.
2017-01-01 10:52:34 +04:00

184 lines
5.0 KiB
Plaintext

# Copyright 2007-2017 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/>.
load_lib libgloss.exp
set pascal_init_done 0
# This procedure looks for a suitable pascal compiler
# For now only GNU pascal compiler and Free Pascal compiler
# are searched.
# First, environment variable GPC is checked
# if present, GPC compiler is assumed to be the value of
# that environment variable.
# Second, environment variable FPC is checked
# if present, Free Pascal compiler is assumed to be the value of
# that environment variable.
# Third, gpc executable is searched using `which gpc`
# Lastly, fpc executable is searched using `which fpc`
# Using environment variable allows to force
# which compiler is used in testsuite
proc pascal_init {} {
global pascal_init_done
global pascal_compiler_is_gpc
global pascal_compiler_is_fpc
global gpc_compiler
global fpc_compiler
global env
if { $pascal_init_done == 1 } {
return
}
set pascal_compiler_is_gpc 0
set pascal_compiler_is_fpc 0
set gpc_compiler [transform gpc]
set fpc_compiler [transform fpc]
if ![is_remote host] {
if { [info exists env(GPC)] } {
set pascal_compiler_is_gpc 1
set gpc_compiler $env(GPC)
verbose -log "Assuming GNU Pascal ($gpc_compiler)"
} elseif { [info exists env(FPC)] } {
set pascal_compiler_is_fpc 1
set fpc_compiler $env(FPC)
verbose -log "Assuming Free Pascal ($fpc_compiler)"
} elseif { [which $gpc_compiler] != 0 } {
set pascal_compiler_is_gpc 1
verbose -log "GNU Pascal compiler found"
} elseif { [which $fpc_compiler] != 0 } {
set pascal_compiler_is_fpc 1
verbose -log "Free Pascal compiler found"
}
}
set pascal_init_done 1
}
proc gpc_compile {source destfile type options} {
global gpc_compiler
set add_flags ""
set dest [target_info name]
if {$type == "object"} {
append add_flags " -c"
}
if { $type == "preprocess" } {
append add_flags " -E"
}
if { $type == "assembly" } {
append add_flags " -S"
}
foreach i $options {
if { $i == "debug" } {
if [board_info $dest exists debug_flags] {
append add_flags " [board_info $dest debug_flags]"
} else {
append add_flags " -g"
}
}
if { $i == "class" } {
if [board_info $dest exists pascal_class_flags] {
append add_flags " [board_info $dest pascal_class_flags]"
} else {
append add_flags " --extended-syntax"
}
}
}
set result [remote_exec host $gpc_compiler "-o $destfile --automake $add_flags $source"]
return $result
}
proc fpc_compile {source destfile type options} {
global fpc_compiler
set add_flags ""
set dest [target_info name]
if {$type == "object"} {
append add_flags " -Cn"
}
if { $type == "preprocess" } {
return "Free Pascal can not preprocess"
}
if { $type == "assembly" } {
append add_flags " -al"
}
foreach i $options {
if { $i == "debug" } {
if [board_info $dest exists debug_flags] {
append add_flags " [board_info $dest debug_flags]"
} else {
append add_flags " -g"
}
}
if { $i == "class" } {
if [board_info $dest exists pascal_class_flags] {
append add_flags " [board_info $dest pascal_class_flags]"
} else {
append add_flags " -Mobjfpc"
}
}
}
set result [remote_exec host $fpc_compiler "-o$destfile $add_flags $source"]
return $result
}
proc gdb_compile_pascal {source destfile type options} {
global pascal_init_done
global pascal_compiler_is_gpc
global pascal_compiler_is_fpc
if { $pascal_init_done == 0 } {
pascal_init
}
if { $pascal_compiler_is_fpc == 1 } {
set result [fpc_compile $source $destfile $type $options]
} elseif { $pascal_compiler_is_gpc == 1 } {
set result [gpc_compile $source $destfile $type $options]
} else {
unsupported "no pascal compiler found"
return "No pascal compiler. Compilation failed."
}
if ![file exists $destfile] {
unsupported "Pascal compilation failed: $result"
return "Pascal compilation failed."
}
}
# Auxiliary function to set the language to pascal.
# The result is 1 (true) for success, 0 (false) for failure.
proc set_lang_pascal {} {
if [gdb_test_no_output "set language pascal"] {
return 0
}
if [gdb_test "show language" ".* source language is \"pascal\"." \
"set language to \"pascal\""] {
return 0
}
return 1
}