diff options
author | Alan Modra <amodra@gmail.com> | 2009-07-10 12:19:58 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2009-07-10 12:19:58 +0000 |
commit | e054468f6cf120142dbfdf64226a5c6c09ecf998 (patch) | |
tree | 835b16de7d80522f5f8da90ddcc8bbd59fe58548 /ld/testsuite | |
parent | fbb8f2990ccfa180274ab4a578818fe247823540 (diff) | |
download | gdb-e054468f6cf120142dbfdf64226a5c6c09ecf998.zip gdb-e054468f6cf120142dbfdf64226a5c6c09ecf998.tar.gz gdb-e054468f6cf120142dbfdf64226a5c6c09ecf998.tar.bz2 |
STT_GNU_IFUNC support for PowerPC.
Diffstat (limited to 'ld/testsuite')
-rw-r--r-- | ld/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-ifunc/ifunc.exp | 35 |
2 files changed, 33 insertions, 7 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 5e4b710..be6e2e5 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-07-10 Alan Modra <amodra@bigpond.net.au> + + * ld-ifunc/ifunc.exp: Run for powerpc. Really generate static + executables, renaming the existing dynamic but local tests. + 2009-07-08 Alan Modra <amodra@bigpond.net.au> * ld-selective/selective.exp: Remove check that $CC contains the diff --git a/ld/testsuite/ld-ifunc/ifunc.exp b/ld/testsuite/ld-ifunc/ifunc.exp index 6840e4e..3320b82 100644 --- a/ld/testsuite/ld-ifunc/ifunc.exp +++ b/ld/testsuite/ld-ifunc/ifunc.exp @@ -23,11 +23,15 @@ # Written by Nick Clifton <nickc@redhat.com> -# IFUNC support has only been implemented for the x86_64 and ix86 so far. -if {! ( [istarget "x86_64-*-elf*"] - || [istarget "x86_64-*-linux*"] - || [istarget "i?86-*-elf*"] - || [istarget "i?86-*-linux*"]) } { +# IFUNC support has only been implemented for the ix86, x86_64 and powerpc +# so far. +if {!(([istarget "i?86-*-*"] + || [istarget "x86_64-*-*"] + || [istarget "powerpc*-*-*"]) + && ([istarget "*-*-elf*"] + || ([istarget "*-*-linux*"] + && ![istarget "*-*-*aout*"] + && ![istarget "*-*-*oldld*"]))) } { verbose "IFUNC tests not run - target does not support IFUNC" return } @@ -195,11 +199,15 @@ if ![default_ld_link $ld "tmpdir/dynamic_prog" "-Ltmpdir tmpdir/shared_prog.o -B fail "Could not link a dynamic executable" set fails [expr $fails + 1] } -if ![default_ld_link $ld "tmpdir/static_prog" "-Ltmpdir tmpdir/static_prog.o -lifunc"] { +if ![default_ld_link $ld "tmpdir/local_prog" "-Ltmpdir tmpdir/static_prog.o -lifunc"] { + fail "Could not link a dynamic executable using local ifunc" + set fails [expr $fails + 1] +} +if ![default_ld_link $ld "tmpdir/static_prog" "-static -Ltmpdir tmpdir/static_prog.o -lifunc"] { fail "Could not link a static executable" set fails [expr $fails + 1] } -if ![default_ld_link $ld "tmpdir/static_nonifunc_prog" "-Ltmpdir tmpdir/static_prog.o tmpdir/static_noifunc.o"] { +if ![default_ld_link $ld "tmpdir/static_nonifunc_prog" "-static -Ltmpdir tmpdir/static_prog.o tmpdir/static_noifunc.o"] { fail "Could not link a non-ifunc using static executable" set fails [expr $fails + 1] } @@ -221,6 +229,10 @@ if {! [check_osabi tmpdir/libshared_ifunc.so {UNIX - Linux}]} { fail "Shared libraries containing ifunc does not have an OS/ABI field of LINUX" set fails [expr $fails + 1] } +if {! [check_osabi tmpdir/local_prog {UNIX - Linux}]} { + fail "Local ifunc-using executable does not have an OS/ABI field of LINUX" + set fails [expr $fails + 1] +} if {! [check_osabi tmpdir/static_prog {UNIX - Linux}]} { fail "Static ifunc-using executable does not have an OS/ABI field of LINUX" set fails [expr $fails + 1] @@ -242,6 +254,10 @@ if {[contains_ifunc_symbol tmpdir/libshared_ifunc.so] != 1} { fail "Shared libraries containing ifunc does not contain an IFUNC symbol" set fails [expr $fails + 1] } +if {[contains_ifunc_symbol tmpdir/local_prog] != 1} { + fail "Local ifunc-using executable does not contain an IFUNC symbol" + set fails [expr $fails + 1] +} if {[contains_ifunc_symbol tmpdir/static_prog] != 1} { fail "Static ifunc-using executable does not contain an IFUNC symbol" set fails [expr $fails + 1] @@ -264,6 +280,10 @@ if {[contains_irelative_reloc tmpdir/libshared_ifunc.so] != 1} { fail "ifunc-using shared library does not contain R_*_IRELATIVE relocation" set fails [expr $fails + 1] } +if {[contains_irelative_reloc tmpdir/local_prog] != 1} { + fail "Local ifunc-using executable does not contain R_*_IRELATIVE relocation" + set fails [expr $fails + 1] +} if {[contains_irelative_reloc tmpdir/static_prog] != 1} { fail "Static ifunc-using executable does not contain R_*_IRELATIVE relocation" set fails [expr $fails + 1] @@ -291,6 +311,7 @@ if { $verbose < 1 } { remote_file host delete "tmpdir/libshared_ifunc.so" remote_file host delete "tmpdir/libifunc.a" remote_file host delete "tmpdir/dynamic_prog" + remote_file host delete "tmpdir/local_prog" remote_file host delete "tmpdir/static_prog" remote_file host delete "tmpdir/static_nonifunc_prog" } |