Before this patch, function pointers would be emitted with the R_AVR_16
relocation. This relocation is correct for global addresses but not for
function addresses. Function pointers must use the relocation
R_AVR_16_PM.
This patch hopefully fixes this. I'm not entirely sure whether the patch
is entirely correct, but it does fix a number of cases (see the test
file).
clang-tidy: warning: 'auto &symbol' can be declared as 'const auto &symbol' [llvm-qualified-auto]
not useful
clang-tidy: warning: invalid case style for variable 'symbol' [readability-identifier-naming]
not useful