From 4ff051880fc5d2aa431f049a52bffb5b405c5414 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Fri, 22 Mar 2019 21:24:24 +0100 Subject: [PATCH] Support R_PPC_PLTREL24 It's emitted by clang 7. It's the same as R_PPC_REL24. Signed-off-by: Vladimir Serbinenko --- grub-core/kern/powerpc/dl.c | 4 +++- util/grub-module-verifier.c | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) 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[]){