|
Mark Wielaard |
df9a3ff |
Upstream proposed patch.
|
|
Mark Wielaard |
df9a3ff |
Note that this backport doesn't actually contain the new testcase.
|
|
Mark Wielaard |
df9a3ff |
It is just the elf_getdata fix.
|
|
Mark Wielaard |
df9a3ff |
|
|
Mark Wielaard |
df9a3ff |
commit edff83d3416a136ce58a21a1244c99805e98f6d8
|
|
Mark Wielaard |
df9a3ff |
Author: Mark Wielaard <mjw@redhat.com>
|
|
Mark Wielaard |
df9a3ff |
Date: Thu Feb 4 09:53:41 2016 +0100
|
|
Mark Wielaard |
df9a3ff |
|
|
Mark Wielaard |
df9a3ff |
libelf: elf_getdata should not adjust alignment for SHT_NOBITS sections.
|
|
Mark Wielaard |
df9a3ff |
|
|
Mark Wielaard |
df9a3ff |
In commit c0748e "libelf: More checking of valid sh_addralign values." we
|
|
Mark Wielaard |
df9a3ff |
adjusted bogus alignment of data buffers if they were greater than the
|
|
Mark Wielaard |
df9a3ff |
offset of the data in the file. This works OK, except when there is no
|
|
Mark Wielaard |
df9a3ff |
data in the file. So make sure to not adjust any NOBITS sections.
|
|
Mark Wielaard |
df9a3ff |
|
|
Mark Wielaard |
df9a3ff |
Also adds a test that shows the issue and makes sure elflint is called
|
|
Mark Wielaard |
df9a3ff |
with --gnu in run-strip-test.sh.
|
|
Mark Wielaard |
df9a3ff |
|
|
Mark Wielaard |
df9a3ff |
https://bugzilla.redhat.com/show_bug.cgi?id=1303845
|
|
Mark Wielaard |
df9a3ff |
|
|
Mark Wielaard |
df9a3ff |
Signed-off-by: Mark Wielaard <mjw@redhat.com>
|
|
Mark Wielaard |
df9a3ff |
|
|
Mark Wielaard |
df9a3ff |
diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c
|
|
Mark Wielaard |
df9a3ff |
index 4ec94b9..d1fafbf 100644
|
|
Mark Wielaard |
df9a3ff |
--- a/libelf/elf_getdata.c
|
|
Mark Wielaard |
df9a3ff |
+++ b/libelf/elf_getdata.c
|
|
Mark Wielaard |
df9a3ff |
@@ -1,5 +1,5 @@
|
|
Mark Wielaard |
df9a3ff |
/* Return the next data element from the section after possibly converting it.
|
|
Mark Wielaard |
df9a3ff |
- Copyright (C) 1998-2005, 2006, 2007, 2015 Red Hat, Inc.
|
|
Mark Wielaard |
df9a3ff |
+ Copyright (C) 1998-2005, 2006, 2007, 2015, 2016 Red Hat, Inc.
|
|
Mark Wielaard |
df9a3ff |
This file is part of elfutils.
|
|
Mark Wielaard |
df9a3ff |
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
|
|
Mark Wielaard |
df9a3ff |
|
|
Mark Wielaard |
df9a3ff |
@@ -363,7 +363,7 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn)
|
|
Mark Wielaard |
df9a3ff |
at least an ehdr this will only trigger for alignment values > 64
|
|
Mark Wielaard |
df9a3ff |
which should be uncommon. */
|
|
Mark Wielaard |
df9a3ff |
align = align ?: 1;
|
|
Mark Wielaard |
df9a3ff |
- if (align > offset)
|
|
Mark Wielaard |
df9a3ff |
+ if (type != SHT_NOBITS && align > offset)
|
|
Mark Wielaard |
df9a3ff |
align = offset;
|
|
Mark Wielaard |
df9a3ff |
scn->rawdata.d.d_align = align;
|
|
Mark Wielaard |
df9a3ff |
if (elf->class == ELFCLASS32
|