]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Support R_PPC_PLTREL24
authorVladimir Serbinenko <phcoder@gmail.com>
Fri, 22 Mar 2019 20:24:24 +0000 (21:24 +0100)
committerVladimir Serbinenko <phcoder@google.com>
Mon, 25 Mar 2019 14:08:49 +0000 (15:08 +0100)
It's emitted by clang 7. It's the same as R_PPC_REL24.

Signed-off-by: Vladimir Serbinenko <phcoder@google.com>
grub-core/kern/powerpc/dl.c
util/grub-module-verifier.c

index 3a7fa3ed3dc50c2a272062d42f8eb5584c6c9fc7..cdd61b305f8f3a6a9701b7e96fdfc179bdd26740 100644 (file)
@@ -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;
index 60e4d2c06aba2269dde02c82d827fcc337d2aba8..163529ca9c25422ee228fadbda0e722f634a3cc5 100644 (file)
@@ -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[]){