Skip to content

Commit a9af06e

Browse files
Add --relax linker option
This is currently automatically added by arduino-builder/arduino-cli, but it should really be made explicit in the platform definition. This allows removing it from arduino-cli later, see arduino/arduino-cli#639 This option tells the linker to replace "call" instructions by "rcall" instructions where possible. This option was only automatically added for the atmega2560, but it is actually useful for any ATmega with > 8K flash (and a no-op for boards with <= 8K flash), so it can be added to the commandline unconditionally. This was tested on a Uno board (which saves a few bytes on the empty sketch) and an Arduino NG with atmega8, which also accepts the option but as expected it does not make a difference in sketch size. Because this option is added at the end, it does not conflict with the automatically added option (the linker commandline just gets `-Wl,--relax,--relax` which works fine.
1 parent 0f3d4da commit a9af06e

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

Diff for: platform.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ compiler.warning_flags.all=-Wall -Wextra
2121
compiler.path={runtime.tools.avr-gcc.path}/bin/
2222
compiler.c.cmd=avr-gcc
2323
compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects
24-
compiler.c.elf.flags={compiler.warning_flags} -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections
24+
compiler.c.elf.flags={compiler.warning_flags} -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -Wl,--relax
2525
compiler.c.elf.cmd=avr-gcc
2626
compiler.S.flags=-c -g -x assembler-with-cpp -flto -MMD
2727
compiler.cpp.cmd=avr-g++

0 commit comments

Comments
 (0)