]> git.baikalelectronics.ru Git - kernel.git/commit
objtool: Update section header before relocations
authorMichael Forney <mforney@mforney.org>
Sun, 9 May 2021 00:01:03 +0000 (17:01 -0700)
committerJosh Poimboeuf <jpoimboe@redhat.com>
Thu, 7 Oct 2021 03:11:57 +0000 (20:11 -0700)
commit1b2ed73d7998f78d9197a5b3aefb5101994f0c10
tree307354a08cc0e5c4c0fa9968b9b7bf84010104be
parent1ebbad597078bf2c1a1c913a25dff302a358c752
objtool: Update section header before relocations

The libelf implementation from elftoolchain has a safety check in
gelf_update_rel[a] to check that the data corresponds to a section
that has type SHT_REL[A] [0]. If the relocation is updated before
the section header is updated with the proper type, this check
fails.

To fix this, update the section header first, before the relocations.
Previously, the section size was calculated in elf_rebuild_reloc_section
by counting the number of entries in the reloc_list. However, we
now need the size during elf_write so instead keep a running total
and add to it for every new relocation.

[0] https://sourceforge.net/p/elftoolchain/mailman/elftoolchain-developers/thread/CAGw6cBtkZro-8wZMD2ULkwJ39J+tHtTtAWXufMjnd3cQ7XG54g@mail.gmail.com/

Signed-off-by: Michael Forney <mforney@mforney.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/r/20210509000103.11008-2-mforney@mforney.org
tools/objtool/elf.c