Yes, I was using CCSv6 beta and did exactly what you described above regarding GNU compiler 4.8.0 in 'Advanced Settings'. As I recall, I had expected to find the linker scripts in a folder named after the device (msp430f5438 in my case) within the following path and it's not there:
C:\ti\ccsv6\tools\compiler\i686-pc-mingw32\msp430-elf\lib\ldscripts
As you mentioned though this folder and linker files are in the Project Explorer. Removing the (__attribute__((section(".far_rom"))) code was as easy as removing __LARGE_DATA_MODEL__ from the 'Symbols' in the project properties compiler setup.
#if defined (__LARGE_DATA_MODEL__) __attribute__ ((section(".far_rom"))) #endif
So here is the result:
- With __LARGE_DATA_MODEL__ set as a defined symbol (i,e. all (__attribute__((section(".far_rom"))) tags in place) and peripheral.ld unmodified to locate .text to near rom first, I get linker errors saying it overflows section RAM by 5940 bytes.
- With __LARGE_DATA_MODEL__ removed (i,e. all (__attribute__((section(".far_rom"))) tags removed) and peripheral.ld modified to locate .text only to far rom it compiles.
From reading one of the hyperlinks to the MSP430 GCC Users Forum I included in my previous post, I concluded that support for MSP430X devices is at best premature - at least in terms of utilizing the 20-bit wide address space.