I feel that this has been discussed before, but finding the information has proven painful so here is my question/comments.
With AVRs (xmegas) that have more that 64k, 128k, and 256k of flash with GCC (WinAVR) I have ran into problems. From what I found is that PGM_P is 16bit thus it appears that Carlos has made a patch to libc, not yet in WinAVR as of 3/8/2011, which has PGM_PF and basically _PF replacements. This patch allows 32bit access to program memory, which is good.
First question is does Carlos patch work with the xmegas, found some reference that it might have problems?
The second question, I have is does GCC handle the calls to functions using 32bit address? That is am I going to run into a problem where I can not call code above some boundry?
Third question, would it be reasonable for GCC and libc to know about processor and use correct code. That is could the sprintf_P and related functions be macros and based on the processor selected pick the correct libc function. This way it keeps newbies from having problems.
Fourth question, is there beta build of WinAVR with Carlos' patch or would I need to rebuild libc myself, or include his code in my project?
Note just for the key word searching I found this problem in my code on a ATxmega256 when the code would magically jump to random locations, usually high memory locations and thus reboot. I have used the dead code removal to get code under the 64k boundry and it works now, but I am scared that GCC might have other address limitations besides the PGM_P issue and hence my questions.