The attached patch removes '-flat_namespace' and consistently uses '-undefined dynamic_lookup'. It also restricts the changes to just the darwin config hints file, which seems like a more appropriate place. It resolves all the test failures related to undefined symbols on OS X. (t/src/intlist.t is still failing the 4th test, but it fails the same way on Linux when I unTODO it.) It also runs 'make perl6' without errors.
If you're running some flavor of OS X, please test this patch. (Let me know if you're running a version before 10.3. It was released October 2003, which is significantly before our "versions released in the past 2 years" cutoff of support for the 1.0 release of Parrot.) I've wanted to get rid of the '-flat_namespace' hack for a long time now.
Index: config/init/hints/darwin.pm =================================================================== --- config/init/hints/darwin.pm (revision 25264) +++ config/init/hints/darwin.pm (working copy) @@ -24,9 +24,6 @@ my $lib_dir = $conf->data->get('build_dir') . "/blib/lib"; $ldflags .= " -L$lib_dir"; $ccflags .= " -pipe -fno-common -Wno-long-double "; - $ccflags =~ s/-flat_namespace\s*//; - $ldflags =~ s/-flat_namespace\s*//; - $ldflags .= " -flat_namespace "; $conf->data->set( darwin => 1, @@ -37,9 +34,10 @@ share_ext => '.dylib', load_ext => '.bundle', link => 'c++', + linkflags => '-undefined dynamic_lookup', ld => 'c++', - ld_share_flags => '-dynamiclib -undefined suppress', - ld_load_flags => '-bundle -undefined suppress', + ld_share_flags => '-dynamiclib -undefined dynamic_lookup', + ld_load_flags => '-bundle -undefined dynamic_lookup', memalign => 'some_memalign', has_dynamic_linking => 1,