This fixes https://bugs.llvm.org/show_bug.cgi?id=40072.
GNU addr2line's --functions switch is off by default, has a short alias of -f, and does not take an argument. This patch changes llvm-symbolizer to allow the second and third point (changing the default behaviour may have negative impacts on users). If the option is missing a value, it now treats it as "linkage".
This change does cause one previously valid command-line to behave differently. Before --functions <value> was accepted, but now only --functions=<value> is allowed (as well as --functions). The old behaviour will result in the value being treated as a positional argument.
The previous testing for --functions=short has been pulled out into a new test that also tests the other accepted values and option formats.
Can't tests for llvm-symbolizer depend on llvm-mc? If it can, can you represent functions.o in assembly and assemble it at test-time so that you can avoid checking in a binary file?