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