1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef RELOCS_H
3 #define RELOCS_H
4 
5 #include <stdio.h>
6 #include <stdarg.h>
7 #include <stdlib.h>
8 #include <stdint.h>
9 #include <inttypes.h>
10 #include <string.h>
11 #include <errno.h>
12 #include <unistd.h>
13 #include <elf.h>
14 #include <byteswap.h>
15 #include <endian.h>
16 #include <regex.h>
17 
18 void die(char *fmt, ...);
19 
20 #ifndef EM_LOONGARCH
21 #define EM_LOONGARCH	258
22 #endif
23 #define R_LARCH_NONE				0
24 #define R_LARCH_32 				1
25 #define R_LARCH_64				2
26 #define R_LARCH_MARK_LA				20
27 #define R_LARCH_MARK_PCREL			21
28 #define R_LARCH_SOP_PUSH_PCREL			22
29 #define R_LARCH_SOP_PUSH_ABSOLUTE		23
30 #define R_LARCH_SOP_PUSH_DUP			24
31 #define R_LARCH_SOP_PUSH_PLT_PCREL		29
32 #define R_LARCH_SOP_SUB				32
33 #define R_LARCH_SOP_SL				33
34 #define R_LARCH_SOP_SR				34
35 #define R_LARCH_SOP_ADD				35
36 #define R_LARCH_SOP_AND				36
37 #define R_LARCH_SOP_IF_ELSE			37
38 #define R_LARCH_SOP_POP_32_S_10_5		38
39 #define R_LARCH_SOP_POP_32_U_10_12		39
40 #define R_LARCH_SOP_POP_32_S_10_12		40
41 #define R_LARCH_SOP_POP_32_S_10_16		41
42 #define R_LARCH_SOP_POP_32_S_10_16_S2		42
43 #define R_LARCH_SOP_POP_32_S_5_20		43
44 #define R_LARCH_SOP_POP_32_S_0_5_10_16_S2	44
45 #define R_LARCH_SOP_POP_32_S_0_10_10_16_S2	45
46 #define R_LARCH_SOP_POP_32_U			46
47 #define R_LARCH_ADD32				50
48 #define R_LARCH_ADD64				51
49 #define R_LARCH_SUB32				55
50 #define R_LARCH_SUB64				56
51 
52 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
53 
54 void process_32(FILE *fp, int as_text, int as_bin,
55 		int show_reloc_info, int keep_relocs);
56 void process_64(FILE *fp, int as_text, int as_bin,
57 		int show_reloc_info, int keep_relocs);
58 
59 #endif /* RELOCS_H */
60