rtld: Support DT_GNU_HASH (startup performance increase)

This is another "First BSD to get" feature that Linux and Solaris
had years ago.  Essentially DT_GNU_HASH is a GNU extension to the ELF
format that allows symbol searches much faster than the System V ABI
standard hash does.  Both versions of our binutils have the capability
of generating GNU hashes alongside of (or instead of) the SysV hash.

The benefit comes at the real-time link stage when the rtld is
searching the libraries for symbols.  For very large programs
written in languages such as c++ that tend to link in many libraries
with many symbols, the reduction in start-time can be dramatic.

According to benchmarks done by binutils team in 2006, more than 90% of
the symbol queries of OpenOffice Writer are rejected by the Bloom filter
before the string comparison takes place:

http://sources.redhat.com/ml/libc-alpha/2006-07/msg00034.html
gcc44: Instruct linkers to create GNU hash tables

The real-time linker has just been taught how to use GNU hash tables
to speed up symbol lookup.  However, the linkers only generate SysV
hashes by default, so the specs file is being altered to generate
both types of hashes for every shared library and dynamic executable
for a while.  Maybe after a release or two we can consider only
generating the superior GNU hash, which will break forward compatibility
with older releases.
<sys/cdefs.h>: For C++, unhide our interfaces via __{BEGIN,END}_DECLS.

This follows up on a previous (pthread specific) commit by alexh
(e7322b09faff75b1298e9bfe444633425d173536) that used a per-proto
macro. Revert this commit, too. In principle, we do it like NetBSD
now.

See http://gcc.gnu.org/wiki/Visibility in the GCC wiki for details
on the issue.

This solution was suggested by Martin Husemann in a thread about
xulrunner building issues:

http://mail-index.netbsd.org/tech-pkg/2012/03/11/msg008680.html

Reported-and-tested-by: marino and others
rc.conf.5: Fix the wlan setup example.

Submitted-by:  Johannes Hofmann <johannes.hofmann@gmx.de>
Dragonfly-bug: <https://bugs.dragonflybsd.org/issues/2330>
Merge branch 'master' into gsocdrm_merger
Merged thread-specific cleanup patch from FreeBSD.

  See: http://lists.freebsd.org/pipermail/freebsd-threads/2009-June/004563.html
pstat.8: add reference to the fstat(8) command.

Seems relavent, and kept me from discovering the handyness of fstat(8).
Upgrade GCC from 4.4.7 snapshot 2011-10-25 to 4.4.7-RELEASE
Merge branch 'vendor/GCC44'
gcc44: Update version to gcc-4.4.7 RELEASE

The previous version of gcc was a pre-release snapshot of 4.4.7, dated
2011-10-25.  This is the final release of gcc-4.4.  The gcc-4.4 branch
has officially been closed by the gcc project.

Also cfgloop.c was added to modified files list as a result of Matt
Dillon's work-around for the AMD bug.
spacialreg: Add CPUID2_VMM according to AMD's CPUID specification
ioapic: By default, disable I/O APIC if we are booting on a virtual machine

I/O APIC causes too much trouble on virtual machines; simply disable
I/O APIC for virtual machines by default.

You could always explicitly enable I/O APIC on virtual machines by
setting tunable hw.ioapic_enable to 1

Thank swildner@ for hint on virtual machine detection method.

Reported-by: many
ftpd(8): Remove OLD_SETPROCTITLE related dead code.
tcp_input: Always call tcp_mss(), so snd_cwnd could be properly updated
tcp/md5sig: Disallow enable/disable TCP MD5SIG after connect(2)/listen(2)
LINT64: Adjust comment about TCP_MD5SIG; we use TCP_SIGNATURE_ENABLE
arp: Don't send gratuitous ARP for devices that are not ethernet typed

Reported-by: alexh@ and swildner@
kernel: Add mps(4) to our GENERIC kernels.
boot - Fix overflow in CD I/O code

* Fix an overflow in cdb2devb():
	from ((bno) * ISO_DEFAULT_BLOCK_SIZE / DEV_BSIZE)
	to   ((bno) * (ISO_DEFAULT_BLOCK_SIZE / DEV_BSIZE))

* Adjust several fields from signed -> unsigned
fstat - Include current offset in output

* When output regular file data also output the current seek offset,
  which can be very useful information.