aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--util/cbfstool/elf.h3
-rw-r--r--util/cbfstool/rmodule.c5
2 files changed, 6 insertions, 2 deletions
diff --git a/util/cbfstool/elf.h b/util/cbfstool/elf.h
index 8b56a7172c..f6356c63b3 100644
--- a/util/cbfstool/elf.h
+++ b/util/cbfstool/elf.h
@@ -2222,6 +2222,8 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_ARM_GOTPC 25 /* 32 bit PC relative offset to GOT */
#define R_ARM_GOT32 26 /* 32 bit GOT entry */
#define R_ARM_PLT32 27 /* 32 bit PLT address */
+#define R_ARM_CALL 28
+#define R_ARM_JUMP24 29
#define R_ARM_THM_JUMP24 30
#define R_ARM_ALU_PCREL_7_0 32
#define R_ARM_ALU_PCREL_15_8 33
@@ -2229,6 +2231,7 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_ARM_LDR_SBREL_11_0 35
#define R_ARM_ALU_SBREL_19_12 36
#define R_ARM_ALU_SBREL_27_20 37
+#define R_ARM_V4BX 40
#define R_ARM_GNU_VTENTRY 100
#define R_ARM_GNU_VTINHERIT 101
#define R_ARM_THM_PC11 102 /* thumb unconditional branch */
diff --git a/util/cbfstool/rmodule.c b/util/cbfstool/rmodule.c
index 966c364c47..1c8aea7052 100644
--- a/util/cbfstool/rmodule.c
+++ b/util/cbfstool/rmodule.c
@@ -88,9 +88,10 @@ static int valid_reloc_arm(struct rmod_context *ctx, Elf64_Rela *rel)
type = ELF64_R_TYPE(rel->r_info);
- /* Only these 3 relocations are expected to be found. */
+ /* Only these 6 relocations are expected to be found. */
return (type == R_ARM_ABS32 || type == R_ARM_THM_PC22 ||
- type == R_ARM_THM_JUMP24);
+ type == R_ARM_THM_JUMP24 || type == R_ARM_V4BX ||
+ type == R_ARM_CALL || type == R_ARM_JUMP24);
}
static int should_emit_arm(struct rmod_context *ctx, Elf64_Rela *rel)