Skip to content

Commit 26f53f2

Browse files
committed
openrisc: Define openrisc relocation types
This defines the current OpenRISC relocation types using the current R_OR1K_* naming conventions. The old R_OR32_* definitions are left for backwards compatibility. Note, the R_OR32_VTENTRY and R_OR32_VTINHERIT macros were defined with the wrong values the have always been 7 and 8 respectively, not 8 and 7. They are not used for module loading and I have updated them to use the correct values. Signed-off-by: Stafford Horne <[email protected]>
1 parent c94195a commit 26f53f2

File tree

2 files changed

+70
-13
lines changed

2 files changed

+70
-13
lines changed

arch/openrisc/include/uapi/asm/elf.h

Lines changed: 66 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,72 @@
3434
#include <asm/ptrace.h>
3535

3636
/* The OR1K relocation types... not all relevant for module loader */
37-
#define R_OR32_NONE 0
38-
#define R_OR32_32 1
39-
#define R_OR32_16 2
40-
#define R_OR32_8 3
41-
#define R_OR32_CONST 4
42-
#define R_OR32_CONSTH 5
43-
#define R_OR32_JUMPTARG 6
44-
#define R_OR32_VTINHERIT 7
45-
#define R_OR32_VTENTRY 8
37+
#define R_OR1K_NONE 0
38+
#define R_OR1K_32 1
39+
#define R_OR1K_16 2
40+
#define R_OR1K_8 3
41+
#define R_OR1K_LO_16_IN_INSN 4
42+
#define R_OR1K_HI_16_IN_INSN 5
43+
#define R_OR1K_INSN_REL_26 6
44+
#define R_OR1K_GNU_VTENTRY 7
45+
#define R_OR1K_GNU_VTINHERIT 8
46+
#define R_OR1K_32_PCREL 9
47+
#define R_OR1K_16_PCREL 10
48+
#define R_OR1K_8_PCREL 11
49+
#define R_OR1K_GOTPC_HI16 12
50+
#define R_OR1K_GOTPC_LO16 13
51+
#define R_OR1K_GOT16 14
52+
#define R_OR1K_PLT26 15
53+
#define R_OR1K_GOTOFF_HI16 16
54+
#define R_OR1K_GOTOFF_LO16 17
55+
#define R_OR1K_COPY 18
56+
#define R_OR1K_GLOB_DAT 19
57+
#define R_OR1K_JMP_SLOT 20
58+
#define R_OR1K_RELATIVE 21
59+
#define R_OR1K_TLS_GD_HI16 22
60+
#define R_OR1K_TLS_GD_LO16 23
61+
#define R_OR1K_TLS_LDM_HI16 24
62+
#define R_OR1K_TLS_LDM_LO16 25
63+
#define R_OR1K_TLS_LDO_HI16 26
64+
#define R_OR1K_TLS_LDO_LO16 27
65+
#define R_OR1K_TLS_IE_HI16 28
66+
#define R_OR1K_TLS_IE_LO16 29
67+
#define R_OR1K_TLS_LE_HI16 30
68+
#define R_OR1K_TLS_LE_LO16 31
69+
#define R_OR1K_TLS_TPOFF 32
70+
#define R_OR1K_TLS_DTPOFF 33
71+
#define R_OR1K_TLS_DTPMOD 34
72+
#define R_OR1K_AHI16 35
73+
#define R_OR1K_GOTOFF_AHI16 36
74+
#define R_OR1K_TLS_IE_AHI16 37
75+
#define R_OR1K_TLS_LE_AHI16 38
76+
#define R_OR1K_SLO16 39
77+
#define R_OR1K_GOTOFF_SLO16 40
78+
#define R_OR1K_TLS_LE_SLO16 41
79+
#define R_OR1K_PCREL_PG21 42
80+
#define R_OR1K_GOT_PG21 43
81+
#define R_OR1K_TLS_GD_PG21 44
82+
#define R_OR1K_TLS_LDM_PG21 45
83+
#define R_OR1K_TLS_IE_PG21 46
84+
#define R_OR1K_LO13 47
85+
#define R_OR1K_GOT_LO13 48
86+
#define R_OR1K_TLS_GD_LO13 49
87+
#define R_OR1K_TLS_LDM_LO13 50
88+
#define R_OR1K_TLS_IE_LO13 51
89+
#define R_OR1K_SLO13 52
90+
#define R_OR1K_PLTA26 53
91+
#define R_OR1K_GOT_AHI16 54
92+
93+
/* Old relocation names */
94+
#define R_OR32_NONE R_OR1K_NONE
95+
#define R_OR32_32 R_OR1K_32
96+
#define R_OR32_16 R_OR1K_16
97+
#define R_OR32_8 R_OR1K_8
98+
#define R_OR32_CONST R_OR1K_LO_16_IN_INSN
99+
#define R_OR32_CONSTH R_OR1K_HI_16_IN_INSN
100+
#define R_OR32_JUMPTARG R_OR1K_INSN_REL_26
101+
#define R_OR32_VTENTRY R_OR1K_GNU_VTENTRY
102+
#define R_OR32_VTINHERIT R_OR1K_GNU_VTINHERIT
46103

47104
typedef unsigned long elf_greg_t;
48105

arch/openrisc/kernel/module.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,16 @@ int apply_relocate_add(Elf32_Shdr *sechdrs,
3939
value = sym->st_value + rel[i].r_addend;
4040

4141
switch (ELF32_R_TYPE(rel[i].r_info)) {
42-
case R_OR32_32:
42+
case R_OR1K_32:
4343
*location = value;
4444
break;
45-
case R_OR32_CONST:
45+
case R_OR1K_LO_16_IN_INSN:
4646
*((uint16_t *)location + 1) = value;
4747
break;
48-
case R_OR32_CONSTH:
48+
case R_OR1K_HI_16_IN_INSN:
4949
*((uint16_t *)location + 1) = value >> 16;
5050
break;
51-
case R_OR32_JUMPTARG:
51+
case R_OR1K_INSN_REL_26:
5252
value -= (uint32_t)location;
5353
value >>= 2;
5454
value &= 0x03ffffff;

0 commit comments

Comments
 (0)