hc
2023-12-06 d38611ca164021d018c1b23eee65bbebc09c63e0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*
 * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
 * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
 * Copyright (C) 2012 Regents of the University of California
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */
 
#ifndef _UAPI_ASM_RISCV_ELF_H
#define _UAPI_ASM_RISCV_ELF_H
 
#include <asm/ptrace.h>
 
/* ELF register definitions */
typedef unsigned long elf_greg_t;
typedef struct user_regs_struct elf_gregset_t;
#define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
 
/* We don't support f without d, or q.  */
typedef __u64 elf_fpreg_t;
typedef union __riscv_fp_state elf_fpregset_t;
#define ELF_NFPREG (sizeof(struct __riscv_d_ext_state) / sizeof(elf_fpreg_t))
 
#if __riscv_xlen == 64
#define ELF_RISCV_R_SYM(r_info)        ELF64_R_SYM(r_info)
#define ELF_RISCV_R_TYPE(r_info)    ELF64_R_TYPE(r_info)
#else
#define ELF_RISCV_R_SYM(r_info)        ELF32_R_SYM(r_info)
#define ELF_RISCV_R_TYPE(r_info)    ELF32_R_TYPE(r_info)
#endif
 
/*
 * RISC-V relocation types
 */
 
/* Relocation types used by the dynamic linker */
#define R_RISCV_NONE        0
#define R_RISCV_32        1
#define R_RISCV_64        2
#define R_RISCV_RELATIVE    3
#define R_RISCV_COPY        4
#define R_RISCV_JUMP_SLOT    5
#define R_RISCV_TLS_DTPMOD32    6
#define R_RISCV_TLS_DTPMOD64    7
#define R_RISCV_TLS_DTPREL32    8
#define R_RISCV_TLS_DTPREL64    9
#define R_RISCV_TLS_TPREL32    10
#define R_RISCV_TLS_TPREL64    11
 
/* Relocation types not used by the dynamic linker */
#define R_RISCV_BRANCH        16
#define R_RISCV_JAL        17
#define R_RISCV_CALL        18
#define R_RISCV_CALL_PLT    19
#define R_RISCV_GOT_HI20    20
#define R_RISCV_TLS_GOT_HI20    21
#define R_RISCV_TLS_GD_HI20    22
#define R_RISCV_PCREL_HI20    23
#define R_RISCV_PCREL_LO12_I    24
#define R_RISCV_PCREL_LO12_S    25
#define R_RISCV_HI20        26
#define R_RISCV_LO12_I        27
#define R_RISCV_LO12_S        28
#define R_RISCV_TPREL_HI20    29
#define R_RISCV_TPREL_LO12_I    30
#define R_RISCV_TPREL_LO12_S    31
#define R_RISCV_TPREL_ADD    32
#define R_RISCV_ADD8        33
#define R_RISCV_ADD16        34
#define R_RISCV_ADD32        35
#define R_RISCV_ADD64        36
#define R_RISCV_SUB8        37
#define R_RISCV_SUB16        38
#define R_RISCV_SUB32        39
#define R_RISCV_SUB64        40
#define R_RISCV_GNU_VTINHERIT    41
#define R_RISCV_GNU_VTENTRY    42
#define R_RISCV_ALIGN        43
#define R_RISCV_RVC_BRANCH    44
#define R_RISCV_RVC_JUMP    45
#define R_RISCV_LUI        46
#define R_RISCV_GPREL_I        47
#define R_RISCV_GPREL_S        48
#define R_RISCV_TPREL_I        49
#define R_RISCV_TPREL_S        50
#define R_RISCV_RELAX        51
#define R_RISCV_SUB6        52
#define R_RISCV_SET6        53
#define R_RISCV_SET8        54
#define R_RISCV_SET16        55
#define R_RISCV_SET32        56
#define R_RISCV_32_PCREL    57
 
 
#endif /* _UAPI_ASM_RISCV_ELF_H */