Free expanded case text before executing commands.
Remove impossible evalskip checks (expanding an argument cannot set
evalskip anymore since $(break) and the like are properly executed
in a subshell environment).

The former corresponds to the current behavior, where the module checks
that the supplicant is a member of the required group. The latter
checks the target user instead. If neither option was specified,
pam_group(8) assumes "ruser" and issues a warning.

* The floating point save structure(s) used by the kernel and possibly
also userland were too large for x86-64 due to a porting error where
'long' variables were left intact that should have been turned into
32-bit variables.

No known adverse effect to the too-large structures but we have to get
it right.

* npxexit() was not being called in a kernel thread exit case. Kernel
threads do not use the FP unit so the case was never hit, but fix it
anyway.

* Move a critical section to cover a flags test to handle a very rare
preemptive thread switch issue. Since the preempting thread is a
kernel thread which does not use the FP unit this case was never hit,
but fix it anyway.

The main purpose of syncing with FreeBSD is to obtain numerous "long double"
functions which are required for C99 compliance. There are still many
functions missing. According to g++ testsuite, the following 10 functions
still must be implemented at least:
coshl logl expl
sinhl log2l expm1l
acoshl log10l
asinhl log1pl

Also known missing are nexttowardl, tgammal, and the long double version of
most of several complex functions.

A few years ago the freebsd-based math library was thrown out in favor of
the NetBSD version. It may be time to reverse that and sync the entire
libm with FreeBSD. Right now the DragonFly libm is a mixture between the
two and it doesn't divide nicely. All the rounding and rint functions from
NetBSD had to be thrown out as well as the "kernel" functions. For the
short term this is okay, but in the long term it would be a good idea to
start tracking FreeBSD again. They are maintaining this library more
frequently and adding more functions more rapidly than NetBSD, so it would
be good to piggy-back on that effort.

This creates an empty section named ".note.GNU-stack" to the object file
which servers as a hint to GNU linkers that this object file does not
require an executable stack. When all linked object files indicate that
no executable stack is needed, the executable NX bit is set such as the
binary is run on a non-executable stack. This is a free security
improvement against buffer overflow attacks.

- Interrupt information is only recorded in its target CPU's interrupt
information array.
- Interrupt threads, emergency polling threads, interrupt livelock
processing and hardware interrupt threads scheduling only access
the interrupt information of the CPU they are running on; they have
already been locked to the interrupt's target CPU.
- Location of SWI information is saved in a global array swi_info_ary,
since scheduling SWI does not necessarily happens on the CPU that
SWI thread is running, we need a quick and correct way find the SWI
information.
- Factor out sched_ithd_intern, which accept interrupt information
(struct intr_info) instead of interrupt number. Split the original
sched_ithd() into sched_ithd_soft(), which schedules SWI thread, and
sched_ithd_hard() which schedules hardware interrupt thread.
- vmstat(8) interrupt reporting w/ -v is augmented to print the interrupts'
target CPU.