C and C++ library changes between RVCT v4.0 for µVision and ARM Compiler v4.1 for µVision

The libraries now use more Thumb2 code on targets that support Thumb2. This is expected to result in reduced code size without affecting performance. The linker option --no_thumb2_library falls back to the old-style libraries if necessary.

Math function returns in some corner cases now conform to POSIX/C99 requirements. You can enable older behavior with:

#pragma import __use_rvct_matherr

You can enable the newer behavior with:

#pragma import __use_c99_matherr.

The symbol __use_accurate_range_reduction is retained for backward compatibility, but no longer has any effect.

The C99 complex number functions in the previous hardware floating point version of the library only had the hardfp linkage functions and not the softfp linkage functions. The new library has both the hardfp linkage and softfp linkage functions. This means that existing object code that was built to use hardware floating point might not function correctly when calling complex functions from the library. The linker issues a warning in this case. You must recompile all the code that might use the affected functions and that was built to use hardware floating point. You must relink them with the new library.

The new implementation of alloca() allocates memory on the stack and not on the heap. This does not cause compatibility problems with software that assumes the old heap-based implementation of alloca(). However, such software might contain operations that are no longer required, such as implementing __user_perthread_libspace for the alloca state that is no longer used.

Show/hideSee also

Copyright © 2011-2012 ARM. All rights reserved.ARM DUI 0593B
Non-ConfidentialID062912