summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2013-05-04 22:16:08 +0200
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2013-05-04 22:25:24 +0200
commit736c3780f1bbb3c52f4215c53c3484a4a75cd553 (patch)
tree6f3d99aaee715bc8fb6332554a5d2d6df78d2942
parent8a1cd81b3a0275c0353767bdd2042b3a62decff9 (diff)
downloadrockbox-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.make10
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,$<,$@)