[mcs] Finalizers cannot use expression_block syntax
[mcs] Member access null propagating operator
[mcs] Fixes bootsrap with older mcs
Support for GNU/kFreeBSD.

GNU/kFreeBSD is an experimental OS provided by the Debian project, consisting
of a FreeBSD kernel and GNU userland/libc. For a small number of cases, this
offers advantages over a more common GNU/Linux combination, such as fast
in-kernel support for ZFS storage.

This patch changes various ifdefs, either using __FreeBSD_kernel__ where a
trait from the kernel is what matters, or __GLIBC__ where a trait from the
C library matters.

This patch set has been carried downstream, in one form or another, since
1.2.3.1-1.

https://bugzilla.novell.com/show_bug.cgi?id=321634
Fix warning message when libX11.so.* are not found.

We complain that we can't find "X development files", but the reverse
is true - if we had X development files, we'd find libX11.so (which
we aren't looking for). What we look for (and find) are the runtime files.
Don't do the soname checking dance for Xinerama.

Xinerama has only ever had a soname of 1.

Checking for 1, 2, and 3 is just weird and pointless. And by not using a
default value, we duplicate the bug which add24aaa1 fixed.
Use host_win32 not platform_win32 in kfreebsd defines
Define PLATFORM_GNU which covers any OS with GNU userland.

This define covers kFreeBSD, not just Linux. This is required because
the error which 120d194d10ad351dd95450749cc4a62331331d8a works around is
a GNU problem, not a Linux problem, so causes FTBFS on kFreeBSD.
[xbuild] Fix handling of reference aliases
Merge pull request #1183 from directhex/xinerama

Don't do the soname checking dance for Xinerama.
Merge pull request #1184 from directhex/kfreebsd

Support for GNU/kFreeBSD
[mcs] null coallescing operator can end up working on value types
[mcs] Update codegen for boolean loads. Fixes #21685
[jit] Avoid making generic calls from gsharedvt methods normally, go through the rgctx infrastructure instead. Fixes #21677.
[sgen] Debug option for `clear-at-tlab-creation` nursery clear policy.

With the debug policy, we do clear at TLAB creation, but at GC time, whenever
we would clear with `clear-at-gc`, instead of not clearing, we fill with 0xff.
[sgen] File size limit for binary protocols.

We can now pass a file size limit to the `binary-protocol` option.  It will
create numbered binary protocol files, and only keep the last two around.
This is useful for cases where the only way to reproduce a bug is through
a long run that would otherwise create a protocol that's much too big.
Turns out some devices can have network interfaces without names.

If we encounter such a device we assign it an empty name followed by index number, so that we can
put any number of such devices in the dictionary and report them to the user.

Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=21741
[monodoc] Changes to support new-style iOS documentation:

- Fixed bug in creating CREF strings.
- Refactored XML file processing for customization during new style iOS assembly. This was done through the new file source interface, which lets you use dependency injection to customize the process.
- Added the ability to rewrite CREF references when assembling docs that use native types. Also, the ability to handle dropped namespaces.
[mdoc] Changes to support new-style iOS API:

- the dropns flag now lets you define a namespace that is dropped in a new version of the assembly during update.
- the ntypes flag lets you tell the update command that certain methods are now using native types, and as such will attempt to match with old types in order to preserve documentation.
- the preserve flag will avoid removing members. This is to avoid dropping documentation for members that changed from one version of the framework to another new-style version (ie. iOS).
[mcs] null propagating operator cannot work on pointer types