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