[llvm-readobj] Switch command line parsing from llvm::cl to OptTable
Users should generally observe no difference as long as they don't use
unintended option forms. Behavior changes:
- -t=d is removed. Use -t d instead.
- --demangle=false and --demangle=0 cannot be used. Omit the option or use --no-demangle. Other flag-style options don't have --no- forms.
- --help-list is removed. This is a cl:: specific option.
- llvm-readobj now supports grouped short options as well.
- --color is removed. This is generally not useful (only apply to errors/warnings) but was inherited from Support.
Some adjustment to the canonical forms
(usually from GNU readelf; currently llvm-readobj has too many redundant aliases):
- --dyn-syms is canonical. --dyn-symbols is a hidden alias
- --file-header is canonical. --file-headers is a hidden alias
- --histogram is canonical. --elf-hash-histogram is a hidden alias
- --relocs is canonical. --relocations is a hidden alias
- --section-groups is canonical. --elf-section-groups is a hidden alias
OptTable avoids global option collision if we decide to support multiplexing for binary utilities.
- Most one-dash long options are still supported. -dt, -sd, -st, -sr are dropped due to their conflict with grouped short options.
- --section-mapping=false (D57365) is strange but is kept for now.
- Many cl::opt variables were unnecessarily external. I added static whenever appropriate.
Reviewed By: jhenderson
Differential Revision: https://reviews.llvm.org/D105532