blob: 31c4691fc7267216dd2307dfee3a93aa48b593e9 [file] [log] [blame]
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