diff --git a/.gitignore b/.gitignore
index b852e8742bf..d767249cd75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,7 @@ build/*.tar.bz2
build/windows/work/
build/windows/*.zip
build/windows/*.tgz
+build/windows/*.tar.bz2
build/windows/libastylej*
build/windows/arduino-*.zip
build/windows/dist/*.tar.gz
diff --git a/build/build.xml b/build/build.xml
index 53c9aaf591b..dc297162e83 100644
--- a/build/build.xml
+++ b/build/build.xml
@@ -91,6 +91,8 @@
+
+
@@ -490,21 +492,16 @@
-
-
-
-
+
+
+
+
-
-
-
-
-
@@ -720,10 +717,10 @@
-
-
-
-
+
+
+
+
@@ -752,10 +749,10 @@
-
-
-
-
+
+
+
+
@@ -784,10 +781,10 @@
-
-
-
-
+
+
+
+
@@ -1072,10 +1069,10 @@
-
-
-
-
+
+
+
+
@@ -1164,8 +1161,7 @@
-
-
+
@@ -1195,17 +1191,6 @@
-
-
-
-
-
-
-
-
-
-
-
${BUILD_DATE}
diff --git a/build/linux/avr-gcc-4.8.1-arduino5-armhf-pc-linux-gnu-glibc2.13.tar.bz2.sha b/build/linux/avr-gcc-4.8.1-arduino5-armhf-pc-linux-gnu-glibc2.13.tar.bz2.sha
deleted file mode 100644
index 62a78b76735..00000000000
--- a/build/linux/avr-gcc-4.8.1-arduino5-armhf-pc-linux-gnu-glibc2.13.tar.bz2.sha
+++ /dev/null
@@ -1 +0,0 @@
-220662c5411e34dd1e16c181f883b6b77824a942
diff --git a/build/linux/avr-gcc-4.8.1-arduino5-i686-pc-linux-gnu.tar.bz2.sha b/build/linux/avr-gcc-4.8.1-arduino5-i686-pc-linux-gnu.tar.bz2.sha
deleted file mode 100644
index ba1b5c7e884..00000000000
--- a/build/linux/avr-gcc-4.8.1-arduino5-i686-pc-linux-gnu.tar.bz2.sha
+++ /dev/null
@@ -1 +0,0 @@
-fdd09172450c3970a55e1876d1fc112d0db626ac
diff --git a/build/linux/avr-gcc-4.8.1-arduino5-x86_64-pc-linux-gnu.tar.bz2.sha b/build/linux/avr-gcc-4.8.1-arduino5-x86_64-pc-linux-gnu.tar.bz2.sha
deleted file mode 100644
index 3c333ee784c..00000000000
--- a/build/linux/avr-gcc-4.8.1-arduino5-x86_64-pc-linux-gnu.tar.bz2.sha
+++ /dev/null
@@ -1 +0,0 @@
-0398e498559c42e45cb98ba13251da7e5b306e0c
diff --git a/build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino-armhf-pc-linux-gnu.tar.bz2.sha b/build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino-armhf-pc-linux-gnu.tar.bz2.sha
new file mode 100644
index 00000000000..409ec55d88c
--- /dev/null
+++ b/build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino-armhf-pc-linux-gnu.tar.bz2.sha
@@ -0,0 +1 @@
+9b6e398caf779bdac5e2666c1aac99b481b49490
diff --git a/build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino-i686-pc-linux-gnu.tar.bz2.sha b/build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino-i686-pc-linux-gnu.tar.bz2.sha
new file mode 100644
index 00000000000..8b6dfcf26bf
--- /dev/null
+++ b/build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino-i686-pc-linux-gnu.tar.bz2.sha
@@ -0,0 +1 @@
+4f20340c804da0218d6840983bbe6d84fb7e4b9a
diff --git a/build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino-x86_64-pc-linux-gnu.tar.bz2.sha b/build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino-x86_64-pc-linux-gnu.tar.bz2.sha
new file mode 100644
index 00000000000..89b39207d42
--- /dev/null
+++ b/build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino-x86_64-pc-linux-gnu.tar.bz2.sha
@@ -0,0 +1 @@
+40825882ad0a725c3d500b8fa7ef4c8a72ed7613
diff --git a/build/linux/avrdude-6.0.1-arduino5-armhf-pc-linux-gnu-glibc2.13.tar.bz2.sha b/build/linux/avrdude-6.0.1-arduino5-armhf-pc-linux-gnu-glibc2.13.tar.bz2.sha
deleted file mode 100644
index 6d87ebcafe9..00000000000
--- a/build/linux/avrdude-6.0.1-arduino5-armhf-pc-linux-gnu-glibc2.13.tar.bz2.sha
+++ /dev/null
@@ -1 +0,0 @@
-b5968416647e79f5c395bf2a9ba000127dacc9da
diff --git a/build/linux/avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2.sha b/build/linux/avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2.sha
deleted file mode 100644
index 0bc23f68811..00000000000
--- a/build/linux/avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2.sha
+++ /dev/null
@@ -1 +0,0 @@
-cf859c679713cae2f1b9089d797d211dd84fe658
diff --git a/build/linux/avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2.sha b/build/linux/avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2.sha
deleted file mode 100644
index e4b0302e0fa..00000000000
--- a/build/linux/avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2.sha
+++ /dev/null
@@ -1 +0,0 @@
-cfc52036f532c3a7050f6d4ec7645d060800aa39
diff --git a/build/linux/avrdude-6.3.0-arduino2-armhf-pc-linux-gnu.tar.bz2.sha b/build/linux/avrdude-6.3.0-arduino2-armhf-pc-linux-gnu.tar.bz2.sha
new file mode 100644
index 00000000000..389ab1832ad
--- /dev/null
+++ b/build/linux/avrdude-6.3.0-arduino2-armhf-pc-linux-gnu.tar.bz2.sha
@@ -0,0 +1 @@
+a074c17e2013942e3e081fe03875c9d5701a0922
diff --git a/build/linux/avrdude-6.3.0-arduino2-i686-pc-linux-gnu.tar.bz2.sha b/build/linux/avrdude-6.3.0-arduino2-i686-pc-linux-gnu.tar.bz2.sha
new file mode 100644
index 00000000000..844fb6a27cc
--- /dev/null
+++ b/build/linux/avrdude-6.3.0-arduino2-i686-pc-linux-gnu.tar.bz2.sha
@@ -0,0 +1 @@
+e9ce49f5e5c7d0d2eabd9405ca6160b70cd52645
diff --git a/build/linux/avrdude-6.3.0-arduino2-x86_64-pc-linux-gnu.tar.bz2.sha b/build/linux/avrdude-6.3.0-arduino2-x86_64-pc-linux-gnu.tar.bz2.sha
new file mode 100644
index 00000000000..1104a38421e
--- /dev/null
+++ b/build/linux/avrdude-6.3.0-arduino2-x86_64-pc-linux-gnu.tar.bz2.sha
@@ -0,0 +1 @@
+3ba4c2660f8a8c40ba3902ab8a158aa3e1b91764
diff --git a/build/macosx/avr-gcc-4.8.1-arduino5-i386-apple-darwin11.tar.bz2.sha b/build/macosx/avr-gcc-4.8.1-arduino5-i386-apple-darwin11.tar.bz2.sha
deleted file mode 100644
index a0ac6d486d0..00000000000
--- a/build/macosx/avr-gcc-4.8.1-arduino5-i386-apple-darwin11.tar.bz2.sha
+++ /dev/null
@@ -1 +0,0 @@
-1ea737a217e0dde0a338fff070cc3010669ab6f1
diff --git a/build/macosx/avr-gcc-4.9.2-atmel3.5.3-arduino-i386-apple-darwin11.tar.bz2.sha b/build/macosx/avr-gcc-4.9.2-atmel3.5.3-arduino-i386-apple-darwin11.tar.bz2.sha
new file mode 100644
index 00000000000..9d99dad4cef
--- /dev/null
+++ b/build/macosx/avr-gcc-4.9.2-atmel3.5.3-arduino-i386-apple-darwin11.tar.bz2.sha
@@ -0,0 +1 @@
+9c19956324bcee6818858489dd699949363934f7
diff --git a/build/macosx/avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2.sha b/build/macosx/avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2.sha
deleted file mode 100644
index 359455e692d..00000000000
--- a/build/macosx/avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2.sha
+++ /dev/null
@@ -1 +0,0 @@
-1eb447a6c11f374d71e91bf4c381380216f9a476
diff --git a/build/macosx/avrdude-6.0.1-arduino5-r2-i386-apple-darwin11.tar.bz2.sha b/build/macosx/avrdude-6.0.1-arduino5-r2-i386-apple-darwin11.tar.bz2.sha
deleted file mode 100644
index 3b1625eee60..00000000000
--- a/build/macosx/avrdude-6.0.1-arduino5-r2-i386-apple-darwin11.tar.bz2.sha
+++ /dev/null
@@ -1 +0,0 @@
-52afce6cbe1cc1021bca1234cf25b298350f97dd
diff --git a/build/macosx/avrdude-6.3.0-arduino2-i386-apple-darwin11.tar.bz2.sha b/build/macosx/avrdude-6.3.0-arduino2-i386-apple-darwin11.tar.bz2.sha
new file mode 100644
index 00000000000..edb160cf3ea
--- /dev/null
+++ b/build/macosx/avrdude-6.3.0-arduino2-i386-apple-darwin11.tar.bz2.sha
@@ -0,0 +1 @@
+39a1940fbb4a25af5316d9a6bde99b6a29585e37
diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt
index 2f53598521d..0715150eb72 100644
--- a/build/shared/revisions.txt
+++ b/build/shared/revisions.txt
@@ -12,6 +12,9 @@ ARDUINO 1.6.10
* Solved a bug that crashed the IDE with some exotic serial devices
[core]
+* avr: toolchain updated to latest Atmel release 3.5.3 http://distribute.atmel.no/tools/opensource/Atmel-AVR-GNU-Toolchain/3.5.3/
+ The updated tools are now binutils-2.26, gcc-4.9.2, avr-libc-2.0.0, gdb-7.8
+* avr: avrdude updated to version 6.3
* fixed a small bug that caused a compile error on some 3rd party derivatives boards based on Leonardo
* sam: added snprintf_P to avr/pgmspace.h stub. Thanks @jantje
* avr: Fix TX buffer being overwritten by multiple Wire.write(...) calls in slave mode. Thanks @kellerkindt
diff --git a/build/windows/avr-gcc-4.8.1-arduino5-i686-mingw32.zip.sha b/build/windows/avr-gcc-4.8.1-arduino5-i686-mingw32.zip.sha
deleted file mode 100644
index 34509a5aa5d..00000000000
--- a/build/windows/avr-gcc-4.8.1-arduino5-i686-mingw32.zip.sha
+++ /dev/null
@@ -1 +0,0 @@
-da0805de78417c51001d8f609ae7d8ef320425b9
diff --git a/build/windows/avr-gcc-4.9.2-atmel3.5.3-arduino-i686-mingw32.zip.sha b/build/windows/avr-gcc-4.9.2-atmel3.5.3-arduino-i686-mingw32.zip.sha
new file mode 100644
index 00000000000..c1651bb94ac
--- /dev/null
+++ b/build/windows/avr-gcc-4.9.2-atmel3.5.3-arduino-i686-mingw32.zip.sha
@@ -0,0 +1 @@
+ecc62d844aaf725eddd1093fb6526bc977a464a5
diff --git a/build/windows/avrdude-6.0.1-arduino5-i686-mingw32.zip.sha b/build/windows/avrdude-6.0.1-arduino5-i686-mingw32.zip.sha
deleted file mode 100644
index e55aa9d558b..00000000000
--- a/build/windows/avrdude-6.0.1-arduino5-i686-mingw32.zip.sha
+++ /dev/null
@@ -1 +0,0 @@
-bad246afeb0b9bcbe623a29cb204127f901102cf
diff --git a/build/windows/avrdude-6.3.0-arduino2-i686-w64-mingw32.zip.sha b/build/windows/avrdude-6.3.0-arduino2-i686-w64-mingw32.zip.sha
new file mode 100644
index 00000000000..9b9d3b373ff
--- /dev/null
+++ b/build/windows/avrdude-6.3.0-arduino2-i686-w64-mingw32.zip.sha
@@ -0,0 +1 @@
+5eaea443fd51515e1b51790a180b35e7f0949b30
diff --git a/hardware/arduino/avr/platform.txt b/hardware/arduino/avr/platform.txt
index 50778f1d14f..432650e4fbe 100644
--- a/hardware/arduino/avr/platform.txt
+++ b/hardware/arduino/avr/platform.txt
@@ -20,13 +20,13 @@ compiler.warning_flags.all=-Wall -Wextra
# Default "compiler.path" is correct, change only if you want to override the initial value
compiler.path={runtime.tools.avr-gcc.path}/bin/
compiler.c.cmd=avr-gcc
-compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD
-compiler.c.elf.flags={compiler.warning_flags} -Os -Wl,--gc-sections
+compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects
+compiler.c.elf.flags={compiler.warning_flags} -Os -Wl,--gc-sections -flto -fuse-linker-plugin
compiler.c.elf.cmd=avr-gcc
-compiler.S.flags=-c -g -x assembler-with-cpp
+compiler.S.flags=-c -g -x assembler-with-cpp -flto
compiler.cpp.cmd=avr-g++
-compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD
-compiler.ar.cmd=avr-ar
+compiler.cpp.flags=-c -g -Os {compiler.warning_flags} -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto
+compiler.ar.cmd=avr-gcc-ar
compiler.ar.flags=rcs
compiler.objcopy.cmd=avr-objcopy
compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0