# Expect script for ld-powerpc tests# Copyright 2002, 2003, 2005, 2006, 2007, 2008 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.#if { ![istarget "powerpc*-*-*"] } {return}if {[istarget "*-*-vxworks"]} {set ppcvxtests {{"VxWorks shared library test 1 (default script)" "-shared""-mregnames" {vxworks1-lib.s}{{readelf --segments vxworks1-lib.sd}}"libvxworks1.so"}{"VxWorks shared library test 1" "-shared -Tvxworks1.ld""-mregnames" {vxworks1-lib.s}{{readelf --relocs vxworks1-lib.rd} {objdump -dr vxworks1-lib.dd}{readelf --symbols vxworks1-lib.nd} {readelf -d vxworks1-lib.td}}"libvxworks1.so"}{"VxWorks executable test 1 (dynamic)" \"tmpdir/libvxworks1.so -Tvxworks1.ld -q --force-dynamic""-mregnames" {vxworks1.s}{{readelf --relocs vxworks1.rd} {objdump -dr vxworks1.dd}}"vxworks1"}{"VxWorks executable test 2 (dynamic)" \"-Tvxworks1.ld -q --force-dynamic""-mregnames" {vxworks2.s}{{readelf --segments vxworks2.sd}}"vxworks2"}{"VxWorks executable test 2 (static)""-Tvxworks1.ld""-mregnames" {vxworks2.s}{{readelf --segments vxworks2-static.sd}}"vxworks2"}}run_ld_link_tests $ppcvxtestsrun_dump_test "vxworks1-static"return}# powerpc ELF only at the moment. Disable for nto too, even though it# is ELF, because we pass -melf32ppc to ld and powerpc-nto-ld wants# -melf32ppcnto.if { [istarget "*-*-macos*"] || [istarget "*-*-netware*"]|| [istarget "*-*-pe"] || [istarget "*-*-winnt*"]|| [istarget "*-*-cygwin*"] || [istarget "*-*-aix*"]|| [istarget "*-*-beos*"] || [istarget "*-*-lynxos*"]|| [istarget "*-*-nto*"] } {return}proc supports_ppc64 { } {global ldcatch "exec $ld --help | grep emulations" tmpif [ string match "*elf64ppc*" $tmp ] then {return 1} else {return 0}}# 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 ppcelftests {{"Reloc section order" "-melf32ppc -shared -z nocombreloc" "-a32" {reloc.s}{{objdump -hw reloc.d}} "reloc.so"}{"APUinfo section processing" "-melf32ppc""-a32 -me500" {apuinfo1.s apuinfo2.s}{{readelf -x2 apuinfo.rd}} "apuinfo"}{"TLS32 static exec" "-melf32ppc" "-a32" {tls32.s tlslib32.s}{{objdump -dr tls32.d} {objdump -sj.got tls32.g}{objdump -sj.tdata tls32.t}}"tls32"}{"TLS32 helper shared library" "-shared -melf32ppc tmpdir/tlslib32.o" "" {}{} "libtlslib32.so"}{"TLS32 dynamic exec" "-melf32ppc tmpdir/tls32.o tmpdir/libtlslib32.so" "" {}{{readelf -WSsrl tlsexe32.r} {objdump -dr tlsexe32.d}{objdump -sj.got tlsexe32.g} {objdump -sj.tdata tlsexe32.t}}"tlsexe32"}{"TLS32 shared" "-shared -melf32ppc tmpdir/tls32.o" "" {}{{readelf -WSsrl tlsso32.r} {objdump -dr tlsso32.d}{objdump -sj.got tlsso32.g} {objdump -sj.tdata tlsso32.t}}"tls32.so"}{"Shared library with global symbol" "-shared -melf32ppc" "-a32" {sdalib.s}{} "sdalib.so"}{"Dynamic application with SDA" "-melf32ppc tmpdir/sdalib.so" "-a32" {sdadyn.s}{{objdump -R sdadyn.d}} "sdadyn"}}set ppc64elftests {{"TLS static exec" "-melf64ppc" "-a64" {tls.s tlslib.s}{{objdump -dr tls.d} {objdump -sj.got tls.g} {objdump -sj.tdata tls.t}}"tls"}{"TLS helper shared library" "-shared -melf64ppc tmpdir/tlslib.o" "" {}{} "libtlslib.so"}{"TLS dynamic exec" "-melf64ppc tmpdir/tls.o tmpdir/libtlslib.so" "" {}{{readelf -WSsrl tlsexe.r} {objdump -dr tlsexe.d}{objdump -sj.got tlsexe.g} {objdump -sj.tdata tlsexe.t}}"tlsexe"}{"TLS shared" "-shared -melf64ppc tmpdir/tls.o" "" {}{{readelf -WSsrl tlsso.r} {objdump -dr tlsso.d}{objdump -sj.got tlsso.g} {objdump -sj.tdata tlsso.t}}"tls.so"}{"TLSTOC static exec" "-melf64ppc tmpdir/tlslib.o " "-a64" {tlstoc.s}{{objdump -dr tlstoc.d} {objdump -sj.got tlstoc.g}{objdump -sj.tdata tlstoc.t}}"tlstoc"}{"TLSTOC dynamic exec" "-melf64ppc tmpdir/tlstoc.o tmpdir/libtlslib.so""" {}{{readelf -WSsrl tlsexetoc.r} {objdump -dr tlsexetoc.d}{objdump -sj.got tlsexetoc.g} {objdump -sj.tdata tlsexetoc.t}}"tlsexetoc"}{"TLSTOC shared" "-shared -melf64ppc tmpdir/tlstoc.o" "" {}{{readelf -WSsrl tlstocso.r} {objdump -dr tlstocso.d}{objdump -sj.got tlstocso.g} {objdump -sj.tdata tlstocso.t}}"tlstoc.so"}{"sym@tocbase" "-shared -melf64ppc" "-a64" {symtocbase-1.s symtocbase-2.s}{{objdump -dj.data symtocbase.d}} "symtocbase.so"}}run_ld_link_tests $ppcelftestsif [ supports_ppc64 ] then {run_ld_link_tests $ppc64elftestsrun_dump_test "relbrlt"}run_dump_test "plt1"run_dump_test "attr-gnu-4-00"run_dump_test "attr-gnu-4-01"run_dump_test "attr-gnu-4-02"run_dump_test "attr-gnu-4-03"run_dump_test "attr-gnu-4-10"run_dump_test "attr-gnu-4-11"run_dump_test "attr-gnu-4-12"run_dump_test "attr-gnu-4-13"run_dump_test "attr-gnu-4-14"run_dump_test "attr-gnu-4-20"run_dump_test "attr-gnu-4-21"run_dump_test "attr-gnu-4-22"run_dump_test "attr-gnu-4-23"run_dump_test "attr-gnu-4-24"run_dump_test "attr-gnu-4-31"run_dump_test "attr-gnu-4-32"run_dump_test "attr-gnu-4-33"run_dump_test "attr-gnu-4-34"run_dump_test "attr-gnu-4-41"run_dump_test "attr-gnu-8-11"run_dump_test "attr-gnu-8-23"run_dump_test "attr-gnu-8-31"