Using long long on a 32 bit machine (x86) gives a whole new way to make
warnings: :-)
cc -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -Wall -fno-strict-aliasing
-I/usr/local/include -Wall -I./include -DHAS_JIT -o test_main.o -c test_main.c
test_main.c: In function `main':
test_main.c:207: warning: long int format, different type arg (arg 4)
cc -DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -Wall -fno-strict-aliasing
-I/usr/local/include -Wall -I./include -DHAS_JIT -o global_setup.o -c global_setup.c
global_setup.c: In function `init_world':
global_setup.c:22: warning: implicit declaration of function
`Parrot_PerlInt_class_init'
global_setup.c:23: warning: implicit declaration of function
`Parrot_PerlNum_class_init'
global_setup.c:24: warning: implicit declaration of function
`Parrot_PerlString_class_init'
global_setup.c:25: warning: implicit declaration of function
`Parrot_PerlArray_class_init'
But no tests have failed yet as I type this. I really should go to bed.
Nicholas Clark
--- Configure.pl~ Mon Dec 31 22:06:48 2001
+++ Configure.pl Tue Jan 1 02:16:02 2002
@@ -395,15 +395,34 @@
foreach ('intvalsize', 'opcode_t_size') {
my $which = $_ eq 'intvalsize' ? 'packtype_i' : 'packtype_op';
+ my $format;
if (($] >= 5.006) && ($c{$_} == $c{longsize}) ) {
- $c{$which} = 'l!';
+ $format = 'l!';
}
elsif ($c{$_} == 4) {
- $c{$which} = 'l';
+ $format = 'l';
}
- else {
- die "Configure.pl: Unable to find a suitable packtype for $_.\n";
+ elsif ($c{$_} == 8 and $Config{quadtype}) {
+ # pp_pack is annoying, and this won't work unless sizeof(UV) >= 8
+ $format = 'q';
}
+ die "Configure.pl: Unable to find a suitable packtype for $_.\n"
+ unless $format;
+
+ my $test = eval {pack $format, 0};
+ unless (defined $test) {
+ die <<"AARGH"
+Configure.pl: Unable to find a functional packtype for $_.
+ '$format' failed: $@
+AARGH
+ }
+ unless (length $test == $c{$_}) {
+ die sprintf <<"AARGH", $c{$_}, length $test;
+Configure.pl: Unable to find a functional packtype for $_.
+ Need a format for %d bytes, but '$format' gave %d bytes.
+AARGH
+ }
+ $c{$which} = $format;
}
$c{packtype_n} = 'd';