Hi, Spirilis. I have the same problems you have solved regarding using FAR_ROM with the MSP430x5x family (a MSP43F5438 in my case).
Started with a working program (less than 64Kb) and tried relocating code to FAR_ROM defining a ".far_text" section at "ld" file (just a copy of .text section, deleting .lowtext and using > FAR_ROM instead of ROM >). Then I put an "__attribute__((section(".far_text"))) " to a function, and built the code. Inmmediately I found the above "relocation truncated to fit: R_MSP430X_ABS16 against symbol" message.
Then I tried defining -mlarge flag at "Properties > CCS Build > GNU Compiler > Miscellaneous>Other", and also at "Properties > CCS Build > GNU Linker > Miscellaneous>Other flags".... no way --> "region 'ROM' overflowed by 2744 bytes"...
But also, if I delete the __attribute__((section(".far_text"))) " so I'm using the original code allocation (which worked at first) now it doen's work!!! I need to remove trhe -mlarge flags to make it work again...!!!
So -mlarge flags are totally messing up my code allocation...(even with a "small" program)
FYI, I've also defined symbols "__MSPF4305438__", "GCC_MSP430X", and "__LARGE_DATA_MODEL__" at my "Compiler section"...
Could you help me to find what is happening?
(Perhaps a copy of one of your "projects", using FAR_ROM memory, could be a help...)
Thanks in advance!
PS. I have no .highmem section at my ld file