From: Mark Wielaard <mark@klomp.org>
To: elfutils-devel@sourceware.org
Subject: Re: Buildbot failure in Wildebeest Builder on whole buildset
Date: Tue, 13 Nov 2018 20:46:00 -0000 [thread overview]
Message-ID: <ac03f88caf659bfec5117bdf03a76bd63f7799cb.camel@klomp.org> (raw)
In-Reply-To: <d82eac2152dd6e7d655c92047371c74141aade75.camel@klomp.org>
[-- Attachment #1: Type: text/plain, Size: 361 bytes --]
On Tue, 2018-11-13 at 18:29 +0100, Mark Wielaard wrote:
> So we might actually have two bugs. 1) we don't handle incorrectly
> aligned compressed sections and 2) we generate such incorrectly
> aligned compressed sections ourselves.
>
> Pondering fixes.
The fixes were easy!
(Hopefully the buildbot agrees.)
I pushed the attached.
Cheers,
Mark
[-- Attachment #2: 0001-libelf-Correctly-setup-alignment-of-SHF_COMPRESSED-s.patch --]
[-- Type: text/x-patch, Size: 2801 bytes --]
From cf10453f8252df81225796d98548ba6eac113df3 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Tue, 13 Nov 2018 21:18:09 +0100
Subject: [PATCH] libelf: Correctly setup alignment of SHF_COMPRESSED section
data.
We didn't set the alignment of SHF_COMPRESSED sections correctly.
Those sections start with an Elf(32|64)_Chdr. Make sure sh_addralign
is setup to be able to read such a struct directly. Likewise don't
trust the alignment set on any SHF_COMPRESSED section, but always
make the (raw) compressed data aligned correctly for the reading the
Elf(32|64)_Chdr directly.
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
libelf/ChangeLog | 7 +++++++
libelf/elf_compress.c | 4 ++--
libelf/elf_getdata.c | 10 ++++++++--
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index ab078cb..93820d1 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,10 @@
+2018-11-13 Mark Wielaard <mark@klomp.org>
+
+ * elf_getdata.c (__libelf_set_rawdata_wrlock): Explicitly set the
+ alignment of SHF_COMPRESSED data to the alignment of ELF_T_CHDR.
+ * elf_compress.c (elf_compress): After compression set sh_addralign
+ to the alignment of ELF_T_CHDR.
+
2018-11-09 Mark Wielaard <mark@klomp.org>
* elf_compress_gnu.c (elf_compress_gnu): Use elf_getdata.
diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c
index d96245d..be9eeab 100644
--- a/libelf/elf_compress.c
+++ b/libelf/elf_compress.c
@@ -455,14 +455,14 @@ elf_compress (Elf_Scn *scn, int type, unsigned int flags)
{
Elf32_Shdr *shdr = elf32_getshdr (scn);
shdr->sh_size = new_size;
- shdr->sh_addralign = 1;
+ shdr->sh_addralign = __libelf_type_align (ELFCLASS32, ELF_T_CHDR);
shdr->sh_flags |= SHF_COMPRESSED;
}
else
{
Elf64_Shdr *shdr = elf64_getshdr (scn);
shdr->sh_size = new_size;
- shdr->sh_addralign = 1;
+ shdr->sh_addralign = __libelf_type_align (ELFCLASS64, ELF_T_CHDR);
shdr->sh_flags |= SHF_COMPRESSED;
}
diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c
index 2043bba..639a798 100644
--- a/libelf/elf_getdata.c
+++ b/libelf/elf_getdata.c
@@ -268,9 +268,15 @@ __libelf_set_rawdata_wrlock (Elf_Scn *scn)
/* First a test whether the section is valid at all. */
size_t entsize;
- /* Compressed data has a header, but then compressed data. */
+ /* Compressed data has a header, but then compressed data.
+ Make sure to set the alignment of the header explicitly,
+ don't trust the file alignment for the section, it is
+ often wrong. */
if ((flags & SHF_COMPRESSED) != 0)
- entsize = 1;
+ {
+ entsize = 1;
+ align = __libelf_type_align (elf->class, ELF_T_CHDR);
+ }
else if (type == SHT_HASH)
{
GElf_Ehdr ehdr_mem;
--
1.8.3.1
next prev parent reply other threads:[~2018-11-13 20:46 UTC|newest]
Thread overview: 153+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-13 16:42 buildbot
2018-11-13 17:29 ` Mark Wielaard
2018-11-13 20:46 ` Mark Wielaard [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-02-07 20:27 buildbot
2022-02-07 20:46 ` Mark Wielaard
2022-02-07 22:29 ` Mark Wielaard
2022-02-08 10:18 ` Mark Wielaard
2022-01-07 18:02 buildbot
2021-12-21 16:34 buildbot
2021-12-21 13:36 buildbot
2021-12-17 18:34 buildbot
2021-12-16 1:10 buildbot
2021-12-16 17:05 ` Mark Wielaard
2021-12-10 19:56 buildbot
2021-12-11 16:16 ` Mark Wielaard
2021-12-08 17:20 buildbot
2021-12-08 22:08 ` Mark Wielaard
2021-11-15 10:56 buildbot
2021-11-15 11:37 ` Mark Wielaard
2021-11-04 20:14 buildbot
2021-11-05 9:28 ` Mark Wielaard
2021-10-18 13:45 buildbot
2021-10-18 13:50 ` Mark Wielaard
2021-09-16 15:00 buildbot
2021-09-16 16:16 ` Mark Wielaard
2021-09-12 23:16 buildbot
2021-09-13 9:06 ` Mark Wielaard
2021-09-14 11:05 ` Mark Wielaard
2021-09-12 21:56 buildbot
2021-09-12 22:30 ` Mark Wielaard
2021-09-10 5:54 buildbot
2021-09-10 4:42 buildbot
2021-09-10 1:00 buildbot
2021-09-09 16:05 buildbot
2021-09-07 1:51 buildbot
2021-09-07 0:29 buildbot
2021-09-06 21:44 buildbot
2021-09-03 14:08 buildbot
2021-09-03 23:47 ` Mark Wielaard
2021-09-06 15:07 ` Mark Wielaard
2021-09-06 20:02 ` Mark Wielaard
2021-09-06 21:14 ` Mark Wielaard
2021-09-07 0:12 ` Mark Wielaard
2021-09-07 8:34 ` Dmitry V. Levin
2021-09-07 22:04 ` Mark Wielaard
2021-09-03 10:33 buildbot
2021-09-03 11:14 ` Mark Wielaard
2021-08-27 23:19 buildbot
2021-08-28 14:01 ` Mark Wielaard
2021-08-28 14:41 ` Frank Ch. Eigler
2021-08-27 21:20 buildbot
2021-08-28 12:29 ` Mark Wielaard
2021-08-11 23:16 buildbot
2021-08-23 20:48 ` Mark Wielaard
2021-08-04 15:13 buildbot
2021-08-05 14:19 ` Mark Wielaard
2021-07-22 17:21 buildbot
2021-07-22 14:24 buildbot
2021-07-22 14:36 ` Mark Wielaard
2021-07-19 16:33 buildbot
2021-07-08 9:53 buildbot
2021-07-08 9:56 ` Mark Wielaard
2021-06-15 21:29 buildbot
2021-06-15 21:40 ` Mark Wielaard
2021-06-15 21:53 ` Frank Ch. Eigler
2021-06-15 22:14 ` Mark Wielaard
2021-06-15 23:00 ` Frank Ch. Eigler
2021-06-16 9:35 ` Mark Wielaard
2021-06-12 23:39 buildbot
2021-06-12 23:53 ` Mark Wielaard
2021-04-15 12:53 buildbot
2021-04-13 16:54 buildbot
2021-04-14 12:13 ` Mark Wielaard
2021-04-13 14:29 buildbot
2021-04-14 12:06 ` Mark Wielaard
2021-03-31 11:29 buildbot
2021-03-31 11:37 ` Mark Wielaard
2021-03-07 19:11 buildbot
2021-03-06 14:45 buildbot
2021-03-06 15:46 ` Mark Wielaard
2021-03-02 12:45 buildbot
2021-03-02 11:53 buildbot
2021-03-02 4:28 buildbot
2021-03-01 19:56 buildbot
2021-03-01 22:13 ` Mark Wielaard
2021-02-17 22:22 buildbot
2021-02-12 18:45 buildbot
2021-02-12 16:40 buildbot
2021-02-09 2:26 buildbot
2021-02-09 9:05 ` Mark Wielaard
2021-02-12 15:58 ` Mark Wielaard
2021-02-12 19:09 ` Mark Wielaard
2020-12-16 23:54 buildbot
2020-12-16 23:58 ` Mark Wielaard
2020-12-12 17:11 buildbot
2020-12-12 18:47 ` Mark Wielaard
2020-11-28 4:15 buildbot
2020-11-28 13:41 ` Mark Wielaard
2020-11-28 15:12 ` Mark Wielaard
2020-11-29 1:18 ` Mark Wielaard
2020-11-23 17:50 buildbot
2020-11-23 17:58 ` Mark Wielaard
2020-11-19 13:26 buildbot
2020-11-19 13:55 ` Mark Wielaard
2020-11-17 15:09 buildbot
2020-11-17 17:10 ` Mark Wielaard
2020-10-31 2:12 buildbot
2020-10-31 10:22 ` Mark Wielaard
2020-10-30 15:41 buildbot
2020-10-30 1:51 buildbot
2020-10-30 8:45 ` Mark Wielaard
2020-10-08 16:45 buildbot
2020-10-08 17:38 ` Mark Wielaard
2020-06-19 23:20 buildbot
2020-06-19 23:47 ` Mark Wielaard
2020-06-11 16:00 buildbot
2020-06-11 16:15 ` Mark Wielaard
2020-03-26 16:53 buildbot
2020-03-25 23:48 buildbot
2020-03-26 9:15 ` Mark Wielaard
2020-03-23 13:38 buildbot
2020-03-23 14:08 ` Mark Wielaard
2020-03-23 23:06 ` Mark Wielaard
2020-03-04 12:09 buildbot
2020-03-04 12:45 ` Mark Wielaard
2020-02-26 21:42 buildbot
2020-02-26 21:59 ` Mark Wielaard
2020-02-10 22:34 buildbot
2020-02-21 12:10 ` Mark Wielaard
2020-02-10 19:11 buildbot
2020-01-20 21:05 buildbot
2020-01-20 19:44 buildbot
2020-01-17 0:08 buildbot
2019-12-03 9:49 buildbot
2019-12-03 10:23 ` Mark Wielaard
2019-11-23 2:25 buildbot
2019-11-23 1:38 buildbot
2019-10-26 2:47 buildbot
2019-10-26 12:08 ` Mark Wielaard
2019-09-07 14:54 buildbot
2019-09-07 19:53 ` Mark Wielaard
2019-08-29 13:59 buildbot
2019-08-29 14:23 ` Mark Wielaard
2019-08-29 15:52 ` Mark Wielaard
2019-08-28 22:08 buildbot
2019-08-28 22:13 ` Mark Wielaard
2019-08-15 8:28 buildbot
2019-06-28 23:02 buildbot
2019-06-28 23:47 ` Mark Wielaard
2019-07-01 15:12 ` Mark Wielaard
2018-11-10 12:32 buildbot
2018-11-10 12:36 ` Mark Wielaard
2018-11-06 14:15 buildbot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ac03f88caf659bfec5117bdf03a76bd63f7799cb.camel@klomp.org \
--to=mark@klomp.org \
--cc=elfutils-devel@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).