A few bytes of flash (22) will be spared in the future when
avr-gcc/ld sees that the .data segment is of size zero and then the
initializer code is not necessary any more :-)
It's not the linker that is supposed to notice that, rather the
compiler that should know when to place the references to the
.do_copy_* loops into the generated assembler code. The linker will
then only link them in when they are needed (the latter part is
supposed to work already, but right now, the compiler always places
these references into the code).