Index: lib/Parrot/Configure/Step/List.pm
===================================================================
--- lib/Parrot/Configure/Step/List.pm	(revision 34979)
+++ lib/Parrot/Configure/Step/List.pm	(working copy)
@@ -25,6 +25,7 @@
     auto::msvc
     auto::attributes
     auto::warnings
+    auto::export
     init::optimize
     inter::shlibs
     inter::libparrot
Index: config/auto/export.pm
===================================================================
--- config/auto/export.pm	(revision 0)
+++ config/auto/export.pm	(revision 0)
@@ -0,0 +1,55 @@
+# Copyright (C) 2001-2007, The Perl Foundation.
+
+=head1 NAME
+
+config/auto/export.pm - Export visibility
+
+=head1 DESCRIPTION
+
+Determines whether export visiblity is required for gcc, based on -fvisibility support
+
+=cut
+
+package auto::export;
+
+use strict;
+use warnings;
+
+use base qw(Parrot::Configure::Step);
+
+use Parrot::Configure::Utils ':auto';
+
+
+sub _init {
+    my $self = shift;
+    my %data;
+    $data{description} = q{Determine export visibility setting for gcc};
+    $data{result}      = q{};
+    return \%data;
+}
+
+sub runstep {
+    my ( $self, $conf ) = @_;
+    my $rv = $self->_evaluate_export($conf);
+    return $rv;
+}
+
+sub _evaluate_export {
+    my ($self, $conf) = @_;
+
+    my $visibility = $conf->data->get('fvisibility=hidden');
+
+    $conf->data->set( sym_export => '__attribute__ ((visibility("default")))' )
+        unless $visibility;
+
+    return 1;
+}
+
+1;
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
Index: config/auto/gcc.pm
===================================================================
--- config/auto/gcc.pm	(revision 34979)
+++ config/auto/gcc.pm	(working copy)
@@ -88,9 +88,6 @@
 
     my $ccwarn = $conf->data->get('ccwarn');
 
-    $conf->data->set( sym_export => '__attribute__ ((visibility("default")))' )
-        if $gccversion >= 4.0;
-
     $conf->data->set(
         ccwarn              => "$ccwarn",
         gccversion          => $gccversion,
