These topics have some background:
viewtopic.php?f=13&t=1655
viewtopic.php?f=23&t=1660
I still think it's pants because you're still just hard-coding the address labels: you could just as easily use a struct and assign it with thestruct=(void *)0x7000; instead, rather than messing about with linker scripts. The thing the linker is for is assigning addresses and coalescing block with the same parameters, doing it with a pen and paper is mental.
As soon as you have multiple variables in different compilation units (or libraries) it all collapses into an unmanageable mess: you can't manually put everything in one struct.