arm: Fix trampoline generation.
authorVladimir Serbinenko <phcoder@gmail.com>
Wed, 1 Feb 2017 14:58:36 +0000 (15:58 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Wed, 1 Feb 2017 14:58:36 +0000 (15:58 +0100)
We used the wrong pointer in this case. It worked only by accident.

grub-core/kern/arm/dl.c

index 24364e1..fe0abf9 100644 (file)
@@ -232,8 +232,8 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
            if (!grub_arm_thm_jump19_check_offset (offset)
                || !(sym_addr & 1))
              {
-               struct trampoline_thumb *tp = mod->gotptr;
-               mod->gotptr = tp + 1;
+               struct trampoline_thumb *tp = mod->trampptr;
+               mod->trampptr = tp + 1;
                grub_memcpy (tp->template, thumb_template, sizeof (tp->template));
                tp->neg_addr = -sym_addr - 4;
                offset = ((grub_uint8_t *) tp - (grub_uint8_t *) target - 4) | 1;