diff --git a/.gitmodules b/.gitmodules index 50d3533ab..38ff0db82 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "extcores/litepcie_phy_wrappers"] path = extcores/litepcie_phy_wrappers url = https://github.com/enjoy-digital/litepcie_phy_wrappers +[submodule "software/unwinder"] + path = software/unwinder + url = https://github.com/whitequark/libunwind diff --git a/software/libunwind/Makefile b/software/libunwind/Makefile new file mode 100644 index 000000000..f250db79d --- /dev/null +++ b/software/libunwind/Makefile @@ -0,0 +1,30 @@ +MSCDIR=../.. +include $(MSCDIR)/software/common.mak + +COMMONFLAGS+=-integrated-as \ + -I. -I$(MSCDIR)/software/include/dyld/ -I$(MSCDIR)/software/unwinder/include/ \ + -D__ELF__ -D__linux__ + +OBJECTS=UnwindRegistersSave.o UnwindRegistersRestore.o UnwindLevel1.o libunwind.o + +all: libunwind.a + +# pull in dependency info for *existing* .o files +-include $(OBJECTS:.o=.d) + +libunwind.a: $(OBJECTS) + $(AR) crs libunwind.a $(OBJECTS) + +%.o: $(MSCDIR)/software/unwinder/src/%.cpp + $(compilexx-dep) + +%.o: $(MSCDIR)/software/unwinder/src/%.c + $(compile-dep) + +%.o: $(MSCDIR)/software/unwinder/src/%.S + $(assemble) + +.PHONY: clean + +clean: + $(RM) $(OBJECTS) $(OBJECTS:.o=.ts) $(OBJECTS:.o=.d) libuwind.a .*~ *~ diff --git a/software/libunwind/__cxxabi_config.h b/software/libunwind/__cxxabi_config.h new file mode 100644 index 000000000..e69de29bb diff --git a/software/libunwind/strings.h b/software/libunwind/strings.h new file mode 100644 index 000000000..18f596f63 --- /dev/null +++ b/software/libunwind/strings.h @@ -0,0 +1,2 @@ +// This is some obsolete BSD crap that libunwind pulls in +// that's so old and useless it's not worth putting into libbase. diff --git a/software/unwinder b/software/unwinder new file mode 160000 index 000000000..7ce966d59 --- /dev/null +++ b/software/unwinder @@ -0,0 +1 @@ +Subproject commit 7ce966d59aa6c5a8b962dca43a34279b69bec597