URL
https://opencores.org/ocsvn/open8_urisc/open8_urisc/trunk
Subversion Repositories open8_urisc
[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [ld/] [testsuite/] [ld-x86-64/] [x86-64.exp] - Rev 166
Compare with Previous | Blame | View Log
# Expect script for ld-x86_64 tests# Copyright (C) 2002, 2005, 2006, 2007, 2008, 2009, 2010, 2011# Free Software Foundation## 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.## Test x86_64 linking; all types of relocs. This tests the assembler and# tools like objdump as well as the linker.if { !([istarget "x86_64-*-elf*"]|| [istarget "x86_64-*-linux*"]) } {return}# List contains test-items with 3 items followed by 2 lists:# 0:name 1:ld options 2:assembler options# 3:filenames of assembler files 4: action and options. 5: name of output file# Actions:# objdump: Apply objdump options on result. Compare with regex (last arg).# nm: Apply nm options on result. Compare with regex (last arg).# readelf: Apply readelf options on result. Compare with regex (last arg).set x86_64tests {{"TLS -fpic -shared transitions""-shared -melf_x86_64 --no-ld-generated-unwind-info""--64" {tlspic1.s tlspic2.s}{{readelf -WSsrl tlspic.rd} {objdump -drj.text tlspic.dd}{objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}"libtlspic.so"}{"TLS descriptor -fpic -shared transitions""-shared -melf_x86_64 --no-ld-generated-unwind-info""--64" {tlsdesc.s tlspic2.s}{{readelf -WSsrld tlsdesc.rd} {objdump -drj.text tlsdesc.dd}{objdump "-s -j.got -j.got.plt" tlsdesc.sd} {objdump -sj.tdata tlsdesc.td}{objdump -drj.plt tlsdesc.pd}} "libtlsdesc.so"}{"Helper shared library" "-shared -melf_x86_64""--64" {tlslib.s} {} "libtlslib.so"}{"TLS -fpic and -fno-pic exec transitions""-melf_x86_64 tmpdir/libtlslib.so --no-ld-generated-unwind-info""--64" {tlsbinpic.s tlsbin.s}{{readelf -WSsrl tlsbin.rd} {objdump -drj.text tlsbin.dd}{objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}"tlsbin"}{"TLS descriptor -fpic and -fno-pic exec transitions""-melf_x86_64 tmpdir/libtlslib.so --no-ld-generated-unwind-info""--64" {tlsbindesc.s tlsbin.s}{{readelf -WSsrl tlsbindesc.rd} {objdump -drj.text tlsbindesc.dd}{objdump -sj.got tlsbindesc.sd} {objdump -sj.tdata tlsbindesc.td}}"tlsbindesc"}{"TLS with global dynamic and descriptors""-shared -melf_x86_64 --no-ld-generated-unwind-info""--64" {tlsgdesc.s}{{readelf -WSsrl tlsgdesc.rd} {objdump -drj.text tlsgdesc.dd}}"libtlsgdesc.so"}{"TLS in debug sections" "-melf_x86_64""--64" {tlsg.s}{{objdump -sj.debug_foobar tlsg.sd}} "tlsg"}{"TLS GD->LE transition" "-melf_x86_64""--64" {tlsgd1.s}{{objdump -dwr tlsgd1.dd}} "tlsgd1"}{"TLS LD->LE transition" "-melf_x86_64""--64" {tlsld1.s}{{objdump -dwr tlsld1.dd}} "tlsld1"}{"TLS IE->LE transition" "-melf_x86_64""--64" {tlsie1.s}{{objdump -dwr tlsie1.dd}} "tlsie1"}{"Helper 64bit object 1" "-r -melf_x86_64""--64" {mixed1a.s} {} "libmixe1a.o"}{"Helper 32bit object 1" "-r -melf_i386""--32" {mixed1b.s} {} "libmixe1b.o"}{"Helper 64bit object 2" "-r -melf_x86_64""--64" {mixed2a.s} {} "libmixe2a.o"}{"Helper 32bit object 2" "-r -melf_i386""--32" {mixed2b.s} {} "libmixe2b.o"}{"Split by file with 'l' flag on section." "-split-by-file -r -melf_x86_64""--64" {split-by-file1.s split-by-file2.s}{{readelf -SW split-by-file.rd}} "split-by-file.o"}{"TLS X32 IE->LE transition" "-melf32_x86_64""--x32" {tlsie4.s}{{objdump -dwr tlsie4.dd}} "tlsie4"}{"TLS X32 GD->LE transition" "-melf32_x86_64""--x32" {tlsgd4.s}{{objdump -dwr tlsgd4.dd}} "tlsgd4"}{"Helper TLS GD->IE transition DSO" "-shared -melf_x86_64""--64" {tlsgd5b.s} {} "libtlsgd5.so"}{"TLS GD->IE transition" "-melf_x86_64 tmpdir/libtlsgd5.so""--64" {tlsgd5a.s}{{objdump -dwr tlsgd5.dd}} "tlsgd5"}{"Helper TLS X32 GD->IE transition DSO" "-shared -melf32_x86_64""--x32" {tlsgd6b.s} {} "libtlsgd6.so"}{"TLS X32 GD->IE transition" "-melf32_x86_64 tmpdir/libtlsgd6.so""--x32" {tlsgd6a.s}{{objdump -dwr tlsgd6.dd}} "tlsgd6"}{"TLS X32 LD->LE transition" "-melf32_x86_64""--x32" {tlsld2.s}{{objdump -dwr tlsld2.dd}} "tlsld2"}{"build 32-bit object with 33 locals" "-e 0" "--32" {32bit.s} {{ ld incompatible.l }} "dummy" }{"build 64-bit object" "-e 0 --defsym foo=1" "--64" {64bit.s} {} "dummy" }{"link mixed objects" "-e 0 tmpdir/32bit.o tmpdir/64bit.o" "" {} { { ld incompatible.l } } "mixed"}}run_ld_link_tests $x86_64testsglobal link_outputglobal ldset test_name "Mixed x86_64 and i386 input test 1"set test mixed1if { ![ld_simple_link $ld tmpdir/$test "-melf_x86_64 tmpdir/${test}a.o tmpdir/${test}b.o"] } {if [string match "*i386 architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64 output*" $link_output] {pass "$test_name"} {fail "$test_name"}}set test_name "Mixed x86_64 and i386 input test 2"set test mixed2if { ![ld_simple_link $ld tmpdir/$test "-melf_x86_64 tmpdir/${test}a.o tmpdir/${test}b.o"] } {if [string match "*i386 architecture of input file `tmpdir/${test}b.o' is incompatible with i386:x86-64 output*" $link_output] {pass "$test_name"} {fail "$test_name"}}run_dump_test "abs"run_dump_test "abs-l1om"run_dump_test "pcrel8"run_dump_test "pcrel16"run_dump_test "tlsgd2"run_dump_test "tlsgd3"run_dump_test "tlsie2"run_dump_test "tlsie3"run_dump_test "hidden1"run_dump_test "hidden2"run_dump_test "hidden3"run_dump_test "protected1"run_dump_test "protected2"run_dump_test "protected2-l1om"run_dump_test "protected3"run_dump_test "protected3-l1om"run_dump_test "tlsle1"run_dump_test "tlspie1"run_dump_test "unique1"run_dump_test "nogot1"run_dump_test "nogot2"run_dump_test "discarded1"run_dump_test "pr12718"run_dump_test "pr12921"if { ![istarget "x86_64-*-linux*"] } {return}if ![ld_assemble $as "--x32 $srcdir/$subdir/start.s" tmpdir/startx32.o] {unresolved "Build ILP32 start.o"return}if ![ld_assemble $as "--32 $srcdir/$subdir/start.s" tmpdir/start32.o] {unresolved "Build ia32 start.o"return}if ![ld_assemble $as "--64 $srcdir/$subdir/start.s" tmpdir/start64.o] {unresolved "Build LP64 start.o"return}if ![ld_assemble $as "--x32 $srcdir/$subdir/foo.s" tmpdir/foox32.o] {unresolved "Build ILP32 foo.o"return}if ![ld_assemble $as "--32 $srcdir/$subdir/foo.s" tmpdir/foo32.o] {unresolved "Build ia32 foo.o"return}if ![ld_assemble $as "--64 $srcdir/$subdir/foo.s" tmpdir/foo64.o] {unresolved "Build LP64 foo.o"return}run_dump_test "compressed1"run_dump_test "ilp32-1"run_dump_test "ilp32-2"run_dump_test "ilp32-3"run_dump_test "ilp32-4"run_dump_test "ilp32-5"run_dump_test "ilp32-6"run_dump_test "ilp32-7"run_dump_test "ilp32-8"run_dump_test "ilp32-9"run_dump_test "ilp32-10"run_dump_test "ia32-1"run_dump_test "ia32-2"run_dump_test "ia32-3"run_dump_test "lp64-1"run_dump_test "lp64-2"run_dump_test "lp64-3"run_dump_test "pr13082-1a"run_dump_test "pr13082-1b"run_dump_test "pr13082-2a"run_dump_test "pr13082-2b"run_dump_test "pr13082-3a"run_dump_test "pr13082-3b"run_dump_test "pr13082-4a"run_dump_test "pr13082-4b"run_dump_test "pr13082-5a"run_dump_test "pr13082-5b"run_dump_test "pr13082-6a"run_dump_test "pr13082-6b"# Must be native with the C compilerif { [isnative] && [which $CC] != 0 } {run_cc_link_tests {{"Helper X32 DSO from x86-64 object" "" "-m64 -fPIC -g"{simple.c} {} "libsimple.a"}}set convertx32 "$objcopy -O elf32-x86-64 tmpdir/simple.o tmpdir/simple-x32.o"send_log "$convertx32\n"set got [remote_exec host "$convertx32"]if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {send_log "$got\n"fail "Convert x86-64 object to x32"return}run_ld_link_tests {{"X32 DSO from x86-64 object""-shared -melf32_x86_64 tmpdir/simple-x32.o" "--x32"{dummy.s} {{readelf {-s --wide} x86-64-x32.rd}} "x86-64-x32"}}}
