The first is that older gas does not support :varargs in .macroOK, seems reasonable. Eric Biederman solved this by having NOTE/ENDNOTE (or something like that) in his "bzImage with ELF header" patch, but I don't remember it being used in any way which is incompatible with using a CPP macro.
definitions (in my testing 2.17 does while 2.15 does not, I don't know
when it became supported). The Changes file says binutils >= 2.12 so I
think we need to avoid using it. There are no other uses in mainline or
-mm. Old gas appears to just ignore it so you get "too many arguments"
type errors.