DragonLace.Net
Home of the GNAT AUX and future DRACO Ada compilers.

Any new port of GNAT will automatically fail any test involving stack checking and signal handling. Each port needs a platform-specific DWARF2 unwind mechanism added to the configuration, and it's not at all trivial to create this code.

Like the majority of the BSDs, no modern version of GNAT previously existed so nobody had ever created the unwind code for NetBSD. Unlike the other BSDs, NetBSD will likely require a separate signal handler scan pattern for each major version of the OS. FreeBSD, DragonFlyBSD, and OpenBSD all use sysctl to determine if the examined frame is a signal trampoline and thus are more robust.

The i386 NetBSD unwind support has been added to the code base and now NetBSD32 GNAT AUX passes 100% of the ACATS and gnat.dg test suite. As an aside, GNAT AUX builds and tests noticibly faster on NetBSD 5.1 than the other BSD platforms, so NetBSD 5.1 seems to be a very good platform for Ada development (pending the gtkada fix allowing the build of GPS of course.)

Update

While NetBSD32 GNAT AUX passes all tests, it has two flaws which are not covered by any existing test. A known problem is that it can't link to the Unwind_Resume function. When the MD_UNWIND_SUPPORT was added, a new issue with not recognizing Unwind_GetIPInfo cropped up. This results in not being about to build either AWS or GPS, although other packages are buildable. The _Unwind_Resume issue has not been seen on the NetBSD64 version of GNAT. Hopefully the other issue won't appear there when MD_UNWIND_SUPPORT is added to the NetBSD64 version soon.

Update 2

Both of these aforementioned issues are coming from the software packages.
They haven't been seen on other platforms because they are using GCC 4.2. NetBSD is using GCC 4.1. GtkAda was linking to the system shared library of libgcc rather than the newly built GNAT one and this has been corrected.
AWS has a similar issue, but the fix hasn't been found. The bottom line is the compiler itself is working.

Last edited Fri May 24 16:28:01 2013
© 2010 John Marino | design elements by styleshout | artwork by Arturo Aguirre