In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/6dace35894a5f483df6175d4ae815d2139ce317c?hp=8bc5de207a4b3d333e9c6535bd21b8f0b1381270>
- Log ----------------------------------------------------------------- commit 6dace35894a5f483df6175d4ae815d2139ce317c Author: Jarkko Hietaniemi <[email protected]> Date: Tue Oct 14 22:52:28 2014 -0400 rt122747.t needs Unicode tables. M t/re/rt122747.t commit 785259d926634dd2e3299fb65d8200a71519923b Author: Jarkko Hietaniemi <[email protected]> Date: Tue Oct 14 22:50:34 2014 -0400 eintr.t needs Fcntl. M t/io/eintr.t commit b75ee85b8834cec07e1b0abe7cef8286da62df29 Author: Jarkko Hietaniemi <[email protected]> Date: Sun Oct 12 20:44:02 2014 -0400 Irix: note that prctl comes in different incompatible flavors. M Porting/Glossary M config_h.SH M uconfig.h commit 891166fc7d91046684ad874377c0b6d20d4072a3 Author: Jarkko Hietaniemi <[email protected]> Date: Wed Oct 15 18:26:41 2014 -0400 Irix: <float.h> thinks double-double has 107 bits of mantissa. As opposed to 106. Also add comment about the sizeof 12 versus 16 for x86 80-bit format. M Configure commit 1764d98bf44052060e2fe7cfa940d4ffc19f5961 Author: Jarkko Hietaniemi <[email protected]> Date: Tue Oct 14 22:47:33 2014 -0400 Irix: MIPSpro 7.4 compiler has broken memcmp. (Supposedly 7.4.1m is okay in this regard, and there is also 7.5.) The commit that 'broke' Perl build on IRIX was 57620943 which of course wasn't to blame, the IRIX compiler was. (Symptom: miniperl crashing, can be narrowed to just /[[:alpha:]]/) Furthermore: IRIX build was also earlier broken for a long time by another problem (in the preprocessor), see for example perl #33849. (Symptom: compile failing in gv.c RvDEEPCP) Summary: building Perls on IRIX needs either this very commit, or undoing the 57620943 (for the memcmp brokenness), and possibly applying both the c297d531 and 08c5d564 (for the cpp brokenness). (The latter were applied between 5.10.0 and 5.10.1.) M hints/irix_6.sh ----------------------------------------------------------------------- Summary of changes: Configure | 7 +++++-- Porting/Glossary | 2 ++ config_h.SH | 2 ++ hints/irix_6.sh | 20 ++++++++++++++++++++ t/io/eintr.t | 2 ++ t/re/rt122747.t | 4 ++++ uconfig.h | 4 +++- 7 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Configure b/Configure index 95909f2..caa93a0 100755 --- a/Configure +++ b/Configure @@ -6884,6 +6884,8 @@ int main() { exit(0); } #endif +/* For alignment 32-bit platforms have the 80 bits in 12 bytes, + * while 64-bits platforms have it in 16 bytes. */ #if LDBL_MANT_DIG == 64 && (LONGDBLSIZE == 16 || LONGDBLSIZE == 12) if (b[0] == 0xCD && b[9] == 0xBF && b[10] == 0x00) { /* x86 80-bit little-endian, sizeof 12 (ILP32, Solaris x86) @@ -6898,8 +6900,9 @@ int main() { exit(0); } #endif -#if LDBL_MANT_DIG == 106 && LONGDBLSIZE == 16 - /* software "double double", the 106 is 53+53 */ +#if (LDBL_MANT_DIG == 106 || LDBL_MANT_DIG == 107) && LONGDBLSIZE == 16 + /* software "double double", the 106 is 53+53. + * but irix thinks it is 107. */ if (b[0] == 0x9A && b[7] == 0x3C && b[8] == 0x9A && b[15] == 0xBF) { /* double double 128-bit little-endian, * 9a 99 99 99 99 99 59 3c 9a 99 99 99 99 99 b9 bf */ diff --git a/Porting/Glossary b/Porting/Glossary index 32b29e2..e56c6e1 100644 --- a/Porting/Glossary +++ b/Porting/Glossary @@ -1701,6 +1701,8 @@ d_portable (d_portable.U): d_prctl (d_prctl.U): This variable conditionally defines the HAS_PRCTL symbol, which indicates to the C program that the prctl() routine is available. + Note that there are at least two prctl variants: Linux and Irix. + While they are somewhat similar, they are incompatible. d_prctl_set_name (d_prctl.U): This variable conditionally defines the HAS_PRCTL_SET_NAME symbol, diff --git a/config_h.SH b/config_h.SH index 5b26b94..b78c57f 100755 --- a/config_h.SH +++ b/config_h.SH @@ -3950,6 +3950,8 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un /* HAS_PRCTL: * This symbol, if defined, indicates that the prctl routine is * available to set process title. + * Note that there are at least two prctl variants: Linux and Irix. + * While they are somewhat similar, they are incompatible. */ /* HAS_PRCTL_SET_NAME: * This symbol, if defined, indicates that the prctl routine is diff --git a/hints/irix_6.sh b/hints/irix_6.sh index 3fe1ae9..fc315a5 100644 --- a/hints/irix_6.sh +++ b/hints/irix_6.sh @@ -360,6 +360,26 @@ case "$ccversion" in ;; esac +# There is a devious bug in the MIPSpro 7.4 compiler: +# memcmp() is an inlined intrinsic, and "sometimes" it gets compiled wrong. +# +# In Perl the most obvious hit is regcomp.c:S_regpposixcc(), +# causing bus errors when compiling the POSIX character classes like +# /[[:digit:]], which means that miniperl cannot build perl. +# (That is almost only the one victim: one single test in re/pat fails, also.) +# +# Therefore let's turn the inline intrinsics off and let the normal +# libc versions be used instead. This may cause a performance hit +# but a little slower is better than zero speed. +# +# MIPSpro C 7.4.1m is supposed to have fixed this bug. +# +case "$ccversion" in +"MIPSpro Compilers: Version 7.4") + ccflags="$ccflags -U__INLINE_INTRINSICS" + ;; +esac + EOCCBU # End of cc.cbu callback unit. - Allen diff --git a/t/io/eintr.t b/t/io/eintr.t index 6e99ac0..fd19b8a 100644 --- a/t/io/eintr.t +++ b/t/io/eintr.t @@ -9,6 +9,8 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; + require './test.pl'; + skip_all_without_dynamic_extension('Fcntl'); } use warnings; diff --git a/t/re/rt122747.t b/t/re/rt122747.t index b839edd..4f38ef3 100644 --- a/t/re/rt122747.t +++ b/t/re/rt122747.t @@ -9,6 +9,10 @@ BEGIN { chdir 't' if -d 't'; @INC = ('../lib','.','../ext/re'); require './test.pl'; + if (is_miniperl()) { + skip_if_miniperl("Unicode tables not built yet", 2) + unless eval 'require "unicore/Heavy.pl"'; + } } plan tests => 3; diff --git a/uconfig.h b/uconfig.h index dc6690e..d2b10c9 100644 --- a/uconfig.h +++ b/uconfig.h @@ -3915,6 +3915,8 @@ /* HAS_PRCTL: * This symbol, if defined, indicates that the prctl routine is * available to set process title. + * Note that there are at least two prctl variants: Linux and Irix. + * While they are somewhat similar, they are incompatible. */ /* HAS_PRCTL_SET_NAME: * This symbol, if defined, indicates that the prctl routine is @@ -4871,6 +4873,6 @@ #endif /* Generated from: - * 74bb96b6e7b18b5b5f121da4f2849cd5521bb55ff62d63970fedb9a7ebd80f63 config_h.SH + * 60aff40735c73cdf11d3fbae8088eadf73c0b45413be5bd8480ec5ec481066da config_h.SH * 35023b2d9244ad2dc3abea4bb5174a7f66398b60266231cb9a2c3bfc8df867cf uconfig.sh * ex: set ro: */ -- Perl5 Master Repository
