[amd64] Fix the tail call code after 4c0376d037e3cd5910a24b3e568c6e9ad5bb40d2.
Fix a warning.
Fix dwarf section names in the mach image writer.
[sgen] Integrate sgen_qsort() unit test in Makefile.
[corlib] DebuggerTypeProxyAttribute.ProxyName needs to return an assembly qualified type name. Fixes #16527
[linq] Enumerable.Join and GroupJoin needs to ignore null keys. Fixes #16530
Remove the #error for the ARM_FPU_VFP_HARD case.
Add an IS_HARD_FLOAT macro to the ARM back end.

Also define correct values for IS_SOFT_FLOAT and IS_VFP for
the hardware floating point (ARM_FPU_VFP_HARD) case.
Add detection of VFP v3 variants to mono-hwcap-arm.
Adjust various FP register values for hard float in mini-arm.h.
Add a helper function to the ARM back end to determine hard float mode.
Add VFP register saving to trampolines.
Handle the MONO_ARM_FPU_VFP_HARD case in mono_arch_emit_setret ().
Implement return value passing for ARM hard float.

This is currently only for float32/float64 values. They are passed
in the d0 register. The code is a bit complicated because we only
speak float64 in the JIT, so float32 values have to be converted
to/from float64.
Print detected ARM version in configure.
Implement add_float () for hard float on ARM.
Add register assignment for double-precision args on ARM hard float.
Make sure FPRs aren't used for implicit arguments on ARM hard float.
Implement support for single-precision args on ARM hard float.

This is done with a gross hack that maintains a list of args
in the MonoCallInst and emits them as late as possible. This
is not pretty, but we have to work around the register
allocator. See the code comments for details.
Correct the VFP check in exceptions-arm.c.

This should be a runtime decision, and also should be in
effect when using the hard float ABI (ARM_FPU_VFP_HARD).