2000-07-16 H.J. Lu (hjl@gnu.org)
* ld-elfvsb/elfvsb.exp (support_protected): New variable. Check and set to "yes" if the protected visibility is expected to pass. (visibility_run): Set expected to fail for the "protected" and "protected_undef_def" tests only if $support_protected is "no". * ld-elfvsb/main.c (PROTECTED_CHECK): Check for the protected visibility support if defined.
This commit is contained in:
parent
1345a0c087
commit
08c44e659e
|
@ -1,3 +1,15 @@
|
||||||
|
2000-07-16 H.J. Lu (hjl@gnu.org)
|
||||||
|
|
||||||
|
* ld-elfvsb/elfvsb.exp (support_protected): New variable. Check
|
||||||
|
and set to "yes" if the protected visibility is expected to
|
||||||
|
pass.
|
||||||
|
(visibility_run): Set expected to fail for the "protected"
|
||||||
|
and "protected_undef_def" tests only if $support_protected is
|
||||||
|
"no".
|
||||||
|
|
||||||
|
* ld-elfvsb/main.c (PROTECTED_CHECK): Check for the protected
|
||||||
|
visibility support if defined.
|
||||||
|
|
||||||
2000-07-15 H.J. Lu (hjl@gnu.org)
|
2000-07-15 H.J. Lu (hjl@gnu.org)
|
||||||
|
|
||||||
* ld-elfvsb/elfvsb.exp (visibility_run): Set expected failure
|
* ld-elfvsb/elfvsb.exp (visibility_run): Set expected failure
|
||||||
|
|
|
@ -74,6 +74,16 @@ if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } {
|
||||||
close $file
|
close $file
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set support_protected "no"
|
||||||
|
|
||||||
|
if [istarget *-*-linux*] {
|
||||||
|
if [ld_compile "$CC $CFLAGS -DPROTECTED_CHECK" $srcdir/$subdir/main.c $tmpdir/main.o] {
|
||||||
|
if [ld_link $ld $tmpdir/main "$tmpdir/main.o"] {
|
||||||
|
catch "exec $tmpdir/main" support_protected
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# The test procedure.
|
# The test procedure.
|
||||||
proc visibility_test { visibility progname testname main sh1 sh2 dat args } {
|
proc visibility_test { visibility progname testname main sh1 sh2 dat args } {
|
||||||
global ld
|
global ld
|
||||||
|
@ -171,6 +181,7 @@ proc visibility_run {visibility} {
|
||||||
global tmpdir
|
global tmpdir
|
||||||
global picflag
|
global picflag
|
||||||
global target_triplet
|
global target_triplet
|
||||||
|
global support_protected
|
||||||
|
|
||||||
if [ string match $visibility "hidden" ] {
|
if [ string match $visibility "hidden" ] {
|
||||||
set VSBCFLAG "-DHIDDEN_TEST"
|
set VSBCFLAG "-DHIDDEN_TEST"
|
||||||
|
@ -215,7 +226,9 @@ proc visibility_run {visibility} {
|
||||||
# overriding.
|
# overriding.
|
||||||
if { [ string match $visibility "protected" ]
|
if { [ string match $visibility "protected" ]
|
||||||
|| [ string match $visibility "protected_undef_def" ] } {
|
|| [ string match $visibility "protected_undef_def" ] } {
|
||||||
setup_xfail $target_triplet
|
if [ string match $support_protected "no" ] {
|
||||||
|
setup_xfail $target_triplet
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
setup_xfail "*-*-sunos4*"
|
setup_xfail "*-*-sunos4*"
|
||||||
}
|
}
|
||||||
|
@ -227,7 +240,9 @@ proc visibility_run {visibility} {
|
||||||
# the load address is not zero (which is the default).
|
# the load address is not zero (which is the default).
|
||||||
if { [ string match $visibility "protected" ]
|
if { [ string match $visibility "protected" ]
|
||||||
|| [ string match $visibility "protected_undef_def" ] } {
|
|| [ string match $visibility "protected_undef_def" ] } {
|
||||||
setup_xfail $target_triplet
|
if [ string match $support_protected "no" ] {
|
||||||
|
setup_xfail $target_triplet
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
setup_xfail "*-*-sunos4*"
|
setup_xfail "*-*-sunos4*"
|
||||||
setup_xfail "*-*-linux*libc1"
|
setup_xfail "*-*-linux*libc1"
|
||||||
|
@ -245,7 +260,9 @@ proc visibility_run {visibility} {
|
||||||
} else {
|
} else {
|
||||||
if { [ string match $visibility "protected" ]
|
if { [ string match $visibility "protected" ]
|
||||||
|| [ string match $visibility "protected_undef_def" ] } {
|
|| [ string match $visibility "protected_undef_def" ] } {
|
||||||
setup_xfail $target_triplet
|
if [ string match $support_protected "no" ] {
|
||||||
|
setup_xfail $target_triplet
|
||||||
|
}
|
||||||
}
|
}
|
||||||
# SunOS can not compare function pointers correctly
|
# SunOS can not compare function pointers correctly
|
||||||
if [istarget "*-*-sunos4*"] {
|
if [istarget "*-*-sunos4*"] {
|
||||||
|
@ -271,7 +288,9 @@ proc visibility_run {visibility} {
|
||||||
# overriding.
|
# overriding.
|
||||||
if { [ string match $visibility "protected" ]
|
if { [ string match $visibility "protected" ]
|
||||||
|| [ string match $visibility "protected_undef_def" ] } {
|
|| [ string match $visibility "protected_undef_def" ] } {
|
||||||
setup_xfail $target_triplet
|
if [ string match $support_protected "no" ] {
|
||||||
|
setup_xfail $target_triplet
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
setup_xfail "*-*-sunos4*"
|
setup_xfail "*-*-sunos4*"
|
||||||
}
|
}
|
||||||
|
@ -284,7 +303,9 @@ proc visibility_run {visibility} {
|
||||||
if { [file exists $tmpdir/sh1p.o ] && [ file exists $tmpdir/sh2p.o ] } {
|
if { [file exists $tmpdir/sh1p.o ] && [ file exists $tmpdir/sh2p.o ] } {
|
||||||
if { [ string match $visibility "protected" ]
|
if { [ string match $visibility "protected" ]
|
||||||
|| [ string match $visibility "protected_undef_def" ] } {
|
|| [ string match $visibility "protected_undef_def" ] } {
|
||||||
setup_xfail $target_triplet
|
if [ string match $support_protected "no" ] {
|
||||||
|
setup_xfail $target_triplet
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } {
|
if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } {
|
||||||
visibility_test $visibility vmpp "visibility ($visibility) (PIC main)" mainp.o sh1p.o sh2p.o xcoff
|
visibility_test $visibility vmpp "visibility ($visibility) (PIC main)" mainp.o sh1p.o sh2p.o xcoff
|
||||||
|
|
|
@ -1,3 +1,21 @@
|
||||||
|
#ifdef PROTECTED_CHECK
|
||||||
|
#include <features.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main (argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
#if defined (__GLIBC__) && (__GLIBC__ > 2 \
|
||||||
|
|| (__GLIBC__ == 2 \
|
||||||
|
&& __GLIBC_MINOR__ >= 2))
|
||||||
|
puts ("yes");
|
||||||
|
#else
|
||||||
|
puts ("no");
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
/* This is the main program for the shared library test. */
|
/* This is the main program for the shared library test. */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -158,3 +176,4 @@ main ()
|
||||||
main_visibility_checkvar ());
|
main_visibility_checkvar ());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue