This is the first commit for the new Mach-O backend, designed to roughly follow the architecture of the existing ELF and COFF backends, and building off work that @ruiu and @pcc did in a branch a while back. Note that this is a very stripped-down commit with the bare minimum of functionality for ease of review. We'll be following up with more diffs soon.
Currently, we're able to generate a simple "Hello World!" executable that runs on OS X Catalina (and possibly on earlier OS X versions; I haven't tested them). (This executable can be obtained by compiling test/MachO/relocations.s.) We're mocking out a few load commands to achieve this -- for example, we can't load dynamic libraries, but Catalina requires binaries to be linked against dyld, so we hardcode the emission of a LC_LOAD_DYLIB command. Other mocked out load commands include LC_SYMTAB and LC_DYSYMTAB.
Putting a -*- C++ -*- mark into a .cpp file is redundant. These are only necessary for .h files where the language is ambiguous.