This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: bootstrap failure for Ada gcc 4.1 Revision 110108 on
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- To: r dot emrich at de dot tecosim dot com (Rainer Emrich)
- Cc: laurent at guerby dot net, gcc at gcc dot gnu dot org
- Date: Wed, 25 Jan 2006 12:36:49 -0500 (EST)
- Subject: Re: bootstrap failure for Ada gcc 4.1 Revision 110108 on
> 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 dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6602)