diff options
author | mengqinggang <mengqinggang@loongson.cn> | 2022-12-01 14:34:10 +0800 |
---|---|---|
committer | liuzhensong <liuzhensong@loongson.cn> | 2023-05-30 19:56:40 +0800 |
commit | 57a930e3bfe4b2c7fd6463ed39311e1938513138 (patch) | |
tree | 220687a30b5c57cbc3283bae2e189ea628e44ce3 | |
parent | 7b9e7db08340cb3934a5fa95503fda523e0917b7 (diff) | |
download | gdb-57a930e3bfe4b2c7fd6463ed39311e1938513138.zip gdb-57a930e3bfe4b2c7fd6463ed39311e1938513138.tar.gz gdb-57a930e3bfe4b2c7fd6463ed39311e1938513138.tar.bz2 |
LoongArch: include: Add support for linker relaxation.
Add relocs and gas LARCH_opts.relax option.
include/ChangeLog:
* elf/loongarch.h: Add relocs.
* opcode/loongarch.h: Add LARCH_opts.relax and macro LARCH_NOP.
-rw-r--r-- | include/elf/loongarch.h | 20 | ||||
-rw-r--r-- | include/opcode/loongarch.h | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/include/elf/loongarch.h b/include/elf/loongarch.h index ba0075d..71ab34f 100644 --- a/include/elf/loongarch.h +++ b/include/elf/loongarch.h @@ -229,6 +229,26 @@ RELOC_NUMBER (R_LARCH_32_PCREL, 99) /* RELAX. */ RELOC_NUMBER (R_LARCH_RELAX, 100) +/* relax delete. */ +RELOC_NUMBER (R_LARCH_DELETE, 101) + +/* relax align. */ +RELOC_NUMBER (R_LARCH_ALIGN, 102) + +/* pcaddi. */ +RELOC_NUMBER (R_LARCH_PCREL20_S2, 103) + +/* cfa. */ +RELOC_NUMBER (R_LARCH_CFA, 104) + +/* DW_CFA_advance_loc. */ +RELOC_NUMBER (R_LARCH_ADD6, 105) +RELOC_NUMBER (R_LARCH_SUB6, 106) + +/* unsigned leb128. */ +RELOC_NUMBER (R_LARCH_ADD_ULEB128, 107) +RELOC_NUMBER (R_LARCH_SUB_ULEB128, 108) + END_RELOC_NUMBERS (R_LARCH_count) /* Processor specific flags for the ELF header e_flags field. */ diff --git a/include/opcode/loongarch.h b/include/opcode/loongarch.h index 548732e..004bb65 100644 --- a/include/opcode/loongarch.h +++ b/include/opcode/loongarch.h @@ -28,6 +28,8 @@ extern "C" { #endif + #define LARCH_NOP 0x03400000 + typedef uint32_t insn_t; struct loongarch_opcode @@ -228,6 +230,7 @@ dec2 : [1-9][0-9]? #define ase_gpcr isa.use_la_global_with_pcrel #define ase_gabs isa.use_la_global_with_abs + int relax; } LARCH_opts; extern size_t loongarch_insn_length (insn_t insn); |