From: Vladimir Serbinenko Date: Fri, 22 Mar 2019 20:24:24 +0000 (+0100) Subject: Support R_PPC_PLTREL24 X-Git-Tag: grub-2.04-rc1~20 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4ff051880fc5d2aa431f049a52bffb5b405c5414;p=thirdparty%2Fgrub.git Support R_PPC_PLTREL24 It's emitted by clang 7. It's the same as R_PPC_REL24. Signed-off-by: Vladimir Serbinenko --- diff --git a/grub-core/kern/powerpc/dl.c b/grub-core/kern/powerpc/dl.c index 3a7fa3ed3..cdd61b305 100644 --- a/grub-core/kern/powerpc/dl.c +++ b/grub-core/kern/powerpc/dl.c @@ -79,7 +79,8 @@ grub_arch_dl_get_tramp_got_size (const void *ehdr, grub_size_t *tramp, max = rel + s->sh_size / s->sh_entsize; rel < max; rel++) - if (ELF_R_TYPE (rel->r_info) == GRUB_ELF_R_PPC_REL24) + if (ELF_R_TYPE (rel->r_info) == GRUB_ELF_R_PPC_REL24 + || ELF_R_TYPE (rel->r_info) == GRUB_ELF_R_PPC_PLTREL24) (*tramp)++; } @@ -122,6 +123,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr, *(Elf_Half *) addr = value; break; + case GRUB_ELF_R_PPC_PLTREL24: case GRUB_ELF_R_PPC_REL24: { Elf_Sword delta = value - (Elf_Word) addr; diff --git a/util/grub-module-verifier.c b/util/grub-module-verifier.c index 60e4d2c06..163529ca9 100644 --- a/util/grub-module-verifier.c +++ b/util/grub-module-verifier.c @@ -29,6 +29,7 @@ struct grub_module_verifier_arch archs[] = { GRUB_ELF_R_PPC_ADDR16_HA, GRUB_ELF_R_PPC_ADDR32, GRUB_ELF_R_PPC_REL32, + GRUB_ELF_R_PPC_PLTREL24, -1 } }, { "sparc64", 8, 1, EM_SPARCV9, GRUB_MODULE_VERIFY_SUPPORTS_RELA, (int[]){