+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
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
global tmpdir
global picflag
global target_triplet
+ global support_protected
if [ string match $visibility "hidden" ] {
set VSBCFLAG "-DHIDDEN_TEST"
# 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*"
}
# 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"
} 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*"] {
# 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*"
}
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