summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-libs/libunwind/files')
-rw-r--r--sys-libs/libunwind/files/libunwind-0.99-disable-setjmp.patch213
-rw-r--r--sys-libs/libunwind/files/libunwind-0.99-implicit-declaration.patch17
-rw-r--r--sys-libs/libunwind/files/libunwind-1.0.1-disable-setjmp.patch37
-rw-r--r--sys-libs/libunwind/files/libunwind-1.0.1-ia64.patch133
-rw-r--r--sys-libs/libunwind/files/libunwind-1.1-lzma.patch63
5 files changed, 463 insertions, 0 deletions
diff --git a/sys-libs/libunwind/files/libunwind-0.99-disable-setjmp.patch b/sys-libs/libunwind/files/libunwind-0.99-disable-setjmp.patch
new file mode 100644
index 000000000000..698d2acff816
--- /dev/null
+++ b/sys-libs/libunwind/files/libunwind-0.99-disable-setjmp.patch
@@ -0,0 +1,213 @@
+http://cvs.fedoraproject.org/viewvc/rpms/libunwind/devel/libunwind-disable-setjmp.patch?revision=1.1&view=markup
+http://bugs.gentoo.org/show_bug.cgi?id=299344
+
+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 .
+
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -12,7 +12,7 @@ lib_LTLIBRARIES_cdep_setjmp =
+ else
+ LIBRARIES_cdep = libunwind-ptrace.a
+ lib_LTLIBRARIES_cdep = libunwind.la
+-lib_LTLIBRARIES_cdep_setjmp = libunwind-setjmp.la
++lib_LTLIBRARIES_cdep_setjmp = #libunwind-setjmp.la
+ endif
+
+ ### libunwind-ptrace:
+@@ -27,21 +27,21 @@ libunwind_ptrace_a_SOURCES = \
+ ptrace/_UPT_reg_offset.c ptrace/_UPT_resume.c
+
+ ### libunwind-setjmp:
+-libunwind_setjmp_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \
+- -version-info $(SETJMP_SO_VERSION)
+-libunwind_setjmp_la_LIBADD = libunwind-$(arch).la -lc
+-libunwind_setjmp_la_SOURCES_common = setjmp/setjmp_i.h \
+- setjmp/longjmp.c \
+- setjmp/siglongjmp.c
+-libunwind_setjmp_la_SOURCES_arm = arm/siglongjmp.S
+-libunwind_setjmp_la_SOURCES_ia64 = ia64/setjmp.S ia64/sigsetjmp.S \
+- ia64/longjmp.S ia64/siglongjmp.S
+-libunwind_setjmp_la_SOURCES_hppa = hppa/siglongjmp.S
+-libunwind_setjmp_la_SOURCES_mips = mips/siglongjmp.S
+-libunwind_setjmp_la_SOURCES_x86 = x86/longjmp.S x86/siglongjmp.S
+-libunwind_setjmp_la_SOURCES_x86_64 = x86_64/longjmp.S x86_64/siglongjmp.S
+-libunwind_setjmp_la_SOURCES_ppc64 = ppc/longjmp.S ppc/siglongjmp.S
+-libunwind_setjmp_la_SOURCES_ppc32 = ppc/longjmp.S ppc/siglongjmp.S
++#libunwind_setjmp_la_LDFLAGS = $(COMMON_SO_LDFLAGS) \
++# -version-info $(SETJMP_SO_VERSION)
++#libunwind_setjmp_la_LIBADD = libunwind-$(arch).la -lc
++#libunwind_setjmp_la_SOURCES_common = setjmp/setjmp_i.h \
++# setjmp/longjmp.c \
++# setjmp/siglongjmp.c
++#libunwind_setjmp_la_SOURCES_arm = arm/siglongjmp.S
++#libunwind_setjmp_la_SOURCES_ia64 = ia64/setjmp.S ia64/sigsetjmp.S \
++# ia64/longjmp.S ia64/siglongjmp.S
++#libunwind_setjmp_la_SOURCES_hppa = hppa/siglongjmp.S
++#libunwind_setjmp_la_SOURCES_mips = mips/siglongjmp.S
++#libunwind_setjmp_la_SOURCES_x86 = x86/longjmp.S x86/siglongjmp.S
++#libunwind_setjmp_la_SOURCES_x86_64 = x86_64/longjmp.S x86_64/siglongjmp.S
++#libunwind_setjmp_la_SOURCES_ppc64 = ppc/longjmp.S ppc/siglongjmp.S
++#libunwind_setjmp_la_SOURCES_ppc32 = ppc/longjmp.S ppc/siglongjmp.S
+
+ ### libunwind:
+
+@@ -359,8 +359,8 @@ if ARCH_ARM
+ if !REMOTE_ONLY
+ libunwind_arm_la_LIBADD = libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
+- $(libunwind_setjmp_la_SOURCES_arm)
++# libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
++# $(libunwind_setjmp_la_SOURCES_arm)
+ else
+ if ARCH_IA64
+ ia64_mk_Gcursor_i_SOURCES = ia64/mk_Gcursor_i.c
+@@ -378,8 +378,8 @@ Lcursor_i.h: ia64/mk_Lcursor_i
+ if !REMOTE_ONLY
+ libunwind_ia64_la_LIBADD = libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
+- $(libunwind_setjmp_la_SOURCES_ia64)
++# libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
++# $(libunwind_setjmp_la_SOURCES_ia64)
+ else
+ if ARCH_HPPA
+ lib_LTLIBRARIES_arch = libunwind-hppa.la
+@@ -389,8 +389,8 @@ if ARCH_HPPA
+ if !REMOTE_ONLY
+ libunwind_hppa_la_LIBADD = libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
+- $(libunwind_setjmp_la_SOURCES_hppa)
++# libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
++# $(libunwind_setjmp_la_SOURCES_hppa)
+ else
+ if ARCH_MIPS
+ lib_LTLIBRARIES_arch = libunwind-mips.la
+@@ -400,8 +400,8 @@ if ARCH_MIPS
+ if !REMOTE_ONLY
+ libunwind_mips_la_LIBADD = libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
+- $(libunwind_setjmp_la_SOURCES_mips)
++# libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
++# $(libunwind_setjmp_la_SOURCES_mips)
+ else
+ if ARCH_X86
+ lib_LTLIBRARIES_arch = libunwind-x86.la
+@@ -411,8 +411,8 @@ if ARCH_X86
+ if !REMOTE_ONLY
+ libunwind_x86_la_LIBADD = libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
+- $(libunwind_setjmp_la_SOURCES_x86)
++# libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
++# $(libunwind_setjmp_la_SOURCES_x86)
+ else
+ if ARCH_X86_64
+ lib_LTLIBRARIES_arch = libunwind-x86_64.la
+@@ -422,8 +422,8 @@ if ARCH_X86_64
+ if !REMOTE_ONLY
+ libunwind_x86_64_la_LIBADD = libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
+- $(libunwind_setjmp_la_SOURCES_x86_64)
++# libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
++# $(libunwind_setjmp_la_SOURCES_x86_64)
+ else
+ if ARCH_PPC32
+ lib_LTLIBRARIES_arch = libunwind-ppc32.la
+@@ -433,8 +433,8 @@ if ARCH_PPC32
+ if !REMOTE_ONLY
+ libunwind_ppc32_la_LIBADD = libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
+- $(libunwind_setjmp_la_SOURCES_ppc32)
++# libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
++# $(libunwind_setjmp_la_SOURCES_ppc32)
+ else
+ if ARCH_PPC64
+ lib_LTLIBRARIES_arch = libunwind-ppc64.la
+@@ -444,8 +444,8 @@ if ARCH_PPC64
+ if !REMOTE_ONLY
+ libunwind_ppc64_la_LIBADD = libunwind.la -lc
+ endif
+- libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
+- $(libunwind_setjmp_la_SOURCES_ppc64)
++# libunwind_setjmp_la_SOURCES = $(libunwind_setjmp_la_SOURCES_common) \
++# $(libunwind_setjmp_la_SOURCES_ppc64)
+
+ endif # ARCH_PPC64
+ endif # ARCH_PPC32
+@@ -466,7 +466,7 @@ libunwind_la_LIBADD = -lc $(LIBCRTS)
+
+ lib_LIBRARIES = $(LIBRARIES_cdep)
+ lib_LTLIBRARIES = $(lib_LTLIBRARIES_cdep) $(lib_LTLIBRARIES_arch) \
+- $(lib_LTLIBRARIES_cdep_setjmp)
++ # $(lib_LTLIBRARIES_cdep_setjmp)
+
+ AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/tdep-$(arch) -I.
+ AM_CCASFLAGS = $(AM_CPPFLAGS)
+@@ -488,16 +488,16 @@ EXTRA_DIST = elfxx.h elfxx.c unwind/unwind-internal.h \
+ $(libunwind_mips_la_SOURCES_mips) \
+ $(libunwind_x86_la_SOURCES_x86) \
+ $(libunwind_x86_64_la_SOURCES_x86_64) \
+- $(libunwind_ptrace_a_SOURCES) \
+- $(libunwind_setjmp_la_SOURCES_common) \
+- $(libunwind_setjmp_la_SOURCES_arm) \
+- $(libunwind_setjmp_la_SOURCES_hppa) \
+- $(libunwind_setjmp_la_SOURCES_ia64) \
+- $(libunwind_setjmp_la_SOURCES_mips) \
+- $(libunwind_setjmp_la_SOURCES_x86) \
+- $(libunwind_setjmp_la_SOURCES_x86_64) \
+- $(libunwind_setjmp_la_SOURCES_ppc32) \
+- $(libunwind_setjmp_la_SOURCES_ppc64)
++ $(libunwind_ptrace_a_SOURCES)
++# $(libunwind_setjmp_la_SOURCES_common) \
++# $(libunwind_setjmp_la_SOURCES_arm) \
++# $(libunwind_setjmp_la_SOURCES_hppa) \
++# $(libunwind_setjmp_la_SOURCES_ia64) \
++# $(libunwind_setjmp_la_SOURCES_mips) \
++# $(libunwind_setjmp_la_SOURCES_x86) \
++# $(libunwind_setjmp_la_SOURCES_x86_64) \
++# $(libunwind_setjmp_la_SOURCES_ppc32) \
++# $(libunwind_setjmp_la_SOURCES_ppc64)
+
+
+ # The -version-info flag accepts an argument of the form
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -24,7 +24,8 @@ 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
++# ia64-test-setjmp
+ else
+ if ARCH_PPC64
+ if USE_ALTIVEC
+@@ -40,8 +41,9 @@ endif #ARCH_IA64
+ Gtest-resume-sig Ltest-resume-sig \
+ Gtest-dyn1 Ltest-dyn1 \
+ test-async-sig test-flush-cache test-init-remote \
+- test-mem test-setjmp test-ptrace \
++ test-mem test-ptrace \
+ Ltest-nomalloc
++# test-setjmp
+ noinst_PROGRAMS_cdep = forker mapper test-ptrace-misc test-varargs \
+ Gperf-simple Lperf-simple
+
+@@ -93,8 +95,8 @@ test_ptrace_misc_SOURCES = test-ptrace-misc.c ident.c
+ LIBUNWIND = ../src/libunwind-$(arch).la $(LIBUNWIND_local)
+ LDADD = $(LIBUNWIND)
+
+-test_setjmp_LDADD = ../src/libunwind-setjmp.la $(LIBUNWIND_local)
+-ia64_test_setjmp_LDADD = ../src/libunwind-setjmp.la $(LIBUNWIND_local)
++# test_setjmp_LDADD = ../src/libunwind-setjmp.la $(LIBUNWIND_local)
++# ia64_test_setjmp_LDADD = ../src/libunwind-setjmp.la $(LIBUNWIND_local)
+ test_ptrace_LDADD = ../src/libunwind-ptrace.a $(LIBUNWIND)
+ Ltest_concurrent_LDADD = $(LIBUNWIND) -lpthread
+ Gtest_concurrent_LDADD = $(LIBUNWIND) -lpthread
diff --git a/sys-libs/libunwind/files/libunwind-0.99-implicit-declaration.patch b/sys-libs/libunwind/files/libunwind-0.99-implicit-declaration.patch
new file mode 100644
index 000000000000..6387f0a889c7
--- /dev/null
+++ b/sys-libs/libunwind/files/libunwind-0.99-implicit-declaration.patch
@@ -0,0 +1,17 @@
+http://bugs.gentoo.org/show_bug.cgi?id=289445#c2
+
+--- src/x86_64/unwind_i.h
++++ src/x86_64/unwind_i.h
+@@ -65,6 +65,12 @@
+ extern void x86_64_local_addr_space_init (void);
+ extern int x86_64_local_resume (unw_addr_space_t as, unw_cursor_t *cursor,
+ void *arg);
++
++/* implemented in setcontext.S */
++#if defined(__linux)
++extern int _Ux86_64_setcontext (const ucontext_t *ucp);
++#endif
++
+ #if 0
+ extern dwarf_loc_t x86_64_scratch_loc (struct cursor *c, unw_regnum_t reg);
+ #endif
diff --git a/sys-libs/libunwind/files/libunwind-1.0.1-disable-setjmp.patch b/sys-libs/libunwind/files/libunwind-1.0.1-disable-setjmp.patch
new file mode 100644
index 000000000000..442a5dfd7a37
--- /dev/null
+++ b/sys-libs/libunwind/files/libunwind-1.0.1-disable-setjmp.patch
@@ -0,0 +1,37 @@
+http://cvs.fedoraproject.org/viewvc/rpms/libunwind/devel/libunwind-disable-setjmp.patch?revision=1.1&view=markup
+http://bugs.gentoo.org/299344
+
+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 .
+
+--- libunwind-1.0.1/src/Makefile.am
++++ libunwind-1.0.1/src/Makefile.am
+@@ -9,6 +9,3 @@
+ # libunwind-setjmp depends on libunwind-$(arch). Therefore must be added
+ # at the end.
+-if !REMOTE_ONLY
+-lib_LTLIBRARIES += libunwind-setjmp.la
+-endif
+
+ #
+--- libunwind-1.0.1/tests/Makefile.am
++++ libunwind-1.0.1/tests/Makefile.am
+@@ -27,7 +27,7 @@
+ 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,7 +44,7 @@
+ 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
+ noinst_PROGRAMS_cdep = forker mapper test-ptrace-misc \
+ Gperf-simple Lperf-simple
diff --git a/sys-libs/libunwind/files/libunwind-1.0.1-ia64.patch b/sys-libs/libunwind/files/libunwind-1.0.1-ia64.patch
new file mode 100644
index 000000000000..0639e64e8a91
--- /dev/null
+++ b/sys-libs/libunwind/files/libunwind-1.0.1-ia64.patch
@@ -0,0 +1,133 @@
+fix from upstream for building on ia64
+
+https://bugs.gentoo.org/425736
+
+From 197571915c70b9ccd0978c13f12acb2a5f3058d4 Mon Sep 17 00:00:00 2001
+From: Ken Werner <ken.werner@linaro.org>
+Date: Tue, 11 Oct 2011 15:13:35 +0200
+Subject: [PATCH] Change _UPTi_find_unwind_table to return an integer.
+
+This keeps the definition on IA64 and all the other architectures in sync with
+the declaration of _UPTi_find_unwind_table. This also mimics the behaviour of
+what's done for local unwinding and allows the function to provide more than
+one way to undwind.
+
+Signed-off-by: Ken Werner <ken.werner@linaro.org>
+---
+ src/ptrace/_UPT_find_proc_info.c | 8 ++++----
+ src/ptrace/_UPT_get_dyn_info_list_addr.c | 6 ++----
+ src/ptrace/_UPT_internal.h | 2 +-
+ 3 files changed, 7 insertions(+), 9 deletions(-)
+
+diff --git a/src/ptrace/_UPT_find_proc_info.c b/src/ptrace/_UPT_find_proc_info.c
+index 44feb34..7aaa0c2 100644
+--- a/src/ptrace/_UPT_find_proc_info.c
++++ b/src/ptrace/_UPT_find_proc_info.c
+@@ -95,7 +95,7 @@ find_gp (struct UPT_info *ui, Elf64_Phdr *pdyn, Elf64_Addr load_base)
+ return gp;
+ }
+
+-HIDDEN unw_dyn_info_t *
++HIDDEN int
+ _UPTi_find_unwind_table (struct UPT_info *ui, unw_addr_space_t as,
+ char *path, unw_word_t segbase, unw_word_t mapoff,
+ unw_word_t ip)
+@@ -105,7 +105,7 @@ _UPTi_find_unwind_table (struct UPT_info *ui, unw_addr_space_t as,
+ int i;
+
+ if (!_Uelf64_valid_object (&ui->ei))
+- return NULL;
++ return -UNW_ENOINFO;
+
+ ehdr = ui->ei.image;
+ phdr = (Elf64_Phdr *) ((char *) ui->ei.image + ehdr->e_phoff);
+@@ -132,7 +132,7 @@ _UPTi_find_unwind_table (struct UPT_info *ui, unw_addr_space_t as,
+ }
+ }
+ if (!ptxt || !punw)
+- return NULL;
++ return 0;
+
+ ui->di_cache.start_ip = segbase;
+ ui->di_cache.end_ip = ui->di_cache.start_ip + ptxt->p_memsz;
+@@ -143,7 +143,7 @@ _UPTi_find_unwind_table (struct UPT_info *ui, unw_addr_space_t as,
+ ui->di_cache.u.ti.table_len = punw->p_memsz / sizeof (unw_word_t);
+ ui->di_cache.u.ti.table_data = (unw_word_t *)
+ ((char *) ui->ei.image + (punw->p_vaddr - ptxt->p_vaddr));
+- return &ui->di_cache;
++ return 1;
+ }
+
+ #elif UNW_TARGET_X86 || UNW_TARGET_X86_64 || UNW_TARGET_HPPA \
+
+From 962366dace4fed902ad5e89df1b34c13c3224b8b Mon Sep 17 00:00:00 2001
+From: Arun Sharma <asharma@fb.com>
+Date: Fri, 23 Sep 2011 11:11:34 -0700
+Subject: [PATCH] Fixup compile errors on ia64.
+
+Suggested-by: Harald Servat <harald.servat@bsc.es>
+---
+ src/ptrace/_UPT_get_dyn_info_list_addr.c | 2 +-
+ src/ptrace/_UPT_internal.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/ptrace/_UPT_get_dyn_info_list_addr.c b/src/ptrace/_UPT_get_dyn_info_list_addr.c
+index d82d4e4..ba9c795 100644
+--- a/src/ptrace/_UPT_get_dyn_info_list_addr.c
++++ b/src/ptrace/_UPT_get_dyn_info_list_addr.c
+@@ -62,7 +62,7 @@ get_list_addr (unw_addr_space_t as, unw_word_t *dil_addr, void *arg,
+
+ Debug (16, "checking object %s\n", path);
+
+- di = _UPTi_find_unwind_table (ui, as, path, lo, off);
++ di = _UPTi_find_unwind_table (ui, as, path, lo, off, 0);
+ if (di)
+ {
+ res = _Uia64_find_dyn_list (as, di, arg);
+From d93d96ad833390519ea68a2df22dd55dd26a3214 Mon Sep 17 00:00:00 2001
+From: Martin Milata <mmilata@redhat.com>
+Date: Tue, 22 May 2012 11:51:06 +0200
+Subject: [PATCH] Fix compilation on IA64
+
+ - Add tdep macro for {dwarf,ia64}_find_unwind_table so that ia64
+ doesn't try to use dwarf code.
+ - Fix extraneous #if.
+ - Fix mistyped filename in Makefile.am.
+ - Link ia64-specific tests with correct libraries.
+
+Signed-off-by: Martin Milata <mmilata@redhat.com>
+---
+ include/tdep-arm/libunwind_i.h | 1 +
+ include/tdep-hppa/libunwind_i.h | 1 +
+ include/tdep-ia64/libunwind_i.h | 1 +
+ include/tdep-mips/libunwind_i.h | 1 +
+ include/tdep-ppc32/libunwind_i.h | 1 +
+ include/tdep-ppc64/libunwind_i.h | 1 +
+ include/tdep-x86/libunwind_i.h | 1 +
+ include/tdep-x86_64/libunwind_i.h | 1 +
+ src/Makefile.am | 4 ++--
+ src/ia64/Gfind_unwind_table.c | 3 ---
+ src/ptrace/_UPT_find_proc_info.c | 2 +-
+ src/ptrace/_UPT_get_dyn_info_list_addr.c | 2 +-
+ tests/Makefile.am | 11 +++++++++++
+ 13 files changed, 23 insertions(+), 7 deletions(-)
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index 26e7987..4b3bce3 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -165,3 +165,14 @@ test_setjmp_LDADD = $(LIBUNWIND_setjmp)
+ test_setjmp_LDADD = $(LIBUNWIND_setjmp)
+ ia64_test_setjmp_LDADD = $(LIBUNWIND_setjmp)
+
++
++Gia64_test_nat_LDADD = $(LIBUNWIND) $(LIBUNWIND_local)
++Gia64_test_stack_LDADD = $(LIBUNWIND) $(LIBUNWIND_local)
++Gia64_test_rbs_LDADD = $(LIBUNWIND) $(LIBUNWIND_local)
++Gia64_test_readonly_LDADD = $(LIBUNWIND) $(LIBUNWIND_local)
++Lia64_test_nat_LDADD = $(LIBUNWIND_local)
++Lia64_test_stack_LDADD = $(LIBUNWIND_local)
++Lia64_test_rbs_LDADD = $(LIBUNWIND_local)
++Lia64_test_readonly_LDADD = $(LIBUNWIND_local)
++ia64_test_dyn1_LDADD = $(LIBUNWIND)
++ia64_test_sig_LDADD = $(LIBUNWIND)
diff --git a/sys-libs/libunwind/files/libunwind-1.1-lzma.patch b/sys-libs/libunwind/files/libunwind-1.1-lzma.patch
new file mode 100644
index 000000000000..09cefa028539
--- /dev/null
+++ b/sys-libs/libunwind/files/libunwind-1.1-lzma.patch
@@ -0,0 +1,63 @@
+From 38c349bb000b427c376e756e3ecdb764a2b4d297 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sat, 15 Feb 2014 21:00:59 -0500
+Subject: [PATCH] link sublibs against liblzma as needed
+
+The coredump/elf32/elf64/elfxx libs use lzma funcs but don't link against
+it. This produces sub-shared libs that don't link against lzma and can
+make the linker angry due to underlinking like so:
+
+libtool: link: x86_64-pc-linux-gnu-gcc -O2 -march=amdfam10 -pipe -g \
+ -frecord-gcc-switches -Wimplicit-function-declaration -fexceptions \
+ -Wall -Wsign-compare -Wl,-O1 -Wl,--hash-style=gnu \
+ -o .libs/test-coredump-unwind test-coredump-unwind.o \
+ ../src/.libs/libunwind-coredump.so ../src/.libs/libunwind-x86_64.so
+../src/.libs/libunwind-coredump.so: error: undefined reference to 'lzma_stream_footer_decode'
+../src/.libs/libunwind-coredump.so: error: undefined reference to 'lzma_index_buffer_decode'
+../src/.libs/libunwind-coredump.so: error: undefined reference to 'lzma_index_size'
+../src/.libs/libunwind-coredump.so: error: undefined reference to 'lzma_index_end'
+../src/.libs/libunwind-coredump.so: error: undefined reference to 'lzma_index_uncompressed_size'
+../src/.libs/libunwind-coredump.so: error: undefined reference to 'lzma_stream_buffer_decode'
+collect2: error: ld returned 1 exit status
+
+So add LIBLZMA to the right LIBADD for each of these libraries.
+
+URL: https://bugs.gentoo.org/444050
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ src/Makefile.am | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -169,7 +169,7 @@ libunwind_arm_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libunwind_arm_la_LDFLAGS) $(LDFLAGS) -o $@
+ @ARCH_ARM_TRUE@am_libunwind_arm_la_rpath = -rpath $(libdir)
+-libunwind_coredump_la_LIBADD =
++libunwind_coredump_la_LIBADD = $(LIBLZMA)
+ am__libunwind_coredump_la_SOURCES_DIST = coredump/_UCD_accessors.c \
+ coredump/_UCD_create.c coredump/_UCD_destroy.c \
+ coredump/_UCD_access_mem.c coredump/_UCD_elf_map_image.c \
+@@ -214,15 +214,15 @@ am_libunwind_dwarf_local_la_OBJECTS = dwarf/Lexpr.lo dwarf/Lfde.lo \
+ libunwind_dwarf_local_la_OBJECTS = \
+ $(am_libunwind_dwarf_local_la_OBJECTS)
+ @REMOTE_ONLY_FALSE@@USE_DWARF_TRUE@am_libunwind_dwarf_local_la_rpath =
+-libunwind_elf32_la_LIBADD =
++libunwind_elf32_la_LIBADD = $(LIBLZMA)
+ am_libunwind_elf32_la_OBJECTS = elf32.lo
+ libunwind_elf32_la_OBJECTS = $(am_libunwind_elf32_la_OBJECTS)
+ @USE_ELF32_TRUE@am_libunwind_elf32_la_rpath =
+-libunwind_elf64_la_LIBADD =
++libunwind_elf64_la_LIBADD = $(LIBLZMA)
+ am_libunwind_elf64_la_OBJECTS = elf64.lo
+ libunwind_elf64_la_OBJECTS = $(am_libunwind_elf64_la_OBJECTS)
+ @USE_ELF64_TRUE@am_libunwind_elf64_la_rpath =
+-libunwind_elfxx_la_LIBADD =
++libunwind_elfxx_la_LIBADD = $(LIBLZMA)
+ am_libunwind_elfxx_la_OBJECTS = elfxx.lo
+ libunwind_elfxx_la_OBJECTS = $(am_libunwind_elfxx_la_OBJECTS)
+ @USE_ELFXX_TRUE@am_libunwind_elfxx_la_rpath =
+--
+1.8.5.5
+