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