public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Remove Cell Broadband Engine debugging support
@ 2019-09-20 21:09 Ulrich Weigand
0 siblings, 0 replies; only message in thread
From: Ulrich Weigand @ 2019-09-20 21:09 UTC (permalink / raw)
To: gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=abf516c6931af1683d1e51203de1ca01467f9f85
commit abf516c6931af1683d1e51203de1ca01467f9f85
Author: Ulrich Weigand <ulrich.weigand@de.ibm.com>
Date: Fri Sep 20 23:06:57 2019 +0200
Remove Cell Broadband Engine debugging support
This patch implements removal of Cell/B.E. support, including
- Support for the spu-*-* target
- Support for native stand-alone SPU debugging
- Support for integrated debugging of combined PPU/SPU applications
- Remote debugging (gdbserver) support for all the above.
The patch also removes the TARGET_OBJECT_SPU target object type,
as this is available only on Cell/B.E. targets, including
- Native Linux support
- Core file support (including core file generation)
- Remote target support, including removal of the qXfer:spu:read
and qXfer:spu:write remote protocal packets and associated
support in gdbserver.
gdb/ChangeLog
2019-09-20 Ulrich Weigand <uweigand@de.ibm.com>
* NEWS: Mention that Cell/B.E. debugging support was removed.
* MAINTAINERS: Remove spu target.
* config/djgpp/fnchange.lst: Remove entries for removed files.
* Makefile.in (ALL_TARGET_OBS): Remove solib-spu.o,
spu-multiarch.o, and spu-tdep.o.
(HFILES_NO_SRCDIR): Remove solib-spu.h and spu-tdep.h.
(ALLDEPFILES): Remove solib-spu.c, spu-linux-nat.c,
spu-multiarch.c, and spu-tdep.c.
* spu-linux-nat.c: Remove file.
* spu-multiarch.c: Remove file.
* spu-tdep.c: Remove file.
* spu-tdep.h: Remove file.
* solib-spu.c: Remove file.
* solib-spu.h: Remove file.
* configure.host (powerpc64*-*-linux*): Remove Cell/B.E. support.
* configure.nat (spu-linux): Remove.
* configure.tgt (powerpc*-*-linux*): Remove solib-spu.o and
solib-multiarch.o from gdb_target_obs.
(spu*-*-*): Remove.
* arch/ppc-linux-common.h (struct ppc_linux_features): Remove "cell"
feature flag.
(ppc_linux_no_features): Update.
* arch/ppc-linux-common.c (ppc_linux_match_description): Remove
Cell/B.E. support.
* arch/ppc-linux-tdesc.h (tdesc_powerpc_cell32l): Remove declaration.
(tdesc_powerpc_cell64l): Likewise.
* nat/ppc-linux.h (PPC_FEATURE_CELL): Remove.
* ppc-linux-nat.c (ppc_linux_nat_target::read_description): Remove
Cell/B.E. support.
* ppc-linux-tdep.h: Do not include "solib-spu.h" or "spu-tdep.h".
Do not include "features/rs6000/powerpc-cell32l.c" or
"features/rs6000/powerpc-cell64l.c".
(ppc_linux_spu_section): Remove.
(ppc_linux_core_read_description): Remove Cell/B.E. support.
(spe_context_objfile, spe_context_lm_addr, spe_context_offset,
spe_context_cache_ptid, spe_context_cache_ptid): Remove.
(ppc_linux_spe_context_lookup): Remove.
(ppc_linux_spe_context_inferior_created): Remove.
(ppc_linux_spe_context_solib_loaded): Remove.
(ppc_linux_spe_context_solib_unloaded): Remove.
(ppc_linux_spe_context): Remove.
(struct ppu2spu_cache): Remove.
(ppu2spu_prev_arch, ppu2spu_this_id, ppu2spu_prev_register): Remove.
(struct ppu2spu_data): Remove.
(ppu2spu_unwind_register, ppu2spu_sniffer, ppu2spu_dealloc_cache,
ppu2spu_unwind): Remove.
(ppc_linux_init_abi): Remove Cell/B.E. support.
* rs6000-tdep.h (rs6000_gdbarch_init): Remove Cell/B.E. support.
* features/Makefile (rs6000/powerpc-cell32l-expedite): Remove.
(rs6000/powerpc-cell64l-expedite): Likewise
(WHICH): Remove rs6000/powerpc-cell32l and rs6000/powerpc-cell64l.
(XMLTOC): Remove rs6000/powerpc-cell32l.xml and
rs6000/powerpc-cell64l.xml.
* features/rs6000/powerpc-cell32l.xml: Remove.
* features/rs6000/powerpc-cell64l.xml: Likewise.
* features/rs6000/powerpc-cell32l.c: Remove generated file.
* features/rs6000/powerpc-cell64l.c: Likewise.
* regformats/rs6000/powerpc-cell32l.dat: Remove generated file.
* regformats/rs6000/powerpc-cell64l.dat: Likewise.
* regformats/reg-spu.dat: Remove.
* target.h (enum target_object): Remove TARGET_OBJECT_SPU.
* corelow.c (struct spuid_list): Remove.
(add_to_spuid_list): Remove.
(core_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
* remote.c (PACKET_qXfer_spu_read, PACKET_qXfer_spu_write): Remove.
(remote_protocol_features): Remove associated entries.
(_initialize_remote): No longer initialize them.
(remote_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
* linux-nat.c (SPUFS_MAGIC): Remove.
(linux_proc_xfer_spu): Remove.
(spu_enumerate_spu_ids): Remove.
(linux_nat_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
* linux-tdep.c (-linux_spu_make_corefile_notes): Remove.
(linux_make_corefile_notes): No longer call it.
* regcache.c (cooked_read_test): Remove bfd_arch_spu special case.
(cooked_write_test): Likewise.
gdb/doc/ChangeLog
2019-09-20 Ulrich Weigand <uweigand@de.ibm.com>
* doc/gdb.texinfo (Remote Configuration): Remove documentation for
qXfer:spu:read and qXfer:spu:write.
(General Query Packets): Likewise.
(Cell Broadband Engine SPU architecture): Remove subsection.
gdb/gdbserver/ChangeLog
2019-09-20 Ulrich Weigand <uweigand@de.ibm.com>
* configure.srv (ipa_ppc_linux_regobj): Remove powerpc-cell32l-ipa.o
and powerpc-cell64l-ipa.o.
(powerpc*-*-linux*): Remove powerpc-cell32l.o and powerpc-cell64l.o
from srv_regobj. Remove rs6000/powerpc-cell32l.xml and
rs6000/powerpc-cell64l.xml from srv_xmlfiles.
(spu*-*-*): Remove.
* spu-low.c: Remove file.
* linux-ppc-low.c (INSTR_SC, NR_spu_run): Remove.
(parse_spufs_run): Remove.
(ppc_get_pc): Remove Cell/B.E. support.
(ppc_set_pc): Likewise.
(ppc_breakpoint_at): Likewise.
(ppc_arch_setup): Likewise.
(ppc_get_ipa_tdesc_idx): Do not handle tdesc_powerpc_cell64l or
tdesc_powerpc_cell32l.
(initialize_low_arch): Do not call init_registers_powerpc_cell64l
or init_registers_powerpc_cell32l.
* linux-ppc-ipa.c (get_ipa_tdesc): Do not handle PPC_TDESC_CELL.
(initialize_low_tracepoint): Do not call init_registers_powerpc_cell64l
or init_registers_powerpc_cell32l.
* linux-ppc-tdesc-init.h (PPC_TDESC_CELL): Mark as unused.
(init_registers_powerpc_cell32l): Remove prototype.
(init_registers_powerpc_cell64l): Likewise.
* target.h (struct target_ops): Remove qxfer_spu member.
* server.c (handle_qxfer_spu): Remove.
(qxfer_packets): Remove entry for "spu".
(handle_query): No longer support qXfer:spu:read or qXfer:spu:write.
* linux-low.c (SPUFS_MAGIC): Remove.
(spu_enumerate_spu_ids): Remove.
(linux_qxfer_spu): Remove.
(linux_target_ops): Remove qxfer_spu member.
* lynx-low.c (lynx_target_ops): Remove qxfer_spu member.
* nto-low.c (nto_target_ops): Remove qxfer_spu member.
* win32-low.c (win32_target_ops): Remove qxfer_spu member.
gdb/testsuite/ChangeLog
2019-09-20 Ulrich Weigand <uweigand@de.ibm.com>
* gdb.arch/spu-info.exp: Remove file.
* gdb.arch/spu-info.c: Remove file.
* gdb.arch/spu-ls.exp: Remove file.
* gdb.arch/spu-ls.c: Remove file.
* gdb.asm/asm-source.exp: Remove support for spu*-*-*.
* gdb.asm/spu.inc: Remove file.
* gdb.base/dump.exp: Remove support for spu*-*-*.
* gdb.base/stack-checking.exp: Likewise.
* gdb.base/overlays.exp: Likewise.
* gdb.base/ovlymgr.c: Likewise.
* gdb.base/spu.ld: Remove file.
* gdb.cp/bs15503.exp: Remove support for spu*-*-*.
* gdb.cp/cpexprs.exp: Likewise.
* gdb.cp/exception.exp: Likewise.
* gdb.cp/gdb2495.exp: Likewise.
* gdb.cp/mb-templates.exp: Likewise.
* gdb.cp/pr9167.exp: Likewise.
* gdb.cp/userdef.exp: Likewise.
* gdb.xml/tdesc-regs.exp: Remove support for spu*-*-*.
* gdb.cell: Remove directory.
* lib/cell.exp: Remove file.
Diff:
---
gdb/ChangeLog | 86 +
gdb/MAINTAINERS | 3 -
gdb/Makefile.in | 9 -
gdb/NEWS | 6 +
gdb/arch/ppc-linux-common.c | 8 +-
gdb/arch/ppc-linux-common.h | 2 -
gdb/arch/ppc-linux-tdesc.h | 2 -
gdb/config/djgpp/fnchange.lst | 9 -
gdb/configure.host | 8 +-
gdb/configure.nat | 17 -
gdb/configure.tgt | 9 +-
gdb/corelow.c | 88 -
gdb/doc/ChangeLog | 7 +
gdb/doc/gdb.texinfo | 113 --
gdb/features/Makefile | 6 +-
gdb/features/rs6000/powerpc-cell32l.c | 162 --
gdb/features/rs6000/powerpc-cell32l.xml | 19 -
gdb/features/rs6000/powerpc-cell64l.c | 162 --
gdb/features/rs6000/powerpc-cell64l.xml | 19 -
gdb/gdbserver/ChangeLog | 40 +
gdb/gdbserver/configure.srv | 9 +-
gdb/gdbserver/linux-low.c | 98 -
gdb/gdbserver/linux-ppc-ipa.c | 6 -
gdb/gdbserver/linux-ppc-low.c | 106 +-
gdb/gdbserver/linux-ppc-tdesc-init.h | 8 +-
gdb/gdbserver/lynx-low.c | 1 -
gdb/gdbserver/nto-low.c | 1 -
gdb/gdbserver/server.c | 20 -
gdb/gdbserver/spu-low.c | 732 --------
gdb/gdbserver/target.h | 4 -
gdb/gdbserver/win32-low.c | 1 -
gdb/linux-nat.c | 129 --
gdb/linux-tdep.c | 72 -
gdb/nat/ppc-linux.h | 3 -
gdb/ppc-linux-nat.c | 3 -
gdb/ppc-linux-tdep.c | 317 ----
gdb/regcache.c | 21 +-
gdb/regformats/reg-spu.dat | 133 --
gdb/regformats/rs6000/powerpc-cell32l.dat | 112 --
gdb/regformats/rs6000/powerpc-cell64l.dat | 112 --
gdb/remote.c | 25 -
gdb/rs6000-tdep.c | 10 -
gdb/solib-spu.c | 547 ------
gdb/solib-spu.h | 25 -
gdb/spu-linux-nat.c | 661 -------
gdb/spu-multiarch.c | 417 -----
gdb/spu-tdep.c | 2835 -----------------------------
gdb/spu-tdep.h | 117 --
gdb/target.h | 2 -
gdb/testsuite/ChangeLog | 29 +
gdb/testsuite/gdb.arch/spu-info.c | 235 ---
gdb/testsuite/gdb.arch/spu-info.exp | 241 ---
gdb/testsuite/gdb.arch/spu-ls.c | 31 -
gdb/testsuite/gdb.arch/spu-ls.exp | 47 -
gdb/testsuite/gdb.asm/asm-source.exp | 5 -
gdb/testsuite/gdb.asm/spu.inc | 42 -
gdb/testsuite/gdb.base/dump.exp | 6 -
gdb/testsuite/gdb.base/overlays.exp | 3 -
gdb/testsuite/gdb.base/ovlymgr.c | 13 -
gdb/testsuite/gdb.base/spu.ld | 202 --
gdb/testsuite/gdb.base/stack-checking.c | 4 -
gdb/testsuite/gdb.cell/arch.exp | 116 --
gdb/testsuite/gdb.cell/break-spu.c | 43 -
gdb/testsuite/gdb.cell/break.c | 71 -
gdb/testsuite/gdb.cell/break.exp | 103 --
gdb/testsuite/gdb.cell/bt-spu.c | 30 -
gdb/testsuite/gdb.cell/bt.c | 101 -
gdb/testsuite/gdb.cell/bt.exp | 91 -
gdb/testsuite/gdb.cell/bt2-spu.c | 30 -
gdb/testsuite/gdb.cell/core.exp | 105 --
gdb/testsuite/gdb.cell/coremaker-spu.c | 46 -
gdb/testsuite/gdb.cell/coremaker.c | 70 -
gdb/testsuite/gdb.cell/data-spu.c | 36 -
gdb/testsuite/gdb.cell/data.c | 72 -
gdb/testsuite/gdb.cell/data.exp | 125 --
gdb/testsuite/gdb.cell/dwarfaddr.S | 190 --
gdb/testsuite/gdb.cell/dwarfaddr.exp | 53 -
gdb/testsuite/gdb.cell/ea-cache-spu.c | 41 -
gdb/testsuite/gdb.cell/ea-cache.c | 64 -
gdb/testsuite/gdb.cell/ea-cache.exp | 90 -
gdb/testsuite/gdb.cell/ea-standalone.c | 34 -
gdb/testsuite/gdb.cell/ea-standalone.exp | 64 -
gdb/testsuite/gdb.cell/ea-test.c | 33 -
gdb/testsuite/gdb.cell/ea-test.exp | 124 --
gdb/testsuite/gdb.cell/f-regs.exp | 89 -
gdb/testsuite/gdb.cell/fork-spu.c | 47 -
gdb/testsuite/gdb.cell/fork.c | 77 -
gdb/testsuite/gdb.cell/fork.exp | 86 -
gdb/testsuite/gdb.cell/gcore.exp | 108 --
gdb/testsuite/gdb.cell/mem-access-spu.c | 36 -
gdb/testsuite/gdb.cell/mem-access.c | 67 -
gdb/testsuite/gdb.cell/mem-access.exp | 170 --
gdb/testsuite/gdb.cell/ptype.exp | 145 --
gdb/testsuite/gdb.cell/registers.exp | 106 --
gdb/testsuite/gdb.cell/size-spu.c | 53 -
gdb/testsuite/gdb.cell/size.c | 87 -
gdb/testsuite/gdb.cell/sizeof.exp | 120 --
gdb/testsuite/gdb.cell/solib-symbol.exp | 79 -
gdb/testsuite/gdb.cell/solib.exp | 86 -
gdb/testsuite/gdb.cp/bs15503.exp | 5 -
gdb/testsuite/gdb.cp/cpexprs.exp | 5 -
gdb/testsuite/gdb.cp/exception.exp | 5 -
gdb/testsuite/gdb.cp/gdb2495.exp | 5 -
gdb/testsuite/gdb.cp/mb-templates.exp | 5 -
gdb/testsuite/gdb.cp/pr9167.exp | 5 -
gdb/testsuite/gdb.cp/userdef.exp | 5 -
gdb/testsuite/gdb.xml/tdesc-regs.exp | 10 -
gdb/testsuite/lib/cell.exp | 181 --
108 files changed, 189 insertions(+), 11285 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index adaa123..9c8ceba 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,89 @@
+2019-09-20 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * NEWS: Mention that Cell/B.E. debugging support was removed.
+ * MAINTAINERS: Remove spu target.
+
+ * config/djgpp/fnchange.lst: Remove entries for removed files.
+
+ * Makefile.in (ALL_TARGET_OBS): Remove solib-spu.o,
+ spu-multiarch.o, and spu-tdep.o.
+ (HFILES_NO_SRCDIR): Remove solib-spu.h and spu-tdep.h.
+ (ALLDEPFILES): Remove solib-spu.c, spu-linux-nat.c,
+ spu-multiarch.c, and spu-tdep.c.
+ * spu-linux-nat.c: Remove file.
+ * spu-multiarch.c: Remove file.
+ * spu-tdep.c: Remove file.
+ * spu-tdep.h: Remove file.
+ * solib-spu.c: Remove file.
+ * solib-spu.h: Remove file.
+
+ * configure.host (powerpc64*-*-linux*): Remove Cell/B.E. support.
+ * configure.nat (spu-linux): Remove.
+ * configure.tgt (powerpc*-*-linux*): Remove solib-spu.o and
+ solib-multiarch.o from gdb_target_obs.
+ (spu*-*-*): Remove.
+
+ * arch/ppc-linux-common.h (struct ppc_linux_features): Remove "cell"
+ feature flag.
+ (ppc_linux_no_features): Update.
+ * arch/ppc-linux-common.c (ppc_linux_match_description): Remove
+ Cell/B.E. support.
+ * arch/ppc-linux-tdesc.h (tdesc_powerpc_cell32l): Remove declaration.
+ (tdesc_powerpc_cell64l): Likewise.
+ * nat/ppc-linux.h (PPC_FEATURE_CELL): Remove.
+ * ppc-linux-nat.c (ppc_linux_nat_target::read_description): Remove
+ Cell/B.E. support.
+ * ppc-linux-tdep.h: Do not include "solib-spu.h" or "spu-tdep.h".
+ Do not include "features/rs6000/powerpc-cell32l.c" or
+ "features/rs6000/powerpc-cell64l.c".
+ (ppc_linux_spu_section): Remove.
+ (ppc_linux_core_read_description): Remove Cell/B.E. support.
+ (spe_context_objfile, spe_context_lm_addr, spe_context_offset,
+ spe_context_cache_ptid, spe_context_cache_ptid): Remove.
+ (ppc_linux_spe_context_lookup): Remove.
+ (ppc_linux_spe_context_inferior_created): Remove.
+ (ppc_linux_spe_context_solib_loaded): Remove.
+ (ppc_linux_spe_context_solib_unloaded): Remove.
+ (ppc_linux_spe_context): Remove.
+ (struct ppu2spu_cache): Remove.
+ (ppu2spu_prev_arch, ppu2spu_this_id, ppu2spu_prev_register): Remove.
+ (struct ppu2spu_data): Remove.
+ (ppu2spu_unwind_register, ppu2spu_sniffer, ppu2spu_dealloc_cache,
+ ppu2spu_unwind): Remove.
+ (ppc_linux_init_abi): Remove Cell/B.E. support.
+ * rs6000-tdep.h (rs6000_gdbarch_init): Remove Cell/B.E. support.
+
+ * features/Makefile (rs6000/powerpc-cell32l-expedite): Remove.
+ (rs6000/powerpc-cell64l-expedite): Likewise
+ (WHICH): Remove rs6000/powerpc-cell32l and rs6000/powerpc-cell64l.
+ (XMLTOC): Remove rs6000/powerpc-cell32l.xml and
+ rs6000/powerpc-cell64l.xml.
+ * features/rs6000/powerpc-cell32l.xml: Remove.
+ * features/rs6000/powerpc-cell64l.xml: Likewise.
+ * features/rs6000/powerpc-cell32l.c: Remove generated file.
+ * features/rs6000/powerpc-cell64l.c: Likewise.
+ * regformats/rs6000/powerpc-cell32l.dat: Remove generated file.
+ * regformats/rs6000/powerpc-cell64l.dat: Likewise.
+ * regformats/reg-spu.dat: Remove.
+
+ * target.h (enum target_object): Remove TARGET_OBJECT_SPU.
+ * corelow.c (struct spuid_list): Remove.
+ (add_to_spuid_list): Remove.
+ (core_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
+ * remote.c (PACKET_qXfer_spu_read, PACKET_qXfer_spu_write): Remove.
+ (remote_protocol_features): Remove associated entries.
+ (_initialize_remote): No longer initialize them.
+ (remote_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
+ * linux-nat.c (SPUFS_MAGIC): Remove.
+ (linux_proc_xfer_spu): Remove.
+ (spu_enumerate_spu_ids): Remove.
+ (linux_nat_target::xfer_partial): Remove support for TARGET_OBJECT_SPU.
+ * linux-tdep.c (-linux_spu_make_corefile_notes): Remove.
+ (linux_make_corefile_notes): No longer call it.
+
+ * regcache.c (cooked_read_test): Remove bfd_arch_spu special case.
+ (cooked_write_test): Likewise.
+
2019-09-20 Tom Tromey <tom@tromey.com>
* NEWS: Mention case-sensitivity of TUI commands.
diff --git a/gdb/MAINTAINERS b/gdb/MAINTAINERS
index fd24cb7..3efcb71 100644
--- a/gdb/MAINTAINERS
+++ b/gdb/MAINTAINERS
@@ -319,9 +319,6 @@ the native maintainer when resolving ABI issues.
sparc --target=sparc64-solaris2.10 ,-Werror
(--target=sparc-elf broken)
- spu --target=spu-elf ,-Werror
- Ulrich Weigand uweigand@de.ibm.com
-
tic6x --target=tic6x-elf ,-Werror
Yao Qi qiyao@sourceware.org
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index e7e26a4..877a9cc 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -776,7 +776,6 @@ ALL_TARGET_OBS = \
solib-darwin.o \
solib-dsbt.o \
solib-frv.o \
- solib-spu.o \
solib-svr4.o \
sparc-linux-tdep.o \
sparc-nbsd-tdep.o \
@@ -784,8 +783,6 @@ ALL_TARGET_OBS = \
sparc-ravenscar-thread.o \
sparc-sol2-tdep.o \
sparc-tdep.o \
- spu-multiarch.o \
- spu-tdep.o \
symfile-mem.o \
tic6x-linux-tdep.o \
tic6x-tdep.o \
@@ -1382,7 +1379,6 @@ HFILES_NO_SRCDIR = \
solib.h \
solib-aix.h \
solib-darwin.h \
- solib-spu.h \
solib-svr4.h \
solib-target.h \
solist.h \
@@ -1392,7 +1388,6 @@ HFILES_NO_SRCDIR = \
sparc-ravenscar-thread.h \
sparc-tdep.h \
sparc64-tdep.h \
- spu-tdep.h \
stabsread.h \
stack.h \
stap-probe.h \
@@ -2304,7 +2299,6 @@ ALLDEPFILES = \
sh-tdep.c \
sol2-tdep.c \
solib-aix.c \
- solib-spu.c \
solib-svr4.c \
sparc-linux-nat.c \
sparc-linux-tdep.c \
@@ -2327,9 +2321,6 @@ ALLDEPFILES = \
sparc64-obsd-tdep.c \
sparc64-sol2-tdep.c \
sparc64-tdep.c \
- spu-linux-nat.c \
- spu-multiarch.c \
- spu-tdep.c \
tilegx-linux-nat.c \
tilegx-linux-tdep.c \
tilegx-tdep.c \
diff --git a/gdb/NEWS b/gdb/NEWS
index 201701b..35b48d9 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -330,6 +330,12 @@ focus, winheight, +, -, >, <
from .inputrc to bind keys in this keymap. This feature is only
available when gdb is built against GNU readline 8.0 or later.
+* Removed targets and native configurations
+
+ GDB no longer supports debugging the Cell Broadband Engine. This includes
+ both debugging standalone Cell/B.E. SPU applications and integrated debugging
+ of Cell/B.E. applications that use both the PPU and SPU architectures.
+
*** Changes in GDB 8.3
* GDB and GDBserver now support access to additional registers on
diff --git a/gdb/arch/ppc-linux-common.c b/gdb/arch/ppc-linux-common.c
index 8af30e3..20b3580 100644
--- a/gdb/arch/ppc-linux-common.c
+++ b/gdb/arch/ppc-linux-common.c
@@ -50,9 +50,7 @@ ppc_linux_match_description (struct ppc_linux_features features)
if (features.wordsize == 8)
{
- if (features.cell)
- tdesc = tdesc_powerpc_cell64l;
- else if (features.vsx)
+ if (features.vsx)
tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx64l
: features.isa207? tdesc_powerpc_isa207_vsx64l
: features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx64l
@@ -69,9 +67,7 @@ ppc_linux_match_description (struct ppc_linux_features features)
{
gdb_assert (features.wordsize == 4);
- if (features.cell)
- tdesc = tdesc_powerpc_cell32l;
- else if (features.vsx)
+ if (features.vsx)
tdesc = (features.htm? tdesc_powerpc_isa207_htm_vsx32l
: features.isa207? tdesc_powerpc_isa207_vsx32l
: features.ppr_dscr? tdesc_powerpc_isa205_ppr_dscr_vsx32l
diff --git a/gdb/arch/ppc-linux-common.h b/gdb/arch/ppc-linux-common.h
index fe332ac..1f91ff0 100644
--- a/gdb/arch/ppc-linux-common.h
+++ b/gdb/arch/ppc-linux-common.h
@@ -58,7 +58,6 @@ struct ppc_linux_features
bool ppr_dscr;
bool isa207;
bool htm;
- bool cell;
};
/* Base value for ppc_linux_features variables. */
@@ -70,7 +69,6 @@ const struct ppc_linux_features ppc_linux_no_features = {
false,
false,
false,
- false,
};
/* Return a target description that matches FEATURES. */
diff --git a/gdb/arch/ppc-linux-tdesc.h b/gdb/arch/ppc-linux-tdesc.h
index 5c9242f..5014131 100644
--- a/gdb/arch/ppc-linux-tdesc.h
+++ b/gdb/arch/ppc-linux-tdesc.h
@@ -24,7 +24,6 @@ struct target_desc;
extern struct target_desc *tdesc_powerpc_32l;
extern struct target_desc *tdesc_powerpc_altivec32l;
-extern struct target_desc *tdesc_powerpc_cell32l;
extern struct target_desc *tdesc_powerpc_vsx32l;
extern struct target_desc *tdesc_powerpc_isa205_32l;
extern struct target_desc *tdesc_powerpc_isa205_altivec32l;
@@ -36,7 +35,6 @@ extern struct target_desc *tdesc_powerpc_e500l;
extern struct target_desc *tdesc_powerpc_64l;
extern struct target_desc *tdesc_powerpc_altivec64l;
-extern struct target_desc *tdesc_powerpc_cell64l;
extern struct target_desc *tdesc_powerpc_vsx64l;
extern struct target_desc *tdesc_powerpc_isa205_64l;
extern struct target_desc *tdesc_powerpc_isa205_altivec64l;
diff --git a/gdb/config/djgpp/fnchange.lst b/gdb/config/djgpp/fnchange.lst
index 12fb082..7608218 100644
--- a/gdb/config/djgpp/fnchange.lst
+++ b/gdb/config/djgpp/fnchange.lst
@@ -199,8 +199,6 @@
@V@/gdb/features/rs6000/powerpc-vsx32l.c @V@/gdb/features/rs6000/ppc-v32l.c
@V@/gdb/features/rs6000/powerpc-vsx64.c @V@/gdb/features/rs6000/ppc-v64.c
@V@/gdb/features/rs6000/powerpc-vsx64l.c @V@/gdb/features/rs6000/ppc-v64l.c
-@V@/gdb/features/rs6000/powerpc-cell32l.c @V@/gdb/features/rs6000/ppc-c32l.c
-@V@/gdb/features/rs6000/powerpc-cell64l.c @V@/gdb/features/rs6000/ppc-c64l.c
@V@/gdb/features/rs6000/powerpc-32.xml @V@/gdb/features/rs6000/ppc-32.xml
@V@/gdb/features/rs6000/powerpc-32l.xml @V@/gdb/features/rs6000/ppc-32l.xml
@V@/gdb/features/rs6000/powerpc-403.xml @V@/gdb/features/rs6000/ppc-403.xml
@@ -231,8 +229,6 @@
@V@/gdb/features/rs6000/powerpc-vsx32l.xml @V@/gdb/features/rs6000/ppc-v32l.xml
@V@/gdb/features/rs6000/powerpc-vsx64.xml @V@/gdb/features/rs6000/ppc-v64.xml
@V@/gdb/features/rs6000/powerpc-vsx64l.xml @V@/gdb/features/rs6000/ppc-v64l.xml
-@V@/gdb/features/rs6000/powerpc-cell32l.xml @V@/gdb/features/rs6000/ppc-c32l.xml
-@V@/gdb/features/rs6000/powerpc-cell64l.xml @V@/gdb/features/rs6000/ppc-c64l.xml
@V@/gdb/features/i386/amd64-avx-linux.c @V@/gdb/features/i386/a64-al.c
@V@/gdb/features/i386/amd64-avx.c @V@/gdb/features/i386/a64-a.c
@V@/gdb/features/i386/amd64-avx-linux.xml @V@/gdb/features/i386/a64-al.xml
@@ -356,8 +352,6 @@
@V@/gdb/regformats/rs6000/powerpc-isa205-vsx64l.dat @V@/gdb/regformats/rs6000/ppciv64l.dat
@V@/gdb/regformats/rs6000/powerpc-vsx32l.dat @V@/gdb/regformats/rs6000/ppc-v32l.dat
@V@/gdb/regformats/rs6000/powerpc-vsx64l.dat @V@/gdb/regformats/rs6000/ppc-v64l.dat
-@V@/gdb/regformats/rs6000/powerpc-cell32l.dat @V@/gdb/regformats/rs6000/ppc-c32l.dat
-@V@/gdb/regformats/rs6000/powerpc-cell64l.dat @V@/gdb/regformats/rs6000/ppc-c64l.dat
@V@/gdb/regformats/tic6x-c62x.dat @V@/gdb/regformats/c6x-62x.dat
@V@/gdb/regformats/tic6x-c64x.dat @V@/gdb/regformats/c6x-64x.dat
@V@/gdb/regformats/tic6x-c64xp.dat @V@/gdb/regformats/c6xc64xp.dat
@@ -452,9 +446,6 @@
@V@/gdb/testsuite/gdb.base/watchpoint-cond-gone.exp @V@/gdb/testsuite/gdb.base/wpcondg.exp
@V@/gdb/testsuite/gdb.base/watchpoint-cond-gone.c @V@/gdb/testsuite/gdb.base/wpcondg.c
@V@/gdb/testsuite/gdb.base/watchpoint-cond-gone-stripped.c @V@/gdb/testsuite/gdb.base/wpcondgs.c
-@V@/gdb/testsuite/gdb.cell/coremaker-spu.c @V@/gdb/testsuite/gdb.cell/core-spu.c
-@V@/gdb/testsuite/gdb.cell/ea-cache-spu.c @V@/gdb/testsuite/gdb.cell/ea-spu.c
-@V@/gdb/testsuite/gdb.cell/mem-access-spu.c @V@/gdb/testsuite/gdb.cell/mem-spu.c
@V@/gdb/testsuite/gdb.cp/m-static1.cc @V@/gdb/testsuite/gdb.cp/m-stat1.cc
@V@/gdb/testsuite/gdb.cp/namespace1.cc @V@/gdb/testsuite/gdb.cp/namesp1.cc
@V@/gdb/testsuite/gdb.cp/namespace-nested-import.cc @V@/gdb/testsuite/gdb.cp/nnested.cc
diff --git a/gdb/configure.host b/gdb/configure.host
index c87f997..f382cad 100644
--- a/gdb/configure.host
+++ b/gdb/configure.host
@@ -140,13 +140,7 @@ powerpc-*-netbsd* | powerpc-*-knetbsd*-gnu)
gdb_host=nbsd ;;
powerpc-*-openbsd*) gdb_host=obsd ;;
-powerpc64*-*-linux*) gdb_host=ppc64-linux
- # Support 'pseudo-native' debugging on the Cell BE
- if test "${target_cpu}" = "spu"; then
- gdb_host=spu-linux
- gdb_native=yes
- fi
- ;;
+powerpc64*-*-linux*) gdb_host=ppc64-linux ;;
powerpc*-*-linux*) gdb_host=linux ;;
riscv*-*-freebsd*) gdb_host=fbsd ;;
diff --git a/gdb/configure.nat b/gdb/configure.nat
index 64ee101..77a2ee8 100644
--- a/gdb/configure.nat
+++ b/gdb/configure.nat
@@ -484,21 +484,4 @@ case ${gdb_host} in
;;
esac
;;
- spu-linux)
- case ${gdb_host_cpu} in
- powerpc)
- # Target: Cell BE (PowerPC64 + SPU)
- # This implements a 'pseudo-native' GDB running on the
- # PPU side of the Cell BE and debugging the SPU side.
- NAT_FILE=
- NAT_CDEPS=
- LOADLIBES=
- NATDEPFILES='spu-linux-nat.o \
- inf-ptrace.o fork-child.o nat/fork-inferior.o \
- nat/linux-procfs.o nat/linux-ptrace.o \
- nat/linux-waitpid.o \
- nat/linux-personality.o nat/linux-namespaces.o'
- ;;
- esac
- ;;
esac
diff --git a/gdb/configure.tgt b/gdb/configure.tgt
index 7c0215e..2edfe3b 100644
--- a/gdb/configure.tgt
+++ b/gdb/configure.tgt
@@ -514,8 +514,7 @@ powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
powerpc*-*-linux*)
# Target: PowerPC running Linux
gdb_target_obs="rs6000-tdep.o ppc-linux-tdep.o ppc-sysv-tdep.o \
- ppc64-tdep.o solib-svr4.o solib-spu.o \
- spu-multiarch.o \
+ ppc64-tdep.o solib-svr4.o \
glibc-tdep.o symfile-mem.o linux-tdep.o \
ravenscar-thread.o ppc-ravenscar-thread.o \
linux-record.o \
@@ -668,12 +667,6 @@ sparc64-*-*)
ravenscar-thread.o sparc-ravenscar-thread.o"
;;
-spu*-*-*)
- # Target: Cell BE SPU
- gdb_target_obs="spu-tdep.o"
- build_gdbserver=yes
- ;;
-
s12z-*-*)
# Target: Freescale S12z
gdb_target_obs="s12z-tdep.o"
diff --git a/gdb/corelow.c b/gdb/corelow.c
index b30b91b..cea9210 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -709,36 +709,6 @@ core_target::files_info ()
print_section_info (&m_core_section_table, core_bfd);
}
\f
-struct spuid_list
-{
- gdb_byte *buf;
- ULONGEST offset;
- LONGEST len;
- ULONGEST pos;
- ULONGEST written;
-};
-
-static void
-add_to_spuid_list (bfd *abfd, asection *asect, void *list_p)
-{
- struct spuid_list *list = (struct spuid_list *) list_p;
- enum bfd_endian byte_order
- = bfd_big_endian (abfd) ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
- int fd, pos = 0;
-
- sscanf (bfd_section_name (asect), "SPU/%d/regs%n", &fd, &pos);
- if (pos == 0)
- return;
-
- if (list->pos >= list->offset && list->pos + 4 <= list->offset + list->len)
- {
- store_unsigned_integer (list->buf + list->pos - list->offset,
- 4, byte_order, fd);
- list->written += 4;
- }
- list->pos += 4;
-}
-
enum target_xfer_status
core_target::xfer_partial (enum target_object object, const char *annex,
gdb_byte *readbuf, const gdb_byte *writebuf,
@@ -865,64 +835,6 @@ core_target::xfer_partial (enum target_object object, const char *annex,
}
/* FALL THROUGH */
- case TARGET_OBJECT_SPU:
- if (readbuf && annex)
- {
- /* When the SPU contexts are stored in a core file, BFD
- represents this with a fake section called
- "SPU/<annex>". */
-
- struct bfd_section *section;
- bfd_size_type size;
- char sectionstr[100];
-
- xsnprintf (sectionstr, sizeof sectionstr, "SPU/%s", annex);
-
- section = bfd_get_section_by_name (core_bfd, sectionstr);
- if (section == NULL)
- return TARGET_XFER_E_IO;
-
- size = bfd_section_size (section);
- if (offset >= size)
- return TARGET_XFER_EOF;
- size -= offset;
- if (size > len)
- size = len;
-
- if (size == 0)
- return TARGET_XFER_EOF;
- if (!bfd_get_section_contents (core_bfd, section, readbuf,
- (file_ptr) offset, size))
- {
- warning (_("Couldn't read SPU section in core file."));
- return TARGET_XFER_E_IO;
- }
-
- *xfered_len = (ULONGEST) size;
- return TARGET_XFER_OK;
- }
- else if (readbuf)
- {
- /* NULL annex requests list of all present spuids. */
- struct spuid_list list;
-
- list.buf = readbuf;
- list.offset = offset;
- list.len = len;
- list.pos = 0;
- list.written = 0;
- bfd_map_over_sections (core_bfd, add_to_spuid_list, &list);
-
- if (list.written == 0)
- return TARGET_XFER_EOF;
- else
- {
- *xfered_len = (ULONGEST) list.written;
- return TARGET_XFER_OK;
- }
- }
- return TARGET_XFER_E_IO;
-
case TARGET_OBJECT_SIGNAL_INFO:
if (readbuf)
{
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 8eaaab3..0a10fa3 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,10 @@
+2019-09-20 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * doc/gdb.texinfo (Remote Configuration): Remove documentation for
+ qXfer:spu:read and qXfer:spu:write.
+ (General Query Packets): Likewise.
+ (Cell Broadband Engine SPU architecture): Remove subsection.
+
2019-09-18 Tom Tromey <tom@tromey.com>
* gdb.texinfo (Editing): Document readline application name.
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index a129ea0..f2713c0 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -22563,14 +22563,6 @@ are:
@tab @code{qXfer:sdata:read}
@tab @code{print $_sdata}
-@item @code{read-spu-object}
-@tab @code{qXfer:spu:read}
-@tab @code{info spu}
-
-@item @code{write-spu-object}
-@tab @code{qXfer:spu:write}
-@tab @code{info spu}
-
@item @code{read-siginfo-object}
@tab @code{qXfer:siginfo:read}
@tab @code{print $_siginfo}
@@ -24438,7 +24430,6 @@ all uses of @value{GDBN} with the architecture, both native and cross.
* Alpha::
* MIPS::
* HPPA:: HP PA architecture
-* SPU:: Cell Broadband Engine SPU architecture
* PowerPC::
* Nios II::
* Sparc64::
@@ -24753,69 +24744,6 @@ given @var{address}.
@end table
-@node SPU
-@subsection Cell Broadband Engine SPU architecture
-@cindex Cell Broadband Engine
-@cindex SPU
-
-When @value{GDBN} is debugging the Cell Broadband Engine SPU architecture,
-it provides the following special commands:
-
-@table @code
-@item info spu event
-@kindex info spu
-Display SPU event facility status. Shows current event mask
-and pending event status.
-
-@item info spu signal
-Display SPU signal notification facility status. Shows pending
-signal-control word and signal notification mode of both signal
-notification channels.
-
-@item info spu mailbox
-Display SPU mailbox facility status. Shows all pending entries,
-in order of processing, in each of the SPU Write Outbound,
-SPU Write Outbound Interrupt, and SPU Read Inbound mailboxes.
-
-@item info spu dma
-Display MFC DMA status. Shows all pending commands in the MFC
-DMA queue. For each entry, opcode, tag, class IDs, effective
-and local store addresses and transfer size are shown.
-
-@item info spu proxydma
-Display MFC Proxy-DMA status. Shows all pending commands in the MFC
-Proxy-DMA queue. For each entry, opcode, tag, class IDs, effective
-and local store addresses and transfer size are shown.
-
-@end table
-
-When @value{GDBN} is debugging a combined PowerPC/SPU application
-on the Cell Broadband Engine, it provides in addition the following
-special commands:
-
-@table @code
-@item set spu stop-on-load @var{arg}
-@kindex set spu
-Set whether to stop for new SPE threads. When set to @code{on}, @value{GDBN}
-will give control to the user when a new SPE thread enters its @code{main}
-function. The default is @code{off}.
-
-@item show spu stop-on-load
-@kindex show spu
-Show whether to stop for new SPE threads.
-
-@item set spu auto-flush-cache @var{arg}
-Set whether to automatically flush the software-managed cache. When set to
-@code{on}, @value{GDBN} will automatically cause the SPE software-managed
-cache to be flushed whenever SPE execution stops. This provides a consistent
-view of PowerPC memory that is accessed via the cache. If an application
-does not use the software-managed cache, this option has no effect.
-
-@item show spu auto-flush-cache
-Show whether to automatically flush the software-managed cache.
-
-@end table
-
@node PowerPC
@subsection PowerPC
@cindex PowerPC architecture
@@ -40110,16 +40038,6 @@ These are the currently defined stub features and their properties:
@tab @samp{-}
@tab Yes
-@item @samp{qXfer:spu:read}
-@tab No
-@tab @samp{-}
-@tab Yes
-
-@item @samp{qXfer:spu:write}
-@tab No
-@tab @samp{-}
-@tab Yes
-
@item @samp{qXfer:siginfo:read}
@tab No
@tab @samp{-}
@@ -40352,14 +40270,6 @@ The remote stub understands the @samp{qXfer:memory-map:read} packet
The remote stub understands the @samp{qXfer:sdata:read} packet
(@pxref{qXfer sdata read}).
-@item qXfer:spu:read
-The remote stub understands the @samp{qXfer:spu:read} packet
-(@pxref{qXfer spu read}).
-
-@item qXfer:spu:write
-The remote stub understands the @samp{qXfer:spu:write} packet
-(@pxref{qXfer spu write}).
-
@item qXfer:siginfo:read
The remote stub understands the @samp{qXfer:siginfo:read} packet
(@pxref{qXfer siginfo read}).
@@ -40805,18 +40715,6 @@ This packet is not probed by default; the remote stub must request it,
by supplying an appropriate @samp{qSupported} response
(@pxref{qSupported}).
-@item qXfer:spu:read:@var{annex}:@var{offset},@var{length}
-@anchor{qXfer spu read}
-Read contents of an @code{spufs} file on the target system. The
-annex specifies which file to read; it must be of the form
-@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
-in the target process, and @var{name} identifes the @code{spufs} file
-in that context to be accessed.
-
-This packet is not probed by default; the remote stub must request it,
-by supplying an appropriate @samp{qSupported} response
-(@pxref{qSupported}).
-
@item qXfer:threads:read::@var{offset},@var{length}
@anchor{qXfer threads read}
Access the list of threads on target. @xref{Thread List Format}. The
@@ -40902,17 +40800,6 @@ empty (@pxref{qXfer write}).
This packet is not probed by default; the remote stub must request it,
by supplying an appropriate @samp{qSupported} response
(@pxref{qSupported}).
-
-@item qXfer:spu:write:@var{annex}:@var{offset}:@var{data}@dots{}
-@anchor{qXfer spu write}
-Write @var{data} to an @code{spufs} file on the target system. The
-annex specifies which file to write; it must be of the form
-@file{@var{id}/@var{name}}, where @var{id} specifies an SPU context ID
-in the target process, and @var{name} identifes the @code{spufs} file
-in that context to be accessed.
-
-This packet is not probed by default; the remote stub must request it,
-by supplying an appropriate @samp{qSupported} response (@pxref{qSupported}).
@end table
@item qXfer:@var{object}:@var{operation}:@dots{}
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 2b65d46..52318d4 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -53,7 +53,7 @@ WHICH = arm/arm-with-iwmmxt arm/arm-with-vfpv2 arm/arm-with-vfpv3 \
rs6000/powerpc-32 \
rs6000/powerpc-32l rs6000/powerpc-altivec32l rs6000/powerpc-e500l \
rs6000/powerpc-64l rs6000/powerpc-altivec64l rs6000/powerpc-vsx32l \
- rs6000/powerpc-vsx64l rs6000/powerpc-cell32l rs6000/powerpc-cell64l \
+ rs6000/powerpc-vsx64l \
rs6000/powerpc-isa205-32l rs6000/powerpc-isa205-64l \
rs6000/powerpc-isa205-altivec32l rs6000/powerpc-isa205-altivec64l \
rs6000/powerpc-isa205-vsx32l rs6000/powerpc-isa205-vsx64l \
@@ -84,8 +84,6 @@ microblaze-expedite = r1,rpc
nios2-linux-expedite = sp,pc
or1k-expedite = r1,npc
powerpc-expedite = r1,pc
-rs6000/powerpc-cell32l-expedite = r1,pc,r0,orig_r3,r4
-rs6000/powerpc-cell64l-expedite = r1,pc,r0,orig_r3,r4
s390-linux32-expedite = r14,r15,pswa
s390-linux32v1-expedite = r14,r15,pswa
s390-linux32v2-expedite = r14,r15,pswa
@@ -140,8 +138,6 @@ XMLTOC = \
rs6000/powerpc-altivec32l.xml \
rs6000/powerpc-altivec64.xml \
rs6000/powerpc-altivec64l.xml \
- rs6000/powerpc-cell32l.xml \
- rs6000/powerpc-cell64l.xml \
rs6000/powerpc-e500.xml \
rs6000/powerpc-e500l.xml \
rs6000/powerpc-isa205-32l.xml \
diff --git a/gdb/features/rs6000/powerpc-cell32l.c b/gdb/features/rs6000/powerpc-cell32l.c
deleted file mode 100644
index 74c42f9..0000000
--- a/gdb/features/rs6000/powerpc-cell32l.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: powerpc-cell32l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_cell32l;
-static void
-initialize_tdesc_powerpc_cell32l (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
-
- tdesc_add_compatible (result, bfd_scan_arch ("spu:256K"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
- tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
- tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
- tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
- tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
- tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- tdesc_type *element_type;
- element_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", element_type, 4);
-
- element_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", element_type, 4);
-
- element_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", element_type, 8);
-
- element_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", element_type, 16);
-
- tdesc_type_with_fields *type_with_fields;
- type_with_fields = tdesc_create_union (feature, "vec128");
- tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type_with_fields, "uint128", field_type);
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type_with_fields, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type_with_fields, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type_with_fields, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
- tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
- tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
- tdesc_powerpc_cell32l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-cell32l.xml b/gdb/features/rs6000/powerpc-cell32l.xml
deleted file mode 100644
index 57b4806..0000000
--- a/gdb/features/rs6000/powerpc-cell32l.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
- Copying and distribution of this file, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved. -->
-
-<!-- Cell/B.E. architecture. Identical to the PowerPC 32-bit Linux UISA,
- but adds support for the SPU as compatible architecture. -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
- <architecture>powerpc:common</architecture>
- <compatible>spu</compatible>
- <xi:include href="power-core.xml"/>
- <xi:include href="power-fpu.xml"/>
- <xi:include href="power-linux.xml"/>
- <xi:include href="power-altivec.xml"/>
-</target>
diff --git a/gdb/features/rs6000/powerpc-cell64l.c b/gdb/features/rs6000/powerpc-cell64l.c
deleted file mode 100644
index cbfda4c..0000000
--- a/gdb/features/rs6000/powerpc-cell64l.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
- Original: powerpc-cell64l.xml */
-
-#include "defs.h"
-#include "osabi.h"
-#include "target-descriptions.h"
-
-struct target_desc *tdesc_powerpc_cell64l;
-static void
-initialize_tdesc_powerpc_cell64l (void)
-{
- struct target_desc *result = allocate_target_description ();
- set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
-
- tdesc_add_compatible (result, bfd_scan_arch ("spu:256K"));
-
- struct tdesc_feature *feature;
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
- tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
- tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
- tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
- tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
- tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
- tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
- tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
-
- feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- tdesc_type *element_type;
- element_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", element_type, 4);
-
- element_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", element_type, 4);
-
- element_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", element_type, 8);
-
- element_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", element_type, 16);
-
- tdesc_type_with_fields *type_with_fields;
- type_with_fields = tdesc_create_union (feature, "vec128");
- tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type_with_fields, "uint128", field_type);
- field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type_with_fields, "v4_float", field_type);
- field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type_with_fields, "v4_int32", field_type);
- field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type_with_fields, "v8_int16", field_type);
- field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type_with_fields, "v16_int8", field_type);
-
- tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
- tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
- tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
-
- tdesc_powerpc_cell64l = result;
-}
diff --git a/gdb/features/rs6000/powerpc-cell64l.xml b/gdb/features/rs6000/powerpc-cell64l.xml
deleted file mode 100644
index c2add44..0000000
--- a/gdb/features/rs6000/powerpc-cell64l.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<!-- Copyright (C) 2009-2019 Free Software Foundation, Inc.
-
- Copying and distribution of this file, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved. -->
-
-<!-- Cell/B.E. architecture. Identical to the PowerPC 64-bit Linux UISA,
- but adds support for the SPU as compatible architecture. -->
-
-<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
- <architecture>powerpc:common64</architecture>
- <compatible>spu</compatible>
- <xi:include href="power64-core.xml"/>
- <xi:include href="power-fpu.xml"/>
- <xi:include href="power64-linux.xml"/>
- <xi:include href="power-altivec.xml"/>
-</target>
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index faafdfd..5c76167 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,43 @@
+2019-09-20 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * configure.srv (ipa_ppc_linux_regobj): Remove powerpc-cell32l-ipa.o
+ and powerpc-cell64l-ipa.o.
+ (powerpc*-*-linux*): Remove powerpc-cell32l.o and powerpc-cell64l.o
+ from srv_regobj. Remove rs6000/powerpc-cell32l.xml and
+ rs6000/powerpc-cell64l.xml from srv_xmlfiles.
+ (spu*-*-*): Remove.
+
+ * spu-low.c: Remove file.
+
+ * linux-ppc-low.c (INSTR_SC, NR_spu_run): Remove.
+ (parse_spufs_run): Remove.
+ (ppc_get_pc): Remove Cell/B.E. support.
+ (ppc_set_pc): Likewise.
+ (ppc_breakpoint_at): Likewise.
+ (ppc_arch_setup): Likewise.
+ (ppc_get_ipa_tdesc_idx): Do not handle tdesc_powerpc_cell64l or
+ tdesc_powerpc_cell32l.
+ (initialize_low_arch): Do not call init_registers_powerpc_cell64l
+ or init_registers_powerpc_cell32l.
+ * linux-ppc-ipa.c (get_ipa_tdesc): Do not handle PPC_TDESC_CELL.
+ (initialize_low_tracepoint): Do not call init_registers_powerpc_cell64l
+ or init_registers_powerpc_cell32l.
+ * linux-ppc-tdesc-init.h (PPC_TDESC_CELL): Mark as unused.
+ (init_registers_powerpc_cell32l): Remove prototype.
+ (init_registers_powerpc_cell64l): Likewise.
+
+ * target.h (struct target_ops): Remove qxfer_spu member.
+ * server.c (handle_qxfer_spu): Remove.
+ (qxfer_packets): Remove entry for "spu".
+ (handle_query): No longer support qXfer:spu:read or qXfer:spu:write.
+ * linux-low.c (SPUFS_MAGIC): Remove.
+ (spu_enumerate_spu_ids): Remove.
+ (linux_qxfer_spu): Remove.
+ (linux_target_ops): Remove qxfer_spu member.
+ * lynx-low.c (lynx_target_ops): Remove qxfer_spu member.
+ * nto-low.c (nto_target_ops): Remove qxfer_spu member.
+ * win32-low.c (win32_target_ops): Remove qxfer_spu member.
+
2019-08-23 Sergio Durigan Junior <sergiodj@redhat.com>
* Makefile.in (SFILES): Add 'gdbsupport/gdb-dlfcn.c'.
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
index 66d3d42..1a4ab8e 100644
--- a/gdb/gdbserver/configure.srv
+++ b/gdb/gdbserver/configure.srv
@@ -24,7 +24,7 @@
# Default hostio_last_error implementation
srv_hostio_err_objs="hostio-errno.o"
-ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-cell32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-isa205-ppr-dscr-vsx32l-ipa.o powerpc-isa207-vsx32l-ipa.o powerpc-isa207-htm-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-cell64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o powerpc-isa205-ppr-dscr-vsx64l-ipa.o powerpc-isa207-vsx64l-ipa.o powerpc-isa207-htm-vsx64l-ipa.o"
+ipa_ppc_linux_regobj="powerpc-32l-ipa.o powerpc-altivec32l-ipa.o powerpc-vsx32l-ipa.o powerpc-isa205-32l-ipa.o powerpc-isa205-altivec32l-ipa.o powerpc-isa205-vsx32l-ipa.o powerpc-isa205-ppr-dscr-vsx32l-ipa.o powerpc-isa207-vsx32l-ipa.o powerpc-isa207-htm-vsx32l-ipa.o powerpc-e500l-ipa.o powerpc-64l-ipa.o powerpc-altivec64l-ipa.o powerpc-vsx64l-ipa.o powerpc-isa205-64l-ipa.o powerpc-isa205-altivec64l-ipa.o powerpc-isa205-vsx64l-ipa.o powerpc-isa205-ppr-dscr-vsx64l-ipa.o powerpc-isa207-vsx64l-ipa.o powerpc-isa207-htm-vsx64l-ipa.o"
# Linux object files. This is so we don't have to repeat
# these files over and over again.
@@ -186,7 +186,6 @@ case "${target}" in
;;
powerpc*-*-linux*) srv_regobj="powerpc-32l.o"
srv_regobj="${srv_regobj} powerpc-altivec32l.o"
- srv_regobj="${srv_regobj} powerpc-cell32l.o"
srv_regobj="${srv_regobj} powerpc-vsx32l.o"
srv_regobj="${srv_regobj} powerpc-isa205-32l.o"
srv_regobj="${srv_regobj} powerpc-isa205-altivec32l.o"
@@ -197,7 +196,6 @@ case "${target}" in
srv_regobj="${srv_regobj} powerpc-e500l.o"
srv_regobj="${srv_regobj} powerpc-64l.o"
srv_regobj="${srv_regobj} powerpc-altivec64l.o"
- srv_regobj="${srv_regobj} powerpc-cell64l.o"
srv_regobj="${srv_regobj} powerpc-vsx64l.o"
srv_regobj="${srv_regobj} powerpc-isa205-64l.o"
srv_regobj="${srv_regobj} powerpc-isa205-altivec64l.o"
@@ -209,7 +207,6 @@ case "${target}" in
srv_tgtobj="${srv_tgtobj} arch/ppc-linux-common.o"
srv_xmlfiles="rs6000/powerpc-32l.xml"
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.xml"
- srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-cell32l.xml"
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx32l.xml"
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-32l.xml"
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec32l.xml"
@@ -240,7 +237,6 @@ case "${target}" in
srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml"
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec64l.xml"
- srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-cell64l.xml"
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx64l.xml"
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-64l.xml"
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec64l.xml"
@@ -340,9 +336,6 @@ case "${target}" in
srv_linux_regsets=yes
srv_linux_thread_db=yes
;;
- spu*-*-*) srv_regobj=reg-spu.o
- srv_tgtobj="spu-low.o fork-child.o fork-inferior.o"
- ;;
tic6x-*-uclinux) if $development; then
srv_regobj="tic6x-c64xp-linux.o"
srv_regobj="${srv_regobj} tic6x-c64x-linux.o"
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
index 3113017..d64c364 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
@@ -60,10 +60,6 @@
#endif
#include "nat/linux-namespaces.h"
-#ifndef SPUFS_MAGIC
-#define SPUFS_MAGIC 0x23c9b64e
-#endif
-
#ifdef HAVE_PERSONALITY
# include <sys/personality.h>
# if !HAVE_DECL_ADDR_NO_RANDOMIZE
@@ -6358,99 +6354,6 @@ linux_supports_range_stepping (void)
return (*the_low_target.supports_range_stepping) ();
}
-/* Enumerate spufs IDs for process PID. */
-static int
-spu_enumerate_spu_ids (long pid, unsigned char *buf, CORE_ADDR offset, int len)
-{
- int pos = 0;
- int written = 0;
- char path[128];
- DIR *dir;
- struct dirent *entry;
-
- sprintf (path, "/proc/%ld/fd", pid);
- dir = opendir (path);
- if (!dir)
- return -1;
-
- rewinddir (dir);
- while ((entry = readdir (dir)) != NULL)
- {
- struct stat st;
- struct statfs stfs;
- int fd;
-
- fd = atoi (entry->d_name);
- if (!fd)
- continue;
-
- sprintf (path, "/proc/%ld/fd/%d", pid, fd);
- if (stat (path, &st) != 0)
- continue;
- if (!S_ISDIR (st.st_mode))
- continue;
-
- if (statfs (path, &stfs) != 0)
- continue;
- if (stfs.f_type != SPUFS_MAGIC)
- continue;
-
- if (pos >= offset && pos + 4 <= offset + len)
- {
- *(unsigned int *)(buf + pos - offset) = fd;
- written += 4;
- }
- pos += 4;
- }
-
- closedir (dir);
- return written;
-}
-
-/* Implements the to_xfer_partial interface for the TARGET_OBJECT_SPU
- object type, using the /proc file system. */
-static int
-linux_qxfer_spu (const char *annex, unsigned char *readbuf,
- unsigned const char *writebuf,
- CORE_ADDR offset, int len)
-{
- long pid = lwpid_of (current_thread);
- char buf[128];
- int fd = 0;
- int ret = 0;
-
- if (!writebuf && !readbuf)
- return -1;
-
- if (!*annex)
- {
- if (!readbuf)
- return -1;
- else
- return spu_enumerate_spu_ids (pid, readbuf, offset, len);
- }
-
- sprintf (buf, "/proc/%ld/fd/%s", pid, annex);
- fd = open (buf, writebuf? O_WRONLY : O_RDONLY);
- if (fd <= 0)
- return -1;
-
- if (offset != 0
- && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
- {
- close (fd);
- return 0;
- }
-
- if (writebuf)
- ret = write (fd, writebuf, (size_t) len);
- else
- ret = read (fd, readbuf, (size_t) len);
-
- close (fd);
- return ret;
-}
-
#if defined PT_GETDSBT || defined PTRACE_GETFDPIC
struct target_loadseg
{
@@ -7496,7 +7399,6 @@ static struct target_ops linux_target_ops = {
#else
NULL,
#endif
- linux_qxfer_spu,
hostio_last_error_from_errno,
linux_qxfer_osdata,
linux_xfer_siginfo,
diff --git a/gdb/gdbserver/linux-ppc-ipa.c b/gdb/gdbserver/linux-ppc-ipa.c
index 08adc52..f9df022 100644
--- a/gdb/gdbserver/linux-ppc-ipa.c
+++ b/gdb/gdbserver/linux-ppc-ipa.c
@@ -181,8 +181,6 @@ get_ipa_tdesc (int idx)
return tdesc_powerpc_64l;
case PPC_TDESC_ALTIVEC:
return tdesc_powerpc_altivec64l;
- case PPC_TDESC_CELL:
- return tdesc_powerpc_cell64l;
case PPC_TDESC_VSX:
return tdesc_powerpc_vsx64l;
case PPC_TDESC_ISA205:
@@ -202,8 +200,6 @@ get_ipa_tdesc (int idx)
return tdesc_powerpc_32l;
case PPC_TDESC_ALTIVEC:
return tdesc_powerpc_altivec32l;
- case PPC_TDESC_CELL:
- return tdesc_powerpc_cell32l;
case PPC_TDESC_VSX:
return tdesc_powerpc_vsx32l;
case PPC_TDESC_ISA205:
@@ -241,7 +237,6 @@ initialize_low_tracepoint (void)
#ifdef __powerpc64__
init_registers_powerpc_64l ();
init_registers_powerpc_altivec64l ();
- init_registers_powerpc_cell64l ();
init_registers_powerpc_vsx64l ();
init_registers_powerpc_isa205_64l ();
init_registers_powerpc_isa205_altivec64l ();
@@ -252,7 +247,6 @@ initialize_low_tracepoint (void)
#else
init_registers_powerpc_32l ();
init_registers_powerpc_altivec32l ();
- init_registers_powerpc_cell32l ();
init_registers_powerpc_vsx32l ();
init_registers_powerpc_isa205_32l ();
init_registers_powerpc_isa205_altivec32l ();
diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c
index 8a0965b..c062282 100644
--- a/gdb/gdbserver/linux-ppc-low.c
+++ b/gdb/gdbserver/linux-ppc-low.c
@@ -220,73 +220,10 @@ ppc_supply_ptrace_register (struct regcache *regcache,
perror_with_name ("Unexpected byte order");
}
-
-#define INSTR_SC 0x44000002
-#define NR_spu_run 0x0116
-
-/* If the PPU thread is currently stopped on a spu_run system call,
- return to FD and ADDR the file handle and NPC parameter address
- used with the system call. Return non-zero if successful. */
-static int
-parse_spufs_run (struct regcache *regcache, int *fd, CORE_ADDR *addr)
-{
- CORE_ADDR curr_pc;
- int curr_insn;
- int curr_r0;
-
- if (register_size (regcache->tdesc, 0) == 4)
- {
- unsigned int pc, r0, r3, r4;
- collect_register_by_name (regcache, "pc", &pc);
- collect_register_by_name (regcache, "r0", &r0);
- collect_register_by_name (regcache, "orig_r3", &r3);
- collect_register_by_name (regcache, "r4", &r4);
- curr_pc = (CORE_ADDR) pc;
- curr_r0 = (int) r0;
- *fd = (int) r3;
- *addr = (CORE_ADDR) r4;
- }
- else
- {
- unsigned long pc, r0, r3, r4;
- collect_register_by_name (regcache, "pc", &pc);
- collect_register_by_name (regcache, "r0", &r0);
- collect_register_by_name (regcache, "orig_r3", &r3);
- collect_register_by_name (regcache, "r4", &r4);
- curr_pc = (CORE_ADDR) pc;
- curr_r0 = (int) r0;
- *fd = (int) r3;
- *addr = (CORE_ADDR) r4;
- }
-
- /* Fetch instruction preceding current NIP. */
- if ((*the_target->read_memory) (curr_pc - 4,
- (unsigned char *) &curr_insn, 4) != 0)
- return 0;
- /* It should be a "sc" instruction. */
- if (curr_insn != INSTR_SC)
- return 0;
- /* System call number should be NR_spu_run. */
- if (curr_r0 != NR_spu_run)
- return 0;
-
- return 1;
-}
-
static CORE_ADDR
ppc_get_pc (struct regcache *regcache)
{
- CORE_ADDR addr;
- int fd;
-
- if (parse_spufs_run (regcache, &fd, &addr))
- {
- unsigned int pc;
- (*the_target->read_memory) (addr, (unsigned char *) &pc, 4);
- return ((CORE_ADDR)1 << 63)
- | ((CORE_ADDR)fd << 32) | (CORE_ADDR) (pc - 4);
- }
- else if (register_size (regcache->tdesc, 0) == 4)
+ if (register_size (regcache->tdesc, 0) == 4)
{
unsigned int pc;
collect_register_by_name (regcache, "pc", &pc);
@@ -303,15 +240,7 @@ ppc_get_pc (struct regcache *regcache)
static void
ppc_set_pc (struct regcache *regcache, CORE_ADDR pc)
{
- CORE_ADDR addr;
- int fd;
-
- if (parse_spufs_run (regcache, &fd, &addr))
- {
- unsigned int newpc = pc;
- (*the_target->write_memory) (addr, (unsigned char *) &newpc, 4);
- }
- else if (register_size (regcache->tdesc, 0) == 4)
+ if (register_size (regcache->tdesc, 0) == 4)
{
unsigned int newpc = pc;
supply_register_by_name (regcache, "pc", &newpc);
@@ -348,23 +277,11 @@ ppc_breakpoint_at (CORE_ADDR where)
{
unsigned int insn;
- if (where & ((CORE_ADDR)1 << 63))
- {
- char mem_annex[32];
- sprintf (mem_annex, "%d/mem", (int)((where >> 32) & 0x7fffffff));
- (*the_target->qxfer_spu) (mem_annex, (unsigned char *) &insn,
- NULL, where & 0xffffffff, 4);
- if (insn == 0x3fff)
- return 1;
- }
- else
- {
- (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
- if (insn == ppc_breakpoint)
- return 1;
- /* If necessary, recognize more trap instructions here. GDB only uses
- the one. */
- }
+ (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
+ if (insn == ppc_breakpoint)
+ return 1;
+ /* If necessary, recognize more trap instructions here. GDB only uses
+ the one. */
return 0;
}
@@ -941,9 +858,6 @@ ppc_arch_setup (void)
}
}
- if (ppc_hwcap & PPC_FEATURE_CELL)
- features.cell = true;
-
tdesc = ppc_linux_match_description (features);
/* On 32-bit machines, check for SPE registers.
@@ -3416,8 +3330,6 @@ ppc_get_ipa_tdesc_idx (void)
return PPC_TDESC_BASE;
if (tdesc == tdesc_powerpc_altivec64l)
return PPC_TDESC_ALTIVEC;
- if (tdesc == tdesc_powerpc_cell64l)
- return PPC_TDESC_CELL;
if (tdesc == tdesc_powerpc_vsx64l)
return PPC_TDESC_VSX;
if (tdesc == tdesc_powerpc_isa205_64l)
@@ -3438,8 +3350,6 @@ ppc_get_ipa_tdesc_idx (void)
return PPC_TDESC_BASE;
if (tdesc == tdesc_powerpc_altivec32l)
return PPC_TDESC_ALTIVEC;
- if (tdesc == tdesc_powerpc_cell32l)
- return PPC_TDESC_CELL;
if (tdesc == tdesc_powerpc_vsx32l)
return PPC_TDESC_VSX;
if (tdesc == tdesc_powerpc_isa205_32l)
@@ -3507,7 +3417,6 @@ initialize_low_arch (void)
init_registers_powerpc_32l ();
init_registers_powerpc_altivec32l ();
- init_registers_powerpc_cell32l ();
init_registers_powerpc_vsx32l ();
init_registers_powerpc_isa205_32l ();
init_registers_powerpc_isa205_altivec32l ();
@@ -3519,7 +3428,6 @@ initialize_low_arch (void)
#if __powerpc64__
init_registers_powerpc_64l ();
init_registers_powerpc_altivec64l ();
- init_registers_powerpc_cell64l ();
init_registers_powerpc_vsx64l ();
init_registers_powerpc_isa205_64l ();
init_registers_powerpc_isa205_altivec64l ();
diff --git a/gdb/gdbserver/linux-ppc-tdesc-init.h b/gdb/gdbserver/linux-ppc-tdesc-init.h
index 4f9a7c5..299b3ce 100644
--- a/gdb/gdbserver/linux-ppc-tdesc-init.h
+++ b/gdb/gdbserver/linux-ppc-tdesc-init.h
@@ -27,7 +27,7 @@
enum ppc_linux_tdesc {
PPC_TDESC_BASE,
PPC_TDESC_ALTIVEC,
- PPC_TDESC_CELL,
+ PPC_TDESC_CELL, /* No longer used, but kept to avoid ABI changes. */
PPC_TDESC_VSX,
PPC_TDESC_ISA205,
PPC_TDESC_ISA205_ALTIVEC,
@@ -46,9 +46,6 @@ void init_registers_powerpc_32l (void);
/* Defined in auto-generated file powerpc-altivec32l.c. */
void init_registers_powerpc_altivec32l (void);
-/* Defined in auto-generated file powerpc-cell32l.c. */
-void init_registers_powerpc_cell32l (void);
-
/* Defined in auto-generated file powerpc-vsx32l.c. */
void init_registers_powerpc_vsx32l (void);
@@ -83,9 +80,6 @@ void init_registers_powerpc_64l (void);
/* Defined in auto-generated file powerpc-altivec64l.c. */
void init_registers_powerpc_altivec64l (void);
-/* Defined in auto-generated file powerpc-cell64l.c. */
-void init_registers_powerpc_cell64l (void);
-
/* Defined in auto-generated file powerpc-vsx64l.c. */
void init_registers_powerpc_vsx64l (void);
diff --git a/gdb/gdbserver/lynx-low.c b/gdb/gdbserver/lynx-low.c
index 0a8b258..2bd24e7 100644
--- a/gdb/gdbserver/lynx-low.c
+++ b/gdb/gdbserver/lynx-low.c
@@ -753,7 +753,6 @@ static struct target_ops lynx_target_ops = {
NULL, /* stopped_data_address */
NULL, /* read_offsets */
NULL, /* get_tls_address */
- NULL, /* qxfer_spu */
NULL, /* hostio_last_error */
NULL, /* qxfer_osdata */
NULL, /* qxfer_siginfo */
diff --git a/gdb/gdbserver/nto-low.c b/gdb/gdbserver/nto-low.c
index 011701a..3c11306 100644
--- a/gdb/gdbserver/nto-low.c
+++ b/gdb/gdbserver/nto-low.c
@@ -963,7 +963,6 @@ static struct target_ops nto_target_ops = {
nto_stopped_data_address,
NULL, /* nto_read_offsets */
NULL, /* thread_db_set_tls_address */
- NULL,
hostio_last_error_from_errno,
NULL, /* nto_qxfer_osdata */
NULL, /* xfer_siginfo */
diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c
index 127cd38..67e8e3e 100644
--- a/gdb/gdbserver/server.c
+++ b/gdb/gdbserver/server.c
@@ -1613,22 +1613,6 @@ handle_qxfer_siginfo (const char *annex,
return (*the_target->qxfer_siginfo) (annex, readbuf, writebuf, offset, len);
}
-/* Handle qXfer:spu:read and qXfer:spu:write. */
-
-static int
-handle_qxfer_spu (const char *annex,
- gdb_byte *readbuf, const gdb_byte *writebuf,
- ULONGEST offset, LONGEST len)
-{
- if (the_target->qxfer_spu == NULL)
- return -2;
-
- if (current_thread == NULL)
- return -1;
-
- return (*the_target->qxfer_spu) (annex, readbuf, writebuf, offset, len);
-}
-
/* Handle qXfer:statictrace:read. */
static int
@@ -1985,7 +1969,6 @@ static const struct qxfer qxfer_packets[] =
{ "libraries-svr4", handle_qxfer_libraries_svr4 },
{ "osdata", handle_qxfer_osdata },
{ "siginfo", handle_qxfer_siginfo },
- { "spu", handle_qxfer_spu },
{ "statictrace", handle_qxfer_statictrace },
{ "threads", handle_qxfer_threads },
{ "traceframe-info", handle_qxfer_traceframe_info },
@@ -2397,9 +2380,6 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p)
if (the_target->read_auxv != NULL)
strcat (own_buf, ";qXfer:auxv:read+");
- if (the_target->qxfer_spu != NULL)
- strcat (own_buf, ";qXfer:spu:read+;qXfer:spu:write+");
-
if (the_target->qxfer_siginfo != NULL)
strcat (own_buf, ";qXfer:siginfo:read+;qXfer:siginfo:write+");
diff --git a/gdb/gdbserver/spu-low.c b/gdb/gdbserver/spu-low.c
deleted file mode 100644
index 4930c59..0000000
--- a/gdb/gdbserver/spu-low.c
+++ /dev/null
@@ -1,732 +0,0 @@
-/* Low level interface to SPUs, for the remote server for GDB.
- Copyright (C) 2006-2019 Free Software Foundation, Inc.
-
- Contributed by Ulrich Weigand <uweigand@de.ibm.com>.
-
- This file is part of GDB.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#include "server.h"
-
-#include "gdbsupport/gdb_wait.h"
-#include <sys/ptrace.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/syscall.h>
-#include "gdbsupport/filestuff.h"
-#include "hostio.h"
-#include "nat/fork-inferior.h"
-
-/* Some older glibc versions do not define this. */
-#ifndef __WNOTHREAD
-#define __WNOTHREAD 0x20000000 /* Don't wait on children of other
- threads in this group */
-#endif
-
-#define PTRACE_TYPE_RET long
-#define PTRACE_TYPE_ARG3 long
-
-/* Number of registers. */
-#define SPU_NUM_REGS 130
-#define SPU_NUM_CORE_REGS 128
-
-/* Special registers. */
-#define SPU_ID_REGNUM 128
-#define SPU_PC_REGNUM 129
-
-/* PPU side system calls. */
-#define INSTR_SC 0x44000002
-#define NR_spu_run 0x0116
-
-/* These are used in remote-utils.c. */
-int using_threads = 0;
-
-/* Defined in auto-generated file reg-spu.c. */
-void init_registers_spu (void);
-extern const struct target_desc *tdesc_spu;
-
-/* Software breakpoint instruction. */
-static const gdb_byte breakpoint[] = { 0x00, 0x00, 0x3f, 0xff };
-
-/* Fetch PPU register REGNO. */
-static CORE_ADDR
-fetch_ppc_register (int regno)
-{
- PTRACE_TYPE_RET res;
-
- int tid = current_ptid.lwp ();
-
-#ifndef __powerpc64__
- /* If running as a 32-bit process on a 64-bit system, we attempt
- to get the full 64-bit register content of the target process.
- If the PPC special ptrace call fails, we're on a 32-bit system;
- just fall through to the regular ptrace call in that case. */
- {
- char buf[8];
-
- errno = 0;
- ptrace ((PTRACE_TYPE_ARG1) PPC_PTRACE_PEEKUSR_3264, tid,
- (PTRACE_TYPE_ARG3) (regno * 8), buf);
- if (errno == 0)
- ptrace ((PTRACE_TYPE_ARG1) PPC_PTRACE_PEEKUSR_3264, tid,
- (PTRACE_TYPE_ARG3) (regno * 8 + 4), buf + 4);
- if (errno == 0)
- return (CORE_ADDR) *(unsigned long long *)buf;
- }
-#endif
-
- errno = 0;
- res = ptrace (PT_READ_U, tid,
- (PTRACE_TYPE_ARG3) (regno * sizeof (PTRACE_TYPE_RET)), 0);
- if (errno != 0)
- {
- char mess[128];
- sprintf (mess, "reading PPC register #%d", regno);
- perror_with_name (mess);
- }
-
- return (CORE_ADDR) (unsigned long) res;
-}
-
-/* Fetch WORD from PPU memory at (aligned) MEMADDR in thread TID. */
-static int
-fetch_ppc_memory_1 (int tid, CORE_ADDR memaddr, PTRACE_TYPE_RET *word)
-{
- errno = 0;
-
-#ifndef __powerpc64__
- if (memaddr >> 32)
- {
- unsigned long long addr_8 = (unsigned long long) memaddr;
- ptrace ((PTRACE_TYPE_ARG1) PPC_PTRACE_PEEKTEXT_3264, tid,
- (PTRACE_TYPE_ARG3) &addr_8, word);
- }
- else
-#endif
- *word = ptrace (PT_READ_I, tid, (PTRACE_TYPE_ARG3) (size_t) memaddr, 0);
-
- return errno;
-}
-
-/* Store WORD into PPU memory at (aligned) MEMADDR in thread TID. */
-static int
-store_ppc_memory_1 (int tid, CORE_ADDR memaddr, PTRACE_TYPE_RET word)
-{
- errno = 0;
-
-#ifndef __powerpc64__
- if (memaddr >> 32)
- {
- unsigned long long addr_8 = (unsigned long long) memaddr;
- ptrace ((PTRACE_TYPE_ARG1) PPC_PTRACE_POKEDATA_3264, tid,
- (PTRACE_TYPE_ARG3) &addr_8, word);
- }
- else
-#endif
- ptrace (PT_WRITE_D, tid, (PTRACE_TYPE_ARG3) (size_t) memaddr, word);
-
- return errno;
-}
-
-/* Fetch LEN bytes of PPU memory at MEMADDR to MYADDR. */
-static int
-fetch_ppc_memory (CORE_ADDR memaddr, char *myaddr, int len)
-{
- int i, ret;
-
- CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_TYPE_RET);
- int count = ((((memaddr + len) - addr) + sizeof (PTRACE_TYPE_RET) - 1)
- / sizeof (PTRACE_TYPE_RET));
- PTRACE_TYPE_RET *buffer;
-
- int tid = current_ptid.lwp ();
-
- buffer = XALLOCAVEC (PTRACE_TYPE_RET, count);
- for (i = 0; i < count; i++, addr += sizeof (PTRACE_TYPE_RET))
- if ((ret = fetch_ppc_memory_1 (tid, addr, &buffer[i])) != 0)
- return ret;
-
- memcpy (myaddr,
- (char *) buffer + (memaddr & (sizeof (PTRACE_TYPE_RET) - 1)),
- len);
-
- return 0;
-}
-
-/* Store LEN bytes from MYADDR to PPU memory at MEMADDR. */
-static int
-store_ppc_memory (CORE_ADDR memaddr, char *myaddr, int len)
-{
- int i, ret;
-
- CORE_ADDR addr = memaddr & -(CORE_ADDR) sizeof (PTRACE_TYPE_RET);
- int count = ((((memaddr + len) - addr) + sizeof (PTRACE_TYPE_RET) - 1)
- / sizeof (PTRACE_TYPE_RET));
- PTRACE_TYPE_RET *buffer;
-
- int tid = current_ptid.lwp ();
-
- buffer = XALLOCAVEC (PTRACE_TYPE_RET, count);
-
- if (addr != memaddr || len < (int) sizeof (PTRACE_TYPE_RET))
- if ((ret = fetch_ppc_memory_1 (tid, addr, &buffer[0])) != 0)
- return ret;
-
- if (count > 1)
- if ((ret = fetch_ppc_memory_1 (tid, addr + (count - 1)
- * sizeof (PTRACE_TYPE_RET),
- &buffer[count - 1])) != 0)
- return ret;
-
- memcpy ((char *) buffer + (memaddr & (sizeof (PTRACE_TYPE_RET) - 1)),
- myaddr, len);
-
- for (i = 0; i < count; i++, addr += sizeof (PTRACE_TYPE_RET))
- if ((ret = store_ppc_memory_1 (tid, addr, buffer[i])) != 0)
- return ret;
-
- return 0;
-}
-
-
-/* If the PPU thread is currently stopped on a spu_run system call,
- return to FD and ADDR the file handle and NPC parameter address
- used with the system call. Return non-zero if successful. */
-static int
-parse_spufs_run (int *fd, CORE_ADDR *addr)
-{
- unsigned int insn;
- CORE_ADDR pc = fetch_ppc_register (32); /* nip */
-
- /* Fetch instruction preceding current NIP. */
- if (fetch_ppc_memory (pc-4, (char *) &insn, 4) != 0)
- return 0;
- /* It should be a "sc" instruction. */
- if (insn != INSTR_SC)
- return 0;
- /* System call number should be NR_spu_run. */
- if (fetch_ppc_register (0) != NR_spu_run)
- return 0;
-
- /* Register 3 contains fd, register 4 the NPC param pointer. */
- *fd = fetch_ppc_register (34); /* orig_gpr3 */
- *addr = fetch_ppc_register (4);
- return 1;
-}
-
-
-/* Copy LEN bytes at OFFSET in spufs file ANNEX into/from READBUF or WRITEBUF,
- using the /proc file system. */
-static int
-spu_proc_xfer_spu (const char *annex, unsigned char *readbuf,
- const unsigned char *writebuf,
- CORE_ADDR offset, int len)
-{
- char buf[128];
- int fd = 0;
- int ret = -1;
-
- if (!annex)
- return 0;
-
- sprintf (buf, "/proc/%ld/fd/%s", current_ptid.lwp (), annex);
- fd = open (buf, writebuf? O_WRONLY : O_RDONLY);
- if (fd <= 0)
- return -1;
-
- if (offset != 0
- && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
- {
- close (fd);
- return 0;
- }
-
- if (writebuf)
- ret = write (fd, writebuf, (size_t) len);
- else if (readbuf)
- ret = read (fd, readbuf, (size_t) len);
-
- close (fd);
- return ret;
-}
-
-/* Callback to be used when calling fork_inferior, responsible for
- actually initiating the tracing of the inferior. */
-
-static void
-spu_ptrace_fun ()
-{
- if (ptrace (PTRACE_TRACEME, 0, 0, 0) < 0)
- trace_start_error_with_name ("ptrace");
- if (setpgid (0, 0) < 0)
- trace_start_error_with_name ("setpgid");
-}
-
-/* Start an inferior process and returns its pid.
- PROGRAM is the name of the program to be started, and PROGRAM_ARGS
- are its arguments. */
-
-static int
-spu_create_inferior (const char *program,
- const std::vector<char *> &program_args)
-{
- int pid;
- ptid_t ptid;
- struct process_info *proc;
- std::string str_program_args = stringify_argv (program_args);
-
- pid = fork_inferior (program,
- str_program_args.c_str (),
- get_environ ()->envp (), spu_ptrace_fun,
- NULL, NULL, NULL, NULL);
-
- post_fork_inferior (pid, program);
-
- proc = add_process (pid, 0);
- proc->tdesc = tdesc_spu;
-
- ptid = ptid_t (pid, pid, 0);
- add_thread (ptid, NULL);
- return pid;
-}
-
-/* Attach to an inferior process. */
-int
-spu_attach (unsigned long pid)
-{
- ptid_t ptid;
- struct process_info *proc;
-
- if (ptrace (PTRACE_ATTACH, pid, 0, 0) != 0)
- {
- fprintf (stderr, "Cannot attach to process %ld: %s (%d)\n", pid,
- strerror (errno), errno);
- fflush (stderr);
- _exit (0177);
- }
-
- proc = add_process (pid, 1);
- proc->tdesc = tdesc_spu;
- ptid = ptid_t (pid, pid, 0);
- add_thread (ptid, NULL);
- return 0;
-}
-
-/* Kill the inferior process. */
-static int
-spu_kill (process_info *process)
-{
- int status, ret;
- int pid = process->pid;
-
- ptrace (PTRACE_KILL, pid, 0, 0);
-
- do {
- ret = waitpid (pid, &status, 0);
- if (WIFEXITED (status) || WIFSIGNALED (status))
- break;
- } while (ret != -1 || errno != ECHILD);
-
- clear_inferiors ();
- remove_process (process);
- return 0;
-}
-
-/* Detach from inferior process. */
-static int
-spu_detach (process_info *process)
-{
- ptrace (PTRACE_DETACH, process->pid, 0, 0);
-
- clear_inferiors ();
- remove_process (process);
- return 0;
-}
-
-static void
-spu_mourn (struct process_info *process)
-{
- remove_process (process);
-}
-
-static void
-spu_join (int pid)
-{
- int status, ret;
-
- do {
- ret = waitpid (pid, &status, 0);
- if (WIFEXITED (status) || WIFSIGNALED (status))
- break;
- } while (ret != -1 || errno != ECHILD);
-}
-
-/* Return nonzero if the given thread is still alive. */
-static int
-spu_thread_alive (ptid_t ptid)
-{
- return ptid == current_ptid;
-}
-
-/* Resume process. */
-static void
-spu_resume (struct thread_resume *resume_info, size_t n)
-{
- struct thread_info *thr = get_first_thread ();
- size_t i;
-
- for (i = 0; i < n; i++)
- if (resume_info[i].thread == minus_one_ptid
- || resume_info[i].thread == ptid_of (thr))
- break;
-
- if (i == n)
- return;
-
- /* We don't support hardware single-stepping right now, assume
- GDB knows to use software single-stepping. */
- if (resume_info[i].kind == resume_step)
- fprintf (stderr, "Hardware single-step not supported.\n");
-
- regcache_invalidate ();
-
- errno = 0;
- ptrace (PTRACE_CONT, ptid_of (thr).lwp (), 0, resume_info[i].sig);
- if (errno)
- perror_with_name ("ptrace");
-}
-
-/* Wait for process, returns status. */
-static ptid_t
-spu_wait (ptid_t ptid, struct target_waitstatus *ourstatus, int options)
-{
- int pid = ptid.pid ();
- int w;
- int ret;
-
- while (1)
- {
- ret = waitpid (pid, &w, WNOHANG | __WALL | __WNOTHREAD);
-
- if (ret == -1)
- {
- if (errno != ECHILD)
- perror_with_name ("waitpid");
- }
- else if (ret > 0)
- break;
-
- usleep (1000);
- }
-
- /* On the first wait, continue running the inferior until we are
- blocked inside an spu_run system call. */
- if (!server_waiting)
- {
- int fd;
- CORE_ADDR addr;
-
- while (!parse_spufs_run (&fd, &addr))
- {
- ptrace (PT_SYSCALL, pid, (PTRACE_TYPE_ARG3) 0, 0);
- waitpid (pid, NULL, __WALL | __WNOTHREAD);
- }
- }
-
- if (WIFEXITED (w))
- {
- fprintf (stderr, "\nChild exited with retcode = %x \n", WEXITSTATUS (w));
- ourstatus->kind = TARGET_WAITKIND_EXITED;
- ourstatus->value.integer = WEXITSTATUS (w);
- clear_inferiors ();
- return ptid_t (ret);
- }
- else if (!WIFSTOPPED (w))
- {
- fprintf (stderr, "\nChild terminated with signal = %x \n", WTERMSIG (w));
- ourstatus->kind = TARGET_WAITKIND_SIGNALLED;
- ourstatus->value.sig = gdb_signal_from_host (WTERMSIG (w));
- clear_inferiors ();
- return ptid_t (ret);
- }
-
- /* After attach, we may have received a SIGSTOP. Do not return this
- as signal to GDB, or else it will try to continue with SIGSTOP ... */
- if (!server_waiting)
- {
- ourstatus->kind = TARGET_WAITKIND_STOPPED;
- ourstatus->value.sig = GDB_SIGNAL_0;
- return ptid_t (ret, ret, 0);
- }
-
- ourstatus->kind = TARGET_WAITKIND_STOPPED;
- ourstatus->value.sig = gdb_signal_from_host (WSTOPSIG (w));
- return ptid_t (ret, ret, 0);
-}
-
-/* Fetch inferior registers. */
-static void
-spu_fetch_registers (struct regcache *regcache, int regno)
-{
- int fd;
- CORE_ADDR addr;
-
- /* We must be stopped on a spu_run system call. */
- if (!parse_spufs_run (&fd, &addr))
- return;
-
- /* The ID register holds the spufs file handle. */
- if (regno == -1 || regno == SPU_ID_REGNUM)
- supply_register (regcache, SPU_ID_REGNUM, (char *)&fd);
-
- /* The NPC register is found at ADDR. */
- if (regno == -1 || regno == SPU_PC_REGNUM)
- {
- char buf[4];
- if (fetch_ppc_memory (addr, buf, 4) == 0)
- supply_register (regcache, SPU_PC_REGNUM, buf);
- }
-
- /* The GPRs are found in the "regs" spufs file. */
- if (regno == -1 || (regno >= 0 && regno < SPU_NUM_CORE_REGS))
- {
- unsigned char buf[16*SPU_NUM_CORE_REGS];
- char annex[32];
- int i;
-
- sprintf (annex, "%d/regs", fd);
- if (spu_proc_xfer_spu (annex, buf, NULL, 0, sizeof buf) == sizeof buf)
- for (i = 0; i < SPU_NUM_CORE_REGS; i++)
- supply_register (regcache, i, buf + i*16);
- }
-}
-
-/* Store inferior registers. */
-static void
-spu_store_registers (struct regcache *regcache, int regno)
-{
- int fd;
- CORE_ADDR addr;
-
- /* ??? Some callers use 0 to mean all registers. */
- if (regno == 0)
- regno = -1;
-
- /* We must be stopped on a spu_run system call. */
- if (!parse_spufs_run (&fd, &addr))
- return;
-
- /* The NPC register is found at ADDR. */
- if (regno == -1 || regno == SPU_PC_REGNUM)
- {
- char buf[4];
- collect_register (regcache, SPU_PC_REGNUM, buf);
- store_ppc_memory (addr, buf, 4);
- }
-
- /* The GPRs are found in the "regs" spufs file. */
- if (regno == -1 || (regno >= 0 && regno < SPU_NUM_CORE_REGS))
- {
- unsigned char buf[16*SPU_NUM_CORE_REGS];
- char annex[32];
- int i;
-
- for (i = 0; i < SPU_NUM_CORE_REGS; i++)
- collect_register (regcache, i, buf + i*16);
-
- sprintf (annex, "%d/regs", fd);
- spu_proc_xfer_spu (annex, NULL, buf, 0, sizeof buf);
- }
-}
-
-/* Copy LEN bytes from inferior's memory starting at MEMADDR
- to debugger memory starting at MYADDR. */
-static int
-spu_read_memory (CORE_ADDR memaddr, unsigned char *myaddr, int len)
-{
- int fd, ret;
- CORE_ADDR addr;
- char annex[32], lslr_annex[32], buf[32];
- CORE_ADDR lslr;
-
- /* We must be stopped on a spu_run system call. */
- if (!parse_spufs_run (&fd, &addr))
- return 0;
-
- /* Use the "mem" spufs file to access SPU local store. */
- sprintf (annex, "%d/mem", fd);
- ret = spu_proc_xfer_spu (annex, myaddr, NULL, memaddr, len);
- if (ret > 0)
- return ret == len ? 0 : EIO;
-
- /* SPU local store access wraps the address around at the
- local store limit. We emulate this here. To avoid needing
- an extra access to retrieve the LSLR, we only do that after
- trying the original address first, and getting end-of-file. */
- sprintf (lslr_annex, "%d/lslr", fd);
- memset (buf, 0, sizeof buf);
- if (spu_proc_xfer_spu (lslr_annex, (unsigned char *)buf, NULL,
- 0, sizeof buf) <= 0)
- return ret;
-
- lslr = strtoul (buf, NULL, 16);
- ret = spu_proc_xfer_spu (annex, myaddr, NULL, memaddr & lslr, len);
-
- return ret == len ? 0 : EIO;
-}
-
-/* Copy LEN bytes of data from debugger memory at MYADDR
- to inferior's memory at MEMADDR.
- On failure (cannot write the inferior)
- returns the value of errno. */
-static int
-spu_write_memory (CORE_ADDR memaddr, const unsigned char *myaddr, int len)
-{
- int fd, ret;
- CORE_ADDR addr;
- char annex[32], lslr_annex[32], buf[32];
- CORE_ADDR lslr;
-
- /* We must be stopped on a spu_run system call. */
- if (!parse_spufs_run (&fd, &addr))
- return 0;
-
- /* Use the "mem" spufs file to access SPU local store. */
- sprintf (annex, "%d/mem", fd);
- ret = spu_proc_xfer_spu (annex, NULL, myaddr, memaddr, len);
- if (ret > 0)
- return ret == len ? 0 : EIO;
-
- /* SPU local store access wraps the address around at the
- local store limit. We emulate this here. To avoid needing
- an extra access to retrieve the LSLR, we only do that after
- trying the original address first, and getting end-of-file. */
- sprintf (lslr_annex, "%d/lslr", fd);
- memset (buf, 0, sizeof buf);
- if (spu_proc_xfer_spu (lslr_annex, (unsigned char *)buf, NULL,
- 0, sizeof buf) <= 0)
- return ret;
-
- lslr = strtoul (buf, NULL, 16);
- ret = spu_proc_xfer_spu (annex, NULL, myaddr, memaddr & lslr, len);
-
- return ret == len ? 0 : EIO;
-}
-
-/* Look up special symbols -- unneded here. */
-static void
-spu_look_up_symbols (void)
-{
-}
-
-/* Send signal to inferior. */
-static void
-spu_request_interrupt (void)
-{
- struct thread_info *thr = get_first_thread ();
-
- syscall (SYS_tkill, lwpid_of (thr), SIGINT);
-}
-
-/* Implementation of the target_ops method "sw_breakpoint_from_kind". */
-
-static const gdb_byte *
-spu_sw_breakpoint_from_kind (int kind, int *size)
-{
- *size = sizeof breakpoint;
- return breakpoint;
-}
-
-static struct target_ops spu_target_ops = {
- spu_create_inferior,
- NULL, /* post_create_inferior */
- spu_attach,
- spu_kill,
- spu_detach,
- spu_mourn,
- spu_join,
- spu_thread_alive,
- spu_resume,
- spu_wait,
- spu_fetch_registers,
- spu_store_registers,
- NULL, /* prepare_to_access_memory */
- NULL, /* done_accessing_memory */
- spu_read_memory,
- spu_write_memory,
- spu_look_up_symbols,
- spu_request_interrupt,
- NULL,
- NULL, /* supports_z_point_type */
- NULL,
- NULL,
- NULL, /* stopped_by_sw_breakpoint */
- NULL, /* supports_stopped_by_sw_breakpoint */
- NULL, /* stopped_by_hw_breakpoint */
- NULL, /* supports_stopped_by_hw_breakpoint */
- NULL, /* supports_hardware_single_step */
- NULL,
- NULL,
- NULL,
- NULL,
- spu_proc_xfer_spu,
- hostio_last_error_from_errno,
- NULL, /* qxfer_osdata */
- NULL, /* qxfer_siginfo */
- NULL, /* supports_non_stop */
- NULL, /* async */
- NULL, /* start_non_stop */
- NULL, /* supports_multi_process */
- NULL, /* supports_fork_events */
- NULL, /* supports_vfork_events */
- NULL, /* supports_exec_events */
- NULL, /* handle_new_gdb_connection */
- NULL, /* handle_monitor_command */
- NULL, /* core_of_thread */
- NULL, /* read_loadmap */
- NULL, /* process_qsupported */
- NULL, /* supports_tracepoints */
- NULL, /* read_pc */
- NULL, /* write_pc */
- NULL, /* thread_stopped */
- NULL, /* get_tib_address */
- NULL, /* pause_all */
- NULL, /* unpause_all */
- NULL, /* stabilize_threads */
- NULL, /* install_fast_tracepoint_jump_pad */
- NULL, /* emit_ops */
- NULL, /* supports_disable_randomization */
- NULL, /* get_min_fast_tracepoint_insn_len */
- NULL, /* qxfer_libraries_svr4 */
- NULL, /* support_agent */
- NULL, /* enable_btrace */
- NULL, /* disable_btrace */
- NULL, /* read_btrace */
- NULL, /* read_btrace_conf */
- NULL, /* supports_range_stepping */
- NULL, /* pid_to_exec_file */
- NULL, /* multifs_open */
- NULL, /* multifs_unlink */
- NULL, /* multifs_readlink */
- NULL, /* breakpoint_kind_from_pc */
- spu_sw_breakpoint_from_kind,
-};
-
-void
-initialize_low (void)
-{
- set_target_ops (&spu_target_ops);
- init_registers_spu ();
-}
diff --git a/gdb/gdbserver/target.h b/gdb/gdbserver/target.h
index 67167cc..2df135a 100644
--- a/gdb/gdbserver/target.h
+++ b/gdb/gdbserver/target.h
@@ -256,10 +256,6 @@ struct target_ops
int (*get_tls_address) (struct thread_info *thread, CORE_ADDR offset,
CORE_ADDR load_module, CORE_ADDR *address);
- /* Read/Write from/to spufs using qXfer packets. */
- int (*qxfer_spu) (const char *annex, unsigned char *readbuf,
- unsigned const char *writebuf, CORE_ADDR offset, int len);
-
/* Fill BUF with an hostio error packet representing the last hostio
error. */
void (*hostio_last_error) (char *buf);
diff --git a/gdb/gdbserver/win32-low.c b/gdb/gdbserver/win32-low.c
index 49c6cf1..7088ba4 100644
--- a/gdb/gdbserver/win32-low.c
+++ b/gdb/gdbserver/win32-low.c
@@ -1809,7 +1809,6 @@ static struct target_ops win32_target_ops = {
win32_stopped_data_address,
NULL, /* read_offsets */
NULL, /* get_tls_address */
- NULL, /* qxfer_spu */
#ifdef _WIN32_WCE
wince_hostio_last_error,
#else
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
index 945c19f..cd5cf18 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
@@ -68,10 +68,6 @@
#include "gdbsupport/fileio.h"
#include "gdbsupport/scope-exit.h"
-#ifndef SPUFS_MAGIC
-#define SPUFS_MAGIC 0x23c9b64e
-#endif
-
/* This comment documents high-level logic of this file.
Waiting for events in sync mode
@@ -3842,12 +3838,6 @@ linux_nat_xfer_osdata (enum target_object object,
ULONGEST *xfered_len);
static enum target_xfer_status
-linux_proc_xfer_spu (enum target_object object,
- const char *annex, gdb_byte *readbuf,
- const gdb_byte *writebuf,
- ULONGEST offset, ULONGEST len, ULONGEST *xfered_len);
-
-static enum target_xfer_status
linux_proc_xfer_partial (enum target_object object,
const char *annex, gdb_byte *readbuf,
const gdb_byte *writebuf,
@@ -3879,10 +3869,6 @@ linux_nat_target::xfer_partial (enum target_object object,
return linux_nat_xfer_osdata (object, annex, readbuf, writebuf,
offset, len, xfered_len);
- if (object == TARGET_OBJECT_SPU)
- return linux_proc_xfer_spu (object, annex, readbuf, writebuf,
- offset, len, xfered_len);
-
/* GDB calculates all addresses in the largest possible address
width.
The address width must be masked before its final use - either by
@@ -4020,121 +4006,6 @@ linux_proc_xfer_partial (enum target_object object,
}
-/* Enumerate spufs IDs for process PID. */
-static LONGEST
-spu_enumerate_spu_ids (int pid, gdb_byte *buf, ULONGEST offset, ULONGEST len)
-{
- enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
- LONGEST pos = 0;
- LONGEST written = 0;
- char path[128];
- DIR *dir;
- struct dirent *entry;
-
- xsnprintf (path, sizeof path, "/proc/%d/fd", pid);
- dir = opendir (path);
- if (!dir)
- return -1;
-
- rewinddir (dir);
- while ((entry = readdir (dir)) != NULL)
- {
- struct stat st;
- struct statfs stfs;
- int fd;
-
- fd = atoi (entry->d_name);
- if (!fd)
- continue;
-
- xsnprintf (path, sizeof path, "/proc/%d/fd/%d", pid, fd);
- if (stat (path, &st) != 0)
- continue;
- if (!S_ISDIR (st.st_mode))
- continue;
-
- if (statfs (path, &stfs) != 0)
- continue;
- if (stfs.f_type != SPUFS_MAGIC)
- continue;
-
- if (pos >= offset && pos + 4 <= offset + len)
- {
- store_unsigned_integer (buf + pos - offset, 4, byte_order, fd);
- written += 4;
- }
- pos += 4;
- }
-
- closedir (dir);
- return written;
-}
-
-/* Implement the to_xfer_partial interface for the TARGET_OBJECT_SPU
- object type, using the /proc file system. */
-
-static enum target_xfer_status
-linux_proc_xfer_spu (enum target_object object,
- const char *annex, gdb_byte *readbuf,
- const gdb_byte *writebuf,
- ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
-{
- char buf[128];
- int fd = 0;
- int ret = -1;
- int pid = inferior_ptid.lwp ();
-
- if (!annex)
- {
- if (!readbuf)
- return TARGET_XFER_E_IO;
- else
- {
- LONGEST l = spu_enumerate_spu_ids (pid, readbuf, offset, len);
-
- if (l < 0)
- return TARGET_XFER_E_IO;
- else if (l == 0)
- return TARGET_XFER_EOF;
- else
- {
- *xfered_len = (ULONGEST) l;
- return TARGET_XFER_OK;
- }
- }
- }
-
- xsnprintf (buf, sizeof buf, "/proc/%d/fd/%s", pid, annex);
- fd = gdb_open_cloexec (buf, writebuf? O_WRONLY : O_RDONLY, 0);
- if (fd <= 0)
- return TARGET_XFER_E_IO;
-
- if (offset != 0
- && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
- {
- close (fd);
- return TARGET_XFER_EOF;
- }
-
- if (writebuf)
- ret = write (fd, writebuf, (size_t) len);
- else if (readbuf)
- ret = read (fd, readbuf, (size_t) len);
-
- close (fd);
-
- if (ret < 0)
- return TARGET_XFER_E_IO;
- else if (ret == 0)
- return TARGET_XFER_EOF;
- else
- {
- *xfered_len = (ULONGEST) ret;
- return TARGET_XFER_OK;
- }
-}
-
-
/* Parse LINE as a signal set and add its set bits to SIGS. */
static void
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index 63a9bd3..567b01c 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -1413,73 +1413,6 @@ find_signalled_thread (struct thread_info *info, void *data)
return 0;
}
-/* Generate corefile notes for SPU contexts. */
-
-static char *
-linux_spu_make_corefile_notes (bfd *obfd, char *note_data, int *note_size)
-{
- static const char *spu_files[] =
- {
- "object-id",
- "mem",
- "regs",
- "fpcr",
- "lslr",
- "decr",
- "decr_status",
- "signal1",
- "signal1_type",
- "signal2",
- "signal2_type",
- "event_mask",
- "event_status",
- "mbox_info",
- "ibox_info",
- "wbox_info",
- "dma_info",
- "proxydma_info",
- };
-
- enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
-
- /* Determine list of SPU ids. */
- gdb::optional<gdb::byte_vector>
- spu_ids = target_read_alloc (current_top_target (),
- TARGET_OBJECT_SPU, NULL);
-
- if (!spu_ids)
- return note_data;
-
- /* Generate corefile notes for each SPU file. */
- for (size_t i = 0; i < spu_ids->size (); i += 4)
- {
- int fd = extract_unsigned_integer (spu_ids->data () + i, 4, byte_order);
-
- for (size_t j = 0; j < sizeof (spu_files) / sizeof (spu_files[0]); j++)
- {
- char annex[32], note_name[32];
-
- xsnprintf (annex, sizeof annex, "%d/%s", fd, spu_files[j]);
- gdb::optional<gdb::byte_vector> spu_data
- = target_read_alloc (current_top_target (), TARGET_OBJECT_SPU, annex);
-
- if (spu_data && !spu_data->empty ())
- {
- xsnprintf (note_name, sizeof note_name, "SPU/%s", annex);
- note_data = elfcore_write_note (obfd, note_data, note_size,
- note_name, NT_SPU,
- spu_data->data (),
- spu_data->size ());
-
- if (!note_data)
- return nullptr;
- }
- }
- }
-
- return note_data;
-}
-
/* This is used to pass information from
linux_make_mappings_corefile_notes through
linux_find_memory_regions_full. */
@@ -2008,11 +1941,6 @@ linux_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, int *note_size)
return NULL;
}
- /* SPU information. */
- note_data = linux_spu_make_corefile_notes (obfd, note_data, note_size);
- if (!note_data)
- return NULL;
-
/* File mappings. */
note_data = linux_make_mappings_corefile_notes (gdbarch, obfd,
note_data, note_size);
diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h
index f1561b3..508395c 100644
--- a/gdb/nat/ppc-linux.h
+++ b/gdb/nat/ppc-linux.h
@@ -33,9 +33,6 @@
If they aren't, we can provide them ourselves (their values are fixed
because they are part of the kernel ABI). They are used in the AT_HWCAP
entry of the AUXV. */
-#ifndef PPC_FEATURE_CELL
-#define PPC_FEATURE_CELL 0x00010000
-#endif
#ifndef PPC_FEATURE_BOOKE
#define PPC_FEATURE_BOOKE 0x00008000
#endif
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
index deb31d4..53406f6 100644
--- a/gdb/ppc-linux-nat.c
+++ b/gdb/ppc-linux-nat.c
@@ -2646,9 +2646,6 @@ ppc_linux_nat_target::read_description ()
perror_with_name (_("Unable to fetch AltiVec registers"));
}
- if (hwcap & PPC_FEATURE_CELL)
- features.cell = true;
-
features.isa205 = ppc_linux_has_isa205 (hwcap);
if ((hwcap2 & PPC_FEATURE2_DSCR)
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
index c6181c9..ce3c727 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
@@ -31,7 +31,6 @@
#include "osabi.h"
#include "regset.h"
#include "solib-svr4.h"
-#include "solib-spu.h"
#include "solib.h"
#include "solist.h"
#include "ppc-tdep.h"
@@ -48,7 +47,6 @@
#include "elf/common.h"
#include "elf/ppc64.h"
#include "arch-utils.h"
-#include "spu-tdep.h"
#include "xml-syscall.h"
#include "linux-tdep.h"
#include "linux-record.h"
@@ -66,7 +64,6 @@
#include "features/rs6000/powerpc-32l.c"
#include "features/rs6000/powerpc-altivec32l.c"
-#include "features/rs6000/powerpc-cell32l.c"
#include "features/rs6000/powerpc-vsx32l.c"
#include "features/rs6000/powerpc-isa205-32l.c"
#include "features/rs6000/powerpc-isa205-altivec32l.c"
@@ -76,7 +73,6 @@
#include "features/rs6000/powerpc-isa207-htm-vsx32l.c"
#include "features/rs6000/powerpc-64l.c"
#include "features/rs6000/powerpc-altivec64l.c"
-#include "features/rs6000/powerpc-cell64l.c"
#include "features/rs6000/powerpc-vsx64l.c"
#include "features/rs6000/powerpc-isa205-64l.c"
#include "features/rs6000/powerpc-isa205-altivec64l.c"
@@ -1555,19 +1551,12 @@ ppc_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
regcache_cooked_write_unsigned (regcache, PPC_TRAP_REGNUM, -1);
}
-static int
-ppc_linux_spu_section (bfd *abfd, asection *asect, void *user_data)
-{
- return startswith (bfd_section_name (asect), "SPU/");
-}
-
static const struct target_desc *
ppc_linux_core_read_description (struct gdbarch *gdbarch,
struct target_ops *target,
bfd *abfd)
{
struct ppc_linux_features features = ppc_linux_no_features;
- asection *cell = bfd_sections_find_if (abfd, ppc_linux_spu_section, NULL);
asection *altivec = bfd_get_section_by_name (abfd, ".reg-ppc-vmx");
asection *vsx = bfd_get_section_by_name (abfd, ".reg-ppc-vsx");
asection *section = bfd_get_section_by_name (abfd, ".reg");
@@ -1592,9 +1581,6 @@ ppc_linux_core_read_description (struct gdbarch *gdbarch,
return NULL;
}
- if (cell)
- features.cell = true;
-
if (altivec)
features.altivec = true;
@@ -1743,287 +1729,6 @@ ppc_stap_parse_special_token (struct gdbarch *gdbarch,
return 1;
}
-/* Cell/B.E. active SPE context tracking support. */
-
-static struct objfile *spe_context_objfile = NULL;
-static CORE_ADDR spe_context_lm_addr = 0;
-static CORE_ADDR spe_context_offset = 0;
-
-static ptid_t spe_context_cache_ptid;
-static CORE_ADDR spe_context_cache_address;
-
-/*[...]
[diff truncated at 100000 bytes]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-09-20 21:09 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-20 21:09 [binutils-gdb] Remove Cell Broadband Engine debugging support Ulrich Weigand
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).