RVCT 4.0 Build 591 patch for Windows
软件大小:32.4 MB | 软件性质: 免费软件 |
更新时间:2013/10/15 9:07:06 | 应用平台:Win9X/Win2000/WinXP |
下载次数:9010 | 下载来源:完美体育·(中国)手机网页版科技 |
软件语言:英文 | 软件类别:ARM软件工具 > Arm RVDS |
RVCT 4.0 Patch #3 Build 591 Release Notes
=========================================
Description
-----------
This RealView Compilation Tools (RVCT) 4.0 Patch #3 Build 591 is intended for use with RealView
Developer Suite (RVDS) 4.0 products. It can be used to update any RVDS 4.0 Standard, Professional
or Evaluation installation, whether previously patched or an original installation. It is NOT
compatible with other releases of RVCT/RVDS or Keil MDK products.
This patch consists of updated RVCT/RVDS 4.0 compiler, linker, assembler, fromelf, and armar
Program executables; updated Include files and updated C/C++ libraries.
New Enhancements in this Release
--------------------------------
[New Target Support]
* Core support for the Cortex-M0 processor (--cpu=Cortex-M0).
* Device support for i.MX51 and OMAP4xxx. A complete list of supported devices can be generated typing "armcc --device list" (without quotes) at the command line.
[Improved Floating Point Math Library]
* The single-precision C math functions (sinf, logf, powf etc.) have been reimplemented for better speed, accuracy and monotonicity, and to make more efficient use of hardware floating point (VFP) when available. The new implementations are expected to be 2-4 times faster on targets without VFP hardware, and 5-10 times faster on targets with VFP hardware.
[Expanded gcc Compatibility]
* We have added a "--gnu_defaults" option. This sets basic default behaviour similar to that found in GCC, where these are common to most ARM GCC configurations but excluding any platform-specific settings such as those targeting ARM Linux. In particular, the --gnu_defaults option will enable the following: --gnu, --no_debug_macros, --enum_is_int, --signed_bitfields, --wchar32, and --no_hide_all. The --gnu option behaviour remains the same; it enables GCC language extensions, without changing other settings from their armcc defaults. The --arm_linux option, and other ARM Linux-targeting options, imply --gnu_defaults and also the platform-specific settings for Linux
* When configured against GCC 4.3.1 or later and using GCC command-line translation for ARM Linux, the compiler will enable NEON vectorization automatically at -O3 (RVDS Professional only). You can explicitly enable or disable vectorization using the GCC options -ftree-vectorize or -fno-tree-vectorize.
* The header files arm_linux/linux_rvct.h and arm_linux/limits.h now define MB_LEN_MAX as 16 (the value expected by glibc) rather than 6 (the ABI-recommended value).
* The linker error message L6029 "Error: L6029E: Relocation #REL:0 in object.o(section) is wrt invalid/missing symbol" is now downgraded to a warning when --arm_linux is used. This enables the link to complete with GNU objects that contain invalid relocations to NULL.
[General Enhancements]
ARM Compiler (armcc):
* Array object destructions have been updated to use the more efficient ABI function __aeabi_vec_dtor, instead of function __cxa_vec_dtor.
* The compiler now issues a remark for empty dependent statements, which are often triggered by incorrect placement of semicolons.
* The formatting of long strings and 64 bit data directives has been improved in the interleaved assembly output.
Linker (armlink):
* The --ltcg option has been enhanced to support multiple input objects containing entry points. Note: if the input objects do contain more than one entry point then you must select one using the --entry=entrypoint command. Note, as the --ltcg option loses the mapping between object and section you must use a global symbol definition as your entry point. For example --entry=__rt_entry.
* We have added a new linker option "--[no_]implicit_branchpatch" (on by default), that controls whether armlink will automatically add patches based on other command line options. For example, if --cpu=cortex-a8 is specified, the --branchpatch=cortex-a8_q109 option may be implied.
* The new option "--[no_]keep_protected_symbols" (on by default) prevents sections containing symbols with STV_PROTECTED visibility from being removed.
* We have added the capability to suppress mismatched PRES8/REQ8 build attribute warnings. Previously, when using --arm_linux, the linker downgraded errors about mismatched PRES8/REQ8 build attributes to warnings to maintain compatibility with GNU objects that lack these attributes. The user may now suppress these altogether using "--diag_suppress=6238" for example.
* For cases where customers have their applications export functions shared objects, we have provided an option that will prevent the "remove unused sections" linker feature from removing these desired functions.
Multiple tools:
* On Windows, the tools can now accept Cygwin paths. The 'cygpath' program from the Cygwin command set is invoked as a filter to convert path strings where necessary. To enable this conversion, CYGPATH environment variable must contain the full absolute Windows path and name of a suitable cygpath.exe, e.g. "CYGPATH=C:/cygwin/bin/cygpath.exe".
* A new switch, --version_number, outputs the version and build number in an easy to parse format.
* The options --apcs=/softfp and --apcs=/hardfp are now available as an alternative way to request the integer or floating-point variant of the procedure call standard. This allows the procedure call standard to be specified separately from the version of the floating-point hardware available through the --fpu option. It is still possible to specify the procedure call standard in the --fpu option as before, but the use of --apcs is recommended.
* The tools now allow --fpmode=none, as an alternative to --fpu=none, indicating that source is not permitted to use floating-point arithmetic of any kind.
OS Platforms
------------
This patch has been tested on the following supported platforms:
Windows XP SP2, 32-bit & 64-bit
Windows XP SP3, 32-bit
Windows Vista Business Edition SP1, 32-bit & 64-bit
Windows Vista Enterprise Edition SP1, 32-bit & 64-bit
Windows Server 2003 32-bit & 64-bit
Red Hat Linux Enterprise 4 for x86, 32-bit & 64-bit
Red Hat Linux Enterprise 5 for x86, 32-bit & 64-bit
Solaris for SPARC 10
In addition, the patch has been tested on the following non-supported platforms:
Windows 2000 SP4
SUSE Linux 9.2
Ubuntu Linux 8.10
Installation Instructions (Windows)
-------------------------
To install the patch carry out the following steps:
1) Ensure that you are currently using RVCT 4.0. To do this, type:
armcc --vsn
and ensure that this returns RVCT 4.0 build 400 or later.
2) Extract all the files from the ZIP file into a temporary directory.
3) Copy the include directory from the temporary directory to replace your existing include
directory. The existing directory can be located by the RVCT40INC environment variable, eg:
C:\> set RVCT40INC
RVCT40INC=C:\Program Files\ARM\RVCT\Data\4.0\400\include\
4) Copy the lib directory from the temporary directory to replace your existing lib directory.
The existing directory can be located by the RVCT40LIB environment variable, eg:
C:\> set RVCT40LIB
RVCT40LIB=C:\Program Files\ARM\RVCT\Data\4.0\400\lib\
5) Copy the win_32-pentium directory from the temporary directory to replace your existing
win_32-pentium directory. The existing directory can be located by the RVCT40BIN environment variable, eg:
C:\> set RVCT40BIN
RVCT40BIN=C:\Program Files\ARM\RVCT\Programs\4.0\400\win_32-pentium\
If necessary change the unzip destination directory to match the location where you have
installed the tools.
6) The updated tools should now have been installed. To confirm this, open a DOS command prompt
window and enter:
armcc --vsn
armlink --vsn
armasm --vsn
fromelf --vsn
armar --vsn
The version returned should be RVCT 4.0 build 591.
--------------------------------------------------------------------------------------
RVCT 4.0 patch build 591 includes the following corrections since RVCT 4.0 build 529:
--------------------------------------------------------------------------------------
Compiler (armcc):
--------
* With --wchar32, wide character string literals generated for references from structure initializers are now placed in a section with 4 byte alignment, ensuring correct alignment.
* Floating point options on the command line now correctly override earlier options when using GCC command line translation.
* In some cases when a 64-bit unaligned value was loaded and then only partially used, the compiler would incorrectly generate an unaligned word load instruction. This has been fixed.
* When compiling with "--cpu QSP" a SWP instruction could sometimes be reordered incorrectly. This has been fixed.
* The inline assembler could incorrectly optimize a MVN with a shifted operand into a plain shift with no negation. This has been fixed.
* An issue has been fixed where the compiler could fail to maintain 8 Byte stack alignment for variadic functions
* An issue has been fixed where using the combination of --sys_include and --preinclude could result in the compiler failing to find included files.
* Function arguments are now set up correctly where a function's return is assigned to a variable.
* In cases where the RTTI for a derived class needs to refer to RTTI for a base class, and the base class is marked dllimport, the compiler now defines the base class RTTI unless it can determine that it will be exported from some other translation unit.
* Some causes of the following internal faults have been fixed: 0x5ac887, 0x87ecef, 0xafee20, #2409, 0xc31b6d, 0x6bca8b, 0x19c380
* A possible crash related to the loop unrolling optimization has been fixed.
* A possible crash when a destructor in a derived class contains a try-block, and the base-class destructor is defined as an empty function is fixed.
C Libraries:
-----------
* Defining __user_heap_extend in user code could lead to a link error due to a duplicate symbol definition in the library. This has now been fixed.
Assembler (armasm):
---------
* The {ARCHITECTURE} built-in variable now has the value of the chosen target architecture when --arm_only is used
* The .F16 data type is now accepted as an alternative to .16 data types on NEON instructions
* The assembler now correctly handles VLDM/VSTM instructions with more than 16 single-precision registers.
* LDM instructions used to return from exceptions in ARM state with LR and PC in the register list (e.g. LDMFD sp!, {r0-r12, lr, pc}^) no longer generate "Warning: A1745W: This register combination is DEPRECATED"
ELF format converter (fromelf)
--------------------
* fromelf --elf no longer reports an internal fault when handling Linux images containing INIT_ARRAY, FINI_ARRAY or PREINIT_ARRAY sections.
* fromelf now correctly disassembles Thumb2EE code.
Librarian (armar):
---------
* When armar is given two input files with the same name, in replace (r) mode, the second file will now not replace the first.
Linker (armlink):
------
* The linker generates extra linker defined symbols:
Load$$region_name$$ZI$$Base Load
- Address of the ZI output section in this execution region.
Load$$region_name$$ZI$$Length Load
- Length of the ZI output section in bytes.
Load$$region_name$$ZI$$Limit
- Load Address of the byte beyond the end of the ZI output section in the execution region.
The Load Length of ZI will be 0 unless region_name has the ZEROPAD scatter-loading execution region attribute set. If ZEROPAD is set then Load Length = Image$$region_name$$ZI$$Length"
* When the target architecture is ARM-only or Thumb-only, armlink no longer reports an error if an interworking section takes the address of a non-interworking section.
* "Warning L6765W : Shared object entry points must be ARM-state when linking architecture 4T objects." is no longer produced for ARM-state symbols.
* armlink now works correctly when --arm_linux, --ltcg and --library= command line options are used together.
* The scatter-loading region attribute ALIGN is now taken into account when writing the sh_addralign field of the first output section that is derived from the execution region. ALIGN on a load region will also now set the p_align filed of the associated program header.
=========================================
Description
-----------
This RealView Compilation Tools (RVCT) 4.0 Patch #3 Build 591 is intended for use with RealView
Developer Suite (RVDS) 4.0 products. It can be used to update any RVDS 4.0 Standard, Professional
or Evaluation installation, whether previously patched or an original installation. It is NOT
compatible with other releases of RVCT/RVDS or Keil MDK products.
This patch consists of updated RVCT/RVDS 4.0 compiler, linker, assembler, fromelf, and armar
Program executables; updated Include files and updated C/C++ libraries.
New Enhancements in this Release
--------------------------------
[New Target Support]
* Core support for the Cortex-M0 processor (--cpu=Cortex-M0).
* Device support for i.MX51 and OMAP4xxx. A complete list of supported devices can be generated typing "armcc --device list" (without quotes) at the command line.
[Improved Floating Point Math Library]
* The single-precision C math functions (sinf, logf, powf etc.) have been reimplemented for better speed, accuracy and monotonicity, and to make more efficient use of hardware floating point (VFP) when available. The new implementations are expected to be 2-4 times faster on targets without VFP hardware, and 5-10 times faster on targets with VFP hardware.
[Expanded gcc Compatibility]
* We have added a "--gnu_defaults" option. This sets basic default behaviour similar to that found in GCC, where these are common to most ARM GCC configurations but excluding any platform-specific settings such as those targeting ARM Linux. In particular, the --gnu_defaults option will enable the following: --gnu, --no_debug_macros, --enum_is_int, --signed_bitfields, --wchar32, and --no_hide_all. The --gnu option behaviour remains the same; it enables GCC language extensions, without changing other settings from their armcc defaults. The --arm_linux option, and other ARM Linux-targeting options, imply --gnu_defaults and also the platform-specific settings for Linux
* When configured against GCC 4.3.1 or later and using GCC command-line translation for ARM Linux, the compiler will enable NEON vectorization automatically at -O3 (RVDS Professional only). You can explicitly enable or disable vectorization using the GCC options -ftree-vectorize or -fno-tree-vectorize.
* The header files arm_linux/linux_rvct.h and arm_linux/limits.h now define MB_LEN_MAX as 16 (the value expected by glibc) rather than 6 (the ABI-recommended value).
* The linker error message L6029 "Error: L6029E: Relocation #REL:0 in object.o(section) is wrt invalid/missing symbol" is now downgraded to a warning when --arm_linux is used. This enables the link to complete with GNU objects that contain invalid relocations to NULL.
[General Enhancements]
ARM Compiler (armcc):
* Array object destructions have been updated to use the more efficient ABI function __aeabi_vec_dtor, instead of function __cxa_vec_dtor.
* The compiler now issues a remark for empty dependent statements, which are often triggered by incorrect placement of semicolons.
* The formatting of long strings and 64 bit data directives has been improved in the interleaved assembly output.
Linker (armlink):
* The --ltcg option has been enhanced to support multiple input objects containing entry points. Note: if the input objects do contain more than one entry point then you must select one using the --entry=entrypoint command. Note, as the --ltcg option loses the mapping between object and section you must use a global symbol definition as your entry point. For example --entry=__rt_entry.
* We have added a new linker option "--[no_]implicit_branchpatch" (on by default), that controls whether armlink will automatically add patches based on other command line options. For example, if --cpu=cortex-a8 is specified, the --branchpatch=cortex-a8_q109 option may be implied.
* The new option "--[no_]keep_protected_symbols" (on by default) prevents sections containing symbols with STV_PROTECTED visibility from being removed.
* We have added the capability to suppress mismatched PRES8/REQ8 build attribute warnings. Previously, when using --arm_linux, the linker downgraded errors about mismatched PRES8/REQ8 build attributes to warnings to maintain compatibility with GNU objects that lack these attributes. The user may now suppress these altogether using "--diag_suppress=6238" for example.
* For cases where customers have their applications export functions shared objects, we have provided an option that will prevent the "remove unused sections" linker feature from removing these desired functions.
Multiple tools:
* On Windows, the tools can now accept Cygwin paths. The 'cygpath' program from the Cygwin command set is invoked as a filter to convert path strings where necessary. To enable this conversion, CYGPATH environment variable must contain the full absolute Windows path and name of a suitable cygpath.exe, e.g. "CYGPATH=C:/cygwin/bin/cygpath.exe".
* A new switch, --version_number, outputs the version and build number in an easy to parse format.
* The options --apcs=/softfp and --apcs=/hardfp are now available as an alternative way to request the integer or floating-point variant of the procedure call standard. This allows the procedure call standard to be specified separately from the version of the floating-point hardware available through the --fpu option. It is still possible to specify the procedure call standard in the --fpu option as before, but the use of --apcs is recommended.
* The tools now allow --fpmode=none, as an alternative to --fpu=none, indicating that source is not permitted to use floating-point arithmetic of any kind.
OS Platforms
------------
This patch has been tested on the following supported platforms:
Windows XP SP2, 32-bit & 64-bit
Windows XP SP3, 32-bit
Windows Vista Business Edition SP1, 32-bit & 64-bit
Windows Vista Enterprise Edition SP1, 32-bit & 64-bit
Windows Server 2003 32-bit & 64-bit
Red Hat Linux Enterprise 4 for x86, 32-bit & 64-bit
Red Hat Linux Enterprise 5 for x86, 32-bit & 64-bit
Solaris for SPARC 10
In addition, the patch has been tested on the following non-supported platforms:
Windows 2000 SP4
SUSE Linux 9.2
Ubuntu Linux 8.10
Installation Instructions (Windows)
-------------------------
To install the patch carry out the following steps:
1) Ensure that you are currently using RVCT 4.0. To do this, type:
armcc --vsn
and ensure that this returns RVCT 4.0 build 400 or later.
2) Extract all the files from the ZIP file into a temporary directory.
3) Copy the include directory from the temporary directory to replace your existing include
directory. The existing directory can be located by the RVCT40INC environment variable, eg:
C:\> set RVCT40INC
RVCT40INC=C:\Program Files\ARM\RVCT\Data\4.0\400\include\
4) Copy the lib directory from the temporary directory to replace your existing lib directory.
The existing directory can be located by the RVCT40LIB environment variable, eg:
C:\> set RVCT40LIB
RVCT40LIB=C:\Program Files\ARM\RVCT\Data\4.0\400\lib\
5) Copy the win_32-pentium directory from the temporary directory to replace your existing
win_32-pentium directory. The existing directory can be located by the RVCT40BIN environment variable, eg:
C:\> set RVCT40BIN
RVCT40BIN=C:\Program Files\ARM\RVCT\Programs\4.0\400\win_32-pentium\
If necessary change the unzip destination directory to match the location where you have
installed the tools.
6) The updated tools should now have been installed. To confirm this, open a DOS command prompt
window and enter:
armcc --vsn
armlink --vsn
armasm --vsn
fromelf --vsn
armar --vsn
The version returned should be RVCT 4.0 build 591.
--------------------------------------------------------------------------------------
RVCT 4.0 patch build 591 includes the following corrections since RVCT 4.0 build 529:
--------------------------------------------------------------------------------------
Compiler (armcc):
--------
* With --wchar32, wide character string literals generated for references from structure initializers are now placed in a section with 4 byte alignment, ensuring correct alignment.
* Floating point options on the command line now correctly override earlier options when using GCC command line translation.
* In some cases when a 64-bit unaligned value was loaded and then only partially used, the compiler would incorrectly generate an unaligned word load instruction. This has been fixed.
* When compiling with "--cpu QSP" a SWP instruction could sometimes be reordered incorrectly. This has been fixed.
* The inline assembler could incorrectly optimize a MVN with a shifted operand into a plain shift with no negation. This has been fixed.
* An issue has been fixed where the compiler could fail to maintain 8 Byte stack alignment for variadic functions
* An issue has been fixed where using the combination of --sys_include and --preinclude could result in the compiler failing to find included files.
* Function arguments are now set up correctly where a function's return is assigned to a variable.
* In cases where the RTTI for a derived class needs to refer to RTTI for a base class, and the base class is marked dllimport, the compiler now defines the base class RTTI unless it can determine that it will be exported from some other translation unit.
* Some causes of the following internal faults have been fixed: 0x5ac887, 0x87ecef, 0xafee20, #2409, 0xc31b6d, 0x6bca8b, 0x19c380
* A possible crash related to the loop unrolling optimization has been fixed.
* A possible crash when a destructor in a derived class contains a try-block, and the base-class destructor is defined as an empty function is fixed.
C Libraries:
-----------
* Defining __user_heap_extend in user code could lead to a link error due to a duplicate symbol definition in the library. This has now been fixed.
Assembler (armasm):
---------
* The {ARCHITECTURE} built-in variable now has the value of the chosen target architecture when --arm_only is used
* The .F16 data type is now accepted as an alternative to .16 data types on NEON instructions
* The assembler now correctly handles VLDM/VSTM instructions with more than 16 single-precision registers.
* LDM instructions used to return from exceptions in ARM state with LR and PC in the register list (e.g. LDMFD sp!, {r0-r12, lr, pc}^) no longer generate "Warning: A1745W: This register combination is DEPRECATED"
ELF format converter (fromelf)
--------------------
* fromelf --elf no longer reports an internal fault when handling Linux images containing INIT_ARRAY, FINI_ARRAY or PREINIT_ARRAY sections.
* fromelf now correctly disassembles Thumb2EE code.
Librarian (armar):
---------
* When armar is given two input files with the same name, in replace (r) mode, the second file will now not replace the first.
Linker (armlink):
------
* The linker generates extra linker defined symbols:
Load$$region_name$$ZI$$Base Load
- Address of the ZI output section in this execution region.
Load$$region_name$$ZI$$Length Load
- Length of the ZI output section in bytes.
Load$$region_name$$ZI$$Limit
- Load Address of the byte beyond the end of the ZI output section in the execution region.
The Load Length of ZI will be 0 unless region_name has the ZEROPAD scatter-loading execution region attribute set. If ZEROPAD is set then Load Length = Image$$region_name$$ZI$$Length"
* When the target architecture is ARM-only or Thumb-only, armlink no longer reports an error if an interworking section takes the address of a non-interworking section.
* "Warning L6765W : Shared object entry points must be ARM-state when linking architecture 4T objects." is no longer produced for ARM-state symbols.
* armlink now works correctly when --arm_linux, --ltcg and --library=
* The scatter-loading region attribute ALIGN is now taken into account when writing the sh_addralign field of the first output section that is derived from the execution region. ALIGN on a load region will also now set the p_align filed of the associated program header.