I don't fully understand why/what is happening, but I filed a bug
report
against binutils ld with a reproducer that triggers the same thing with
gcc < 4.7.
http://sourceware.org/bugzilla/show_bug.cgi?id=13621
The linker behavior is certainly buggy. But I also don't see off hand why
__TMC_END__ needs to be global at all. If it were just a local symbol like
__TMC_LIST__ is, then it would just be swallowed entirely when the section
is empty.
Thanks,
Roland