| |||
| Home > About Previous Releases > Differences between RVCT v2.1 and RVCT v2.0 > Changes to the ARM linker in RVCT v2.1 | |||
The following changes were made in RVCT v2.1:
Read/Write data compression is enabled by default to optimize ROM size.
A new option is available, --rosplit,
to output two RO execution regions, one for code and one for data.
New command-line options are available to support
C++ exception tables. Use the new option --noexceptions to
ensure that your code is exceptions free.
The new option --exceptions_tables=unwind|nounwind forces
the linker to generate exception tables regardless of the content
of the input files. The linker can create exception tables for C
and assembly language objects with debug frame information using,
for example, --exceptions_tables=unwind.
A new option is available, --userlibpath,
to specify where to search for user libraries.
The linker is now stricter in checking alignment in object files. It ensures that any code that requires eight-byte alignment of the stack is only called, directly or indirectly, by code that preserves eight-byte alignment of the stack. The linker generates an error message if a stack alignment conflict is detected:
Error L6238E:object_name.o(section_name)contains invalid call from ’~PRES8’ function to ’REQ8’function_name
A similar warning message is generated where the address of an external symbol is referenced:
Warning L6306W: ’~PRES8’ sectionobject_name.o(section_name)should not use the address of ’REQ8’function_name