xref: /linux/arch/mips/boot/tools/relocs.h (revision ca220141fa8ebae09765a242076b2b77338106b0)
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 #define USE_BSD
16 #include <endian.h>
17 #include <regex.h>
18 
19 void die(char *fmt, ...);
20 
21 /*
22  * Introduced for MIPSr6
23  */
24 #ifndef R_MIPS_PC21_S2
25 #define R_MIPS_PC21_S2		60
26 #endif
27 
28 #ifndef R_MIPS_PC26_S2
29 #define R_MIPS_PC26_S2		61
30 #endif
31 
32 /*
33  * GNU extension that available in glibc only since 2023, not available on musl.
34  */
35 #ifndef R_MIPS_PC32
36 #define R_MIPS_PC32		248
37 #endif
38 
39 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
40 
41 enum symtype {
42 	S_ABS,
43 	S_REL,
44 	S_SEG,
45 	S_LIN,
46 	S_NSYMTYPES
47 };
48 
49 void process_32(FILE *fp, int as_text, int as_bin,
50 		int show_reloc_info, int keep_relocs);
51 void process_64(FILE *fp, int as_text, int as_bin,
52 		int show_reloc_info, int keep_relocs);
53 #endif /* RELOCS_H */
54