From d0a147f5bbcd59a9f01b7bedcf7c4be92f059b35 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 26 Aug 2014 21:18:59 +1000 Subject: Patched the LUFA build system to work around a GCC code generation bug in newer toolchains when building for larger FLASH memory devices (thanks to demultiplexer) --- LUFA/Build/lufa_build.mk | 6 ++++++ LUFA/DoxygenPages/ChangeLog.txt | 2 ++ LUFA/StudioIntegration/lufa_toolchain.xml | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/LUFA/Build/lufa_build.mk b/LUFA/Build/lufa_build.mk index 1bdfa1d72..b9b144aee 100644 --- a/LUFA/Build/lufa_build.mk +++ b/LUFA/Build/lufa_build.mk @@ -199,6 +199,12 @@ ifeq ($(LINKER_RELAXATIONS), Y) BASE_CC_FLAGS += -mrelax endif +# This flag is required for bootloaders as GCC will emit invalid jump table +# assembly code for devices with large amounts of flash; the jump table target +# is extracted from FLASH without using the correct ELPM instruction, resulting +# in a pseudo-random jump target. +BASE_CC_FLAGS += -fno-jump-tables + # Additional language specific compiler flags BASE_C_FLAGS := -x c -O$(OPTIMIZATION) -std=$(C_STANDARD) -Wstrict-prototypes BASE_CPP_FLAGS := -x c++ -O$(OPTIMIZATION) -std=$(CPP_STANDARD) diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt index 78d3abdcc..3eab8b0a4 100644 --- a/LUFA/DoxygenPages/ChangeLog.txt +++ b/LUFA/DoxygenPages/ChangeLog.txt @@ -21,6 +21,8 @@ * - Fixed possible infinite loop in the control endpoint stream write function (thanks to Clayton Knight) * - Fixed missing HID report ID prefix on HID class driver GetReport request responses (thanks to Bert van Hall) * - Fixed incorrect XMEGA USB controller clock division factory for non-Full Speed operation (thanks to Bert van Hall) + * - Patched the LUFA build system to work around a GCC code generation bug in newer toolchains when building for larger + * FLASH memory devices (thanks to demultiplexer) * - Library Applications: * - Fixed spurious 0xFE USART byte sent in the USBtoSerial project when the baud rate is changed (thanks to Carl Kjeldsen) * - Fixed blocking USART reads causing low throughput on slow baud rates in the USBtoSerial project (thanks to Nevada Smith) diff --git a/LUFA/StudioIntegration/lufa_toolchain.xml b/LUFA/StudioIntegration/lufa_toolchain.xml index 04863cf83..031c8a2be 100644 --- a/LUFA/StudioIntegration/lufa_toolchain.xml +++ b/LUFA/StudioIntegration/lufa_toolchain.xml @@ -20,7 +20,7 @@ - + -- cgit v1.2.3