diff options
author | Richard Henderson <rth@redhat.com> | 1999-05-03 07:29:11 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 1999-05-03 07:29:11 +0000 |
commit | 252b5132c753830d5fd56823373aed85f2a0db63 (patch) | |
tree | 1af963bfd8d3e55167b81def4207f175eaff3a56 /ld/testsuite/ld-checks | |
download | gdb-252b5132c753830d5fd56823373aed85f2a0db63.zip gdb-252b5132c753830d5fd56823373aed85f2a0db63.tar.gz gdb-252b5132c753830d5fd56823373aed85f2a0db63.tar.bz2 |
19990502 sourceware importbinu_ss_19990502
Diffstat (limited to 'ld/testsuite/ld-checks')
-rw-r--r-- | ld/testsuite/ld-checks/asm.s | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-checks/checks.exp | 72 | ||||
-rw-r--r-- | ld/testsuite/ld-checks/script | 6 |
3 files changed, 92 insertions, 0 deletions
diff --git a/ld/testsuite/ld-checks/asm.s b/ld/testsuite/ld-checks/asm.s new file mode 100644 index 0000000..e4e0c33 --- /dev/null +++ b/ld/testsuite/ld-checks/asm.s @@ -0,0 +1,14 @@ +.text + .global foo +foo: + .long 0x12345678 + +.data + .global bar +bar: + .long 0x87654321 + + .lcomm 0x12 + + +
\ No newline at end of file diff --git a/ld/testsuite/ld-checks/checks.exp b/ld/testsuite/ld-checks/checks.exp new file mode 100644 index 0000000..af3ef7d --- /dev/null +++ b/ld/testsuite/ld-checks/checks.exp @@ -0,0 +1,72 @@ +# Expect script for LD section checks tests +# Copyright (C) 1999 Free Software Foundation +# +# This file 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 2 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# Written by Nick Clifton (nickc@cygnus.com) + +proc section_check {} { + global ld_flags + global as + global ld + global srcdir + global subdir + + set test "check sections" + + set ldflags "--check-sections" + + if { ![ld_assemble $as $srcdir/$subdir/asm.s tmpdir/asm.o]} { + unresolved $test + return + } + + if ![ld_simple_link $ld tmpdir/asm.x "$ldflags tmpdir/asm.o"] { + fail "$test : using default linker script" + } else { + pass $test + } + + # Change the linker flags so that our "buggy" linker + # script is used. + set ldflags "--check-sections -T $srcdir/$subdir/script -e foo" + + # Perform the equivalent of invoking ld_simple_link + # except that we need to massage the output futher. + + catch "exec $ld -o tmpdir/asm.x $ldflags tmpdir/asm.o" exec_output + 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 - error message expected but not found" + } + + # 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 - using erroneous linker script" + } +} + +section_check + + diff --git a/ld/testsuite/ld-checks/script b/ld/testsuite/ld-checks/script new file mode 100644 index 0000000..44c6a08 --- /dev/null +++ b/ld/testsuite/ld-checks/script @@ -0,0 +1,6 @@ +SECTIONS { + .text 0x100 : { *(.text) } + .data 0x100 : AT (0x100) { *(.data) } + .bss 0x100 : AT (0x4000) { *(.bss) } +} + |