diff options
author | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
---|---|---|
committer | Jing Yu <jingyu@google.com> | 2011-12-20 10:27:58 -0800 |
commit | cf3cdbf8b3cda61a619299e7966a83df66244036 (patch) | |
tree | 201e2bcfc955f16802d3257112d29736cb3a3ce8 /binutils-2.21/ld/testsuite/ld-elf/sec-to-seg.exp | |
parent | e4df3e0a5bb640ccfa2f30ee67fe9b3146b152d6 (diff) | |
download | toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.zip toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.gz toolchain_binutils-cf3cdbf8b3cda61a619299e7966a83df66244036.tar.bz2 |
Add binutils-2.21.
Use --enable-gold=default for dual linker support.
Change-Id: Id1a744c7db58a0b5e7a3be174cdfa875f2f86e49
Diffstat (limited to 'binutils-2.21/ld/testsuite/ld-elf/sec-to-seg.exp')
-rw-r--r-- | binutils-2.21/ld/testsuite/ld-elf/sec-to-seg.exp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/binutils-2.21/ld/testsuite/ld-elf/sec-to-seg.exp b/binutils-2.21/ld/testsuite/ld-elf/sec-to-seg.exp new file mode 100644 index 0000000..cd32e68 --- /dev/null +++ b/binutils-2.21/ld/testsuite/ld-elf/sec-to-seg.exp @@ -0,0 +1,102 @@ +# Test the assigment of sections to segments. +# +# Copyright 2008, 2010 Free Software Foundation, Inc. +# Contributed by Red Hat. +# +# 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. + +set testname "assignment of ELF sections to segments" + +if {! [is_elf_format] } { + unsupported $testname + return +} + +if { ! [ld_assemble $as $srcdir/$subdir/sec-to-seg1.s tmpdir/sec-to-seg1.o] + || ! [ld_assemble $as $srcdir/$subdir/sec-to-seg2.s tmpdir/sec-to-seg2.o]} then { + unresolved $testname + return +} + +proc sec_to_seg_test { testname scriptname same_seg } { + global srcdir + global subdir + global ld + global exec_output + global READELF + + if {! [ld_simple_link $ld tmpdir/sec-to-seg "-T $srcdir/$subdir/$scriptname tmpdir/sec-to-seg1.o tmpdir/sec-to-seg2.o"] } then { + fail $testname + return 0 + } + + send_log "$READELF --program-headers --section-headers tmpdir/sec-to-seg\n" + set exec_output [run_host_cmd "$READELF" "--program-headers --section-headers tmpdir/sec-to-seg"] + + if { $same_seg == 1 } { + if {! [regexp ".*.sec1 .sec2" $exec_output] } { + fail $testname + return 0 + } + } else { + if { [regexp ".*.sec1 .sec2" $exec_output] } { + fail $testname + return 0 + } + } + + pass $testname + return 1 +} + +# Assuming a pagesize of 0x1000 then: +# +# Test Sec1 End Sec 2 Start Expected Result +# ---- -------- ----------- --------------- +# A 00001042 00001043 Both sections on same page: assign to same segment. +# B 00001042 00002044 Sections on adjacent pages: assign to same segment. +# C 00001042 00003044 Sections on disjoint pages: assign to separate segments. + +# These targets have a pagesize of 1, so they will always end up +# placing the two sections in separate segments in the B test. +if { [istarget avr-*-*] + || [istarget cr16-*-*] + || [istarget crx-*-*] + || [istarget dlx-*-*] + || [istarget h8300-*-*] + || [istarget i960-*-*] + || [istarget ip2k-*-*] + || [istarget m32r-*-*] + || [istarget m88k-*-*] + || [istarget microblaze-*-*] + || [istarget moxie-*-*] + || [istarget msp430-*-*] + || [istarget mt-*-*] + || [istarget tic6x-*-*] + } { + set B_test_same_seg 0 +} else { + set B_test_same_seg 1 +} + +sec_to_seg_test "assignment of ELF sections to segments (same page)" "sec-to-seg-script-same-page.t" 1 +sec_to_seg_test "assignment of ELF sections to segments (adjacent pages)" "sec-to-seg-script-adjoining-pages.t" $B_test_same_seg +sec_to_seg_test "assignment of ELF sections to segments (disjoint pages)" "sec-to-seg-script-disjoint-pages.t" 0 + + +# FIXME: Add more tests to check other rules of section to segment assignment. |