Major Changes in 2020.03 Release
================================

Toolchain and IDE Components Versions
-------------------------------------

* Binutils 2.34 with ARC patches
* GCC 9.3 with ARC patches
* GDB 10-prerelease with ARC patches
* newlib 3.2.0 with ARC patches
* uClibc-ng v1.0.31
* glibc 2.30 with ARC patches
* Eclipse 2018-12 4.10.0 with CDT 9.6.0
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

This release of GNU toolchain and IDE is supported by CGEN IPlib (TCF generator) version 1.0.53 and later.

New Features and Enhancements
-----------------------------

* Binary distribution
	* Supported host operating systems: Windows 10 64-bit, Ubuntu 16.04.x, 18.04.x, CentOS/RHEL 7.x
	* No longer compatible with CentOS/RHEL 6.x due to GDB 8.3 requirement for C++11 support in the compiler.
          Still it's perfectly possible to build Elf32 & uClibc toolchains without GDB on CentOS/RHEL 6.x.

* Toolchain Build Scripts
	* Documentation update

* GCC
	* Update to GCC 9.3, see upstream release notes for more details: https://gcc.gnu.org/pipermail/gcc/2020-March/000037.html
	* Refurbished interrupt handling code
	* Use of GP & FP registers as general-purpose registers
	* Bug fixes

* GDB
	* Binutils & GDB now use the same code base. Though for simplisity & compatibility of build-system we still keep separate branches for each component.
	* GDB code is based on what will become v10.0.

* Binutils
	* Updated to Binutils 2.34, see upstream release notes for more details: https://lists.gnu.org/archive/html/info-gnu/2020-02/msg00000.html
	* Bug fixes

* glibc
	* No changes since 2019.09 release

* Eclipse plugins
	* Bug fixes


Major Changes in 2019.09 Release
================================

Toolchain and IDE Components Versions
-------------------------------------

* Binutils 2.33.1 with ARC patches
* GCC 9.2.1 with ARC patches
* GDB 8.3.1 with ARC patches
* newlib newlib-snapshot-20180831 with ARC patches
* uClibc-ng v1.0.31
* glibc 2.30 with ARC patches
* Eclipse 2018-12 4.10.0 with CDT 9.6.0
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

This release of GNU toolchain and IDE is supported by CGEN IPlib (TCF generator) version 1.0.53 and later.

New Features and Enhancements
-----------------------------

* Binary distribution
	* Supported host operating systems: Windows 10 64-bit, Ubuntu 16.04.x, 18.04.x, CentOS/RHEL 7.x
	* No longer compatible with CentOS/RHEL 6.x due to GDB 8.3 requirement for C++11 support in the compiler.
          Still it's perfectly possible to build Elf32 & uClibc toolchains without GDB on CentOS/RHEL 6.x.

* Toolchain Build Scripts
	* Documentation update

* GCC
	* Update to GCC 9.2.1, see upstream release notes for more details: https://gcc.gnu.org/gcc-9/changes.html
	* Refurbished interrupt handling code
	* Use of GP & FP registers as general-purpose registers
	* Bug fixes

* Binutils
	* Updated to Binutils 2.33, see upstream release notes for more details: https://lists.gnu.org/archive/html/info-gnu/2019-10/msg00006.html
	* Implemented relaxation from BL to BL_S instruction
	* Bug fixes

* glibc
	* Updated to upstream 2.30, see upstream release notes for more details:  https://sourceware.org/ml/libc-alpha/2019-08/msg00029.html
	* ARC patches submitted for upstream submission as of Jan 2019
	* MMU page size gets detected automatically in run-time via getpagesize()
	* Added hardware floating point support
	* Enabled big-endian ARC support

* Eclipse plugins
	* Bug fixes


Major Changes in 2019.03 Release
================================

Toolchain and IDE Components Versions
-------------------------------------

* Binutils 2.32.51.20190308 with ARC patches
* GCC 8.3.1 with ARC patches
* GDB 8.0.50 with ARC patches
* newlib newlib-snapshot-20180831 with ARC patches
* uclibc-ng v1.0.31
* glibc 2.29 with ARC patches
* Eclipse 2018-12 4.10.0 with CDT 9.6.0
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

This release of GNU toolchain and IDE is supported by CGEN IPlib (TCF
generator) version 1.0.53 and later.

New Features and Enhancements
-----------------------------

* Binary distriibution
	* Replaced Oracle Java runtime with OpenJ9 Java runtime.

* Toolchain Build Scripts
	* Documentation update.

* GCC
	* Update to GCC 8.3.1.
	* Enable code density frame option for elf targets
	* Fix logic set UNALIGNED_ACCESS
	* Emit blockage also in epilogue
	* Remove d0d1 from GENERAL_REGS
	* Emit blockage regardless to avoid delay slot scheduling
	* Fix millicode wrong blink restore.

* Binutils
	* Update to Binutils 2.32.

* glibc
	* Upstream 2.29
	* ARC patches submitted for upstream submission as of Jan 2019

* Eclipse plugins
	* Fix NPE in compiler plugin
	* Add project templates for ARC EM SDP, HSDK and IoTDK
	* Cleanup Hello world template sources
	* Multiple improvements to the internal structure of project templates
	* Fix error when viewing compiler or linker settings if build directory doesn't exist yet
	* Update to OpenJDK11/OpenJ9
	* Update to Eclipse 2018-12, CDT 9.6, Tycho 1.3.0
	* Remove support for x86 runtime architecture for Linux and Windows


Major Changes in 2018.09 Release
================================

Toolchain and IDE Components Versions
-------------------------------------

* Binutils 2.31.51 with ARC patches
* GCC 8.2.1 with ARC patches
* GDB 8.0.50 with ARC patches
* newlib newlib-snapshot-20170922 with ARC patches
* uclibc-ng v1.0.29
* Eclipse Oxygen 4.7.1 with CDT 9.3.2
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

This release of GNU toolchain and IDE is supported by CGEN IPlib (TCF
generator) version 1.0.53 and later.

New Features and Enhancements
-----------------------------

* Toolchain Build Scripts
	* Documentation update.

* GCC
	* Update to GCC 8.2.1.

* Binutils
	* Update to Binutils 2.31.

* uClibc-ng
	* Update to uClibc-ng 1.0.29.

* Eclipse plugins
	* Add support for --specs= options of ARC GCC.
	* Add Support import of C_defines from TCF.
	* Update template projects for EM Starter Kit to use new --specs values.
	* Fix errors in template projects where -mcpu wasn't set correctly.
	* Fix crash in uClibc plugin when building an application.
	* Fix -mmpy-option not being updated properly when -mcpu was changed.


Major Changes in 2018.03 Release
================================

Toolchain and IDE Components Versions
-------------------------------------

* Binutils 2.29.51 with ARC patches
* GCC 7.3.1 with ARC patches
* GDB 8.0.50 with ARC patches
* newlib newlib-snapshot-20170922 with ARC patches
* uclibc-ng v1.0.27
* Eclipse Oxygen 4.7.1 with CDT 9.3.2
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

This release of GNU toolchain and IDE is supported by CGEN IPlib (TCF
generator) version 1.0.53 and later.

New Features and Enhancements
-----------------------------

* Binary distributables
	* Fixed missing "nano" libraries in Windows release.
	* Update to Linux 4.15 for toolchain headers.

* Toolchain Build Scripts
	* Update documentation, including list of prerequisites.

* GCC
	* Update to GCC 7.3.1

* Binutils
	* Rebase on upstream commit 8e68731.

* GDB
	* Rebase on upstream commit 6abc18b.

* Eclipse plugins
	* Fix errors in template projects.
	* Allow TCF path in compiler project to contain Eclipse variables.
	* Add button to allow disable of application load.
	* Migrate to cdtserial from RxTx.
	* Use named -mpy-option values.

* uClibc-ng
	* Switched to upstream Git repository instead of ARC fork.


Major Changes in 2017.09 Release
================================

Toolchain and IDE Components Versions
-------------------------------------

* Binutils 2.29 with additonal ARC patches
* GCC 7.1.1 with additional ARC patches
* GDB 8.0 (upstream commit 9a24775) with ARC patches
* newlib 2.5 (upstream tag newlib-snapshot-20170519) with ARC patches
* uclibc-ng 1.0.26 with few ARC patches
* Eclipse Neon 4.6.3 with CDT 9.2.1
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

This release of GNU toolchain and IDE is supported by CGEN IPlib (TCF
generator) version 1.0.53 and later.

New Features and Enhancements
-----------------------------

* Binary distributables
	* Glibc toolchain for ARC HS
	* Update to Linux headers 4.12

* Toolchain Build Scripts
	* Support for Glibc toolchain
	* Support for latest uClibc
	* Remove several outdated and unused files

* GCC
	* Update to upstream 7.1.1 version
	* Support for reduced 16-entry register file
	* Support for non-32bit LP_COUNT
	* Support for ARC EM DSP instructions via builtins
	* Reworked hardware loop support implementation

* Binutils
	* Update to upstream 2.29 version

* GDB
	* Update to upstream 8.0 version
	* Support for R30, R58 and R59 register on ARC HS Linux targets

* Eclipse plugins
	* Upgrade to Eclipse Neon and CDT 9.2
	* Fix invalid default value of Ashling XML file  


Major Changes in 2017.03 Release
================================

Toolchain and IDE Components Versions
-------------------------------------

* Binutils 2.28 with additonal ARC patches
* GCC 6.3.0 with additional ARC patches
* GDB 7.12 (upstream commit 5f8cf6c) with ARC patches
* newlib 2.4 (upstream commit e6413b0) with ARC patches
* uclibc-ng 1.0.17 with few ARC patches
* Eclipse Mars (4.5.1) with CDT 8.8.0
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

This release of GNU toolchain and IDE is supported by CGEN IPlib (TCF
generator) version 1.0.53 and later.

New Features and Enhancements
-----------------------------

* Binary distributables
	* ARC HS toolchain now includes sysroot for -mcpu=hs38_linux.
	* New documentation site.

* Toolchain Build Scripts
	* Removed obsolete unsupported scripts.
	* macOS support.
	* Import documentation from wiki. Build it with Sphinx.
	* Added tcftool binary to toolchain for Windows and x86 Linux hosts.

* GCC
	* Update to version 6.3.0.

* Binutils
	* Update to version 2.28.

* OpenOCD
	* Support Secure MPU registers.


Major Changes in 2016.09 Release
================================

Toolchain and IDE Components Versions
-------------------------------------

* Binutils 2.27+ (upstream commit decf5bd and ARC patches)
* GCC 6.2.1 (upstream commit e061fbe and ARC patches)
* GDB 7.12 (upstream commit 5f8cf6c and ARC patches)
* newlib 2.4 (upstream commit e6413b0 and ARC patches)
* uclibc-ng 1.0.17 (plus few ARC patches)
* Eclipse Mars (4.5.1) with CDT 8.8.0
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

This release of GNU toolchain and IDE is supported by CGEN IPlib (TCF
generator) version 1.0.53 and later.

GNU IDE 2016.09 will be supported in next embARC OSP release, planned for
January 2017.


New Features and Enhancements
-----------------------------

* Toolchain build scripts
    * Use GNU FTP server to download GMP, MPFR and MPC, update to latest
      versions of those libraries and download .tar.xz files of GMP and MPFR.
* GCC
    * Support -fstack-protector and -fstack-protector-all.
    * Remove support for -mabi option. Now GCC always generates function calls
      compatible with MetaWare compiler.
    * Avoid unnecessary dependency of libgcc on newlib.
* GDB
    * Support multi-target GDB in ARC code. GDB for baremetal targets now can
      debug Linux targets as well.
* uClibc
    * Migrated to uClibc-ng
* IDE
    * Migrated to use DSF instead of obsolete CDT for debugging, which brings
      in multiple usability enhancements.
    * Updated to latest version of TerminalView plugins.
    * Detect if projects has been created with an older version of IDE and show
      user a warning that there could be compatibility issues.
    * Removed support for -mabi option that has been removed from ARC GCC.
* OpenOCD
    * Add support for DCCM version 4.
* CGEN
    * Removed formal dependency on CGEN repository - it wasn't used anyway.


Bugs Fixed in This Release (Summary)
------------------------------------

* Newlib
    * Fixed a bug in implementation for strcmp function for big endian -mcpu=em4
      targets.
* IDE
    * Changing linker options was breaking project building.


Major Changes in 2016.03 Release
================================

Toolchain and IDE Components Versions
-------------------------------------

* Binutils v2.26+ (upstream commit id 202ac19 with additional ARC patches)
* GCC v4.8.5
* GDB 7.10
* newlib v2.3
* uclibc (upstream commit 94340ce with backported patches from uClibc-ng)
* Eclipse Mars (4.5.1) with CDT 8.8.0
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

This release of GNU toolchain and IDE is supported by CGEN IPlib (TCF
generator) version 1.0.53.


New Features and Enhancements
-----------------------------

* Binutils
    * Binutils for ARC has been rewritten from the scratch, based on upstream
      release 2.26.
* GCC
    * New values for `-mcpu` option and new set of multilib libraries built for
      those processor configurations.
    * Support for text values of `-mmpy-option`, same as in hardware IP
      libraries.
    * Fixed runtime issues on 32-bit hosts.
* Eclipse IDE
    * Support for new GCC `-mcpu` option values.
    * If TCF is used, then options in GUI are now synchronized with it.
    * Now it is possible to select current working directory when using nSIM.
* OpenOCD
    * Added a separate configuration file for ARC EM Starter Kit v2.2, which
      requries reduced JTAG Frequency of 5 MHz, compared to 7.5 MHz that has
      been used for versions 2.0 and 2.1.
* Toolchain build scripts
    * Option `--cpu` now accepts different values that are supported by GCC as
      values for `-mcpu` option. List of supported values is dynamic and
      evaluated based on GCC configuration.
    * Support for building of native (self-hosting) Linux/uClibc toolchain.
    * New option of build-all.sh script:
	* `--native` - specifies whether script is building native
	  (self-hosting) toolchain. That affects location of header files and
	  standard library archvies. It is still required to pass `--host`
	  option to specify cross-toolchain to build native toolchain.


Bugs Fixed in This Release (Summary)
------------------------------------

* GCC
    * There was no multilib configuration without multiplier for ARC 700, EM
      and HS processors.
* Newlib
    * Fixed a bug in crt0.S file that was using optional ASR a,b,u6 instruction
      without checking if barrel shifter is enabled.
* Eclipse IDE
    * Path to standard headers was calculated improperly for big-endian
      projects.
    * Fixed an inconsistency where if toolchain is present both in the PATH and
      relatively to eclipse installation, compiler plugin would use one
      toolchain from ../bin to build project, but would use toolchain from the
      PATH to get information about standard headers.
* OpenOCD
    * OpenOCD didn't worked with HS36 in AXS103.
* Toolchain build scripts
    * XML files for Ashling Opella-XD GDBserver were broken for Windows systems.
    * Memory maps for AXS10x boards were broken - there was a link error when
      using them.


Major changes in 2015.12 release
================================

Toolchain and IDE Components Versions
-------------------------------------

* GCC v4.8.5
* Binutils v2.23
* newlib v2.3
* uclibc (upstream HEAD at the moment of release)
* GDB 7.10
* Eclipse Mars (4.5.1) with CDT 8.8.0
* OpenOCD 0.9+ upstream commit 30203b3d8b, with ARC support.

New Features and Enhancements
----------------------------------------------

* GCC
    * Source update to v4.8.5
    * New preprocessor defines for processor optional features, like -mnorm,
      -mll64, etc.
    * Fast interrupt (FIRQ) function attribute support
    * Naked function attribute support
* GDB
    * Updated to upstream 7.10 release.
* Pre-built binaries
    * Baremetal toolchain now contains additional set of libc/libstdc++ binaries
      compiled with optimization for code size. Can be selected by passing
      `--specs=nano.specs` to gcc.
    * Standard libraries in baremetal toolchain are now stripped of debug
      information, except for `.debug_frame` section.
    * Linux toolchain for ARC HS now contains sysroot for ARC 700. It is now
      possible to build ARC 700 application using ARC HS toolchain, by passing
      an option `--sysroot=$INSTALLDIR/arc-snps-linux-uclibc/sysroot-arc700` to
      arc-linux-gcc, where `$INSTALLDIR` is a path to toolchain installation
      folder. This is implemented for both little end big endian toolchains.
    * Toolchain binaries are linked dynamically
* Eclipse IDE
    * Removed redundant "hostname" text field from debugger configuration when
      locally started gdbserver are used.
    * ARC template projects have been reorganized. They are now grouped by
      target ARC development system.
    * Added validation for text fields in debugger configuration.
    * TCF support to build configurations
    * Debugger configuration UI now has a full support of Synopsys ARC
      development systems for OpenOCD
    * Reworked template projects for Synopsys ARC development systems
    * Updated processor option in compiler pluging to adhere to GCC in this
      release
* Newlib
    * Updated to upstream 2.3 release
    * Added support for newlib-nano
* OpenOCD
    * Support for the actionpoints. OpenOCD will automatically detect actions
      points in ARC EM and ARC HS targets. Hardware breakpoints are set via GDB
      command `hbreak`, while hardware watchpoints via GDB command `watch`.
* Toolchain build scripts
    * 2-stage build process for baremetal toolchain
    * Can now build libc and libstdc++ optimized for size along the "normal" set
      of libraries.
    * Support for Linux toolchains with multiple sysroots. Buildscripts
      themselves can build a toolchain with only one sysroot, however that
      arc-snps-linux-uclibc/sysroot folder may be now freely used with other
      toolchains. That wasn't possible with previous releases, because some
      libraries were outside of the sysroot.
    * New options of build-all.sh script:
	* `--[no-]elf32-gcc-stage1` - defines whether to build of stage 1
	  compiler for baremetal toolchain. Means that runnable ARC compiler
	  should be already in the PATH to build newlib. Disable first stage
	  compiler is needed for canadian cross builds. Default is
	  `--elf32-gcc-stage1`.
	* `--[no-]optsze-newlib` - defines whether to build newlib optimized for
	  code size. Default is `--optsize-newlib`.
	* `--[no-]optsze-libstdc++` - defines whether to build libstdc++
	  optimized for code size. Default is `--optsize-libstdc++`. This is
	  independent from newlib option, however nano.specs will be copied to
	  target toolchain installation only when `--optsize-newlib` is used.
	* `--[no-]elf32-strip-target-libs` - defines whether to string target
	  libraries of the debug symbols (except for .debug_frame section).
	  Default is off `--no-elf32-strip-target-libs`.


Bugs Fixed  in This Release (Summary)
----------------------------------------

* Pre-built binaries
    * Fixed broken shortcut to documentation folder in installer for Windows
    * Fixed a bug where uninstaller for Windows wouldn't remove some shortcuts
* Eclipse IDE
    * Fixed compatibility with Ashling Opella-XD gdbserver
    * Fixed an case where in C++ projects standard library functions were
      highlighted as unknown by Eclipse syntax checker.
    * Fix crash in IDE on Linux when connecting to target UART
    * Fixed: IDE template projects for C++ were not linking
    * Fixed: printf() is highlighted by Eclipse as an unknown function in C++
      project, but projects builds without error
* Newlib
    * Fixed an issue with string and memory routines using instructions which
      are not available for selected ARC processor configuration.
* OpenOCD
    * Fixed support of EM7DFPU image in EM Starter Kit 2.1: JTAG frequency was
      too high.
* Toolchain build scripts
    * Fixed an issue where custom baremetal toolchain built with -mnorm option
      wouldn't link C++ applications


Major changes in 2015.06 release
================================

Build process:
- Added NPTL Support (--nptl/--no-nptl options of build-all.sh). NPTL is now
  default threading library for Linux uClibc toolchain.
- Major change in toolchain build process - unified source tree is not used
  anymore. Options --unisrc/--no-unisrc removed.
- Added custom "configuration" files, that contain branches to be checked out.
  Option --checkout-config added.
- Added --host option to build-all.sh that allows to choose runtime host of
  toolchain build. That allows to do a Canadian cross build without modifying
  build scripts.
- Linux is now configured out of source tree.
- Error during PDF documentation build on RHEL 6
- Improve performance of branch checkout phase.
- It is now not required to copy `auto-host.h` file while doing Canadian
  cross-build for Windows - root bug in GCC has been fixed.
- Removed support for the old style uClibc "full" configurations, only defconfig
  is supported now.
- Removed option `--force`.
- Changed default Linux branch from 3.13 to 3.18.
- Added a new "TCF" wrapper for GCC. Script `arc-elf32-tcf-gcc` accepts `--tcf`
  option with path to TCF file, from which GCC options will be automatically
  extracted. Compatible TCF file is required (compatible TCF file have
  "gcc_compiler" section).

Release process:
- Extracted push-release.sh script from tag-release.sh.
- Makefile.release now automatically builds Linux IDE release tarball.
- Windows installer build script now automatically installs ARC plugins to
  vanilla Eclipse and creates installers after that.
- Changed naming convention of release tarballs to ensure consistent naming
  across different products: arc_gnu_{release}_{product}[_{os}_install].
- Automated process of OpenOCD building for release.
- Components in Windows installer can now be installed separately.

DejaGNU boards:
- Added DejaGNU board for OpenOCD.
- Fix numerous issues with nSIM-GDB DejaGNU board

