With Mach-O, there is a flag requirement discrepancy between working with
universal binaries and thin binaries. Many flags that don't require the -macho
flag (for example -private-headers and -disassemble) fail to work on
universal binaries unless -macho is given. When this happens, the error
message is unhelpful, stating:
The file was not recognized as a valid object file.
Which can lead to confusion.
This change allows generic flags to be used on universal binaries with and
without the -macho flag. This means flags that can be used for thin files can
be used consistently with fat files too.
To do this, the universal binary support within ParseInputMachO() is extracted
into a new function. This new function is called directly from DumpInput()
when the input binary is universal. Additionally the -arch flag validation in
ParseInputMachO() was extracted to be reused.
This leaves the old behavior in place, but I think it would be nicer if the arch flag was validated earlier.