On Sat, May 26, 2007 at 08:14:30PM -0700, [EMAIL PROTECTED] wrote:
> Author: chromatic
> Date: Sat May 26 20:14:29 2007
> New Revision: 18661
> 
> Modified:
>    trunk/config/init/hints/linux.pm
> 
> Log:
> Enable symbol hiding with GCC on Linux.
> 
> This'll smoke out some of the errors that plague Windows users.

It breaks on gcc 3.3.5

> Modified: trunk/config/init/hints/linux.pm
> ==============================================================================
> --- trunk/config/init/hints/linux.pm  (original)
> +++ trunk/config/init/hints/linux.pm  Sat May 26 20:14:29 2007
> @@ -52,6 +52,9 @@
>          }
>      }
>      else {
> +        # hide non-exported symbols
> +        $cflags .= ' -fvisibility=hidden';
> +
>          if ( $ld_share_flags !~ /-fPIC/ ) {
>              $ld_share_flags .= ' -fPIC';
>          }
> @@ -87,6 +90,7 @@
>          libparrot_shared       => 'libparrot$(SHARE_EXT).$(SOVERSION)',
>          libparrot_shared_alias => 'libparrot$(SHARE_EXT)',
>          libparrot_soname       => 
> '-Wl,-soname=libparrot$(SHARE_EXT).$(SOVERSION)',
> +        sym_export             => '__attribute__ ((visibility("default")))',
>      );
>  
>      if ( ( split( '-', $Config{archname} ) )[0] eq 'ia64' ) {

This is something I really approve of, but it can't be done unconditionally.
Is the gcc version kept somewhere convenient in the configure data structures?

Nicholas Clark


Reply via email to