diff options
-rw-r--r-- | apps/plugins/Makefile | 2 | ||||
-rw-r--r-- | apps/plugins/lib/Makefile | 5 | ||||
-rw-r--r-- | apps/plugins/plugin.lds | 17 |
3 files changed, 16 insertions, 8 deletions
diff --git a/apps/plugins/Makefile b/apps/plugins/Makefile index a59e33f5c6..1f1c309bd2 100644 --- a/apps/plugins/Makefile +++ b/apps/plugins/Makefile @@ -54,7 +54,7 @@ ifndef SIMVER $(OBJDIR)/%.elf: $(OBJDIR)/%.o $(LINKFILE) $(BUILDDIR)/libplugin.a $(SILENT)(file=`basename $@`; \ echo "LD $$file"; \ - $(CC) $(GCCOPTS) -O -nostdlib -o $@ $< -L$(BUILDDIR) $(CODECLIBS) -lplugin -lgcc -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/$*.map) + $(CC) $(GCCOPTS) -O -nostdlib -o $@ $< -L$(BUILDDIR) $(CODECLIBS) -lplugin -lgcc -T$(LINKFILE) -Wl,--gc-sections -Wl,-Map,$(OBJDIR)/$*.map) $(OBJDIR)/%.rock : $(OBJDIR)/%.elf @echo "OBJCOPY "`basename $@` diff --git a/apps/plugins/lib/Makefile b/apps/plugins/lib/Makefile index 21dea571ae..7eddccddc5 100644 --- a/apps/plugins/lib/Makefile +++ b/apps/plugins/lib/Makefile @@ -20,6 +20,11 @@ endif CFLAGS = $(GCCOPTS) \ $(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE} -DPLUGIN +# Sectioned compilation for target +ifndef SIMVER + CFLAGS += -ffunction-sections -fdata-sections +endif + # This sets up 'SRC' based on the files mentioned in SOURCES include $(TOOLSDIR)/makesrc.inc diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds index 42f56e58bf..bf1057e332 100644 --- a/apps/plugins/plugin.lds +++ b/apps/plugins/plugin.lds @@ -51,12 +51,12 @@ MEMORY SECTIONS { .text : { - *(.entry) - *(.text) + KEEP(*(.entry)) + *(.text*) } > PLUGIN_RAM .data : { - *(.data) + *(.data*) } > PLUGIN_RAM /DISCARD/ : { @@ -64,13 +64,11 @@ SECTIONS } .bss : { - *(.bss) + *(.bss*) } > PLUGIN_RAM .rodata : { - *(.rodata) - *(.rodata.str1.1) - *(.rodata.str1.4) + *(.rodata*) . = ALIGN(0x4); #ifdef ARCH_IRIVER iramcopy = .; @@ -86,4 +84,9 @@ SECTIONS iramend = .; } > PLUGIN_IRAM #endif + /* Special trick to avoid a linker error when no other sections are + left after garbage collection (plugin not for this platform) */ + .comment 0 : { + KEEP(*(.comment)) + } } |