develooper Front page | perl.perl5.porters | Postings from May 2012

Re: Smoke [5.15.9] v5.15.9-270-g5a0c7e9 FAIL(m) HP-UX B.11.00/64 (PA-RISC2.0/64/2 cpu)

Thread Next
From:
Nicholas Clark
Date:
May 4, 2012 23:13
Subject:
Re: Smoke [5.15.9] v5.15.9-270-g5a0c7e9 FAIL(m) HP-UX B.11.00/64 (PA-RISC2.0/64/2 cpu)
Message ID:
20120505061327.GF1296@plum.flirble.org
On Fri, May 04, 2012 at 01:38:00PM +0200, H.Merijn Brand wrote:
> Automated smoke report for 5.15.9 patch 5a0c7e9d45ff6da450098635b233527990112d8a v5.15.9-270-g5a0c7e9
> a5: PA8700 (PA-RISC2.0/64/2 cpu)
>     on        HP-UX - B.11.00/64
>     using     cc version B.11.X.35098-35101.GP
>     smoketime 14 hours 53 minutes (average 1 hour 51 minutes)

> v5.15.9-270-g5a0c7e9  Configuration (common) none
> ----------- ---------------------------------------------------------
> O O O m - - 
> O O O O O O -Duse64bitall
> O O O m - - -Duseithreads
> O O O O O O -Duseithreads -Duse64bitall

So, to replicate the 'm', configure exactly the same way:

./Configure -de -DDEBUGGING -Dusedevel -Dcc=ccache\ cc -Dld=cc


one gets these flags

$ egrep '^(optimize|ccflags)=' config.sh                              
ccflags=' -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings -DDEBUGGING -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 '
optimize='+O2 +Onolimit -g'
$ make run.o                            
        `sh  cflags "optimize='+O2 +Onolimit -g'" run.o`  run.c
          CCCMD =  ccache cc -DPERL_CORE -c  -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings -DDEBUGGING -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   +O2 +Onolimit -g  
cc: error 1414: Can't handle preprocessed file "/perl/usr/nick/.ccache/run.tmp.p5p-hpux.28123.i" if -g and -O specified.
*** Error exit code 1

Stop.


Simply add -Duse64bitall to that Configure command line:

./Configure -de -Duse64bitall -DDEBUGGING -Dusedevel -Dcc=ccache\ cc -Dld=cc


and one gets the same flags, just with +DD64 added:

$ egrep '^(optimize|ccflags)=' config.sh
ccflags=' -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -DDEBUGGING -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 '
optimize='+O2 +Onolimit -g'
$ make run.o                            
        `sh  cflags "optimize='+O2 +Onolimit -g'" run.o`  run.c
          CCCMD =  ccache cc -DPERL_CORE -c  -Ae -D_HPUX_SOURCE -Wl,+vnocompatwarnings +DD64 -DDEBUGGING -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   +O2 +Onolimit -g  
cc: warning 404: Pre-processor not invoked, options ignored. 



and it works!

So it looks like a crazy compiler, in in that doesn't permit -g +O2 for 32 bit
mode, but does permit -g +O2 for 64 bit mode. But wait. What's the bit about
"Can't handle preprocessed file"

$ echo 'int i;' >bonkers.c
$ cc -c -g +O2 bonkers.c           
$ cc -E -g +O2 bonkers.c >bonkers.i 
$ cc -c -g +O2 bonkers.i
cc: error 1414: Can't handle preprocessed file "bonkers.i" if -g and -O specified.
$ cat bonkers.i
# 1 "bonkers.c"
int i;

$ cc -c -g +O2 +DD64 bonkers.c     
$ cc -E -g +O2 +DD64 bonkers.c >bonkers.i
$ cc -c -g +O2 +DD64 bonkers.i           
$ cat bonkers.i                          
# 1 "bonkers.c"
int i;


No, it's not just crazy compiler, its insane! It handles -g +O2 just fine
normally, but for 32 bit mode it refuses to accept pre-processed input.
Whereas for 64 bit mode it does.

If HP think that this isn't a bug, I'd love to know what their excuse is.

Nicholas Clark

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About