From: Simon Marchi Date: Fri, 12 Jun 2020 20:06:44 +0000 (-0400) Subject: gdbserver: remove support for Tile X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=96c16e2b7f47c301912ac92f53b756e26ef44ffb;p=binutils-gdb.git gdbserver: remove support for Tile This port has been unmaintained for years and the upstream Linux kernel does not support this architecture anymore, remove it. gdbserver/ChangeLog: * Makefile.in (SFILES): linux-tile-low.cc. * configure.srv: Remove tilegx case. * linux-tile-low.cc: Remove. Change-Id: I1c2910d04ddbd6013e5d228047106b41d80f9477 --- diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog index bbfbf83c89b..70a2a821dc3 100644 --- a/gdbserver/ChangeLog +++ b/gdbserver/ChangeLog @@ -1,3 +1,9 @@ +2020-06-12 Simon Marchi + + * Makefile.in (SFILES): linux-tile-low.cc. + * configure.srv: Remove tilegx case. + * linux-tile-low.cc: Remove. + 2020-06-12 Simon Marchi * Makefile.in (SFILES): Remove linux-m32r-low.cc. diff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in index 80cc12e5860..cc5fa427c93 100644 --- a/gdbserver/Makefile.in +++ b/gdbserver/Makefile.in @@ -190,7 +190,6 @@ SFILES = \ $(srcdir)/linux-s390-low.cc \ $(srcdir)/linux-sh-low.cc \ $(srcdir)/linux-sparc-low.cc \ - $(srcdir)/linux-tile-low.cc \ $(srcdir)/linux-x86-low.cc \ $(srcdir)/linux-xtensa-low.cc \ $(srcdir)/mem-break.cc \ diff --git a/gdbserver/configure.srv b/gdbserver/configure.srv index 76d2b8e7e02..b376cb13449 100644 --- a/gdbserver/configure.srv +++ b/gdbserver/configure.srv @@ -375,12 +375,6 @@ case "${gdbserver_host}" in srv_linux_regsets=yes srv_linux_thread_db=yes ;; - tilegx-*-linux*) srv_regobj=reg-tilegx.o - srv_regobj="${srv_regobj} reg-tilegx32.o" - srv_tgtobj="$srv_linux_obj linux-tile-low.o" - srv_linux_regsets=yes - srv_linux_thread_db=yes - ;; *) # Who are you? UNSUPPORTED=1 diff --git a/gdbserver/linux-tile-low.cc b/gdbserver/linux-tile-low.cc deleted file mode 100644 index fa24b0899c0..00000000000 --- a/gdbserver/linux-tile-low.cc +++ /dev/null @@ -1,227 +0,0 @@ -/* GNU/Linux/TILE-Gx specific low level interface, GDBserver. - - Copyright (C) 2012-2020 Free Software Foundation, Inc. - - 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 . */ - -#include "server.h" -#include "linux-low.h" - -#include -#include "nat/gdb_ptrace.h" - -/* Linux target op definitions for the TILE-Gx architecture. */ - -class tile_target : public linux_process_target -{ -public: - - const regs_info *get_regs_info () override; - - const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override; - -protected: - - void low_arch_setup () override; - - bool low_cannot_fetch_register (int regno) override; - - bool low_cannot_store_register (int regno) override; - - bool low_supports_breakpoints () override; - - CORE_ADDR low_get_pc (regcache *regcache) override; - - void low_set_pc (regcache *regcache, CORE_ADDR newpc) override; - - bool low_breakpoint_at (CORE_ADDR pc) override; -}; - -/* The singleton target ops object. */ - -static tile_target the_tile_target; - -bool -tile_target::low_supports_breakpoints () -{ - return true; -} - -CORE_ADDR -tile_target::low_get_pc (regcache *regcache) -{ - return linux_get_pc_64bit (regcache); -} - -void -tile_target::low_set_pc (regcache *regcache, CORE_ADDR pc) -{ - linux_set_pc_64bit (regcache, pc); -} - -/* Defined in auto-generated file reg-tilegx.c. */ -void init_registers_tilegx (void); -extern const struct target_desc *tdesc_tilegx; - -/* Defined in auto-generated file reg-tilegx32.c. */ -void init_registers_tilegx32 (void); -extern const struct target_desc *tdesc_tilegx32; - -#define tile_num_regs 65 - -static int tile_regmap[] = -{ - 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, - -1, -1, -1, -1, -1, -1, -1, -1, - 56 -}; - -bool -tile_target::low_cannot_fetch_register (int regno) -{ - if (regno >= 0 && regno < 56) - return false; - else if (regno == 64) - return false; - else - return true; -} - -bool -tile_target::low_cannot_store_register (int regno) -{ - if (regno >= 0 && regno < 56) - return false; - else if (regno == 64) - return false; - else - return true; -} - -static uint64_t tile_breakpoint = 0x400b3cae70166000ULL; -#define tile_breakpoint_len 8 - -/* Implementation of target ops method "sw_breakpoint_from_kind". */ - -const gdb_byte * -tile_target::sw_breakpoint_from_kind (int kind, int *size) -{ - *size = tile_breakpoint_len; - return (const gdb_byte *) &tile_breakpoint; -} - -bool -tile_target::low_breakpoint_at (CORE_ADDR where) -{ - uint64_t insn; - - read_memory (where, (unsigned char *) &insn, 8); - if (insn == tile_breakpoint) - return true; - - /* If necessary, recognize more trap instructions here. GDB only uses the - one. */ - return false; -} - -static void -tile_fill_gregset (struct regcache *regcache, void *buf) -{ - int i; - - for (i = 0; i < tile_num_regs; i++) - if (tile_regmap[i] != -1) - collect_register (regcache, i, ((uint_reg_t *) buf) + tile_regmap[i]); -} - -static void -tile_store_gregset (struct regcache *regcache, const void *buf) -{ - int i; - - for (i = 0; i < tile_num_regs; i++) - if (tile_regmap[i] != -1) - supply_register (regcache, i, ((uint_reg_t *) buf) + tile_regmap[i]); -} - -static struct regset_info tile_regsets[] = -{ - { PTRACE_GETREGS, PTRACE_SETREGS, 0, tile_num_regs * 8, - GENERAL_REGS, tile_fill_gregset, tile_store_gregset }, - NULL_REGSET -}; - -static struct regsets_info tile_regsets_info = - { - tile_regsets, /* regsets */ - 0, /* num_regsets */ - NULL, /* disabled_regsets */ - }; - -static struct usrregs_info tile_usrregs_info = - { - tile_num_regs, - tile_regmap, - }; - -static struct regs_info myregs_info = - { - NULL, /* regset_bitmap */ - &tile_usrregs_info, - &tile_regsets_info, - }; - -const regs_info * -tile_target::get_regs_info () -{ - return &myregs_info; -} - -void -tile_target::low_arch_setup () -{ - int pid = pid_of (current_thread); - unsigned int machine; - int is_elf64 = linux_pid_exe_is_elf_64_file (pid, &machine); - - if (sizeof (void *) == 4) - if (is_elf64 > 0) - error (_("Can't debug 64-bit process with 32-bit GDBserver")); - - if (!is_elf64) - current_process ()->tdesc = tdesc_tilegx32; - else - current_process ()->tdesc = tdesc_tilegx; -} - -/* The linux target ops object. */ - -linux_process_target *the_linux_target = &the_tile_target; - -void -initialize_low_arch (void) -{ - init_registers_tilegx32(); - init_registers_tilegx(); - - initialize_regsets_info (&tile_regsets_info); -}