12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- # Expect script for LD section checks tests
- # Copyright (C) 1999-2022 Free Software Foundation, Inc.
- #
- # This file is part of the GNU Binutils.
- #
- # 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, write to the Free Software
- # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
- # MA 02110-1301, USA.
- #
- # Written by Nick Clifton (nickc@cygnus.com)
- proc section_check {} {
- global LDFLAGS
- global as
- global ld
- global srcdir
- global subdir
- # The usage of .lcomm in asm.s is incompatible with ia64 and ppc xcoff.
- if { [istarget ia64-*-*] || [is_xcoff_format] } {
- return
- }
- set test "check sections 1"
- set ldflags "$LDFLAGS --check-sections -e foo"
- if { ![ld_assemble $as $srcdir/$subdir/asm.s tmpdir/asm.o]} {
- unsupported $test
- return
- }
- if ![ld_link $ld tmpdir/asm.x "$ldflags tmpdir/asm.o"] {
- fail $test
- } else {
- pass $test
- }
- set test "check sections 2"
- # Change the linker flags so that our "buggy" linker
- # script is used.
- set ldflags "$LDFLAGS --check-sections -T $srcdir/$subdir/script -e foo"
- # Perform the equivalent of invoking ld_link
- # except that we need to massage the output further.
- set exec_output [run_host_cmd "$ld" "-o tmpdir/asm.x $ldflags tmpdir/asm.o"]
- set exec_output [prune_warnings $exec_output]
- # Make sure that we got some output from the linker
- if [string match "" $exec_output] then {
- fail $test
- }
- # Now remove our expected error message
- regsub -all ".*: section .data .* overlaps section .text .*" $exec_output "" exec_output
- # And check to see if anything else, (unexpected) was left
- if [string match "" $exec_output] then {
- pass $test
- } else {
- verbose -log "Unexpected linker message(s): $exec_output"
- fail $test
- }
- }
- proc overflow_check {} {
- # Test only on some 32-bit targets that are often tested
- if { ![istarget i?86-*-*]
- && ![istarget powerpc-*-*]
- && ![istarget arm*-*-*] } {
- return
- }
- if ![is_elf_format] {
- return
- }
- run_dump_test "over"
- run_dump_test "over2"
- }
- section_check
- overflow_check
|