]> git.ipfire.org Git - people/ms/ipfire-3.x.git/commitdiff
libunwind: New package.
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 27 Dec 2012 23:48:49 +0000 (00:48 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 27 Dec 2012 23:48:49 +0000 (00:48 +0100)
An unwinding library.

libunwind/libunwind.nm [new file with mode: 0644]
libunwind/patches/libunwind-arm-register-rename.patch [new file with mode: 0644]
libunwind/patches/libunwind-disable-setjmp.patch [new file with mode: 0644]

diff --git a/libunwind/libunwind.nm b/libunwind/libunwind.nm
new file mode 100644 (file)
index 0000000..eb8dbc6
--- /dev/null
@@ -0,0 +1,62 @@
+###############################################################################
+# IPFire.org    - An Open Source Firewall Solution                            #
+# Copyright (C) - IPFire Development Team <info@ipfire.org>                   #
+###############################################################################
+
+name       = libunwind
+version    = 1.0.1
+release    = 1
+
+groups     = Development/Debuggers
+url        = http://savannah.nongnu.org/projects/libunwind
+license    = BSD
+summary    = An unwinding library.
+
+description
+       Libunwind provides a C ABI to determine the call-chain of a program.
+end
+
+source_dl  = http://download.savannah.gnu.org/releases/libunwind/
+
+build
+       requires
+               autoconf
+               automake
+               libtool
+       end
+
+       prepare_cmds
+               aclocal
+               libtoolize --force
+               autoheader
+               automake --add-missing
+               autoconf
+       end
+
+       configure_options += \
+               --enable-static \
+               --enable-shared
+
+       keep_libraries = %{libdir}/libunwind-ptrace.a
+
+       # Does not work very well.
+       #test
+       #       make check
+       #end
+
+       install_cmds
+               rm -vf %{BUILDROOT}%{libdir}/libunwind-ptrace.so*
+       end
+end
+
+packages
+       package %{name}
+
+       package %{name}-devel
+               template DEVEL
+       end
+
+       package %{name}-debuginfo
+               template DEBUGINFO
+       end
+end
diff --git a/libunwind/patches/libunwind-arm-register-rename.patch b/libunwind/patches/libunwind-arm-register-rename.patch
new file mode 100644 (file)
index 0000000..9d7b91c
--- /dev/null
@@ -0,0 +1,59 @@
+--- libunwind-1.0.1/src/arm/init.h.orig        2012-02-15 18:33:08.000000000 -0500
++++ libunwind-1.0.1/src/arm/init.h     2012-02-15 18:29:19.000000000 -0500
+@@ -29,26 +29,26 @@
+ {
+   int ret, i;
+-  c->dwarf.loc[R0] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R0);
+-  c->dwarf.loc[R1] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R1);
+-  c->dwarf.loc[R2] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R2);
+-  c->dwarf.loc[R3] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R3);
+-  c->dwarf.loc[R4] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R4);
+-  c->dwarf.loc[R5] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R5);
+-  c->dwarf.loc[R6] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R6);
+-  c->dwarf.loc[R7] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R7);
+-  c->dwarf.loc[R8] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R8);
+-  c->dwarf.loc[R9] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R9);
+-  c->dwarf.loc[R10] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R10);
+-  c->dwarf.loc[R11] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R11);
+-  c->dwarf.loc[R12] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R12);
+-  c->dwarf.loc[R13] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R13);
+-  c->dwarf.loc[R14] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R14);
+-  c->dwarf.loc[R15] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R15);
+-  for (i = R15 + 1; i < DWARF_NUM_PRESERVED_REGS; ++i)
++  c->dwarf.loc[REG_R0] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R0);
++  c->dwarf.loc[REG_R1] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R1);
++  c->dwarf.loc[REG_R2] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R2);
++  c->dwarf.loc[REG_R3] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R3);
++  c->dwarf.loc[REG_R4] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R4);
++  c->dwarf.loc[REG_R5] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R5);
++  c->dwarf.loc[REG_R6] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R6);
++  c->dwarf.loc[REG_R7] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R7);
++  c->dwarf.loc[REG_R8] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R8);
++  c->dwarf.loc[REG_R9] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R9);
++  c->dwarf.loc[REG_R10] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R10);
++  c->dwarf.loc[REG_R11] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R11);
++  c->dwarf.loc[REG_R12] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R12);
++  c->dwarf.loc[REG_R13] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R13);
++  c->dwarf.loc[REG_R14] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R14);
++  c->dwarf.loc[REG_R15] = DWARF_REG_LOC (&c->dwarf, UNW_ARM_R15);
++  for (i = REG_R15 + 1; i < DWARF_NUM_PRESERVED_REGS; ++i)
+     c->dwarf.loc[i] = DWARF_NULL_LOC;
+-  ret = dwarf_get (&c->dwarf, c->dwarf.loc[R15], &c->dwarf.ip);
++  ret = dwarf_get (&c->dwarf, c->dwarf.loc[REG_R15], &c->dwarf.ip);
+   if (ret < 0)
+     return ret;
+--- libunwind-1.0.1/src/arm/Gglobal.c.orig     2012-02-15 18:33:21.000000000 -0500
++++ libunwind-1.0.1/src/arm/Gglobal.c  2012-02-15 18:28:27.000000000 -0500
+@@ -37,7 +37,8 @@
+ HIDDEN uint8_t dwarf_to_unw_regnum_map[16] =
+   {
+-    R0, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15
++    REG_R0, REG_R1, REG_R2, REG_R3, REG_R4, REG_R5, REG_R6, REG_R7,
++    REG_R8, REG_R9, REG_R10, REG_R11, REG_R12, REG_R13, REG_R14, REG_R15
+   };
+ HIDDEN void
diff --git a/libunwind/patches/libunwind-disable-setjmp.patch b/libunwind/patches/libunwind-disable-setjmp.patch
new file mode 100644 (file)
index 0000000..ef68f64
--- /dev/null
@@ -0,0 +1,170 @@
+At least x86_64 version cannot work, src/setjmp/setjmp.c and
+src/setjmp/sigsetjmp.c are not even compiled, src/x86_64/longjmp.S does not
+match src/setjmp/setjmp.c + include/tdep-x86_64/jmpbuf.h .
+
+google-perftools link only with libunwind.so.7 .
+
+--- libunwind-1.0.1-orig/src/Makefile.am       2011-09-11 05:06:41.000000000 +0200
++++ libunwind-1.0.1/src/Makefile.am    2011-09-15 13:55:42.000000000 +0200
+@@ -1,5 +1,5 @@
+ SOVERSION=8:0:0               # See comments at end of file.
+-SETJMP_SO_VERSION=0:0:0
++#SETJMP_SO_VERSION=0:0:0
+ #
+ # Don't link with start-files since we don't use any constructors/destructors:
+ #
+@@ -27,8 +27,8 @@ libunwind_ptrace_a_SOURCES =                                           \
+ noinst_HEADERS += ptrace/_UPT_internal.h
+ ### libunwind-setjmp:
+-libunwind_setjmp_la_LDFLAGS           = $(COMMON_SO_LDFLAGS)               \
+-                                        -version-info $(SETJMP_SO_VERSION)
++#libunwind_setjmp_la_LDFLAGS          = $(COMMON_SO_LDFLAGS)               \
++#                                       -version-info $(SETJMP_SO_VERSION)
+ if USE_ELF32
+ LIBUNWIND_ELF = libunwind-elf32.la
+@@ -40,12 +40,12 @@ if USE_ELFXX
+ LIBUNWIND_ELF = libunwind-elfxx.la
+ endif
+-libunwind_setjmp_la_LIBADD            = $(LIBUNWIND_ELF)      \
+-                                        libunwind-$(arch).la  \
+-                                        libunwind.la -lc
+-libunwind_setjmp_la_SOURCES           = setjmp/longjmp.c      \
+-                                        setjmp/siglongjmp.c
+-noinst_HEADERS                                += setjmp/setjmp_i.h
++#libunwind_setjmp_la_LIBADD           = $(LIBUNWIND_ELF)      \
++#                                       libunwind-$(arch).la  \
++#                                       libunwind.la -lc
++#libunwind_setjmp_la_SOURCES          = setjmp/longjmp.c      \
++#                                       setjmp/siglongjmp.c
++#noinst_HEADERS                               += setjmp/setjmp_i.h
+ ### libunwind:
+ libunwind_la_LIBADD =
+@@ -373,7 +373,7 @@ if ARCH_ARM
+ if !REMOTE_ONLY
+  libunwind_arm_la_LIBADD += libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES += arm/siglongjmp.S
++# libunwind_setjmp_la_SOURCES += arm/siglongjmp.S
+ else
+ if ARCH_IA64
+  ia64_mk_Gcursor_i_SOURCES = ia64/mk_Gcursor_i.c
+@@ -393,8 +393,8 @@ Lcursor_i.h: ia64/mk_Lcursor_i
+ if !REMOTE_ONLY
+  libunwind_ia64_la_LIBADD += libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES += ia64/setjmp.S  ia64/sigsetjmp.S  \
+-                              ia64/longjmp.S ia64/siglongjmp.S
++# libunwind_setjmp_la_SOURCES += ia64/setjmp.S  ia64/sigsetjmp.S  \
++#                             ia64/longjmp.S ia64/siglongjmp.S
+ else
+ if ARCH_HPPA
+  lib_LTLIBRARIES += libunwind-hppa.la
+@@ -406,7 +406,7 @@ if ARCH_HPPA
+ if !REMOTE_ONLY
+  libunwind_hppa_la_LIBADD += libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES += hppa/siglongjmp.S
++# libunwind_setjmp_la_SOURCES += hppa/siglongjmp.S
+ else
+ if ARCH_MIPS
+  lib_LTLIBRARIES += libunwind-mips.la
+@@ -418,7 +418,7 @@ if ARCH_MIPS
+ if !REMOTE_ONLY
+  libunwind_mips_la_LIBADD += libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES += mips/siglongjmp.S
++# libunwind_setjmp_la_SOURCES += mips/siglongjmp.S
+ else
+ if ARCH_X86
+  lib_LTLIBRARIES += libunwind-x86.la
+@@ -430,7 +430,7 @@ if ARCH_X86
+ if !REMOTE_ONLY
+  libunwind_x86_la_LIBADD += libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES += x86/longjmp.S x86/siglongjmp.S
++# libunwind_setjmp_la_SOURCES += x86/longjmp.S x86/siglongjmp.S
+ else
+ if ARCH_X86_64
+  lib_LTLIBRARIES += libunwind-x86_64.la
+@@ -442,7 +442,7 @@ if ARCH_X86_64
+ if !REMOTE_ONLY
+  libunwind_x86_64_la_LIBADD += libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES += x86_64/longjmp.S x86_64/siglongjmp.S
++# libunwind_setjmp_la_SOURCES += x86_64/longjmp.S x86_64/siglongjmp.S
+ else
+ if ARCH_PPC32
+  lib_LTLIBRARIES += libunwind-ppc32.la
+@@ -454,7 +454,7 @@ if ARCH_PPC32
+ if !REMOTE_ONLY
+  libunwind_ppc32_la_LIBADD += libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S
++# libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S
+ else
+ if ARCH_PPC64
+  lib_LTLIBRARIES += libunwind-ppc64.la
+@@ -466,7 +466,7 @@ if ARCH_PPC64
+ if !REMOTE_ONLY
+  libunwind_ppc64_la_LIBADD += libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S
++# libunwind_setjmp_la_SOURCES += ppc/longjmp.S ppc/siglongjmp.S
+ endif # ARCH_PPC64
+ endif # ARCH_PPC32
+@@ -480,7 +480,7 @@ endif # ARCH_ARM
+ # libunwind-setjmp depends on libunwind-$(arch). Therefore must be added
+ # at the end.
+ if !REMOTE_ONLY
+-lib_LTLIBRARIES += libunwind-setjmp.la
++#lib_LTLIBRARIES += libunwind-setjmp.la
+ endif
+ #
+--- libunwind-1.0.1-orig/tests/Makefile.am     2011-09-11 05:06:41.000000000 +0200
++++ libunwind-1.0.1/tests/Makefile.am  2011-09-15 13:56:16.000000000 +0200
+@@ -27,7 +27,7 @@ if ARCH_IA64
+                       Gia64-test-nat Lia64-test-nat                   \
+                       Gia64-test-rbs Lia64-test-rbs                   \
+                       Gia64-test-readonly Lia64-test-readonly         \
+-                      ia64-test-setjmp ia64-test-sig
++                      ia64-test-sig
+ else
+ if ARCH_PPC64
+ if USE_ALTIVEC
+@@ -44,8 +44,9 @@ endif #ARCH_IA64
+                       Gtest-dyn1 Ltest-dyn1                            \
+                       Gtest-trace Ltest-trace                          \
+                       test-async-sig test-flush-cache test-init-remote \
+-                      test-mem test-setjmp test-ptrace                 \
++                      test-mem test-ptrace             \
+                       Ltest-nomalloc Ltest-nocalloc rs-race
++# test-setjmp
+  noinst_PROGRAMS_cdep = forker mapper test-ptrace-misc                         \
+                       Gperf-simple Lperf-simple
+@@ -123,8 +124,8 @@ if USE_ELFXX
+ LIBUNWIND_ELF = $(top_builddir)/src/libunwind-elfxx.la
+ endif
+-LIBUNWIND_setjmp = $(top_builddir)/src/libunwind-setjmp.la    \
+-                 $(LIBUNWIND_ELF) $(LIBUNWIND)
++#LIBUNWIND_setjmp = $(top_builddir)/src/libunwind-setjmp.la   \
++#                $(LIBUNWIND_ELF) $(LIBUNWIND)
+ test_async_sig_LDADD = $(LIBUNWIND_local) -lpthread
+ test_flush_cache_LDADD = $(LIBUNWIND_local)
+@@ -159,6 +160,6 @@ Lperf_simple_LDADD = $(LIBUNWIND_local)
+ Ltest_trace_LDADD = $(LIBUNWIND_local)
+ Lperf_trace_LDADD = $(LIBUNWIND_local)
+-test_setjmp_LDADD = $(LIBUNWIND_setjmp)
+-ia64_test_setjmp_LDADD = $(LIBUNWIND_setjmp)
++#test_setjmp_LDADD = $(LIBUNWIND_setjmp)
++#ia64_test_setjmp_LDADD = $(LIBUNWIND_setjmp)