Merge branch 'f21' into f20

This commit is contained in:
Mark Wielaard 2015-03-10 10:31:08 +01:00
commit 6df78206ce
4 changed files with 332 additions and 1 deletions

View File

@ -0,0 +1,53 @@
commit 6f5934c1afa8f34bfb8f86b191ded9af854e757f
Author: Jan Kratochvil <jan.kratochvil@redhat.com>
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");
<nothing>
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 <jan.kratochvil@redhat.com>
* elf32_updatenull.c (__elfw2(LIBELFBITS,updatenull_wrlock)): Consider
sh_addralign 0 as 1.
Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
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;

View File

@ -0,0 +1,233 @@
commit cc4e10fb398d40fb90e15056d808a596ef893cc3
Author: Mark Wielaard <mjw@redhat.com>
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 <mjw@redhat.com>
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)

View File

@ -0,0 +1,24 @@
commit 7c71382294af69f075c891a3418906c842491e4c
Author: Jason P. Leasure <jpleasu@super.org>
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 <jpleasu@super.org>
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
{

View File

@ -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 6
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,11 @@ 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
# 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}
@ -210,6 +215,9 @@ 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
%patch4 -p1 -b .addralign
%patch5 -p1 -b .copyreloc
find . -name \*.sh ! -perm -0100 -print | xargs chmod +x
@ -338,6 +346,19 @@ rm -rf ${RPM_BUILD_ROOT}
%{_libdir}/libelf.a
%changelog
* Mon Mar 09 2015 Mark Wielaard <mjw@redhat.com> - 0.161-6
- Add elfutils-0.161-copyreloc.patch.
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 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 <mjw@redhat.com> - 0.161-4
- Add elfutils-0.161-addralign.patch (#1189928)
* Thu Feb 05 2015 Mark Wielaard <mjw@redhat.com> - 0.161-3
- Add elfutils-0.161-formref-type.patch
* Tue Jan 13 2015 Mark Wielaard <mjw@redhat.com> - 0.161-2
- Add elfutils-0.161-ar-long-name.patch (#1181525 CVE-2014-9447)