diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2013-05-04 22:16:08 +0200 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2013-05-04 22:25:24 +0200 |
commit | 736c3780f1bbb3c52f4215c53c3484a4a75cd553 (patch) | |
tree | 6f3d99aaee715bc8fb6332554a5d2d6df78d2942 | |
parent | 8a1cd81b3a0275c0353767bdd2042b3a62decff9 (diff) | |
download | rockbox-736c3780f1bbb3c52f4215c53c3484a4a75cd553.tar.gz rockbox-736c3780f1bbb3c52f4215c53c3484a4a75cd553.zip |
Change the order of global linker options and -T.
95e23de made -Wl,--gc-sections appear after -T by combining it with the global
linker options. Moving the global linker options in front of -T seems to fix
the crash observed on mini2g after that change -- as it seems the linker
behaves differently if --gc-sections is passed after -T.
Fixes FS#12857.
Change-Id: Id64dc6b91726760d75a1a0cd85bb7c06208d2f45
-rw-r--r-- | tools/root.make | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/tools/root.make b/tools/root.make index 6d623595fa..9e8513ba48 100644 --- a/tools/root.make +++ b/tools/root.make | |||
@@ -214,21 +214,23 @@ $(LINKROM): $(ROMLDS) | |||
214 | $(call PRINTS,PP $(@F)) | 214 | $(call PRINTS,PP $(@F)) |
215 | $(call preprocess2file,$<,$@,-DLOADADDRESS=$(LOADADDRESS)) | 215 | $(call preprocess2file,$<,$@,-DLOADADDRESS=$(LOADADDRESS)) |
216 | 216 | ||
217 | # Note: make sure -Wl,--gc-sections comes before -T in the linker options. | ||
218 | # Having the latter first caused crashes on (at least) mini2g. | ||
217 | $(BUILDDIR)/rockbox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $$(LINKRAM) | 219 | $(BUILDDIR)/rockbox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $$(LINKRAM) |
218 | $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \ | 220 | $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \ |
219 | -L$(BUILDDIR)/firmware -lfirmware \ | 221 | -L$(BUILDDIR)/firmware -lfirmware \ |
220 | -L$(RBCODEC_BLD)/codecs $(call a2lnk, $(VOICESPEEXLIB)) \ | 222 | -L$(RBCODEC_BLD)/codecs $(call a2lnk, $(VOICESPEEXLIB)) \ |
221 | -L$(BUILDDIR)/lib $(call a2lnk, $(CORE_LIBS)) \ | 223 | -L$(BUILDDIR)/lib $(call a2lnk, $(CORE_LIBS)) \ |
222 | -lgcc -T$(LINKRAM) \ | 224 | -lgcc $(CORE_LDOPTS) -T$(LINKRAM) \ |
223 | $(CORE_LDOPTS) -Wl,-Map,$(BUILDDIR)/rockbox.map | 225 | -Wl,-Map,$(BUILDDIR)/rockbox.map |
224 | 226 | ||
225 | $(BUILDDIR)/rombox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $$(LINKROM) | 227 | $(BUILDDIR)/rombox.elf : $$(OBJ) $(FIRMLIB) $(VOICESPEEXLIB) $(CORE_LIBS) $$(LINKROM) |
226 | $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \ | 228 | $(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \ |
227 | -L$(BUILDDIR)/firmware -lfirmware \ | 229 | -L$(BUILDDIR)/firmware -lfirmware \ |
228 | -L$(RBCODEC_BLD)/codecs $(call a2lnk, $(VOICESPEEXLIB)) \ | 230 | -L$(RBCODEC_BLD)/codecs $(call a2lnk, $(VOICESPEEXLIB)) \ |
229 | -L$(BUILDDIR)/lib $(call a2lnk, $(CORE_LIBS)) \ | 231 | -L$(BUILDDIR)/lib $(call a2lnk, $(CORE_LIBS)) \ |
230 | -lgcc -T$(LINKROM) \ | 232 | -lgcc $(CORE_LDOPTS) -T$(LINKROM) \ |
231 | $(CORE_LDOPTS) -Wl,-Map,$(BUILDDIR)/rombox.map | 233 | -Wl,-Map,$(BUILDDIR)/rombox.map |
232 | 234 | ||
233 | $(BUILDDIR)/rockbox.bin : $(BUILDDIR)/rockbox.elf | 235 | $(BUILDDIR)/rockbox.bin : $(BUILDDIR)/rockbox.elf |
234 | $(call PRINTS,OC $(@F))$(call objcopy,$<,$@) | 236 | $(call PRINTS,OC $(@F))$(call objcopy,$<,$@) |