[svn:parrot] r37130 - in trunk/config: auto init/hints

rurban at svn.parrot.org rurban at svn.parrot.org
Thu Mar 5 18:57:04 UTC 2009


Author: rurban
Date: Thu Mar  5 18:57:03 2009
New Revision: 37130
URL: https://trac.parrot.org/parrot/changeset/37130

Log:
[config] TT #364 no 8byte ptr_alignment for Sparc64/solaris
- add -xmemalign=4s to hints
- On 8-byte ptr_alignment we cannot read 4-byte pbc's. 
  Warn the user about it

Modified:
   trunk/config/auto/alignptrs.pm
   trunk/config/init/hints/solaris.pm

Modified: trunk/config/auto/alignptrs.pm
==============================================================================
--- trunk/config/auto/alignptrs.pm	Thu Mar  5 18:43:38 2009	(r37129)
+++ trunk/config/auto/alignptrs.pm	Thu Mar  5 18:57:03 2009	(r37130)
@@ -37,7 +37,8 @@
         $align = $conf->data->get('ptr_alignment');
         $result_str .= "configured: ";
     }
-    elsif ( $conf->data->get_p5('OSNAME') eq 'hpux' && $conf->data->get_p5('ccflags') !~ /DD64/ ) {
+    elsif ( $conf->data->get_p5('OSNAME') eq 'hpux'
+            && $conf->data->get_p5('ccflags') !~ /DD64/ ) {
 
         # HP-UX 10.20/32 hangs in this test.
         $align = 4;
@@ -94,8 +95,16 @@
 sub _finalize_result_str {
     my $self = shift;
     my ($align, $result_str) = @_;
-    $result_str .= " $align byte";
-    $result_str .= "s" unless $align == 1;
+    # On 8-byte ptr_alignment we cannot read 4-byte pbc's. Warn the user about it.
+    # TODO: inform the user to use --64compat for parrot. Milestone v2.6
+    if ($align > 4) {
+        $result_str .= " $align byte";
+        $result_str .= "s\n   (Warning: 4-byte pbc's cannot be read!)";
+    }
+    else {
+        $result_str .= " $align byte";
+        $result_str .= "s" unless $align == 1;
+    }
     $self->set_result($result_str);
 }
 

Modified: trunk/config/init/hints/solaris.pm
==============================================================================
--- trunk/config/init/hints/solaris.pm	Thu Mar  5 18:43:38 2009	(r37129)
+++ trunk/config/init/hints/solaris.pm	Thu Mar  5 18:57:03 2009	(r37130)
@@ -101,6 +101,23 @@
         $conf->data->deltrigger( "gccversion", "solaris_ieee" );
     };
     $conf->data->settrigger( "gccversion", "solaris_ieee", $solaris_ieee_cb );
+
+    # Sparc64 Sun Pro cc has a strict default ptr_alignment of 8
+    # See TT #364
+    my $solaris_memalign_cb = sub {
+        my ( $key, $gccversion ) = @_;
+
+        if ($gccversion) {
+            # Don't know how to do this for gcc.
+        }
+        elsif ($conf->data->get('byteorder') eq '87654321') { # sun pro cc Sparc64 only
+            my $linkflags = $conf->data->get('linkflags');
+            $conf->data->add( ' ', linkflags => '-xmemalign=4s' )
+                unless $linkflags =~ /-xmemalign/;
+        }
+        $conf->data->deltrigger( "gccversion", "solaris_memalign" );
+    };
+    $conf->data->settrigger( "gccversion", "solaris_memalign", $solaris_memalign_cb );
 }
 
 1;


More information about the parrot-commits mailing list