The actual fix as been done by "pkglint -F */*/buildlink3.mk", and was
reviewed manually.
There are some .include lines that still are indented with zero spaces
although the surrounding .if is indented. This is existing practice.
MASTER_SITES= site1 \
site2
style continuation lines to be simple repeated
MASTER_SITES+= site1
MASTER_SITES+= site2
lines. As previewed on tech-pkg. With thanks to rillig for fixing pkglint
accordingly.
Like lang/gcc5-aux, gcc-aux was failing to build on NetBSD 7.0-beta
due to a "operation not permitted" error emitted by pkgsrc gold linker.
The root cause isn't known (problem with NetBSD 7 full-stop? problem
with binutils, but only NetBSD7?). However, the base binutils which
is version 2.23 is sufficient (barely) for gcc 4.9.
The build failure is solved by using base binutils for NetBSD 7*.
No revbump required because there is no change for platforms on which
gcc-aux has already potentially been built.
NOTE: As noted on gcc5-aux, stack-checks that passed on NetBSD 5 and 6
are now failing on GNAT on NetBSD 7. This is because the signal
trampoline has apparently changed and the pattern the unwinder was
looking for is never found, resulting in a segfault instead of a frame
unwind. The fix would be to determine the new signal trampoline
pattern and have it switch based on param.h version (or something like
that).
This update is a by-product of working on new package, gcc5-aux, and
applying those concepts here. Several changes were made, including:
- Version date was not updated when version changed from 4.9.0 => 4.9.2
(revbump occurred instead). Remove revbump and fix date
- Remove DragonFly-i386 from permitted platforms. This platform will be
completely unsupported when DragonFly 4.2 is released (very soon)
- Remove references to OpenBSD and MirBSD. Support was never activated
due to technical issues and likely will not happen.
- Reindent (cosmetic)
- It is seemingly impossible to work around NetBSD's binary compatibility
scheme (e.g. __socket30, __nanosleep50). These weak symbols are simply
ignored by Ada's pragma Import and no c-tricks seem to avoid conflicts.
(Why can't NetBSD use symbol versioning???) Anyway, having NetBSD-
specific copies of source files to handle a couple of symbol differences
is simply not sustainable, so move to a new scheme where these are
replaced on the fly. By the way, this problem basically means that I
cannot fix GNAT upstream, even if I found somebody to sponsor getting
the NUMEROUS non-ada patches upstream. GCC devs would laugh at me if I
describe why I want to introduce so many new but similar files to
support NetBSD. So it's very likely never going to happen.
- Disable libitm and libcilkrts by default. They are out of scope and not
worth building / fixing.
- Apparently NLS support doesn't build on NetBSD 6.1? Nobody reported
this to me, but there are linking issues. I'm just removing the option
(which was on by default) until further notice. Having NLS support on
by default was questionable anyway.
- Remove exetim mods, this was wrong (for all BSD platforms)
- Android support leaked in, but it's not used here
- The diff-ada file dropped about 150k in size, and could have been more
had the android osinte file been masked too.
* Switch to GCC 4.9.2 based.
* binutils of NetBSD 7.99 is modern enough, and use binutils in base.
Fix build under NetBSD/amd64 7.99.1 with this workaround.
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
gcc-aux builds on OpenBSD, but the default posix thread handling for Ada
tasking no longer works. All tasks get stuck in a "Thread Sleep" sleep
state. The gcc4.8.2-based egcc in OpenBSD ports supports Ada and passes
all tests. There is no difference in the configuration between that and
gcc-aux. To fix, it probably requires tasking support unique to OpenBSD
and that's out of scope for me at the moment, especially considering the
lack of a suitable development machine.
As such, I'm suspending my work on OpenBSD. This commit captures some
minor bug fixes. The addition of "--enable-checking" configuration switch
should be the default so there's no need bump gcc-aux again.
These changes are for NetBSD only although non-functional OpenBSD support
continues to be added. The biggest change is configuring the compiler to
use the gold linker from binutils 2.24 instead of the system linker. The
ld.bfd linker from binutils 2.24 is buggy on NetBSD and OpenBSD; it cannot
properly produce/recognize PIC files in every case, which is why gcc-aux
had been limited to the system linker. The system linker was too old for
gcc-aux and devel/gps failed to link because of it.
At the same time, the dormant dl_iterate_phdr support has been activated
for NetBSD. It seems to work; the Ada testsuite still passes perfectly.
Due to lack of testing, gold is restricted from building on NetBSD 5,
which means lang/gcc-aux will fail to build as a result. If someone
verifies gold builds on NetBSD 5, then the restriction on binutils can
be removed and lang/gcc-aux will be able to build on NetBSD 5 again.
I was never able to build gcc-aux with multilib support when it was
based on gcc 4.7. It turns out that this is because Ada support for
multilib was broken per GCC's bugzilla. It's been fixed since. After
some significant effort and many hours, I finally produced a multilib
bootstrap for Solaris. It can produce other multilib compilers (x86-64)
and it can produce 32-bit only compilers (i386). This was tested on a
stock OmniOS x86-64 installation and the Joyent dev area (i386).
Solaris has not supported static linking since Solaris 9, so it is not
possible to create a static bootstrap like the BSDs have, nor is it
possible to build the compiler statically, so that option is disabled.
That means it is unlikely that the bootstrap will run on Solaris 10 or
Solaris 11, but this theory has not been tested.
Much of the changes to the diff-* patchsets are a result of OpenBSD work.
An OpenBSD static bootstrap has been created against devel/binutils, and
as a result it fails to find system libraries such as libc and libm. That
is a side note explaining the OpenBSD additions. There are some DragonFly
and NetBSD changes in the diff-* patches though.
The bootstrap target was significantly modified, mainly to capture the
special needs of creating a Solaris bootstrap. The creation of the
bootstrap tarball was put in it's own target. The zlib and math libraries
were connected to the bootstrap option. It's not a good idea to use
system zlib on Illumos because the zlib header is not guaranteed to be
installed.
The feature to rebuild the compiler with the installed gcc-aux was fixed;
it should use it's own c++ compiler instead of the system c++ compiler.
OpenBSD 5.5 does not support "cp -a", so this was changed to "cp -RpP" for
portability reasons.
The last change to the Makefile was created months ago, and at the time
it was intended that new bootstraps would be made for both x86_64 and
i386 platforms. The latter bootstrap was never created, so the previous
commit broke the build on i386.
Until a new bootstrap compiler is created, continue to use the old one.
It will continue to build on gcc-based NetBSD, but I do not expect it to
build on NetBSD-6.99/i386 with clang and no gcc libraries.
A new bootstrap was necesssary to allow gcc-aux to build on a NetBSD
system that has no gcc files on the system. Other changes include:
* Remove support for NetBSD 5.99
* Remove defunct mirror site
* Restore action install stripped binaries (gcc bug fixed)
This commit achieves the following:
1) Fix specific case of falsely identified aggregate array index
duplicates. Fix taken from gcc 4.8 source, it apparently will
never be backported.
2) Fix typo that caused mktemp to be used in DragonFly
3) Incorporate NetBSD libstdc++ fixes into gcc-aux repository
(which is a parallel fork) and regenerate diff-cxx. This
enables patches to be removed.
The Link-Time Optimizer requires a couple of functions from the math
library. For gcc, it appears there are built-in versions that
satisfy the requirement, but building with clang requires an explicit
linkage to libm.
This additional LDFLAG may be required on all platforms when clang is
used for pkgsrc, but until this is confirmed let's limit it to NetBSD.
Fix tested on NetBSD 6.1 amd64 with CLANGBASE=${LOCALBASE}
a) refer 'perl' in their Makefile, or
b) have a directory name of p5-*, or
c) have any dependency on any p5-* package
Like last time, where this caused no complaints.
This is a bug fix release.
The official change page is http://gcc.gnu.org/gcc-4.7/changes.html
According to it, 119 bugs have been resolved since version 4.7.2 was
released (3 P1 bugs, 27 P2 bugs).
The GCC projected released version 4.7.2 on 20 September. There were few
diff changes (only core and ada) between it and version 4.7.1, so it's a
straightforward update.
Release announcement: http://gcc.gnu.org/ml/gcc/2012-09/msg00181.html
Notable Excerpts:
GCC 4.7.2 is the first bug-fix release containing important fixes for
regressions and serious bugs in GCC 4.7.1 with over 70 bugs fixed since
the previous release
A notable change in GCC 4.7.2 compared to 4.7.1 are ABI bug fixes
related to some C++11 templates (std::list and std::pair). As a result,
code using those templates in C++11 mode is again ABI compatible with
code in C++03/C++98 mode or C++11 mode of GCC 4.6 and earlier, but might
be ABI incompatible with code compiled by GCC 4.7.1 or 4.7.0 in C++11
mode.
The libraries of gcc-aux are not located on standard search paths for
the runtime linker to find. Moreover, libraries from other versions
of gcc may be and in that case rtld will link the wrong library. To
fix this, an rpath to ${PREFIX}/gcc-aux/lib will be inserted into every
dynamic binary created by gcc-aux.
Other changes include:
1) simpler and more robust detection of an existing gcc-aux compiler to
be used rather than the older bootstrap compiler.
2) Fixed FreeBSD support. FreeBSD bootstraps are available but not yet
listed due to lack of testing (however, it should work out of the box)
3) Fixed some c++ testsuite directives for dejagnu
The condition in the gcc-aux buildlink3.mk file requires the file
mk/pkg-build-options.mk to be included in order to work. This fixes the
bug introduced yesterday.
The NLS option is optional, but the buildlink pulled in gettext-lib
unconditionally. This caused failures in Tinderbox and pbuld chroot
when gettext-lib couldn't be found in those clean environments. The
final result is that all Ada programs file to build in those environments.
Also removed whitespace from DESC.
Until now, GCC builders had to choose between Ada and C/C++ on the
following platforms:
i386-FreeBSD
i386-DragonFly
On these platforms, depending on the value of the configuration macro
TARGET_96_ROUND_53_LONG_DOUBLE, either Ada precision or C/C++ long
double precision was broken. The reason is that the floating point unit
of these platforms round off real-time calculations to 53-bit mantissas.
GCC will adjust accordingly to compensate. Since a common backend is used
for all languages, one had to choice which language they wanted correct.
The solution is to break out the object file responsible for this from
the common backend library. Ada now receives an altered version of
insn-modes.o, one that instructs the FPU not to round off the results.
This is all handled by patched Makefiles.
Other changes:
- Configure DragonFly to add ".note.GNU-stack" section to assembly files
to determine if program needs executable stacks
- Skip 2 subtests of Wconversion-real on i386 FreeBSD and DragonFly.
Due to the rounding behavior mentioned above, they fail to produce
error messages as expected. It's not possible to set target with
xfail, and every target && target seems not work work. So we will
assume all gcc-aux platform targets are long-double capabile and
just set xfail for x86 FreeBSD and DragonFly.
- Rework Fortran large real test 2 to skip on x86_64 *BSD. This test
should pass on x86 machines.
- Rework Fortran large real test 3 to be skipped when compiles with -O0
only x86_64 machines. All other combinations will pass.
- Rename C format test typedef from quad_t to quad2_t. DragonFly
has a standard type called quad_t and the type conflict causes a
large number of gcc tests to fail.
- Add dummy dg-error line to avoid an assembly comparison tests on
large files not built (test was marked as UNSUPPORTED but dejagnu is
too dumb to know not to check for the tests' products.)
- Reorder path passed during build when using an already-built gcc-aux
compiler to build new compiler. If gnat-aux is also installed, it
would use the gnat* tools from that compiler rather than gcc-aux
which results in build failure (different versions of tools are
getting used together resulting in build failure).
The primary difference between this compiler package and lang/gcc47 is
that lang/gcc-aux supports the Ada language. Additionally, it is
intended that the USE_LANGUAGES makefile variable whill be extended to
recognize "ada" as a valid language, and that specifying it will cause
lang/gcc-aux to be used to build the package.
All current Ada-based packages will be modified to build with
USE_LANGUAGES+= ada rather than specifying a dependency on lang/gnat-aux,
the other Ada-capable compiler in pkgsrc based on gcc-4.6.3.
lang/gcc-aux supports C, C++, Objective-C, Fortran, and Ada by default,
but the latter four languages can be disabled via the options framework.
The three non-default options are "nls", "testsuite" and "static" which
enable Native Language Support, languages tests, and building the compiler
statically.
The "static" option is unalterably enabled for NetBSD in order to use dl_iterate_phdr error handling on NetBSD 6. On the NetBSD 6 beta builds,
exceptions won't unwind properly with the libgcc_s shared library, and
the issue seems to be external to gcc-aux. It's hoped the libgcc_s
exception handling works on NetBSD 5.x series as dl_iterate_phdr isn't
supported by rtld there, but gcc-aux hasn't been tested on 5.x yet.
lang/gcc-aux can be built by 5 platforms currently: NetBSD i386/x86_64,
DragonFly i386/x86_64, and OpenSolaris i386. New platform support
requires new bootstraps. FreeBSD i386/x86_64 could be added easily as
bootstrap compilers are available for FreeBSD ports lang/gnat-aux.
OpenBSD bootstrap compilers have been built but never used, but further
patches are on a couple of gcc's configuration files are needed as well
as testing to provide OpenBSD support.
All five platforms pass all tests (over 3200) in the Ada testsuite.
See http://gcc.gnu.org/gcc-4.7/changes.html
for more information about improvements over the GCC 4.6 series.