[PATCH v2 0/6] Add support for nanoMIPS architecture
"Tsing" <[email protected]> Fri, 24 Jul 2026 18:30:52 +0800
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <[email protected]> |
From: tsing <[email protected]> This set of patches provides support for the nanomips architecture in the Gas, BFD and Opcodes. Cherry-picked 9a9bfa11341055cc3d8c5374d6a40634d5502176 from https://github.com/MediaTek-Labs/binutils-gdb Author: Faraz Shahbazker <[email protected]> The whole set of patches has been tested in the following configurations: host target ---- ------ x86_64-linux-gnu nanomips-mti-elf Compile parameters: --disable-libmcheck --disable-gdb --disable-nls --disable-werror --with-expat tsing (6): Gas changes for nanoMIPS support. BFD changes for nanoMIPS support. Opcodes changes for nanoMIPS support. Readelf for nanoMIPS. Add nanoMIPS documentation. Add nanoMIPS tests. bfd/Makefile.am | 17 + bfd/Makefile.in | 20 + bfd/archures.c | 5 + bfd/bfd-in2.h | 72 + bfd/config.bfd | 11 + bfd/configure | 4 + bfd/configure.ac | 4 + bfd/cpu-nanomips.c | 61 + bfd/elf-bfd.h | 1 + bfd/elfnn-nanomips.c | 1535 ++ bfd/elfxx-nanomips.c | 449 + bfd/elfxx-nanomips.h | 46 + bfd/libbfd.h | 67 + bfd/reloc.c | 138 + bfd/targets.c | 11 + binutils/doc/binutils.texi | 7 + binutils/readelf.c | 422 + binutils/testsuite/binutils-all/objdump.exp | 3 +- config/mt-nanomips | 3 + configure | 9 + configure.ac | 9 + gas/Makefile.am | 2 + gas/Makefile.in | 5 + gas/config.in | 9 + gas/config/obj-elf.h | 5 + gas/config/tc-nanomips.c | 11667 ++++++++++++++++ gas/config/tc-nanomips.h | 187 + gas/configure | 54 + gas/configure.ac | 45 + gas/configure.tgt | 5 + gas/doc/all.texi | 1 + gas/doc/as.texi | 189 + gas/doc/c-nanomips-aliases.texi | 1527 ++ gas/doc/c-nanomips-macros.texi | 3136 +++++ gas/doc/c-nanomips.texi | 1499 ++ gas/read.c | 2 +- gas/testsuite/gas/all/gas.exp | 6 +- gas/testsuite/gas/cfi/cfi-nanomips-1.d | 29 + gas/testsuite/gas/cfi/cfi.exp | 5 +- gas/testsuite/gas/elf/elf.exp | 6 + gas/testsuite/gas/elf/section2.e-nanomips | 8 + gas/testsuite/gas/nanomips/abi32-pic.d | 94 + gas/testsuite/gas/nanomips/abi32-pic.s | 38 + gas/testsuite/gas/nanomips/abi32.d | 79 + gas/testsuite/gas/nanomips/abi32.s | 70 + gas/testsuite/gas/nanomips/abs.d | 17 + gas/testsuite/gas/nanomips/abs.s | 4 + gas/testsuite/gas/nanomips/add.d | 24 + gas/testsuite/gas/nanomips/add.s | 13 + gas/testsuite/gas/nanomips/addu.d | 23 + gas/testsuite/gas/nanomips/addu.s | 9 + gas/testsuite/gas/nanomips/aent.d | 13 + gas/testsuite/gas/nanomips/aent.s | 16 + gas/testsuite/gas/nanomips/and.d | 35 + gas/testsuite/gas/nanomips/and.s | 23 + gas/testsuite/gas/nanomips/baddata1.l | 3 + gas/testsuite/gas/nanomips/baddata1.s | 9 + gas/testsuite/gas/nanomips/beq.d | 39 + gas/testsuite/gas/nanomips/beq.s | 22 + gas/testsuite/gas/nanomips/bge.d | 53 + gas/testsuite/gas/nanomips/bge.s | 24 + gas/testsuite/gas/nanomips/bgeu.d | 44 + gas/testsuite/gas/nanomips/bgeu.s | 21 + gas/testsuite/gas/nanomips/blt.d | 52 + gas/testsuite/gas/nanomips/blt.s | 24 + gas/testsuite/gas/nanomips/bltu.d | 44 + gas/testsuite/gas/nanomips/bltu.s | 21 + .../gas/nanomips/cp0-names-numeric.d | 44 + gas/testsuite/gas/nanomips/cp0-names.d | 43 + gas/testsuite/gas/nanomips/cp0-names.s | 38 + .../gas/nanomips/cp0sel-names-numeric.d | 236 + gas/testsuite/gas/nanomips/cp0sel-names.d | 235 + gas/testsuite/gas/nanomips/cp0sel-names.s | 236 + gas/testsuite/gas/nanomips/ctc.d | 87 + gas/testsuite/gas/nanomips/ctc.s | 66 + gas/testsuite/gas/nanomips/debug-dis.d | 18 + gas/testsuite/gas/nanomips/debug-dis.s | 12 + gas/testsuite/gas/nanomips/div.d | 45 + gas/testsuite/gas/nanomips/div.s | 31 + gas/testsuite/gas/nanomips/empty.s | 3 + gas/testsuite/gas/nanomips/expr-const.d | 11 + gas/testsuite/gas/nanomips/expr-const.s | 24 + gas/testsuite/gas/nanomips/expr-ill.l | 7 + gas/testsuite/gas/nanomips/expr-ill.s | 20 + gas/testsuite/gas/nanomips/expr-sym.d | 71 + gas/testsuite/gas/nanomips/expr-sym.s | 36 + gas/testsuite/gas/nanomips/expr-vol.d | 17 + gas/testsuite/gas/nanomips/expr-vol.s | 17 + gas/testsuite/gas/nanomips/expr1.d | 18 + gas/testsuite/gas/nanomips/expr1.s | 9 + .../gas/nanomips/gpr-names-numeric.d | 44 + gas/testsuite/gas/nanomips/gpr-names.d | 44 + gas/testsuite/gas/nanomips/gpr-names.s | 38 + .../gas/nanomips/hwr-names-numeric.d | 59 + .../gas/nanomips/hwr-names-numeric.s | 53 + .../gas/nanomips/insn-suffix-error.l | 20 + .../gas/nanomips/insn-suffix-error.s | 22 + gas/testsuite/gas/nanomips/isa-errors.l | 7 + gas/testsuite/gas/nanomips/isa-errors.s | 9 + gas/testsuite/gas/nanomips/jal.d | 21 + gas/testsuite/gas/nanomips/jal.s | 11 + gas/testsuite/gas/nanomips/jalr.l | 3 + gas/testsuite/gas/nanomips/jalr.s | 15 + gas/testsuite/gas/nanomips/la-lpic-mclarge.d | 116 + gas/testsuite/gas/nanomips/la-lpic-mcmedium.d | 116 + gas/testsuite/gas/nanomips/la-mclarge-pcrel.d | 116 + gas/testsuite/gas/nanomips/la-mclarge.d | 115 + gas/testsuite/gas/nanomips/la-pcrel.d | 116 + gas/testsuite/gas/nanomips/la-pic-mclarge.d | 116 + gas/testsuite/gas/nanomips/la-pic.d | 156 + gas/testsuite/gas/nanomips/la.d | 115 + gas/testsuite/gas/nanomips/la.s | 82 + gas/testsuite/gas/nanomips/lb.d | 176 + gas/testsuite/gas/nanomips/lb.s | 72 + gas/testsuite/gas/nanomips/ld-reloc.d | 86 + gas/testsuite/gas/nanomips/ld-reloc.s | 34 + gas/testsuite/gas/nanomips/ld.d | 174 + gas/testsuite/gas/nanomips/ld.s | 145 + gas/testsuite/gas/nanomips/li.d | 16 + gas/testsuite/gas/nanomips/li.s | 9 + gas/testsuite/gas/nanomips/lif-pic.d | 16 + gas/testsuite/gas/nanomips/lifloat-mem.d | 20 + gas/testsuite/gas/nanomips/lifloat-nms.d | 20 + gas/testsuite/gas/nanomips/lifloat.d | 15 + gas/testsuite/gas/nanomips/lifloat.s | 6 + gas/testsuite/gas/nanomips/lineno.d | 86 + gas/testsuite/gas/nanomips/lineno.s | 54 + gas/testsuite/gas/nanomips/linkrelax-dis.d | 30 + gas/testsuite/gas/nanomips/linkrelax-dis.s | 14 + gas/testsuite/gas/nanomips/linkrelax-relocs.d | 79 + gas/testsuite/gas/nanomips/linkrelax.d | 17 + gas/testsuite/gas/nanomips/linkrelax.s | 54 + gas/testsuite/gas/nanomips/mcmodel-err.l | 3 + gas/testsuite/gas/nanomips/mcmodel-err.s | 2 + gas/testsuite/gas/nanomips/mcmodel.l | 0 gas/testsuite/gas/nanomips/mcmodel.s | 3 + gas/testsuite/gas/nanomips/move.d | 14 + gas/testsuite/gas/nanomips/move.s | 3 + gas/testsuite/gas/nanomips/mt-ase.d | 651 + gas/testsuite/gas/nanomips/mt-ase.s | 656 + gas/testsuite/gas/nanomips/mvh.d | 16 + gas/testsuite/gas/nanomips/mvh.s | 12 + gas/testsuite/gas/nanomips/nanomips-error.l | 26 + gas/testsuite/gas/nanomips/nanomips-error.s | 46 + .../gas/nanomips/nanomips-exc-noalias.d | 254 + gas/testsuite/gas/nanomips/nanomips-exc.s | 282 + gas/testsuite/gas/nanomips/nanomips-exc32.d | 198 + gas/testsuite/gas/nanomips/nanomips-subset.d | 37 + gas/testsuite/gas/nanomips/nanomips-subset.s | 23 + gas/testsuite/gas/nanomips/nanomips.d | 2317 +++ gas/testsuite/gas/nanomips/nanomips.exp | 557 + gas/testsuite/gas/nanomips/nanomips.l | 10 + gas/testsuite/gas/nanomips/nanomips.s | 2034 +++ gas/testsuite/gas/nanomips/nanomips32.d | 2309 +++ .../gas/nanomips/[email protected] | 2318 +++ .../gas/nanomips/[email protected] | 2309 +++ .../gas/nanomips/[email protected] | 206 + .../gas/nanomips/[email protected] | 206 + .../gas/nanomips/[email protected] | 206 + gas/testsuite/gas/nanomips/[email protected] | 206 + gas/testsuite/gas/nanomips/[email protected] | 176 + .../gas/nanomips/[email protected] | 156 + gas/testsuite/gas/nanomips/[email protected] | 175 + gas/testsuite/gas/nanomips/[email protected] | 23 + gas/testsuite/gas/nanomips/[email protected] | 21 + gas/testsuite/gas/nanomips/[email protected] | 10 + gas/testsuite/gas/nanomips/[email protected] | 26 + .../gas/nanomips/nolinkrelax-relocs.d | 14 + gas/testsuite/gas/nanomips/nolinkrelax.d | 17 + gas/testsuite/gas/nanomips/rol.d | 28 + gas/testsuite/gas/nanomips/rol.s | 22 + gas/testsuite/gas/nanomips/save-error.l | 16 + gas/testsuite/gas/nanomips/save-error.s | 42 + gas/testsuite/gas/nanomips/save-relocs.d | 22 + gas/testsuite/gas/nanomips/save.d | 64 + gas/testsuite/gas/nanomips/save.s | 94 + gas/testsuite/gas/nanomips/sb.d | 175 + gas/testsuite/gas/nanomips/sb.s | 71 + include/dis-asm.h | 1 + include/elf/common.h | 1 + include/elf/nanomips.h | 211 + include/opcode/nanomips.h | 1238 ++ ld/configure.tgt | 2 + ld/gen-doc.texi | 1 + ld/ld.texi | 37 + opcodes/Makefile.am | 2 + opcodes/Makefile.in | 4 + opcodes/configure | 1 + opcodes/configure.ac | 1 + opcodes/disassemble.c | 14 + opcodes/disassemble.h | 1 + opcodes/nanomips-dis.c | 1394 ++ opcodes/nanomips-formats.h | 265 + opcodes/nanomips-opc.c | 807 ++ 194 files changed, 45967 insertions(+), 5 deletions(-) create mode 100644 bfd/cpu-nanomips.c create mode 100644 bfd/elfnn-nanomips.c create mode 100644 bfd/elfxx-nanomips.c create mode 100644 bfd/elfxx-nanomips.h create mode 100644 config/mt-nanomips create mode 100644 gas/config/tc-nanomips.c create mode 100644 gas/config/tc-nanomips.h create mode 100644 gas/doc/c-nanomips-aliases.texi create mode 100644 gas/doc/c-nanomips-macros.texi create mode 100644 gas/doc/c-nanomips.texi create mode 100644 gas/testsuite/gas/cfi/cfi-nanomips-1.d create mode 100644 gas/testsuite/gas/elf/section2.e-nanomips create mode 100644 gas/testsuite/gas/nanomips/abi32-pic.d create mode 100644 gas/testsuite/gas/nanomips/abi32-pic.s create mode 100644 gas/testsuite/gas/nanomips/abi32.d create mode 100644 gas/testsuite/gas/nanomips/abi32.s create mode 100644 gas/testsuite/gas/nanomips/abs.d create mode 100644 gas/testsuite/gas/nanomips/abs.s create mode 100644 gas/testsuite/gas/nanomips/add.d create mode 100644 gas/testsuite/gas/nanomips/add.s create mode 100644 gas/testsuite/gas/nanomips/addu.d create mode 100644 gas/testsuite/gas/nanomips/addu.s create mode 100644 gas/testsuite/gas/nanomips/aent.d create mode 100644 gas/testsuite/gas/nanomips/aent.s create mode 100644 gas/testsuite/gas/nanomips/and.d create mode 100644 gas/testsuite/gas/nanomips/and.s create mode 100644 gas/testsuite/gas/nanomips/baddata1.l create mode 100644 gas/testsuite/gas/nanomips/baddata1.s create mode 100644 gas/testsuite/gas/nanomips/beq.d create mode 100644 gas/testsuite/gas/nanomips/beq.s create mode 100644 gas/testsuite/gas/nanomips/bge.d create mode 100644 gas/testsuite/gas/nanomips/bge.s create mode 100644 gas/testsuite/gas/nanomips/bgeu.d create mode 100644 gas/testsuite/gas/nanomips/bgeu.s create mode 100644 gas/testsuite/gas/nanomips/blt.d create mode 100644 gas/testsuite/gas/nanomips/blt.s create mode 100644 gas/testsuite/gas/nanomips/bltu.d create mode 100644 gas/testsuite/gas/nanomips/bltu.s create mode 100644 gas/testsuite/gas/nanomips/cp0-names-numeric.d create mode 100644 gas/testsuite/gas/nanomips/cp0-names.d create mode 100644 gas/testsuite/gas/nanomips/cp0-names.s create mode 100644 gas/testsuite/gas/nanomips/cp0sel-names-numeric.d create mode 100644 gas/testsuite/gas/nanomips/cp0sel-names.d create mode 100644 gas/testsuite/gas/nanomips/cp0sel-names.s create mode 100644 gas/testsuite/gas/nanomips/ctc.d create mode 100644 gas/testsuite/gas/nanomips/ctc.s create mode 100644 gas/testsuite/gas/nanomips/debug-dis.d create mode 100644 gas/testsuite/gas/nanomips/debug-dis.s create mode 100644 gas/testsuite/gas/nanomips/div.d create mode 100644 gas/testsuite/gas/nanomips/div.s create mode 100644 gas/testsuite/gas/nanomips/empty.s create mode 100644 gas/testsuite/gas/nanomips/expr-const.d create mode 100644 gas/testsuite/gas/nanomips/expr-const.s create mode 100644 gas/testsuite/gas/nanomips/expr-ill.l create mode 100644 gas/testsuite/gas/nanomips/expr-ill.s create mode 100644 gas/testsuite/gas/nanomips/expr-sym.d create mode 100644 gas/testsuite/gas/nanomips/expr-sym.s create mode 100644 gas/testsuite/gas/nanomips/expr-vol.d create mode 100644 gas/testsuite/gas/nanomips/expr-vol.s create mode 100644 gas/testsuite/gas/nanomips/expr1.d create mode 100644 gas/testsuite/gas/nanomips/expr1.s create mode 100644 gas/testsuite/gas/nanomips/gpr-names-numeric.d create mode 100644 gas/testsuite/gas/nanomips/gpr-names.d create mode 100644 gas/testsuite/gas/nanomips/gpr-names.s create mode 100644 gas/testsuite/gas/nanomips/hwr-names-numeric.d create mode 100644 gas/testsuite/gas/nanomips/hwr-names-numeric.s create mode 100644 gas/testsuite/gas/nanomips/insn-suffix-error.l create mode 100644 gas/testsuite/gas/nanomips/insn-suffix-error.s create mode 100644 gas/testsuite/gas/nanomips/isa-errors.l create mode 100644 gas/testsuite/gas/nanomips/isa-errors.s create mode 100644 gas/testsuite/gas/nanomips/jal.d create mode 100644 gas/testsuite/gas/nanomips/jal.s create mode 100644 gas/testsuite/gas/nanomips/jalr.l create mode 100644 gas/testsuite/gas/nanomips/jalr.s create mode 100644 gas/testsuite/gas/nanomips/la-lpic-mclarge.d create mode 100644 gas/testsuite/gas/nanomips/la-lpic-mcmedium.d create mode 100644 gas/testsuite/gas/nanomips/la-mclarge-pcrel.d create mode 100644 gas/testsuite/gas/nanomips/la-mclarge.d create mode 100644 gas/testsuite/gas/nanomips/la-pcrel.d create mode 100644 gas/testsuite/gas/nanomips/la-pic-mclarge.d create mode 100644 gas/testsuite/gas/nanomips/la-pic.d create mode 100644 gas/testsuite/gas/nanomips/la.d create mode 100644 gas/testsuite/gas/nanomips/la.s create mode 100644 gas/testsuite/gas/nanomips/lb.d create mode 100644 gas/testsuite/gas/nanomips/lb.s create mode 100644 gas/testsuite/gas/nanomips/ld-reloc.d create mode 100644 gas/testsuite/gas/nanomips/ld-reloc.s create mode 100644 gas/testsuite/gas/nanomips/ld.d create mode 100644 gas/testsuite/gas/nanomips/ld.s create mode 100644 gas/testsuite/gas/nanomips/li.d create mode 100644 gas/testsuite/gas/nanomips/li.s create mode 100644 gas/testsuite/gas/nanomips/lif-pic.d create mode 100644 gas/testsuite/gas/nanomips/lifloat-mem.d create mode 100644 gas/testsuite/gas/nanomips/lifloat-nms.d create mode 100644 gas/testsuite/gas/nanomips/lifloat.d create mode 100644 gas/testsuite/gas/nanomips/lifloat.s create mode 100644 gas/testsuite/gas/nanomips/lineno.d create mode 100644 gas/testsuite/gas/nanomips/lineno.s create mode 100644 gas/testsuite/gas/nanomips/linkrelax-dis.d create mode 100644 gas/testsuite/gas/nanomips/linkrelax-dis.s create mode 100644 gas/testsuite/gas/nanomips/linkrelax-relocs.d create mode 100644 gas/testsuite/gas/nanomips/linkrelax.d create mode 100644 gas/testsuite/gas/nanomips/linkrelax.s create mode 100644 gas/testsuite/gas/nanomips/mcmodel-err.l create mode 100644 gas/testsuite/gas/nanomips/mcmodel-err.s create mode 100644 gas/testsuite/gas/nanomips/mcmodel.l create mode 100644 gas/testsuite/gas/nanomips/mcmodel.s create mode 100644 gas/testsuite/gas/nanomips/move.d create mode 100644 gas/testsuite/gas/nanomips/move.s create mode 100644 gas/testsuite/gas/nanomips/mt-ase.d create mode 100644 gas/testsuite/gas/nanomips/mt-ase.s create mode 100644 gas/testsuite/gas/nanomips/mvh.d create mode 100644 gas/testsuite/gas/nanomips/mvh.s create mode 100644 gas/testsuite/gas/nanomips/nanomips-error.l create mode 100644 gas/testsuite/gas/nanomips/nanomips-error.s create mode 100644 gas/testsuite/gas/nanomips/nanomips-exc-noalias.d create mode 100644 gas/testsuite/gas/nanomips/nanomips-exc.s create mode 100644 gas/testsuite/gas/nanomips/nanomips-exc32.d create mode 100644 gas/testsuite/gas/nanomips/nanomips-subset.d create mode 100644 gas/testsuite/gas/nanomips/nanomips-subset.s create mode 100644 gas/testsuite/gas/nanomips/nanomips.d create mode 100644 gas/testsuite/gas/nanomips/nanomips.exp create mode 100644 gas/testsuite/gas/nanomips/nanomips.l create mode 100644 gas/testsuite/gas/nanomips/nanomips.s create mode 100644 gas/testsuite/gas/nanomips/nanomips32.d create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/[email protected] create mode 100644 gas/testsuite/gas/nanomips/nolinkrelax-relocs.d create mode 100644 gas/testsuite/gas/nanomips/nolinkrelax.d create mode 100644 gas/testsuite/gas/nanomips/rol.d create mode 100644 gas/testsuite/gas/nanomips/rol.s create mode 100644 gas/testsuite/gas/nanomips/save-error.l create mode 100644 gas/testsuite/gas/nanomips/save-error.s create mode 100644 gas/testsuite/gas/nanomips/save-relocs.d create mode 100644 gas/testsuite/gas/nanomips/save.d create mode 100644 gas/testsuite/gas/nanomips/save.s create mode 100644 gas/testsuite/gas/nanomips/sb.d create mode 100644 gas/testsuite/gas/nanomips/sb.s create mode 100644 include/elf/nanomips.h create mode 100644 include/opcode/nanomips.h create mode 100644 opcodes/nanomips-dis.c create mode 100644 opcodes/nanomips-formats.h create mode 100644 opcodes/nanomips-opc.c -- 2.39.5