target-supports.exp (check_visibility_available): Really test the compiler.
authorMark Mitchell <mark@codesourcery.com>
Fri, 19 Nov 2004 19:59:10 +0000 (19:59 +0000)
committerJoseph Myers <jsm28@gcc.gnu.org>
Fri, 19 Nov 2004 19:59:10 +0000 (19:59 +0000)
2004-11-19  Mark Mitchell  <mark@codesourcery.com>
            Joseph Myers  <joseph@codesourcery.com>

* lib/target-supports.exp (check_visibility_available): Really
test the compiler.

Co-Authored-By: Joseph Myers <joseph@codesourcery.com>
From-SVN: r90937

gcc/testsuite/ChangeLog
gcc/testsuite/lib/target-supports.exp

index b08e056..07d05d2 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-19  Mark Mitchell  <mark@codesourcery.com>
+            Joseph Myers  <joseph@codesourcery.com>
+
+       * lib/target-supports.exp (check_visibility_available): Really
+       test the compiler.
+
 2004-11-19  Dorit Naishlos  <dorit@il.ibm.com>
 
        PR tree-opt/18181
index ae85837..e26cd36 100644 (file)
@@ -97,30 +97,30 @@ proc check_weak_available { } {
 ###############################
 
 # The visibility attribute is only support in some object formats
-# This proc returns 1 if it is supported, 0 if not, -1 if unsure.
+# This proc returns 1 if it is supported, 0 if not.
 
 proc check_visibility_available { } {
+    global visibility_available_saved
+    global tool
     global target_triplet
-    global target_cpu
 
     # On NetWare, support makes no sense.
-    
     if { [string match "*-*-netware*" $target_triplet] } {
         return 0
     }
 
-    # ELF supports it if the system has recent GNU ld and gas.
-    # As a start we return 1 for all ELF systems; we'll let people
-    # add exceptions as necessary.
-
-    set objformat [gcc_target_object_format]
-
-    switch $objformat {
-        elf      { return 1 }
-        mach-o   { return 1 }
-        unknown  { return -1 }
-        default  { return 0 }
+    if {![info exists visibility_available_saved] } {
+       set lines [get_compiler_messages visibility object {
+           void f() __attribute__((visibility("hidden")));
+           void f() {}
+       }]
+       if [string match "" $lines] then {
+           set visibility_available_saved 1
+       } else {
+           set visibility_available_saved 0
+       }
     }
+    return $visibility_available_saved
 }
 
 ###############################