public inbox for linux-kbuild@vger.kernel.org
 help / color / mirror / Atom feed
From: Sathvika Vasireddy <sv@linux.ibm.com>
To: linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org,
	linuxppc-dev@lists.ozlabs.org
Cc: nathan@kernel.org, masahiroy@kernel.org, kees@kernel.org,
	naveen@kernel.org, jpoimboe@kernel.org, peterz@infradead.org,
	npiggin@gmail.com, maddy@linux.ibm.com,
	segher@kernel.crashing.org, christophe.leroy@csgroup.eu,
	mingo@kernel.org, mpe@ellerman.id.au, sv@linux.ibm.com,
	nsc@kernel.org
Subject: [RFC PATCH v4 2/6] objtool: Set ELF_F_LAYOUT flag to preserve vmlinux segment layout
Date: Mon, 16 Mar 2026 11:52:33 +0530	[thread overview]
Message-ID: <20260316062237.30948-3-sv@linux.ibm.com> (raw)
In-Reply-To: <20260316062237.30948-1-sv@linux.ibm.com>

When objtool writes changes back to vmlinux with --ftr-fixup --link,
libelf recalculates the file layout and inserts padding between
sections. This corrupts the ELF segment structure, causing kexec to
fail with:

    ELF Note corrupted !
    Cannot determine the file type of vmlinux

This happens because libelf's default behavior assumes it can freely
rearrange section offsets when writing, which breaks the carefully
constructed vmlinux layout produced by the linker.

Set ELF_F_LAYOUT after elf_begin() to instruct libelf that the
application is responsible for the file layout. This prevents libelf
from inserting padding or repositioning sections while still allowing
data modifications to be written back.

Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
---
 tools/objtool/elf.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c
index d519eb3d7fd8..3c84c2713a7b 100644
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -1158,6 +1158,9 @@ struct elf *elf_open_read(const char *name, int flags)
 
 	elf->elf = elf_begin(elf->fd, cmd, NULL);
 
+	if (opts.ftr_fixup)
+		elf_flagelf(elf->elf, ELF_C_SET, ELF_F_LAYOUT);
+
 	if (!elf->elf) {
 		ERROR_ELF("elf_begin");
 		goto err;
-- 
2.43.0


  parent reply	other threads:[~2026-03-16  6:26 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-16  6:22 [RFC PATCH v4 0/6] objtool: Fixup alternate feature relative addresses Sathvika Vasireddy
2026-03-16  6:22 ` [RFC PATCH v4 1/6] objtool/powerpc: Add build-time fixup of alternate feature branch targets Sathvika Vasireddy
2026-03-16  6:22 ` Sathvika Vasireddy [this message]
2026-03-16  6:22 ` [RFC PATCH v4 3/6] objtool: Fix "can't find starting instruction" warnings on vmlinux Sathvika Vasireddy
2026-03-16  6:22 ` [RFC PATCH v4 4/6] objtool/powerpc: Skip jump destination analysis and unnanotated intra-function call warnings for --ftr-fixup Sathvika Vasireddy
2026-03-16  6:22 ` [RFC PATCH v4 5/6] kbuild: Add objtool integration for PowerPC feature fixups Sathvika Vasireddy
2026-03-16 15:52   ` Nicolas Schier
2026-03-16  6:22 ` [RFC PATCH v4 6/6] powerpc: Enable build-time feature fixup processing by default Sathvika Vasireddy

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=20260316062237.30948-3-sv@linux.ibm.com \
    --to=sv@linux.ibm.com \
    --cc=christophe.leroy@csgroup.eu \
    --cc=jpoimboe@kernel.org \
    --cc=kees@kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.ibm.com \
    --cc=masahiroy@kernel.org \
    --cc=mingo@kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=nathan@kernel.org \
    --cc=naveen@kernel.org \
    --cc=npiggin@gmail.com \
    --cc=nsc@kernel.org \
    --cc=peterz@infradead.org \
    --cc=segher@kernel.crashing.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