RELEASE NOTES ============= Product : GNU C Compiler Toolkit for ARC Processor MileStone : PIC Toolchain Release for the ARC700 - Support #3 Version : GNU binutils codito head - PIC-20041124 GNU gcc codito codito head - PIC-20041024 Date : November 24 2004. Table of Contents ----------------- 1. Overview 2. Features Supported 3. Known Limitations and Defects 4. Contact Information 5. Reference 1. Overview ------------ This is the 3rd support release for the PIC-enabled ARC toolchain. This is a bug fix and performace improvement release for the ARC GNU toolchain 2. Features Supported ---------------------- 2.1 Features of the Support Release #3 (November 24 2004) -------------------------------------------------------- * Bug #502 : Code generation bug for variadic static inline functions fixed. * Bug #581 : Instruction sizes bug in the compiler fixed. * Bug #643 : Checks for illegal instruction sequences added * Bug #830 : Unable to find spill registers, bug fixed * Bug #831 : Linking between binaries for incompatible architecture variants disallowed * Bug #861 : Bad instruction `asl.ge r2,r0,12` generation bug fixed * Bug #906 : Incorrect generation of mov.ne bug fixed * Bug #909 : Incorrect generation of mov.lt bug fixed * Bug #947 : Assembler bug for loads for short immediates for ARCtangent A4. * Bug #959 : Regression fix for linker for the ARCtangent A4. * newlib modifications for better performance. 2.2 Features of the Support Release #2 (October 1 2004) ---------------------------------------------------------- * Bug #497 : Instruction combination bug fixed. * Bug #814 : Incorrect code generation for branches with -mmixed-code fixed. * Bug #819 : Code conditionalization bug fixed. * Bug #544 : Incorrect code generation for stores fixed. * Bug #569 : Use of lp_count as a target operand for loads not permitted. * Bug #574 : Fixed use of pcl as a destination operand for mov_s, add_s cmp_s * Bug #575 : Incorrect use of extension registers for ld fixed * Support for .text.init and .data.init sections in the generated linker scripts. 2.3 Features of the Support Release #1 (September 6 2004) --------------------------------------------------------- * Bug #723 Assembler now supports the @gotoff+ directive. * Bug #722 support for function pointer comparisons in case of PIC fixed. * Support for arc-linux-uclibc target added . Please use only the -mA7 option with this. * Support for creating dynamically linked executables using the arc-linux-uclibc target. * Bug #768 : Incorrect code generation for static arrays fixed. * Bug #786 : Incorrect code generation for switch cases and initializing the pointer to the GOT base fixed. * Bug #787 : Save restore of got base pointer in function calls. 2.4 Features of PIC Toolchain release (July 31 2004) ----------------------------------------------------- * Support for PIC (Position Independent Code) for the ARC700. Position Independent Code is generated and tested only for the ARC700 processor,no earlier cores are currently supported. * Added support for the following assembler directives - @got - @gotoff - @gotpc - @plt - __DYNAMIC__ - __GLOBAL_OFFSET_TABLE__ * Added a new command line option to the linker to support linking of shared libraries for the ARC700 and to take care of the increased page size.(-marclinux) * Bug #616 Stores with write back not supported in the ARC700 assembler, fixed * Bug #648 Solved with switch cases for PIC code causing segfaults in the assembler. The compiler no longer generates switch cases in rodata but in the text * Bug #660 Problem with generation of R_ARC_RELATIVE and R_ARC_COPY fixed. * Bug #678 For function pointers R_ARC_GOT32 was generated instead of R_ARC_32_ME in the assembler, Fixed * Bug #679 Problem with incorrect generation of R_ARC_GOTOFF for uninitialized data fixed. * Bug #708 Incorrect generation of DT_RELASZ fixed in the linker. * Problem with creation of crtbegin.o and crtend.o solved in the compiler 2.5 Features of optimized toolchain release (June 07 2004) ----------------------------------------------------------- * Support for the following instructions in the gcc backend - add1, add2, add3 - sub1, sub2, sub3 - bbit0, bbit1 - bic - bset - bmsk - bclr - bxor * Support for the following auxilliary registers in binutils - eret - erbta - erstatus - ecr - efa - icause1 - icause2 - auxienable - auxitrigger - xpu - xpk - bta_l1 - bta_l2 - aux_irq_edge_cancel - aux_irq_pending - aux_macmode * Support for new saturated condition codes. * Support for all the BCRs specified in the ISA. * Bug #553 solved for incorrect disassembly of unconditional branch and link instruction. * Bug #513 solved for correction in the code generated for switch cases. * Bug #578 solved for Internal Compiler Error in constant_p_rtx. 2.6 Features of support release (May 21 2004) --------------------------------------------- * Bug #550 solved for incorrect umulsidi3 . * Cygwin binaries also released. 2.7 Features of minimal release (May 14 2004 ) ---------------------------------------------- The features supported in this release are as follows. * Support for the new multiplier unit of ARC700 in gcc * Support for the new multiplier unit in ARC700 in binutils . * Support for DSP extension instructions in the ARC700 * Support for prefetch, sync, rtie and ex added in the binutils. * Support for trap0 and trap_s added to binutils * Removed support for the old multiplier unit for the ARC700. Support continues in binutils for the old multiplier unit * New Register permissions map changed for the ARC700.Took care of permission issues for registers r50 to 59. * Support Added for the new multiply instructions. * setjump.s in newlib removes support for the old multiply registers. * newlib multi-arched to take care of ARC700. * Bug #525 for incorrect 64 bit arithmetic for A5 solved. * Bug #535 for incorrect division of unsigned long longs in gcc for A5 solved * Bug #538 for incorrect code generation of lsr.ge and asr.ge for A5 solved . * Bug #540/ 541 for incorrect code generation of stw_s and ldw_s for A5 solved. This would appear with the -mmixed-code option. * Bug #545 solved for incorrect encoding of the lr and sr instructions * Bug #551 solved for incorrect disassembly of the bl unconditional for A5 and ARC700 3. Known Limitations and Defects -------------------------------- Please refer to the old release notes for prior known limitations and defects. This release has been tested with the linux kernel internally at Codito and an "alpha" version of the dynamic linker with uClibc. It is likely that there might be more defects which have not yet been reported * Incompatible object code format between Metaware and GCC due to different Relocation Values * Bug #536 Wrong Tail call conversion for A5 with -O2 . A problem that appears in the ARC700 also. * Regression testsuites run on A5 and ARC700 only . A regression run has to be run for the A4. * The disassembly shows a trap0 as swi for ARC700. * Structures of size = 4 are not returned in r0 * Incorrect alignment for doubles in structures with respect to the ABI * Incorrect alignment of unnamed bitfields with respect to the ABI 4. Contact Information ---------------------- In case of any defects please contact arc-support@codito.com, or log in to http://support.codito.com 5. References ------------- * ARC700 ISA Reference Manual * GNU Programmers Manual for the ARC * Sys V ABI Extension for ELF for the ARC Tools Team Codito Technologies