Accepting request 854272 from devel:gcc

- Backport from master [jsc#13656]:
  * gdb-powerpc-remove-512-bytes-region-limit-if-2nd-dawr-is-avaliable.patch
- Require 8GB diskspace for x86_64. (forwarded request 854204 from tomdevries)

OBS-URL: https://build.opensuse.org/request/show/854272
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/gdb?expand=0&rev=145
This commit is contained in:
Dominique Leuenberger 2020-12-09 21:11:43 +00:00 committed by Git OBS Bridge
commit 0de5aa139b
5 changed files with 127 additions and 0 deletions

View File

@ -10,5 +10,15 @@
</disk>
</hardware>
</overwrite>
<overwrite>
<conditions>
<arch>x86_64</arch>
</conditions>
<hardware>
<disk>
<size unit="G">8</size>
</disk>
</hardware>
</overwrite>
</constraints>

View File

@ -0,0 +1,28 @@
[gdb] Fix use of invalid pointer in remote_async_inferior_event_handler
As proposed by palves here (
https://sourceware.org/bugzilla/show_bug.cgi?id=26614#c20 ).
---
gdb/remote.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/gdb/remote.c b/gdb/remote.c
index ba9e6d6e9b..556de6033f 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -14163,9 +14163,13 @@ remote_async_serial_handler (struct serial *scb, void *context)
static void
remote_async_inferior_event_handler (gdb_client_data data)
{
+ remote_target *remote = (remote_target *) data;
+ /* Hold a strong reference to the remote target while handling an
+ event, since that could result in closing the connection. */
+ auto remote_ref = target_ops_ref::new_reference (remote);
+
inferior_event_handler (INF_REG_EVENT);
- remote_target *remote = (remote_target *) data;
remote_state *rs = remote->get_remote_state ();
/* inferior_event_handler may have consumed an event pending on the

View File

@ -0,0 +1,72 @@
PowerPC remove 512 bytes region limit if 2nd DAWR is avaliable.
Power 10 introduces the 2nd DAWR (second watchpoint) and also removed
a restriction that limit the watch region to 512 bytes.
2020-11-08 Rogerio A. Cardoso <rcardoso@linux.ibm.com>
/gdb
* ppc-linux-nat.c: (PPC_DEBUG_FEATURE_DATA_BP_ARCH_31): New define.
(region_ok_for_hw_watchpoint): Check if 2nd DAWR is avaliable before
set region.
---
gdb/ppc-linux-nat.c | 26 ++++++++++++++++++--------
2 files changed, 23 insertions(+), 8 deletions(-)
Index: gdb-10.1/gdb/ppc-linux-nat.c
===================================================================
--- gdb-10.1.orig/gdb/ppc-linux-nat.c
+++ gdb-10.1/gdb/ppc-linux-nat.c
@@ -138,6 +138,11 @@ struct ppc_hw_breakpoint
#define PPC_DEBUG_FEATURE_DATA_BP_DAWR 0x10
#endif /* PPC_DEBUG_FEATURE_DATA_BP_DAWR */
+/* Feature defined on Linux kernel v5.1: Second watchpoint support. */
+#ifndef PPC_DEBUG_FEATURE_DATA_BP_ARCH_31
+#define PPC_DEBUG_FEATURE_DATA_BP_ARCH_31 0x20
+#endif /* PPC_DEBUG_FEATURE_DATA_BP_ARCH_31 */
+
/* The version of the PowerPC HWDEBUG kernel interface that we will use, if
available. */
#define PPC_DEBUG_CURRENT_VERSION 1
@@ -2108,9 +2113,10 @@ ppc_linux_nat_target::region_ok_for_hw_w
watchpoints. */
if (m_dreg_interface.hwdebug_p ())
{
- int region_size;
const struct ppc_debug_info &hwdebug_info = (m_dreg_interface
.hwdebug_info ());
+ int region_size = hwdebug_info.data_bp_alignment;
+ int region_align = region_size;
/* Embedded DAC-based processors, like the PowerPC 440 have ranged
watchpoints and can watch any access within an arbitrary memory
@@ -2122,15 +2128,19 @@ ppc_linux_nat_target::region_ok_for_hw_w
return 2;
/* Check if the processor provides DAWR interface. */
if (hwdebug_info.features & PPC_DEBUG_FEATURE_DATA_BP_DAWR)
- /* DAWR interface allows to watch up to 512 byte wide ranges which
- can't cross a 512 byte boundary. */
- region_size = 512;
- else
- region_size = hwdebug_info.data_bp_alignment;
+ {
+ /* DAWR interface allows to watch up to 512 byte wide ranges. */
+ region_size = 512;
+ /* DAWR interface allows to watch up to 512 byte wide ranges which
+ can't cross a 512 byte bondary on machines that doesn't have a
+ second DAWR (P9 or less). */
+ if (!(hwdebug_info.features & PPC_DEBUG_FEATURE_DATA_BP_ARCH_31))
+ region_align = 512;
+ }
/* Server processors provide one hardware watchpoint and addr+len should
fall in the watchable region provided by the ptrace interface. */
- if (region_size
- && (addr + len > (addr & ~(region_size - 1)) + region_size))
+ if (region_align
+ && (addr + len > (addr & ~(region_align - 1)) + region_size))
return 0;
}
/* addr+len must fall in the 8 byte watchable region for DABR-based

View File

@ -1,3 +1,16 @@
-------------------------------------------------------------------
Wed Dec 9 07:56:36 UTC 2020 - Tom de Vries <tdevries@suse.com>
- Backport from master [jsc#13656]:
* gdb-powerpc-remove-512-bytes-region-limit-if-2nd-dawr-is-avaliable.patch
- Require 8GB diskspace for x86_64.
-------------------------------------------------------------------
Mon Nov 30 15:43:58 UTC 2020 - Tom de Vries <tdevries@suse.com>
- Patches to be upstreamed:
* gdb-fix-use-of-invalid-pointer-in-remote-async-inferior-event-handler.patch
-------------------------------------------------------------------
Mon Nov 30 14:46:49 UTC 2020 - Tom de Vries <tdevries@suse.com>

View File

@ -294,6 +294,7 @@ Patch1510: gdb-testsuite-fix-gdb-reverse-insn-reverse-x86-c-for-m32.patch
Patch1511: gdb-testsuite-gdb-tui-new-layout-exp-partly-require-tcl86.patch
Patch1512: gdb-tui-enable-work-around-libncurses-segfault.patch
Patch1513: gdb-testsuite-fix-control-flow-in-gdb-reverse-insn-reverse-exp.patch
Patch1514: gdb-fix-use-of-invalid-pointer-in-remote-async-inferior-event-handler.patch
# Backports from master
@ -306,6 +307,7 @@ Patch2006: gdb-symtab-use-early-continue-in-find_pc_sect_compunit.patch
Patch2007: gdb-fix-section-matching-in-find_pc_sect_compunit.patch
Patch2008: gdb-symtab-fix-language-of-frame-without-debug-info.patch
Patch2009: gdb-testsuite-fix-failure-in-gdb-base-step-over-no-symbols-exp.patch
Patch2010: gdb-powerpc-remove-512-bytes-region-limit-if-2nd-dawr-is-avaliable.patch
# Testsuite patches
@ -702,6 +704,7 @@ find -name "*.info*"|xargs rm -f
%patch1511 -p1
%patch1512 -p1
%patch1513 -p1
%patch1514 -p1
%patch2000 -p1
%patch2002 -p1
@ -712,6 +715,7 @@ find -name "*.info*"|xargs rm -f
%patch2007 -p1
%patch2008 -p1
%patch2009 -p1
%patch2010 -p1
%patch2500 -p1
%if 0%{?suse_version} > 1500