]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
modpost: drop executable ELF support
authorMasahiro Yamada <masahiroy@kernel.org>
Tue, 19 Jul 2022 16:52:59 +0000 (01:52 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Wed, 27 Jul 2022 12:18:00 +0000 (21:18 +0900)
Since commit 269a535ca931 ("modpost: generate vmlinux.symvers and
reuse it for the second modpost"), modpost only parses relocatable
files (ET_REL).

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
scripts/mod/modpost.c

index e15227ee58fc0268309cd67f37089e9806d9a634..75aa10413ad40f33aebe237dbe25b27e92d4a3d8 100644 (file)
@@ -321,9 +321,6 @@ static void *sym_get_data_by_offset(const struct elf_info *info,
 {
        Elf_Shdr *sechdr = &info->sechdrs[secindex];
 
-       if (info->hdr->e_type != ET_REL)
-               offset -= sechdr->sh_addr;
-
        return (void *)info->hdr + sechdr->sh_offset + offset;
 }
 
@@ -466,6 +463,10 @@ static int parse_elf(struct elf_info *info, const char *filename)
        sechdrs = (void *)hdr + hdr->e_shoff;
        info->sechdrs = sechdrs;
 
+       /* modpost only works for relocatable objects */
+       if (hdr->e_type != ET_REL)
+               fatal("%s: not relocatable object.", filename);
+
        /* Check if file offset is correct */
        if (hdr->e_shoff > info->size) {
                fatal("section header offset=%lu in file '%s' is bigger than filesize=%zu\n",
@@ -1622,9 +1623,6 @@ static int addend_386_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
                break;
        case R_386_PC32:
                r->r_addend = TO_NATIVE(*location) + 4;
-               /* For CONFIG_RELOCATABLE=y */
-               if (elf->hdr->e_type == ET_EXEC)
-                       r->r_addend += r->r_offset;
                break;
        }
        return 0;