summaryrefslogtreecommitdiffstats
path: root/meta-microblaze/recipes-devtools/binutils/binutils/0033-Add-initial-port-of-linux-gdbserver-add-gdb_proc_ser.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-microblaze/recipes-devtools/binutils/binutils/0033-Add-initial-port-of-linux-gdbserver-add-gdb_proc_ser.patch')
-rw-r--r--meta-microblaze/recipes-devtools/binutils/binutils/0033-Add-initial-port-of-linux-gdbserver-add-gdb_proc_ser.patch1581
1 files changed, 0 insertions, 1581 deletions
diff --git a/meta-microblaze/recipes-devtools/binutils/binutils/0033-Add-initial-port-of-linux-gdbserver-add-gdb_proc_ser.patch b/meta-microblaze/recipes-devtools/binutils/binutils/0033-Add-initial-port-of-linux-gdbserver-add-gdb_proc_ser.patch
deleted file mode 100644
index d2753fe9..00000000
--- a/meta-microblaze/recipes-devtools/binutils/binutils/0033-Add-initial-port-of-linux-gdbserver-add-gdb_proc_ser.patch
+++ /dev/null
@@ -1,1581 +0,0 @@
1From 48166e74b46787b10073fcec3c133463504e2dbc Mon Sep 17 00:00:00 2001
2From: Mahesh Bodapati <mbodapat@xilinx.com>
3Date: Mon, 23 Jan 2017 19:07:44 +0530
4Subject: [PATCH 33/38] Add initial port of linux gdbserver add
5 gdb_proc_service_h to gdbserver microblaze-linux
6
7gdbserver needs to initialise the microblaze registers
8
9other archs use this step to run a *_arch_setup() to carry out all
10architecture specific setup - may need to add in future
11
12 * add linux-ptrace.o to gdbserver configure
13 * Update breakpoint opcode
14 * fix segfault on connecting gdbserver
15 * add microblaze_linux_memory_remove_breakpoint
16 * add set_solib_svr4_fetch_link_map_offsets
17 * add set_gdbarch_fetch_tls_load_module_address
18 * Force reading of r0 as 0, prevent stores
19
20Signed-off-by: David Holsgrove <david.holsgrove@petalogix.com>
21Signed-off-by: Nathan Rossi <nathan.rossi@petalogix.com>
22
23Conflicts:
24 gdb/gdbserver/Makefile.in
25 gdb/gdbserver/configure.srv
26Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
27---
28 gdb/configure.host | 3 +
29 gdb/features/microblaze-linux.xml | 12 +
30 gdb/gdbserver/Makefile.in | 712 +++++++++++++++++++++++++++
31 gdb/gdbserver/configure.srv | 398 +++++++++++++++
32 gdb/gdbserver/linux-microblaze-low.c | 189 +++++++
33 gdb/microblaze-linux-tdep.c | 29 +-
34 gdb/microblaze-tdep.c | 35 +-
35 gdb/microblaze-tdep.h | 4 +-
36 gdb/regformats/reg-microblaze.dat | 41 ++
37 9 files changed, 1420 insertions(+), 3 deletions(-)
38 create mode 100644 gdb/features/microblaze-linux.xml
39 create mode 100644 gdb/gdbserver/Makefile.in
40 create mode 100644 gdb/gdbserver/configure.srv
41 create mode 100644 gdb/gdbserver/linux-microblaze-low.c
42 create mode 100644 gdb/regformats/reg-microblaze.dat
43
44diff --git a/gdb/configure.host b/gdb/configure.host
45index da71675b201..3a0c4443a93 100644
46--- a/gdb/configure.host
47+++ b/gdb/configure.host
48@@ -61,6 +61,7 @@ i[34567]86*) gdb_host_cpu=i386 ;;
49 loongarch*) gdb_host_cpu=loongarch ;;
50 m68*) gdb_host_cpu=m68k ;;
51 mips*) gdb_host_cpu=mips ;;
52+microblaze*) gdb_host_cpu=microblaze ;;
53 powerpc* | rs6000) gdb_host_cpu=powerpc ;;
54 sparcv9 | sparc64) gdb_host_cpu=sparc ;;
55 s390*) gdb_host_cpu=s390 ;;
56@@ -135,6 +136,8 @@ mips64*-*-openbsd*) gdb_host=obsd64 ;;
57
58 or1k-*-linux*) gdb_host=linux ;;
59
60+microblaze*-*linux*) gdb_host=linux ;;
61+
62 powerpc-*-aix* | rs6000-*-* | powerpc64-*-aix*)
63 gdb_host=aix ;;
64 powerpc*-*-freebsd*) gdb_host=fbsd ;;
65diff --git a/gdb/features/microblaze-linux.xml b/gdb/features/microblaze-linux.xml
66new file mode 100644
67index 00000000000..8983e66eb3d
68--- /dev/null
69+++ b/gdb/features/microblaze-linux.xml
70@@ -0,0 +1,12 @@
71+<?xml version="1.0"?>
72+<!-- Copyright (C) 2014-2018 Free Software Foundation, Inc.
73+
74+ Copying and distribution of this file, with or without modification,
75+ are permitted in any medium without royalty provided the copyright
76+ notice and this notice are preserved. -->
77+
78+<!DOCTYPE target SYSTEM "gdb-target.dtd">
79+<target>
80+ <osabi>GNU/Linux</osabi>
81+ <xi:include href="microblaze-core.xml"/>
82+</target>
83diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
84new file mode 100644
85index 00000000000..fb4762a22d5
86--- /dev/null
87+++ b/gdb/gdbserver/Makefile.in
88@@ -0,0 +1,712 @@
89+# Copyright (C) 1989-2020 Free Software Foundation, Inc.
90+
91+# This file is part of GDB.
92+
93+# This program is free software; you can redistribute it and/or modify
94+# it under the terms of the GNU General Public License as published by
95+# the Free Software Foundation; either version 3 of the License, or
96+# (at your option) any later version.
97+#
98+# This program is distributed in the hope that it will be useful,
99+# but WITHOUT ANY WARRANTY; without even the implied warranty of
100+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
101+# GNU General Public License for more details.
102+#
103+# You should have received a copy of the GNU General Public License
104+# along with this program. If not, see <http://www.gnu.org/licenses/>.
105+
106+# Please keep lists in this file sorted alphabetically, with one item per line.
107+# See gdb/Makefile.in for guidelines on ordering files and directories.
108+
109+prefix = @prefix@
110+exec_prefix = @exec_prefix@
111+
112+host_alias = @host_noncanonical@
113+target_alias = @target_noncanonical@
114+program_transform_name = @program_transform_name@
115+bindir = @bindir@
116+libdir = @libdir@
117+tooldir = $(libdir)/$(target_alias)
118+
119+datarootdir = @datarootdir@
120+datadir = @datadir@
121+mandir = @mandir@
122+man1dir = $(mandir)/man1
123+man2dir = $(mandir)/man2
124+man3dir = $(mandir)/man3
125+man4dir = $(mandir)/man4
126+man5dir = $(mandir)/man5
127+man6dir = $(mandir)/man6
128+man7dir = $(mandir)/man7
129+man8dir = $(mandir)/man8
130+man9dir = $(mandir)/man9
131+infodir = @infodir@
132+htmldir = $(prefix)/html
133+includedir = @includedir@
134+CONFIG_SRC_SUBDIR = @CONFIG_SRC_SUBDIR@
135+
136+SHELL = @SHELL@
137+EXEEXT = @EXEEXT@
138+
139+INSTALL = @INSTALL@
140+INSTALL_PROGRAM = @INSTALL_PROGRAM@
141+INSTALL_DATA = @INSTALL_DATA@
142+RANLIB = @RANLIB@
143+
144+CC = @CC@
145+CXX = @CXX@
146+CXX_DIALECT = @CXX_DIALECT@
147+AR = @AR@
148+AR_FLAGS = rc
149+
150+# Dependency tracking information.
151+DEPMODE = @CCDEPMODE@
152+DEPDIR = @DEPDIR@
153+depcomp = $(SHELL) $(srcdir)/../../depcomp
154+
155+# Directory containing source files. Don't clean up the spacing,
156+# this exact string is matched for by the "configure" script.
157+srcdir = @srcdir@
158+abs_top_srcdir = @abs_top_srcdir@
159+abs_srcdir = @abs_srcdir@
160+VPATH = @srcdir@
161+
162+include $(srcdir)/../silent-rules.mk
163+
164+# Note that these are overridden by GNU make-specific code below if
165+# GNU make is used. The overrides implement dependency tracking.
166+COMPILE.pre = $(CXX) -x c++ $(CXX_DIALECT)
167+COMPILE.post = -c -o $@
168+COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(INTERNAL_CFLAGS) $(COMPILE.post)
169+POSTCOMPILE = @true
170+
171+# It is also possible that you will need to add -I/usr/include/sys to the
172+# CFLAGS section if your system doesn't have fcntl.h in /usr/include (which
173+# is where it should be according to Posix).
174+
175+# Set this up with gcc if you have gnu ld and the loader will print out
176+# line numbers for undefinded refs.
177+#CC_LD = g++ -static
178+CC_LD = $(CXX) $(CXX_DIALECT)
179+
180+# Where is the "include" directory? Traditionally ../include or ./include
181+INCLUDE_DIR = ${srcdir}/../../include
182+INCLUDE_DEP = $$(INCLUDE_DIR)
183+
184+LIBIBERTY_BUILDDIR = build-libiberty-gdbserver
185+LIBIBERTY = $(LIBIBERTY_BUILDDIR)/libiberty.a
186+
187+# Where is ust? These will be empty if ust was not available.
188+ustlibs = @ustlibs@
189+ustinc = @ustinc@
190+
191+# gnulib
192+GNULIB_BUILDDIR = build-gnulib-gdbserver
193+LIBGNU = $(GNULIB_BUILDDIR)/import/libgnu.a
194+INCGNU = -I$(srcdir)/../../gnulib/import -I$(GNULIB_BUILDDIR)/import
195+
196+# Generated headers in the gnulib directory. These must be listed
197+# so that they are generated before other files are compiled.
198+GNULIB_H = $(GNULIB_BUILDDIR)/import/string.h @GNULIB_STDINT_H@
199+
200+# All the includes used for CFLAGS and for lint.
201+# -I. for config files.
202+# -I${srcdir} for our headers.
203+# -I$(srcdir)/../regformats for regdef.h.
204+#
205+# We do not include ../target or ../nat in here because headers
206+# in those directories should be included with the subdirectory.
207+# e.g.: "target/wait.h".
208+#
209+INCLUDE_CFLAGS = -I. -I${srcdir} \
210+ -I$(srcdir)/../regformats -I$(srcdir)/.. -I$(INCLUDE_DIR) \
211+ $(INCGNU)
212+
213+# M{H,T}_CFLAGS, if defined, has host- and target-dependent CFLAGS
214+# from the config/ directory.
215+GLOBAL_CFLAGS = ${MT_CFLAGS} ${MH_CFLAGS}
216+#PROFILE_CFLAGS = -pg
217+
218+WARN_CFLAGS = @WARN_CFLAGS@
219+WERROR_CFLAGS = @WERROR_CFLAGS@
220+
221+WARN_CFLAGS_NO_FORMAT = `echo " $(WARN_CFLAGS) " \
222+ | sed "s/ -Wformat-nonliteral / -Wno-format-nonliteral /g"`
223+
224+# These are specifically reserved for setting from the command line
225+# when running make. I.E. "make CFLAGS=-Wmissing-prototypes".
226+CFLAGS = @CFLAGS@
227+CXXFLAGS = @CXXFLAGS@
228+CPPFLAGS = @CPPFLAGS@
229+
230+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
231+PTHREAD_LIBS = @PTHREAD_LIBS@
232+
233+# INTERNAL_CFLAGS is the aggregate of all other *CFLAGS macros.
234+INTERNAL_CFLAGS_BASE = ${CXXFLAGS} ${GLOBAL_CFLAGS} \
235+ ${PROFILE_CFLAGS} ${INCLUDE_CFLAGS} ${CPPFLAGS} $(PTHREAD_CFLAGS)
236+INTERNAL_WARN_CFLAGS = ${INTERNAL_CFLAGS_BASE} $(WARN_CFLAGS)
237+INTERNAL_CFLAGS = ${INTERNAL_WARN_CFLAGS} $(WERROR_CFLAGS) -DGDBSERVER
238+
239+# LDFLAGS is specifically reserved for setting from the command line
240+# when running make.
241+LDFLAGS = @LDFLAGS@
242+INTERNAL_LDFLAGS = $(LDFLAGS) @RDYNAMIC@
243+
244+# All source files that go into linking GDB remote server.
245+
246+SFILES = \
247+ $(srcdir)/debug.c \
248+ $(srcdir)/dll.c \
249+ $(srcdir)/gdbreplay.c \
250+ $(srcdir)/hostio.c \
251+ $(srcdir)/hostio-errno.c \
252+ $(srcdir)/i387-fp.c \
253+ $(srcdir)/inferiors.c \
254+ $(srcdir)/linux-aarch64-low.c \
255+ $(srcdir)/linux-arm-low.c \
256+ $(srcdir)/linux-bfin-low.c \
257+ $(srcdir)/linux-cris-low.c \
258+ $(srcdir)/linux-crisv32-low.c \
259+ $(srcdir)/linux-ia64-low.c \
260+ $(srcdir)/linux-low.c \
261+ $(srcdir)/linux-m32r-low.c \
262+ $(srcdir)/linux-m68k-low.c \
263+ $(srcdir)/linux-microblaze-low.c \
264+ $(srcdir)/linux-mips-low.c \
265+ $(srcdir)/linux-nios2-low.c \
266+ $(srcdir)/linux-ppc-low.c \
267+ $(srcdir)/linux-s390-low.c \
268+ $(srcdir)/linux-sh-low.c \
269+ $(srcdir)/linux-sparc-low.c \
270+ $(srcdir)/linux-tile-low.c \
271+ $(srcdir)/linux-x86-low.c \
272+ $(srcdir)/linux-xtensa-low.c \
273+ $(srcdir)/mem-break.c \
274+ $(srcdir)/proc-service.c \
275+ $(srcdir)/proc-service.list \
276+ $(srcdir)/regcache.c \
277+ $(srcdir)/remote-utils.c \
278+ $(srcdir)/server.c \
279+ $(srcdir)/symbol.c \
280+ $(srcdir)/target.c \
281+ $(srcdir)/thread-db.c \
282+ $(srcdir)/utils.c \
283+ $(srcdir)/win32-arm-low.c \
284+ $(srcdir)/win32-i386-low.c \
285+ $(srcdir)/win32-low.c \
286+ $(srcdir)/wincecompat.c \
287+ $(srcdir)/x86-low.c \
288+ $(srcdir)/arch/arm.c \
289+ $(srcdir)/arch/arm-get-next-pcs.c \
290+ $(srcdir)/arch/arm-linux.c \
291+ $(srcdir)/arch/ppc-linux-common.c \
292+ $(srcdir)/../alloc.c \
293+ $(srcdir)/gdbsupport/btrace-common.c \
294+ $(srcdir)/gdbsupport/buffer.c \
295+ $(srcdir)/gdbsupport/cleanups.c \
296+ $(srcdir)/gdbsupport/common-debug.c \
297+ $(srcdir)/gdbsupport/common-exceptions.c \
298+ $(srcdir)/gdbsupport/common-inferior.c \
299+ $(srcdir)/gdbsupport/common-regcache.c \
300+ $(srcdir)/gdbsupport/common-utils.c \
301+ $(srcdir)/gdbsupport/errors.c \
302+ $(srcdir)/gdbsupport/environ.c \
303+ $(srcdir)/gdbsupport/fileio.c \
304+ $(srcdir)/gdbsupport/filestuff.c \
305+ $(srcdir)/gdbsupport/job-control.c \
306+ $(srcdir)/gdbsupport/gdb-dlfcn.c \
307+ $(srcdir)/gdbsupport/gdb_tilde_expand.c \
308+ $(srcdir)/gdbsupport/gdb_vecs.c \
309+ $(srcdir)/gdbsupport/netstuff.c \
310+ $(srcdir)/gdbsupport/new-op.c \
311+ $(srcdir)/gdbsupport/pathstuff.c \
312+ $(srcdir)/gdbsupport/print-utils.c \
313+ $(srcdir)/gdbsupport/ptid.c \
314+ $(srcdir)/gdbsupport/rsp-low.c \
315+ $(srcdir)/gdbsupport/safe-strerror.c \
316+ $(srcdir)/gdbsupport/tdesc.c \
317+ $(srcdir)/gdbsupport/xml-utils.c \
318+ $(srcdir)/nat/aarch64-sve-linux-ptrace.c \
319+ $(srcdir)/nat/linux-btrace.c \
320+ $(srcdir)/nat/linux-namespaces.c \
321+ $(srcdir)/nat/linux-osdata.c \
322+ $(srcdir)/nat/linux-personality.c \
323+ $(srcdir)/nat/microblaze-linux.c \
324+ $(srcdir)/nat/mips-linux-watch.c \
325+ $(srcdir)/nat/ppc-linux.c \
326+ $(srcdir)/nat/fork-inferior.c \
327+ $(srcdir)/target/waitstatus.c
328+
329+DEPFILES = @GDBSERVER_DEPFILES@
330+
331+LIBOBJS = @LIBOBJS@
332+
333+SOURCES = $(SFILES)
334+TAGFILES = $(SOURCES) ${HFILES} ${ALLPARAM} ${POSSLIBS}
335+
336+OBS = \
337+ alloc.o \
338+ ax.o \
339+ gdbsupport/agent.o \
340+ gdbsupport/btrace-common.o \
341+ gdbsupport/buffer.o \
342+ gdbsupport/cleanups.o \
343+ gdbsupport/common-debug.o \
344+ gdbsupport/common-exceptions.o \
345+ gdbsupport/common-inferior.o \
346+ gdbsupport/job-control.o \
347+ gdbsupport/common-regcache.o \
348+ gdbsupport/common-utils.o \
349+ gdbsupport/errors.o \
350+ gdbsupport/environ.o \
351+ gdbsupport/fileio.o \
352+ gdbsupport/filestuff.o \
353+ gdbsupport/format.o \
354+ gdbsupport/gdb-dlfcn.o \
355+ gdbsupport/gdb_tilde_expand.o \
356+ gdbsupport/gdb_vecs.o \
357+ gdbsupport/netstuff.o \
358+ gdbsupport/new-op.o \
359+ gdbsupport/pathstuff.o \
360+ gdbsupport/print-utils.o \
361+ gdbsupport/ptid.o \
362+ gdbsupport/rsp-low.o \
363+ gdbsupport/safe-strerror.o \
364+ gdbsupport/signals.o \
365+ gdbsupport/signals-state-save-restore.o \
366+ gdbsupport/tdesc.o \
367+ gdbsupport/xml-utils.o \
368+ debug.o \
369+ dll.o \
370+ event-loop.o \
371+ hostio.o \
372+ inferiors.o \
373+ mem-break.o \
374+ notif.o \
375+ regcache.o \
376+ remote-utils.o \
377+ server.o \
378+ symbol.o \
379+ target.o \
380+ tdesc.o \
381+ tracepoint.o \
382+ utils.o \
383+ version.o \
384+ waitstatus.o \
385+ $(DEPFILES) \
386+ $(LIBOBJS) \
387+ $(XML_BUILTIN)
388+
389+GDBREPLAY_OBS = \
390+ gdbsupport/cleanups.o \
391+ gdbsupport/common-exceptions.o \
392+ gdbsupport/common-utils.o \
393+ gdbsupport/rsp-low.o \
394+ gdbsupport/errors.o \
395+ gdbsupport/netstuff.o \
396+ gdbsupport/print-utils.o \
397+ gdbsupport/safe-strerror.o \
398+ gdbreplay.o \
399+ utils.o \
400+ version.o
401+
402+GDBSERVER_LIBS = @GDBSERVER_LIBS@ $(PTHREAD_LIBS)
403+XM_CLIBS = @LIBS@
404+CDEPS = $(srcdir)/proc-service.list
405+
406+# XML files to compile in to gdbserver, if any.
407+XML_DIR = $(srcdir)/../features
408+XML_FILES = @srv_xmlfiles@
409+XML_BUILTIN = @srv_xmlbuiltin@
410+
411+IPA_DEPFILES = @IPA_DEPFILES@
412+extra_libraries = @extra_libraries@
413+
414+SUBDIRS = $(GNULIB_BUILDDIR) $(LIBIBERTY_BUILDDIR)
415+CLEANDIRS = $(SUBDIRS)
416+
417+# List of subdirectories in the build tree that must exist.
418+# This is used to force build failures in existing trees when
419+# a new directory is added.
420+# The format here is for the `case' shell command.
421+REQUIRED_SUBDIRS = $(GNULIB_BUILDDIR) | $(LIBIBERTY_BUILDDIR)
422+
423+FLAGS_TO_PASS = \
424+ "prefix=$(prefix)" \
425+ "exec_prefix=$(exec_prefix)" \
426+ "infodir=$(infodir)" \
427+ "datarootdir=$(datarootdir)" \
428+ "docdir=$(docdir)" \
429+ "htmldir=$(htmldir)" \
430+ "pdfdir=$(pdfdir)" \
431+ "libdir=$(libdir)" \
432+ "mandir=$(mandir)" \
433+ "datadir=$(datadir)" \
434+ "includedir=$(includedir)" \
435+ "against=$(against)" \
436+ "DESTDIR=$(DESTDIR)" \
437+ "AR=$(AR)" \
438+ "AR_FLAGS=$(AR_FLAGS)" \
439+ "CC=$(CC)" \
440+ "CFLAGS=$(CFLAGS)" \
441+ "CXX=$(CXX)" \
442+ "CXXFLAGS=$(CXXFLAGS)" \
443+ "DLLTOOL=$(DLLTOOL)" \
444+ "LDFLAGS=$(LDFLAGS)" \
445+ "RANLIB=$(RANLIB)" \
446+ "MAKEINFO=$(MAKEINFO)" \
447+ "MAKEHTML=$(MAKEHTML)" \
448+ "MAKEHTMLFLAGS=$(MAKEHTMLFLAGS)" \
449+ "INSTALL=$(INSTALL)" \
450+ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
451+ "INSTALL_DATA=$(INSTALL_DATA)" \
452+ "RUNTEST=$(RUNTEST)" \
453+ "RUNTESTFLAGS=$(RUNTESTFLAGS)"
454+
455+# All generated files which can be included by another file.
456+generated_files = config.h $(GNULIB_H)
457+
458+all: gdbserver$(EXEEXT) gdbreplay$(EXEEXT) $(extra_libraries)
459+ @$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
460+
461+# Traditionally "install" depends on "all". But it may be useful
462+# not to; for example, if the user has made some trivial change to a
463+# source file and doesn't care about rebuilding or just wants to save the
464+# time it takes for make to check that all is up to date.
465+# install-only is intended to address that need.
466+install: all
467+ @$(MAKE) $(FLAGS_TO_PASS) install-only
468+
469+install-only:
470+ n=`echo gdbserver | sed '$(program_transform_name)'`; \
471+ if [ x$$n = x ]; then n=gdbserver; else true; fi; \
472+ if [ x"$(IPA_DEPFILES)" != x ]; then \
473+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(libdir); \
474+ $(INSTALL_PROGRAM) $(IPA_LIB) $(DESTDIR)$(libdir)/$(IPA_LIB); \
475+ fi; \
476+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(bindir); \
477+ $(INSTALL_PROGRAM) gdbserver$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT)
478+ # Note that we run install and not install-only, as the latter
479+ # is not part of GNU standards and in particular not provided
480+ # in libiberty.
481+ @$(MAKE) $(FLAGS_TO_PASS) DO=install "DODIRS=$(SUBDIRS)" subdir_do
482+
483+uninstall: force
484+ n=`echo gdbserver | sed '$(program_transform_name)'`; \
485+ if [ x$$n = x ]; then n=gdbserver; else true; fi; \
486+ rm -f $(DESTDIR)/$(bindir)/$$n$(EXEEXT) $(DESTDIR)$(man1dir)/$$n.1
487+ @$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
488+
489+installcheck:
490+check:
491+info dvi pdf:
492+install-info:
493+install-pdf:
494+html:
495+install-html:
496+clean-info: force
497+ @$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
498+
499+gdbserver$(EXEEXT): $(sort $(OBS)) ${CDEPS} $(LIBGNU) $(LIBIBERTY)
500+ $(SILENCE) rm -f gdbserver$(EXEEXT)
501+ $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
502+ -o gdbserver$(EXEEXT) $(OBS) $(LIBGNU) $(LIBIBERTY) \
503+ $(GDBSERVER_LIBS) $(XM_CLIBS)
504+
505+$(LIBGNU) $(LIBIBERTY) $(GNULIB_H): all-lib
506+all-lib: $(GNULIB_BUILDDIR)/Makefile $(LIBIBERTY_BUILDDIR)/Makefile
507+ @$(MAKE) $(FLAGS_TO_PASS) DO=all DODIRS="$(SUBDIRS)" subdir_do
508+.PHONY: all-lib
509+
510+gdbreplay$(EXEEXT): $(sort $(GDBREPLAY_OBS)) $(LIBGNU) $(LIBIBERTY)
511+ $(SILENCE) rm -f gdbreplay$(EXEEXT)
512+ $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
513+ -o gdbreplay$(EXEEXT) $(GDBREPLAY_OBS) $(XM_CLIBS) $(LIBGNU) \
514+ $(LIBIBERTY)
515+
516+IPA_OBJS = \
517+ alloc-ipa.o \
518+ ax-ipa.o \
519+ gdbsupport/common-utils-ipa.o \
520+ gdbsupport/errors-ipa.o \
521+ gdbsupport/format-ipa.o \
522+ gdbsupport/print-utils-ipa.o \
523+ gdbsupport/rsp-low-ipa.o \
524+ gdbsupport/safe-strerror-ipa.o \
525+ gdbsupport/tdesc-ipa.o \
526+ regcache-ipa.o \
527+ remote-utils-ipa.o \
528+ tdesc-ipa.o \
529+ tracepoint-ipa.o \
530+ utils-ipa.o \
531+ ${IPA_DEPFILES}
532+
533+IPA_LIB = libinproctrace.so
534+
535+$(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS}
536+ $(SILENCE) rm -f $(IPA_LIB)
537+ $(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \
538+ -Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
539+ -o $(IPA_LIB) ${IPA_OBJS} -ldl -pthread
540+
541+# Put the proper machine-specific files first, so M-. on a machine
542+# specific routine gets the one for the correct machine.
543+# The xyzzy stuff below deals with empty DEPFILES
544+TAGS: ${TAGFILES}
545+ etags `find ${srcdir}/../config -name $(DEPRECATED_TM_FILE) -print` \
546+ `find ${srcdir}/../config -name ${XM_FILE} -print` \
547+ `find ${srcdir}/../config -name ${NAT_FILE} -print` \
548+ `for i in yzzy ${DEPFILES}; do \
549+ if [ x$$i != xyzzy ]; then \
550+ echo ${srcdir}/$$i | sed -e 's/\.o$$/\.c/' ; \
551+ fi; \
552+ done` \
553+ ${TAGFILES}
554+tags: TAGS
555+
556+clean:
557+ rm -f *.o ${ADD_FILES} *~
558+ rm -f gdbserver$(EXEEXT) gdbreplay$(EXEEXT) core make.log
559+ rm -f $(IPA_LIB)
560+ rm -f *-generated.c
561+ rm -f stamp-xml
562+ rm -f $(DEPDIR)/*.Po
563+ for i in $(CONFIG_SRC_SUBDIR); do \
564+ rm -f $$i/*.o; \
565+ rm -f $$i/$(DEPDIR)/*; \
566+ done
567+ @$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
568+
569+maintainer-clean realclean distclean: clean
570+ @$(MAKE) $(FLAGS_TO_PASS) DO=$@ "DODIRS=$(SUBDIRS)" subdir_do
571+ rm -rf $(GNULIB_BUILDDIR)
572+ rm -f Makefile config.status config.h stamp-h config.log
573+ rm -f Makefile
574+ for i in $(CONFIG_SRC_SUBDIR); do \
575+ rmdir $$i/$(DEPDIR); \
576+ done
577+
578+subdir_do: force
579+ @for i in $(DODIRS); do \
580+ case $$i in \
581+ $(REQUIRED_SUBDIRS)) \
582+ if [ ! -f ./$$i/Makefile ] ; then \
583+ echo "Missing $$i/Makefile" >&2 ; \
584+ exit 1 ; \
585+ fi ;; \
586+ esac ; \
587+ if [ -f ./$$i/Makefile ] ; then \
588+ if (cd ./$$i; \
589+ $(MAKE) $(FLAGS_TO_PASS) $(DO)) ; then true ; \
590+ else exit 1 ; fi ; \
591+ else true ; fi ; \
592+ done
593+
594+config.h: stamp-h ; @true
595+stamp-h: config.in config.status
596+ $(SHELL) ./config.status config.h
597+
598+Makefile: Makefile.in config.status
599+ $(SHELL) ./config.status $@
600+
601+$(GNULIB_BUILDDIR)/Makefile: $(srcdir)/../../gnulib/Makefile.in config.status
602+ @cd $(GNULIB_BUILDDIR); CONFIG_FILES="Makefile" \
603+ CONFIG_COMMANDS="depfiles" \
604+ CONFIG_HEADERS= \
605+ CONFIG_LINKS= \
606+ $(SHELL) config.status
607+
608+config.status: configure configure.srv $(srcdir)/../../bfd/development.sh
609+ $(SHELL) ./config.status --recheck
610+
611+# automatic rebuilding in automake-generated Makefiles requires
612+# this rule in the toplevel Makefile, which, with GNU make, causes
613+# the desired updates through the implicit regeneration of the Makefile
614+# and all of its prerequisites.
615+am--refresh:
616+ @:
617+
618+force:
619+
620+version-generated.c: Makefile $(srcdir)/../version.in $(srcdir)/../../bfd/version.h $(srcdir)/../gdbsupport/create-version.sh
621+ $(ECHO_GEN) $(SHELL) $(srcdir)/../gdbsupport/create-version.sh $(srcdir)/.. \
622+ $(host_alias) $(target_alias) $@
623+
624+xml-builtin-generated.c: stamp-xml; @true
625+stamp-xml: $(XML_DIR)/feature_to_c.sh Makefile $(XML_FILES)
626+ $(SILENCE) rm -f xml-builtin.tmp
627+ $(ECHO_GEN_XML_BUILTIN_GENERATED) $(SHELL) $(XML_DIR)/feature_to_c.sh \
628+ xml-builtin.tmp $(XML_FILES)
629+ $(SILENCE) $(SHELL) $(srcdir)/../../move-if-change xml-builtin.tmp xml-builtin-generated.c
630+ $(SILENCE) echo stamp > stamp-xml
631+
632+.PRECIOUS: xml-builtin.c
633+
634+# GNU Make has an annoying habit of putting *all* the Makefile variables
635+# into the environment, unless you include this target as a circumvention.
636+# Rumor is that this will be fixed (and this target can be removed)
637+# in GNU Make 4.0.
638+.NOEXPORT:
639+
640+# GNU Make 3.63 has a different problem: it keeps tacking command line
641+# overrides onto the definition of $(MAKE). This variable setting
642+# will remove them.
643+MAKEOVERRIDES =
644+
645+regdat_sh = $(srcdir)/../regformats/regdat.sh
646+
647+UST_CFLAGS = $(ustinc) -DCONFIG_UST_GDB_INTEGRATION
648+
649+# Undo gnulib replacements for the IPA shared library build.
650+# The gnulib headers are still needed, but gnulib is not linked
651+# into the IPA lib so replacement apis don't work.
652+UNDO_GNULIB_CFLAGS = -Drpl_strerror_r=strerror_r
653+
654+# Note, we only build the IPA if -fvisibility=hidden is supported in
655+# the first place.
656+IPAGENT_CFLAGS = $(INTERNAL_CFLAGS) $(UST_CFLAGS) \
657+ $(UNDO_GNULIB_CFLAGS) \
658+ -fPIC -DIN_PROCESS_AGENT \
659+ -fvisibility=hidden
660+
661+IPAGENT_COMPILE = $(ECHO_CXX) $(COMPILE.pre) $(IPAGENT_CFLAGS) $(COMPILE.post)
662+
663+# Rules for special cases.
664+
665+ax-ipa.o: ax.c
666+ $(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
667+ $(POSTCOMPILE)
668+
669+ax.o: ax.c
670+ $(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
671+ $(POSTCOMPILE)
672+
673+alloc-ipa.o: ../alloc.c
674+ $(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
675+ $(POSTCOMPILE)
676+
677+# Rules for objects that go in the in-process agent.
678+
679+arch/%-ipa.o: ../arch/%.c
680+ $(IPAGENT_COMPILE) $<
681+ $(POSTCOMPILE)
682+
683+gdbsupport/%-ipa.o: ../gdbsupport/%.c
684+ $(IPAGENT_COMPILE) $<
685+ $(POSTCOMPILE)
686+
687+%-ipa.o: %-generated.c
688+ $(IPAGENT_COMPILE) $<
689+ $(POSTCOMPILE)
690+
691+%-ipa.o: %.c
692+ $(IPAGENT_COMPILE) $<
693+ $(POSTCOMPILE)
694+
695+# Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
696+# Therefore, this one needs to be before "%.o: %.c" for it to be considered for
697+# files such as linux-amd64-ipa.o generated from linux-amd64-ipa.c.
698+#
699+# Later versions of GNU Make choose the rule with the shortest stem, so it would
700+# work in any order.
701+
702+%-ipa.o: %-ipa.c
703+ $(IPAGENT_COMPILE) $<
704+ $(POSTCOMPILE)
705+
706+# Rules for objects that go in the gdbserver binary.
707+
708+arch/%.o: ../arch/%.c
709+ $(COMPILE) $<
710+ $(POSTCOMPILE)
711+
712+gdbsupport/%.o: ../gdbsupport/%.c
713+ $(COMPILE) $<
714+ $(POSTCOMPILE)
715+
716+%.o: %-generated.c
717+ $(COMPILE) $<
718+ $(POSTCOMPILE)
719+
720+%.o: %.c
721+ $(COMPILE) $<
722+ $(POSTCOMPILE)
723+
724+%.o: ../nat/%.c
725+ $(COMPILE) $<
726+ $(POSTCOMPILE)
727+
728+%.o: ../target/%.c
729+ $(COMPILE) $<
730+ $(POSTCOMPILE)
731+
732+%.o: ../%.c
733+ $(COMPILE) $<
734+ $(POSTCOMPILE)
735+
736+# Rules for register format descriptions. Suffix destination files with
737+# -generated to identify and clean them easily.
738+
739+%-generated.c: ../regformats/%.dat | $(regdat_sh)
740+ $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
741+
742+%-generated.c: ../regformats/arm/%.dat | $(regdat_sh)
743+ $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
744+
745+%-generated.c: ../regformats/i386/%.dat | $(regdat_sh)
746+ $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
747+
748+%-generated.c: ../regformats/rs6000/%.dat | $(regdat_sh)
749+ $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $< $@
750+microblaze-linux.c : $(srcdir)/../regformats/reg-microblaze.dat $(regdat_sh)
751+ $(ECHO_REGDAT) $(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-microblaze.dat microblaze-linux.c
752+
753+#
754+# Dependency tracking.
755+#
756+
757+ifeq ($(DEPMODE),depmode=gcc3)
758+# Note that we put the dependencies into a .Tpo file, then move them
759+# into place if the compile succeeds. We need this because gcc does
760+# not atomically write the dependency output file.
761+override COMPILE.post = -c -o $@ -MT $@ -MMD -MP \
762+ -MF $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo
763+override POSTCOMPILE = @mv $(@D)/$(DEPDIR)/$(basename $(@F)).Tpo \
764+ $(@D)/$(DEPDIR)/$(basename $(@F)).Po
765+else
766+override COMPILE.pre = source='$<' object='$@' libtool=no \
767+ DEPDIR=$(DEPDIR) $(DEPMODE) $(depcomp) \
768+ $(CXX) -x c++ $(CXX_DIALECT)
769+# depcomp handles atomicity for us, so we don't need a postcompile
770+# step.
771+override POSTCOMPILE =
772+endif
773+
774+# A list of all the objects we might care about in this build, for
775+# dependency tracking.
776+all_object_files = $(OBS) $(GDBREPLAY_OBS) $(IPA_OBJS)
777+
778+# Ensure that generated files are created early. Use order-only
779+# dependencies if available. They require GNU make 3.80 or newer,
780+# and the .VARIABLES variable was introduced at the same time.
781+ifdef .VARIABLES
782+$(all_object_files): | $(generated_files)
783+else
784+$(all_object_files) : $(generated_files)
785+endif
786+
787+# All the .deps files to include.
788+all_deps_files = $(foreach dep,$(patsubst %.o,%.Po,$(all_object_files)),\
789+ $(dir $(dep))/$(DEPDIR)/$(notdir $(dep)))
790+
791+# Dependencies.
792+-include $(all_deps_files)
793+
794+# Disable implicit make rules.
795+include $(srcdir)/../disable-implicit-rules.mk
796+
797+# Do not delete intermediate files (e.g. *-generated.c).
798+.SECONDARY:
799+
800+# This is the end of "Makefile.in".
801diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
802new file mode 100644
803index 00000000000..e0d2b2fe04a
804--- /dev/null
805+++ b/gdb/gdbserver/configure.srv
806@@ -0,0 +1,398 @@
807+# Mappings from configuration triplets to gdbserver build options.
808+# This is invoked from the autoconf-generated configure script, to
809+# produce the appropriate Makefile substitutions.
810+
811+# This file sets the following shell variables:
812+# srv_regobj The register protocol appropriate for this target.
813+# srv_tgtobj Any other target-specific modules appropriate
814+# for this target.
815+# srv_hostio_err The object implementing the hostio_last_error
816+# target method.
817+# srv_xmlfiles All XML files which should be available for
818+# gdbserver in this configuration.
819+# ipa_obj Any other target-specific modules appropriate
820+# for this target's in-process agent.
821+#
822+# In addition, on GNU/Linux the following shell variables will be set:
823+# srv_linux_regsets Set to "yes" if ptrace(PTRACE_GETREGS) and friends
824+# may be available on this platform; unset otherwise.
825+# They will only be used if <sys/ptrace.h> defines
826+# PTRACE_GETREGS.
827+# srv_linux_usrregs Set to "yes" if we can get at registers via
828+# PTRACE_PEEKUSR / PTRACE_POKEUSR.
829+
830+# Default hostio_last_error implementation
831+srv_hostio_err_objs="hostio-errno.o"
832+
833+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"
834+
835+# Linux object files. This is so we don't have to repeat
836+# these files over and over again.
837+srv_linux_obj="linux-low.o linux-osdata.o linux-procfs.o linux-ptrace.o linux-waitpid.o linux-personality.o linux-namespaces.o fork-child.o fork-inferior.o"
838+
839+# Input is taken from the "${target}" variable.
840+
841+case "${target}" in
842+ aarch64*-*-linux*) srv_tgtobj="linux-aarch64-low.o aarch64-linux-hw-point.o"
843+ srv_tgtobj="$srv_tgtobj linux-aarch32-low.o"
844+ srv_tgtobj="$srv_tgtobj linux-aarch32-tdesc.o"
845+ srv_tgtobj="${srv_tgtobj} arch/aarch32.o"
846+ srv_tgtobj="${srv_tgtobj} arch/arm.o"
847+ srv_tgtobj="$srv_tgtobj aarch64-linux.o"
848+ srv_tgtobj="$srv_tgtobj arch/aarch64-insn.o"
849+ srv_tgtobj="$srv_tgtobj arch/aarch64.o"
850+ srv_tgtobj="$srv_tgtobj linux-aarch64-tdesc.o"
851+ srv_tgtobj="$srv_tgtobj aarch64-sve-linux-ptrace.o"
852+ srv_tgtobj="${srv_tgtobj} $srv_linux_obj"
853+ srv_linux_regsets=yes
854+ srv_linux_thread_db=yes
855+ ipa_obj="linux-aarch64-ipa.o"
856+ ipa_obj="${ipa_obj} linux-aarch64-tdesc-ipa.o"
857+ ipa_obj="${ipa_obj} arch/aarch64-ipa.o"
858+ ;;
859+ arm*-*-linux*) srv_tgtobj="$srv_linux_obj linux-arm-low.o"
860+ srv_tgtobj="$srv_tgtobj linux-arm-tdesc.o"
861+ srv_tgtobj="$srv_tgtobj linux-aarch32-low.o"
862+ srv_tgtobj="$srv_tgtobj linux-aarch32-tdesc.o"
863+ srv_tgtobj="${srv_tgtobj} arch/aarch32.o"
864+ srv_tgtobj="${srv_tgtobj} arch/arm.o"
865+ srv_tgtobj="${srv_tgtobj} arch/arm-linux.o"
866+ srv_tgtobj="${srv_tgtobj} arch/arm-get-next-pcs.o"
867+ srv_linux_usrregs=yes
868+ srv_linux_regsets=yes
869+ srv_linux_thread_db=yes
870+ ;;
871+ arm*-*-mingw32ce*) srv_regobj=reg-arm.o
872+ srv_tgtobj="win32-low.o win32-arm-low.o"
873+ srv_tgtobj="${srv_tgtobj} wincecompat.o"
874+ # hostio_last_error implementation is in win32-low.c
875+ srv_hostio_err_objs=""
876+ srv_mingw=yes
877+ srv_mingwce=yes
878+ ;;
879+ bfin-*-*linux*) srv_regobj=reg-bfin.o
880+ srv_tgtobj="$srv_linux_obj linux-bfin-low.o"
881+ srv_linux_usrregs=yes
882+ srv_linux_thread_db=yes
883+ ;;
884+ crisv32-*-linux*) srv_regobj=reg-crisv32.o
885+ srv_tgtobj="$srv_linux_obj linux-crisv32-low.o"
886+ srv_linux_regsets=yes
887+ srv_linux_thread_db=yes
888+ ;;
889+ cris-*-linux*) srv_regobj=reg-cris.o
890+ srv_tgtobj="$srv_linux_obj linux-cris-low.o"
891+ srv_linux_usrregs=yes
892+ srv_linux_thread_db=yes
893+ ;;
894+ i[34567]86-*-cygwin*) srv_regobj=""
895+ srv_tgtobj="x86-low.o x86-dregs.o win32-low.o win32-i386-low.o"
896+ srv_tgtobj="${srv_tgtobj} arch/i386.o"
897+ ;;
898+ i[34567]86-*-linux*) srv_tgtobj="${srv_tgtobj} arch/i386.o"
899+ srv_tgtobj="${srv_tgtobj} $srv_linux_obj linux-x86-low.o x86-low.o x86-dregs.o i387-fp.o"
900+ srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
901+ srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
902+ srv_tgtobj="${srv_tgtobj} x86-linux-dregs.o"
903+ srv_linux_usrregs=yes
904+ srv_linux_regsets=yes
905+ srv_linux_thread_db=yes
906+ srv_linux_btrace=yes
907+ ipa_obj="linux-i386-ipa.o linux-x86-tdesc-ipa.o"
908+ ipa_obj="${ipa_obj} arch/i386-ipa.o"
909+ ;;
910+ i[34567]86-*-lynxos*) srv_regobj=""
911+ srv_tgtobj="lynx-low.o lynx-i386-low.o fork-child.o fork-inferior.o"
912+ srv_tgtobj="${srv_tgtobj} arch/i386.o"
913+ srv_lynxos=yes
914+ ;;
915+ i[34567]86-*-mingw32ce*)
916+ srv_regobj=""
917+ srv_tgtobj="x86-low.o x86-dregs.o win32-low.o win32-i386-low.o"
918+ srv_tgtobj="${srv_tgtobj} arch/i386.o"
919+ srv_tgtobj="${srv_tgtobj} wincecompat.o"
920+ # hostio_last_error implementation is in win32-low.c
921+ srv_hostio_err_objs=""
922+ srv_mingw=yes
923+ srv_mingwce=yes
924+ ;;
925+ i[34567]86-*-mingw*) srv_regobj=""
926+ srv_tgtobj="x86-low.o x86-dregs.o win32-low.o win32-i386-low.o"
927+ srv_tgtobj="${srv_tgtobj} arch/i386.o"
928+ srv_mingw=yes
929+ ;;
930+ i[34567]86-*-nto*) srv_regobj=""
931+ srv_tgtobj="nto-low.o nto-x86-low.o arch/i386.o"
932+ srv_qnx="yes"
933+ ;;
934+ ia64-*-linux*) srv_regobj=reg-ia64.o
935+ srv_tgtobj="$srv_linux_obj linux-ia64-low.o"
936+ srv_linux_usrregs=yes
937+ ;;
938+ m32r*-*-linux*) srv_regobj=reg-m32r.o
939+ srv_tgtobj="$srv_linux_obj linux-m32r-low.o"
940+ srv_linux_usrregs=yes
941+ srv_linux_thread_db=yes
942+ ;;
943+ m68*-*-linux*) if test "$gdb_cv_m68k_is_coldfire" = yes; then
944+ srv_regobj=reg-cf.o
945+ else
946+ srv_regobj=reg-m68k.o
947+ fi
948+ srv_tgtobj="$srv_linux_obj linux-m68k-low.o"
949+ srv_linux_usrregs=yes
950+ srv_linux_regsets=yes
951+ srv_linux_thread_db=yes
952+ ;;
953+ m68*-*-uclinux*) if test "$gdb_cv_m68k_is_coldfire" = yes; then
954+ srv_regobj=reg-cf.o
955+ else
956+ srv_regobj=reg-m68k.o
957+ fi
958+ srv_tgtobj="$srv_linux_obj linux-m68k-low.o"
959+ srv_linux_usrregs=yes
960+ srv_linux_regsets=yes
961+ srv_linux_thread_db=yes
962+ ;;
963+ mips*-*-linux*) srv_regobj="mips-linux.o"
964+ srv_regobj="${srv_regobj} mips-dsp-linux.o"
965+ srv_regobj="${srv_regobj} mips64-linux.o"
966+ srv_regobj="${srv_regobj} mips64-dsp-linux.o"
967+ srv_tgtobj="$srv_linux_obj linux-mips-low.o"
968+ srv_tgtobj="${srv_tgtobj} mips-linux-watch.o"
969+ srv_xmlfiles="mips-linux.xml"
970+ srv_xmlfiles="${srv_xmlfiles} mips-dsp-linux.xml"
971+ srv_xmlfiles="${srv_xmlfiles} mips-cpu.xml"
972+ srv_xmlfiles="${srv_xmlfiles} mips-cp0.xml"
973+ srv_xmlfiles="${srv_xmlfiles} mips-fpu.xml"
974+ srv_xmlfiles="${srv_xmlfiles} mips-dsp.xml"
975+ srv_xmlfiles="${srv_xmlfiles} mips64-linux.xml"
976+ srv_xmlfiles="${srv_xmlfiles} mips64-dsp-linux.xml"
977+ srv_xmlfiles="${srv_xmlfiles} mips64-cpu.xml"
978+ srv_xmlfiles="${srv_xmlfiles} mips64-cp0.xml"
979+ srv_xmlfiles="${srv_xmlfiles} mips64-fpu.xml"
980+ srv_xmlfiles="${srv_xmlfiles} mips64-dsp.xml"
981+ srv_linux_regsets=yes
982+ srv_linux_usrregs=yes
983+ srv_linux_thread_db=yes
984+ ;;
985+ nios2*-*-linux*) srv_regobj="nios2-linux.o"
986+ srv_tgtobj="$srv_linux_obj linux-nios2-low.o"
987+ srv_xmlfiles="nios2-linux.xml"
988+ srv_xmlfiles="${srv_xmlfiles} nios2-cpu.xml"
989+ srv_linux_regsets=yes
990+ srv_linux_usrregs=yes
991+ srv_linux_thread_db=yes
992+ ;;
993+ microblaze*-*-linux*) srv_regobj="microblaze-linux.o"
994+ srv_tgtobj="linux-low.o linux-osdata.o linux-microblaze-low.o "
995+ srv_tgtobj="${srv_tgtobj} linux-procfs.o linux-ptrace.o"
996+ srv_xmlfiles="microblaze-linux.xml"
997+ srv_linux_regsets=yes
998+ srv_linux_usrregs=yes
999+ srv_linux_thread_db=yes
1000+ ;;
1001+ powerpc*-*-linux*) srv_regobj="powerpc-32l.o"
1002+ srv_regobj="${srv_regobj} powerpc-altivec32l.o"
1003+ srv_regobj="${srv_regobj} powerpc-vsx32l.o"
1004+ srv_regobj="${srv_regobj} powerpc-isa205-32l.o"
1005+ srv_regobj="${srv_regobj} powerpc-isa205-altivec32l.o"
1006+ srv_regobj="${srv_regobj} powerpc-isa205-vsx32l.o"
1007+ srv_regobj="${srv_regobj} powerpc-isa205-ppr-dscr-vsx32l.o"
1008+ srv_regobj="${srv_regobj} powerpc-isa207-vsx32l.o"
1009+ srv_regobj="${srv_regobj} powerpc-isa207-htm-vsx32l.o"
1010+ srv_regobj="${srv_regobj} powerpc-e500l.o"
1011+ srv_regobj="${srv_regobj} powerpc-64l.o"
1012+ srv_regobj="${srv_regobj} powerpc-altivec64l.o"
1013+ srv_regobj="${srv_regobj} powerpc-vsx64l.o"
1014+ srv_regobj="${srv_regobj} powerpc-isa205-64l.o"
1015+ srv_regobj="${srv_regobj} powerpc-isa205-altivec64l.o"
1016+ srv_regobj="${srv_regobj} powerpc-isa205-vsx64l.o"
1017+ srv_regobj="${srv_regobj} powerpc-isa205-ppr-dscr-vsx64l.o"
1018+ srv_regobj="${srv_regobj} powerpc-isa207-vsx64l.o"
1019+ srv_regobj="${srv_regobj} powerpc-isa207-htm-vsx64l.o"
1020+ srv_tgtobj="$srv_linux_obj linux-ppc-low.o ppc-linux.o"
1021+ srv_tgtobj="${srv_tgtobj} arch/ppc-linux-common.o"
1022+ srv_xmlfiles="rs6000/powerpc-32l.xml"
1023+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.xml"
1024+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx32l.xml"
1025+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-32l.xml"
1026+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec32l.xml"
1027+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx32l.xml"
1028+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-ppr-dscr-vsx32l.xml"
1029+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx32l.xml"
1030+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-vsx32l.xml"
1031+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-altivec.xml"
1032+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-vsx.xml"
1033+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
1034+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux.xml"
1035+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
1036+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu-isa205.xml"
1037+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-dscr.xml"
1038+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-ppr.xml"
1039+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-tar.xml"
1040+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-ebb.xml"
1041+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux-pmu.xml"
1042+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-spr.xml"
1043+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-core.xml"
1044+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-fpu.xml"
1045+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-altivec.xml"
1046+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-vsx.xml"
1047+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-ppr.xml"
1048+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-dscr.xml"
1049+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-htm-tar.xml"
1050+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500l.xml"
1051+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
1052+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml"
1053+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec64l.xml"
1054+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-vsx64l.xml"
1055+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-64l.xml"
1056+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-altivec64l.xml"
1057+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-vsx64l.xml"
1058+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa205-ppr-dscr-vsx64l.xml"
1059+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-vsx64l.xml"
1060+ srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-isa207-htm-vsx64l.xml"
1061+ srv_xmlfiles="${srv_xmlfiles} rs6000/power64-core.xml"
1062+ srv_xmlfiles="${srv_xmlfiles} rs6000/power64-linux.xml"
1063+ srv_xmlfiles="${srv_xmlfiles} rs6000/power64-htm-core.xml"
1064+ srv_linux_usrregs=yes
1065+ srv_linux_regsets=yes
1066+ srv_linux_thread_db=yes
1067+ ipa_obj="${ipa_ppc_linux_regobj} linux-ppc-ipa.o"
1068+ ;;
1069+ powerpc-*-lynxos*) srv_regobj="powerpc-32.o"
1070+ srv_tgtobj="lynx-low.o lynx-ppc-low.o"
1071+ srv_xmlfiles="rs6000/powerpc-32.xml"
1072+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
1073+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
1074+ srv_lynxos=yes
1075+ ;;
1076+ s390*-*-linux*) srv_regobj="s390-linux32.o"
1077+ srv_regobj="${srv_regobj} s390-linux32v1.o"
1078+ srv_regobj="${srv_regobj} s390-linux32v2.o"
1079+ srv_regobj="${srv_regobj} s390-linux64.o"
1080+ srv_regobj="${srv_regobj} s390-linux64v1.o"
1081+ srv_regobj="${srv_regobj} s390-linux64v2.o"
1082+ srv_regobj="${srv_regobj} s390-te-linux64.o"
1083+ srv_regobj="${srv_regobj} s390-vx-linux64.o"
1084+ srv_regobj="${srv_regobj} s390-tevx-linux64.o"
1085+ srv_regobj="${srv_regobj} s390-gs-linux64.o"
1086+ srv_regobj="${srv_regobj} s390x-linux64.o"
1087+ srv_regobj="${srv_regobj} s390x-linux64v1.o"
1088+ srv_regobj="${srv_regobj} s390x-linux64v2.o"
1089+ srv_regobj="${srv_regobj} s390x-te-linux64.o"
1090+ srv_regobj="${srv_regobj} s390x-vx-linux64.o"
1091+ srv_regobj="${srv_regobj} s390x-tevx-linux64.o"
1092+ srv_regobj="${srv_regobj} s390x-gs-linux64.o"
1093+ srv_tgtobj="$srv_linux_obj linux-s390-low.o"
1094+ srv_xmlfiles="s390-linux32.xml"
1095+ srv_xmlfiles="${srv_xmlfiles} s390-linux32v1.xml"
1096+ srv_xmlfiles="${srv_xmlfiles} s390-linux32v2.xml"
1097+ srv_xmlfiles="${srv_xmlfiles} s390-linux64.xml"
1098+ srv_xmlfiles="${srv_xmlfiles} s390-linux64v1.xml"
1099+ srv_xmlfiles="${srv_xmlfiles} s390-linux64v2.xml"
1100+ srv_xmlfiles="${srv_xmlfiles} s390-te-linux64.xml"
1101+ srv_xmlfiles="${srv_xmlfiles} s390-vx-linux64.xml"
1102+ srv_xmlfiles="${srv_xmlfiles} s390-tevx-linux64.xml"
1103+ srv_xmlfiles="${srv_xmlfiles} s390-gs-linux64.xml"
1104+ srv_xmlfiles="${srv_xmlfiles} s390x-linux64.xml"
1105+ srv_xmlfiles="${srv_xmlfiles} s390x-linux64v1.xml"
1106+ srv_xmlfiles="${srv_xmlfiles} s390x-linux64v2.xml"
1107+ srv_xmlfiles="${srv_xmlfiles} s390x-te-linux64.xml"
1108+ srv_xmlfiles="${srv_xmlfiles} s390x-vx-linux64.xml"
1109+ srv_xmlfiles="${srv_xmlfiles} s390x-tevx-linux64.xml"
1110+ srv_xmlfiles="${srv_xmlfiles} s390x-gs-linux64.xml"
1111+ srv_xmlfiles="${srv_xmlfiles} s390-core32.xml"
1112+ srv_xmlfiles="${srv_xmlfiles} s390-core64.xml"
1113+ srv_xmlfiles="${srv_xmlfiles} s390x-core64.xml"
1114+ srv_xmlfiles="${srv_xmlfiles} s390-acr.xml"
1115+ srv_xmlfiles="${srv_xmlfiles} s390-fpr.xml"
1116+ srv_xmlfiles="${srv_xmlfiles} s390-tdb.xml"
1117+ srv_xmlfiles="${srv_xmlfiles} s390-vx.xml"
1118+ srv_xmlfiles="${srv_xmlfiles} s390-gs.xml"
1119+ srv_xmlfiles="${srv_xmlfiles} s390-gsbc.xml"
1120+ srv_linux_usrregs=yes
1121+ srv_linux_regsets=yes
1122+ srv_linux_thread_db=yes
1123+ ipa_obj="linux-s390-ipa.o"
1124+ ipa_obj="${ipa_obj} s390-linux32-ipa.o"
1125+ ipa_obj="${ipa_obj} s390-linux32v1-ipa.o"
1126+ ipa_obj="${ipa_obj} s390-linux32v2-ipa.o"
1127+ ipa_obj="${ipa_obj} s390-linux64-ipa.o"
1128+ ipa_obj="${ipa_obj} s390-linux64v1-ipa.o"
1129+ ipa_obj="${ipa_obj} s390-linux64v2-ipa.o"
1130+ ipa_obj="${ipa_obj} s390-vx-linux64-ipa.o"
1131+ ipa_obj="${ipa_obj} s390-te-linux64-ipa.o"
1132+ ipa_obj="${ipa_obj} s390-tevx-linux64-ipa.o"
1133+ ipa_obj="${ipa_obj} s390-gs-linux64-ipa.o"
1134+ ipa_obj="${ipa_obj} s390x-linux64-ipa.o"
1135+ ipa_obj="${ipa_obj} s390x-linux64v1-ipa.o"
1136+ ipa_obj="${ipa_obj} s390x-linux64v2-ipa.o"
1137+ ipa_obj="${ipa_obj} s390x-vx-linux64-ipa.o"
1138+ ipa_obj="${ipa_obj} s390x-te-linux64-ipa.o"
1139+ ipa_obj="${ipa_obj} s390x-tevx-linux64-ipa.o"
1140+ ipa_obj="${ipa_obj} s390x-gs-linux64-ipa.o"
1141+ ;;
1142+ sh*-*-linux*) srv_regobj=reg-sh.o
1143+ srv_tgtobj="$srv_linux_obj linux-sh-low.o"
1144+ srv_linux_usrregs=yes
1145+ srv_linux_regsets=yes
1146+ srv_linux_thread_db=yes
1147+ ;;
1148+ sparc*-*-linux*) srv_regobj=reg-sparc64.o
1149+ srv_tgtobj="$srv_linux_obj linux-sparc-low.o"
1150+ srv_linux_regsets=yes
1151+ srv_linux_thread_db=yes
1152+ ;;
1153+ tic6x-*-uclinux) if $development; then
1154+ srv_regobj="tic6x-c64xp-linux.o"
1155+ srv_regobj="${srv_regobj} tic6x-c64x-linux.o"
1156+ srv_regobj="${srv_regobj} tic6x-c62x-linux.o"
1157+ else
1158+ srv_regobj=""
1159+ fi
1160+ srv_tgtobj="$srv_linux_obj linux-tic6x-low.o"
1161+ srv_tgtobj="${srv_tgtobj} arch/tic6x.o"
1162+ srv_linux_regsets=yes
1163+ srv_linux_usrregs=yes
1164+ srv_linux_thread_db=yes
1165+ ;;
1166+ x86_64-*-linux*) srv_tgtobj="$srv_linux_obj linux-x86-low.o x86-low.o"
1167+ srv_tgtobj="${srv_tgtobj} x86-dregs.o i387-fp.o"
1168+ srv_tgtobj="${srv_tgtobj} arch/i386.o arch/amd64.o"
1169+ srv_tgtobj="${srv_tgtobj} linux-x86-tdesc.o"
1170+ srv_tgtobj="${srv_tgtobj} linux-btrace.o x86-linux.o"
1171+ srv_tgtobj="${srv_tgtobj} x86-linux-dregs.o"
1172+ srv_tgtobj="${srv_tgtobj} amd64-linux-siginfo.o"
1173+ srv_linux_usrregs=yes # This is for i386 progs.
1174+ srv_linux_regsets=yes
1175+ srv_linux_thread_db=yes
1176+ srv_linux_btrace=yes
1177+ ipa_obj="linux-amd64-ipa.o linux-x86-tdesc-ipa.o"
1178+ ipa_obj="${ipa_obj} arch/amd64-ipa.o"
1179+ ;;
1180+ x86_64-*-mingw*) srv_regobj=""
1181+ srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
1182+ srv_tgtobj="${srv_tgtobj} arch/amd64.o"
1183+ srv_mingw=yes
1184+ ;;
1185+ x86_64-*-cygwin*) srv_regobj=""
1186+ srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
1187+ srv_tgtobj="${srv_tgtobj} arch/amd64.o"
1188+ ;;
1189+
1190+ xtensa*-*-linux*) srv_regobj=reg-xtensa.o
1191+ srv_tgtobj="$srv_linux_obj linux-xtensa-low.o"
1192+ srv_linux_regsets=yes
1193+ srv_linux_thread_db=yes
1194+ ;;
1195+ tilegx-*-linux*) srv_regobj=reg-tilegx.o
1196+ srv_regobj="${srv_regobj} reg-tilegx32.o"
1197+ srv_tgtobj="$srv_linux_obj linux-tile-low.o"
1198+ srv_linux_regsets=yes
1199+ srv_linux_thread_db=yes
1200+ ;;
1201+ *) echo "Error: target not supported by gdbserver."
1202+ exit 1
1203+ ;;
1204+esac
1205diff --git a/gdb/gdbserver/linux-microblaze-low.c b/gdb/gdbserver/linux-microblaze-low.c
1206new file mode 100644
1207index 00000000000..cba5d6fc585
1208--- /dev/null
1209+++ b/gdb/gdbserver/linux-microblaze-low.c
1210@@ -0,0 +1,189 @@
1211+/* GNU/Linux/Microblaze specific low level interface, for the remote server for
1212+ GDB.
1213+ Copyright (C) 1995-2013 Free Software Foundation, Inc.
1214+
1215+ This file is part of GDB.
1216+
1217+ This program is free software; you can redistribute it and/or modify
1218+ it under the terms of the GNU General Public License as published by
1219+ the Free Software Foundation; either version 3 of the License, or
1220+ (at your option) any later version.
1221+
1222+ This program is distributed in the hope that it will be useful,
1223+ but WITHOUT ANY WARRANTY; without even the implied warranty of
1224+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1225+ GNU General Public License for more details.
1226+
1227+ You should have received a copy of the GNU General Public License
1228+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
1229+
1230+#include "server.h"
1231+#include "linux-low.h"
1232+
1233+#include <asm/ptrace.h>
1234+#include <sys/procfs.h>
1235+#include <sys/ptrace.h>
1236+
1237+#include "gdb_proc_service.h"
1238+
1239+static int microblaze_regmap[] =
1240+ {PT_GPR(0), PT_GPR(1), PT_GPR(2), PT_GPR(3),
1241+ PT_GPR(4), PT_GPR(5), PT_GPR(6), PT_GPR(7),
1242+ PT_GPR(8), PT_GPR(9), PT_GPR(10), PT_GPR(11),
1243+ PT_GPR(12), PT_GPR(13), PT_GPR(14), PT_GPR(15),
1244+ PT_GPR(16), PT_GPR(17), PT_GPR(18), PT_GPR(19),
1245+ PT_GPR(20), PT_GPR(21), PT_GPR(22), PT_GPR(23),
1246+ PT_GPR(24), PT_GPR(25), PT_GPR(26), PT_GPR(27),
1247+ PT_GPR(28), PT_GPR(29), PT_GPR(30), PT_GPR(31),
1248+ PT_PC, PT_MSR, PT_EAR, PT_ESR,
1249+ PT_FSR
1250+ };
1251+
1252+#define microblaze_num_regs (sizeof microblaze_regmap / sizeof microblaze_regmap[0])
1253+
1254+/* Defined in auto-generated file microblaze-linux.c. */
1255+void init_registers_microblaze (void);
1256+
1257+static int
1258+microblaze_cannot_store_register (int regno)
1259+{
1260+ if (microblaze_regmap[regno] == -1 || regno == 0)
1261+ return 1;
1262+
1263+ return 0;
1264+}
1265+
1266+static int
1267+microblaze_cannot_fetch_register (int regno)
1268+{
1269+ return 0;
1270+}
1271+
1272+static CORE_ADDR
1273+microblaze_get_pc (struct regcache *regcache)
1274+{
1275+ unsigned long pc;
1276+
1277+ collect_register_by_name (regcache, "pc", &pc);
1278+ return (CORE_ADDR) pc;
1279+}
1280+
1281+static void
1282+microblaze_set_pc (struct regcache *regcache, CORE_ADDR pc)
1283+{
1284+ unsigned long newpc = pc;
1285+
1286+ supply_register_by_name (regcache, "pc", &newpc);
1287+}
1288+
1289+/* dbtrap insn */
1290+/* brki r16, 0x18; */
1291+static const unsigned long microblaze_breakpoint = 0xba0c0018;
1292+#define microblaze_breakpoint_len 4
1293+
1294+static int
1295+microblaze_breakpoint_at (CORE_ADDR where)
1296+{
1297+ unsigned long insn;
1298+
1299+ (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
1300+ if (insn == microblaze_breakpoint)
1301+ return 1;
1302+ /* If necessary, recognize more trap instructions here. GDB only uses the
1303+ one. */
1304+ return 0;
1305+}
1306+
1307+static CORE_ADDR
1308+microblaze_reinsert_addr (struct regcache *regcache)
1309+{
1310+ unsigned long pc;
1311+ collect_register_by_name (regcache, "r15", &pc);
1312+ return pc;
1313+}
1314+
1315+#ifdef HAVE_PTRACE_GETREGS
1316+
1317+static void
1318+microblaze_collect_ptrace_register (struct regcache *regcache, int regno, char *buf)
1319+{
1320+ int size = register_size (regno);
1321+
1322+ memset (buf, 0, sizeof (long));
1323+
1324+ if (size < sizeof (long))
1325+ collect_register (regcache, regno, buf + sizeof (long) - size);
1326+ else
1327+ collect_register (regcache, regno, buf);
1328+}
1329+
1330+static void
1331+microblaze_supply_ptrace_register (struct regcache *regcache,
1332+ int regno, const char *buf)
1333+{
1334+ int size = register_size (regno);
1335+
1336+ if (regno == 0) {
1337+ unsigned long regbuf_0 = 0;
1338+ /* clobbering r0 so that it is always 0 as enforced by hardware */
1339+ supply_register (regcache, regno, (const char*)&regbuf_0);
1340+ } else {
1341+ if (size < sizeof (long))
1342+ supply_register (regcache, regno, buf + sizeof (long) - size);
1343+ else
1344+ supply_register (regcache, regno, buf);
1345+ }
1346+}
1347+
1348+/* Provide only a fill function for the general register set. ps_lgetregs
1349+ will use this for NPTL support. */
1350+
1351+static void microblaze_fill_gregset (struct regcache *regcache, void *buf)
1352+{
1353+ int i;
1354+
1355+ for (i = 0; i < 32; i++)
1356+ microblaze_collect_ptrace_register (regcache, i, (char *) buf + microblaze_regmap[i]);
1357+}
1358+
1359+static void
1360+microblaze_store_gregset (struct regcache *regcache, const void *buf)
1361+{
1362+ int i;
1363+
1364+ for (i = 0; i < 32; i++)
1365+ supply_register (regcache, i, (char *) buf + microblaze_regmap[i]);
1366+}
1367+
1368+#endif /* HAVE_PTRACE_GETREGS */
1369+
1370+struct regset_info target_regsets[] = {
1371+#ifdef HAVE_PTRACE_GETREGS
1372+ { PTRACE_GETREGS, PTRACE_SETREGS, 0, sizeof (elf_gregset_t), GENERAL_REGS, microblaze_fill_gregset, microblaze_store_gregset },
1373+ { 0, 0, 0, -1, -1, NULL, NULL },
1374+#endif /* HAVE_PTRACE_GETREGS */
1375+ { 0, 0, 0, -1, -1, NULL, NULL }
1376+};
1377+
1378+struct linux_target_ops the_low_target = {
1379+ init_registers_microblaze,
1380+ microblaze_num_regs,
1381+ microblaze_regmap,
1382+ NULL,
1383+ microblaze_cannot_fetch_register,
1384+ microblaze_cannot_store_register,
1385+ NULL, /* fetch_register */
1386+ microblaze_get_pc,
1387+ microblaze_set_pc,
1388+ (const unsigned char *) &microblaze_breakpoint,
1389+ microblaze_breakpoint_len,
1390+ microblaze_reinsert_addr,
1391+ 0,
1392+ microblaze_breakpoint_at,
1393+ NULL,
1394+ NULL,
1395+ NULL,
1396+ NULL,
1397+ microblaze_collect_ptrace_register,
1398+ microblaze_supply_ptrace_register,
1399+};
1400diff --git a/gdb/microblaze-linux-tdep.c b/gdb/microblaze-linux-tdep.c
1401index daa7ddf7e4d..5748556a556 100644
1402--- a/gdb/microblaze-linux-tdep.c
1403+++ b/gdb/microblaze-linux-tdep.c
1404@@ -37,6 +37,22 @@
1405 #include "tramp-frame.h"
1406 #include "linux-tdep.h"
1407
1408+static int microblaze_debug_flag = 0;
1409+
1410+static void
1411+microblaze_debug (const char *fmt, ...)
1412+{
1413+ if (microblaze_debug_flag)
1414+ {
1415+ va_list args;
1416+
1417+ va_start (args, fmt);
1418+ printf_unfiltered ("MICROBLAZE LINUX: ");
1419+ vprintf_unfiltered (fmt, args);
1420+ va_end (args);
1421+ }
1422+}
1423+
1424 static int
1425 microblaze_linux_memory_remove_breakpoint (struct gdbarch *gdbarch,
1426 struct bp_target_info *bp_tgt)
1427@@ -50,13 +66,20 @@ microblaze_linux_memory_remove_breakpoint (struct gdbarch *gdbarch,
1428 /* Determine appropriate breakpoint contents and size for this address. */
1429 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &bplen);
1430
1431+ /* Make sure we see the memory breakpoints. */
1432+ scoped_restore restore_memory
1433+ = make_scoped_restore_show_memory_breakpoints (1);
1434+
1435 val = target_read_memory (addr, old_contents, bplen);
1436
1437 /* If our breakpoint is no longer at the address, this means that the
1438 program modified the code on us, so it is wrong to put back the
1439 old value. */
1440 if (val == 0 && memcmp (bp, old_contents, bplen) == 0)
1441- val = target_write_raw_memory (addr, bp_tgt->shadow_contents, bplen);
1442+ {
1443+ val = target_write_raw_memory (addr, bp_tgt->shadow_contents, bplen);
1444+ microblaze_debug ("microblaze_linux_memory_remove_breakpoint writing back to memory at addr 0x%lx\n", addr);
1445+ }
1446
1447 return val;
1448 }
1449@@ -129,6 +152,10 @@ microblaze_linux_init_abi (struct gdbarch_info info,
1450 /* Trampolines. */
1451 tramp_frame_prepend_unwinder (gdbarch,
1452 &microblaze_linux_sighandler_tramp_frame);
1453+
1454+ /* Enable TLS support. */
1455+ set_gdbarch_fetch_tls_load_module_address (gdbarch,
1456+ svr4_fetch_objfile_link_map);
1457 }
1458
1459 void _initialize_microblaze_linux_tdep ();
1460diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c
1461index 3d5dd669341..3e8e8fe35b9 100644
1462--- a/gdb/microblaze-tdep.c
1463+++ b/gdb/microblaze-tdep.c
1464@@ -128,7 +128,38 @@ microblaze_fetch_instruction (CORE_ADDR pc)
1465 constexpr gdb_byte microblaze_break_insn[] = MICROBLAZE_BREAKPOINT;
1466
1467 typedef BP_MANIPULATION (microblaze_break_insn) microblaze_breakpoint;
1468-
1469+static int
1470+microblaze_linux_memory_remove_breakpoint (struct gdbarch *gdbarch,
1471+ struct bp_target_info *bp_tgt)
1472+{
1473+ CORE_ADDR addr = bp_tgt->placed_address;
1474+ const unsigned char *bp;
1475+ int val;
1476+ int bplen;
1477+ gdb_byte old_contents[BREAKPOINT_MAX];
1478+
1479+ /* Determine appropriate breakpoint contents and size for this address. */
1480+ bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &bplen);
1481+ if (bp == NULL)
1482+ error (_("Software breakpoints not implemented for this target."));
1483+
1484+ /* Make sure we see the memory breakpoints. */
1485+ scoped_restore restore_memory
1486+ = make_scoped_restore_show_memory_breakpoints (1);
1487+
1488+ val = target_read_memory (addr, old_contents, bplen);
1489+
1490+ /* If our breakpoint is no longer at the address, this means that the
1491+ program modified the code on us, so it is wrong to put back the
1492+ old value. */
1493+ if (val == 0 && memcmp (bp, old_contents, bplen) == 0)
1494+ {
1495+ val = target_write_raw_memory (addr, bp_tgt->shadow_contents, bplen);
1496+ microblaze_debug ("microblaze_linux_memory_remove_breakpoint writing back to memory at addr 0x%lx\n", addr);
1497+ }
1498+
1499+ return val;
1500+}
1501
1502 /* Allocate and initialize a frame cache. */
1503
1504@@ -716,6 +747,7 @@ microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
1505 microblaze_breakpoint::kind_from_pc);
1506 set_gdbarch_sw_breakpoint_from_kind (gdbarch,
1507 microblaze_breakpoint::bp_from_kind);
1508+ set_gdbarch_memory_remove_breakpoint (gdbarch, microblaze_linux_memory_remove_breakpoint);
1509
1510 set_gdbarch_frame_args_skip (gdbarch, 8);
1511
1512@@ -756,4 +788,5 @@ When non-zero, microblaze specific debugging is enabled."),
1513 NULL,
1514 &setdebuglist, &showdebuglist);
1515
1516+
1517 }
1518diff --git a/gdb/microblaze-tdep.h b/gdb/microblaze-tdep.h
1519index 4d90e8785dc..53fcb2297e6 100644
1520--- a/gdb/microblaze-tdep.h
1521+++ b/gdb/microblaze-tdep.h
1522@@ -118,6 +118,8 @@ struct microblaze_frame_cache
1523
1524 /* MICROBLAZE_BREAKPOINT defines the breakpoint that should be used.
1525 Only used for native debugging. */
1526-#define MICROBLAZE_BREAKPOINT {0xb9, 0xcc, 0x00, 0x60}
1527+#define MICROBLAZE_BREAKPOINT {0xba, 0x0c, 0x00, 0x18}
1528+#define MICROBLAZE_BREAKPOINT_LE {0x18, 0x00, 0x0c, 0xba}
1529+
1530
1531 #endif /* microblaze-tdep.h */
1532diff --git a/gdb/regformats/reg-microblaze.dat b/gdb/regformats/reg-microblaze.dat
1533new file mode 100644
1534index 00000000000..bd8a4384424
1535--- /dev/null
1536+++ b/gdb/regformats/reg-microblaze.dat
1537@@ -0,0 +1,41 @@
1538+name:microblaze
1539+expedite:r1,pc
1540+32:r0
1541+32:r1
1542+32:r2
1543+32:r3
1544+32:r4
1545+32:r5
1546+32:r6
1547+32:r7
1548+32:r8
1549+32:r9
1550+32:r10
1551+32:r11
1552+32:r12
1553+32:r13
1554+32:r14
1555+32:r15
1556+32:r16
1557+32:r17
1558+32:r18
1559+32:r19
1560+32:r20
1561+32:r21
1562+32:r22
1563+32:r23
1564+32:r24
1565+32:r25
1566+32:r26
1567+32:r27
1568+32:r28
1569+32:r29
1570+32:r30
1571+32:r31
1572+32:pc
1573+32:msr
1574+32:ear
1575+32:esr
1576+32:fsr
1577+32:slr
1578+32:shr
1579--
15802.25.1
1581