| Release Note: Marvell GCC C/C++ Compiler Toolchain |
| Release: 2013Q2 (gcc version 4.6.4) |
| Date: 2013/06 |
| Directory: |
| |
| 0. Marvell GCC Toolchain |
| 1. Marvell GCC Release Website |
| 2. Binary Packages |
| 3. Source Code Packages |
| 4. Support |
| 5. Feature Listing |
| |
| |
| |
| |
| |
| -------------------------------------------------------------------------------- |
| 0. Marvell GCC Toolchain |
| -------------------------------------------------------------------------------- |
| |
| The Marvell GCC C/C++ Compiler Toolchain (Marvell GCC, or MGCC) is a |
| collection of open source tools include gcc C/C++ compilers, binutils, C/C++ |
| libraries, gdb debugger, etc. Marvell makes some bug-fixes and tuned features |
| especially for the Marvell CPUs that are ARMv5te/ARMv7-a compatible. |
| |
| Release 2013Q2 of MGCC is the alpha release with the major tool GCC 4.6.4. |
| |
| Note that Marvell only collects and tunes these packages, and all products |
| or services mentioned herin may be trademarks of their respective owners. |
| |
| |
| |
| |
| |
| -------------------------------------------------------------------------------- |
| 1. Marvell GCC Release Website |
| -------------------------------------------------------------------------------- |
| |
| MGCC source code and pre-built executables for some platforms can be |
| download from the website: |
| |
| http://10.19.133.165/release/gcc/ |
| |
| The details will be mentioned in the following context. |
| |
| |
| |
| |
| |
| -------------------------------------------------------------------------------- |
| 2. Binary Packages |
| -------------------------------------------------------------------------------- |
| |
| Download the binary toolchains from the MGCC Release Website according to |
| the following rules/subdirectories: |
| |
| (1) The MGCC Major Version |
| |
| For example: |
| |
| mgcc-4.2/ |
| mgcc-4.4/ |
| mgcc-4.6/ |
| |
| These are according to the GCC, the most important tool, version number. |
| |
| (2) Tool Building Version |
| |
| They are always named by 'YYYYMM-NNN-VERSION'. For example: |
| |
| 201208-1593-4.6.4/ |
| |
| The newer version has fixed more bugs and add more Marvell-tuned features. |
| |
| (3) The Default Target Endian |
| |
| big-endian/ |
| little-endian/ |
| |
| 'big-endian' includes ARMv5's BE32 and ARMv7's BE8 versions. The MGCC |
| runtime libraries and C/C++ libraries comes from big-endian subdirectory |
| are compiled with the default 'gcc -mbig-endian' option, while from |
| little-endian with the default 'gcc -mlittle-endian' option. |
| |
| There may be extra MGCC toolchains for other target. For example, the |
| Android target is at: |
| |
| android/ |
| |
| Note that users can also get the MGCC source code and extra documents |
| from the subdirectories: |
| |
| src/ |
| doc/ |
| |
| (4) The Default Target ARM Instruction Set |
| |
| For example: |
| |
| v5/ |
| v7/ |
| |
| MGCC from v5 subdirectory generates ARMv5 instruction set, while v7 |
| generates ARMv7 instructions set by default. |
| |
| (5) The Host Execution Environment |
| |
| For example: |
| |
| host-arm-linux/ |
| host-i686-linux/ |
| host-windows-mingw32/ |
| host-x86_64-linux/ |
| ... |
| |
| Select suitable hardware and O.S platform on which MGCC would be executed. |
| |
| For not mentioned host environment, users may download the MGCC source |
| code and build MGCC on that host. If fails to build, please ask Marvell |
| Compiler Team for help. |
| |
| (6) The Binary Package |
| |
| They are always named by |
| |
| arm<ARCH>-marvell-<ABI>-<VFP>_<VERSION>_<HOST>_<YYYYMM>.tar.bz2 |
| |
| with different target features. For example: |
| |
| ... |
| armebv5-marvell-native-softfp-4.6.4_201403.tar.bz2 |
| armv5-marvell-linux-gnueabi-soft-4.6.4_i686_201403.tar.bz2 |
| armebv7-marvell-eabi-hard-4.6.4_x86_64_201403.tar.bz2 |
| armv7-marvell-linux-gnueabi-soft-mingw32-4.6.4_201413.zip |
| ... |
| |
| <ARCH> : v5, v7, ebv5, ebv7. |
| |
| 'v5' means ARMv5 instruction set, and while 'v7' means ARMv7. |
| |
| The prefix 'armv5' or 'armv7' is the little-endian target, 'armebv5' |
| is BE32, and 'armebv7' is BE8. |
| |
| <ABI> : native, linux-gnueabi, eabi |
| |
| 'native' is the native-compilers running on ARM Linux hosts and |
| generating the target ARM code. The 'gcc -mabi=aapcs-linux' is |
| used by default. The accompanying C library is glibc. The compiled |
| programes would be executed on the Linux environment with the |
| compatible glibc shared library. |
| |
| 'linux-gnueabi' with the default 'gcc -mabi=aapcs-linux' is always for |
| the target of ARM Linux platform. The accompanying C library is glibc. |
| The compiled programes would be executed on the ARM Linux environment |
| with the compatible glibc shared library. |
| |
| 'eabi' with the default 'gcc -mabi=aapcs' is always for the target of |
| ARM bare board or semihosting environment. The accompanying C library |
| is Newlib. If you are developing embedded system without any O.S. |
| support, you should select this package to develop your programs. |
| |
| <VFP> : hard, soft, softfp |
| |
| The 'hard', 'soft' and 'softfp' mean the default 'gcc -mfloat-abi=' |
| option, and the libraries, e.g. glibc and newlib, are compiled with |
| that default option. |
| |
| 'soft' tool generates non-VFP code, and the others may generate |
| VFP/Neon code. Objects compiled by 'soft' and 'softfp' are |
| compatible, but not 'hard'. |
| |
| <VERSION> : 4.6.4, 4.8.3, ... |
| |
| This specifies the GCC VERSION on which the MGCC toolchain executes. |
| |
| <HOST> : i686, x86_64, mingw32 |
| |
| This specifies the host on which the MGCC toolchain executes. |
| |
| |
| After downloading the suitable package, use 'tar' or other unpacking tools |
| to unpack it. E.g. |
| |
| $ tar jxvf armv7-marvell-linux-gnueabi-softfp-4.6.4_x86_64_201403.tar.bz2 |
| $ cd armv7-marvell-linux-gnueabi-softfp-4.6.4_x86_64_201403 |
| $ ls bin/ # executable files |
| $ ls arm-marvell-linux-gnueabi/libc # sysroot |
| |
| For 'linux-gnueabi' version, users may need to update the shared libraries |
| (*.so) from the MGCC sysroot on the target ARM Linux environment if the |
| compiled program fails to run because of wrong *.so version. |
| |
| |
| |
| |
| |
| -------------------------------------------------------------------------------- |
| 3. Source Code Packages |
| -------------------------------------------------------------------------------- |
| |
| Download the toolchain source code from the Marvell GCC Release Website, |
| and untar them. |
| |
| The below listing is the source code packages and where they come from: |
| |
| marvell-gcc Marvell-tuned GCC C/C++ Compiler Source Code |
| | |
| +-- script Building scripts and documents |
| | | |
| | +-- doc |
| | |
| +-- src |
| | |
| +-- binutils-src Marvell-tuned Binutils originally from FSF. |
| | http://www.gnu.org/software/binutils/ |
| | |
| +-- cloog-src CLooG from FSF for building GCC. |
| | http://www.cloog.org/ |
| | ftp://gcc.gnu.org/pub/gcc/infrastructure/ |
| | |
| +-- expat-src The Expat XML Parser. |
| | http://www.libexpat.org/ |
| | |
| +-- extra-src Extra packages as addends to the MGCC |
| | toolchains for different purposes. |
| | |
| +-- gcc-src Marvell-tuned GCC originally from FSF and |
| | Linaro. |
| | http://gcc.gnu.org/ |
| | http://www.linaro.org/ |
| | |
| +-- gdb-src GDB from FSF and Linaro. |
| | http://www.gnu.org/software/gdb/ |
| | http://www.linaro.org/ |
| | |
| +-- glibc-ports-src GNU glibc 2.15 from CodeSourcery for ARM |
| | porting. |
| | |
| +-- glibc-src GNU glibc 2.15 from CodeSourcery for |
| | arm-marvell-linux-gnueabi. |
| | |
| +-- gmp-src The GNU Multiple Precision Arithmetic Library |
| | for building GCC. |
| | http://gmplib.org/ |
| | http://ftp.gnu.org/gnu/gmp/ |
| | |
| +-- linux-src Header files for arm-marvell-linux-gnueabi. |
| | https://www.kernel.org/ |
| | |
| +-- mpc-src GNU MPC Library from FSF for building GCC. |
| | http://www.multiprecision.org/ |
| | http://ftp.gnu.org/gnu/mpc/ |
| | |
| +-- mpfr-src GNU MPFR Library for building GCC. |
| | http://www.mpfr.org/ |
| | http://ftp.gnu.org/gnu/mpfr/ |
| | |
| +-- ncurses-src Ncurses (new curses) library from FSF. |
| | http://www.gnu.org/software/ncurses/ |
| | http://ftp.gnu.org/pub/gnu/ncurses/ |
| | |
| +-- newlib-src Newlib for arm-marvell-eabi. |
| | http://www.sourceware.org/newlib/ |
| | |
| +-- ppl-src Parma Polyhedra Library (PPL) for building GCC. |
| | http://bugseng.com/products/ppl/ |
| | |
| +-- uclibc-src A C library for embedded Linux. |
| | http://www.uclibc.org/ |
| | |
| +-- zlib-src zlib data compression library. |
| http://www.zlib.net/ |
| http://www.gzip.org/ |
| |
| Extra packages (src/extra-src) is as addends to the MGCC toolchains. Refer |
| to the documents "MARVELL_GCC_Extra_Libraries_for_Various_Platforms.txt" and |
| "MARVELL_GCC_Dump_Optimization_Options_Plugin.txt" for details. |
| |
| Refer to 'marvell-gcc/script/INSTALL' for building toolchains. The |
| following commands show the supported targets and simple building commands: |
| |
| $ cd marvell-gcc |
| $ make -f script/Makefile.marvell |
| |
| For any qeuestions and special request, please ask FAE or Marvell Compiler |
| Team for help. |
| |
| |
| |
| |
| |
| -------------------------------------------------------------------------------- |
| 4. Support |
| -------------------------------------------------------------------------------- |
| |
| . Internal Bug Report Email: |
| |
| marvell-gcc-bugs@lists.marvell.com |
| |
| |
| . Internal Bug Report Mailing List: |
| |
| http://lists.marvell.com/mailman/listinfo/marvell-gcc-bugs |
| |
| . External Bug Report Email: |
| |
| mrvlgccbug@gmail.com |
| |
| |
| |
| -------------------------------------------------------------------------------- |
| 5. Feature Listing |
| -------------------------------------------------------------------------------- |
| |
| |
| . MGCC toolchains building process for different hosts and configured with |
| multiple target features. |
| |
| |
| . Support Marvell's extension instructions. |
| |
| |
| . Support Marvell's WMMX intrinsics and auto-vectorization. For details, |
| refer to the following document in the ${MGCC_TOOCHAINS}/script/doc/ |
| directory: |
| |
| MARVELL_Using_GCC_IWMMXT_Autovect.txt |
| MARVELL_Using_GCC_IWMMXT.doc |
| MARVELL_Using_GCC_IWMMXT_Intrinsic.pdf |
| MARVELL_Using_GCC_IWMMXT.pdf |
| MARVELL_Using_GCC_IWMMXT_Vector_Class_Header_File.pdf |
| MARVELL_Using_GCC_Neon_Auto_Vectorization.pdf |
| |
| |
| . Optimized instruction scheduling for Marvell CPUs including PJ1 and PJ4 |
| series. |
| |
| |
| . Marvell-specified options. For details, refer to: |
| |
| ${MGCC_TOOCHAINS}/script/doc/MARVELL_GCC_Options.txt |
| |
| |
| . Refer to the file named 'ChangeLog.Marvell' in the source code directories |
| for the modification. E.g. |
| |
| ${MGCC_TOOCHAINS}/src/binutils-src/ChangeLog.Marvell |
| ${MGCC_TOOCHAINS}/src/gcc-src/ChangeLog.Marvell |
| |
| These ChangeLogs are only simple log from our git repertory. |
| |
| |
| . For the changes, new features, and fixes of official gcc from 4.4 to 4.6, |
| please refer to: |
| |
| http://gcc.gnu.org/gcc-4.5/changes.html |
| http://gcc.gnu.org/gcc-4.6/changes.html |