This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Patch Ada RFA] make sure that multilibs are built with correct s-oscons.ads
- From: Iain Sandoe <developer at sandoe-acoustics dot co dot uk>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: Arnaud Charlet <charlet at adacore dot com>, Thomas Quinot <quinot at adacore dot com>
- Date: Fri, 28 Oct 2011 19:01:20 +0100
- Subject: [Patch Ada RFA] make sure that multilibs are built with correct s-oscons.ads
The sizes of items represented in s-oscons.ads can (and do) change
with the multi-lib on targets that support libada as a multi-lib.
At present, s-oscons.ads is only built once (in gcc/ada) and sym-
linked to rts*/
This is causing a bunch of failures on i686-darwin9 where the m64
multi-lib has generally larger structures than the m32 native.
On m64 targets with m32 multi-libs, this tends to be hidden by the
fact that (generally) the m32 entities are smaller than their m64
counterparts. However, it's still wrong (at least insofar as wasting
memory - if not on any more serious scale).
The attached patch moves the generation and use of the xoscons tool to
the the library makefile (as suggested by Thomas) and adjusts the
libada/Makefile dependency to point to this tool. The remaining
dependencies should (AFAICT) be handled by the gnatlib target - which
thence depends on the required objects.
I don't have that many targets to test - and would very much welcome
any more-Ada-build-system-aware eyes cast over this.
This DTRT on i686-darwin9 (no unexpected fails at m64 when it's
applied).
OK for trunk ?
what about 4.6 - given that this is a wrong code scenario?
cheers
Iain
ada:
* gcc-interface/Makefile.in (stamp-gnatlib-$(RTSDIR)): Don't
link s-oscons.ads.
(OSCONS_CPP, OSCONS_EXTRACT): New.
(./bldtools/oscons/xoscons): New Target.
($(RTSDIR)/s-oscons.ads): New Target.
(gnatlib): Depend on $(RTSDIR)/s-oscons.ads.
* gcc-interface/Make-lang.in (ada/s-oscons.ads) Remove as dependency.
* Make-generated.in: Remove machinery to generate xoscons and
ada/s-oscons.ads.
libada:
Makefile.in: Change dependency on oscons to depend on the generator
tool.
Attachment:
180619-libada-oscons-diff.txt
Description: Text document