Thank you for releasing the latest version of MCUXpresso IDE v11.1.0 [Build 3209] [2019-12-12]
It resolves many other issues I've had, and I accept that you haven't had a chance to address the above issues. Unfortunately, I'm reporting one more legal gcc ld syntax that your (new) parser doesn't cope with:
In the MEMORY { ... } command, everyone seems to provide a list of attributes for every entry (for example, the (!rx) below):
SRAM (!rx) : ORIGIN = 0x20000000, LENGTH = 128K
However, these attributes are not only optional, they're invalid most of the times people provide them. These are only used by the linker if a SECTION is specified without explicitly providing which MEMORY region to use. It looks at the attributes, and picks a matching region that has acceptable attributes.
In other words, unless you want the linker to automatically pick a memory region, you shouldn't specify any attributes for it! People seem to use these attributes to document what can be done with these memory regions: peripheral regions are usually given (rw) (can read or write here!), while secondary RAM is given (rwx) (can read, write or execute here!).
While the idea is true, that is not what the above means: specifying (rw) for a peripheral region would allow the linker to allocate normal variables to those areas! As such, I specify attributes for MEMORY regions rarely - but your parser seems to require them.
For the following lines, I get either of the two errors shown below, depending on how confused it got from the previous entries:
SRAM (!rx) : ORIGIN = 0x20000000, LENGTH = 128K
AIPS1 : ORIGIN = 0x40000000, LENGTH = 1M /* ARM IP Bus 1 */
AIPS2 : ORIGIN = 0x40100000, LENGTH = 1M /* ARM IP Bus 2 */
- mismatched input ':' expecting '('
- missing ')' at ':'