From 268313f406346dec8106b2afeba8cea7a727f9d0 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 5 Feb 2015 15:35:38 +0100 Subject: [PATCH 1/4] 0.161-3 Add elfutils-0.161-formref-type.patch. --- elfutils-0.161-formref-type.patch | 24 ++++++++++++++++++++++++ elfutils.spec | 8 +++++++- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.161-formref-type.patch diff --git a/elfutils-0.161-formref-type.patch b/elfutils-0.161-formref-type.patch new file mode 100644 index 0000000..6f11e17 --- /dev/null +++ b/elfutils-0.161-formref-type.patch @@ -0,0 +1,24 @@ +commit 7c71382294af69f075c891a3418906c842491e4c +Author: Jason P. Leasure +Date: Wed Jan 14 09:26:55 2015 -0500 + + libdw: fix offset for sig8 lookup in dwarf_formref_die + + The type_offset of a type unit header is relative to the beginning + of the type unit header. + + Signed-off-by: Jason P. Leasure + +diff --git a/libdw/dwarf_formref_die.c b/libdw/dwarf_formref_die.c +index 63f6697..8b92e22 100644 +--- a/libdw/dwarf_formref_die.c ++++ b/libdw/dwarf_formref_die.c +@@ -95,7 +95,7 @@ dwarf_formref_die (attr, result) + + datap = cu->dbg->sectiondata[IDX_debug_types]->d_buf; + size = cu->dbg->sectiondata[IDX_debug_types]->d_size; +- offset = cu->type_offset; ++ offset = cu->start + cu->type_offset; + } + else + { diff --git a/elfutils.spec b/elfutils.spec index 67211df..b41daf0 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,7 +1,7 @@ Name: elfutils Summary: A collection of utilities and DSOs to handle compiled objects Version: 0.161 -%global baserelease 2 +%global baserelease 3 URL: https://fedorahosted.org/elfutils/ %global source_url http://fedorahosted.org/releases/e/l/elfutils/%{version}/ License: GPLv3+ and (GPLv2+ or LGPLv3+) @@ -47,6 +47,8 @@ Source: %{?source_url}%{name}-%{version}.tar.bz2 Patch1: %{?source_url}elfutils-portability-%{version}.patch Patch2: elfutils-0.161-ar-long-name.patch +# libdw: fix offset for sig8 lookup in dwarf_formref_die +Patch3: elfutils-0.161-formref-type.patch %if !%{compat} Release: %{baserelease}%{?dist} @@ -210,6 +212,7 @@ sed -i.scanf-m -e 's/%m/%a/g' src/addr2line.c tests/line2addr.c %endif %patch2 -p1 -b .ar_long_name +%patch3 -p1 -b .formref_type find . -name \*.sh ! -perm -0100 -print | xargs chmod +x @@ -338,6 +341,9 @@ rm -rf ${RPM_BUILD_ROOT} %{_libdir}/libelf.a %changelog +* Thu Feb 05 2015 Mark Wielaard - 0.161-3 +- Add elfutils-0.161-formref-type.patch + * Tue Jan 13 2015 Mark Wielaard - 0.161-2 - Add elfutils-0.161-ar-long-name.patch (#1181525 CVE-2014-9447) From 94ab0ae1a2722ee4826e21e0f7d410364e6e1f8b Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 7 Feb 2015 22:16:10 +0100 Subject: [PATCH 2/4] 0.161-4 Add elfutils-0.161-addralign.patch (#1189928) --- elfutils-0.161-addralign.patch | 53 ++++++++++++++++++++++++++++++++++ elfutils.spec | 8 ++++- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.161-addralign.patch diff --git a/elfutils-0.161-addralign.patch b/elfutils-0.161-addralign.patch new file mode 100644 index 0000000..bbe1332 --- /dev/null +++ b/elfutils-0.161-addralign.patch @@ -0,0 +1,53 @@ +commit 6f5934c1afa8f34bfb8f86b191ded9af854e757f +Author: Jan Kratochvil +Date: Sat Feb 7 15:08:20 2015 +0100 + + libelf: Consider sh_addralign 0 as 1 + + Currently the Koji build for arm32 fails with: + extracting debug info from /builddir/build/BUILDROOT/etcd-2.0.0-0.3.rc1.fc22.arm/usr/bin/etcd + Failed to write file: invalid section alignment + + This is because the binary etcd + http://people.redhat.com/jkratoch/etcdctl.xz + contains: + Section Headers: + [Nr] Name Type Addr Off Size ES Flg Lk Inf Al + [11] .rel.plt REL 00459ee0 449ee0 000088 08 A 13 0 0 + ^ + which corresponds to golang's code: + go/src/cmd/ld/elf.c + case EM_X86_64: + sh = elfshname(".rela.plt"); + sh->addralign = RegSize; + default: + sh = elfshname(".rel.plt"); + + + ELF spec says: + Values 0 and 1 mean the section has no alignment constraints. + and libelf/elf32_updatenull.c really parses it that way at line 204 + ElfW2(LIBELFBITS,Word) sh_align = shdr->sh_addralign ?: 1; + but unfortunately the later line being patched no longer does. + + libelf/ + 2015-02-07 Jan Kratochvil + + * elf32_updatenull.c (__elfw2(LIBELFBITS,updatenull_wrlock)): Consider + sh_addralign 0 as 1. + + Signed-off-by: Jan Kratochvil + +diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c +index be4cea0..5e809b7 100644 +--- a/libelf/elf32_updatenull.c ++++ b/libelf/elf32_updatenull.c +@@ -328,7 +328,7 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) + enough for the largest alignment required by a data + block. */ + if (unlikely (! powerof2 (shdr->sh_addralign)) +- || unlikely (shdr->sh_addralign < sh_align)) ++ || unlikely ((shdr->sh_addralign ?: 1) < sh_align)) + { + __libelf_seterrno (ELF_E_INVALID_ALIGN); + return -1; diff --git a/elfutils.spec b/elfutils.spec index b41daf0..681ed28 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,7 +1,7 @@ Name: elfutils Summary: A collection of utilities and DSOs to handle compiled objects Version: 0.161 -%global baserelease 3 +%global baserelease 4 URL: https://fedorahosted.org/elfutils/ %global source_url http://fedorahosted.org/releases/e/l/elfutils/%{version}/ License: GPLv3+ and (GPLv2+ or LGPLv3+) @@ -49,6 +49,8 @@ Patch1: %{?source_url}elfutils-portability-%{version}.patch Patch2: elfutils-0.161-ar-long-name.patch # libdw: fix offset for sig8 lookup in dwarf_formref_die Patch3: elfutils-0.161-formref-type.patch +# rhbz#1189928 - Consider sh_addralign 0 as 1 +Patch4: elfutils-0.161-addralign.patch %if !%{compat} Release: %{baserelease}%{?dist} @@ -213,6 +215,7 @@ sed -i.scanf-m -e 's/%m/%a/g' src/addr2line.c tests/line2addr.c %patch2 -p1 -b .ar_long_name %patch3 -p1 -b .formref_type +%patch4 -p1 -b .addralign find . -name \*.sh ! -perm -0100 -print | xargs chmod +x @@ -341,6 +344,9 @@ rm -rf ${RPM_BUILD_ROOT} %{_libdir}/libelf.a %changelog +* Sat Feb 07 2015 Mark Wielaard - 0.161-4 +- Add elfutils-0.161-addralign.patch (#1189928) + * Thu Feb 05 2015 Mark Wielaard - 0.161-3 - Add elfutils-0.161-formref-type.patch From 31002bf1a680e642a10fe101eae3a9f1065dd1d2 Mon Sep 17 00:00:00 2001 From: Till Maas Date: Sat, 21 Feb 2015 21:29:31 +0100 Subject: [PATCH 3/4] Rebuilt for Fedora 23 Change https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code --- elfutils.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 681ed28..8147272 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,7 +1,7 @@ Name: elfutils Summary: A collection of utilities and DSOs to handle compiled objects Version: 0.161 -%global baserelease 4 +%global baserelease 5 URL: https://fedorahosted.org/elfutils/ %global source_url http://fedorahosted.org/releases/e/l/elfutils/%{version}/ License: GPLv3+ and (GPLv2+ or LGPLv3+) @@ -344,6 +344,10 @@ rm -rf ${RPM_BUILD_ROOT} %{_libdir}/libelf.a %changelog +* Sat Feb 21 2015 Till Maas - 0.161-5 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + * Sat Feb 07 2015 Mark Wielaard - 0.161-4 - Add elfutils-0.161-addralign.patch (#1189928) From 6c0c17ad448f771022f313553476b75c108507dd Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Mon, 9 Mar 2015 23:04:27 +0100 Subject: [PATCH 4/4] 0.161-6 Add elfutils-0.161-copyreloc.patch. --- elfutils-0.161-copyreloc.patch | 233 +++++++++++++++++++++++++++++++++ elfutils.spec | 7 +- 2 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.161-copyreloc.patch diff --git a/elfutils-0.161-copyreloc.patch b/elfutils-0.161-copyreloc.patch new file mode 100644 index 0000000..551d35f --- /dev/null +++ b/elfutils-0.161-copyreloc.patch @@ -0,0 +1,233 @@ +commit cc4e10fb398d40fb90e15056d808a596ef893cc3 +Author: Mark Wielaard +Date: Mon Mar 9 22:43:08 2015 +0100 + + backends: COPY relocations can also happen in ET_DYN. + + In particular COPY relocations might happen in PIE executables, + which are ET_DYN. + + Found on Fedora Rawhide with run-elflint-self.sh. + + Signed-off-by: Mark Wielaard + +diff --git a/backends/aarch64_reloc.def b/backends/aarch64_reloc.def +index 36d29e6..2e16e98 100644 +--- a/backends/aarch64_reloc.def ++++ b/backends/aarch64_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for AArch64. -*- C -*- +- Copyright (C) 2013, 2014 Red Hat, Inc. ++ Copyright (C) 2013, 2014, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -30,7 +30,7 @@ + + RELOC_TYPE (ABS64, REL|EXEC|DYN) + RELOC_TYPE (ABS32, REL|EXEC|DYN) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (GLOB_DAT, EXEC|DYN) + RELOC_TYPE (JUMP_SLOT, EXEC|DYN) + RELOC_TYPE (RELATIVE, EXEC|DYN) +diff --git a/backends/arm_reloc.def b/backends/arm_reloc.def +index 4b7894b..113648e 100644 +--- a/backends/arm_reloc.def ++++ b/backends/arm_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for arm. -*- C -*- +- Copyright (C) 2005-2010, 2014 Red Hat, Inc. ++ Copyright (C) 2005-2010, 2014, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -48,7 +48,7 @@ RELOC_TYPE (THM_XPC22, REL) + RELOC_TYPE (TLS_DTPMOD32, EXEC|DYN) + RELOC_TYPE (TLS_DTPOFF32, EXEC|DYN) + RELOC_TYPE (TLS_TPOFF32, EXEC|DYN) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (GLOB_DAT, EXEC|DYN) + RELOC_TYPE (JUMP_SLOT, EXEC|DYN) + RELOC_TYPE (RELATIVE, EXEC|DYN) +diff --git a/backends/i386_reloc.def b/backends/i386_reloc.def +index bd273b3..de3575d 100644 +--- a/backends/i386_reloc.def ++++ b/backends/i386_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for i386. -*- C -*- +- Copyright (C) 2000, 2001, 2002, 2003, 2005, 2009 Red Hat, Inc. ++ Copyright (C) 2000, 2001, 2002, 2003, 2005, 2009, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -29,7 +29,7 @@ + /* NAME, REL|EXEC|DYN */ + + RELOC_TYPE (NONE, 0) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (32, REL|EXEC|DYN) + RELOC_TYPE (PC32, REL|EXEC|DYN) + RELOC_TYPE (GOT32, REL) +diff --git a/backends/ia64_reloc.def b/backends/ia64_reloc.def +index 9e058c8..2428925 100644 +--- a/backends/ia64_reloc.def ++++ b/backends/ia64_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for ia64. -*- C -*- +- Copyright (C) 2005, 2006 Red Hat, Inc. ++ Copyright (C) 2005, 2006, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -88,7 +88,7 @@ RELOC_TYPE (PCREL22, REL) + RELOC_TYPE (PCREL64I, REL) + RELOC_TYPE (IPLTMSB, REL|EXEC|DYN) + RELOC_TYPE (IPLTLSB, REL|EXEC|DYN) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (SUB, 0) + RELOC_TYPE (LTOFF22X, REL) + RELOC_TYPE (LDXMOV, REL) +diff --git a/backends/ppc64_reloc.def b/backends/ppc64_reloc.def +index 3a693cf..15a73ba 100644 +--- a/backends/ppc64_reloc.def ++++ b/backends/ppc64_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for ppc64. -*- C -*- +- Copyright (C) 2005 Red Hat, Inc. ++ Copyright (C) 2005, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -46,7 +46,7 @@ RELOC_TYPE (GOT16, REL) + RELOC_TYPE (GOT16_LO, REL) + RELOC_TYPE (GOT16_HI, REL) + RELOC_TYPE (GOT16_HA, REL) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (GLOB_DAT, EXEC|DYN) + RELOC_TYPE (JMP_SLOT, EXEC|DYN) + RELOC_TYPE (RELATIVE, EXEC|DYN) +diff --git a/backends/ppc_reloc.def b/backends/ppc_reloc.def +index dc963a0..3723a9c 100644 +--- a/backends/ppc_reloc.def ++++ b/backends/ppc_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for ppc. -*- C -*- +- Copyright (C) 2005 Red Hat, Inc. ++ Copyright (C) 2005, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -47,7 +47,7 @@ RELOC_TYPE (GOT16_LO, REL) + RELOC_TYPE (GOT16_HI, REL) + RELOC_TYPE (GOT16_HA, REL) + RELOC_TYPE (PLTREL24, REL) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (GLOB_DAT, EXEC|DYN) + RELOC_TYPE (JMP_SLOT, EXEC|DYN) + RELOC_TYPE (RELATIVE, EXEC|DYN) +diff --git a/backends/s390_reloc.def b/backends/s390_reloc.def +index b4686a3..cdef9eb 100644 +--- a/backends/s390_reloc.def ++++ b/backends/s390_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for s390. -*- C -*- +- Copyright (C) 2005, 2006 Red Hat, Inc. ++ Copyright (C) 2005, 2006, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -37,7 +37,7 @@ RELOC_TYPE (PC32, REL|EXEC|DYN) + RELOC_TYPE (GOT12, REL) + RELOC_TYPE (GOT32, REL) + RELOC_TYPE (PLT32, REL) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (GLOB_DAT, EXEC|DYN) + RELOC_TYPE (JMP_SLOT, EXEC|DYN) + RELOC_TYPE (RELATIVE, EXEC|DYN) +diff --git a/backends/sh_reloc.def b/backends/sh_reloc.def +index 66a5a9d..aded361 100644 +--- a/backends/sh_reloc.def ++++ b/backends/sh_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for SH. -*- C -*- +- Copyright (C) 2005 Red Hat, Inc. ++ Copyright (C) 2005, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -59,7 +59,7 @@ RELOC_TYPE (TLS_DTPOFF32, DYN) + RELOC_TYPE (TLS_TPOFF32, DYN) + RELOC_TYPE (GOT32, REL) + RELOC_TYPE (PLT32, REL) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (GLOB_DAT, EXEC|DYN) + RELOC_TYPE (JMP_SLOT, EXEC|DYN) + RELOC_TYPE (RELATIVE, EXEC|DYN) +diff --git a/backends/sparc_reloc.def b/backends/sparc_reloc.def +index c39b0fa..2aeb129 100644 +--- a/backends/sparc_reloc.def ++++ b/backends/sparc_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for sparc. -*- C -*- +- Copyright (C) 2009 Red Hat, Inc. ++ Copyright (C) 2009, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -47,7 +47,7 @@ RELOC_TYPE (GOT22, REL) + RELOC_TYPE (PC10, REL) + RELOC_TYPE (PC22, REL) + RELOC_TYPE (WPLT30, REL) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (GLOB_DAT, EXEC|DYN) + RELOC_TYPE (JMP_SLOT, EXEC|DYN) + RELOC_TYPE (RELATIVE, EXEC|DYN) +diff --git a/backends/tilegx_reloc.def b/backends/tilegx_reloc.def +index 9736286..1018110 100644 +--- a/backends/tilegx_reloc.def ++++ b/backends/tilegx_reloc.def +@@ -1,5 +1,6 @@ + /* List the relocation types for tilegx. -*- C -*- + Copyright (C) 2012 Tilera Corporation ++ Copyright (C) 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -44,7 +45,7 @@ RELOC_TYPE (HW3, REL) + RELOC_TYPE (HW0_LAST, REL) + RELOC_TYPE (HW1_LAST, REL) + RELOC_TYPE (HW2_LAST, REL) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (GLOB_DAT, EXEC|DYN) + RELOC_TYPE (JMP_SLOT, EXEC|DYN) + RELOC_TYPE (RELATIVE, EXEC|DYN) +diff --git a/backends/x86_64_reloc.def b/backends/x86_64_reloc.def +index 8ed98f6..ad84efa 100644 +--- a/backends/x86_64_reloc.def ++++ b/backends/x86_64_reloc.def +@@ -1,5 +1,5 @@ + /* List the relocation types for x86-64. -*- C -*- +- Copyright (C) 2000, 2001, 2002, 2003, 2005, 2009 Red Hat, Inc. ++ Copyright (C) 2000, 2001, 2002, 2003, 2005, 2009, 2015 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -33,7 +33,7 @@ RELOC_TYPE (64, REL|EXEC|DYN) + RELOC_TYPE (PC32, REL|EXEC|DYN) + RELOC_TYPE (GOT32, REL) + RELOC_TYPE (PLT32, REL) +-RELOC_TYPE (COPY, EXEC) ++RELOC_TYPE (COPY, EXEC|DYN) + RELOC_TYPE (GLOB_DAT, EXEC|DYN) + RELOC_TYPE (JUMP_SLOT, EXEC|DYN) + RELOC_TYPE (RELATIVE, EXEC|DYN) diff --git a/elfutils.spec b/elfutils.spec index 8147272..dc65d51 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,7 +1,7 @@ Name: elfutils Summary: A collection of utilities and DSOs to handle compiled objects Version: 0.161 -%global baserelease 5 +%global baserelease 6 URL: https://fedorahosted.org/elfutils/ %global source_url http://fedorahosted.org/releases/e/l/elfutils/%{version}/ License: GPLv3+ and (GPLv2+ or LGPLv3+) @@ -51,6 +51,7 @@ Patch2: elfutils-0.161-ar-long-name.patch Patch3: elfutils-0.161-formref-type.patch # rhbz#1189928 - Consider sh_addralign 0 as 1 Patch4: elfutils-0.161-addralign.patch +Patch5: elfutils-0.161-copyreloc.patch %if !%{compat} Release: %{baserelease}%{?dist} @@ -216,6 +217,7 @@ sed -i.scanf-m -e 's/%m/%a/g' src/addr2line.c tests/line2addr.c %patch2 -p1 -b .ar_long_name %patch3 -p1 -b .formref_type %patch4 -p1 -b .addralign +%patch5 -p1 -b .copyreloc find . -name \*.sh ! -perm -0100 -print | xargs chmod +x @@ -344,6 +346,9 @@ rm -rf ${RPM_BUILD_ROOT} %{_libdir}/libelf.a %changelog +* Mon Mar 09 2015 Mark Wielaard - 0.161-6 +- Add elfutils-0.161-copyreloc.patch. + * Sat Feb 21 2015 Till Maas - 0.161-5 - Rebuilt for Fedora 23 Change https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code