summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2012-01-25 09:57:59 +0100
committerMarcin Bukat <marcin.bukat@gmail.com>2012-02-22 08:33:26 +0100
commitb4eab599513324dcaffa4c5693345ae11f3f9725 (patch)
tree58d66298269d2cec58102724565b573f250b5153 /tools
parent680c6fcde1eabb45dd12c59718d708b2cda61f6a (diff)
downloadrockbox-b4eab599513324dcaffa4c5693345ae11f3f9725.zip
rockbox-b4eab599513324dcaffa4c5693345ae11f3f9725.tar.gz
rockbox-b4eab599513324dcaffa4c5693345ae11f3f9725.tar.bz2
rockbox-b4eab599513324dcaffa4c5693345ae11f3f9725.tar.xz
Arm stack unwinder
Simplified stack unwinder for ARM. This is port of http://www.mcternan.me.uk/ArmStackUnwinding/ backtrace() is called from UIE() on native targets and from panicf() on both native and ARM RaaA. Change-Id: I8e4b3c02490dd60b30aa372fe842d193b8929ce0
Diffstat (limited to 'tools')
-rw-r--r--tools/root.make28
1 files changed, 18 insertions, 10 deletions
diff --git a/tools/root.make b/tools/root.make
index 3cdee2c..7427906 100644
--- a/tools/root.make
+++ b/tools/root.make
@@ -78,6 +78,10 @@ ifndef APP_TYPE
endif
endif
+ifeq (arm,$(ARCH))
+ include $(ROOTDIR)/lib/unwarminder/unwarminder.make
+endif
+
ifneq (,$(findstring bootloader,$(APPSDIR)))
include $(APPSDIR)/bootloader.make
else ifneq (,$(findstring bootbox,$(APPSDIR)))
@@ -170,6 +174,12 @@ ifeq (,$(findstring bootloader,$(APPSDIR)))
OBJ += $(LANG_O)
+ifeq (arm,$(ARCH))
+ UNWARMINDER_LINK := -lunwarminder
+else
+ UNWARMINDER_LINK :=
+endif
+
ifndef APP_TYPE
## target build
@@ -185,8 +195,6 @@ else
LIBARMSUPPORT_LINK :=
endif
-
-
$(LINKRAM): $(RAMLDS) $(CONFIGFILE)
$(call PRINTS,PP $(@F))
$(call preprocess2file,$<,$@,-DLOADADDRESS=$(LOADADDRESS))
@@ -195,21 +203,21 @@ $(LINKROM): $(ROMLDS)
$(call PRINTS,PP $(@F))
$(call preprocess2file,$<,$@,-DLOADADDRESS=$(LOADADDRESS))
-$(BUILDDIR)/rockbox.elf : $$(OBJ) $$(FIRMLIB) $$(VOICESPEEXLIB) $$(SKINLIB) $$(LIBARMSUPPORT) $$(LINKRAM)
+$(BUILDDIR)/rockbox.elf : $$(OBJ) $$(FIRMLIB) $$(VOICESPEEXLIB) $$(SKINLIB) $$(LIBARMSUPPORT) $$(UNWARMINDER) $$(LINKRAM)
$(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \
-L$(BUILDDIR)/firmware -lfirmware \
-L$(BUILDDIR)/lib -lskin_parser $(LIBARMSUPPORT_LINK) \
- -L$(BUILDDIR)/apps/codecs $(VOICESPEEXLIB:lib%.a=-l%) \
- -lgcc $(BOOTBOXLDOPTS) $(GLOBAL_LDOPTS) \
- -T$(LINKRAM) -Wl,-Map,$(BUILDDIR)/rockbox.map
+ $(UNWARMINDER_LINK) -L$(BUILDDIR)/apps/codecs \
+ $(VOICESPEEXLIB:lib%.a=-l%) -lgcc $(BOOTBOXLDOPTS) \
+ $(GLOBAL_LDOPTS) -T$(LINKRAM) -Wl,-Map,$(BUILDDIR)/rockbox.map
-$(BUILDDIR)/rombox.elf : $$(OBJ) $$(FIRMLIB) $$(VOICESPEEXLIB) $$(SKINLIB) $$(LIBARMSUPPORT) $$(LINKROM)
+$(BUILDDIR)/rombox.elf : $$(OBJ) $$(FIRMLIB) $$(VOICESPEEXLIB) $$(SKINLIB) $$(LIBARMSUPPORT) $$(UNWARMINDER) $$(LINKROM)
$(call PRINTS,LD $(@F))$(CC) $(GCCOPTS) -Os -nostdlib -o $@ $(OBJ) \
-L$(BUILDDIR)/firmware -lfirmware \
-L$(BUILDDIR)/lib -lskin_parser $(LIBARMSUPPORT_LINK) \
- -L$(BUILDDIR)/apps/codecs $(VOICESPEEXLIB:lib%.a=-l%) \
- -lgcc $(GLOBAL_LDOPTS) \
- -T$(LINKROM) -Wl,-Map,$(BUILDDIR)/rombox.map
+ $(UNWARMINDER_LINK) -L$(BUILDDIR)/apps/codecs \
+ $(VOICESPEEXLIB:lib%.a=-l%) -lgcc $(GLOBAL_LDOPTS) \
+ -T$(LINKROM) -Wl,-Map,$(BUILDDIR)/rombox.map
$(BUILDDIR)/rockbox.bin : $(BUILDDIR)/rockbox.elf
$(call PRINTS,OC $(@F))$(OC) $(if $(filter yes, $(USE_ELF)), -S -x, -O binary) $< $@