Nicholas Clark writes:
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?
Yes, in 'gccversion', but the step to determine what version of GCC is being
used is apparently run *after* the hints file is run.