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:
H.J. Lu 2000-07-16 21:29:32 +00:00
parent 1345a0c087
commit 08c44e659e
3 changed files with 57 additions and 5 deletions

View File

@ -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)
* ld-elfvsb/elfvsb.exp (visibility_run): Set expected failure

View File

@ -74,6 +74,16 @@ if { [istarget rs6000*-*-aix*] || [istarget powerpc*-*-aix*] } {
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.
proc visibility_test { visibility progname testname main sh1 sh2 dat args } {
global ld
@ -171,6 +181,7 @@ proc visibility_run {visibility} {
global tmpdir
global picflag
global target_triplet
global support_protected
if [ string match $visibility "hidden" ] {
set VSBCFLAG "-DHIDDEN_TEST"
@ -215,7 +226,9 @@ proc visibility_run {visibility} {
# overriding.
if { [ string match $visibility "protected" ]
|| [ string match $visibility "protected_undef_def" ] } {
setup_xfail $target_triplet
if [ string match $support_protected "no" ] {
setup_xfail $target_triplet
}
} else {
setup_xfail "*-*-sunos4*"
}
@ -227,7 +240,9 @@ proc visibility_run {visibility} {
# the load address is not zero (which is the default).
if { [ string match $visibility "protected" ]
|| [ string match $visibility "protected_undef_def" ] } {
setup_xfail $target_triplet
if [ string match $support_protected "no" ] {
setup_xfail $target_triplet
}
} else {
setup_xfail "*-*-sunos4*"
setup_xfail "*-*-linux*libc1"
@ -245,7 +260,9 @@ proc visibility_run {visibility} {
} else {
if { [ string match $visibility "protected" ]
|| [ 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
if [istarget "*-*-sunos4*"] {
@ -271,7 +288,9 @@ proc visibility_run {visibility} {
# overriding.
if { [ string match $visibility "protected" ]
|| [ string match $visibility "protected_undef_def" ] } {
setup_xfail $target_triplet
if [ string match $support_protected "no" ] {
setup_xfail $target_triplet
}
} else {
setup_xfail "*-*-sunos4*"
}
@ -284,7 +303,9 @@ proc visibility_run {visibility} {
if { [file exists $tmpdir/sh1p.o ] && [ file exists $tmpdir/sh2p.o ] } {
if { [ string match $visibility "protected" ]
|| [ 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*] } {
visibility_test $visibility vmpp "visibility ($visibility) (PIC main)" mainp.o sh1p.o sh2p.o xcoff

View File

@ -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. */
#include <stdio.h>
@ -158,3 +176,4 @@ main ()
main_visibility_checkvar ());
return 0;
}
#endif