Closed p5pRT closed 14 years ago
make SCREEN PRINT: `sh cflags libperl.so toke.o` -KPIC toke.c CCCMD = /bin/cc -DPERL_CORE -c -I/usr/include -I/usr/ucbinclude -I/usr/local/include -O NCR High Performance C Compiler R3.0c (c) Copyright 1994-97\, NCR Corporation (c) Copyright 1987-97\, MetaWare Incorporated w "toke.c"\,L462/C23(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L623/C10(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L1269/C20(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L1808/C7(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L2034/C10(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L2040/C10(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L2042/C26(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L2986/C23(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3208/C17(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3482/C8(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3482/C32(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3510/C8(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3811/C8(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3812/C8(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3820/C8(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3938/C55(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3972/C22(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L3994/C51(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L4007/C12(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L4157/C9(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L5907/C24(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L6358/C20(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L6430/C5(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L6672/C18(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L6776/C5(#257): '=' encountered where '==' may have been intended. w "toke.c"\,L5165: Perl_yylex: Global CSE elimination suppressed; function is too big. Memory exhausted (malloc returned 0) While allocating 16000 byte chunk for pool live/dead vectors
Aborting(1)... *** Error code 1 (bu21)
make: fatal error. $
MYCONFIG SCREEN PRINT: $ vi myconfig "myconfig" 37 lines\, 1893 characters #!/bin/sh
# This script is designed to provide a handy summary of the configuration # information being used to build perl. This is especially useful if you # are requesting help from comp.lang.perl.misc on usenet or via mail.
# Note that the text lines /^Summary of/ .. /^\s*$/ are copied into Config.pm. cat \<\<'!NO!SUBS!' Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration: Platform: osname=svr4.0\, osvers=3.0\, archname=3426-svr4.0 uname='nbs3426 nbs3426 4.0 3.0 3426 pentium ii(tm)-isapci ' config_args='-dsE' hint=recommended\, useposix=true\, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=unde f useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef Compiler: cc='/bin/cc'\, ccflags ='-I/usr/include -I/usr/ucbinclude -I/usr/local/includ e'\, optimize='-O'\, cppflags='-I/usr/include -I/usr/ucbinclude -I/usr/local/include' ccversion=''\, gccversion=''\, gccosandvers='' intsize=4\, longsize=4\, ptrsize=4\, doublesize=8\, byteorder=1234 d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=12 ivtype='long'\, ivsize=4\, nvtype='double'\, nvsize=8\, Off_t='off_t'\, lseeksize =4 alignbytes=4\, usemymalloc=y\, prototype=define Linker and Libraries: ld='/bin/cc'\, ldflags ='-L/usr/ccs/lib -L/usr/ucblib -L/usr/local/lib -L/usr /gnu/lib' libpth=/usr/local/lib /usr/gnu/lib /lib /usr/lib /usr/ccs/lib /usr/ucblib libs=-lsocket -lnsl -ldbm -ldl -lld -lm -lc -lcrypt -lucb -lx perllibs=-lsocket -lnsl -ldl -lld -lm -lc -lcrypt -lucb -lx libc=\, so=so\, useshrplib=true\, libperl=libperl.so Dynamic Linking: dlsrc=dl_dlopen.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags=' ' cccdlflags='-KPIC'\, lddlflags='-G -L/usr/ccs/lib -L/usr/ucblib -L/usr/local/ lib -L/usr/gnu/lib'
!NO!SUBS!
\`sh cflags libperl\.so toke\.o\` \-KPIC toke\.c CCCMD = /bin/cc \-DPERL\_CORE \-c \-I/usr/include \-I/usr/ucbinclude
-I/usr/local/include -O
w "toke.c"\,L5165: Perl_yylex: Global CSE elimination suppressed; function is too big. Memory exhausted (malloc returned 0) While allocating 16000 byte chunk for pool live/dead vectors
Aborting(1)... *** Error code 1 (bu21)
optimize='\-O'\,
It seems you still have the optimiser flags in.
I think (this is from memory\, but hopefully is correct) in your existing configured build directory your best bet is to
1: edit config.sh. Find the line optimize='-O' and change it to optimize='' 2: ./Configure -S to rebuild the Makefile and other files which depend on the settings in config.sh 3: rerun make.
Hopefully your compiler line will then be:
`sh cflags libperl.so toke.o` -KPIC toke.c CCCMD = /bin/cc -DPERL_CORE -c -I/usr/include -I/usr/ucbinclude -I/usr/local/include
(ie that -O at the end is gone)
You'll end up with a perl built with no optimisation\, which might be slower that you would like.
A better but more involved solution would be to see if your compiler's documentation gives any clues on which flags to use to tune its behaviour; either by turning off all Global CSE (which the compiler appears to be reporting is where it's hitting its limits) or by telling it exactly how large a buffer to allocate for Global CSE (so that it doesn't attempt to do what it's currently doing\, and allocate a buffer that exhausts memory)
I have no idea how to do that\, but believe that some compilers let you do this sort of thing.
Nicholas Clark
An alternative to this is to turn off the optimization only on the toke.c. rm config.sh and re-Configure with an additional parameter:
./Configure -de -Dtoke_cflags='optimize=""' ...
This should remove optimization from only the toke.c
A better but more involved solution would be to see if your compiler's documentation gives any clues on which flags to use to tune its behaviour; either by turning off all Global CSE (which the compiler appears to be reporting is where it's hitting its limits) or by telling it exactly how large a buffer to allocate for Global CSE (so that it doesn't attempt to do what it's currently doing\, and allocate a buffer that exhausts memory)
I have no idea how to do that\, but believe that some compilers let you do this sort of thing.
Yes\, many compilers have an option like that\, -Olimit N or -Omaxmem=N or something of the sort.
Nicholas Clark
An alternative to this is to turn off the optimization only on the toke.c. rm config.sh and re-Configure with an additional parameter:
\./Configure \-de \-Dtoke\_cflags='optimize=""' \.\.\.
This should remove optimization from only the toke.c
Normally\, this is a good idea\, but for NCR MP-RAS you also need to turn off the optimizer for reg*.c\, or else regular expressions won't work. The first symptom of that will be a very puzzling failure to correctly build DynaLoader.
Your best bet here is to turn off the optimizer all around. See the section =item Optimizer in the INSTALL file for details.
Thanks for your suggestions anyway.
@chorny - Status changed from 'open' to 'resolved'
Migrated from rt.perl.org#6859 (status was 'resolved')
Searchable as RT6859$