import gdb-8.2-11.el8
This commit is contained in:
parent
a3d4520207
commit
db1ae43faa
@ -575,7 +575,98 @@ Patch140: gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-4of5.patch
|
||||
# Keith Seitz, RHBZ#1560010.
|
||||
Patch141: gdb-rhbz1560010-fix-assertion-symbol-language-dict-language-5of5.patch
|
||||
|
||||
# Fix 'gdb suggests using "dnf debuginfo-install'
|
||||
# Keith Seitz, RHBZ 1666249
|
||||
Patch142: gdb-rhbz1666249-suggest-yum-instead-of-dnf.patch
|
||||
|
||||
# Fix 'libiberty: Memory leak in demangle_template function resulting in a denial of service"
|
||||
# Simon Marchi, RH BZ 1668635
|
||||
Patch143: gdb-rhbz1668635-libiberty-demangle_template-memleak.patch
|
||||
|
||||
# Fix 'gdb fails to read zN registers from corefile with aarch64 SVE'
|
||||
# Alan Hayward, RH BZ 1669953
|
||||
Patch142: gdb-rhbz1669953-aarch64-sve-binutils.patch
|
||||
Patch144: gdb-rhbz1669953-aarch64-sve-binutils.patch
|
||||
|
||||
# Fix remote.c build failure
|
||||
# Szabolcs Nagy, RH BZ 1187581
|
||||
Patch145: gdb-rhbz1187581-power8-regs-not-in-8.2-01of15.patch
|
||||
|
||||
# Add grok/write functions for new ppc core note sections
|
||||
# Edjunior Barbosa Machado, RH BZ 1187581
|
||||
Patch146: gdb-rhbz1187581-power8-regs-not-in-8.2-02of15.patch
|
||||
|
||||
# Zero-initialize linux note sections
|
||||
# Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch147: gdb-rhbz1187581-power8-regs-not-in-8.2-03of15.patch
|
||||
|
||||
# [PowerPC] Don't zero-initialize vector register buffers
|
||||
# Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch148: gdb-rhbz1187581-power8-regs-not-in-8.2-04of15.patch
|
||||
|
||||
# Add decfloat registers to float reggroup
|
||||
# Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch149: gdb-rhbz1187581-power8-regs-not-in-8.2-05of15.patch
|
||||
|
||||
# [PowerPC] Remove rs6000_pseudo_register_reggroup_p
|
||||
# Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch150: gdb-rhbz1187581-power8-regs-not-in-8.2-06of15.patch
|
||||
|
||||
# [PowerPC] Fix two if statements in gdb/ppc-linux-nat.c
|
||||
# Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch151: gdb-rhbz1187581-power8-regs-not-in-8.2-07of15.patch
|
||||
|
||||
# [PowerPC] Fix indentation in arch/ppc-linux-common.c
|
||||
# Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch152: gdb-rhbz1187581-power8-regs-not-in-8.2-08of15.patch
|
||||
|
||||
# [PowerPC] Refactor have_ initializers in rs6000-tdep.c
|
||||
# Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch153: gdb-rhbz1187581-power8-regs-not-in-8.2-09of15.patch
|
||||
|
||||
# [PowerPC] Add support for PPR and DSCR
|
||||
# Edjunior Barbosa Machado and Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch154: gdb-rhbz1187581-power8-regs-not-in-8.2-10of15.patch
|
||||
|
||||
# [PowerPC] Add support for TAR
|
||||
# Edjunior Barbosa Machado and Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch155: gdb-rhbz1187581-power8-regs-not-in-8.2-11of15.patch
|
||||
|
||||
# [PowerPC] Add support for EBB and PMU registers
|
||||
# Edjunior Barbosa Machado and Pedro Franco de Carvalho, RH BZ 1187581m
|
||||
Patch156: gdb-rhbz1187581-power8-regs-not-in-8.2-12of15.patch
|
||||
|
||||
# [PowerPC] Reject tdescs with VSX and no FPU or Altivec
|
||||
# Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch157: gdb-rhbz1187581-power8-regs-not-in-8.2-13of15.patch
|
||||
|
||||
# [PowerPC] Add support for HTM registers
|
||||
# Edjunior Barbosa Machado and Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch158: gdb-rhbz1187581-power8-regs-not-in-8.2-14of15.patch
|
||||
|
||||
# [PowerPC] Document requirements for VSX feature
|
||||
# Pedro Franco de Carvalho, RH BZ 1187581
|
||||
Patch159: gdb-rhbz1187581-power8-regs-not-in-8.2-15of15.patch
|
||||
|
||||
# "Fix" segfault that happens on parse_macro_definition because
|
||||
# debugedit corrupts the .debug_macro section.
|
||||
# Sergio Durigan Junior, RH BZ 1708192.
|
||||
Patch160: gdb-rhbz1708192-parse_macro_definition-crash.patch
|
||||
|
||||
# Prevent buffer overflow with sections with invalid sizes.
|
||||
# Keith Seitz, RH BZ 1740299.
|
||||
Patch161: gdb-rhbz1742099-reject-sections-with-invalid-sizes.patch
|
||||
|
||||
# Fix 'GDB needs s390x arch13 binutils patches'
|
||||
# RHBZ 1768593, Andreas Krebbel
|
||||
# This patch contains only the opcodes change.
|
||||
Patch162: gdb-rhbz1768593-s390x-arch13-01.patch
|
||||
|
||||
# Fix 'GDB needs s390x arch13 binutils patches'
|
||||
# RHBZ 1768593, Andreas Krebbel
|
||||
# This patch contains only the opcodes and include changes.
|
||||
Patch163: gdb-rhbz1768593-s390x-arch13-02.patch
|
||||
|
||||
# Fix 'GDB needs s390x arch13 binutils patches'
|
||||
# RHBZ 1768593, Andreas Krebbel
|
||||
Patch164: gdb-rhbz1768593-s390x-arch13-03.patch
|
||||
|
||||
|
@ -139,4 +139,26 @@
|
||||
%patch139 -p1
|
||||
%patch140 -p1
|
||||
%patch141 -p1
|
||||
%patch142 -p1
|
||||
%patch142 -p1
|
||||
%patch143 -p1
|
||||
%patch144 -p1
|
||||
%patch145 -p1
|
||||
%patch146 -p1
|
||||
%patch147 -p1
|
||||
%patch148 -p1
|
||||
%patch149 -p1
|
||||
%patch150 -p1
|
||||
%patch151 -p1
|
||||
%patch152 -p1
|
||||
%patch153 -p1
|
||||
%patch154 -p1
|
||||
%patch155 -p1
|
||||
%patch156 -p1
|
||||
%patch157 -p1
|
||||
%patch158 -p1
|
||||
%patch159 -p1
|
||||
%patch160 -p1
|
||||
%patch161 -p1
|
||||
%patch162 -p1
|
||||
%patch163 -p1
|
||||
%patch164 -p1
|
||||
|
35
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-01of15.patch
Normal file
35
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-01of15.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:12 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-01of15.patch
|
||||
|
||||
;; Fix remote.c build failure
|
||||
;; Szabolcs Nagy, RH BZ 1187581
|
||||
|
||||
Fix gdb/remote.c build failure
|
||||
|
||||
Add const qualifier to fix
|
||||
|
||||
/S/gdb/common/gdb_locale.h:35:27: error: deprecated conversion from string c
|
||||
# define _(String) (String)
|
||||
^
|
||||
/S/gdb/remote.c:12844:19: note: in expansion of macro '_'
|
||||
char *err_msg = _("Tracepoint packet too large for target.");
|
||||
^
|
||||
gdb/ChangeLog:
|
||||
|
||||
* remote.c (remote_target::download_tracepoint): Change char* to
|
||||
const char*.
|
||||
|
||||
diff --git a/gdb/remote.c b/gdb/remote.c
|
||||
--- a/gdb/remote.c
|
||||
+++ b/gdb/remote.c
|
||||
@@ -12808,7 +12808,7 @@ remote_target::download_tracepoint (struct bp_location *loc)
|
||||
struct tracepoint *t = (struct tracepoint *) b;
|
||||
struct remote_state *rs = get_remote_state ();
|
||||
int ret;
|
||||
- char *err_msg = _("Tracepoint packet too large for target.");
|
||||
+ const char *err_msg = _("Tracepoint packet too large for target.");
|
||||
size_t size_left;
|
||||
|
||||
/* We use a buffer other than rs->buf because we'll build strings
|
479
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-02of15.patch
Normal file
479
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-02of15.patch
Normal file
@ -0,0 +1,479 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:12 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-02of15.patch
|
||||
|
||||
;; Add grok/write functions for new ppc core note sections
|
||||
;; Edjunior Barbosa Machado, RH BZ 1187581
|
||||
|
||||
Add grok/write functions for new ppc core note sections
|
||||
|
||||
This patch adds functions for grokking and writing more register core
|
||||
note sections (NT_PPC_TAR, NT_PPC_PPR, NT_PPC_DSCR, NT_PPC_EBB,
|
||||
NT_PPC_PMU, NT_PPC_TM_CGPR, NT_PPC_TM_CFPR, NT_PPC_TM_CVMX,
|
||||
NT_PPC_TM_CVSX, NT_PPC_TM_SPR, NT_PPC_TM_CTAR, NT_PPC_TM_CPPR,
|
||||
NT_PPC_TM_CDSCR).
|
||||
|
||||
2018-07-16 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
|
||||
|
||||
bfd/
|
||||
* elf-bfd.h (elfcore_write_ppc_tar): Add prototype.
|
||||
(elfcore_write_ppc_ppr): Likewise.
|
||||
(elfcore_write_ppc_dscr): Likewise.
|
||||
(elfcore_write_ppc_ebb): Likewise.
|
||||
(elfcore_write_ppc_pmu): Likewise.
|
||||
(elfcore_write_ppc_tm_cgpr): Likewise.
|
||||
(elfcore_write_ppc_tm_cfpr): Likewise.
|
||||
(elfcore_write_ppc_tm_cvmx): Likewise.
|
||||
(elfcore_write_ppc_tm_cvsx): Likewise.
|
||||
(elfcore_write_ppc_tm_spr): Likewise.
|
||||
(elfcore_write_ppc_tm_ctar): Likewise.
|
||||
(elfcore_write_ppc_tm_cppr): Likewise.
|
||||
(elfcore_write_ppc_tm_cdscr): Likewise.
|
||||
* elf.c (elfcore_write_ppc_tar): New function.
|
||||
(elfcore_write_ppc_ppr): Likewise.
|
||||
(elfcore_write_ppc_dscr): Likewise.
|
||||
(elfcore_write_ppc_ebb): Likewise.
|
||||
(elfcore_write_ppc_pmu): Likewise.
|
||||
(elfcore_write_ppc_tm_cgpr): Likewise.
|
||||
(elfcore_write_ppc_tm_cfpr): Likewise.
|
||||
(elfcore_write_ppc_tm_cvmx): Likewise.
|
||||
(elfcore_write_ppc_tm_cvsx): Likewise.
|
||||
(elfcore_write_ppc_tm_spr): Likewise.
|
||||
(elfcore_write_ppc_tm_ctar): Likewise.
|
||||
(elfcore_write_ppc_tm_cppr): Likewise.
|
||||
(elfcore_write_ppc_tm_cdscr): Likewise.
|
||||
(elfcore_write_register_note): Call them.
|
||||
(elfcore_grok_ppc_tar): New function.
|
||||
(elfcore_grok_ppc_ppr): Likewise.
|
||||
(elfcore_grok_ppc_dscr): Likewise.
|
||||
(elfcore_grok_ppc_ebb): Likewise.
|
||||
(elfcore_grok_ppc_pmu): Likewise.
|
||||
(elfcore_grok_ppc_tm_cgpr): Likewise.
|
||||
(elfcore_grok_ppc_tm_cfpr): Likewise.
|
||||
(elfcore_grok_ppc_tm_cvmx): Likewise.
|
||||
(elfcore_grok_ppc_tm_cvsx): Likewise.
|
||||
(elfcore_grok_ppc_tm_spr): Likewise.
|
||||
(elfcore_grok_ppc_tm_ctar): Likewise.
|
||||
(elfcore_grok_ppc_tm_cppr): Likewise.
|
||||
(elfcore_grok_ppc_tm_cdscr): Likewise.
|
||||
(elfcore_grok_note): Call them.
|
||||
|
||||
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
|
||||
--- a/bfd/elf-bfd.h
|
||||
+++ b/bfd/elf-bfd.h
|
||||
@@ -2569,6 +2569,32 @@ extern char *elfcore_write_ppc_vmx
|
||||
(bfd *, char *, int *, const void *, int);
|
||||
extern char *elfcore_write_ppc_vsx
|
||||
(bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_tar
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_ppr
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_dscr
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_ebb
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_pmu
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_tm_cgpr
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_tm_cfpr
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_tm_cvmx
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_tm_cvsx
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_tm_spr
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_tm_ctar
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_tm_cppr
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
+extern char *elfcore_write_ppc_tm_cdscr
|
||||
+ (bfd *, char *, int *, const void *, int);
|
||||
extern char *elfcore_write_s390_timer
|
||||
(bfd *, char *, int *, const void *, int);
|
||||
extern char *elfcore_write_s390_todcmp
|
||||
diff --git a/bfd/elf.c b/bfd/elf.c
|
||||
--- a/bfd/elf.c
|
||||
+++ b/bfd/elf.c
|
||||
@@ -9238,6 +9238,84 @@ elfcore_grok_ppc_vsx (bfd *abfd, Elf_Internal_Note *note)
|
||||
return elfcore_make_note_pseudosection (abfd, ".reg-ppc-vsx", note);
|
||||
}
|
||||
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_tar (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tar", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_ppr (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-ppr", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_dscr (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-dscr", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_ebb (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-ebb", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_pmu (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-pmu", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_tm_cgpr (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cgpr", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_tm_cfpr (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cfpr", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_tm_cvmx (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cvmx", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_tm_cvsx (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cvsx", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_tm_spr (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-spr", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_tm_ctar (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-ctar", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_tm_cppr (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cppr", note);
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elfcore_grok_ppc_tm_cdscr (bfd *abfd, Elf_Internal_Note *note)
|
||||
+{
|
||||
+ return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cdscr", note);
|
||||
+}
|
||||
+
|
||||
static bfd_boolean
|
||||
elfcore_grok_s390_high_gprs (bfd *abfd, Elf_Internal_Note *note)
|
||||
{
|
||||
@@ -9723,6 +9801,97 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note)
|
||||
else
|
||||
return TRUE;
|
||||
|
||||
+ case NT_PPC_TAR:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_tar (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_PPR:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_ppr (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_DSCR:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_dscr (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_EBB:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_ebb (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_PMU:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_pmu (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_TM_CGPR:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_tm_cgpr (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_TM_CFPR:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_tm_cfpr (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_TM_CVMX:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_tm_cvmx (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_TM_CVSX:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_tm_cvsx (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_TM_SPR:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_tm_spr (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_TM_CTAR:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_tm_ctar (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_TM_CPPR:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_tm_cppr (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
+ case NT_PPC_TM_CDSCR:
|
||||
+ if (note->namesz == 6
|
||||
+ && strcmp (note->namedata, "LINUX") == 0)
|
||||
+ return elfcore_grok_ppc_tm_cdscr (abfd, note);
|
||||
+ else
|
||||
+ return TRUE;
|
||||
+
|
||||
case NT_S390_HIGH_GPRS:
|
||||
if (note->namesz == 6
|
||||
&& strcmp (note->namedata, "LINUX") == 0)
|
||||
@@ -10830,6 +10999,162 @@ elfcore_write_ppc_vsx (bfd *abfd,
|
||||
note_name, NT_PPC_VSX, ppc_vsx, size);
|
||||
}
|
||||
|
||||
+char *
|
||||
+elfcore_write_ppc_tar (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_tar,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_TAR, ppc_tar, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_ppr (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_ppr,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_PPR, ppc_ppr, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_dscr (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_dscr,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_DSCR, ppc_dscr, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_ebb (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_ebb,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_EBB, ppc_ebb, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_pmu (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_pmu,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_PMU, ppc_pmu, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_tm_cgpr (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_tm_cgpr,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_TM_CGPR, ppc_tm_cgpr, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_tm_cfpr (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_tm_cfpr,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_TM_CFPR, ppc_tm_cfpr, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_tm_cvmx (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_tm_cvmx,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_TM_CVMX, ppc_tm_cvmx, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_tm_cvsx (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_tm_cvsx,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_TM_CVSX, ppc_tm_cvsx, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_tm_spr (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_tm_spr,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_TM_SPR, ppc_tm_spr, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_tm_ctar (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_tm_ctar,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_TM_CTAR, ppc_tm_ctar, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_tm_cppr (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_tm_cppr,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_TM_CPPR, ppc_tm_cppr, size);
|
||||
+}
|
||||
+
|
||||
+char *
|
||||
+elfcore_write_ppc_tm_cdscr (bfd *abfd,
|
||||
+ char *buf,
|
||||
+ int *bufsiz,
|
||||
+ const void *ppc_tm_cdscr,
|
||||
+ int size)
|
||||
+{
|
||||
+ char *note_name = "LINUX";
|
||||
+ return elfcore_write_note (abfd, buf, bufsiz,
|
||||
+ note_name, NT_PPC_TM_CDSCR, ppc_tm_cdscr, size);
|
||||
+}
|
||||
+
|
||||
static char *
|
||||
elfcore_write_s390_high_gprs (bfd *abfd,
|
||||
char *buf,
|
||||
@@ -11070,6 +11395,32 @@ elfcore_write_register_note (bfd *abfd,
|
||||
return elfcore_write_ppc_vmx (abfd, buf, bufsiz, data, size);
|
||||
if (strcmp (section, ".reg-ppc-vsx") == 0)
|
||||
return elfcore_write_ppc_vsx (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-tar") == 0)
|
||||
+ return elfcore_write_ppc_tar (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-ppr") == 0)
|
||||
+ return elfcore_write_ppc_ppr (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-dscr") == 0)
|
||||
+ return elfcore_write_ppc_dscr (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-ebb") == 0)
|
||||
+ return elfcore_write_ppc_ebb (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-pmu") == 0)
|
||||
+ return elfcore_write_ppc_pmu (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-tm-cgpr") == 0)
|
||||
+ return elfcore_write_ppc_tm_cgpr (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-tm-cfpr") == 0)
|
||||
+ return elfcore_write_ppc_tm_cfpr (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-tm-cvmx") == 0)
|
||||
+ return elfcore_write_ppc_tm_cvmx (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-tm-cvsx") == 0)
|
||||
+ return elfcore_write_ppc_tm_cvsx (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-tm-spr") == 0)
|
||||
+ return elfcore_write_ppc_tm_spr (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-tm-ctar") == 0)
|
||||
+ return elfcore_write_ppc_tm_ctar (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-tm-cppr") == 0)
|
||||
+ return elfcore_write_ppc_tm_cppr (abfd, buf, bufsiz, data, size);
|
||||
+ if (strcmp (section, ".reg-ppc-tm-cdscr") == 0)
|
||||
+ return elfcore_write_ppc_tm_cdscr (abfd, buf, bufsiz, data, size);
|
||||
if (strcmp (section, ".reg-s390-high-gprs") == 0)
|
||||
return elfcore_write_s390_high_gprs (abfd, buf, bufsiz, data, size);
|
||||
if (strcmp (section, ".reg-s390-timer") == 0)
|
61
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-03of15.patch
Normal file
61
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-03of15.patch
Normal file
@ -0,0 +1,61 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:13 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-03of15.patch
|
||||
|
||||
;; Zero-initialize linux note sections
|
||||
;; Pedro Franco de Carvalho, RH BZ 1187581
|
||||
|
||||
Zero-initialize linux note sections
|
||||
|
||||
This patches changes linux-tdep.c so that the buffer used to write
|
||||
note sections when generating a core file is zero-initialized. This
|
||||
way, bytes that are not collected won't contain random
|
||||
data (e.g. padding bytes).
|
||||
|
||||
gdb/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* linux-tdep.c (linux_collect_regset_section_cb): Use
|
||||
std::vector<gdb_byte> instead of char * and malloc for buf.
|
||||
Remove xfree.
|
||||
|
||||
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
|
||||
--- a/gdb/linux-tdep.c
|
||||
+++ b/gdb/linux-tdep.c
|
||||
@@ -1584,7 +1584,6 @@ linux_collect_regset_section_cb (const char *sect_name, int supply_size,
|
||||
int collect_size, const struct regset *regset,
|
||||
const char *human_name, void *cb_data)
|
||||
{
|
||||
- char *buf;
|
||||
struct linux_collect_regset_section_cb_data *data
|
||||
= (struct linux_collect_regset_section_cb_data *) cb_data;
|
||||
bool variable_size_section = (regset != NULL
|
||||
@@ -1598,19 +1597,22 @@ linux_collect_regset_section_cb (const char *sect_name, int supply_size,
|
||||
|
||||
gdb_assert (regset && regset->collect_regset);
|
||||
|
||||
- buf = (char *) xmalloc (collect_size);
|
||||
- regset->collect_regset (regset, data->regcache, -1, buf, collect_size);
|
||||
+ /* This is intentionally zero-initialized by using std::vector, so
|
||||
+ that any padding bytes in the core file will show as 0. */
|
||||
+ std::vector<gdb_byte> buf (collect_size);
|
||||
+
|
||||
+ regset->collect_regset (regset, data->regcache, -1, buf.data (),
|
||||
+ collect_size);
|
||||
|
||||
/* PRSTATUS still needs to be treated specially. */
|
||||
if (strcmp (sect_name, ".reg") == 0)
|
||||
data->note_data = (char *) elfcore_write_prstatus
|
||||
(data->obfd, data->note_data, data->note_size, data->lwp,
|
||||
- gdb_signal_to_host (data->stop_signal), buf);
|
||||
+ gdb_signal_to_host (data->stop_signal), buf.data ());
|
||||
else
|
||||
data->note_data = (char *) elfcore_write_register_note
|
||||
(data->obfd, data->note_data, data->note_size,
|
||||
- sect_name, buf, collect_size);
|
||||
- xfree (buf);
|
||||
+ sect_name, buf.data (), collect_size);
|
||||
|
||||
if (data->note_data == NULL)
|
||||
data->abort_iteration = 1;
|
88
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-04of15.patch
Normal file
88
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-04of15.patch
Normal file
@ -0,0 +1,88 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:13 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-04of15.patch
|
||||
|
||||
;; [PowerPC] Don't zero-initialize vector register buffers
|
||||
;; Pedro Franco de Carvalho, RH BZ 1187581
|
||||
|
||||
[PowerPC] Don't zero-initialize vector register buffers
|
||||
|
||||
Now that linux-tdep.c already zero-initializes the buffer used for
|
||||
generating core file notes, there is no need to do this in the linux
|
||||
collect functions for the vector regset. The memsets in gdbserver were
|
||||
not useful to begin with.
|
||||
|
||||
gdb/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* ppc-linux-tdep.c (ppc_linux_collect_vrregset): Remove.
|
||||
(ppc32_le_linux_vrregset, ppc32_be_linux_vrregset): Replace
|
||||
ppc_linux_collect_vrregset by regcache_collect_regset.
|
||||
|
||||
gdb/gdbserver/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* linux-ppc-low.c (ppc_fill_vrregset): Remove memset calls.
|
||||
|
||||
diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c
|
||||
--- a/gdb/gdbserver/linux-ppc-low.c
|
||||
+++ b/gdb/gdbserver/linux-ppc-low.c
|
||||
@@ -495,13 +495,9 @@ ppc_fill_vrregset (struct regcache *regcache, void *buf)
|
||||
if (__BYTE_ORDER == __BIG_ENDIAN)
|
||||
vscr_offset = 12;
|
||||
|
||||
- /* Zero-pad the unused bytes in the fields for vscr and vrsave in
|
||||
- case they get displayed somewhere. */
|
||||
- memset (®set[32 * 16], 0, 16);
|
||||
collect_register_by_name (regcache, "vscr",
|
||||
®set[32 * 16 + vscr_offset]);
|
||||
|
||||
- memset (®set[33 * 16], 0, 16);
|
||||
collect_register_by_name (regcache, "vrsave", ®set[33 * 16]);
|
||||
}
|
||||
|
||||
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
|
||||
--- a/gdb/ppc-linux-tdep.c
|
||||
+++ b/gdb/ppc-linux-tdep.c
|
||||
@@ -444,24 +444,6 @@ ppc_linux_collect_gregset (const struct regset *regset,
|
||||
}
|
||||
}
|
||||
|
||||
-static void
|
||||
-ppc_linux_collect_vrregset (const struct regset *regset,
|
||||
- const struct regcache *regcache,
|
||||
- int regnum, void *buf, size_t len)
|
||||
-{
|
||||
- gdb_byte *vrregs = (gdb_byte *) buf;
|
||||
-
|
||||
- /* Zero-pad the unused bytes in the fields for vscr and vrsave
|
||||
- in case they get displayed somewhere (e.g. in core files). */
|
||||
- if (regnum == PPC_VSCR_REGNUM || regnum == -1)
|
||||
- memset (&vrregs[32 * 16], 0, 16);
|
||||
-
|
||||
- if (regnum == PPC_VRSAVE_REGNUM || regnum == -1)
|
||||
- memset (&vrregs[33 * 16], 0, 16);
|
||||
-
|
||||
- regcache_collect_regset (regset, regcache, regnum, buf, len);
|
||||
-}
|
||||
-
|
||||
/* Regset descriptions. */
|
||||
static const struct ppc_reg_offsets ppc32_linux_reg_offsets =
|
||||
{
|
||||
@@ -544,13 +526,13 @@ static const struct regcache_map_entry ppc32_be_linux_vrregmap[] =
|
||||
static const struct regset ppc32_le_linux_vrregset = {
|
||||
ppc32_le_linux_vrregmap,
|
||||
regcache_supply_regset,
|
||||
- ppc_linux_collect_vrregset
|
||||
+ regcache_collect_regset
|
||||
};
|
||||
|
||||
static const struct regset ppc32_be_linux_vrregset = {
|
||||
ppc32_be_linux_vrregmap,
|
||||
regcache_supply_regset,
|
||||
- ppc_linux_collect_vrregset
|
||||
+ regcache_collect_regset
|
||||
};
|
||||
|
||||
static const struct regcache_map_entry ppc32_linux_vsxregmap[] =
|
34
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-05of15.patch
Normal file
34
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-05of15.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:14 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-05of15.patch
|
||||
|
||||
;; Add decfloat registers to float reggroup
|
||||
;; Pedro Franco de Carvalho, RH BZ 1187581
|
||||
|
||||
Add decfloat registers to float reggroup
|
||||
|
||||
This patch changes default_register_reggroup_p to return true when the
|
||||
register type is decimal floating point and the reggroup is
|
||||
float_reggroup.
|
||||
|
||||
gdb/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* reggroups.c (default_register_reggroup_p): Return true for
|
||||
decfloat registers and float_reggroup.
|
||||
|
||||
diff --git a/gdb/reggroups.c b/gdb/reggroups.c
|
||||
--- a/gdb/reggroups.c
|
||||
+++ b/gdb/reggroups.c
|
||||
@@ -202,7 +202,9 @@ default_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
|
||||
if (group == all_reggroup)
|
||||
return 1;
|
||||
vector_p = TYPE_VECTOR (register_type (gdbarch, regnum));
|
||||
- float_p = TYPE_CODE (register_type (gdbarch, regnum)) == TYPE_CODE_FLT;
|
||||
+ float_p = (TYPE_CODE (register_type (gdbarch, regnum)) == TYPE_CODE_FLT
|
||||
+ || (TYPE_CODE (register_type (gdbarch, regnum))
|
||||
+ == TYPE_CODE_DECFLOAT));
|
||||
raw_p = regnum < gdbarch_num_regs (gdbarch);
|
||||
if (group == float_reggroup)
|
||||
return float_p;
|
72
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-06of15.patch
Normal file
72
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-06of15.patch
Normal file
@ -0,0 +1,72 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:14 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-06of15.patch
|
||||
|
||||
;; [PowerPC] Remove rs6000_pseudo_register_reggroup_p
|
||||
;; Pedro Franco de Carvalho, RH BZ 1187581
|
||||
|
||||
[PowerPC] Remove rs6000_pseudo_register_reggroup_p
|
||||
|
||||
This patch removes rs6000_pseudo_register_reggroup_p.
|
||||
|
||||
Group membership for the pseudoregisters can be detected through their
|
||||
types in default_register_reggroup_p through
|
||||
tdesc_register_reggroup_p.
|
||||
|
||||
gdb/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* rs6000-tdep.c: Remove reggroups.h include.
|
||||
(rs6000_pseudo_register_reggroup_p): Remove.
|
||||
(rs6000_gdbarch_init): Remove call to
|
||||
set_tdesc_pseudo_register_reggroup_p.
|
||||
|
||||
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
|
||||
--- a/gdb/rs6000-tdep.c
|
||||
+++ b/gdb/rs6000-tdep.c
|
||||
@@ -36,7 +36,6 @@
|
||||
#include "infcall.h"
|
||||
#include "sim-regno.h"
|
||||
#include "gdb/sim-ppc.h"
|
||||
-#include "reggroups.h"
|
||||
#include "dwarf2-frame.h"
|
||||
#include "target-descriptions.h"
|
||||
#include "user-regs.h"
|
||||
@@ -2461,27 +2460,6 @@ rs6000_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
|
||||
return builtin_type (gdbarch)->builtin_double;
|
||||
}
|
||||
|
||||
-/* Is REGNUM a member of REGGROUP? */
|
||||
-static int
|
||||
-rs6000_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
|
||||
- struct reggroup *group)
|
||||
-{
|
||||
- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
-
|
||||
- /* These are the only pseudo-registers we support. */
|
||||
- gdb_assert (IS_SPE_PSEUDOREG (tdep, regnum)
|
||||
- || IS_DFP_PSEUDOREG (tdep, regnum)
|
||||
- || IS_VSX_PSEUDOREG (tdep, regnum)
|
||||
- || IS_EFP_PSEUDOREG (tdep, regnum));
|
||||
-
|
||||
- /* These are the e500 pseudo-registers or the POWER7 VSX registers. */
|
||||
- if (IS_SPE_PSEUDOREG (tdep, regnum) || IS_VSX_PSEUDOREG (tdep, regnum))
|
||||
- return group == all_reggroup || group == vector_reggroup;
|
||||
- else
|
||||
- /* PPC decimal128 or Extended FP pseudo-registers. */
|
||||
- return group == all_reggroup || group == float_reggroup;
|
||||
-}
|
||||
-
|
||||
/* The register format for RS/6000 floating point registers is always
|
||||
double, we need a conversion if the memory format is float. */
|
||||
|
||||
@@ -6493,8 +6471,6 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
}
|
||||
|
||||
set_tdesc_pseudo_register_type (gdbarch, rs6000_pseudo_register_type);
|
||||
- set_tdesc_pseudo_register_reggroup_p (gdbarch,
|
||||
- rs6000_pseudo_register_reggroup_p);
|
||||
tdesc_use_registers (gdbarch, tdesc, tdesc_data);
|
||||
|
||||
/* Override the normal target description method to make the SPE upper
|
41
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-07of15.patch
Normal file
41
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-07of15.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:15 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-07of15.patch
|
||||
|
||||
;; [PowerPC] Fix two if statements in gdb/ppc-linux-nat.c
|
||||
;; Pedro Franco de Carvalho, RH BZ 1187581
|
||||
|
||||
[PowerPC] Fix two if statements in gdb/ppc-linux-nat.c
|
||||
|
||||
This patch changes two if statements to else if statements in
|
||||
ppc-linux-nat.c:fetch_register for clarity.
|
||||
|
||||
gdb/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* ppc-linux-nat.c (fetch_register): Change if statement to else
|
||||
if.
|
||||
(store_register): Likewise.
|
||||
|
||||
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
|
||||
--- a/gdb/ppc-linux-nat.c
|
||||
+++ b/gdb/ppc-linux-nat.c
|
||||
@@ -554,7 +554,7 @@ fetch_register (struct regcache *regcache, int tid, int regno)
|
||||
AltiVec registers, fall through and return zeroes, because
|
||||
regaddr will be -1 in this case. */
|
||||
}
|
||||
- if (vsx_register_p (gdbarch, regno))
|
||||
+ else if (vsx_register_p (gdbarch, regno))
|
||||
{
|
||||
if (have_ptrace_getsetvsxregs)
|
||||
{
|
||||
@@ -933,7 +933,7 @@ store_register (const struct regcache *regcache, int tid, int regno)
|
||||
store_altivec_registers (regcache, tid, regno);
|
||||
return;
|
||||
}
|
||||
- if (vsx_register_p (gdbarch, regno))
|
||||
+ else if (vsx_register_p (gdbarch, regno))
|
||||
{
|
||||
store_vsx_registers (regcache, tid, regno);
|
||||
return;
|
64
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-08of15.patch
Normal file
64
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-08of15.patch
Normal file
@ -0,0 +1,64 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:15 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-08of15.patch
|
||||
|
||||
;; [PowerPC] Fix indentation in arch/ppc-linux-common.c
|
||||
;; Pedro Franco de Carvalho, RH BZ 1187581
|
||||
|
||||
[PowerPC] Fix indentation in arch/ppc-linux-common.c
|
||||
|
||||
This patch parenthesizes the tdesc selection expressions in
|
||||
arch/ppc-linux-common.c so that they can be tab-indented.
|
||||
|
||||
gdb/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* arch/ppc-linux-common.c (ppc_linux_match_description):
|
||||
Parenthesize tdesc assignements and indent them properly.
|
||||
|
||||
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
|
||||
@@ -53,14 +53,14 @@ ppc_linux_match_description (struct ppc_linux_features features)
|
||||
if (features.cell)
|
||||
tdesc = tdesc_powerpc_cell64l;
|
||||
else if (features.vsx)
|
||||
- tdesc = features.isa205
|
||||
- ? tdesc_powerpc_isa205_vsx64l : tdesc_powerpc_vsx64l;
|
||||
+ tdesc = (features.isa205? tdesc_powerpc_isa205_vsx64l
|
||||
+ : tdesc_powerpc_vsx64l);
|
||||
else if (features.altivec)
|
||||
- tdesc = features.isa205
|
||||
- ? tdesc_powerpc_isa205_altivec64l : tdesc_powerpc_altivec64l;
|
||||
+ tdesc = (features.isa205? tdesc_powerpc_isa205_altivec64l
|
||||
+ : tdesc_powerpc_altivec64l);
|
||||
else
|
||||
- tdesc = features.isa205?
|
||||
- tdesc_powerpc_isa205_64l : tdesc_powerpc_64l;
|
||||
+ tdesc = (features.isa205? tdesc_powerpc_isa205_64l
|
||||
+ : tdesc_powerpc_64l);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -69,14 +69,14 @@ ppc_linux_match_description (struct ppc_linux_features features)
|
||||
if (features.cell)
|
||||
tdesc = tdesc_powerpc_cell32l;
|
||||
else if (features.vsx)
|
||||
- tdesc = features.isa205
|
||||
- ? tdesc_powerpc_isa205_vsx32l : tdesc_powerpc_vsx32l;
|
||||
+ tdesc = (features.isa205? tdesc_powerpc_isa205_vsx32l
|
||||
+ : tdesc_powerpc_vsx32l);
|
||||
else if (features.altivec)
|
||||
- tdesc = features.isa205
|
||||
- ? tdesc_powerpc_isa205_altivec32l : tdesc_powerpc_altivec32l;
|
||||
+ tdesc = (features.isa205? tdesc_powerpc_isa205_altivec32l
|
||||
+ : tdesc_powerpc_altivec32l);
|
||||
else
|
||||
- tdesc = features.isa205
|
||||
- ? tdesc_powerpc_isa205_32l : tdesc_powerpc_32l;
|
||||
+ tdesc = (features.isa205? tdesc_powerpc_isa205_32l
|
||||
+ : tdesc_powerpc_32l);
|
||||
}
|
||||
|
||||
gdb_assert (tdesc != NULL);
|
36
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-09of15.patch
Normal file
36
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-09of15.patch
Normal file
@ -0,0 +1,36 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:16 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-09of15.patch
|
||||
|
||||
;; [PowerPC] Refactor have_ initializers in rs6000-tdep.c
|
||||
;; Pedro Franco de Carvalho, RH BZ 1187581
|
||||
|
||||
[PowerPC] Refactor have_ initializers in rs6000-tdep.c
|
||||
|
||||
This patch refactors a series of initializers in rs6000_gdbarch_init
|
||||
for clarity. The have_fpu initializer is also changed to set the
|
||||
variable to 0, like the other similar variables. This doesn't affect
|
||||
program behavior.
|
||||
|
||||
gdb/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* rs6000-tdep.c (rs6000_gdbarch_init): Replace line wrapping by a
|
||||
second initializer line for the have_* variables. Initialize
|
||||
have_fpu to 0 instead of 1.
|
||||
|
||||
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
|
||||
--- a/gdb/rs6000-tdep.c
|
||||
+++ b/gdb/rs6000-tdep.c
|
||||
@@ -5845,8 +5845,8 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
enum powerpc_long_double_abi long_double_abi = POWERPC_LONG_DOUBLE_AUTO;
|
||||
enum powerpc_vector_abi vector_abi = powerpc_vector_abi_global;
|
||||
enum powerpc_elf_abi elf_abi = POWERPC_ELF_AUTO;
|
||||
- int have_fpu = 1, have_spe = 0, have_mq = 0, have_altivec = 0, have_dfp = 0,
|
||||
- have_vsx = 0;
|
||||
+ int have_fpu = 0, have_spe = 0, have_mq = 0, have_altivec = 0;
|
||||
+ int have_dfp = 0, have_vsx = 0;
|
||||
int tdesc_wordsize = -1;
|
||||
const struct target_desc *tdesc = info.target_desc;
|
||||
struct tdesc_arch_data *tdesc_data = NULL;
|
1987
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-10of15.patch
Normal file
1987
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-10of15.patch
Normal file
File diff suppressed because it is too large
Load Diff
1654
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-11of15.patch
Normal file
1654
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-11of15.patch
Normal file
File diff suppressed because it is too large
Load Diff
779
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-12of15.patch
Normal file
779
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-12of15.patch
Normal file
@ -0,0 +1,779 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:17 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-12of15.patch
|
||||
|
||||
;; [PowerPC] Add support for EBB and PMU registers
|
||||
;; Edjunior Barbosa Machado and Pedro Franco de Carvalho, RH BZ 1187581m
|
||||
|
||||
[PowerPC] Add support for EBB and PMU registers
|
||||
|
||||
This patch adds support for registers of the Event Based Branching and
|
||||
Performance Monitoring Units for the powerpc linux native and core
|
||||
file targets, and for the powerpc linux server stub.
|
||||
|
||||
All three EBB registers are accessible. Only a subset of the PMU
|
||||
registers can be accessed through ptrace. Because of this, the PMU
|
||||
registers are enumerated individually in gdbarch_tdep, as opposed to
|
||||
having a single "have_pmu" flag. This is intended to make it easier
|
||||
to add additional PMU registers in the future, since checking a
|
||||
"have_pmu" flag elsewhere in the code would no longer be correct. The
|
||||
tdesc feature is named org.gnu.gdb.power.linux.pmu because of this.
|
||||
|
||||
It's unclear if it makes sense to save and restore these registers
|
||||
across function calls, since some of them can be modified
|
||||
asynchronously. They are also not tracked in record-replay mode.
|
||||
|
||||
The kernel can return ENODATA when ptrace is used to get the EBB
|
||||
registers, unless a linux performance event that uses EBB is open in
|
||||
the inferior. For this reason, the "fill" functions in the server
|
||||
stub for the ebb register sets is not implemented.
|
||||
|
||||
Since gdbserver writes all registers in one go before resuming the
|
||||
inferior, this error would not be detected at the time the user tries
|
||||
to write to one of the registers on the client side, and gdbserver
|
||||
would print out warnings every time it resumes the inferior when no
|
||||
ebb performance event is opened, so there is currently no
|
||||
straightforward way to handle this case. This means the ebb registers
|
||||
in the client-side regcache can become dirty when the user tries to
|
||||
write to them, until the inferior is resumed and stopped again.
|
||||
|
||||
A related issue is that 'G' packets used to write to unrelated
|
||||
registers will include bad data for the EBB registers if they are
|
||||
unavailable, since no register status information is included in the
|
||||
'G' packet. This data won't be written to the inferior by the
|
||||
gdbserver stub because the "fill" functions are not implemented, and
|
||||
currently the gdbserver stub doesn't change the status of the
|
||||
registers in its own regcache in response to 'G' packets.
|
||||
|
||||
Another limitation for the ebb registers is that traceframes don't
|
||||
record if registers are available or not, so if these registers are
|
||||
collected when a tracepoint is hit and the inferior has no ebb event
|
||||
opened, the user will see zero values for all of them, instead of the
|
||||
usual <unavailable>.
|
||||
|
||||
Because these registers are often unavailable, trying to store them
|
||||
with target_store_registers with -1 for the regno argument (all
|
||||
registers) would almost always fail, so they are ignored in this case.
|
||||
|
||||
gdb/ChangeLog:
|
||||
2018-10-26 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
|
||||
Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* arch/ppc-linux-common.h (PPC_LINUX_SIZEOF_EBBREGSET)
|
||||
(PPC_LINUX_SIZEOF_PMUREGSET): Declare.
|
||||
* nat/ppc-linux.h (PPC_FEATURE2_EBB, NT_PPC_EBB, NT_PPC_PMU):
|
||||
Define if not already defined.
|
||||
* features/rs6000/power-ebb.xml: New file.
|
||||
* features/rs6000/power-linux-pmu.xml: New file.
|
||||
* features/rs6000/powerpc-isa207-vsx32l.xml: Include ebb and pmu
|
||||
features.
|
||||
* features/rs6000/powerpc-isa207-vsx64l.xml: Likewise.
|
||||
* features/rs6000/powerpc-isa207-vsx32l.c: Re-generate.
|
||||
* features/rs6000/powerpc-isa207-vsx64l.c: Re-generate.
|
||||
* regformats/rs6000/powerpc-isa207-vsx32l.dat: Re-generate.
|
||||
* regformats/rs6000/powerpc-isa207-vsx64l.dat: Re-generate.
|
||||
* ppc-linux-nat.c (fetch_register, fetch_ppc_registers): Call
|
||||
fetch_regset with ebb and pmu regsets.
|
||||
(store_register, store_ppc_registers): Call store_regset with ebb
|
||||
and pmu regsets.
|
||||
(ppc_linux_nat_target::read_description): Set isa207 field in the
|
||||
features struct if ebb and pmu are avaiable.
|
||||
* ppc-linux-tdep.c (ppc32_regmap_ebb, ppc32_regmap_pmu)
|
||||
(ppc32_linux_ebbregset, ppc32_linux_pmuregset): New globals.
|
||||
(ppc_linux_iterate_over_regset_sections): Call back with the ebb
|
||||
and pmu regsets.
|
||||
(ppc_linux_core_read_description): Check if the pmu section is
|
||||
present and set isa207 in the features struct.
|
||||
* ppc-linux-tdep.h (ppc32_linux_ebbregset)
|
||||
(ppc32_linux_pmuregset): Declare.
|
||||
* ppc-tdep.h (struct gdbarch_tdep) <ppc_mmcr0_regnum>: New field.
|
||||
<ppc_mmcr2_regnum, ppc_siar_regnum, ppc_sdar_regnum>: New fields.
|
||||
<ppc_sier_regnum>: New field.
|
||||
(enum): <PPC_BESCR_REGNUM, PPC_EBBHR_REGNUM, PPC_EBBRR_REGNUM>:
|
||||
New enum values.
|
||||
<PPC_MMCR0_REGNUM, PPC_MMCR2_REGNUM, PPC_SIAR_REGNUM>: New enum
|
||||
values.
|
||||
<PPC_SDAR_REGNUM, PPC_SIER_REGNUM>: New enum values.
|
||||
(PPC_IS_EBB_REGNUM, PPC_IS_PMU_REGNUM): Define.
|
||||
* rs6000-tdep.c (rs6000_gdbarch_init): Look for and validate the
|
||||
ebb and pmu features.
|
||||
|
||||
gdb/gdbserver/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* configure.srv (powerpc*-*-linux*): Add rs6000/power-ebb.xml and
|
||||
rs6000/power-linux-pmu.xml to srv_xmlfiles.
|
||||
* linux-ppc-low.c (ppc_store_ebbregset, ppc_fill_pmuregset)
|
||||
(ppc_store_pmuregset): New functions.
|
||||
(ppc_regsets): Add entries for ebb and pmu regsets.
|
||||
(ppc_arch_setup): Set isa207 in features struct if the ebb and
|
||||
pmu regsets are available. Set sizes for these regsets.
|
||||
|
||||
gdb/doc/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* gdb.texinfo (PowerPC Features): Describe new features
|
||||
"org.gnu.gdb.power.ebb" and "org.gnu.gdb.power.linux.pmu".
|
||||
|
||||
diff --git a/gdb/arch/ppc-linux-common.h b/gdb/arch/ppc-linux-common.h
|
||||
--- a/gdb/arch/ppc-linux-common.h
|
||||
+++ b/gdb/arch/ppc-linux-common.h
|
||||
@@ -33,6 +33,8 @@ struct target_desc;
|
||||
#define PPC_LINUX_SIZEOF_PPRREGSET 8
|
||||
#define PPC_LINUX_SIZEOF_DSCRREGSET 8
|
||||
#define PPC_LINUX_SIZEOF_TARREGSET 8
|
||||
+#define PPC_LINUX_SIZEOF_EBBREGSET (3*8)
|
||||
+#define PPC_LINUX_SIZEOF_PMUREGSET (5*8)
|
||||
|
||||
/* Check if the hwcap auxv entry indicates that isa205 is supported. */
|
||||
bool ppc_linux_has_isa205 (CORE_ADDR hwcap);
|
||||
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
||||
--- a/gdb/doc/gdb.texinfo
|
||||
+++ b/gdb/doc/gdb.texinfo
|
||||
@@ -42564,6 +42564,15 @@ contain the 64-bit register @samp{dscr}.
|
||||
The @samp{org.gnu.gdb.power.tar} feature is optional. It should
|
||||
contain the 64-bit register @samp{tar}.
|
||||
|
||||
+The @samp{org.gnu.gdb.power.ebb} feature is optional. It should
|
||||
+contain registers @samp{bescr}, @samp{ebbhr} and @samp{ebbrr}, all
|
||||
+64-bit wide.
|
||||
+
|
||||
+The @samp{org.gnu.gdb.power.linux.pmu} feature is optional. It should
|
||||
+contain registers @samp{mmcr0}, @samp{mmcr2}, @samp{siar}, @samp{sdar}
|
||||
+and @samp{sier}, all 64-bit wide. This is the subset of the isa 2.07
|
||||
+server PMU registers provided by @sc{gnu}/Linux.
|
||||
+
|
||||
@node S/390 and System z Features
|
||||
@subsection S/390 and System z Features
|
||||
@cindex target descriptions, S/390 features
|
||||
diff --git a/gdb/features/rs6000/power-ebb.xml b/gdb/features/rs6000/power-ebb.xml
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/gdb/features/rs6000/power-ebb.xml
|
||||
@@ -0,0 +1,14 @@
|
||||
+<?xml version="1.0"?>
|
||||
+<!-- Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+
|
||||
+ Copying and distribution of this file, with or without modification,
|
||||
+ are permitted in any medium without royalty provided the copyright
|
||||
+ notice and this notice are preserved. -->
|
||||
+
|
||||
+<!-- POWER8 Event-based Branching Registers. -->
|
||||
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||
+<feature name="org.gnu.gdb.power.ebb">
|
||||
+ <reg name="bescr" bitsize="64" type="uint64" save-restore="no"/>
|
||||
+ <reg name="ebbhr" bitsize="64" type="uint64" save-restore="no"/>
|
||||
+ <reg name="ebbrr" bitsize="64" type="uint64" save-restore="no"/>
|
||||
+</feature>
|
||||
diff --git a/gdb/features/rs6000/power-linux-pmu.xml b/gdb/features/rs6000/power-linux-pmu.xml
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/gdb/features/rs6000/power-linux-pmu.xml
|
||||
@@ -0,0 +1,17 @@
|
||||
+<?xml version="1.0"?>
|
||||
+<!-- Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+
|
||||
+ Copying and distribution of this file, with or without modification,
|
||||
+ are permitted in any medium without royalty provided the copyright
|
||||
+ notice and this notice are preserved. -->
|
||||
+
|
||||
+<!-- Subset of the POWER8 ISA 2.07 Performance Monitor Registers
|
||||
+ provided by Linux. -->
|
||||
+<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||
+<feature name="org.gnu.gdb.power.linux.pmu">
|
||||
+ <reg name="mmcr0" bitsize="64" type="uint64" save-restore="no"/>
|
||||
+ <reg name="mmcr2" bitsize="64" type="uint64" save-restore="no"/>
|
||||
+ <reg name="siar" bitsize="64" type="uint64" save-restore="no"/>
|
||||
+ <reg name="sdar" bitsize="64" type="uint64" save-restore="no"/>
|
||||
+ <reg name="sier" bitsize="64" type="uint64" save-restore="no"/>
|
||||
+</feature>
|
||||
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
|
||||
@@ -199,5 +199,17 @@ initialize_tdesc_powerpc_isa207_vsx32l (void)
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.tar");
|
||||
tdesc_create_reg (feature, "tar", 141, 1, NULL, 64, "uint64");
|
||||
|
||||
+ feature = tdesc_create_feature (result, "org.gnu.gdb.power.ebb");
|
||||
+ tdesc_create_reg (feature, "bescr", 142, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "ebbhr", 143, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "ebbrr", 144, 0, NULL, 64, "uint64");
|
||||
+
|
||||
+ feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux.pmu");
|
||||
+ tdesc_create_reg (feature, "mmcr0", 145, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "mmcr2", 146, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "siar", 147, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "sdar", 148, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "sier", 149, 0, NULL, 64, "uint64");
|
||||
+
|
||||
tdesc_powerpc_isa207_vsx32l = result;
|
||||
}
|
||||
diff --git a/gdb/features/rs6000/powerpc-isa207-vsx32l.xml b/gdb/features/rs6000/powerpc-isa207-vsx32l.xml
|
||||
--- a/gdb/features/rs6000/powerpc-isa207-vsx32l.xml
|
||||
+++ b/gdb/features/rs6000/powerpc-isa207-vsx32l.xml
|
||||
@@ -16,4 +16,6 @@
|
||||
<xi:include href="power-ppr.xml"/>
|
||||
<xi:include href="power-dscr.xml"/>
|
||||
<xi:include href="power-tar.xml"/>
|
||||
+ <xi:include href="power-ebb.xml"/>
|
||||
+ <xi:include href="power-linux-pmu.xml"/>
|
||||
</target>
|
||||
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
|
||||
@@ -199,5 +199,17 @@ initialize_tdesc_powerpc_isa207_vsx64l (void)
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.tar");
|
||||
tdesc_create_reg (feature, "tar", 141, 1, NULL, 64, "uint64");
|
||||
|
||||
+ feature = tdesc_create_feature (result, "org.gnu.gdb.power.ebb");
|
||||
+ tdesc_create_reg (feature, "bescr", 142, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "ebbhr", 143, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "ebbrr", 144, 0, NULL, 64, "uint64");
|
||||
+
|
||||
+ feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux.pmu");
|
||||
+ tdesc_create_reg (feature, "mmcr0", 145, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "mmcr2", 146, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "siar", 147, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "sdar", 148, 0, NULL, 64, "uint64");
|
||||
+ tdesc_create_reg (feature, "sier", 149, 0, NULL, 64, "uint64");
|
||||
+
|
||||
tdesc_powerpc_isa207_vsx64l = result;
|
||||
}
|
||||
diff --git a/gdb/features/rs6000/powerpc-isa207-vsx64l.xml b/gdb/features/rs6000/powerpc-isa207-vsx64l.xml
|
||||
--- a/gdb/features/rs6000/powerpc-isa207-vsx64l.xml
|
||||
+++ b/gdb/features/rs6000/powerpc-isa207-vsx64l.xml
|
||||
@@ -16,4 +16,6 @@
|
||||
<xi:include href="power-ppr.xml"/>
|
||||
<xi:include href="power-dscr.xml"/>
|
||||
<xi:include href="power-tar.xml"/>
|
||||
+ <xi:include href="power-ebb.xml"/>
|
||||
+ <xi:include href="power-linux-pmu.xml"/>
|
||||
</target>
|
||||
diff --git a/gdb/gdbserver/configure.srv b/gdb/gdbserver/configure.srv
|
||||
--- a/gdb/gdbserver/configure.srv
|
||||
+++ b/gdb/gdbserver/configure.srv
|
||||
@@ -249,6 +249,8 @@ case "${target}" in
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power-dscr.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power-ppr.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power-tar.xml"
|
||||
+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-ebb.xml"
|
||||
+ srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux-pmu.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500l.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml"
|
||||
diff --git a/gdb/gdbserver/linux-ppc-low.c b/gdb/gdbserver/linux-ppc-low.c
|
||||
--- a/gdb/gdbserver/linux-ppc-low.c
|
||||
+++ b/gdb/gdbserver/linux-ppc-low.c
|
||||
@@ -545,6 +545,61 @@ ppc_store_tarregset (struct regcache *regcache, const void *buf)
|
||||
supply_register_by_name (regcache, "tar", tar);
|
||||
}
|
||||
|
||||
+/* Event-Based Branching regset store function. Unless the inferior
|
||||
+ has a perf event open, ptrace can return in error when reading and
|
||||
+ writing to the regset, with ENODATA. For reading, the registers
|
||||
+ will correctly show as unavailable. For writing, gdbserver
|
||||
+ currently only caches any register writes from P and G packets and
|
||||
+ the stub always tries to write all the regsets when resuming the
|
||||
+ inferior, which would result in frequent warnings. For this
|
||||
+ reason, we don't define a fill function. This also means that the
|
||||
+ client-side regcache will be dirty if the user tries to write to
|
||||
+ the EBB registers. G packets that the client sends to write to
|
||||
+ unrelated registers will also include data for EBB registers, even
|
||||
+ if they are unavailable. */
|
||||
+
|
||||
+static void
|
||||
+ppc_store_ebbregset (struct regcache *regcache, const void *buf)
|
||||
+{
|
||||
+ const char *regset = (const char *) buf;
|
||||
+
|
||||
+ /* The order in the kernel regset is: EBBRR, EBBHR, BESCR. In the
|
||||
+ .dat file is BESCR, EBBHR, EBBRR. */
|
||||
+ supply_register_by_name (regcache, "ebbrr", ®set[0]);
|
||||
+ supply_register_by_name (regcache, "ebbhr", ®set[8]);
|
||||
+ supply_register_by_name (regcache, "bescr", ®set[16]);
|
||||
+}
|
||||
+
|
||||
+/* Performance Monitoring Unit regset fill function. */
|
||||
+
|
||||
+static void
|
||||
+ppc_fill_pmuregset (struct regcache *regcache, void *buf)
|
||||
+{
|
||||
+ char *regset = (char *) buf;
|
||||
+
|
||||
+ /* The order in the kernel regset is SIAR, SDAR, SIER, MMCR2, MMCR0.
|
||||
+ In the .dat file is MMCR0, MMCR2, SIAR, SDAR, SIER. */
|
||||
+ collect_register_by_name (regcache, "siar", ®set[0]);
|
||||
+ collect_register_by_name (regcache, "sdar", ®set[8]);
|
||||
+ collect_register_by_name (regcache, "sier", ®set[16]);
|
||||
+ collect_register_by_name (regcache, "mmcr2", ®set[24]);
|
||||
+ collect_register_by_name (regcache, "mmcr0", ®set[32]);
|
||||
+}
|
||||
+
|
||||
+/* Performance Monitoring Unit regset store function. */
|
||||
+
|
||||
+static void
|
||||
+ppc_store_pmuregset (struct regcache *regcache, const void *buf)
|
||||
+{
|
||||
+ const char *regset = (const char *) buf;
|
||||
+
|
||||
+ supply_register_by_name (regcache, "siar", ®set[0]);
|
||||
+ supply_register_by_name (regcache, "sdar", ®set[8]);
|
||||
+ supply_register_by_name (regcache, "sier", ®set[16]);
|
||||
+ supply_register_by_name (regcache, "mmcr2", ®set[24]);
|
||||
+ supply_register_by_name (regcache, "mmcr0", ®set[32]);
|
||||
+}
|
||||
+
|
||||
static void
|
||||
ppc_fill_vsxregset (struct regcache *regcache, void *buf)
|
||||
{
|
||||
@@ -654,6 +709,10 @@ static struct regset_info ppc_regsets[] = {
|
||||
fetch them every time, but still fall back to PTRACE_PEEKUSER for the
|
||||
general registers. Some kernels support these, but not the newer
|
||||
PPC_PTRACE_GETREGS. */
|
||||
+ { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_EBB, 0, EXTENDED_REGS,
|
||||
+ NULL, ppc_store_ebbregset },
|
||||
+ { PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_PMU, 0, EXTENDED_REGS,
|
||||
+ ppc_fill_pmuregset, ppc_store_pmuregset },
|
||||
{ PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_TAR, 0, EXTENDED_REGS,
|
||||
ppc_fill_tarregset, ppc_store_tarregset },
|
||||
{ PTRACE_GETREGSET, PTRACE_SETREGSET, NT_PPC_PPR, 0, EXTENDED_REGS,
|
||||
@@ -734,8 +793,13 @@ ppc_arch_setup (void)
|
||||
features.ppr_dscr = true;
|
||||
if ((ppc_hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
&& (ppc_hwcap2 & PPC_FEATURE2_TAR)
|
||||
+ && (ppc_hwcap2 & PPC_FEATURE2_EBB)
|
||||
&& ppc_check_regset (tid, NT_PPC_TAR,
|
||||
- PPC_LINUX_SIZEOF_TARREGSET))
|
||||
+ PPC_LINUX_SIZEOF_TARREGSET)
|
||||
+ && ppc_check_regset (tid, NT_PPC_EBB,
|
||||
+ PPC_LINUX_SIZEOF_EBBREGSET)
|
||||
+ && ppc_check_regset (tid, NT_PPC_PMU,
|
||||
+ PPC_LINUX_SIZEOF_PMUREGSET))
|
||||
features.isa207 = true;
|
||||
}
|
||||
|
||||
@@ -798,6 +862,14 @@ ppc_arch_setup (void)
|
||||
regset->size = (features.isa207 ?
|
||||
PPC_LINUX_SIZEOF_TARREGSET : 0);
|
||||
break;
|
||||
+ case NT_PPC_EBB:
|
||||
+ regset->size = (features.isa207 ?
|
||||
+ PPC_LINUX_SIZEOF_EBBREGSET : 0);
|
||||
+ break;
|
||||
+ case NT_PPC_PMU:
|
||||
+ regset->size = (features.isa207 ?
|
||||
+ PPC_LINUX_SIZEOF_PMUREGSET : 0);
|
||||
+ break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
diff --git a/gdb/nat/ppc-linux.h b/gdb/nat/ppc-linux.h
|
||||
--- a/gdb/nat/ppc-linux.h
|
||||
+++ b/gdb/nat/ppc-linux.h
|
||||
@@ -60,6 +60,9 @@
|
||||
#ifndef PPC_FEATURE2_TAR
|
||||
#define PPC_FEATURE2_TAR 0x04000000
|
||||
#endif
|
||||
+#ifndef PPC_FEATURE2_EBB
|
||||
+#define PPC_FEATURE2_EBB 0x10000000
|
||||
+#endif
|
||||
|
||||
/* Glibc's headers don't define PTRACE_GETVRREGS so we cannot use a
|
||||
configure time check. Some older glibc's (for instance 2.2.1)
|
||||
@@ -106,6 +109,16 @@
|
||||
#define NT_PPC_DSCR 0x105
|
||||
#endif
|
||||
|
||||
+/* Event Based Branch Registers. */
|
||||
+#ifndef NT_PPC_EBB
|
||||
+#define NT_PPC_EBB 0x106
|
||||
+#endif
|
||||
+
|
||||
+/* Performance Monitor Registers. */
|
||||
+#ifndef NT_PPC_PMU
|
||||
+#define NT_PPC_PMU 0x107
|
||||
+#endif
|
||||
+
|
||||
/* Return the wordsize of the target, either 4 or 8 bytes. */
|
||||
int ppc_linux_target_wordsize (int tid);
|
||||
|
||||
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
|
||||
--- a/gdb/ppc-linux-nat.c
|
||||
+++ b/gdb/ppc-linux-nat.c
|
||||
@@ -667,6 +667,24 @@ fetch_register (struct regcache *regcache, int tid, int regno)
|
||||
&ppc32_linux_tarregset);
|
||||
return;
|
||||
}
|
||||
+ else if (PPC_IS_EBB_REGNUM (regno))
|
||||
+ {
|
||||
+ gdb_assert (tdep->have_ebb);
|
||||
+
|
||||
+ fetch_regset (regcache, tid, NT_PPC_EBB,
|
||||
+ PPC_LINUX_SIZEOF_EBBREGSET,
|
||||
+ &ppc32_linux_ebbregset);
|
||||
+ return;
|
||||
+ }
|
||||
+ else if (PPC_IS_PMU_REGNUM (regno))
|
||||
+ {
|
||||
+ gdb_assert (tdep->ppc_mmcr0_regnum != -1);
|
||||
+
|
||||
+ fetch_regset (regcache, tid, NT_PPC_PMU,
|
||||
+ PPC_LINUX_SIZEOF_PMUREGSET,
|
||||
+ &ppc32_linux_pmuregset);
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
if (regaddr == -1)
|
||||
{
|
||||
@@ -875,6 +893,14 @@ fetch_ppc_registers (struct regcache *regcache, int tid)
|
||||
fetch_regset (regcache, tid, NT_PPC_TAR,
|
||||
PPC_LINUX_SIZEOF_TARREGSET,
|
||||
&ppc32_linux_tarregset);
|
||||
+ if (tdep->have_ebb)
|
||||
+ fetch_regset (regcache, tid, NT_PPC_EBB,
|
||||
+ PPC_LINUX_SIZEOF_EBBREGSET,
|
||||
+ &ppc32_linux_ebbregset);
|
||||
+ if (tdep->ppc_mmcr0_regnum != -1)
|
||||
+ fetch_regset (regcache, tid, NT_PPC_PMU,
|
||||
+ PPC_LINUX_SIZEOF_PMUREGSET,
|
||||
+ &ppc32_linux_pmuregset);
|
||||
}
|
||||
|
||||
/* Fetch registers from the child process. Fetch all registers if
|
||||
@@ -1082,6 +1108,24 @@ store_register (const struct regcache *regcache, int tid, int regno)
|
||||
&ppc32_linux_tarregset);
|
||||
return;
|
||||
}
|
||||
+ else if (PPC_IS_EBB_REGNUM (regno))
|
||||
+ {
|
||||
+ gdb_assert (tdep->have_ebb);
|
||||
+
|
||||
+ store_regset (regcache, tid, regno, NT_PPC_EBB,
|
||||
+ PPC_LINUX_SIZEOF_EBBREGSET,
|
||||
+ &ppc32_linux_ebbregset);
|
||||
+ return;
|
||||
+ }
|
||||
+ else if (PPC_IS_PMU_REGNUM (regno))
|
||||
+ {
|
||||
+ gdb_assert (tdep->ppc_mmcr0_regnum != -1);
|
||||
+
|
||||
+ store_regset (regcache, tid, regno, NT_PPC_PMU,
|
||||
+ PPC_LINUX_SIZEOF_PMUREGSET,
|
||||
+ &ppc32_linux_pmuregset);
|
||||
+ return;
|
||||
+ }
|
||||
|
||||
if (regaddr == -1)
|
||||
return;
|
||||
@@ -1308,6 +1352,15 @@ store_ppc_registers (const struct regcache *regcache, int tid)
|
||||
store_regset (regcache, tid, -1, NT_PPC_TAR,
|
||||
PPC_LINUX_SIZEOF_TARREGSET,
|
||||
&ppc32_linux_tarregset);
|
||||
+
|
||||
+ if (tdep->ppc_mmcr0_regnum != -1)
|
||||
+ store_regset (regcache, tid, -1, NT_PPC_PMU,
|
||||
+ PPC_LINUX_SIZEOF_PMUREGSET,
|
||||
+ &ppc32_linux_pmuregset);
|
||||
+
|
||||
+ /* Because the EBB registers can be unavailable, attempts to store
|
||||
+ them here would cause this function to fail most of the time, so
|
||||
+ we ignore them. */
|
||||
}
|
||||
|
||||
/* Fetch the AT_HWCAP entry from the aux vector. */
|
||||
@@ -2439,7 +2492,10 @@ ppc_linux_nat_target::read_description ()
|
||||
features.ppr_dscr = true;
|
||||
if ((hwcap2 & PPC_FEATURE2_ARCH_2_07)
|
||||
&& (hwcap2 & PPC_FEATURE2_TAR)
|
||||
- && check_regset (tid, NT_PPC_TAR, PPC_LINUX_SIZEOF_TARREGSET))
|
||||
+ && (hwcap2 & PPC_FEATURE2_EBB)
|
||||
+ && check_regset (tid, NT_PPC_TAR, PPC_LINUX_SIZEOF_TARREGSET)
|
||||
+ && check_regset (tid, NT_PPC_EBB, PPC_LINUX_SIZEOF_EBBREGSET)
|
||||
+ && check_regset (tid, NT_PPC_PMU, PPC_LINUX_SIZEOF_PMUREGSET))
|
||||
features.isa207 = true;
|
||||
}
|
||||
|
||||
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
|
||||
--- a/gdb/ppc-linux-tdep.c
|
||||
+++ b/gdb/ppc-linux-tdep.c
|
||||
@@ -599,6 +599,44 @@ const struct regset ppc32_linux_tarregset = {
|
||||
regcache_collect_regset
|
||||
};
|
||||
|
||||
+/* Event-Based Branching regmap. */
|
||||
+
|
||||
+static const struct regcache_map_entry ppc32_regmap_ebb[] =
|
||||
+ {
|
||||
+ { 1, PPC_EBBRR_REGNUM, 8 },
|
||||
+ { 1, PPC_EBBHR_REGNUM, 8 },
|
||||
+ { 1, PPC_BESCR_REGNUM, 8 },
|
||||
+ { 0 }
|
||||
+ };
|
||||
+
|
||||
+/* Event-Based Branching regset. */
|
||||
+
|
||||
+const struct regset ppc32_linux_ebbregset = {
|
||||
+ ppc32_regmap_ebb,
|
||||
+ regcache_supply_regset,
|
||||
+ regcache_collect_regset
|
||||
+};
|
||||
+
|
||||
+/* Performance Monitoring Unit regmap. */
|
||||
+
|
||||
+static const struct regcache_map_entry ppc32_regmap_pmu[] =
|
||||
+ {
|
||||
+ { 1, PPC_SIAR_REGNUM, 8 },
|
||||
+ { 1, PPC_SDAR_REGNUM, 8 },
|
||||
+ { 1, PPC_SIER_REGNUM, 8 },
|
||||
+ { 1, PPC_MMCR2_REGNUM, 8 },
|
||||
+ { 1, PPC_MMCR0_REGNUM, 8 },
|
||||
+ { 0 }
|
||||
+ };
|
||||
+
|
||||
+/* Performance Monitoring Unit regset. */
|
||||
+
|
||||
+const struct regset ppc32_linux_pmuregset = {
|
||||
+ ppc32_regmap_pmu,
|
||||
+ regcache_supply_regset,
|
||||
+ regcache_collect_regset
|
||||
+};
|
||||
+
|
||||
const struct regset *
|
||||
ppc_linux_gregset (int wordsize)
|
||||
{
|
||||
@@ -674,6 +712,22 @@ ppc_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
|
||||
cb (".reg-ppc-tar", PPC_LINUX_SIZEOF_TARREGSET,
|
||||
PPC_LINUX_SIZEOF_TARREGSET,
|
||||
&ppc32_linux_tarregset, "Target Address Register", cb_data);
|
||||
+
|
||||
+ /* EBB registers are unavailable when ptrace returns ENODATA. Check
|
||||
+ availability when generating a core file (regcache != NULL). */
|
||||
+ if (tdep->have_ebb)
|
||||
+ if (regcache == NULL
|
||||
+ || REG_VALID == regcache->get_register_status (PPC_BESCR_REGNUM))
|
||||
+ cb (".reg-ppc-ebb", PPC_LINUX_SIZEOF_EBBREGSET,
|
||||
+ PPC_LINUX_SIZEOF_EBBREGSET,
|
||||
+ &ppc32_linux_ebbregset, "Event-based Branching Registers",
|
||||
+ cb_data);
|
||||
+
|
||||
+ if (tdep->ppc_mmcr0_regnum != -1)
|
||||
+ cb (".reg-ppc-pmu", PPC_LINUX_SIZEOF_PMUREGSET,
|
||||
+ PPC_LINUX_SIZEOF_PMUREGSET,
|
||||
+ &ppc32_linux_pmuregset, "Performance Monitor Registers",
|
||||
+ cb_data);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1089,6 +1143,7 @@ ppc_linux_core_read_description (struct gdbarch *gdbarch,
|
||||
asection *ppr = bfd_get_section_by_name (abfd, ".reg-ppc-ppr");
|
||||
asection *dscr = bfd_get_section_by_name (abfd, ".reg-ppc-dscr");
|
||||
asection *tar = bfd_get_section_by_name (abfd, ".reg-ppc-tar");
|
||||
+ asection *pmu = bfd_get_section_by_name (abfd, ".reg-ppc-pmu");
|
||||
|
||||
if (! section)
|
||||
return NULL;
|
||||
@@ -1124,7 +1179,12 @@ ppc_linux_core_read_description (struct gdbarch *gdbarch,
|
||||
if (ppr && dscr)
|
||||
{
|
||||
features.ppr_dscr = true;
|
||||
- if (tar)
|
||||
+
|
||||
+ /* We don't require the EBB note section to be present in the
|
||||
+ core file to select isa207 because these registers could have
|
||||
+ been unavailable when the core file was created. They will
|
||||
+ be in the tdep but will show as unavailable. */
|
||||
+ if (tar && pmu)
|
||||
features.isa207 = true;
|
||||
}
|
||||
|
||||
diff --git a/gdb/ppc-linux-tdep.h b/gdb/ppc-linux-tdep.h
|
||||
--- a/gdb/ppc-linux-tdep.h
|
||||
+++ b/gdb/ppc-linux-tdep.h
|
||||
@@ -48,5 +48,7 @@ int ppc_linux_trap_reg_p (struct gdbarch *gdbarch);
|
||||
extern const struct regset ppc32_linux_pprregset;
|
||||
extern const struct regset ppc32_linux_dscrregset;
|
||||
extern const struct regset ppc32_linux_tarregset;
|
||||
+extern const struct regset ppc32_linux_ebbregset;
|
||||
+extern const struct regset ppc32_linux_pmuregset;
|
||||
|
||||
#endif /* PPC_LINUX_TDEP_H */
|
||||
diff --git a/gdb/ppc-tdep.h b/gdb/ppc-tdep.h
|
||||
--- a/gdb/ppc-tdep.h
|
||||
+++ b/gdb/ppc-tdep.h
|
||||
@@ -265,6 +265,15 @@ struct gdbarch_tdep
|
||||
/* Decimal 128 registers. */
|
||||
int ppc_dl0_regnum; /* First Decimal128 argument register pair. */
|
||||
|
||||
+ int have_ebb;
|
||||
+
|
||||
+ /* PMU registers. */
|
||||
+ int ppc_mmcr0_regnum;
|
||||
+ int ppc_mmcr2_regnum;
|
||||
+ int ppc_siar_regnum;
|
||||
+ int ppc_sdar_regnum;
|
||||
+ int ppc_sier_regnum;
|
||||
+
|
||||
/* Offset to ABI specific location where link register is saved. */
|
||||
int lr_frame_offset;
|
||||
|
||||
@@ -321,12 +330,31 @@ enum {
|
||||
PPC_PPR_REGNUM = 172,
|
||||
PPC_DSCR_REGNUM = 173,
|
||||
PPC_TAR_REGNUM = 174,
|
||||
+
|
||||
+ /* EBB registers. */
|
||||
+ PPC_BESCR_REGNUM = 175,
|
||||
+ PPC_EBBHR_REGNUM = 176,
|
||||
+ PPC_EBBRR_REGNUM = 177,
|
||||
+
|
||||
+ /* PMU registers. */
|
||||
+ PPC_MMCR0_REGNUM = 178,
|
||||
+ PPC_MMCR2_REGNUM = 179,
|
||||
+ PPC_SIAR_REGNUM = 180,
|
||||
+ PPC_SDAR_REGNUM = 181,
|
||||
+ PPC_SIER_REGNUM = 182,
|
||||
+
|
||||
PPC_NUM_REGS
|
||||
};
|
||||
|
||||
/* Big enough to hold the size of the largest register in bytes. */
|
||||
#define PPC_MAX_REGISTER_SIZE 64
|
||||
|
||||
+#define PPC_IS_EBB_REGNUM(i) \
|
||||
+ ((i) >= PPC_BESCR_REGNUM && (i) <= PPC_EBBRR_REGNUM)
|
||||
+
|
||||
+#define PPC_IS_PMU_REGNUM(i) \
|
||||
+ ((i) >= PPC_MMCR0_REGNUM && (i) <= PPC_SIER_REGNUM)
|
||||
+
|
||||
/* An instruction to match. */
|
||||
|
||||
struct ppc_insn_pattern
|
||||
diff --git a/gdb/regformats/rs6000/powerpc-isa207-vsx32l.dat b/gdb/regformats/rs6000/powerpc-isa207-vsx32l.dat
|
||||
--- a/gdb/regformats/rs6000/powerpc-isa207-vsx32l.dat
|
||||
+++ b/gdb/regformats/rs6000/powerpc-isa207-vsx32l.dat
|
||||
@@ -145,3 +145,11 @@ expedite:r1,pc
|
||||
64:ppr
|
||||
64:dscr
|
||||
64:tar
|
||||
+64:bescr
|
||||
+64:ebbhr
|
||||
+64:ebbrr
|
||||
+64:mmcr0
|
||||
+64:mmcr2
|
||||
+64:siar
|
||||
+64:sdar
|
||||
+64:sier
|
||||
diff --git a/gdb/regformats/rs6000/powerpc-isa207-vsx64l.dat b/gdb/regformats/rs6000/powerpc-isa207-vsx64l.dat
|
||||
--- a/gdb/regformats/rs6000/powerpc-isa207-vsx64l.dat
|
||||
+++ b/gdb/regformats/rs6000/powerpc-isa207-vsx64l.dat
|
||||
@@ -145,3 +145,11 @@ expedite:r1,pc
|
||||
64:ppr
|
||||
64:dscr
|
||||
64:tar
|
||||
+64:bescr
|
||||
+64:ebbhr
|
||||
+64:ebbrr
|
||||
+64:mmcr0
|
||||
+64:mmcr2
|
||||
+64:siar
|
||||
+64:sdar
|
||||
+64:sier
|
||||
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
|
||||
--- a/gdb/rs6000-tdep.c
|
||||
+++ b/gdb/rs6000-tdep.c
|
||||
@@ -5871,7 +5871,7 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
enum powerpc_elf_abi elf_abi = POWERPC_ELF_AUTO;
|
||||
int have_fpu = 0, have_spe = 0, have_mq = 0, have_altivec = 0;
|
||||
int have_dfp = 0, have_vsx = 0, have_ppr = 0, have_dscr = 0;
|
||||
- int have_tar = 0;
|
||||
+ int have_tar = 0, have_ebb = 0, have_pmu = 0;
|
||||
int tdesc_wordsize = -1;
|
||||
const struct target_desc *tdesc = info.target_desc;
|
||||
struct tdesc_arch_data *tdesc_data = NULL;
|
||||
@@ -6211,6 +6211,64 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
}
|
||||
else
|
||||
have_tar = 0;
|
||||
+
|
||||
+ /* Event-based Branching Registers. */
|
||||
+ feature = tdesc_find_feature (tdesc,
|
||||
+ "org.gnu.gdb.power.ebb");
|
||||
+ if (feature != NULL)
|
||||
+ {
|
||||
+ static const char *const ebb_regs[] = {
|
||||
+ "bescr", "ebbhr", "ebbrr"
|
||||
+ };
|
||||
+
|
||||
+ valid_p = 1;
|
||||
+ for (i = 0; i < ARRAY_SIZE (ebb_regs); i++)
|
||||
+ valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
||||
+ PPC_BESCR_REGNUM + i,
|
||||
+ ebb_regs[i]);
|
||||
+ if (!valid_p)
|
||||
+ {
|
||||
+ tdesc_data_cleanup (tdesc_data);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ have_ebb = 1;
|
||||
+ }
|
||||
+ else
|
||||
+ have_ebb = 0;
|
||||
+
|
||||
+ /* Subset of the ISA 2.07 Performance Monitor Registers provided
|
||||
+ by Linux. */
|
||||
+ feature = tdesc_find_feature (tdesc,
|
||||
+ "org.gnu.gdb.power.linux.pmu");
|
||||
+ if (feature != NULL)
|
||||
+ {
|
||||
+ valid_p = 1;
|
||||
+
|
||||
+ valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
||||
+ PPC_MMCR0_REGNUM,
|
||||
+ "mmcr0");
|
||||
+ valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
||||
+ PPC_MMCR2_REGNUM,
|
||||
+ "mmcr2");
|
||||
+ valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
||||
+ PPC_SIAR_REGNUM,
|
||||
+ "siar");
|
||||
+ valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
||||
+ PPC_SDAR_REGNUM,
|
||||
+ "sdar");
|
||||
+ valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
||||
+ PPC_SIER_REGNUM,
|
||||
+ "sier");
|
||||
+
|
||||
+ if (!valid_p)
|
||||
+ {
|
||||
+ tdesc_data_cleanup (tdesc_data);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ have_pmu = 1;
|
||||
+ }
|
||||
+ else
|
||||
+ have_pmu = 0;
|
||||
}
|
||||
|
||||
/* If we have a 64-bit binary on a 32-bit target, complain. Also
|
||||
@@ -6408,6 +6466,20 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
tdep->ppc_ppr_regnum = have_ppr ? PPC_PPR_REGNUM : -1;
|
||||
tdep->ppc_dscr_regnum = have_dscr ? PPC_DSCR_REGNUM : -1;
|
||||
tdep->ppc_tar_regnum = have_tar ? PPC_TAR_REGNUM : -1;
|
||||
+ tdep->have_ebb = have_ebb;
|
||||
+
|
||||
+ /* If additional pmu registers are added, care must be taken when
|
||||
+ setting new fields in the tdep below, to maintain compatibility
|
||||
+ with features that only provide some of the registers. Currently
|
||||
+ gdb access to the pmu registers is only supported in linux, and
|
||||
+ linux only provides a subset of the pmu registers defined in the
|
||||
+ architecture. */
|
||||
+
|
||||
+ tdep->ppc_mmcr0_regnum = have_pmu ? PPC_MMCR0_REGNUM : -1;
|
||||
+ tdep->ppc_mmcr2_regnum = have_pmu ? PPC_MMCR2_REGNUM : -1;
|
||||
+ tdep->ppc_siar_regnum = have_pmu ? PPC_SIAR_REGNUM : -1;
|
||||
+ tdep->ppc_sdar_regnum = have_pmu ? PPC_SDAR_REGNUM : -1;
|
||||
+ tdep->ppc_sier_regnum = have_pmu ? PPC_SIER_REGNUM : -1;
|
||||
|
||||
set_gdbarch_pc_regnum (gdbarch, PPC_PC_REGNUM);
|
||||
set_gdbarch_sp_regnum (gdbarch, PPC_R0_REGNUM + 1);
|
38
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-13of15.patch
Normal file
38
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-13of15.patch
Normal file
@ -0,0 +1,38 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:18 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-13of15.patch
|
||||
|
||||
;; [PowerPC] Reject tdescs with VSX and no FPU or Altivec
|
||||
;; Pedro Franco de Carvalho, RH BZ 1187581
|
||||
|
||||
[PowerPC] Reject tdescs with VSX and no FPU or Altivec
|
||||
|
||||
Currently rs6000_gdbarch_init will accept a tdesc with the
|
||||
"org.gnu.gdb.power.vsx" feature but without the
|
||||
"org.gnu.gdb.power.altivec" or "org.gnu.gdb.power.fpu".
|
||||
|
||||
It isn't clear from the standard features documentation that these are
|
||||
requirements. However, these tdescs would cause trouble in the VSX
|
||||
pseudo-register functions, so this patch will cause them to be
|
||||
rejected.
|
||||
|
||||
gdb/ChangeLog:
|
||||
2018-10-26 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* rs6000-tdep.c (rs6000_gdbarch_init): Reject tdescs with vsx but
|
||||
without altivec or fpu.
|
||||
|
||||
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
|
||||
--- a/gdb/rs6000-tdep.c
|
||||
+++ b/gdb/rs6000-tdep.c
|
||||
@@ -6096,7 +6096,8 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
||||
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
||||
PPC_VSR0_UPPER_REGNUM + i,
|
||||
vsx_regs[i]);
|
||||
- if (!valid_p)
|
||||
+
|
||||
+ if (!valid_p || !have_fpu || !have_altivec)
|
||||
{
|
||||
tdesc_data_cleanup (tdesc_data);
|
||||
return NULL;
|
4787
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-14of15.patch
Normal file
4787
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-14of15.patch
Normal file
File diff suppressed because it is too large
Load Diff
43
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-15of15.patch
Normal file
43
SOURCES/gdb-rhbz1187581-power8-regs-not-in-8.2-15of15.patch
Normal file
@ -0,0 +1,43 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 11 Jan 2019 17:02:19 -0500
|
||||
Subject: gdb-rhbz1187581-power8-regs-not-in-8.2-15of15.patch
|
||||
|
||||
;; [PowerPC] Document requirements for VSX feature
|
||||
;; Pedro Franco de Carvalho, RH BZ 1187581
|
||||
|
||||
[PowerPC] Document requirements for VSX feature
|
||||
|
||||
As suggested in
|
||||
https://sourceware.org/ml/gdb-patches/2018-10/msg00510.html, this
|
||||
patch changes the documentation for the VSX tdesc feature to make it
|
||||
clear that the altivec and FPU features are requirements.
|
||||
|
||||
gdb/doc/ChangeLog:
|
||||
2018-11-09 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
|
||||
|
||||
* gdb.texinfo (PowerPC Features): Document the altivec and fpu
|
||||
requirements for the org.gnu.gdb.power.vsx feature.
|
||||
|
||||
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
||||
--- a/gdb/doc/gdb.texinfo
|
||||
+++ b/gdb/doc/gdb.texinfo
|
||||
@@ -42541,11 +42541,13 @@ contain registers @samp{vr0} through @samp{vr31}, @samp{vscr},
|
||||
and @samp{vrsave}.
|
||||
|
||||
The @samp{org.gnu.gdb.power.vsx} feature is optional. It should
|
||||
-contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN}
|
||||
-will combine these registers with the floating point registers
|
||||
-(@samp{f0} through @samp{f31}) and the altivec registers (@samp{vr0}
|
||||
-through @samp{vr31}) to present the 128-bit wide registers @samp{vs0}
|
||||
-through @samp{vs63}, the set of vector registers for POWER7.
|
||||
+contain registers @samp{vs0h} through @samp{vs31h}. @value{GDBN} will
|
||||
+combine these registers with the floating point registers (@samp{f0}
|
||||
+through @samp{f31}) and the altivec registers (@samp{vr0} through
|
||||
+@samp{vr31}) to present the 128-bit wide registers @samp{vs0} through
|
||||
+@samp{vs63}, the set of vector-scalar registers for POWER7.
|
||||
+Therefore, this feature requires both @samp{org.gnu.gdb.power.fpu} and
|
||||
+@samp{org.gnu.gdb.power.altivec}.
|
||||
|
||||
The @samp{org.gnu.gdb.power.spe} feature is optional. It should
|
||||
contain registers @samp{ev0h} through @samp{ev31h}, @samp{acc}, and
|
20
SOURCES/gdb-rhbz1666249-suggest-yum-instead-of-dnf.patch
Normal file
20
SOURCES/gdb-rhbz1666249-suggest-yum-instead-of-dnf.patch
Normal file
@ -0,0 +1,20 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Fri, 8 Mar 2019 11:39:10 -0800
|
||||
Subject: gdb-rhbz1666249-suggest-yum-instead-of-dnf.patch
|
||||
|
||||
;; Fix 'gdb suggests using "dnf debuginfo-install'
|
||||
;; Keith Seitz, RHBZ 1666249
|
||||
|
||||
diff --git a/gdb/build-id.c b/gdb/build-id.c
|
||||
--- a/gdb/build-id.c
|
||||
+++ b/gdb/build-id.c
|
||||
@@ -1013,6 +1013,8 @@ missing_rpm_list_print (void)
|
||||
printf_unfiltered (_("Missing separate debuginfos, use: %s"),
|
||||
#ifdef DNF_DEBUGINFO_INSTALL
|
||||
"dnf "
|
||||
+#else
|
||||
+ "yum "
|
||||
#endif
|
||||
"debuginfo-install");
|
||||
for (array_iter = array; array_iter < array + missing_rpm_list_entries;
|
1699
SOURCES/gdb-rhbz1668635-libiberty-demangle_template-memleak.patch
Normal file
1699
SOURCES/gdb-rhbz1668635-libiberty-demangle_template-memleak.patch
Normal file
File diff suppressed because it is too large
Load Diff
69
SOURCES/gdb-rhbz1708192-parse_macro_definition-crash.patch
Normal file
69
SOURCES/gdb-rhbz1708192-parse_macro_definition-crash.patch
Normal file
@ -0,0 +1,69 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
Date: Fri, 10 May 2019 16:57:26 -0400
|
||||
Subject: gdb-rhbz1708192-parse_macro_definition-crash.patch
|
||||
|
||||
;; "Fix" segfault that happens on parse_macro_definition because
|
||||
;; debugedit corrupts the .debug_macro section.
|
||||
;; Sergio Durigan Junior, RH BZ 1708192.
|
||||
|
||||
Don't crash if dwarf_decode_macro_bytes's 'body' is NULL
|
||||
|
||||
Hi,
|
||||
|
||||
Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1708786
|
||||
|
||||
During the Fedora RPM build process, gdb-add-index is invoked to
|
||||
extract the DWARF index from the binary, and GDB will segfault because
|
||||
dwarf2read.c:parse_definition_macro's 'body' variable is NULL.
|
||||
|
||||
The underlying problem is that Fedora's rpm-build's "debugedit"
|
||||
program will silently corrupt .debug_macro strings when a binary is
|
||||
compiled with -g3. This is being taken care of by Mark Wielaard,
|
||||
here:
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1708786
|
||||
|
||||
However, I still feel it's important to make GDB more resilient
|
||||
against invalid DWARF input, so I'm proposing this rather simple patch
|
||||
to catch the situation when "body == NULL" (i.e., it's probably been
|
||||
corrupted) and issue a complaint. This is not a real fix to the
|
||||
problem, of course, but at least GDB is able to finish without
|
||||
segfaulting.
|
||||
|
||||
OK for master?
|
||||
|
||||
gdb/ChangeLog:
|
||||
2019-05-15 Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
|
||||
Ref.: https://bugzilla.redhat.com/show_bug.cgi?id=1708192
|
||||
* dwarf2read.c (dwarf_decode_macro_bytes): Check whether 'body' is
|
||||
NULL, and complain if that's the case.
|
||||
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -24355,7 +24355,21 @@ dwarf_decode_macro_bytes (struct dwarf2_per_objfile *dwarf2_per_objfile,
|
||||
is_define ? _("definition") : _("undefinition"),
|
||||
line == 0 ? _("zero") : _("non-zero"), line, body);
|
||||
|
||||
- if (is_define)
|
||||
+ if (body == NULL)
|
||||
+ {
|
||||
+ /* Fedora's rpm-build's "debugedit" binary
|
||||
+ corrupted .debug_macro sections.
|
||||
+
|
||||
+ For more info, see
|
||||
+ https://bugzilla.redhat.com/show_bug.cgi?id=1708786 */
|
||||
+ complaint (_("debug info gives %s invalid macro %s "
|
||||
+ "without body (corrupted?) at line %d "
|
||||
+ "on file %s"),
|
||||
+ at_commandline ? _("command-line") : _("in-file"),
|
||||
+ is_define ? _("definition") : _("undefinition"),
|
||||
+ line, current_file->filename);
|
||||
+ }
|
||||
+ else if (is_define)
|
||||
parse_macro_definition (current_file, line, body);
|
||||
else
|
||||
{
|
128
SOURCES/gdb-rhbz1742099-reject-sections-with-invalid-sizes.patch
Normal file
128
SOURCES/gdb-rhbz1742099-reject-sections-with-invalid-sizes.patch
Normal file
@ -0,0 +1,128 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Keith Seitz <keiths@redhat.com>
|
||||
Date: Thu, 17 Oct 2019 09:44:15 -0700
|
||||
Subject: gdb-rhbz1742099-reject-sections-with-invalid-sizes.patch
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
;; Prevent buffer overflow with sections with invalid sizes.
|
||||
;; Keith Seitz, RH BZ 1740299.
|
||||
|
||||
DWARF reader: Reject sections with invalid sizes
|
||||
|
||||
This is another fuzzer bug, gdb/23567. This time, the fuzzer has
|
||||
specifically altered the size of .debug_str:
|
||||
|
||||
$ eu-readelf -S objdump
|
||||
Section Headers:
|
||||
[Nr] Name Type Addr Off Size ES Flags Lk Inf Al
|
||||
[31] .debug_str PROGBITS 0000000000000000 0057116d ffffffffffffffff 1 MS 0 0 1
|
||||
|
||||
When this file is loaded into GDB, the DWARF reader crashes attempting
|
||||
to access the string table (or it may just store a bunch of nonsense):
|
||||
|
||||
[gdb-8.3-6-fc30]
|
||||
$ gdb -nx -q objdump
|
||||
BFD: warning: /path/to/objdump has a corrupt section with a size (ffffffffffffffff) larger than the file size
|
||||
Reading symbols from /path/to/objdump...
|
||||
Segmentation fault (core dumped)
|
||||
|
||||
Nick has already committed a BFD patch to issue the warning seen above.
|
||||
|
||||
[gdb master 6acc1a0b]
|
||||
$ gdb -BFD: warning: /path/to/objdump has a corrupt section with a size (ffffffffffffffff) larger than the file size
|
||||
Reading symbols from /path/to/objdump...
|
||||
(gdb) inf func
|
||||
All defined functions:
|
||||
|
||||
File ./../include/dwarf2.def:
|
||||
186: const
|
||||
|
||||
8 *>(.:
|
||||
;'@<40>B);
|
||||
747: const
|
||||
|
||||
8 *<2A>(.:
|
||||
;'@<40>B);
|
||||
701: const
|
||||
|
||||
8 *<2A>D <20>
|
||||
(.:
|
||||
;'@<40>B);
|
||||
71: const
|
||||
|
||||
8 *(.:
|
||||
;'@<40>B);
|
||||
/* and more gibberish */
|
||||
|
||||
Consider read_indirect_string_at_offset_from:
|
||||
|
||||
static const char *
|
||||
read_indirect_string_at_offset_from (struct objfile *objfile,
|
||||
bfd *abfd, LONGEST str_offset,
|
||||
struct dwarf2_section_info *sect,
|
||||
const char *form_name,
|
||||
const char *sect_name)
|
||||
{
|
||||
dwarf2_read_section (objfile, sect);
|
||||
if (sect->buffer == NULL)
|
||||
error (_("%s used without %s section [in module %s]"),
|
||||
form_name, sect_name, bfd_get_filename (abfd));
|
||||
if (str_offset >= sect->size)
|
||||
error (_("%s pointing outside of %s section [in module %s]"),
|
||||
form_name, sect_name, bfd_get_filename (abfd));
|
||||
gdb_assert (HOST_CHAR_BIT == 8);
|
||||
if (sect->buffer[str_offset] == '\0')
|
||||
return NULL;
|
||||
return (const char *) (sect->buffer + str_offset);
|
||||
}
|
||||
|
||||
With sect_size being ginormous, the code attempts to access
|
||||
sect->buffer[GINORMOUS], and depending on the layout of memory,
|
||||
GDB either stores a bunch of gibberish strings or crashes.
|
||||
|
||||
This is an attempt to mitigate this by implementing a similar approach
|
||||
used by BFD. In our case, we simply reject the section with the invalid
|
||||
length:
|
||||
|
||||
$ ./gdb -nx -q objdump
|
||||
BFD: warning: /path/to/objdump has a corrupt section with a size (ffffffffffffffff) larger than the file size
|
||||
Reading symbols from /path/to/objdump...
|
||||
|
||||
warning: Discarding section .debug_str which has a section size (ffffffffffffffff) larger than the file size [in module /path/to/objdump]
|
||||
DW_FORM_strp used without .debug_str section [in module /path/to/objdump]
|
||||
(No debugging symbols found in /path/to/objdump)
|
||||
(gdb)
|
||||
|
||||
Unfortunately, I have not found a way to regression test this, since it
|
||||
requires poking ELF section headers.
|
||||
|
||||
gdb/ChangeLog:
|
||||
2019-10-16 Keith Seitz <keiths@redhat.com>
|
||||
|
||||
PR gdb/23567
|
||||
* dwarf2read.c (dwarf2_per_objfile::locate_sections): Discard
|
||||
sections whose size is greater than the file size.
|
||||
|
||||
Change-Id: I896ac3b4eb2207c54e8e05c16beab3051d9b4b2f
|
||||
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -2335,6 +2335,15 @@ dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
|
||||
if ((aflag & SEC_HAS_CONTENTS) == 0)
|
||||
{
|
||||
}
|
||||
+ else if (elf_section_data (sectp)->this_hdr.sh_size
|
||||
+ > bfd_get_file_size (abfd))
|
||||
+ {
|
||||
+ bfd_size_type size = elf_section_data (sectp)->this_hdr.sh_size;
|
||||
+ warning (_("Discarding section %s which has a section size (%s"
|
||||
+ ") larger than the file size [in module %s]"),
|
||||
+ bfd_section_name (abfd, sectp), phex_nz (size, sizeof (size)),
|
||||
+ bfd_get_filename (abfd));
|
||||
+ }
|
||||
else if (section_is_p (sectp->name, &names.info))
|
||||
{
|
||||
this->info.s.section = sectp;
|
49
SOURCES/gdb-rhbz1768593-s390x-arch13-01.patch
Normal file
49
SOURCES/gdb-rhbz1768593-s390x-arch13-01.patch
Normal file
@ -0,0 +1,49 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
Date: Tue, 7 Jan 2020 21:02:19 -0500
|
||||
Subject: gdb-rhbz1768593-s390x-arch13-01.patch
|
||||
|
||||
;; Fix 'GDB needs s390x arch13 binutils patches'
|
||||
;; RHBZ 1768593, Andreas Krebbel
|
||||
;; This patch contains only the opcodes change.
|
||||
|
||||
S/390: Support vector alignment hints
|
||||
|
||||
This patch adds the vector alignment hints to the vector load and
|
||||
store instructions as documented in the IBM z14 Principles of
|
||||
Operations manual:
|
||||
|
||||
http://publibfi.boulder.ibm.com/epubs/pdf/dz9zr011.pdf
|
||||
|
||||
opcodes/ChangeLog:
|
||||
|
||||
2018-10-23 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
* s390-opc.txt: Add vector load/store instructions with additional
|
||||
alignment parameter.
|
||||
|
||||
gas/ChangeLog:
|
||||
|
||||
2018-10-23 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
* config/tc-s390.c (md_gather_operands): Fix for optional operands
|
||||
following memory addresses.
|
||||
* testsuite/gas/s390/zarch-arch12.d: Add regexp checks for new
|
||||
instruction variants.
|
||||
* testsuite/gas/s390/zarch-arch12.s: Emit new instruction
|
||||
variants.
|
||||
|
||||
diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt
|
||||
--- a/opcodes/s390-opc.txt
|
||||
+++ b/opcodes/s390-opc.txt
|
||||
@@ -1880,3 +1880,10 @@ b929 kma RRF_R0RR "cipher message with galois counter mode" arch12 zarch
|
||||
b93c prno RRE_RR "perform pseudorandom number operation" arch12 zarch
|
||||
b9a1 tpei RRE_RR "test pending external interruption" arch12 zarch
|
||||
b9ac irbm RRE_RR "insert reference bits multiple" arch12 zarch
|
||||
+
|
||||
+# Aligned vector store hints
|
||||
+
|
||||
+e70000000006 vl VRX_VRRDU "vector memory load" arch12 zarch optparm
|
||||
+e70000000036 vlm VRS_VVRDU "vector load multiple" arch12 zarch optparm
|
||||
+e7000000000e vst VRX_VRRDU "vector store" arch12 zarch optparm
|
||||
+e7000000003e vstm VRS_VVRDU "vector store multiple" arch12 zarch optparm
|
217
SOURCES/gdb-rhbz1768593-s390x-arch13-02.patch
Normal file
217
SOURCES/gdb-rhbz1768593-s390x-arch13-02.patch
Normal file
@ -0,0 +1,217 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
Date: Tue, 7 Jan 2020 21:07:53 -0500
|
||||
Subject: gdb-rhbz1768593-s390x-arch13-02.patch
|
||||
|
||||
;; Fix 'GDB needs s390x arch13 binutils patches'
|
||||
;; RHBZ 1768593, Andreas Krebbel
|
||||
;; This patch contains only the opcodes and include changes.
|
||||
|
||||
S/390: Implement instruction set extensions
|
||||
|
||||
opcodes/ChangeLog:
|
||||
|
||||
2019-01-31 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
Backport from mainline
|
||||
2019-01-31 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
* s390-mkopc.c (main): Accept arch13 as cpu string.
|
||||
* s390-opc.c: Add new instruction formats and instruction opcode
|
||||
masks.
|
||||
* s390-opc.txt: Add new arch13 instructions.
|
||||
|
||||
include/ChangeLog:
|
||||
|
||||
2019-01-31 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
Backport from mainline
|
||||
2019-01-31 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
* opcode/s390.h (enum s390_opcode_cpu_val): Add
|
||||
S390_OPCODE_ARCH13.
|
||||
|
||||
gas/ChangeLog:
|
||||
|
||||
2019-01-31 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
Backport from mainline
|
||||
2019-01-31 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
* config/tc-s390.c (s390_parse_cpu): New entry for arch13.
|
||||
* doc/c-s390.texi: Document arch13 march option.
|
||||
* testsuite/gas/s390/s390.exp: Run the arch13 related tests.
|
||||
* testsuite/gas/s390/zarch-arch13.d: New test.
|
||||
* testsuite/gas/s390/zarch-arch13.s: New test.
|
||||
* testsuite/gas/s390/zarch-z13.d: Expect the renamed mnemonics
|
||||
also for z13.
|
||||
|
||||
diff --git a/include/opcode/s390.h b/include/opcode/s390.h
|
||||
--- a/include/opcode/s390.h
|
||||
+++ b/include/opcode/s390.h
|
||||
@@ -43,6 +43,7 @@ enum s390_opcode_cpu_val
|
||||
S390_OPCODE_ZEC12,
|
||||
S390_OPCODE_Z13,
|
||||
S390_OPCODE_ARCH12,
|
||||
+ S390_OPCODE_ARCH13,
|
||||
S390_OPCODE_MAXCPU
|
||||
};
|
||||
|
||||
diff --git a/opcodes/s390-mkopc.c b/opcodes/s390-mkopc.c
|
||||
--- a/opcodes/s390-mkopc.c
|
||||
+++ b/opcodes/s390-mkopc.c
|
||||
@@ -377,6 +377,8 @@ main (void)
|
||||
else if (strcmp (cpu_string, "z14") == 0
|
||||
|| strcmp (cpu_string, "arch12") == 0)
|
||||
min_cpu = S390_OPCODE_ARCH12;
|
||||
+ else if (strcmp (cpu_string, "arch13") == 0)
|
||||
+ min_cpu = S390_OPCODE_ARCH13;
|
||||
else {
|
||||
fprintf (stderr, "Couldn't parse cpu string %s\n", cpu_string);
|
||||
exit (1);
|
||||
diff --git a/opcodes/s390-opc.c b/opcodes/s390-opc.c
|
||||
--- a/opcodes/s390-opc.c
|
||||
+++ b/opcodes/s390-opc.c
|
||||
@@ -359,6 +359,7 @@ const struct s390_operand s390_operands[] =
|
||||
#define INSTR_RRF_RURR2 4, { R_24,R_16,R_28,U4_20,0,0 } /* e.g. lptea */
|
||||
#define INSTR_RRF_R0RR 4, { R_24,R_16,R_28,0,0,0 } /* e.g. idte */
|
||||
#define INSTR_RRF_R0RR2 4, { R_24,R_28,R_16,0,0,0 } /* e.g. ark */
|
||||
+#define INSTR_RRF_R0RR3 4, { R_24,R_28,R_16,0,0,0 } /* e.g. selrz */
|
||||
#define INSTR_RRF_U0FF 4, { F_24,U4_16,F_28,0,0,0 } /* e.g. fidbr */
|
||||
#define INSTR_RRF_U0FEFE 4, { FE_24,U4_16,FE_28,0,0,0 } /* e.g. fixbr */
|
||||
#define INSTR_RRF_U0RF 4, { R_24,U4_16,F_28,0,0,0 } /* e.g. cfebr */
|
||||
@@ -513,6 +514,7 @@ const struct s390_operand s390_operands[] =
|
||||
#define INSTR_VRR_VV0U0U 6, { V_8,V_12,U4_32,U4_24,0,0 } /* e.g. vistr */
|
||||
#define INSTR_VRR_0VV0U 6, { V_12,V_16,U4_24,0,0,0 } /* e.g. vcp */
|
||||
#define INSTR_VRR_RV0U 6, { R_8,V_12,U4_24,0,0,0 } /* e.g. vcvb */
|
||||
+#define INSTR_VRR_RV0UU 6, { R_8,V_12,U4_24,U4_28,0,0 } /* e.g. vcvb */
|
||||
#define INSTR_VSI_URDV 6, { V_32,D_20,B_16,U8_8,0,0 } /* e.g. vlrl */
|
||||
|
||||
#define MASK_E { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
@@ -578,6 +580,7 @@ const struct s390_operand s390_operands[] =
|
||||
#define MASK_RRF_RURR2 { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_R0RR { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_R0RR2 { 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }
|
||||
+#define MASK_RRF_R0RR3 { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_U0FF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_U0FEFE { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 }
|
||||
#define MASK_RRF_U0RF { 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00 }
|
||||
@@ -732,6 +735,7 @@ const struct s390_operand s390_operands[] =
|
||||
#define MASK_VRR_VV0U0U { 0xff, 0x00, 0xff, 0x0f, 0x00, 0xff }
|
||||
#define MASK_VRR_0VV0U { 0xff, 0xf0, 0x0f, 0x0f, 0xf0, 0xff }
|
||||
#define MASK_VRR_RV0U { 0xff, 0x00, 0xff, 0x0f, 0xf0, 0xff }
|
||||
+#define MASK_VRR_RV0UU { 0xff, 0x00, 0xff, 0x00, 0xf0, 0xff }
|
||||
#define MASK_VSI_URDV { 0xff, 0x00, 0x00, 0x00, 0x00, 0xff }
|
||||
|
||||
|
||||
diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt
|
||||
--- a/opcodes/s390-opc.txt
|
||||
+++ b/opcodes/s390-opc.txt
|
||||
@@ -1887,3 +1887,107 @@ e70000000006 vl VRX_VRRDU "vector memory load" arch12 zarch optparm
|
||||
e70000000036 vlm VRS_VVRDU "vector load multiple" arch12 zarch optparm
|
||||
e7000000000e vst VRX_VRRDU "vector store" arch12 zarch optparm
|
||||
e7000000003e vstm VRS_VVRDU "vector store multiple" arch12 zarch optparm
|
||||
+
|
||||
+# arch13 instructions
|
||||
+
|
||||
+b9f5 ncrk RRF_R0RR2 " " arch13 zarch
|
||||
+b9e5 ncgrk RRF_R0RR2 " " arch13 zarch
|
||||
+e50a mvcrl SSE_RDRD " " arch13 zarch
|
||||
+b974 nnrk RRF_R0RR2 " " arch13 zarch
|
||||
+b964 nngrk RRF_R0RR2 " " arch13 zarch
|
||||
+b976 nork RRF_R0RR2 " " arch13 zarch
|
||||
+b966 nogrk RRF_R0RR2 " " arch13 zarch
|
||||
+b977 nxrk RRF_R0RR2 " " arch13 zarch
|
||||
+b967 nxgrk RRF_R0RR2 " " arch13 zarch
|
||||
+b975 ocrk RRF_R0RR2 " " arch13 zarch
|
||||
+b965 ocgrk RRF_R0RR2 " " arch13 zarch
|
||||
+b9e1 popcnt RRF_U0RR " " arch13 zarch optparm
|
||||
+b9f0 selr RRF_RURR " " arch13 zarch
|
||||
+b9f00000 selr*20 RRF_R0RR3 " " arch13 zarch
|
||||
+b9e3 selgr RRF_RURR " " arch13 zarch
|
||||
+b9e30000 selgr*20 RRF_R0RR3 " " arch13 zarch
|
||||
+b9c0 selhhhr RRF_RURR " " arch13 zarch
|
||||
+b9c00000 selhhhr*20 RRF_R0RR3 " " arch13 zarch
|
||||
+
|
||||
+e60000000006 vlbr VRX_VRRDU " " arch13 zarch
|
||||
+e60000001006 vlbrh VRX_VRRD " " arch13 zarch
|
||||
+e60000002006 vlbrf VRX_VRRD " " arch13 zarch
|
||||
+e60000003006 vlbrg VRX_VRRD " " arch13 zarch
|
||||
+e60000004006 vlbrq VRX_VRRD " " arch13 zarch
|
||||
+
|
||||
+e60000000007 vler VRX_VRRDU " " arch13 zarch
|
||||
+e60000001007 vlerh VRX_VRRD " " arch13 zarch
|
||||
+e60000002007 vlerf VRX_VRRD " " arch13 zarch
|
||||
+e60000003007 vlerg VRX_VRRD " " arch13 zarch
|
||||
+
|
||||
+e60000000004 vllebrz VRX_VRRDU " " arch13 zarch
|
||||
+e60000001004 vllebrzh VRX_VRRD " " arch13 zarch
|
||||
+e60000002004 vllebrzf VRX_VRRD " " arch13 zarch
|
||||
+e60000003004 ldrv VRX_VRRD " " arch13 zarch
|
||||
+e60000003004 vllebrzg VRX_VRRD " " arch13 zarch
|
||||
+e60000006004 lerv VRX_VRRD " " arch13 zarch
|
||||
+e60000006004 vllebrze VRX_VRRD " " arch13 zarch
|
||||
+
|
||||
+e60000000001 vlebrh VRX_VRRDU " " arch13 zarch
|
||||
+e60000000003 vlebrf VRX_VRRDU " " arch13 zarch
|
||||
+e60000000002 vlebrg VRX_VRRDU " " arch13 zarch
|
||||
+
|
||||
+e60000000005 vlbrrep VRX_VRRDU " " arch13 zarch
|
||||
+e60000001005 vlbrreph VRX_VRRD " " arch13 zarch
|
||||
+e60000002005 vlbrrepf VRX_VRRD " " arch13 zarch
|
||||
+e60000003005 vlbrrepg VRX_VRRD " " arch13 zarch
|
||||
+
|
||||
+e6000000000e vstbr VRX_VRRDU " " arch13 zarch
|
||||
+e6000000100e vstbrh VRX_VRRD " " arch13 zarch
|
||||
+e6000000200e vstbrf VRX_VRRD " " arch13 zarch
|
||||
+e6000000300e vstbrg VRX_VRRD " " arch13 zarch
|
||||
+e6000000400e vstbrq VRX_VRRD " " arch13 zarch
|
||||
+
|
||||
+e6000000000f vster VRX_VRRDU " " arch13 zarch
|
||||
+e6000000100f vsterh VRX_VRRD " " arch13 zarch
|
||||
+e6000000200f vsterf VRX_VRRD " " arch13 zarch
|
||||
+e6000000300f vsterg VRX_VRRD " " arch13 zarch
|
||||
+
|
||||
+e60000000009 vstebrh VRX_VRRDU " " arch13 zarch
|
||||
+e6000000000b vstebrf VRX_VRRDU " " arch13 zarch
|
||||
+e6000000000b sterv VRX_VRRD " " arch13 zarch
|
||||
+e6000000000a vstebrg VRX_VRRDU " " arch13 zarch
|
||||
+e6000000000a stdrv VRX_VRRD " " arch13 zarch
|
||||
+
|
||||
+e70000000086 vsld VRI_VVV0U " " arch13 zarch
|
||||
+e70000000087 vsrd VRI_VVV0U " " arch13 zarch
|
||||
+
|
||||
+e7000000008b vstrs VRR_VVVUU0V " " arch13 zarch optparm
|
||||
+
|
||||
+e7000000008b vstrsb VRR_VVVU0VB " " arch13 zarch optparm
|
||||
+e7000100008b vstrsh VRR_VVVU0VB " " arch13 zarch optparm
|
||||
+e7000200008b vstrsf VRR_VVVU0VB " " arch13 zarch optparm
|
||||
+
|
||||
+e7000020008b vstrszb VRR_VVVU0VB2 " " arch13 zarch optparm
|
||||
+e7000120008b vstrszh VRR_VVVU0VB2 " " arch13 zarch optparm
|
||||
+e7000220008b vstrszf VRR_VVVU0VB2 " " arch13 zarch optparm
|
||||
+
|
||||
+e700000000c3 vcfps VRR_VV0UUU " " arch13 zarch
|
||||
+e700000020c3 vcefb VRR_VV0UU " " arch13 zarch
|
||||
+e700000820c3 wcefb VRR_VV0UU8 " " arch13 zarch
|
||||
+
|
||||
+e700000000c1 vcfpl VRR_VV0UUU " " arch13 zarch
|
||||
+e700000020c1 vcelfb VRR_VV0UU " " arch13 zarch
|
||||
+e700000820c1 wcelfb VRR_VV0UU8 " " arch13 zarch
|
||||
+
|
||||
+e700000000c2 vcsfp VRR_VV0UUU " " arch13 zarch
|
||||
+e700000020c2 vcfeb VRR_VV0UU " " arch13 zarch
|
||||
+e700000820c2 wcfeb VRR_VV0UU8 " " arch13 zarch
|
||||
+
|
||||
+e700000000c0 vclfp VRR_VV0UUU " " arch13 zarch
|
||||
+e700000020c0 vclfeb VRR_VV0UU " " arch13 zarch
|
||||
+e700000820c0 wclfeb VRR_VV0UU8 " " arch13 zarch
|
||||
+
|
||||
+b939 dfltcc RRF_R0RR2 " " arch13 zarch
|
||||
+
|
||||
+b938 sortl RRE_RR " " arch13 zarch
|
||||
+
|
||||
+e60000000050 vcvb VRR_RV0UU " " arch13 zarch optparm
|
||||
+e60000000052 vcvbg VRR_RV0UU " " arch13 zarch optparm
|
||||
+
|
||||
+b93a kdsa RRE_RR " " arch13 zarch
|
241
SOURCES/gdb-rhbz1768593-s390x-arch13-03.patch
Normal file
241
SOURCES/gdb-rhbz1768593-s390x-arch13-03.patch
Normal file
@ -0,0 +1,241 @@
|
||||
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||
From: Sergio Durigan Junior <sergiodj@redhat.com>
|
||||
Date: Tue, 7 Jan 2020 21:08:22 -0500
|
||||
Subject: gdb-rhbz1768593-s390x-arch13-03.patch
|
||||
|
||||
;; Fix 'GDB needs s390x arch13 binutils patches'
|
||||
;; RHBZ 1768593, Andreas Krebbel
|
||||
|
||||
S/390: arch13: Add instruction descriptions
|
||||
|
||||
opcodes/ChangeLog:
|
||||
|
||||
2019-03-12 Andreas Krebbel <krebbel@linux.ibm.com>
|
||||
|
||||
* s390-opc.txt: Add instruction descriptions.
|
||||
|
||||
diff --git a/opcodes/s390-opc.txt b/opcodes/s390-opc.txt
|
||||
--- a/opcodes/s390-opc.txt
|
||||
+++ b/opcodes/s390-opc.txt
|
||||
@@ -1888,106 +1888,120 @@ e70000000036 vlm VRS_VVRDU "vector load multiple" arch12 zarch optparm
|
||||
e7000000000e vst VRX_VRRDU "vector store" arch12 zarch optparm
|
||||
e7000000003e vstm VRS_VVRDU "vector store multiple" arch12 zarch optparm
|
||||
|
||||
+
|
||||
# arch13 instructions
|
||||
|
||||
-b9f5 ncrk RRF_R0RR2 " " arch13 zarch
|
||||
-b9e5 ncgrk RRF_R0RR2 " " arch13 zarch
|
||||
-e50a mvcrl SSE_RDRD " " arch13 zarch
|
||||
-b974 nnrk RRF_R0RR2 " " arch13 zarch
|
||||
-b964 nngrk RRF_R0RR2 " " arch13 zarch
|
||||
-b976 nork RRF_R0RR2 " " arch13 zarch
|
||||
-b966 nogrk RRF_R0RR2 " " arch13 zarch
|
||||
-b977 nxrk RRF_R0RR2 " " arch13 zarch
|
||||
-b967 nxgrk RRF_R0RR2 " " arch13 zarch
|
||||
-b975 ocrk RRF_R0RR2 " " arch13 zarch
|
||||
-b965 ocgrk RRF_R0RR2 " " arch13 zarch
|
||||
-b9e1 popcnt RRF_U0RR " " arch13 zarch optparm
|
||||
-b9f0 selr RRF_RURR " " arch13 zarch
|
||||
-b9f00000 selr*20 RRF_R0RR3 " " arch13 zarch
|
||||
-b9e3 selgr RRF_RURR " " arch13 zarch
|
||||
-b9e30000 selgr*20 RRF_R0RR3 " " arch13 zarch
|
||||
-b9c0 selhhhr RRF_RURR " " arch13 zarch
|
||||
-b9c00000 selhhhr*20 RRF_R0RR3 " " arch13 zarch
|
||||
-
|
||||
-e60000000006 vlbr VRX_VRRDU " " arch13 zarch
|
||||
-e60000001006 vlbrh VRX_VRRD " " arch13 zarch
|
||||
-e60000002006 vlbrf VRX_VRRD " " arch13 zarch
|
||||
-e60000003006 vlbrg VRX_VRRD " " arch13 zarch
|
||||
-e60000004006 vlbrq VRX_VRRD " " arch13 zarch
|
||||
-
|
||||
-e60000000007 vler VRX_VRRDU " " arch13 zarch
|
||||
-e60000001007 vlerh VRX_VRRD " " arch13 zarch
|
||||
-e60000002007 vlerf VRX_VRRD " " arch13 zarch
|
||||
-e60000003007 vlerg VRX_VRRD " " arch13 zarch
|
||||
-
|
||||
-e60000000004 vllebrz VRX_VRRDU " " arch13 zarch
|
||||
-e60000001004 vllebrzh VRX_VRRD " " arch13 zarch
|
||||
-e60000002004 vllebrzf VRX_VRRD " " arch13 zarch
|
||||
-e60000003004 ldrv VRX_VRRD " " arch13 zarch
|
||||
-e60000003004 vllebrzg VRX_VRRD " " arch13 zarch
|
||||
-e60000006004 lerv VRX_VRRD " " arch13 zarch
|
||||
-e60000006004 vllebrze VRX_VRRD " " arch13 zarch
|
||||
-
|
||||
-e60000000001 vlebrh VRX_VRRDU " " arch13 zarch
|
||||
-e60000000003 vlebrf VRX_VRRDU " " arch13 zarch
|
||||
-e60000000002 vlebrg VRX_VRRDU " " arch13 zarch
|
||||
-
|
||||
-e60000000005 vlbrrep VRX_VRRDU " " arch13 zarch
|
||||
-e60000001005 vlbrreph VRX_VRRD " " arch13 zarch
|
||||
-e60000002005 vlbrrepf VRX_VRRD " " arch13 zarch
|
||||
-e60000003005 vlbrrepg VRX_VRRD " " arch13 zarch
|
||||
-
|
||||
-e6000000000e vstbr VRX_VRRDU " " arch13 zarch
|
||||
-e6000000100e vstbrh VRX_VRRD " " arch13 zarch
|
||||
-e6000000200e vstbrf VRX_VRRD " " arch13 zarch
|
||||
-e6000000300e vstbrg VRX_VRRD " " arch13 zarch
|
||||
-e6000000400e vstbrq VRX_VRRD " " arch13 zarch
|
||||
-
|
||||
-e6000000000f vster VRX_VRRDU " " arch13 zarch
|
||||
-e6000000100f vsterh VRX_VRRD " " arch13 zarch
|
||||
-e6000000200f vsterf VRX_VRRD " " arch13 zarch
|
||||
-e6000000300f vsterg VRX_VRRD " " arch13 zarch
|
||||
-
|
||||
-e60000000009 vstebrh VRX_VRRDU " " arch13 zarch
|
||||
-e6000000000b vstebrf VRX_VRRDU " " arch13 zarch
|
||||
-e6000000000b sterv VRX_VRRD " " arch13 zarch
|
||||
-e6000000000a vstebrg VRX_VRRDU " " arch13 zarch
|
||||
-e6000000000a stdrv VRX_VRRD " " arch13 zarch
|
||||
-
|
||||
-e70000000086 vsld VRI_VVV0U " " arch13 zarch
|
||||
-e70000000087 vsrd VRI_VVV0U " " arch13 zarch
|
||||
-
|
||||
-e7000000008b vstrs VRR_VVVUU0V " " arch13 zarch optparm
|
||||
-
|
||||
-e7000000008b vstrsb VRR_VVVU0VB " " arch13 zarch optparm
|
||||
-e7000100008b vstrsh VRR_VVVU0VB " " arch13 zarch optparm
|
||||
-e7000200008b vstrsf VRR_VVVU0VB " " arch13 zarch optparm
|
||||
-
|
||||
-e7000020008b vstrszb VRR_VVVU0VB2 " " arch13 zarch optparm
|
||||
-e7000120008b vstrszh VRR_VVVU0VB2 " " arch13 zarch optparm
|
||||
-e7000220008b vstrszf VRR_VVVU0VB2 " " arch13 zarch optparm
|
||||
-
|
||||
-e700000000c3 vcfps VRR_VV0UUU " " arch13 zarch
|
||||
-e700000020c3 vcefb VRR_VV0UU " " arch13 zarch
|
||||
-e700000820c3 wcefb VRR_VV0UU8 " " arch13 zarch
|
||||
-
|
||||
-e700000000c1 vcfpl VRR_VV0UUU " " arch13 zarch
|
||||
-e700000020c1 vcelfb VRR_VV0UU " " arch13 zarch
|
||||
-e700000820c1 wcelfb VRR_VV0UU8 " " arch13 zarch
|
||||
-
|
||||
-e700000000c2 vcsfp VRR_VV0UUU " " arch13 zarch
|
||||
-e700000020c2 vcfeb VRR_VV0UU " " arch13 zarch
|
||||
-e700000820c2 wcfeb VRR_VV0UU8 " " arch13 zarch
|
||||
-
|
||||
-e700000000c0 vclfp VRR_VV0UUU " " arch13 zarch
|
||||
-e700000020c0 vclfeb VRR_VV0UU " " arch13 zarch
|
||||
-e700000820c0 wclfeb VRR_VV0UU8 " " arch13 zarch
|
||||
-
|
||||
-b939 dfltcc RRF_R0RR2 " " arch13 zarch
|
||||
-
|
||||
-b938 sortl RRE_RR " " arch13 zarch
|
||||
-
|
||||
-e60000000050 vcvb VRR_RV0UU " " arch13 zarch optparm
|
||||
-e60000000052 vcvbg VRR_RV0UU " " arch13 zarch optparm
|
||||
-
|
||||
-b93a kdsa RRE_RR " " arch13 zarch
|
||||
+
|
||||
+# Miscellaneous Instruction Extensions Facility 2
|
||||
+
|
||||
+b9f5 ncrk RRF_R0RR2 "and with complement 32 bit" arch13 zarch
|
||||
+b9e5 ncgrk RRF_R0RR2 "and with complement 64 bit" arch13 zarch
|
||||
+e50a mvcrl SSE_RDRD "move right to left" arch13 zarch
|
||||
+b974 nnrk RRF_R0RR2 "nand 32 bit" arch13 zarch
|
||||
+b964 nngrk RRF_R0RR2 "nand 64 bit" arch13 zarch
|
||||
+b976 nork RRF_R0RR2 "nor 32 bit" arch13 zarch
|
||||
+b966 nogrk RRF_R0RR2 "nor 64 bit" arch13 zarch
|
||||
+b977 nxrk RRF_R0RR2 "not exclusive or 32 bit" arch13 zarch
|
||||
+b967 nxgrk RRF_R0RR2 "not exclusive or 64 bit" arch13 zarch
|
||||
+b975 ocrk RRF_R0RR2 "or with complement 32 bit" arch13 zarch
|
||||
+b965 ocgrk RRF_R0RR2 "or with complement 64 bit" arch13 zarch
|
||||
+b9e1 popcnt RRF_U0RR "population count arch13" arch13 zarch optparm
|
||||
+b9f0 selr RRF_RURR "select 32 bit" arch13 zarch
|
||||
+b9f00000 selr*20 RRF_R0RR3 "select 32 bit" arch13 zarch
|
||||
+b9e3 selgr RRF_RURR "select 64 bit" arch13 zarch
|
||||
+b9e30000 selgr*20 RRF_R0RR3 "select 64 bit" arch13 zarch
|
||||
+b9c0 selfhr RRF_RURR "select high" arch13 zarch
|
||||
+b9c00000 selfhr*20 RRF_R0RR3 "select high" arch13 zarch
|
||||
+
|
||||
+# Vector Enhancements Facility 2
|
||||
+
|
||||
+e60000000006 vlbr VRX_VRRDU "vector load byte reversed elements" arch13 zarch
|
||||
+e60000001006 vlbrh VRX_VRRD "vector load byte reversed halfword elements" arch13 zarch
|
||||
+e60000002006 vlbrf VRX_VRRD "vector load byte reversed word elements" arch13 zarch
|
||||
+e60000003006 vlbrg VRX_VRRD "vector load byte reversed doubleword elements" arch13 zarch
|
||||
+e60000004006 vlbrq VRX_VRRD "vector load byte reversed quadword elements" arch13 zarch
|
||||
+
|
||||
+e60000000007 vler VRX_VRRDU "vector load elements reversed" arch13 zarch
|
||||
+e60000001007 vlerh VRX_VRRD "vector load halfword elements reversed" arch13 zarch
|
||||
+e60000002007 vlerf VRX_VRRD "vector load word elements reversed" arch13 zarch
|
||||
+e60000003007 vlerg VRX_VRRD "vector load doubleword elements reversed" arch13 zarch
|
||||
+
|
||||
+e60000000004 vllebrz VRX_VRRDU "vector load byte reversed element and zero" arch13 zarch
|
||||
+e60000001004 vllebrzh VRX_VRRD "vector load byte reversed halfword element and zero" arch13 zarch
|
||||
+e60000002004 vllebrzf VRX_VRRD "vector load byte reversed word element and zero" arch13 zarch
|
||||
+e60000003004 ldrv VRX_VRRD "load byte reversed doubleword" arch13 zarch
|
||||
+e60000003004 vllebrzg VRX_VRRD "vector load byte reversed doubleword element and zero" arch13 zarch
|
||||
+e60000006004 lerv VRX_VRRD "load byte reversed word" arch13 zarch
|
||||
+e60000006004 vllebrze VRX_VRRD "vector load byte reversed word element left-aligned and zero" arch13 zarch
|
||||
+
|
||||
+e60000000001 vlebrh VRX_VRRDU "vector load byte reversed halfword element" arch13 zarch
|
||||
+e60000000003 vlebrf VRX_VRRDU "vector load byte reversed word element" arch13 zarch
|
||||
+e60000000002 vlebrg VRX_VRRDU "vector load byte reversed doubleword element" arch13 zarch
|
||||
+
|
||||
+e60000000005 vlbrrep VRX_VRRDU "vector load byte reversed element and replicate" arch13 zarch
|
||||
+e60000001005 vlbrreph VRX_VRRD "vector load byte reversed halfword element and replicate" arch13 zarch
|
||||
+e60000002005 vlbrrepf VRX_VRRD "vector load byte reversed word element and replicate" arch13 zarch
|
||||
+e60000003005 vlbrrepg VRX_VRRD "vector load byte reversed doubleword element and replicate" arch13 zarch
|
||||
+
|
||||
+e6000000000e vstbr VRX_VRRDU "vector store byte reversed elements" arch13 zarch
|
||||
+e6000000100e vstbrh VRX_VRRD "vector store byte reversed halfword elements" arch13 zarch
|
||||
+e6000000200e vstbrf VRX_VRRD "vector store byte reversed word elements" arch13 zarch
|
||||
+e6000000300e vstbrg VRX_VRRD "vector store byte reversed doubleword elements" arch13 zarch
|
||||
+e6000000400e vstbrq VRX_VRRD "vector store byte reversed quadword elements" arch13 zarch
|
||||
+
|
||||
+e6000000000f vster VRX_VRRDU "vector store elements reversed" arch13 zarch
|
||||
+e6000000100f vsterh VRX_VRRD "vector store halfword elements reversed" arch13 zarch
|
||||
+e6000000200f vsterf VRX_VRRD "vector store word elements reversed" arch13 zarch
|
||||
+e6000000300f vsterg VRX_VRRD "vector store doubleword elements reversed" arch13 zarch
|
||||
+
|
||||
+e60000000009 vstebrh VRX_VRRDU "vector store byte reversed halfword element" arch13 zarch
|
||||
+e6000000000b vstebrf VRX_VRRDU "vector store byte reversed word element" arch13 zarch
|
||||
+e6000000000b sterv VRX_VRRD "store byte reversed word" arch13 zarch
|
||||
+e6000000000a vstebrg VRX_VRRDU "vector store byte reversed doubleword element" arch13 zarch
|
||||
+e6000000000a stdrv VRX_VRRD "store byte reversed doubleword" arch13 zarch
|
||||
+
|
||||
+e70000000086 vsld VRI_VVV0U "vector shift left double by bit" arch13 zarch
|
||||
+e70000000087 vsrd VRI_VVV0U "vector shift right double by bit" arch13 zarch
|
||||
+
|
||||
+e7000000008b vstrs VRR_VVVUU0V "vector string search" arch13 zarch optparm
|
||||
+
|
||||
+e7000000008b vstrsb VRR_VVVU0VB "vector string search byte" arch13 zarch optparm
|
||||
+e7000100008b vstrsh VRR_VVVU0VB "vector string search halfword" arch13 zarch optparm
|
||||
+e7000200008b vstrsf VRR_VVVU0VB "vector string search word" arch13 zarch optparm
|
||||
+
|
||||
+e7000020008b vstrszb VRR_VVV0V "vector string search byte zero" arch13 zarch
|
||||
+e7000120008b vstrszh VRR_VVV0V "vector string search halfword zero" arch13 zarch
|
||||
+e7000220008b vstrszf VRR_VVV0V "vector string search word zero" arch13 zarch
|
||||
+
|
||||
+e700000000c3 vcfps VRR_VV0UUU "vector fp convert from fixed" arch13 zarch
|
||||
+e700000020c3 vcefb VRR_VV0UU "vector fp convert from fixed 32 bit" arch13 zarch
|
||||
+e700000820c3 wcefb VRR_VV0UU8 "vector fp convert from fixed 32 bit" arch13 zarch
|
||||
+
|
||||
+e700000000c1 vcfpl VRR_VV0UUU "vector fp convert from logical" arch13 zarch
|
||||
+e700000020c1 vcelfb VRR_VV0UU "vector fp convert from logical 32 bit" arch13 zarch
|
||||
+e700000820c1 wcelfb VRR_VV0UU8 "vector fp convert from logical 32 bit" arch13 zarch
|
||||
+
|
||||
+e700000000c2 vcsfp VRR_VV0UUU "vector fp convert to fixed" arch13 zarch
|
||||
+e700000020c2 vcfeb VRR_VV0UU "vector fp convert to fixed 32 bit" arch13 zarch
|
||||
+e700000820c2 wcfeb VRR_VV0UU8 "vector fp convert to fixed 32 bit" arch13 zarch
|
||||
+
|
||||
+e700000000c0 vclfp VRR_VV0UUU "vector fp convert to logical" arch13 zarch
|
||||
+e700000020c0 vclfeb VRR_VV0UU "vector fp convert to logical 32 bit" arch13 zarch
|
||||
+e700000820c0 wclfeb VRR_VV0UU8 "vector fp convert to logical 32 bit" arch13 zarch
|
||||
+
|
||||
+# Deflate conversion facility
|
||||
+
|
||||
+b939 dfltcc RRF_R0RR2 "deflate conversion call" arch13 zarch
|
||||
+
|
||||
+# Enhanced-Sort Facility
|
||||
+
|
||||
+b938 sortl RRE_RR "sort lists" arch13 zarch
|
||||
+
|
||||
+# Vector packed decimal enhancement facility
|
||||
+
|
||||
+e60000000050 vcvb VRR_RV0UU "vector convert to binary 32 bit" arch13 zarch optparm
|
||||
+e60000000052 vcvbg VRR_RV0UU "vector convert to binary 64 bit" arch13 zarch optparm
|
||||
+
|
||||
+# Message Security Assist Extension 9
|
||||
+
|
||||
+b93a kdsa RRE_RR "compute digital signature authentication" arch13 zarch
|
@ -26,7 +26,7 @@ Version: 8.2
|
||||
|
||||
# The release always contains a leading reserved number, start it at 1.
|
||||
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||
Release: 6%{?dist}
|
||||
Release: 11%{?dist}
|
||||
|
||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL
|
||||
Group: Development/Debuggers
|
||||
@ -506,7 +506,9 @@ cd %{gdb_build}$fprofile
|
||||
export CFLAGS="$RPM_OPT_FLAGS %{?_with_asan:-fsanitize=address}"
|
||||
export LDFLAGS="%{?__global_ldflags} %{?_with_asan:-fsanitize=address}"
|
||||
|
||||
%if 0%{!?rhel:1} || 0%{?rhel} > 7
|
||||
# Messaging on RHEL8 is still to use yum (even though that only
|
||||
# redirects to dnf). rhbz1666249
|
||||
%if 0%{!?rhel:1}
|
||||
CFLAGS="$CFLAGS -DDNF_DEBUGINFO_INSTALL"
|
||||
%endif
|
||||
|
||||
@ -1032,9 +1034,34 @@ fi
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Thu Apr 25 2019 Keith Seitz <keiths@redhat.com> - 8.2-6.el8
|
||||
- Backport "Fix 'gdb fails to read zN registers from corefile with aarc64 SVE'"
|
||||
(Alan Hayward, RH BZ 1699376)
|
||||
* Thu Jan 23 2020 Sergio Durigan Junior <sergiodj@redhat.com> - 8.2-11.el8
|
||||
- Revert previous change (RH BZ 1786466).
|
||||
|
||||
* Thu Jan 16 2020 Sergio Durigan Junior <sergiodj@redhat.com> - 8.2-10.el8
|
||||
- Do not build i686 RPMs. Make the x86_64 RPMs Obsoletes/Provides
|
||||
previous i686 RPMs (RH BZ 1786466).
|
||||
|
||||
* Wed Jan 8 2020 Sergio Durigan Junior <sergiodj@redhat.com> - 8.2-9.el8
|
||||
- Implement s390x arch13 support (Andreas Krebbel, RH BZ 1768593).
|
||||
|
||||
* Tue Oct 22 2019 Keith Seitz <keiths@redhat.com> - 8.2-8.el8
|
||||
- Fix buffer overflow reading sections with invalid sizes
|
||||
(Keith Seitz, RH BZ 1742099)
|
||||
|
||||
* Thu Oct 17 2019 Keith Seitz <keiths@redhat.com> - 8.2-7.el8
|
||||
- Fix segfault that happens on parse_macro_definition because
|
||||
debugedit corrupts the .debug_macro section (Sergio Durigan Junior,
|
||||
RH BZ 1708192).
|
||||
|
||||
* Wed Apr 3 2019 Keith Seitz <keiths@redhat.com> 8.2-6.el8
|
||||
- Fix yum vs dnf messaging for RHEL8 (RH BZ 1666249):
|
||||
Add gdb-rhbz1666249-suggest-yum-instead-of-dnf.pattch
|
||||
Do not define DNF_DEBUGINFO_INSTALL for RHEL.
|
||||
- Backport "Remove support for old mangling schemes"
|
||||
(Simon Marchi, RH BZ 1668635)
|
||||
- Backport "Add checks for the NT_ARM_SVE section in a core file."
|
||||
(Alan Hayward, RH BZ 1669953)
|
||||
- Backport more Power8 support (IBM, RH BZ 1187581)
|
||||
|
||||
* Fri Jan 11 2019 Keith Seitz <keiths@redhat.com> - 8.2-5.el8
|
||||
- Merge from Fedora 29:
|
||||
|
Loading…
Reference in New Issue
Block a user