a5bd9f6
From d00603517b5b4226d3467765d46628db271ad887 Mon Sep 17 00:00:00 2001
a5bd9f6
From: Francesco Lavra  <francescolavra.fl@gmail.com>
a5bd9f6
Date: Wed, 3 Apr 2013 11:23:22 +0200
a5bd9f6
Subject: [PATCH 244/364] 	* include/grub/elf.h: Add missing ARM
a5bd9f6
 relocation codes and fix 	  existing ones.
a5bd9f6
a5bd9f6
---
a5bd9f6
 ChangeLog          |   5 +++
a5bd9f6
 include/grub/elf.h | 110 ++++++++++++++++++++++++++++++++++++++++++++---------
a5bd9f6
 2 files changed, 98 insertions(+), 17 deletions(-)
a5bd9f6
a5bd9f6
diff --git a/ChangeLog b/ChangeLog
a5bd9f6
index 5e516dc..56588dd 100644
a5bd9f6
--- a/ChangeLog
a5bd9f6
+++ b/ChangeLog
a5bd9f6
@@ -1,3 +1,8 @@
a5bd9f6
+2013-04-03  Francesco Lavra  <francescolavra.fl@gmail.com>
a5bd9f6
+
a5bd9f6
+	* include/grub/elf.h: Add missing ARM relocation codes and fix
a5bd9f6
+	  existing ones.
a5bd9f6
+
a5bd9f6
 2013-04-03  Vladimir Testov <vladimir.testov@rosalab.ru>
a5bd9f6
 
a5bd9f6
 	* grub-core/gfxmenu/gui_progress_bar.c: Handle padding sizes.
a5bd9f6
diff --git a/include/grub/elf.h b/include/grub/elf.h
a5bd9f6
index d4a2a5f..708cd6a 100644
a5bd9f6
--- a/include/grub/elf.h
a5bd9f6
+++ b/include/grub/elf.h
a5bd9f6
@@ -2067,7 +2067,7 @@ typedef Elf32_Addr Elf32_Conflict;
a5bd9f6
 #define R_ARM_PC24		1	/* PC relative 26 bit branch */
a5bd9f6
 #define R_ARM_ABS32		2	/* Direct 32 bit  */
a5bd9f6
 #define R_ARM_REL32		3	/* PC relative 32 bit */
a5bd9f6
-#define R_ARM_PC13		4
a5bd9f6
+#define R_ARM_LDR_PC_G0		4
a5bd9f6
 #define R_ARM_ABS16		5	/* Direct 16 bit */
a5bd9f6
 #define R_ARM_ABS12		6	/* Direct 12 bit */
a5bd9f6
 #define R_ARM_THM_ABS5		7
a5bd9f6
@@ -2075,18 +2075,21 @@ typedef Elf32_Addr Elf32_Conflict;
a5bd9f6
 #define R_ARM_SBREL32		9
a5bd9f6
 #define R_ARM_THM_CALL		10
a5bd9f6
 #define R_ARM_THM_PC8		11
a5bd9f6
-#define R_ARM_AMP_VCALL9	12
a5bd9f6
-#define R_ARM_SWI24		13
a5bd9f6
+#define R_ARM_BREL_ADJ		12
a5bd9f6
+#define R_ARM_TLS_DESC		13
a5bd9f6
 #define R_ARM_THM_SWI8		14
a5bd9f6
 #define R_ARM_XPC25		15
a5bd9f6
 #define R_ARM_THM_XPC22		16
a5bd9f6
+#define R_ARM_TLS_DTPMOD32	17
a5bd9f6
+#define R_ARM_TLS_DTPOFF32	18
a5bd9f6
+#define R_ARM_TLS_TPOFF32	19
a5bd9f6
 #define R_ARM_COPY		20	/* Copy symbol at runtime */
a5bd9f6
 #define R_ARM_GLOB_DAT		21	/* Create GOT entry */
a5bd9f6
 #define R_ARM_JUMP_SLOT		22	/* Create PLT entry */
a5bd9f6
 #define R_ARM_RELATIVE		23	/* Adjust by program base */
a5bd9f6
-#define R_ARM_GOTOFF		24	/* 32 bit offset to GOT */
a5bd9f6
-#define R_ARM_GOTPC		25	/* 32 bit PC relative offset to GOT */
a5bd9f6
-#define R_ARM_GOT32		26	/* 32 bit GOT entry */
a5bd9f6
+#define R_ARM_GOTOFF32		24	/* 32 bit offset to GOT */
a5bd9f6
+#define R_ARM_BASE_PREL		25	/* 32 bit PC relative offset to GOT */
a5bd9f6
+#define R_ARM_GOT_BREL		26	/* 32 bit GOT entry */
a5bd9f6
 #define R_ARM_PLT32		27	/* 32 bit PLT address */
a5bd9f6
 #define R_ARM_CALL		28
a5bd9f6
 #define R_ARM_JUMP24		29
a5bd9f6
@@ -2098,14 +2101,72 @@ typedef Elf32_Addr Elf32_Conflict;
a5bd9f6
 #define R_ARM_LDR_SBREL_11_0	35
a5bd9f6
 #define R_ARM_ALU_SBREL_19_12	36
a5bd9f6
 #define R_ARM_ALU_SBREL_27_20	37
a5bd9f6
+#define R_ARM_TARGET1		38
a5bd9f6
+#define R_ARM_SBREL31		39
a5bd9f6
+#define R_ARM_V4BX		40
a5bd9f6
+#define R_ARM_TARGET2		41
a5bd9f6
+#define R_ARM_PREL31		42
a5bd9f6
+#define R_ARM_MOVW_ABS_NC	43
a5bd9f6
+#define R_ARM_MOVT_ABS		44
a5bd9f6
+#define R_ARM_MOVW_PREL_NC	45
a5bd9f6
+#define R_ARM_MOVT_PREL		46
a5bd9f6
+#define R_ARM_THM_MOVW_ABS_NC	47
a5bd9f6
+#define R_ARM_THM_MOVT_ABS	48
a5bd9f6
+#define R_ARM_THM_MOVW_PREL_NC	49
a5bd9f6
+#define R_ARM_THM_MOVT_PREL	50
a5bd9f6
+#define R_ARM_THM_JUMP19	51
a5bd9f6
+#define R_ARM_THM_JUMP6		52
a5bd9f6
+#define R_ARM_THM_ALU_PREL_11_0	53
a5bd9f6
+#define R_ARM_THM_PC12		54
a5bd9f6
+#define R_ARM_ABS32_NOI		55
a5bd9f6
+#define R_ARM_REL32_NOI		56
a5bd9f6
+#define R_ARM_ALU_PC_G0_NC	57
a5bd9f6
+#define R_ARM_ALU_PC_G0		58
a5bd9f6
+#define R_ARM_ALU_PC_G1_NC	59
a5bd9f6
+#define R_ARM_ALU_PC_G1		60
a5bd9f6
+#define R_ARM_ALU_PC_G2		61
a5bd9f6
+#define R_ARM_LDR_PC_G1		62
a5bd9f6
+#define R_ARM_LDR_PC_G2		63
a5bd9f6
+#define R_ARM_LDRS_PC_G0	64
a5bd9f6
+#define R_ARM_LDRS_PC_G1	65
a5bd9f6
+#define R_ARM_LDRS_PC_G2	66
a5bd9f6
+#define R_ARM_LDC_PC_G0		67
a5bd9f6
+#define R_ARM_LDC_PC_G1		68
a5bd9f6
+#define R_ARM_LDC_PC_G2		69
a5bd9f6
+#define R_ARM_ALU_SB_G0_NC	70
a5bd9f6
+#define R_ARM_ALU_SB_G0		71
a5bd9f6
+#define R_ARM_ALU_SB_G1_NC	72
a5bd9f6
+#define R_ARM_ALU_SB_G1		73
a5bd9f6
+#define R_ARM_ALU_SB_G2		74
a5bd9f6
+#define R_ARM_LDR_SB_G0		75
a5bd9f6
+#define R_ARM_LDR_SB_G1		76
a5bd9f6
+#define R_ARM_LDR_SB_G2		77
a5bd9f6
+#define R_ARM_LDRS_SB_G0	78
a5bd9f6
+#define R_ARM_LDRS_SB_G1	79
a5bd9f6
+#define R_ARM_LDRS_SB_G2	80
a5bd9f6
+#define R_ARM_LDC_SB_G0		81
a5bd9f6
+#define R_ARM_LDC_SB_G1		82
a5bd9f6
+#define R_ARM_LDC_SB_G2		83
a5bd9f6
+#define R_ARM_MOVW_BREL_NC	84
a5bd9f6
+#define R_ARM_MOVT_BREL		85
a5bd9f6
+#define R_ARM_MOVW_BREL		86
a5bd9f6
+#define R_ARM_THM_MOVW_BREL_NC	87
a5bd9f6
+#define R_ARM_THM_MOVT_BREL	88
a5bd9f6
+#define R_ARM_THM_MOVW_BREL	89
a5bd9f6
 #define R_ARM_TLS_GOTDESC	90
a5bd9f6
 #define R_ARM_TLS_CALL		91
a5bd9f6
 #define R_ARM_TLS_DESCSEQ	92
a5bd9f6
 #define R_ARM_THM_TLS_CALL	93
a5bd9f6
+#define R_ARM_PLT32_ABS		94
a5bd9f6
+#define R_ARM_GOT_ABS		95
a5bd9f6
+#define R_ARM_GOT_PREL		96
a5bd9f6
+#define R_ARM_GOT_BREL12	97
a5bd9f6
+#define R_ARM_GOTOFF12		98
a5bd9f6
+#define R_ARM_GOTRELAX		99
a5bd9f6
 #define R_ARM_GNU_VTENTRY	100
a5bd9f6
 #define R_ARM_GNU_VTINHERIT	101
a5bd9f6
-#define R_ARM_THM_PC11		102	/* thumb unconditional branch */
a5bd9f6
-#define R_ARM_THM_PC9		103	/* thumb conditional branch */
a5bd9f6
+#define R_ARM_THM_JUMP11	102	/* thumb unconditional branch */
a5bd9f6
+#define R_ARM_THM_JUMP8		103	/* thumb conditional branch */
a5bd9f6
 #define R_ARM_TLS_GD32		104	/* PC-rel 32 bit for global dynamic
a5bd9f6
 					   thread local data */
a5bd9f6
 #define R_ARM_TLS_LDM32		105	/* PC-rel 32 bit for local dynamic
a5bd9f6
@@ -2116,15 +2177,30 @@ typedef Elf32_Addr Elf32_Conflict;
a5bd9f6
 					   static TLS block offset */
a5bd9f6
 #define R_ARM_TLS_LE32		108	/* 32 bit offset relative to static
a5bd9f6
 					   TLS block */
a5bd9f6
-#define	R_ARM_THM_TLS_DESCSEQ	129
a5bd9f6
-#define R_ARM_IRELATIVE		160
a5bd9f6
-#define R_ARM_RXPC25		249
a5bd9f6
-#define R_ARM_RSBREL32		250
a5bd9f6
-#define R_ARM_THM_RPC22		251
a5bd9f6
-#define R_ARM_RREL32		252
a5bd9f6
-#define R_ARM_RABS22		253
a5bd9f6
-#define R_ARM_RPC24		254
a5bd9f6
-#define R_ARM_RBASE		255
a5bd9f6
+#define R_ARM_TLS_LDO12		109
a5bd9f6
+#define R_ARM_TLS_LE12		110
a5bd9f6
+#define R_ARM_IE12GP		111
a5bd9f6
+#define R_ARM_PRIVATE_0		112
a5bd9f6
+#define R_ARM_PRIVATE_1		113
a5bd9f6
+#define R_ARM_PRIVATE_2		114
a5bd9f6
+#define R_ARM_PRIVATE_3		115
a5bd9f6
+#define R_ARM_PRIVATE_4		116
a5bd9f6
+#define R_ARM_PRIVATE_5		117
a5bd9f6
+#define R_ARM_PRIVATE_6		118
a5bd9f6
+#define R_ARM_PRIVATE_7		119
a5bd9f6
+#define R_ARM_PRIVATE_8		120
a5bd9f6
+#define R_ARM_PRIVATE_9		121
a5bd9f6
+#define R_ARM_PRIVATE_10	122
a5bd9f6
+#define R_ARM_PRIVATE_11	123
a5bd9f6
+#define R_ARM_PRIVATE_12	124
a5bd9f6
+#define R_ARM_PRIVATE_13	125
a5bd9f6
+#define R_ARM_PRIVATE_14	126
a5bd9f6
+#define R_ARM_PRIVATE_15	127
a5bd9f6
+#define R_ARM_ME_TOO		128
a5bd9f6
+#define R_ARM_THM_TLS_DESCSEQ16	129
a5bd9f6
+#define R_ARM_THM_TLS_DESCSEQ32	130
a5bd9f6
+#define R_ARM_THM_GOT_BREL12	131
a5bd9f6
+#define R_ARM_IRELATIVE		140
a5bd9f6
 /* Keep this the last entry.  */
a5bd9f6
 #define R_ARM_NUM		256
a5bd9f6
 
a5bd9f6
-- 
a5bd9f6
1.8.1.4
a5bd9f6