gcc-toolset-13-gdb/gdb-sw22395-constify-target_desc.patch

1154 lines
40 KiB
Diff
Raw Normal View History

From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
From: Keith Seitz <keiths@redhat.com>
Date: Fri, 2 Sep 2022 12:43:03 -0700
Subject: gdb-sw22395-constify-target_desc.patch
;; Constify target_desc to fix PPC ODR violations.
;; (Keith Seitz, build/22395)
cleanup: Add missing feature/ XML files to Makefile
This patch adds some missing .xml files to features/Makefile so that when the
directory's C files are regenerated, all files are appropriately remade.
This has demonstrated that there have been several "misses" in regenerating
files in this directory. Namely, arm-secext.c and sparc{32,64}-solaris.c. For
the former case, there was what essentially amounts to a typo regarding the
create feature function's name. In the later case, this file has missed at least
one important update in July, 2020, when allocate_target_description was
changed to return a unique pointer.
Those corrections are included.
Constify target_desc declarations
This patch changes various global target_desc declarations to const, thereby
correcting a prominent source of ODR violations in PowerPC-related target code.
The majority of files/changes are mechanical const-ifications accomplished by
regenerating the C files in features/.
This also required manually updating mips-linux-tdep.h, s390-linux-tdep.h,
nios2-tdep.h, s390-tdep.h, arch/ppc-linux-tdesc.h, arch/ppc-linux-common.c,
and rs6000-tdep.c.
Patch tested against the sourceware trybot, and fully regression tested against
our (Red Hat's) internal test infrastructure on Rawhide aarch64, s390x, x86_64,
and powerpcle.
With this patch, I can finally enable LTO in our GDB package builds. [Tested
with a rawhide scratch build containing this patch.]
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=22395
diff --git a/gdb/arch/ppc-linux-common.c b/gdb/arch/ppc-linux-common.c
--- a/gdb/arch/ppc-linux-common.c
+++ b/gdb/arch/ppc-linux-common.c
@@ -46,7 +46,7 @@ ppc_linux_has_isa205 (CORE_ADDR hwcap)
const struct target_desc *
ppc_linux_match_description (struct ppc_linux_features features)
{
- struct target_desc *tdesc = NULL;
+ const struct target_desc *tdesc = NULL;
if (features.wordsize == 8)
{
diff --git a/gdb/arch/ppc-linux-tdesc.h b/gdb/arch/ppc-linux-tdesc.h
--- a/gdb/arch/ppc-linux-tdesc.h
+++ b/gdb/arch/ppc-linux-tdesc.h
@@ -22,25 +22,25 @@
struct target_desc;
-extern struct target_desc *tdesc_powerpc_32l;
-extern struct target_desc *tdesc_powerpc_altivec32l;
-extern struct target_desc *tdesc_powerpc_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa205_32l;
-extern struct target_desc *tdesc_powerpc_isa205_altivec32l;
-extern struct target_desc *tdesc_powerpc_isa205_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa207_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa207_htm_vsx32l;
-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_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa205_64l;
-extern struct target_desc *tdesc_powerpc_isa205_altivec64l;
-extern struct target_desc *tdesc_powerpc_isa205_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa207_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa207_htm_vsx64l;
+extern const struct target_desc *tdesc_powerpc_32l;
+extern const struct target_desc *tdesc_powerpc_altivec32l;
+extern const struct target_desc *tdesc_powerpc_vsx32l;
+extern const struct target_desc *tdesc_powerpc_isa205_32l;
+extern const struct target_desc *tdesc_powerpc_isa205_altivec32l;
+extern const struct target_desc *tdesc_powerpc_isa205_vsx32l;
+extern const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l;
+extern const struct target_desc *tdesc_powerpc_isa207_vsx32l;
+extern const struct target_desc *tdesc_powerpc_isa207_htm_vsx32l;
+extern const struct target_desc *tdesc_powerpc_e500l;
+
+extern const struct target_desc *tdesc_powerpc_64l;
+extern const struct target_desc *tdesc_powerpc_altivec64l;
+extern const struct target_desc *tdesc_powerpc_vsx64l;
+extern const struct target_desc *tdesc_powerpc_isa205_64l;
+extern const struct target_desc *tdesc_powerpc_isa205_altivec64l;
+extern const struct target_desc *tdesc_powerpc_isa205_vsx64l;
+extern const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l;
+extern const struct target_desc *tdesc_powerpc_isa207_vsx64l;
+extern const struct target_desc *tdesc_powerpc_isa207_htm_vsx64l;
#endif /* ARCH_PPC_LINUX_TDESC_H */
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -74,6 +74,7 @@ mips-dsp-expedite = r29,pc
mips64-expedite = r29,pc
mips64-dsp-expedite = r29,pc
nios2-linux-expedite = sp,pc
+or1k-expedite = r1,npc
powerpc-expedite = r1,pc
s390-linux32-expedite = r14,r15,pswa
s390-linux32v1-expedite = r14,r15,pswa
@@ -108,6 +109,7 @@ XMLTOC = \
nds32.xml \
nios2.xml \
or1k.xml \
+ or1k-linux.xml \
rs6000/powerpc-32.xml \
rs6000/powerpc-32l.xml \
rs6000/powerpc-403.xml \
@@ -164,6 +166,8 @@ XMLTOC = \
s390x-vx-linux64.xml \
s390-gs-linux64.xml \
s390x-gs-linux64.xml \
+ sparc/sparc32-solaris.xml \
+ sparc/sparc64-solaris.xml \
z80.xml
TDESC_CFILES = $(patsubst %.xml,%.c,$(XMLTOC))
diff --git a/gdb/features/microblaze-with-stack-protect.c b/gdb/features/microblaze-with-stack-protect.c
--- a/gdb/features/microblaze-with-stack-protect.c
+++ b/gdb/features/microblaze-with-stack-protect.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_microblaze_with_stack_protect;
+const struct target_desc *tdesc_microblaze_with_stack_protect;
static void
initialize_tdesc_microblaze_with_stack_protect (void)
{
diff --git a/gdb/features/microblaze.c b/gdb/features/microblaze.c
--- a/gdb/features/microblaze.c
+++ b/gdb/features/microblaze.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_microblaze;
+const struct target_desc *tdesc_microblaze;
static void
initialize_tdesc_microblaze (void)
{
diff --git a/gdb/features/mips-dsp-linux.c b/gdb/features/mips-dsp-linux.c
--- a/gdb/features/mips-dsp-linux.c
+++ b/gdb/features/mips-dsp-linux.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_mips_dsp_linux;
+const struct target_desc *tdesc_mips_dsp_linux;
static void
initialize_tdesc_mips_dsp_linux (void)
{
diff --git a/gdb/features/mips-linux.c b/gdb/features/mips-linux.c
--- a/gdb/features/mips-linux.c
+++ b/gdb/features/mips-linux.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_mips_linux;
+const struct target_desc *tdesc_mips_linux;
static void
initialize_tdesc_mips_linux (void)
{
diff --git a/gdb/features/mips64-dsp-linux.c b/gdb/features/mips64-dsp-linux.c
--- a/gdb/features/mips64-dsp-linux.c
+++ b/gdb/features/mips64-dsp-linux.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_mips64_dsp_linux;
+const struct target_desc *tdesc_mips64_dsp_linux;
static void
initialize_tdesc_mips64_dsp_linux (void)
{
diff --git a/gdb/features/mips64-linux.c b/gdb/features/mips64-linux.c
--- a/gdb/features/mips64-linux.c
+++ b/gdb/features/mips64-linux.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_mips64_linux;
+const struct target_desc *tdesc_mips64_linux;
static void
initialize_tdesc_mips64_linux (void)
{
diff --git a/gdb/features/nds32.c b/gdb/features/nds32.c
--- a/gdb/features/nds32.c
+++ b/gdb/features/nds32.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_nds32;
+const struct target_desc *tdesc_nds32;
static void
initialize_tdesc_nds32 (void)
{
diff --git a/gdb/features/nios2.c b/gdb/features/nios2.c
--- a/gdb/features/nios2.c
+++ b/gdb/features/nios2.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_nios2;
+const struct target_desc *tdesc_nios2;
static void
initialize_tdesc_nios2 (void)
{
diff --git a/gdb/features/or1k-linux.c b/gdb/features/or1k-linux.c
--- a/gdb/features/or1k-linux.c
+++ b/gdb/features/or1k-linux.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_or1k_linux;
+const struct target_desc *tdesc_or1k_linux;
static void
initialize_tdesc_or1k_linux (void)
{
diff --git a/gdb/features/or1k.c b/gdb/features/or1k.c
--- a/gdb/features/or1k.c
+++ b/gdb/features/or1k.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_or1k;
+const struct target_desc *tdesc_or1k;
static void
initialize_tdesc_or1k (void)
{
diff --git a/gdb/features/rs6000/powerpc-32.c b/gdb/features/rs6000/powerpc-32.c
--- a/gdb/features/rs6000/powerpc-32.c
+++ b/gdb/features/rs6000/powerpc-32.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_32;
+const struct target_desc *tdesc_powerpc_32;
static void
initialize_tdesc_powerpc_32 (void)
{
diff --git a/gdb/features/rs6000/powerpc-32l.c b/gdb/features/rs6000/powerpc-32l.c
--- a/gdb/features/rs6000/powerpc-32l.c
+++ b/gdb/features/rs6000/powerpc-32l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_32l;
+const struct target_desc *tdesc_powerpc_32l;
static void
initialize_tdesc_powerpc_32l (void)
{
diff --git a/gdb/features/rs6000/powerpc-403.c b/gdb/features/rs6000/powerpc-403.c
--- a/gdb/features/rs6000/powerpc-403.c
+++ b/gdb/features/rs6000/powerpc-403.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_403;
+const struct target_desc *tdesc_powerpc_403;
static void
initialize_tdesc_powerpc_403 (void)
{
diff --git a/gdb/features/rs6000/powerpc-403gc.c b/gdb/features/rs6000/powerpc-403gc.c
--- a/gdb/features/rs6000/powerpc-403gc.c
+++ b/gdb/features/rs6000/powerpc-403gc.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_403gc;
+const struct target_desc *tdesc_powerpc_403gc;
static void
initialize_tdesc_powerpc_403gc (void)
{
diff --git a/gdb/features/rs6000/powerpc-405.c b/gdb/features/rs6000/powerpc-405.c
--- a/gdb/features/rs6000/powerpc-405.c
+++ b/gdb/features/rs6000/powerpc-405.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_405;
+const struct target_desc *tdesc_powerpc_405;
static void
initialize_tdesc_powerpc_405 (void)
{
diff --git a/gdb/features/rs6000/powerpc-505.c b/gdb/features/rs6000/powerpc-505.c
--- a/gdb/features/rs6000/powerpc-505.c
+++ b/gdb/features/rs6000/powerpc-505.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_505;
+const struct target_desc *tdesc_powerpc_505;
static void
initialize_tdesc_powerpc_505 (void)
{
diff --git a/gdb/features/rs6000/powerpc-601.c b/gdb/features/rs6000/powerpc-601.c
--- a/gdb/features/rs6000/powerpc-601.c
+++ b/gdb/features/rs6000/powerpc-601.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_601;
+const struct target_desc *tdesc_powerpc_601;
static void
initialize_tdesc_powerpc_601 (void)
{
diff --git a/gdb/features/rs6000/powerpc-602.c b/gdb/features/rs6000/powerpc-602.c
--- a/gdb/features/rs6000/powerpc-602.c
+++ b/gdb/features/rs6000/powerpc-602.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_602;
+const struct target_desc *tdesc_powerpc_602;
static void
initialize_tdesc_powerpc_602 (void)
{
diff --git a/gdb/features/rs6000/powerpc-603.c b/gdb/features/rs6000/powerpc-603.c
--- a/gdb/features/rs6000/powerpc-603.c
+++ b/gdb/features/rs6000/powerpc-603.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_603;
+const struct target_desc *tdesc_powerpc_603;
static void
initialize_tdesc_powerpc_603 (void)
{
diff --git a/gdb/features/rs6000/powerpc-604.c b/gdb/features/rs6000/powerpc-604.c
--- a/gdb/features/rs6000/powerpc-604.c
+++ b/gdb/features/rs6000/powerpc-604.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_604;
+const struct target_desc *tdesc_powerpc_604;
static void
initialize_tdesc_powerpc_604 (void)
{
diff --git a/gdb/features/rs6000/powerpc-64.c b/gdb/features/rs6000/powerpc-64.c
--- a/gdb/features/rs6000/powerpc-64.c
+++ b/gdb/features/rs6000/powerpc-64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_64;
+const struct target_desc *tdesc_powerpc_64;
static void
initialize_tdesc_powerpc_64 (void)
{
diff --git a/gdb/features/rs6000/powerpc-64l.c b/gdb/features/rs6000/powerpc-64l.c
--- a/gdb/features/rs6000/powerpc-64l.c
+++ b/gdb/features/rs6000/powerpc-64l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_64l;
+const struct target_desc *tdesc_powerpc_64l;
static void
initialize_tdesc_powerpc_64l (void)
{
diff --git a/gdb/features/rs6000/powerpc-7400.c b/gdb/features/rs6000/powerpc-7400.c
--- a/gdb/features/rs6000/powerpc-7400.c
+++ b/gdb/features/rs6000/powerpc-7400.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_7400;
+const struct target_desc *tdesc_powerpc_7400;
static void
initialize_tdesc_powerpc_7400 (void)
{
diff --git a/gdb/features/rs6000/powerpc-750.c b/gdb/features/rs6000/powerpc-750.c
--- a/gdb/features/rs6000/powerpc-750.c
+++ b/gdb/features/rs6000/powerpc-750.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_750;
+const struct target_desc *tdesc_powerpc_750;
static void
initialize_tdesc_powerpc_750 (void)
{
diff --git a/gdb/features/rs6000/powerpc-860.c b/gdb/features/rs6000/powerpc-860.c
--- a/gdb/features/rs6000/powerpc-860.c
+++ b/gdb/features/rs6000/powerpc-860.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_860;
+const struct target_desc *tdesc_powerpc_860;
static void
initialize_tdesc_powerpc_860 (void)
{
diff --git a/gdb/features/rs6000/powerpc-altivec32.c b/gdb/features/rs6000/powerpc-altivec32.c
--- a/gdb/features/rs6000/powerpc-altivec32.c
+++ b/gdb/features/rs6000/powerpc-altivec32.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_altivec32;
+const struct target_desc *tdesc_powerpc_altivec32;
static void
initialize_tdesc_powerpc_altivec32 (void)
{
diff --git a/gdb/features/rs6000/powerpc-altivec32l.c b/gdb/features/rs6000/powerpc-altivec32l.c
--- a/gdb/features/rs6000/powerpc-altivec32l.c
+++ b/gdb/features/rs6000/powerpc-altivec32l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_altivec32l;
+const struct target_desc *tdesc_powerpc_altivec32l;
static void
initialize_tdesc_powerpc_altivec32l (void)
{
diff --git a/gdb/features/rs6000/powerpc-altivec64.c b/gdb/features/rs6000/powerpc-altivec64.c
--- a/gdb/features/rs6000/powerpc-altivec64.c
+++ b/gdb/features/rs6000/powerpc-altivec64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_altivec64;
+const struct target_desc *tdesc_powerpc_altivec64;
static void
initialize_tdesc_powerpc_altivec64 (void)
{
diff --git a/gdb/features/rs6000/powerpc-altivec64l.c b/gdb/features/rs6000/powerpc-altivec64l.c
--- a/gdb/features/rs6000/powerpc-altivec64l.c
+++ b/gdb/features/rs6000/powerpc-altivec64l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_altivec64l;
+const struct target_desc *tdesc_powerpc_altivec64l;
static void
initialize_tdesc_powerpc_altivec64l (void)
{
diff --git a/gdb/features/rs6000/powerpc-e500.c b/gdb/features/rs6000/powerpc-e500.c
--- a/gdb/features/rs6000/powerpc-e500.c
+++ b/gdb/features/rs6000/powerpc-e500.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_e500;
+const struct target_desc *tdesc_powerpc_e500;
static void
initialize_tdesc_powerpc_e500 (void)
{
diff --git a/gdb/features/rs6000/powerpc-e500l.c b/gdb/features/rs6000/powerpc-e500l.c
--- a/gdb/features/rs6000/powerpc-e500l.c
+++ b/gdb/features/rs6000/powerpc-e500l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_e500l;
+const struct target_desc *tdesc_powerpc_e500l;
static void
initialize_tdesc_powerpc_e500l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa205-32l.c b/gdb/features/rs6000/powerpc-isa205-32l.c
--- a/gdb/features/rs6000/powerpc-isa205-32l.c
+++ b/gdb/features/rs6000/powerpc-isa205-32l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa205_32l;
+const struct target_desc *tdesc_powerpc_isa205_32l;
static void
initialize_tdesc_powerpc_isa205_32l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa205-64l.c b/gdb/features/rs6000/powerpc-isa205-64l.c
--- a/gdb/features/rs6000/powerpc-isa205-64l.c
+++ b/gdb/features/rs6000/powerpc-isa205-64l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa205_64l;
+const struct target_desc *tdesc_powerpc_isa205_64l;
static void
initialize_tdesc_powerpc_isa205_64l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec32l.c b/gdb/features/rs6000/powerpc-isa205-altivec32l.c
--- a/gdb/features/rs6000/powerpc-isa205-altivec32l.c
+++ b/gdb/features/rs6000/powerpc-isa205-altivec32l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa205_altivec32l;
+const struct target_desc *tdesc_powerpc_isa205_altivec32l;
static void
initialize_tdesc_powerpc_isa205_altivec32l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec64l.c b/gdb/features/rs6000/powerpc-isa205-altivec64l.c
--- a/gdb/features/rs6000/powerpc-isa205-altivec64l.c
+++ b/gdb/features/rs6000/powerpc-isa205-altivec64l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa205_altivec64l;
+const struct target_desc *tdesc_powerpc_isa205_altivec64l;
static void
initialize_tdesc_powerpc_isa205_altivec64l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c
--- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c
+++ b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l;
+const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l;
static void
initialize_tdesc_powerpc_isa205_ppr_dscr_vsx32l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c
--- a/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c
+++ b/gdb/features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l;
+const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l;
static void
initialize_tdesc_powerpc_isa205_ppr_dscr_vsx64l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-vsx32l.c
--- a/gdb/features/rs6000/powerpc-isa205-vsx32l.c
+++ b/gdb/features/rs6000/powerpc-isa205-vsx32l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa205_vsx32l;
+const struct target_desc *tdesc_powerpc_isa205_vsx32l;
static void
initialize_tdesc_powerpc_isa205_vsx32l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-vsx64l.c
--- a/gdb/features/rs6000/powerpc-isa205-vsx64l.c
+++ b/gdb/features/rs6000/powerpc-isa205-vsx64l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa205_vsx64l;
+const struct target_desc *tdesc_powerpc_isa205_vsx64l;
static void
initialize_tdesc_powerpc_isa205_vsx64l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c b/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c
--- a/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c
+++ b/gdb/features/rs6000/powerpc-isa207-htm-vsx32l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa207_htm_vsx32l;
+const struct target_desc *tdesc_powerpc_isa207_htm_vsx32l;
static void
initialize_tdesc_powerpc_isa207_htm_vsx32l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c b/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c
--- a/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c
+++ b/gdb/features/rs6000/powerpc-isa207-htm-vsx64l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa207_htm_vsx64l;
+const struct target_desc *tdesc_powerpc_isa207_htm_vsx64l;
static void
initialize_tdesc_powerpc_isa207_htm_vsx64l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa207-vsx32l.c b/gdb/features/rs6000/powerpc-isa207-vsx32l.c
--- a/gdb/features/rs6000/powerpc-isa207-vsx32l.c
+++ b/gdb/features/rs6000/powerpc-isa207-vsx32l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa207_vsx32l;
+const struct target_desc *tdesc_powerpc_isa207_vsx32l;
static void
initialize_tdesc_powerpc_isa207_vsx32l (void)
{
diff --git a/gdb/features/rs6000/powerpc-isa207-vsx64l.c b/gdb/features/rs6000/powerpc-isa207-vsx64l.c
--- a/gdb/features/rs6000/powerpc-isa207-vsx64l.c
+++ b/gdb/features/rs6000/powerpc-isa207-vsx64l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_isa207_vsx64l;
+const struct target_desc *tdesc_powerpc_isa207_vsx64l;
static void
initialize_tdesc_powerpc_isa207_vsx64l (void)
{
diff --git a/gdb/features/rs6000/powerpc-vsx32.c b/gdb/features/rs6000/powerpc-vsx32.c
--- a/gdb/features/rs6000/powerpc-vsx32.c
+++ b/gdb/features/rs6000/powerpc-vsx32.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_vsx32;
+const struct target_desc *tdesc_powerpc_vsx32;
static void
initialize_tdesc_powerpc_vsx32 (void)
{
diff --git a/gdb/features/rs6000/powerpc-vsx32l.c b/gdb/features/rs6000/powerpc-vsx32l.c
--- a/gdb/features/rs6000/powerpc-vsx32l.c
+++ b/gdb/features/rs6000/powerpc-vsx32l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_vsx32l;
+const struct target_desc *tdesc_powerpc_vsx32l;
static void
initialize_tdesc_powerpc_vsx32l (void)
{
diff --git a/gdb/features/rs6000/powerpc-vsx64.c b/gdb/features/rs6000/powerpc-vsx64.c
--- a/gdb/features/rs6000/powerpc-vsx64.c
+++ b/gdb/features/rs6000/powerpc-vsx64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_vsx64;
+const struct target_desc *tdesc_powerpc_vsx64;
static void
initialize_tdesc_powerpc_vsx64 (void)
{
diff --git a/gdb/features/rs6000/powerpc-vsx64l.c b/gdb/features/rs6000/powerpc-vsx64l.c
--- a/gdb/features/rs6000/powerpc-vsx64l.c
+++ b/gdb/features/rs6000/powerpc-vsx64l.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_powerpc_vsx64l;
+const struct target_desc *tdesc_powerpc_vsx64l;
static void
initialize_tdesc_powerpc_vsx64l (void)
{
diff --git a/gdb/features/rs6000/rs6000.c b/gdb/features/rs6000/rs6000.c
--- a/gdb/features/rs6000/rs6000.c
+++ b/gdb/features/rs6000/rs6000.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_rs6000;
+const struct target_desc *tdesc_rs6000;
static void
initialize_tdesc_rs6000 (void)
{
diff --git a/gdb/features/rx.c b/gdb/features/rx.c
--- a/gdb/features/rx.c
+++ b/gdb/features/rx.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_rx;
+const struct target_desc *tdesc_rx;
static void
initialize_tdesc_rx (void)
{
diff --git a/gdb/features/s390-gs-linux64.c b/gdb/features/s390-gs-linux64.c
--- a/gdb/features/s390-gs-linux64.c
+++ b/gdb/features/s390-gs-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_gs_linux64;
+const struct target_desc *tdesc_s390_gs_linux64;
static void
initialize_tdesc_s390_gs_linux64 (void)
{
diff --git a/gdb/features/s390-linux32.c b/gdb/features/s390-linux32.c
--- a/gdb/features/s390-linux32.c
+++ b/gdb/features/s390-linux32.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_linux32;
+const struct target_desc *tdesc_s390_linux32;
static void
initialize_tdesc_s390_linux32 (void)
{
diff --git a/gdb/features/s390-linux32v1.c b/gdb/features/s390-linux32v1.c
--- a/gdb/features/s390-linux32v1.c
+++ b/gdb/features/s390-linux32v1.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_linux32v1;
+const struct target_desc *tdesc_s390_linux32v1;
static void
initialize_tdesc_s390_linux32v1 (void)
{
diff --git a/gdb/features/s390-linux32v2.c b/gdb/features/s390-linux32v2.c
--- a/gdb/features/s390-linux32v2.c
+++ b/gdb/features/s390-linux32v2.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_linux32v2;
+const struct target_desc *tdesc_s390_linux32v2;
static void
initialize_tdesc_s390_linux32v2 (void)
{
diff --git a/gdb/features/s390-linux64.c b/gdb/features/s390-linux64.c
--- a/gdb/features/s390-linux64.c
+++ b/gdb/features/s390-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_linux64;
+const struct target_desc *tdesc_s390_linux64;
static void
initialize_tdesc_s390_linux64 (void)
{
diff --git a/gdb/features/s390-linux64v1.c b/gdb/features/s390-linux64v1.c
--- a/gdb/features/s390-linux64v1.c
+++ b/gdb/features/s390-linux64v1.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_linux64v1;
+const struct target_desc *tdesc_s390_linux64v1;
static void
initialize_tdesc_s390_linux64v1 (void)
{
diff --git a/gdb/features/s390-linux64v2.c b/gdb/features/s390-linux64v2.c
--- a/gdb/features/s390-linux64v2.c
+++ b/gdb/features/s390-linux64v2.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_linux64v2;
+const struct target_desc *tdesc_s390_linux64v2;
static void
initialize_tdesc_s390_linux64v2 (void)
{
diff --git a/gdb/features/s390-te-linux64.c b/gdb/features/s390-te-linux64.c
--- a/gdb/features/s390-te-linux64.c
+++ b/gdb/features/s390-te-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_te_linux64;
+const struct target_desc *tdesc_s390_te_linux64;
static void
initialize_tdesc_s390_te_linux64 (void)
{
diff --git a/gdb/features/s390-tevx-linux64.c b/gdb/features/s390-tevx-linux64.c
--- a/gdb/features/s390-tevx-linux64.c
+++ b/gdb/features/s390-tevx-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_tevx_linux64;
+const struct target_desc *tdesc_s390_tevx_linux64;
static void
initialize_tdesc_s390_tevx_linux64 (void)
{
diff --git a/gdb/features/s390-vx-linux64.c b/gdb/features/s390-vx-linux64.c
--- a/gdb/features/s390-vx-linux64.c
+++ b/gdb/features/s390-vx-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390_vx_linux64;
+const struct target_desc *tdesc_s390_vx_linux64;
static void
initialize_tdesc_s390_vx_linux64 (void)
{
diff --git a/gdb/features/s390x-gs-linux64.c b/gdb/features/s390x-gs-linux64.c
--- a/gdb/features/s390x-gs-linux64.c
+++ b/gdb/features/s390x-gs-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390x_gs_linux64;
+const struct target_desc *tdesc_s390x_gs_linux64;
static void
initialize_tdesc_s390x_gs_linux64 (void)
{
diff --git a/gdb/features/s390x-linux64.c b/gdb/features/s390x-linux64.c
--- a/gdb/features/s390x-linux64.c
+++ b/gdb/features/s390x-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390x_linux64;
+const struct target_desc *tdesc_s390x_linux64;
static void
initialize_tdesc_s390x_linux64 (void)
{
diff --git a/gdb/features/s390x-linux64v1.c b/gdb/features/s390x-linux64v1.c
--- a/gdb/features/s390x-linux64v1.c
+++ b/gdb/features/s390x-linux64v1.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390x_linux64v1;
+const struct target_desc *tdesc_s390x_linux64v1;
static void
initialize_tdesc_s390x_linux64v1 (void)
{
diff --git a/gdb/features/s390x-linux64v2.c b/gdb/features/s390x-linux64v2.c
--- a/gdb/features/s390x-linux64v2.c
+++ b/gdb/features/s390x-linux64v2.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390x_linux64v2;
+const struct target_desc *tdesc_s390x_linux64v2;
static void
initialize_tdesc_s390x_linux64v2 (void)
{
diff --git a/gdb/features/s390x-te-linux64.c b/gdb/features/s390x-te-linux64.c
--- a/gdb/features/s390x-te-linux64.c
+++ b/gdb/features/s390x-te-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390x_te_linux64;
+const struct target_desc *tdesc_s390x_te_linux64;
static void
initialize_tdesc_s390x_te_linux64 (void)
{
diff --git a/gdb/features/s390x-tevx-linux64.c b/gdb/features/s390x-tevx-linux64.c
--- a/gdb/features/s390x-tevx-linux64.c
+++ b/gdb/features/s390x-tevx-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390x_tevx_linux64;
+const struct target_desc *tdesc_s390x_tevx_linux64;
static void
initialize_tdesc_s390x_tevx_linux64 (void)
{
diff --git a/gdb/features/s390x-vx-linux64.c b/gdb/features/s390x-vx-linux64.c
--- a/gdb/features/s390x-vx-linux64.c
+++ b/gdb/features/s390x-vx-linux64.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_s390x_vx_linux64;
+const struct target_desc *tdesc_s390x_vx_linux64;
static void
initialize_tdesc_s390x_vx_linux64 (void)
{
diff --git a/gdb/features/sparc/sparc32-solaris.c b/gdb/features/sparc/sparc32-solaris.c
--- a/gdb/features/sparc/sparc32-solaris.c
+++ b/gdb/features/sparc/sparc32-solaris.c
@@ -5,18 +5,18 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_sparc32_solaris;
+const struct target_desc *tdesc_sparc32_solaris;
static void
initialize_tdesc_sparc32_solaris (void)
{
- struct target_desc *result = allocate_target_description ();
- struct tdesc_feature *feature;
+ target_desc_up result = allocate_target_description ();
+ set_tdesc_architecture (result.get (), bfd_scan_arch ("sparc"));
- set_tdesc_architecture (result, bfd_scan_arch ("sparc"));
+ set_tdesc_osabi (result.get (), osabi_from_tdesc_string ("Solaris"));
- set_tdesc_osabi (result, osabi_from_tdesc_string ("Solaris"));
+ struct tdesc_feature *feature;
- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cpu");
+ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.cpu");
tdesc_create_reg (feature, "g0", 0, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "g1", 1, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "g2", 2, 1, NULL, 32, "uint32");
@@ -50,7 +50,7 @@ initialize_tdesc_sparc32_solaris (void)
tdesc_create_reg (feature, "fp", 30, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "i7", 31, 1, NULL, 32, "uint32");
- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cp0");
+ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.cp0");
tdesc_create_reg (feature, "y", 64, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "psr", 65, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "wim", 66, 1, NULL, 32, "uint32");
@@ -60,7 +60,7 @@ initialize_tdesc_sparc32_solaris (void)
tdesc_create_reg (feature, "fsr", 70, 1, NULL, 32, "uint32");
tdesc_create_reg (feature, "csr", 71, 1, NULL, 32, "uint32");
- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.fpu");
+ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.fpu");
tdesc_create_reg (feature, "f0", 32, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f1", 33, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f2", 34, 1, NULL, 32, "ieee_single");
@@ -94,5 +94,5 @@ initialize_tdesc_sparc32_solaris (void)
tdesc_create_reg (feature, "f30", 62, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f31", 63, 1, NULL, 32, "ieee_single");
- tdesc_sparc_solaris = result;
+ tdesc_sparc32_solaris = result.release ();
}
diff --git a/gdb/features/sparc/sparc64-solaris.c b/gdb/features/sparc/sparc64-solaris.c
--- a/gdb/features/sparc/sparc64-solaris.c
+++ b/gdb/features/sparc/sparc64-solaris.c
@@ -5,18 +5,18 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_sparc64_solaris;
+const struct target_desc *tdesc_sparc64_solaris;
static void
initialize_tdesc_sparc64_solaris (void)
{
- struct target_desc *result = allocate_target_description ();
- struct tdesc_feature *feature;
+ target_desc_up result = allocate_target_description ();
+ set_tdesc_architecture (result.get (), bfd_scan_arch ("sparc:v9"));
- set_tdesc_architecture (result, bfd_scan_arch ("sparc"));
+ set_tdesc_osabi (result.get (), osabi_from_tdesc_string ("Solaris"));
- set_tdesc_osabi (result, osabi_from_tdesc_string ("Solaris"));
+ struct tdesc_feature *feature;
- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cpu");
+ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.cpu");
tdesc_create_reg (feature, "g0", 0, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "g1", 1, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "g2", 2, 1, NULL, 64, "uint64");
@@ -47,18 +47,18 @@ initialize_tdesc_sparc64_solaris (void)
tdesc_create_reg (feature, "i3", 27, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "i4", 28, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "i5", 29, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "fp", 30, 1, NULL, 32, "uint64");
+ tdesc_create_reg (feature, "fp", 30, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "i7", 31, 1, NULL, 64, "uint64");
- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.cp0");
+ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.cp0");
tdesc_create_reg (feature, "pc", 80, 1, NULL, 64, "code_ptr");
tdesc_create_reg (feature, "npc", 81, 1, NULL, 64, "code_ptr");
tdesc_create_reg (feature, "state", 82, 1, NULL, 64, "uint64");
- tdesc_create_reg (feature, "fsr", 83, 1, NULL, 32, "ieee_single");
- tdesc_create_reg (feature, "fprs", 84, 1, NULL, 32, "ieee_single");
+ tdesc_create_reg (feature, "fsr", 83, 1, NULL, 64, "uint64");
+ tdesc_create_reg (feature, "fprs", 84, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "y", 85, 1, NULL, 64, "uint64");
- feature = tdesc_create_feature (result, "org.gnu.gdb.sparc.fpu");
+ feature = tdesc_create_feature (result.get (), "org.gnu.gdb.sparc.fpu");
tdesc_create_reg (feature, "f0", 32, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f1", 33, 1, NULL, 32, "ieee_single");
tdesc_create_reg (feature, "f2", 34, 1, NULL, 32, "ieee_single");
@@ -108,5 +108,5 @@ initialize_tdesc_sparc64_solaris (void)
tdesc_create_reg (feature, "f60", 78, 1, NULL, 64, "ieee_double");
tdesc_create_reg (feature, "f62", 79, 1, NULL, 64, "ieee_double");
- tdesc_sparc64_solaris = result;
+ tdesc_sparc64_solaris = result.release ();
}
diff --git a/gdb/features/z80.c b/gdb/features/z80.c
--- a/gdb/features/z80.c
+++ b/gdb/features/z80.c
@@ -5,7 +5,7 @@
#include "osabi.h"
#include "target-descriptions.h"
-struct target_desc *tdesc_z80;
+const struct target_desc *tdesc_z80;
static void
initialize_tdesc_z80 (void)
{
diff --git a/gdb/mips-linux-tdep.h b/gdb/mips-linux-tdep.h
--- a/gdb/mips-linux-tdep.h
+++ b/gdb/mips-linux-tdep.h
@@ -108,9 +108,9 @@ enum {
int mips_linux_restart_reg_p (struct gdbarch *gdbarch);
/* Target descriptions. */
-extern struct target_desc *tdesc_mips_linux;
-extern struct target_desc *tdesc_mips64_linux;
-extern struct target_desc *tdesc_mips_dsp_linux;
-extern struct target_desc *tdesc_mips64_dsp_linux;
+extern const struct target_desc *tdesc_mips_linux;
+extern const struct target_desc *tdesc_mips64_linux;
+extern const struct target_desc *tdesc_mips_dsp_linux;
+extern const struct target_desc *tdesc_mips64_dsp_linux;
#endif /* MIPS_LINUX_TDEP_H */
diff --git a/gdb/nios2-tdep.h b/gdb/nios2-tdep.h
--- a/gdb/nios2-tdep.h
+++ b/gdb/nios2-tdep.h
@@ -84,7 +84,7 @@ struct nios2_gdbarch_tdep : gdbarch_tdep
int jb_pc = 0;
};
-extern struct target_desc *tdesc_nios2_linux;
-extern struct target_desc *tdesc_nios2;
+extern const struct target_desc *tdesc_nios2_linux;
+extern const struct target_desc *tdesc_nios2;
#endif /* NIOS2_TDEP_H */
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -3466,7 +3466,7 @@ struct ppc_variant
unsigned long mach;
/* Target description for this variant. */
- struct target_desc **tdesc;
+ const struct target_desc **tdesc;
};
static struct ppc_variant variants[] =
diff --git a/gdb/s390-linux-tdep.h b/gdb/s390-linux-tdep.h
--- a/gdb/s390-linux-tdep.h
+++ b/gdb/s390-linux-tdep.h
@@ -48,20 +48,20 @@ extern const struct regset s390_gs_regset;
extern const struct regset s390_gsbc_regset;
/* GNU/Linux target descriptions. */
-extern struct target_desc *tdesc_s390_linux32v1;
-extern struct target_desc *tdesc_s390_linux32v2;
-extern struct target_desc *tdesc_s390_linux64;
-extern struct target_desc *tdesc_s390_linux64v1;
-extern struct target_desc *tdesc_s390_linux64v2;
-extern struct target_desc *tdesc_s390_te_linux64;
-extern struct target_desc *tdesc_s390_vx_linux64;
-extern struct target_desc *tdesc_s390_tevx_linux64;
-extern struct target_desc *tdesc_s390_gs_linux64;
-extern struct target_desc *tdesc_s390x_linux64v1;
-extern struct target_desc *tdesc_s390x_linux64v2;
-extern struct target_desc *tdesc_s390x_te_linux64;
-extern struct target_desc *tdesc_s390x_vx_linux64;
-extern struct target_desc *tdesc_s390x_tevx_linux64;
-extern struct target_desc *tdesc_s390x_gs_linux64;
+extern const struct target_desc *tdesc_s390_linux32v1;
+extern const struct target_desc *tdesc_s390_linux32v2;
+extern const struct target_desc *tdesc_s390_linux64;
+extern const struct target_desc *tdesc_s390_linux64v1;
+extern const struct target_desc *tdesc_s390_linux64v2;
+extern const struct target_desc *tdesc_s390_te_linux64;
+extern const struct target_desc *tdesc_s390_vx_linux64;
+extern const struct target_desc *tdesc_s390_tevx_linux64;
+extern const struct target_desc *tdesc_s390_gs_linux64;
+extern const struct target_desc *tdesc_s390x_linux64v1;
+extern const struct target_desc *tdesc_s390x_linux64v2;
+extern const struct target_desc *tdesc_s390x_te_linux64;
+extern const struct target_desc *tdesc_s390x_vx_linux64;
+extern const struct target_desc *tdesc_s390x_tevx_linux64;
+extern const struct target_desc *tdesc_s390x_gs_linux64;
#endif /* S390_LINUX_TDEP_H */
diff --git a/gdb/s390-tdep.h b/gdb/s390-tdep.h
--- a/gdb/s390-tdep.h
+++ b/gdb/s390-tdep.h
@@ -317,7 +317,7 @@ extern struct value *s390_trad_frame_prev_register
(struct frame_info *this_frame, struct trad_frame_saved_reg saved_regs[],
int regnum);
-extern struct target_desc *tdesc_s390_linux32;
-extern struct target_desc *tdesc_s390x_linux64;
+extern const struct target_desc *tdesc_s390_linux32;
+extern const struct target_desc *tdesc_s390x_linux64;
#endif /* S390_TDEP_H */
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -1367,7 +1367,7 @@ class print_c_tdesc : public tdesc_element_visitor
printf_filtered ("#include \"target-descriptions.h\"\n");
printf_filtered ("\n");
- printf_filtered ("struct target_desc *tdesc_%s;\n", m_function);
+ printf_filtered ("const struct target_desc *tdesc_%s;\n", m_function);
printf_filtered ("static void\n");
printf_filtered ("initialize_tdesc_%s (void)\n", m_function);
printf_filtered ("{\n");