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
3 changed files with 57 additions and 5 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue