I found some more information on this and it looks like the problem is not with the address per se but with the fact that I'm trying to use a symbol provided by the linker script to access it.
The linker script “generated.x” has a section for my internal memory and within that it has some PROVIDE directives. It seems that I can't access these symbols generated by the PROVIDE from within my code. These are symbols that have the form _alt_partition_MEMORY_NAME_start and _alt_partition_MEMORY_NAME_end. I can access some other PROVIDE symbols like edata.
The ones that start with alt_ seem to be the problem. Is this a result of having no program data to go into the section?
I can use a define from system.h for my immeadiate problem but this has got my curiosity up and I'm likely to need access to some of these linker generated symbols in the future. Any help appreciated.