> Ok, I did a bootstrap and testsuite run without passing -mpa-risc-2-0 to the
> boostrap compiler. Testresults including configure options and environment at
> 
> http://gcc.gnu.org/ml/gcc-testresults/2006-01/msg01297.html
> 
> the only acats test that failed: c52103x

Your results are better than mine.  I suspect that "--disable-shared"
versus "--enable-shared" is the difference.  There might still be some
issues unwinding through shared libraries with the new dwarf2 exception
support.

These failures need looking at:

FAIL: gcc.c-torture/execute/20010122-1.c execution,  -O0
FAIL: gcc.c-torture/execute/20010122-1.c execution,  -O1
FAIL: gcc.c-torture/execute/20010122-1.c execution,  -O2
FAIL: gcc.c-torture/execute/20010122-1.c execution,  -O3 -g
FAIL: gcc.c-torture/execute/20010122-1.c execution,  -Os
FAIL: gcc.dg/cpp/_Pragma3.c (test for excess errors)

> For the target `hppa[1-2]*-hp-hpux11*' gcc --target-help says:
> 
> - -mpa-risc-2-0             Generate PA2.0 code (requires binutils 2.10 or 
> later)
> - -mpa-risc-1-1             Generate PA1.1 code
> - -mpa-risc-1-0             Generate PA1.0 code
> 
> which produces executables as follows for example:
> 
> file gcc
> gcc:  PA-RISC1.1 shared executable dynamically linked -not stripped

There is a bug in gas 2.16.1 which almost always causes the promotion
of PA 1.0 to PA 1.1.  This should be fixed in cvs binutils.

> For the target `hppa64-hp-hpux11*' it's completly different:
> 
> file gcc
> gcc:   ELF-64 executable object file - PA-RISC 2.0 (LP64)
> this is 64bit.

The wide mode bit is in the PSW for 64-bit executables.  This changes
the addressing model and the behavior of some instructions.

> So what I see, the `hppa64-hp-hpux11*' target implies PA-RISC 2.0 
> architecture.

Yes.

> But I think it's not true the other way. The `hppa[1-2]*-hp-hpux11*' target 
> does
> not imply 64bit.

Correct.  The runtime for `hppa[1-2]*-hp-hpux11*' is the 32-bit SOM runtime
(HP linker required).  The general registers are 64 bits in PA 2.0.  However,
only the least significant 32 bits of the call-saved registers are saved
and restored by the prologue and epilogue of functions.   The kernel will
save the full 64 bits on context switches if it's a wide-mode kernel (also
required for hppa64).  Thus, it's possible to use the full 64 bits of the
general registers between calls in the 32-bit runtime when using a wide-mode
kernel.  However, GCC doesn't attempt to use this capability.

> So, what I did in the past:
> 
> I set CC="gcc -mpa-risc-2-0".

This only is used in stage1 of a bootstrap.  To add "-mpa-risc-2-0"
to CFLAGS in later stages, you need to add something like
BOOT_CFLAGS="-g -O2 -mpa-risc-2-0" to the make bootstrap command.

> Runtime libraries are built for PA-RISC1.1, because gcc defaults to build
> PA-RISC1.1 code for target hppa2.0w-hp-hpux11.00, that's also curios.

Right.  I think the PA-RISC1.1 default is ok.  It's the base for almost
all applications in linux as it works on all supported hardware.  The main
benefit in using PA 2.0 in the 32-bit runtime arises in floating point
intensive applications.

Dave
-- 
J. David Anglin                                  [EMAIL PROTECTED]
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)

Reply via email to