This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH v3 00/15] Binutils/gas/ld port for PRU
- From: Dimitar Dimitrov <dimitar at dinux dot eu>
- To: binutils at sourceware dot org
- Cc: Dimitar Dimitrov <dimitar at dinux dot eu>
- Date: Fri, 30 Dec 2016 12:39:45 +0200
- Subject: [PATCH v3 00/15] Binutils/gas/ld port for PRU
- Authentication-results: sourceware.org; auth=none
This patch series adds support for the Texas Instruments PRU I/O core. This port targets version 3 of the PRU core, which is found in the popular Beaglebone line of boards. The older core revisions are not supported.
Changes since the last patch series:
v3
- Added 2016 as copyright year for bfd/cpu-pru.c and gas/doc/c-pru.texi.
- Whitespace fixes.
v2
- BFD: Removed HI16/LO16 relocations as they were non-standard and not
supported by the TI proprietary toolchain.
- BFD: Added LDI32 relocation as supported by the TI proprietary toolchain.
- AS,BFD: Removed leading symbol underscore in order to be compatible with
TI's ABI.
- BFD: Assigned relocation numbers in order to be compatible with
TI's toolchain.
- Fixed changelog snippets.
- Removed auto-generated files from patches.
- LD: Fix default linker script for 'ld -r'
- Switch to r3.w2 as return address for the call and ret pseudos. This will
help keeping the same ABI with TI's C compiler.
- BFD: Use EM_TI_PRU for ELF machine ID.
- GAS: Make use of bfd_check_overflow.
- BFD: Set src_mask=0 because PRU has USE_RELA.
- BFD: Get rid of unneeded PRU hash.
- LD: Remove gc-sections flag as we do not support it. Update the testsuite
accordingly.
v1
Initial submission: https://sourceware.org/ml/binutils/2016-12/msg00066.html
Dimitar Dimitrov (15):
PRU BFD support
PRU Binutils port
PRU GAS Port
PRU LD Port
PRU Opcode Port
Add PRU ELF ID to elfcpp
ld: testsuite: Mark PRU as elf target that does not support shared
libraries
ld: testsuite: Mark sec64k case as too big for PRU
ld: testsuite: Fix srec test setup for PRU
gas: testsuite: Mark lns-common-1-alt variant for PRU
ld: testsuite: PRU assembler does not support diff expressions mixing
data and text labels.
ld: testsuite: PRU LD does not support arbitrary .text base addresses.
ld: testsuite: Disable endsym test case
ld: testsuite: Sanitize output from ld
ld: testsuite: Mark --gc-sections as unsupported for PRU
bfd/Makefile.am | 4 +
bfd/archures.c | 4 +
bfd/config.bfd | 6 +
bfd/configure.ac | 1 +
bfd/cpu-pru.c | 43 +
bfd/elf-bfd.h | 1 +
bfd/elf32-pru.c | 1469 ++++++++++++++++++++++
bfd/reloc.c | 48 +
bfd/targets.c | 3 +
binutils/readelf.c | 16 +
elfcpp/elfcpp.h | 1 +
gas/Makefile.am | 2 +
gas/NEWS | 2 +
gas/config/obj-elf.c | 4 +
gas/config/tc-pru.c | 1946 ++++++++++++++++++++++++++++++
gas/config/tc-pru.h | 154 +++
gas/configure.tgt | 2 +
gas/doc/Makefile.am | 1 +
gas/doc/all.texi | 1 +
gas/doc/as.texinfo | 32 +
gas/doc/c-pru.texi | 150 +++
gas/testsuite/gas/lns/lns.exp | 1 +
gas/testsuite/gas/pru/alu.d | 32 +
gas/testsuite/gas/pru/alu.s | 30 +
gas/testsuite/gas/pru/branch.d | 63 +
gas/testsuite/gas/pru/branch.s | 42 +
gas/testsuite/gas/pru/illegal.l | 5 +
gas/testsuite/gas/pru/illegal.s | 11 +
gas/testsuite/gas/pru/ldi.d | 17 +
gas/testsuite/gas/pru/ldi.s | 9 +
gas/testsuite/gas/pru/ldst.d | 33 +
gas/testsuite/gas/pru/ldst.s | 37 +
gas/testsuite/gas/pru/loop.d | 15 +
gas/testsuite/gas/pru/loop.s | 10 +
gas/testsuite/gas/pru/misc.d | 11 +
gas/testsuite/gas/pru/misc.s | 6 +
gas/testsuite/gas/pru/pru.exp | 26 +
gas/testsuite/gas/pru/pseudo.d | 15 +
gas/testsuite/gas/pru/pseudo.s | 10 +
gas/testsuite/gas/pru/warn_reglabel.l | 3 +
gas/testsuite/gas/pru/warn_reglabel.s | 6 +
gas/testsuite/gas/pru/xfr.d | 44 +
gas/testsuite/gas/pru/xfr.s | 52 +
include/dis-asm.h | 1 +
include/elf/common.h | 2 +-
include/elf/pru.h | 55 +
include/opcode/pru.h | 411 +++++++
ld/Makefile.am | 6 +
ld/NEWS | 2 +
ld/configure.tgt | 1 +
ld/emulparams/pruelf.sh | 19 +
ld/emultempl/pruelf.em | 50 +
ld/scripttempl/pru.sc | 179 +++
ld/testsuite/ld-elf/eh-frame-hdr.d | 2 +-
ld/testsuite/ld-elf/endsym.d | 1 +
ld/testsuite/ld-elf/group8a.d | 2 +-
ld/testsuite/ld-elf/group8b.d | 2 +-
ld/testsuite/ld-elf/group9a.d | 2 +-
ld/testsuite/ld-elf/group9b.d | 2 +-
ld/testsuite/ld-elf/merge.d | 2 +-
ld/testsuite/ld-elf/pr12851.d | 2 +-
ld/testsuite/ld-elf/pr14926.d | 2 +-
ld/testsuite/ld-elf/sec-to-seg.exp | 1 +
ld/testsuite/ld-elf/sec64k.exp | 3 +-
ld/testsuite/ld-pru/emit-relocs-1.d | 37 +
ld/testsuite/ld-pru/emit-relocs-1.ld | 20 +
ld/testsuite/ld-pru/emit-relocs-1a.s | 24 +
ld/testsuite/ld-pru/emit-relocs-1b.s | 18 +
ld/testsuite/ld-pru/ldi32.d | 12 +
ld/testsuite/ld-pru/ldi32.s | 6 +
ld/testsuite/ld-pru/ldi32_symbol.s | 2 +
ld/testsuite/ld-pru/norelax_ldi32-data.d | 20 +
ld/testsuite/ld-pru/norelax_ldi32-dis.d | 29 +
ld/testsuite/ld-pru/pcrel_s10.d | 18 +
ld/testsuite/ld-pru/pcrel_s10.s | 7 +
ld/testsuite/ld-pru/pcrel_s10_label.s | 9 +
ld/testsuite/ld-pru/pcrel_u8-illegal.d | 7 +
ld/testsuite/ld-pru/pcrel_u8-illegal.s | 9 +
ld/testsuite/ld-pru/pcrel_u8-illegal2.d | 7 +
ld/testsuite/ld-pru/pcrel_u8-illegal2.s | 7 +
ld/testsuite/ld-pru/pcrel_u8-illegal3.d | 7 +
ld/testsuite/ld-pru/pcrel_u8-illegal3.s | 7 +
ld/testsuite/ld-pru/pcrel_u8.d | 15 +
ld/testsuite/ld-pru/pcrel_u8.s | 9 +
ld/testsuite/ld-pru/pcrel_u8_label.s | 4 +
ld/testsuite/ld-pru/pmem.d | 15 +
ld/testsuite/ld-pru/pmem.s | 15 +
ld/testsuite/ld-pru/pmem_symbol.s | 13 +
ld/testsuite/ld-pru/pru.exp | 8 +
ld/testsuite/ld-pru/relax_ldi32-data.d | 19 +
ld/testsuite/ld-pru/relax_ldi32-dis.d | 27 +
ld/testsuite/ld-pru/relax_ldi32.s | 30 +
ld/testsuite/ld-pru/relax_ldi32_symbol.s | 5 +
ld/testsuite/ld-pru/reloc.d | 14 +
ld/testsuite/ld-pru/reloc.s | 9 +
ld/testsuite/ld-pru/reloc_symbol.s | 24 +
ld/testsuite/ld-pru/u16.d | 11 +
ld/testsuite/ld-pru/u16.s | 4 +
ld/testsuite/ld-pru/u16_symbol.s | 2 +
ld/testsuite/ld-srec/srec.exp | 5 +
ld/testsuite/lib/ld-lib.exp | 8 +-
opcodes/Makefile.am | 2 +
opcodes/configure.ac | 1 +
opcodes/disassemble.c | 7 +-
opcodes/pru-dis.c | 286 +++++
opcodes/pru-opc.c | 236 ++++
106 files changed, 6116 insertions(+), 14 deletions(-)
create mode 100644 bfd/cpu-pru.c
create mode 100644 bfd/elf32-pru.c
create mode 100644 gas/config/tc-pru.c
create mode 100644 gas/config/tc-pru.h
create mode 100644 gas/doc/c-pru.texi
create mode 100644 gas/testsuite/gas/pru/alu.d
create mode 100644 gas/testsuite/gas/pru/alu.s
create mode 100644 gas/testsuite/gas/pru/branch.d
create mode 100644 gas/testsuite/gas/pru/branch.s
create mode 100644 gas/testsuite/gas/pru/illegal.l
create mode 100644 gas/testsuite/gas/pru/illegal.s
create mode 100644 gas/testsuite/gas/pru/ldi.d
create mode 100644 gas/testsuite/gas/pru/ldi.s
create mode 100644 gas/testsuite/gas/pru/ldst.d
create mode 100644 gas/testsuite/gas/pru/ldst.s
create mode 100644 gas/testsuite/gas/pru/loop.d
create mode 100644 gas/testsuite/gas/pru/loop.s
create mode 100644 gas/testsuite/gas/pru/misc.d
create mode 100644 gas/testsuite/gas/pru/misc.s
create mode 100644 gas/testsuite/gas/pru/pru.exp
create mode 100644 gas/testsuite/gas/pru/pseudo.d
create mode 100644 gas/testsuite/gas/pru/pseudo.s
create mode 100644 gas/testsuite/gas/pru/warn_reglabel.l
create mode 100644 gas/testsuite/gas/pru/warn_reglabel.s
create mode 100644 gas/testsuite/gas/pru/xfr.d
create mode 100644 gas/testsuite/gas/pru/xfr.s
create mode 100644 include/elf/pru.h
create mode 100644 include/opcode/pru.h
create mode 100644 ld/emulparams/pruelf.sh
create mode 100644 ld/emultempl/pruelf.em
create mode 100644 ld/scripttempl/pru.sc
create mode 100644 ld/testsuite/ld-pru/emit-relocs-1.d
create mode 100644 ld/testsuite/ld-pru/emit-relocs-1.ld
create mode 100644 ld/testsuite/ld-pru/emit-relocs-1a.s
create mode 100644 ld/testsuite/ld-pru/emit-relocs-1b.s
create mode 100644 ld/testsuite/ld-pru/ldi32.d
create mode 100644 ld/testsuite/ld-pru/ldi32.s
create mode 100644 ld/testsuite/ld-pru/ldi32_symbol.s
create mode 100644 ld/testsuite/ld-pru/norelax_ldi32-data.d
create mode 100644 ld/testsuite/ld-pru/norelax_ldi32-dis.d
create mode 100644 ld/testsuite/ld-pru/pcrel_s10.d
create mode 100644 ld/testsuite/ld-pru/pcrel_s10.s
create mode 100644 ld/testsuite/ld-pru/pcrel_s10_label.s
create mode 100644 ld/testsuite/ld-pru/pcrel_u8-illegal.d
create mode 100644 ld/testsuite/ld-pru/pcrel_u8-illegal.s
create mode 100644 ld/testsuite/ld-pru/pcrel_u8-illegal2.d
create mode 100644 ld/testsuite/ld-pru/pcrel_u8-illegal2.s
create mode 100644 ld/testsuite/ld-pru/pcrel_u8-illegal3.d
create mode 100644 ld/testsuite/ld-pru/pcrel_u8-illegal3.s
create mode 100644 ld/testsuite/ld-pru/pcrel_u8.d
create mode 100644 ld/testsuite/ld-pru/pcrel_u8.s
create mode 100644 ld/testsuite/ld-pru/pcrel_u8_label.s
create mode 100644 ld/testsuite/ld-pru/pmem.d
create mode 100644 ld/testsuite/ld-pru/pmem.s
create mode 100644 ld/testsuite/ld-pru/pmem_symbol.s
create mode 100644 ld/testsuite/ld-pru/pru.exp
create mode 100644 ld/testsuite/ld-pru/relax_ldi32-data.d
create mode 100644 ld/testsuite/ld-pru/relax_ldi32-dis.d
create mode 100644 ld/testsuite/ld-pru/relax_ldi32.s
create mode 100644 ld/testsuite/ld-pru/relax_ldi32_symbol.s
create mode 100644 ld/testsuite/ld-pru/reloc.d
create mode 100644 ld/testsuite/ld-pru/reloc.s
create mode 100644 ld/testsuite/ld-pru/reloc_symbol.s
create mode 100644 ld/testsuite/ld-pru/u16.d
create mode 100644 ld/testsuite/ld-pru/u16.s
create mode 100644 ld/testsuite/ld-pru/u16_symbol.s
create mode 100644 opcodes/pru-dis.c
create mode 100644 opcodes/pru-opc.c
--
2.11.0