In addition to 70 bug fixes provided by GNU, this version handles
exceptions through the new rtld, which is important to C++. This
compiler also now incorporates MD_UNWIND_SUPPORT from gnat-aux, but
it's not clear if C++ utilizes this frame unwinding or not yet.

Refer to issue 2005.
The new RTLD can optionally use AT_EXECPATH for some of its new
functionality such as libmap.conf and dynamic token expansion.
In the absence of this kernel support, RTLD has a fallback
mechanism that works most of the time, but using it takes a
performance hit.

This patch was tested for some time by various people prior to
the 2.10 branch being created.

The next GCC upgrade will take advantage of this rtld upgrade in order
to improve exception handling. DragonFly has never used the shared
libgcc_s which has impeded (or broke?) C++ exception handling.

This commit syncs rtld-elf to the FreeBSD cerca 16 DEC 2010. However,
bug fixes between then and 25 March 2011 have been included, but major
functionality changes from the ELF Filter support on 25 DEC 2010 onwards
has been excluded.

It was believed that all the headers deleted in this commit were generated
by the vendor makefile. The commit message
<http://leaf.dragonflybsd.org/mailarchive/commits/2011-04/msg00216.html>
highlighted that they were actually part of the source tarball. The
various makefiles have been altered to look for those instead, and
duplicate headers such as config.h, configmake.h, and arg-nonnull.h were
consolidated as well.

Minor modications are needed to get NetBSD's sort to build on DragonFly
without error. The emalloc and erealloc functions are actually now
supported on DragonFly within libutil, but they can't be used because
sort is one of the bootstrap tools. During the bootstrap, libutil is
not available, so the original malloc and realloc function have been
used along with err() to simulate these error-checking functions without
requiring libutil.

AF_UNIX: Hold a reference of the unp_conn before executing blocking code

Since unp_token will be automaticly released upon execution of blocking
code, close of unp_conn could race any code paths that references unp_conn
after executing blocking code. To fix these races, we simply increment
the reference count of the unp_conn before executig any possibly blocking
code and release the reference count of unp_conn, which may release unp_conn
itself. This _currently_ does not suffer 0-ref race, since unp_token is
always being held.

* Clear np->n_vnode atomically (w/ the token held) when removing a
node from the hash table. The field was previously not being
cleared at all which could race the nfsnhash lookup code despite
the vnode interlock and check the lookup code was performing.

- Call acpi_DeviceIsPresent() during probing, so that if bus does not
present other bus drivers could have chance to take over the bus.
- In acpi_pcib_attach(), assert that bus is present, since the presence
of the bus is checked during probing.