[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