public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Sergio Durigan Junior <sergiodj@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 8.1.50.20180522 (8.2pre).
Date: Sat, 27 Jun 2026 23:58:37 GMT [thread overview]
Message-ID: <178260471783.1.17720709538872295747.rpms-gdb-2bcd68d7bfcc@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/gdb
Branch : gdb-17.2-rebase-f44
Commit : 2bcd68d7bfcc949e2a6defdb6f04ea17dc998db2
Author : Sergio Durigan Junior <sergiodj@redhat.com>
Date : 2018-05-31T14:47:56-04:00
Stats : +1514/-3130 in 62 file(s)
URL : https://src.fedoraproject.org/rpms/gdb/c/2bcd68d7bfcc949e2a6defdb6f04ea17dc998db2?branch=gdb-17.2-rebase-f44
Log:
Rebase to FSF GDB 8.1.50.20180522 (8.2pre).
---
diff --git a/.gitignore b/.gitignore
index 75c5201..96985c5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
/gdb-libstdc++-v3-python-7.1.1-20170526.tar.xz
/v1.6.1.tar.gz
/gdb-8.1.tar.xz
+/gdb-8.1.50.20180522.tar.xz
diff --git a/_gdb.spec.Patch.include b/_gdb.spec.Patch.include
index 78d5ec5..3ee5fa4 100644
--- a/_gdb.spec.Patch.include
+++ b/_gdb.spec.Patch.include
@@ -115,197 +115,189 @@ Patch028: gdb-6.6-bz230000-power6-disassembly-test.patch
#=fedoratest
Patch029: gdb-6.6-bz229517-gcore-without-terminal.patch
-# Notify user of a child forked process being detached (BZ 235197).
-#=push+jan: This is more about discussion if/what should be printed.
-Patch030: gdb-6.6-bz235197-fork-detach-info.patch
-
# Avoid too long timeouts on failing cases of "annota1.exp annota3.exp".
#=fedoratest
-Patch031: gdb-6.6-testsuite-timeouts.patch
+Patch030: gdb-6.6-testsuite-timeouts.patch
# Support for stepping over PPC atomic instruction sequences (BZ 237572).
#=fedoratest
-Patch032: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch
+Patch031: gdb-6.6-bz237572-ppc-atomic-sequence-test.patch
# Make upstream `set scheduler-locking step' as default.
#=push+jan: How much is scheduler-locking relevant after non-stop?
-Patch033: gdb-6.6-scheduler_locking-step-is-default.patch
+Patch032: gdb-6.6-scheduler_locking-step-is-default.patch
# Test kernel VDSO decoding while attaching to an i386 process.
#=fedoratest
-Patch034: gdb-6.3-attach-see-vdso-test.patch
+Patch033: gdb-6.3-attach-see-vdso-test.patch
# Test leftover zombie process (BZ 243845).
#=fedoratest
-Patch035: gdb-6.5-bz243845-stale-testing-zombie-test.patch
+Patch034: gdb-6.5-bz243845-stale-testing-zombie-test.patch
# New locating of the matching binaries from the pure core file (build-id).
#=push+jan
-Patch036: gdb-6.6-buildid-locate.patch
+Patch035: gdb-6.6-buildid-locate.patch
# Fix loading of core files without build-ids but with build-ids in executables.
# Load strictly build-id-checked core files only if no executable is specified
# (Jan Kratochvil, RH BZ 1339862).
#=push+jan
-Patch037: gdb-6.6-buildid-locate-solib-missing-ids.patch
+Patch036: gdb-6.6-buildid-locate-solib-missing-ids.patch
#=push+jan
-Patch038: gdb-6.6-buildid-locate-rpm.patch
+Patch037: gdb-6.6-buildid-locate-rpm.patch
# Fix displaying of numeric char arrays as strings (BZ 224128).
#=fedoratest: But it is failing anyway, one should check the behavior more.
-Patch039: gdb-6.7-charsign-test.patch
+Patch038: gdb-6.7-charsign-test.patch
# Test PPC hiding of call-volatile parameter register.
#=fedoratest
-Patch040: gdb-6.7-ppc-clobbered-registers-O2-test.patch
+Patch039: gdb-6.7-ppc-clobbered-registers-O2-test.patch
# Testsuite fixes for more stable/comparable results.
#=fedoratest
-Patch041: gdb-6.7-testsuite-stable-results.patch
+Patch040: gdb-6.7-testsuite-stable-results.patch
# Test ia64 memory leaks of the code using libunwind.
#=fedoratest
-Patch042: gdb-6.5-ia64-libunwind-leak-test.patch
+Patch041: gdb-6.5-ia64-libunwind-leak-test.patch
# Test hiding unexpected breakpoints on intentional step commands.
#=fedoratest
-Patch043: gdb-6.5-missed-trap-on-step-test.patch
+Patch042: gdb-6.5-missed-trap-on-step-test.patch
# Test gcore memory and time requirements for large inferiors.
#=fedoratest
-Patch044: gdb-6.5-gcore-buffer-limit-test.patch
+Patch043: gdb-6.5-gcore-buffer-limit-test.patch
# Test GCORE for shmid 0 shared memory mappings.
#=fedoratest: But it is broken anyway, sometimes the case being tested is not reproducible.
-Patch045: gdb-6.3-mapping-zero-inode-test.patch
+Patch044: gdb-6.3-mapping-zero-inode-test.patch
# Test a crash on `focus cmd', `focus prev' commands.
#=fedoratest
-Patch046: gdb-6.3-focus-cmd-prev-test.patch
+Patch045: gdb-6.3-focus-cmd-prev-test.patch
# Test various forms of threads tracking across exec() (BZ 442765).
#=fedoratest
-Patch047: gdb-6.8-bz442765-threaded-exec-test.patch
+Patch046: gdb-6.8-bz442765-threaded-exec-test.patch
# Silence memcpy check which returns false positive (sparc64)
#=push: But it is just a GCC workaround, look up the existing GCC PR for it.
-Patch048: gdb-6.8-sparc64-silence-memcpy-check.patch
+Patch047: gdb-6.8-sparc64-silence-memcpy-check.patch
# Test a crash on libraries missing the .text section.
#=fedoratest
-Patch049: gdb-6.5-section-num-fixup-test.patch
+Patch048: gdb-6.5-section-num-fixup-test.patch
# Fix register assignments with no GDB stack frames (BZ 436037).
#=push+jan: This fix is incorrect.
-Patch050: gdb-6.8-bz436037-reg-no-longer-active.patch
+Patch049: gdb-6.8-bz436037-reg-no-longer-active.patch
# Test the watchpoints conditionals works.
#=fedoratest
-Patch051: gdb-6.8-watchpoint-conditionals-test.patch
+Patch050: gdb-6.8-watchpoint-conditionals-test.patch
# Fix resolving of variables at locations lists in prelinked libs (BZ 466901).
#=fedoratest
-Patch052: gdb-6.8-bz466901-backtrace-full-prelinked.patch
+Patch051: gdb-6.8-bz466901-backtrace-full-prelinked.patch
# New test for step-resume breakpoint placed in multiple threads at once.
#=fedoratest
-Patch053: gdb-simultaneous-step-resume-breakpoint-test.patch
+Patch052: gdb-simultaneous-step-resume-breakpoint-test.patch
# Fix GNU/Linux core open: Can't read pathname for load map: Input/output error.
# Fix regression of undisplayed missing shared libraries caused by a fix for.
#=fedoratest: It should be in glibc: libc-alpha: <20091004161706.GA27450@.*>
-Patch054: gdb-core-open-vdso-warning.patch
+Patch053: gdb-core-open-vdso-warning.patch
# Fix syscall restarts for amd64->i386 biarch.
#=push+jan
-Patch055: gdb-x86_64-i386-syscall-restart.patch
+Patch054: gdb-x86_64-i386-syscall-restart.patch
# Fix stepping with OMP parallel Fortran sections (BZ 533176).
#=push+jan: It requires some better DWARF annotations.
-Patch056: gdb-bz533176-fortran-omp-step.patch
+Patch055: gdb-bz533176-fortran-omp-step.patch
# Fix regression by python on ia64 due to stale current frame.
#=push+jan
-Patch057: gdb-follow-child-stale-parent.patch
+Patch056: gdb-follow-child-stale-parent.patch
# Workaround ccache making lineno non-zero for command-line definitions.
#=fedoratest: ccache is rarely used and it is even fixed now.
-Patch058: gdb-ccache-workaround.patch
+Patch057: gdb-ccache-workaround.patch
#=push+jan: May get obsoleted by Tom's unrelocated objfiles patch.
-Patch059: gdb-archer-pie-addons.patch
+Patch058: gdb-archer-pie-addons.patch
#=push+jan: Breakpoints disabling matching should not be based on address.
-Patch060: gdb-archer-pie-addons-keep-disabled.patch
+Patch059: gdb-archer-pie-addons-keep-disabled.patch
# Testcase for "Do not make up line information" fix by Daniel Jacobowitz.
#=fedoratest
-Patch061: gdb-lineno-makeup-test.patch
+Patch060: gdb-lineno-makeup-test.patch
# Test power7 ppc disassembly.
#=fedoratest
-Patch062: gdb-ppc-power7-test.patch
+Patch061: gdb-ppc-power7-test.patch
# Fix i386+x86_64 rwatch+awatch before run, regression against 6.8 (BZ 541866).
# Fix i386 rwatch+awatch before run (BZ 688788, on top of BZ 541866).
#=push+jan: It should be fixed properly instead.
-Patch063: gdb-bz541866-rwatch-before-run.patch
+Patch062: gdb-bz541866-rwatch-before-run.patch
# Workaround non-stop moribund locations exploited by kernel utrace (BZ 590623).
#=push+jan: Currently it is still not fully safe.
-Patch064: gdb-moribund-utrace-workaround.patch
+Patch063: gdb-moribund-utrace-workaround.patch
# Fix follow-exec for C++ programs (bugreported by Martin Stransky).
#=fedoratest
-Patch065: gdb-archer-next-over-throw-cxx-exec.patch
+Patch064: gdb-archer-next-over-throw-cxx-exec.patch
# Backport DWARF-4 support (BZ 601887, Tom Tromey).
#=fedoratest
-Patch066: gdb-bz601887-dwarf4-rh-test.patch
+Patch065: gdb-bz601887-dwarf4-rh-test.patch
#=push+jan
-Patch067: gdb-6.6-buildid-locate-core-as-arg.patch
+Patch066: gdb-6.6-buildid-locate-core-as-arg.patch
# Workaround librpm BZ 643031 due to its unexpected exit() calls (BZ 642879).
#=push+jan
-Patch068: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
+Patch067: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
# [delayed-symfile] Test a backtrace regression on CFIs without DIE (BZ 614604).
#=fedoratest
-Patch069: gdb-test-bt-cfi-without-die.patch
-
-# Provide /usr/bin/gdb-add-index for rpm-build (Tom Tromey).
-#=push: Re-check against the upstream version.
-Patch070: gdb-gdb-add-index-script.patch
+Patch068: gdb-test-bt-cfi-without-die.patch
# Out of memory is just an error, not fatal (uninitialized VLS vars, BZ 568248).
#=push+jan: Inferior objects should be read in parts, then this patch gets obsoleted.
-Patch071: gdb-bz568248-oom-is-error.patch
+Patch069: gdb-bz568248-oom-is-error.patch
# Verify GDB Python built-in function gdb.solib_address exists (BZ # 634108).
#=fedoratest
-Patch072: gdb-bz634108-solib_address.patch
+Patch070: gdb-bz634108-solib_address.patch
# New test gdb.arch/x86_64-pid0-core.exp for kernel PID 0 cores (BZ 611435).
#=fedoratest
-Patch073: gdb-test-pid0-core.patch
+Patch071: gdb-test-pid0-core.patch
# [archer-tromey-delayed-symfile] New test gdb.dwarf2/dw2-aranges.exp.
#=fedoratest
-Patch074: gdb-test-dw2-aranges.patch
+Patch072: gdb-test-dw2-aranges.patch
# [archer-keiths-expr-cumulative+upstream] Import C++ testcases.
#=fedoratest
-Patch075: gdb-test-expr-cumulative-archer.patch
+Patch073: gdb-test-expr-cumulative-archer.patch
# Fix regressions on C++ names resolving (PR 11734, PR 12273, Keith Seitz).
#=fedoratest
-Patch076: gdb-physname-pr11734-test.patch
+Patch074: gdb-physname-pr11734-test.patch
# Fix regressions on C++ names resolving (PR 11734, PR 12273, Keith Seitz).
#=fedoratest
-Patch077: gdb-physname-pr12273-test.patch
+Patch075: gdb-physname-pr12273-test.patch
# Toolchain on sparc is slightly broken and debuginfo files are generated
# with non 64bit aligned tables/offsets.
@@ -319,214 +311,200 @@ Patch077: gdb-physname-pr12273-test.patch
# While we figure out what's wrong in the toolchain and do a full archive
# rebuild to fix it, we need to be able to use gdb :)
#=push
-Patch078: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
+Patch076: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
# Test GDB opcodes/ disassembly of Intel Ivy Bridge instructions (BZ 696890).
#=fedoratest
-Patch079: gdb-test-ivy-bridge.patch
+Patch077: gdb-test-ivy-bridge.patch
# Hack for proper PIE run of the testsuite.
#=fedoratest
-Patch080: gdb-runtest-pie-override.patch
+Patch078: gdb-runtest-pie-override.patch
# Print reasons for failed attach/spawn incl. SELinux deny_ptrace (BZ 786878).
#=push+jan
-Patch081: gdb-attach-fail-reasons-5of5.patch
+Patch079: gdb-attach-fail-reasons-5of5.patch
# Workaround crashes from stale frame_info pointer (BZ 804256).
#=push+jan
-Patch082: gdb-stale-frame_info.patch
+Patch080: gdb-stale-frame_info.patch
# Workaround PR libc/14166 for inferior calls of strstr.
#=fedora: Compatibility with RHELs (unchecked which ones).
-Patch083: gdb-glibc-strstr-workaround.patch
+Patch081: gdb-glibc-strstr-workaround.patch
# Include testcase for `Unable to see a variable inside a module (XLF)' (BZ 823789).
#=fedoratest
-Patch084: gdb-rhel5.9-testcase-xlf-var-inside-mod.patch
+Patch082: gdb-rhel5.9-testcase-xlf-var-inside-mod.patch
# Testcase for `Setting solib-absolute-prefix breaks vDSO' (BZ 818343).
#=fedoratest
-Patch085: gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch
+Patch083: gdb-rhbz-818343-set-solib-absolute-prefix-testcase.patch
# Fix `GDB cannot access struct member whose offset is larger than 256MB'
# (RH BZ 795424).
#=push
-Patch086: gdb-rhbz795424-bitpos-20of25.patch
+Patch084: gdb-rhbz795424-bitpos-20of25.patch
# Fix `GDB cannot access struct member whose offset is larger than 256MB'
# (RH BZ 795424).
#=push
-Patch087: gdb-rhbz795424-bitpos-21of25.patch
+Patch085: gdb-rhbz795424-bitpos-21of25.patch
# Fix `GDB cannot access struct member whose offset is larger than 256MB'
# (RH BZ 795424).
#=push
-Patch088: gdb-rhbz795424-bitpos-22of25.patch
+Patch086: gdb-rhbz795424-bitpos-22of25.patch
# Fix `GDB cannot access struct member whose offset is larger than 256MB'
# (RH BZ 795424).
#=push
-Patch089: gdb-rhbz795424-bitpos-23of25.patch
+Patch087: gdb-rhbz795424-bitpos-23of25.patch
# Fix `GDB cannot access struct member whose offset is larger than 256MB'
# (RH BZ 795424).
#=push
-Patch090: gdb-rhbz795424-bitpos-25of25.patch
+Patch088: gdb-rhbz795424-bitpos-25of25.patch
# Fix `GDB cannot access struct member whose offset is larger than 256MB'
# (RH BZ 795424).
#=push
-Patch091: gdb-rhbz795424-bitpos-25of25-test.patch
+Patch089: gdb-rhbz795424-bitpos-25of25-test.patch
# Fix `GDB cannot access struct member whose offset is larger than 256MB'
# (RH BZ 795424).
#=push
-Patch092: gdb-rhbz795424-bitpos-lazyvalue.patch
+Patch090: gdb-rhbz795424-bitpos-lazyvalue.patch
# Import regression test for `gdb/findvar.c:417: internal-error:
# read_var_value: Assertion `frame' failed.' (RH BZ 947564) from RHEL 6.5.
#=fedoratest
-Patch093: gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch
+Patch091: gdb-rhbz947564-findvar-assertion-frame-failed-testcase.patch
# Fix crash of -readnow /usr/lib/debug/usr/bin/gnatbind.debug (BZ 1069211).
#=push+jan
-Patch094: gdb-gnat-dwarf-crash-3of3.patch
+Patch092: gdb-gnat-dwarf-crash-3of3.patch
# Fix 'memory leak in infpy_read_memory()' (RH BZ 1007614)
#=fedoratest
-Patch095: gdb-rhbz1007614-memleak-infpy_read_memory-test.patch
+Patch093: gdb-rhbz1007614-memleak-infpy_read_memory-test.patch
# Fix 'gdb gives highly misleading error when debuginfo pkg is present,
# but not corresponding binary pkg' (RH BZ 981154).
#=push+jan
-Patch096: gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch
+Patch094: gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch
#=fedoratest
-Patch097: gdb-archer-vla-tests.patch
+Patch095: gdb-archer-vla-tests.patch
#=fedoratest
-Patch098: gdb-vla-intel-tests.patch
+Patch096: gdb-vla-intel-tests.patch
# Continue backtrace even if a frame filter throws an exception (Phil Muldoon).
#=push
-Patch099: gdb-btrobust.patch
+Patch097: gdb-btrobust.patch
# Display Fortran strings in backtraces.
#=fedoratest
-Patch100: gdb-fortran-frame-string.patch
+Patch098: gdb-fortran-frame-string.patch
# Fix Python GIL with gdb.execute("continue") (Phil Muldoon, BZ 1116957).
#=push
-Patch101: gdb-python-gil.patch
+Patch099: gdb-python-gil.patch
# Testcase for '[SAP] Recursive dlopen causes SAP HANA installer to
# crash.' (RH BZ 1156192).
#=fedoratest
-Patch102: gdb-rhbz1156192-recursive-dlopen-test.patch
+Patch100: gdb-rhbz1156192-recursive-dlopen-test.patch
# Fix jit-reader.h for multi-lib.
#=push+jan
-Patch103: gdb-jit-reader-multilib.patch
+Patch101: gdb-jit-reader-multilib.patch
# Fix '`catch syscall' doesn't work for parent after `fork' is called'
# (Philippe Waroquiers, RH BZ 1149205).
#=fedoratest
-Patch104: gdb-rhbz1149205-catch-syscall-after-fork-test.patch
+Patch102: gdb-rhbz1149205-catch-syscall-after-fork-test.patch
# Fix 'backport GDB 7.4 fix to RHEL 6.6 GDB' [Original Sourceware bug
# description: 'C++ (and objc): Internal error on unqualified name
# re-set', PR 11657] (RH BZ 1186476).
#=fedoratest
-Patch105: gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch
+Patch103: gdb-rhbz1186476-internal-error-unqualified-name-re-set-test.patch
# Test 'info type-printers' Python error (RH BZ 1350436).
#=fedoratest
-Patch106: gdb-rhbz1350436-type-printers-error.patch
+Patch104: gdb-rhbz1350436-type-printers-error.patch
# Fix '[ppc64] and [s390x] wrong prologue skip on -O2 -g code' (Jan
# Kratochvil, RH BZ 1084404).
#=fedoratest
-Patch107: gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch
+Patch105: gdb-rhbz1084404-ppc64-s390x-wrong-prologue-skip-O2-g-3of3.patch
# Never kill PID on: gdb exec PID (Jan Kratochvil, RH BZ 1219747).
#=push+jan
-Patch108: gdb-bz1219747-attach-kills.patch
+Patch106: gdb-bz1219747-attach-kills.patch
# Force libncursesw over libncurses to match the includes (RH BZ 1270534).
#=push+jan
-Patch109: gdb-fedora-libncursesw.patch
+Patch107: gdb-fedora-libncursesw.patch
# Test clflushopt instruction decode (for RH BZ 1262471).
#=fedoratest
-Patch110: gdb-opcodes-clflushopt-test.patch
+Patch108: gdb-opcodes-clflushopt-test.patch
# [rhel6] DTS backward Python compatibility API (BZ 1020004, Phil Muldoon).
#=fedora
-Patch111: gdb-dts-rhel6-python-compat.patch
+Patch109: gdb-dts-rhel6-python-compat.patch
# [SCL] Skip deprecated .gdb_index warning for Red Hat built files (BZ 953585).
#=push+jan
-Patch112: gdb-6.6-buildid-locate-rpm-scl.patch
+Patch110: gdb-6.6-buildid-locate-rpm-scl.patch
# Work around readline-6.2 incompatibility not asking for --more-- (BZ 701131).
#=fedora
-Patch113: gdb-readline62-ask-more-rh.patch
-
-# [RHEL5,RHEL6] Fix attaching to stopped processes.
-# [RHEL5] Workaround kernel for detaching SIGSTOPped processes (BZ 809382).
-#=fedora
-Patch114: gdb-6.8-attach-signalled-detach-stopped.patch
+Patch111: gdb-readline62-ask-more-rh.patch
# Make the GDB quit processing non-abortable to cleanup everything properly.
#=fedora: It was useful only after gdb-6.8-attach-signalled-detach-stopped.patch .
-Patch115: gdb-6.8-quit-never-aborts.patch
+Patch112: gdb-6.8-quit-never-aborts.patch
# [aarch64] Fix hardware watchpoints (RH BZ 1261564).
#=fedoratest
-Patch116: gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch
+Patch113: gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch
# Add messages suggesting more recent RHEL gdbserver (RH BZ 1321114).
#=fedora
-Patch117: gdb-container-rh-pkg.patch
+Patch114: gdb-container-rh-pkg.patch
# New test for Python "Cannot locate object file for block" (for RH BZ 1325795).
#=fedoratest
-Patch118: gdb-rhbz1325795-framefilters-test.patch
+Patch115: gdb-rhbz1325795-framefilters-test.patch
# [dts+el7] [x86*] Bundle linux_perf.h for libipt (RH BZ 1256513).
#=fedora
-Patch119: gdb-linux_perf-bundle.patch
+Patch116: gdb-linux_perf-bundle.patch
# Fix gdb-headless /usr/bin/ executables (BZ 1390251).
#=fedora
-Patch120: gdb-libexec-add-index.patch
+Patch117: gdb-libexec-add-index.patch
# New testcase for: Fix <tab>-completion crash (Gary Benson, RH BZ 1398387).
#=fedoratest
-Patch121: gdb-rhbz1398387-tab-crash-test.patch
+Patch118: gdb-rhbz1398387-tab-crash-test.patch
# [testsuite] Fix false selftest.exp FAIL from system readline-6.3+ (Patrick Palka).
#=fedoratest
-Patch122: gdb-testsuite-readline63-sigint.patch
+Patch119: gdb-testsuite-readline63-sigint.patch
# Python patches of: http://sourceware.org/gdb/wiki/ProjectArcher
#=push
-Patch123: gdb-archer.patch
+Patch120: gdb-archer.patch
# Revert upstream commit 469412dd9ccc4de5874fd3299b105833f36b34cd
-Patch124: gdb-vla-intel-fix-print-char-array.patch
-
-# Fix -D_GLIBCXX_DEBUG gdb-add-index regression (RH BZ 1540559).
-Patch125: gdb-rhbz1540559-gdbaddindex-glibcdebug-regression.patch
-
-# Fix ppc64 stwux encoding as found by gcc-8.0 -Werror=tautological-compare.
-Patch126: gdb-ppc64-stwux-tautological-compare.patch
+Patch121: gdb-vla-intel-fix-print-char-array.patch
# [s390x] Backport arch12 instructions decoding (RH BZ 1553104).
# =fedoratest
-Patch127: gdb-rhbz1553104-s390x-arch12-test.patch
-
-# [aarch64] Fix missed unaligned hardware watchpoints (RH BZ 1347993).
-Patch128: gdb-rhbz1347993-aarch64-hw-watchpoint.patch
+Patch122: gdb-rhbz1553104-s390x-arch12-test.patch
diff --git a/_gdb.spec.patch.include b/_gdb.spec.patch.include
index aa4fb19..131cf93 100644
--- a/_gdb.spec.patch.include
+++ b/_gdb.spec.patch.include
@@ -120,9 +120,3 @@
%patch120 -p1
%patch121 -p1
%patch122 -p1
-%patch123 -p1
-%patch124 -p1
-%patch125 -p1
-%patch126 -p1
-%patch127 -p1
-%patch128 -p1
diff --git a/_git_upstream_commit b/_git_upstream_commit
index b9863e0..e853d25 100644
--- a/_git_upstream_commit
+++ b/_git_upstream_commit
@@ -1 +1 @@
-b755db3c98137baaff8a154d936d326d9a9c72a7
+75d74ccace05f6166a45dbaa352abf753891d3be
diff --git a/_patch_order b/_patch_order
index 866bcc4..aaec704 100644
--- a/_patch_order
+++ b/_patch_order
@@ -27,7 +27,6 @@ gdb-6.3-bz140532-ppc-unwinding-test.patch
gdb-6.3-bz202689-exec-from-pthread-test.patch
gdb-6.6-bz230000-power6-disassembly-test.patch
gdb-6.6-bz229517-gcore-without-terminal.patch
-gdb-6.6-bz235197-fork-detach-info.patch
gdb-6.6-testsuite-timeouts.patch
gdb-6.6-bz237572-ppc-atomic-sequence-test.patch
gdb-6.6-scheduler_locking-step-is-default.patch
@@ -67,7 +66,6 @@ gdb-bz601887-dwarf4-rh-test.patch
gdb-6.6-buildid-locate-core-as-arg.patch
gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
gdb-test-bt-cfi-without-die.patch
-gdb-gdb-add-index-script.patch
gdb-bz568248-oom-is-error.patch
gdb-bz634108-solib_address.patch
gdb-test-pid0-core.patch
@@ -111,7 +109,6 @@ gdb-opcodes-clflushopt-test.patch
gdb-dts-rhel6-python-compat.patch
gdb-6.6-buildid-locate-rpm-scl.patch
gdb-readline62-ask-more-rh.patch
-gdb-6.8-attach-signalled-detach-stopped.patch
gdb-6.8-quit-never-aborts.patch
gdb-rhbz1261564-aarch64-hw-watchpoint-test.patch
gdb-container-rh-pkg.patch
@@ -122,7 +119,4 @@ gdb-rhbz1398387-tab-crash-test.patch
gdb-testsuite-readline63-sigint.patch
gdb-archer.patch
gdb-vla-intel-fix-print-char-array.patch
-gdb-rhbz1540559-gdbaddindex-glibcdebug-regression.patch
-gdb-ppc64-stwux-tautological-compare.patch
gdb-rhbz1553104-s390x-arch12-test.patch
-gdb-rhbz1347993-aarch64-hw-watchpoint.patch
diff --git a/gdb-6.3-gstack-20050411.patch b/gdb-6.3-gstack-20050411.patch
index 95c72d9..449b7db 100644
--- a/gdb-6.3-gstack-20050411.patch
+++ b/gdb-6.3-gstack-20050411.patch
@@ -16,10 +16,10 @@ FileName: gdb-6.3-gstack-20050411.patch
* gstack.sh, gstack.1: New files.
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index 17b71c6e7c..e77d6a5c03 100644
+index 09a2ad2ca3..1ea7a36c69 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
-@@ -1744,7 +1744,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
+@@ -1727,7 +1727,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
install: all
@$(MAKE) $(FLAGS_TO_PASS) install-only
@@ -28,7 +28,7 @@ index 17b71c6e7c..e77d6a5c03 100644
transformed_name=`t='$(program_transform_name)'; \
echo gdb | sed -e "$$t"` ; \
if test "x$$transformed_name" = x; then \
-@@ -1784,7 +1784,25 @@ install-guile:
+@@ -1776,7 +1776,25 @@ install-guile:
install-python:
$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb
@@ -55,7 +55,7 @@ index 17b71c6e7c..e77d6a5c03 100644
transformed_name=`t='$(program_transform_name)'; \
echo gdb | sed -e $$t` ; \
if test "x$$transformed_name" = x; then \
-@@ -1807,6 +1825,18 @@ uninstall: force $(CONFIG_UNINSTALL)
+@@ -1799,6 +1817,18 @@ uninstall: force $(CONFIG_UNINSTALL)
fi
@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do
diff --git a/gdb-6.3-ppc64displaysymbol-20041124.patch b/gdb-6.3-ppc64displaysymbol-20041124.patch
index b39fb8c..7e5a4fd 100644
--- a/gdb-6.3-ppc64displaysymbol-20041124.patch
+++ b/gdb-6.3-ppc64displaysymbol-20041124.patch
@@ -15,10 +15,10 @@ FileName: gdb-6.3-ppc64displaysymbol-20041124.patch
address.
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
-index 6256f35baa..c52e39f7fc 100644
+index 0dfea34753..82fe1db9a7 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
-@@ -602,6 +602,14 @@ build_address_symbolic (struct gdbarch *gdbarch,
+@@ -600,6 +600,14 @@ build_address_symbolic (struct gdbarch *gdbarch,
addr = overlay_mapped_address (addr, section);
}
}
diff --git a/gdb-6.3-ppc64syscall-20040622.patch b/gdb-6.3-ppc64syscall-20040622.patch
index 8feaa0c..1bdc4b8 100644
--- a/gdb-6.3-ppc64syscall-20040622.patch
+++ b/gdb-6.3-ppc64syscall-20040622.patch
@@ -17,7 +17,7 @@ FileName: gdb-6.3-ppc64syscall-20040622.patch
"func_start".
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
-index e5a265dbcb..23d0db3b8f 100644
+index c5b49c5f46..4d1a241cdf 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -134,6 +134,7 @@ static const char *powerpc_vector_abi_string = "auto";
@@ -28,7 +28,7 @@ index e5a265dbcb..23d0db3b8f 100644
int offset; /* total size of frame --- the distance
by which we decrement sp to allocate
the frame */
-@@ -1577,7 +1578,6 @@ static CORE_ADDR
+@@ -1610,7 +1611,6 @@ static CORE_ADDR
skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
struct rs6000_framedata *fdata)
{
@@ -36,7 +36,7 @@ index e5a265dbcb..23d0db3b8f 100644
CORE_ADDR last_prologue_pc = pc;
CORE_ADDR li_found_pc = 0;
gdb_byte buf[4];
-@@ -1595,12 +1595,14 @@ skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
+@@ -1629,12 +1629,14 @@ skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
int minimal_toc_loaded = 0;
int prev_insn_was_prologue_insn = 1;
int num_skip_non_prologue_insns = 0;
@@ -51,7 +51,7 @@ index e5a265dbcb..23d0db3b8f 100644
fdata->saved_gpr = -1;
fdata->saved_fpr = -1;
fdata->saved_vr = -1;
-@@ -1634,6 +1636,55 @@ skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
+@@ -1668,6 +1670,55 @@ skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
break;
op = extract_unsigned_integer (buf, 4, byte_order);
@@ -107,7 +107,7 @@ index e5a265dbcb..23d0db3b8f 100644
if ((op & 0xfc1fffff) == 0x7c0802a6)
{ /* mflr Rx */
/* Since shared library / PIC code, which needs to get its
-@@ -1825,9 +1876,9 @@ skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
+@@ -1857,9 +1908,9 @@ skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
we have no line table information or the line info tells
us that the subroutine call is not part of the line
associated with the prologue. */
diff --git a/gdb-6.3-readnever-20050907.patch b/gdb-6.3-readnever-20050907.patch
index 3d3a99f..bb7c408 100644
--- a/gdb-6.3-readnever-20050907.patch
+++ b/gdb-6.3-readnever-20050907.patch
@@ -24,15 +24,15 @@ FileName: gdb-6.3-readnever-20050907.patch
Pushed upstream: https://sourceware.org/ml/gdb-cvs/2017-12/msg00007.html
diff --git a/gdb/gcore.in b/gdb/gcore.in
-index b7f57cd341..c7e0dec574 100644
+index 233c00d366..009e4181dd 100644
--- a/gdb/gcore.in
+++ b/gdb/gcore.in
-@@ -97,7 +97,7 @@ for pid in $*
+@@ -97,7 +97,7 @@ for pid in "$@"
do
# `</dev/null' to avoid touching interactive terminal if it is
# available but not accessible as GDB would get stopped on SIGTTIN.
-- $binary_path/@GDB_TRANSFORM_NAME@ </dev/null --nx --batch \
-+ $binary_path/@GDB_TRANSFORM_NAME@ </dev/null --nx --batch --readnever \
+- "$binary_path/@GDB_TRANSFORM_NAME@" </dev/null --nx --batch \
++ "$binary_path/@GDB_TRANSFORM_NAME@" </dev/null --nx --batch --readnever \
-ex "set pagination off" -ex "set height 0" -ex "set width 0" \
"${dump_all_cmds[@]}" \
-ex "attach $pid" -ex "gcore $name.$pid" -ex detach -ex quit
diff --git a/gdb-6.3-test-self-20050110.patch b/gdb-6.3-test-self-20050110.patch
index 41dff40..8817bb9 100644
--- a/gdb-6.3-test-self-20050110.patch
+++ b/gdb-6.3-test-self-20050110.patch
@@ -17,7 +17,7 @@ FileName: gdb-6.3-test-self-20050110.patch
* gdb.gdb/observer.exp: Ditto.
diff --git a/gdb/testsuite/lib/selftest-support.exp b/gdb/testsuite/lib/selftest-support.exp
-index 89e2e3f4ef..ea027a6f7d 100644
+index f7169e0955..3c06154192 100644
--- a/gdb/testsuite/lib/selftest-support.exp
+++ b/gdb/testsuite/lib/selftest-support.exp
@@ -156,18 +156,18 @@ proc do_self_tests {function body} {
diff --git a/gdb-6.5-bz109921-DW_AT_decl_file-test.patch b/gdb-6.5-bz109921-DW_AT_decl_file-test.patch
index 3d3a55f..eba1f96 100644
--- a/gdb-6.5-bz109921-DW_AT_decl_file-test.patch
+++ b/gdb-6.5-bz109921-DW_AT_decl_file-test.patch
@@ -108,7 +108,7 @@ new file mode 100644
+gdb_test "list integer" "int integer;\r"
+gdb_test "ptype integer" "type = int\r"
+# Path varies depending on the build location.
-+gdb_test "info variables integer" "\r\nFile \[^\r\n\]*/gdb.dwarf2/dw2-included.h:\r\nint integer;\r"
++gdb_test "info variables integer" "\r\nFile \[^\r\n\]*/gdb.dwarf2/dw2-included.h:\r\n${decimal}:.*int integer;\r"
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-included.h b/gdb/testsuite/gdb.dwarf2/dw2-included.h
new file mode 100644
--- /dev/null
diff --git a/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch b/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
index 8941dab..9027d5e 100644
--- a/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
+++ b/gdb-6.5-bz185337-resolve-tls-without-debuginfo-v2.patch
@@ -44,10 +44,10 @@ glibc-debuginfo-2.7-2.x86_64: /usr/lib/debug/lib64/libc.so.6.debug:
<81a8> DW_AT_MIPS_linkage_name: (indirect string, offset: 0x2808): *__GI___errno_location
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
-index c52e39f7fc..ad80b1bebf 100644
+index 82fe1db9a7..c921022a59 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
-@@ -1210,6 +1210,10 @@ print_command_1 (const char *exp, int voidprint)
+@@ -1203,6 +1203,10 @@ print_command_1 (const char *exp, int voidprint)
if (exp && *exp)
{
diff --git a/gdb-6.5-bz203661-emit-relocs.patch b/gdb-6.5-bz203661-emit-relocs.patch
index df02401..dd2db52 100644
--- a/gdb-6.5-bz203661-emit-relocs.patch
+++ b/gdb-6.5-bz203661-emit-relocs.patch
@@ -9,10 +9,10 @@ FileName: gdb-6.5-bz203661-emit-relocs.patch
;;=push+jan: There was some mail thread about it, this patch may be a hack.
diff --git a/gdb/symfile.c b/gdb/symfile.c
-index f7f75b05d3..7cda615e74 100644
+index 7bc03fbb8f..661125dec5 100644
--- a/gdb/symfile.c
+++ b/gdb/symfile.c
-@@ -3629,6 +3629,12 @@ default_symfile_relocate (struct objfile *objfile, asection *sectp,
+@@ -3492,6 +3492,12 @@ default_symfile_relocate (struct objfile *objfile, asection *sectp,
DWO file. */
bfd *abfd = sectp->owner;
diff --git a/gdb-6.5-bz216711-clone-is-outermost.patch b/gdb-6.5-bz216711-clone-is-outermost.patch
index f238022..d98cdcb 100644
--- a/gdb-6.5-bz216711-clone-is-outermost.patch
+++ b/gdb-6.5-bz216711-clone-is-outermost.patch
@@ -128,10 +128,10 @@ index 2bd3d31b75..2623bae42d 100644
set_gdbarch_write_pc (gdbarch, amd64_linux_write_pc);
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
-index 7b2851f0a6..7c70792b3f 100644
+index d555465c2f..186690af30 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
-@@ -2595,6 +2595,7 @@ amd64_frame_unwind_stop_reason (struct frame_info *this_frame,
+@@ -2597,6 +2597,7 @@ amd64_frame_unwind_stop_reason (struct frame_info *this_frame,
{
struct amd64_frame_cache *cache =
amd64_frame_cache (this_frame, this_cache);
@@ -139,7 +139,7 @@ index 7b2851f0a6..7c70792b3f 100644
if (!cache->base_p)
return UNWIND_UNAVAILABLE;
-@@ -2603,6 +2604,10 @@ amd64_frame_unwind_stop_reason (struct frame_info *this_frame,
+@@ -2605,6 +2606,10 @@ amd64_frame_unwind_stop_reason (struct frame_info *this_frame,
if (cache->base == 0)
return UNWIND_OUTERMOST;
@@ -150,7 +150,7 @@ index 7b2851f0a6..7c70792b3f 100644
return UNWIND_NO_REASON;
}
-@@ -2737,6 +2742,7 @@ amd64_sigtramp_frame_this_id (struct frame_info *this_frame,
+@@ -2739,6 +2744,7 @@ amd64_sigtramp_frame_this_id (struct frame_info *this_frame,
{
struct amd64_frame_cache *cache =
amd64_sigtramp_frame_cache (this_frame, this_cache);
@@ -158,7 +158,7 @@ index 7b2851f0a6..7c70792b3f 100644
if (!cache->base_p)
(*this_id) = frame_id_build_unavailable_stack (get_frame_pc (this_frame));
-@@ -2745,6 +2751,11 @@ amd64_sigtramp_frame_this_id (struct frame_info *this_frame,
+@@ -2747,6 +2753,11 @@ amd64_sigtramp_frame_this_id (struct frame_info *this_frame,
/* This marks the outermost frame. */
return;
}
@@ -171,10 +171,10 @@ index 7b2851f0a6..7c70792b3f 100644
(*this_id) = frame_id_build (cache->base + 16, get_frame_pc (this_frame));
}
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
-index 9ce329eb20..d1b461b538 100644
+index 646f305edc..a0e872c01f 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
-@@ -8401,6 +8401,9 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+@@ -8428,6 +8428,9 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
tdep->xsave_xcr0_offset = -1;
@@ -183,9 +183,9 @@ index 9ce329eb20..d1b461b538 100644
+
tdep->record_regmap = i386_record_regmap;
- set_gdbarch_long_long_align_bit (gdbarch, 32);
+ set_gdbarch_type_align (gdbarch, i386_type_align);
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h
-index a71c103a88..5ee336b8cb 100644
+index 81a93f11af..461ae06258 100644
--- a/gdb/i386-tdep.h
+++ b/gdb/i386-tdep.h
@@ -251,6 +251,9 @@ struct gdbarch_tdep
diff --git a/gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch b/gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch
index 75eac7a..fc5ca9a 100644
--- a/gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch
+++ b/gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch
@@ -11,10 +11,10 @@ FileName: gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218379
diff --git a/gdb/symtab.c b/gdb/symtab.c
-index 81f4fc9ec5..a7e8431cfe 100644
+index e1f033d1d8..1d9e0b9180 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
-@@ -3166,6 +3166,13 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
+@@ -3165,6 +3165,13 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
SYMBOL_LINKAGE_NAME (msymbol)); */
;
/* fall through */
diff --git a/gdb-6.6-buildid-locate-core-as-arg.patch b/gdb-6.6-buildid-locate-core-as-arg.patch
index 7e11279..b9c8788 100644
--- a/gdb-6.6-buildid-locate-core-as-arg.patch
+++ b/gdb-6.6-buildid-locate-core-as-arg.patch
@@ -78,18 +78,18 @@ index 15c85e28ab..9fe2375bce 100644
NR_ERRORS
};
diff --git a/gdb/exec.c b/gdb/exec.c
-index c8c32ecc27..b329e2b834 100644
+index 3023ff7e5a..8308ec3d6f 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
-@@ -35,6 +35,7 @@
- #include "progspace.h"
+@@ -36,6 +36,7 @@
#include "gdb_bfd.h"
#include "gcore.h"
+ #include "source.h"
+#include "exceptions.h"
#include <fcntl.h>
#include "readline/readline.h"
-@@ -346,12 +347,27 @@ exec_file_attach (const char *filename, int from_tty)
+@@ -357,12 +358,27 @@ exec_file_attach (const char *filename, int from_tty)
if (!bfd_check_format_matches (exec_bfd, bfd_object, &matching))
{
@@ -121,10 +121,10 @@ index c8c32ecc27..b329e2b834 100644
if (build_section_table (exec_bfd, §ions, §ions_end))
diff --git a/gdb/main.c b/gdb/main.c
-index 3c98787edb..17d35f4a8a 100644
+index 189266f90e..4caefe2011 100644
--- a/gdb/main.c
+++ b/gdb/main.c
-@@ -446,6 +446,37 @@ struct cmdarg
+@@ -447,6 +447,37 @@ struct cmdarg
char *string;
};
@@ -162,7 +162,7 @@ index 3c98787edb..17d35f4a8a 100644
static void
captured_main_1 (struct captured_main_args *context)
{
-@@ -882,6 +913,8 @@ captured_main_1 (struct captured_main_args *context)
+@@ -883,6 +914,8 @@ captured_main_1 (struct captured_main_args *context)
{
symarg = argv[optind];
execarg = argv[optind];
@@ -171,7 +171,7 @@ index 3c98787edb..17d35f4a8a 100644
optind++;
}
-@@ -1032,11 +1065,25 @@ captured_main_1 (struct captured_main_args *context)
+@@ -1033,11 +1066,25 @@ captured_main_1 (struct captured_main_args *context)
&& symarg != NULL
&& strcmp (execarg, symarg) == 0)
{
diff --git a/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch b/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch
index 33d06f4..543a3ba 100644
--- a/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch
+++ b/gdb-6.6-buildid-locate-misleading-warning-missing-debuginfo-rhbz981154.patch
@@ -28,10 +28,10 @@ Comments by Sergio Durigan Junior <sergiodj@redhat.com>:
valid and doesn't print the necessary warning ("Try: yum install ...").
diff --git a/gdb/build-id.c b/gdb/build-id.c
-index 409a5b8c54..e2c1e81266 100644
+index 4e1477e950..5af9d66899 100644
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
-@@ -592,7 +592,10 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id,
+@@ -581,7 +581,10 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id,
do_cleanups (inner);
if (abfd == NULL)
diff --git a/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch b/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
index 066305e..89dd35d 100644
--- a/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
+++ b/gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
@@ -9,10 +9,10 @@ FileName: gdb-6.6-buildid-locate-rpm-librpm-workaround.patch
;;=push+jan
diff --git a/gdb/build-id.c b/gdb/build-id.c
-index d60cf622dc..409a5b8c54 100644
+index 39e741cf58..4e1477e950 100644
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
-@@ -678,6 +678,19 @@ build_id_to_filename (const struct bfd_build_id *build_id, char **link_return)
+@@ -652,6 +652,19 @@ build_id_to_filename (const struct bfd_build_id *build_id, char **link_return)
#include <dlfcn.h>
#endif
diff --git a/gdb-6.6-buildid-locate-rpm-scl.patch b/gdb-6.6-buildid-locate-rpm-scl.patch
index c25ee1b..dc6da5f 100644
--- a/gdb-6.6-buildid-locate-rpm-scl.patch
+++ b/gdb-6.6-buildid-locate-rpm-scl.patch
@@ -12,10 +12,10 @@ warning: Skipping deprecated .gdb_index section
https://bugzilla.redhat.com/show_bug.cgi?id=953585
diff --git a/gdb/build-id.c b/gdb/build-id.c
-index e2c1e81266..1b75530f91 100644
+index 5af9d66899..2ff93191c7 100644
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
-@@ -715,7 +715,11 @@ static int missing_rpm_list_entries;
+@@ -689,7 +689,11 @@ static int missing_rpm_list_entries;
/* Returns the count of newly added rpms. */
static int
@@ -27,7 +27,7 @@ index e2c1e81266..1b75530f91 100644
{
static int rpm_init_done = 0;
rpmts ts;
-@@ -822,7 +826,11 @@ missing_rpm_enlist (const char *filename)
+@@ -796,7 +800,11 @@ missing_rpm_enlist (const char *filename)
mi = rpmtsInitIterator_p (ts, RPMTAG_BASENAMES, filename, 0);
if (mi != NULL)
{
@@ -39,7 +39,7 @@ index e2c1e81266..1b75530f91 100644
{
Header h;
char *debuginfo, **slot, *s, *s2;
-@@ -940,6 +948,37 @@ missing_rpm_enlist (const char *filename)
+@@ -914,6 +922,37 @@ missing_rpm_enlist (const char *filename)
xfree (debuginfo);
count++;
}
@@ -77,7 +77,7 @@ index e2c1e81266..1b75530f91 100644
rpmdbFreeIterator_p (mi);
}
-@@ -950,6 +989,21 @@ missing_rpm_enlist (const char *filename)
+@@ -924,6 +963,21 @@ missing_rpm_enlist (const char *filename)
}
static int
@@ -100,10 +100,10 @@ index e2c1e81266..1b75530f91 100644
{
return strcoll (*ap, *bp);
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 2c972d5e74..64329af71e 100644
+index 328a07df82..45c22450b1 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
-@@ -3725,6 +3725,16 @@ read_index_from_section (struct objfile *objfile,
+@@ -3478,6 +3478,16 @@ read_index_from_section (struct objfile *objfile,
"set use-deprecated-index-sections on". */
if (version < 6 && !deprecated_ok)
{
@@ -120,7 +120,7 @@ index 2c972d5e74..64329af71e 100644
static int warning_printed = 0;
if (!warning_printed)
{
-@@ -3736,6 +3746,10 @@ to use the section anyway."),
+@@ -3489,6 +3499,10 @@ to use the section anyway."),
warning_printed = 1;
}
return 0;
diff --git a/gdb-6.6-buildid-locate-rpm.patch b/gdb-6.6-buildid-locate-rpm.patch
index 680c773..da8f81d 100644
--- a/gdb-6.6-buildid-locate-rpm.patch
+++ b/gdb-6.6-buildid-locate-rpm.patch
@@ -234,7 +234,7 @@ index e0d38ea267..da5ac313e3 100644
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
diff --git a/gdb/build-id.c b/gdb/build-id.c
-index 5740628386..d60cf622dc 100644
+index 7b9cbca14e..39e741cf58 100644
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
@@ -35,6 +35,8 @@
@@ -246,7 +246,7 @@ index 5740628386..d60cf622dc 100644
#define BUILD_ID_VERBOSE_NONE 0
#define BUILD_ID_VERBOSE_FILENAMES 1
-@@ -666,8 +668,366 @@ build_id_to_filename (const struct bfd_build_id *build_id, char **link_return)
+@@ -640,8 +642,366 @@ build_id_to_filename (const struct bfd_build_id *build_id, char **link_return)
return result;
}
@@ -614,7 +614,7 @@ index 5740628386..d60cf622dc 100644
avoidance. */
struct missing_filepair
-@@ -721,11 +1081,17 @@ missing_filepair_change (void)
+@@ -695,11 +1055,17 @@ missing_filepair_change (void)
/* All their memory came just from missing_filepair_OBSTACK. */
missing_filepair_hash = NULL;
}
@@ -632,7 +632,7 @@ index 5740628386..d60cf622dc 100644
missing_filepair_change ();
}
-@@ -792,14 +1158,39 @@ debug_print_missing (const char *binary, const char *debug)
+@@ -766,14 +1132,39 @@ debug_print_missing (const char *binary, const char *debug)
*slot = missing_filepair;
@@ -680,7 +680,7 @@ index 5740628386..d60cf622dc 100644
/* See build-id.h. */
diff --git a/gdb/config.in b/gdb/config.in
-index 1d11a97080..edd7028f76 100644
+index aa46f07410..404e0bbddc 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -33,6 +33,9 @@
@@ -693,7 +693,7 @@ index 1d11a97080..edd7028f76 100644
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#undef ENABLE_NLS
-@@ -264,6 +267,9 @@
+@@ -270,6 +273,9 @@
/* Define if Python 2.7 is being used. */
#undef HAVE_LIBPYTHON2_7
@@ -704,7 +704,7 @@ index 1d11a97080..edd7028f76 100644
#undef HAVE_LIBUNWIND_IA64_H
diff --git a/gdb/configure b/gdb/configure
-index 092893d757..1cecdbc3b5 100755
+index 4186f7e160..30a6e86ff8 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -716,6 +716,11 @@ PKGVERSION
@@ -762,7 +762,7 @@ index 092893d757..1cecdbc3b5 100755
YACC The `Yet Another C Compiler' implementation to use. Defaults to
the first program found out of: `bison -y', `byacc', `yacc'.
YFLAGS The list of arguments that will be passed by default to $YACC.
-@@ -6486,6 +6506,494 @@ _ACEOF
+@@ -6492,6 +6512,494 @@ _ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5
$as_echo "$with_auto_load_safe_path" >&6; }
@@ -1258,7 +1258,7 @@ index 092893d757..1cecdbc3b5 100755
subdirs="$subdirs testsuite"
diff --git a/gdb/configure.ac b/gdb/configure.ac
-index d4133ea71e..e232c1adcb 100644
+index e1f630cd38..39a777f647 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -167,6 +167,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir,
@@ -1462,10 +1462,10 @@ index d4133ea71e..e232c1adcb 100644
# Check whether to support alternative target configurations
diff --git a/gdb/corelow.c b/gdb/corelow.c
-index c5b642db81..6e027c12e2 100644
+index 76945950b9..4481128156 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
-@@ -309,7 +309,7 @@ build_id_locate_exec (int from_tty)
+@@ -368,7 +368,7 @@ build_id_locate_exec (int from_tty)
symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
}
else
@@ -1475,7 +1475,7 @@ index c5b642db81..6e027c12e2 100644
do_cleanups (back_to);
diff --git a/gdb/event-top.c b/gdb/event-top.c
-index 0c1528e5eb..0d668f35e0 100644
+index 5852089f09..d9379b42c5 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -40,6 +40,7 @@
@@ -1508,10 +1508,10 @@ index 0c1528e5eb..0d668f35e0 100644
}
diff --git a/gdb/symfile.h b/gdb/symfile.h
-index 0d51f46d78..82c76431e1 100644
+index dbd0370cf9..adcf1fdaae 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
-@@ -546,6 +546,8 @@ void map_symbol_filenames (symbol_filename_ftype *fun, void *data,
+@@ -538,6 +538,8 @@ void map_symbol_filenames (symbol_filename_ftype *fun, void *data,
/* build-id support. */
extern struct bfd_build_id *build_id_addr_get (CORE_ADDR addr);
extern void debug_print_missing (const char *binary, const char *debug);
diff --git a/gdb-6.6-buildid-locate-solib-missing-ids.patch b/gdb-6.6-buildid-locate-solib-missing-ids.patch
index 78aa93c..40b4071 100644
--- a/gdb-6.6-buildid-locate-solib-missing-ids.patch
+++ b/gdb-6.6-buildid-locate-solib-missing-ids.patch
@@ -14,22 +14,22 @@ gdb returns an incorrect back trace when applying a debuginfo
https://bugzilla.redhat.com/show_bug.cgi?id=1339862
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
-index a3399ad8f7..d7eeb6350d 100644
+index aa95bc1ce6..9a7ef10963 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
-@@ -1387,14 +1387,27 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
+@@ -1358,14 +1358,27 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
}
{
- struct bfd_build_id *build_id;
+ struct bfd_build_id *build_id = NULL;
- strncpy (newobj->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
+ strncpy (newobj->so_original_name, buffer.get (), SO_NAME_MAX_PATH_SIZE - 1);
newobj->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
/* May get overwritten below. */
strcpy (newobj->so_name, newobj->so_original_name);
-- build_id = build_id_addr_get (newobj->lm_info->l_ld);
+- build_id = build_id_addr_get (((lm_info_svr4 *) newobj->lm_info)->l_ld);
+ /* In the case the main executable was found according to its build-id
+ (from a core file) prevent loading a different build of a library
+ with accidentally the same SO_NAME.
@@ -47,7 +47,7 @@ index a3399ad8f7..d7eeb6350d 100644
if (build_id != NULL)
{
char *name, *build_id_filename;
-@@ -1409,23 +1422,7 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
+@@ -1380,23 +1393,7 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
xfree (name);
}
else
diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch
index cb02312..c2b4209 100644
--- a/gdb-6.6-buildid-locate.patch
+++ b/gdb-6.6-buildid-locate.patch
@@ -9,7 +9,7 @@ FileName: gdb-6.6-buildid-locate.patch
;;=push+jan
diff --git a/gdb/build-id.c b/gdb/build-id.c
-index 945da4f3cf..5740628386 100644
+index c8eacbd1e8..7b9cbca14e 100644
--- a/gdb/build-id.c
+++ b/gdb/build-id.c
@@ -26,11 +26,67 @@
@@ -19,7 +19,7 @@ index 945da4f3cf..5740628386 100644
+#include "libbfd.h"
+#include "gdbcore.h"
+#include "gdbcmd.h"
-+#include "observer.h"
++#include "observable.h"
+#include "elf/external.h"
+#include "elf/internal.h"
+#include "elf/common.h"
@@ -439,7 +439,7 @@ index 945da4f3cf..5740628386 100644
if (found == NULL)
warning (_("File \"%s\" has no build-id, file skipped"),
-@@ -65,23 +463,54 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
+@@ -65,11 +463,50 @@ build_id_verify (bfd *abfd, size_t check_len, const bfd_byte *check)
return retval;
}
@@ -484,84 +484,80 @@ index 945da4f3cf..5740628386 100644
+build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id,
+ char **link_return, int add_debug_suffix)
{
-- char *link, *debugdir;
-+ char *link, *debugdir, *link_all = NULL;
- VEC (char_ptr) *debugdir_vec;
- struct cleanup *back_to;
- int ix;
++ char *debugdir;
++ std::string link, link_all;
++ struct cleanup *back_to;
++ int ix;
gdb_bfd_ref_ptr abfd;
-- int alloc_len;
-
- /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */
-- alloc_len = (strlen (debug_file_directory)
-- + (sizeof "/.build-id/" - 1) + 1
-- + 2 * build_id_len + (sizeof ".debug" - 1) + 1);
-- link = (char *) alloca (alloc_len);
-+ link = (char *) xmalloc (strlen (debug_file_directory) + 2 * build_id_len + 50);
/* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
- cause "/.build-id/..." lookups. */
-@@ -94,9 +523,12 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
- size_t debugdir_len = strlen (debugdir);
+@@ -82,63 +519,296 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
+ {
const gdb_byte *data = build_id;
size_t size = build_id_len;
-- char *s;
- char *filename = NULL;
- struct cleanup *inner;
++ char *filename = NULL;
++ struct cleanup *inner;
+ unsigned seqno;
+ struct stat statbuf_trash;
-+ /* Initialize it just to avoid a GCC false warning. */
-+ char *s, *link0 = NULL, *link0_resolved;
++ std::string link0;
- memcpy (link, debugdir, debugdir_len);
- s = &link[debugdir_len];
-@@ -110,52 +542,299 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
- *s++ = '/';
+- std::string link = debugdir.get ();
++ link = debugdir.get ();
+ link += "/.build-id/";
+
+ if (size > 0)
+ {
+ size--;
+- string_appendf (link, "%02x/", (unsigned) *data++);
++ string_appendf (link, "%02x", (unsigned) *data++);
+ }
+-
++ if (size > 0)
++ link += "/";
while (size-- > 0)
- s += sprintf (s, "%02x", (unsigned) *data++);
-- strcpy (s, ".debug");
+ string_appendf (link, "%02x", (unsigned) *data++);
+- link += ".debug";
+-
if (separate_debug_file_debug)
- printf_unfiltered (_(" Trying %s\n"), link);
+ printf_unfiltered (_(" Trying %s\n"), link.c_str ());
- /* lrealpath() is expensive even for the usually non-existent files. */
-- if (access (link, F_OK) == 0)
-- filename = lrealpath (link);
+- gdb::unique_xmalloc_ptr<char> filename;
+- if (access (link.c_str (), F_OK) == 0)
+- filename.reset (lrealpath (link.c_str ()));
+-
+- if (filename == NULL)
+- continue;
+ for (seqno = 0;; seqno++)
+ {
-+ char *s2;
-+
+ if (seqno)
+ {
+ /* There can be multiple build-id symlinks pointing to real files
+ with the same build-id (such as hard links). Some of the real
+ files may not be installed. */
+
-+ s2 = s + sprintf (s, ".%u", seqno);
++ string_appendf (link, ".%u", seqno);
+ }
-+ else
-+ s2 = s;
+
+ if (add_debug_suffix)
-+ strcpy (s2, ".debug");
-+ else
-+ *s2 = 0;
++ link += ".debug";
+
+ if (!seqno)
+ {
+ /* If none of the real files is found report as missing file
+ always the non-.%u-suffixed file. */
-+ link0 = xstrdup (link);
++ link0 = link;
+ }
+
+ /* `access' automatically dereferences LINK. */
-+ if (lstat (link, &statbuf_trash) != 0)
++ if (lstat (link.c_str (), &statbuf_trash) != 0)
+ {
+ /* Stop increasing SEQNO. */
+ break;
+ }
+
-+ filename = lrealpath (link);
++ filename = lrealpath (link.c_str ());
+ if (filename == NULL)
+ continue;
+
@@ -581,65 +577,46 @@ index 945da4f3cf..5740628386 100644
+ filename = NULL;
+ }
-- if (filename == NULL)
-- continue;
+- /* We expect to be silent on the non-existing files. */
+- abfd = gdb_bfd_open (filename.get (), gnutarget, -1);
+ if (filename != NULL)
+ {
+ /* LINK_ALL is not used below in this non-NULL FILENAME case. */
-+ xfree (link0);
+ break;
+ }
-- /* We expect to be silent on the non-existing files. */
-- inner = make_cleanup (xfree, filename);
-- abfd = gdb_bfd_open (filename, gnutarget, -1);
-- do_cleanups (inner);
+- if (abfd == NULL)
+- continue;
+ /* If the symlink has target request to install the target.
+ BASE-debuginfo.rpm contains the symlink but BASE.rpm may be missing.
+ https://bugzilla.redhat.com/show_bug.cgi?id=981154 */
-+ link0_resolved = link_resolve (link0, 0);
-+ xfree (link0);
++ std::string link0_resolved (link_resolve (link0.c_str (), 0));
-- if (abfd == NULL)
-- continue;
-+ if (link_all == NULL)
+- if (build_id_verify (abfd.get(), build_id_len, build_id))
+- break;
++ if (link_all.empty ())
+ link_all = link0_resolved;
+ else
+ {
-+ size_t len_orig = strlen (link_all);
-
-- if (build_id_verify (abfd.get(), build_id_len, build_id))
-- break;
-+ link_all = (char *) xrealloc (link_all,
-+ len_orig + 1 + strlen (link0_resolved) + 1);
-
-- abfd.release ();
+ /* Use whitespace instead of DIRNAME_SEPARATOR to be compatible with
+ its possible use as an argument for installation command. */
-+ link_all[len_orig] = ' ';
-+
-+ strcpy (&link_all[len_orig + 1], link0_resolved);
-+ xfree (link0_resolved);
++ link_all += " " + link0_resolved;
+ }
+ }
-+
+
+- abfd.release ();
+ if (link_return != NULL)
+ {
+ if (abfd != NULL)
+ {
-+ *link_return = link;
-+ link = NULL;
++ *link_return = xstrdup (link.c_str ());
+ }
+ else
+ {
-+ *link_return = link_all;
-+ link_all = NULL;
++ *link_return = xstrdup (link_all.c_str ());
+ }
}
-+ xfree (link);
-+ xfree (link_all);
- do_cleanups (back_to);
return abfd;
}
@@ -796,7 +773,7 @@ index 945da4f3cf..5740628386 100644
+
/* See build-id.h. */
- char *
+ std::string
-find_separate_debug_file_by_buildid (struct objfile *objfile)
+find_separate_debug_file_by_buildid (struct objfile *objfile,
+ gdb::unique_xmalloc_ptr<char> *build_id_filename_return)
@@ -833,9 +810,9 @@ index 945da4f3cf..5740628386 100644
/* Prevent looping on a stripped .debug file. */
if (abfd != NULL
&& filename_cmp (bfd_get_filename (abfd.get ()),
-@@ -167,3 +846,21 @@ find_separate_debug_file_by_buildid (struct objfile *objfile)
- }
- return NULL;
+@@ -151,3 +821,21 @@ find_separate_debug_file_by_buildid (struct objfile *objfile)
+
+ return std::string ();
}
+
+extern void _initialize_build_id (void);
@@ -853,10 +830,10 @@ index 945da4f3cf..5740628386 100644
+ show_build_id_verbose,
+ &setlist, &showlist);
+
-+ observer_attach_executable_changed (debug_print_executable_changed);
++ gdb::observers::executable_changed.attach (debug_print_executable_changed);
+}
diff --git a/gdb/build-id.h b/gdb/build-id.h
-index 0f13c7d4cf..2d105dba88 100644
+index 15fb609409..1f62db0239 100644
--- a/gdb/build-id.h
+++ b/gdb/build-id.h
@@ -22,9 +22,10 @@
@@ -872,7 +849,7 @@ index 0f13c7d4cf..2d105dba88 100644
/* Return true if ABFD has NT_GNU_BUILD_ID matching the CHECK value.
Otherwise, issue a warning and return false. */
-@@ -38,13 +39,19 @@ extern int build_id_verify (bfd *abfd,
+@@ -38,13 +39,18 @@ extern int build_id_verify (bfd *abfd,
the caller. */
extern gdb_bfd_ref_ptr build_id_to_debug_bfd (size_t build_id_len,
@@ -885,30 +862,31 @@ index 0f13c7d4cf..2d105dba88 100644
+ char **link_return);
/* Find the separate debug file for OBJFILE, by using the build-id
- associated with OBJFILE's BFD. If successful, returns a malloc'd
- file name for the separate debug file. The caller must free this.
- Otherwise, returns NULL. */
+ associated with OBJFILE's BFD. If successful, returns the file name for the
+ separate debug file, otherwise, return an empty string. */
--extern char *find_separate_debug_file_by_buildid (struct objfile *objfile);
-+extern char *find_separate_debug_file_by_buildid (struct objfile *objfile,
+-extern std::string find_separate_debug_file_by_buildid
+- (struct objfile *objfile);
++extern std::string find_separate_debug_file_by_buildid (struct objfile *objfile,
+ gdb::unique_xmalloc_ptr<char> *build_id_filename_return);
#endif /* BUILD_ID_H */
diff --git a/gdb/coffread.c b/gdb/coffread.c
-index fbbbb68f71..9698ec2191 100644
+index f24ec0713a..5c1c3e61ea 100644
--- a/gdb/coffread.c
+++ b/gdb/coffread.c
-@@ -735,7 +735,7 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
+@@ -733,7 +733,8 @@ coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
+ /* Try to add separate debug file if no symbols table found. */
+ if (!objfile_has_partial_symbols (objfile))
{
- char *debugfile;
-
-- debugfile = find_separate_debug_file_by_buildid (objfile);
-+ debugfile = find_separate_debug_file_by_buildid (objfile, NULL);
+- std::string debugfile = find_separate_debug_file_by_buildid (objfile);
++ std::string debugfile = find_separate_debug_file_by_buildid (objfile,
++ NULL);
- if (debugfile == NULL)
+ if (debugfile.empty ())
debugfile = find_separate_debug_file_by_debuglink (objfile);
diff --git a/gdb/corelow.c b/gdb/corelow.c
-index 3a5256cb17..c5b642db81 100644
+index c6175279da..76945950b9 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -45,6 +45,10 @@
@@ -922,7 +900,7 @@ index 3a5256cb17..c5b642db81 100644
#ifndef O_LARGEFILE
#define O_LARGEFILE 0
-@@ -264,6 +268,54 @@ add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg)
+@@ -323,6 +327,54 @@ add_to_thread_list (bfd *abfd, asection *asect, void *reg_sect_arg)
inferior_ptid = ptid; /* Yes, make it current. */
}
@@ -940,7 +918,7 @@ index 3a5256cb17..c5b642db81 100644
+ if (exec_bfd != NULL || symfile_objfile != NULL)
+ return;
+
-+ if (target_auxv_search (¤t_target, AT_ENTRY, &at_entry) <= 0)
++ if (target_auxv_search (target_stack, AT_ENTRY, &at_entry) <= 0)
+ return;
+
+ build_id = build_id_addr_get (at_entry);
@@ -974,10 +952,10 @@ index 3a5256cb17..c5b642db81 100644
+ /* No automatic SOLIB_ADD as the libraries would get read twice. */
+}
+
- /* This routine opens and sets up the core file bfd. */
+ /* Issue a message saying we have no core to debug, if FROM_TTY. */
static void
-@@ -391,6 +443,14 @@ core_open (const char *arg, int from_tty)
+@@ -466,6 +518,14 @@ core_target_open (const char *arg, int from_tty)
switch_to_thread (thread->ptid);
}
@@ -989,13 +967,13 @@ index 3a5256cb17..c5b642db81 100644
+ if (build_id_core_loads != 0)
+ build_id_locate_exec (from_tty);
+
- post_create_inferior (&core_ops, from_tty);
+ post_create_inferior (target, from_tty);
/* Now go through the target stack looking for threads since there
-@@ -1040,4 +1100,11 @@ _initialize_corelow (void)
- init_core_ops ();
-
- add_target_with_completer (&core_ops, filename_completer);
+@@ -1068,4 +1128,11 @@ void
+ _initialize_corelow (void)
+ {
+ add_target (core_target_info, core_target_open, filename_completer);
+
+ add_setshow_boolean_cmd ("build-id-core-loads", class_files,
+ &build_id_core_loads, _("\
@@ -1005,10 +983,10 @@ index 3a5256cb17..c5b642db81 100644
+ &setlist, &showlist);
}
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
-index 8bdafb0ba4..2f2cbd3dea 100644
+index 28f083f96e..403f5ca658 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
-@@ -19447,6 +19447,27 @@ information files.
+@@ -19558,6 +19558,27 @@ information files.
@end table
@@ -1037,10 +1015,10 @@ index 8bdafb0ba4..2f2cbd3dea 100644
@cindex debug link sections
A debug link is a special section of the executable file named
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 98e7d842f0..c8db955f2f 100644
+index 4006f4a48f..266740f74c 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
-@@ -2907,7 +2907,7 @@ dwarf2_get_dwz_file (void)
+@@ -2690,7 +2690,7 @@ dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
}
if (dwz_bfd == NULL)
@@ -1050,22 +1028,22 @@ index 98e7d842f0..c8db955f2f 100644
if (dwz_bfd == NULL)
error (_("could not find '.gnu_debugaltlink' file for %s"),
diff --git a/gdb/elfread.c b/gdb/elfread.c
-index 103b2144c3..fb32e03af5 100644
+index b4b4a1b24c..0824e37bf1 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
-@@ -1259,8 +1259,9 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
+@@ -1290,7 +1290,9 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
&& objfile->separate_debug_objfile == NULL
&& objfile->separate_debug_objfile_backlink == NULL)
{
+- std::string debugfile = find_separate_debug_file_by_buildid (objfile);
+ gdb::unique_xmalloc_ptr<char> build_id_filename;
- gdb::unique_xmalloc_ptr<char> debugfile
-- (find_separate_debug_file_by_buildid (objfile));
-+ (find_separate_debug_file_by_buildid (objfile, &build_id_filename));
++ std::string debugfile
++ = find_separate_debug_file_by_buildid (objfile, &build_id_filename);
- if (debugfile == NULL)
- debugfile.reset (find_separate_debug_file_by_debuglink (objfile));
-@@ -1272,6 +1273,10 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
- symbol_file_add_separate (abfd.get (), debugfile.get (),
+ if (debugfile.empty ())
+ debugfile = find_separate_debug_file_by_debuglink (objfile);
+@@ -1302,6 +1304,10 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
+ symbol_file_add_separate (abfd.get (), debugfile.c_str (),
symfile_flags, objfile);
}
+ /* Check if any separate debug info has been extracted out. */
@@ -1113,7 +1091,7 @@ index c2b40ff535..112cbf6560 100644
continue;
if (objfpy_build_id_matches (obfd_build_id, build_id))
diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
-index 4973cc2f25..a3399ad8f7 100644
+index f9936b36de..aa95bc1ce6 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -45,6 +45,7 @@
@@ -1124,22 +1102,22 @@ index 4973cc2f25..a3399ad8f7 100644
static struct link_map_offsets *svr4_fetch_link_map_offsets (void);
static int svr4_have_link_map_offsets (void);
-@@ -1385,9 +1386,52 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
+@@ -1356,9 +1357,51 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
continue;
}
-- strncpy (newobj->so_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
+- strncpy (newobj->so_name, buffer.get (), SO_NAME_MAX_PATH_SIZE - 1);
- newobj->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
- strcpy (newobj->so_original_name, newobj->so_name);
+ {
+ struct bfd_build_id *build_id;
+
-+ strncpy (newobj->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
++ strncpy (newobj->so_original_name, buffer.get (), SO_NAME_MAX_PATH_SIZE - 1);
+ newobj->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
+ /* May get overwritten below. */
+ strcpy (newobj->so_name, newobj->so_original_name);
+
-+ build_id = build_id_addr_get (newobj->lm_info->l_ld);
++ build_id = build_id_addr_get (((lm_info_svr4 *) newobj->lm_info)->l_ld);
+ if (build_id != NULL)
+ {
+ char *name, *build_id_filename;
@@ -1176,15 +1154,14 @@ index 4973cc2f25..a3399ad8f7 100644
+ xfree (build_id);
+ }
+ }
-+
- xfree (buffer);
/* If this entry has no name, or its name matches the name
+ for the main executable, don't include it in the list. */
diff --git a/gdb/symfile.h b/gdb/symfile.h
-index 7c3fd8240a..0d51f46d78 100644
+index d9185092ee..dbd0370cf9 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
-@@ -543,6 +543,10 @@ void expand_symtabs_matching
+@@ -535,6 +535,10 @@ void expand_symtabs_matching
void map_symbol_filenames (symbol_filename_ftype *fun, void *data,
int need_fullname);
@@ -1246,7 +1223,7 @@ index a6dc14e3c9..54a10df155 100644
append options " -ex \"b $bpline\""
append options " -ex \"run\""
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
-index 7702d9c238..a165bf0938 100644
+index 0f05d043f2..becda6a001 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1694,6 +1694,16 @@ proc default_gdb_start { } {
@@ -1267,7 +1244,7 @@ index 7702d9c238..a165bf0938 100644
}
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
-index 2846da74e4..004c3e6c1c 100644
+index 851e490f4d..469ca592ab 100644
--- a/gdb/testsuite/lib/mi-support.exp
+++ b/gdb/testsuite/lib/mi-support.exp
@@ -309,6 +309,16 @@ proc default_mi_gdb_start { args } {
diff --git a/gdb-6.6-bz235197-fork-detach-info.patch b/gdb-6.6-bz235197-fork-detach-info.patch
deleted file mode 100644
index b985654..0000000
--- a/gdb-6.6-bz235197-fork-detach-info.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Jan Kratochvil <jan.kratochvil@redhat.com>
-Date: Fri, 27 Oct 2017 21:07:50 +0200
-Subject: gdb-6.6-bz235197-fork-detach-info.patch
-
-FileName: gdb-6.6-bz235197-fork-detach-info.patch
-
-;; Notify user of a child forked process being detached (BZ 235197).
-;;=push+jan: This is more about discussion if/what should be printed.
-
-2008-03-01 Jan Kratochvil <jan.kratochvil@redhat.com>
-
- Port to GDB-6.8pre.
- Remove the `[' character from the GDB-6.8 default message.
-
-diff --git a/gdb/infrun.c b/gdb/infrun.c
-index e1d11234e0..23439979b5 100644
---- a/gdb/infrun.c
-+++ b/gdb/infrun.c
-@@ -461,7 +461,7 @@ holding the child stopped. Try \"set detach-on-fork\" or \
- remove_breakpoints_pid (ptid_get_pid (inferior_ptid));
- }
-
-- if (info_verbose || debug_infrun)
-+ if (1 /* Fedora Bug 235197 */ || info_verbose || debug_infrun)
- {
- /* Ensure that we have a process ptid. */
- ptid_t process_ptid = pid_to_ptid (ptid_get_pid (child_ptid));
-diff --git a/gdb/testsuite/gdb.base/catch-syscall.exp b/gdb/testsuite/gdb.base/catch-syscall.exp
-index 2a8bf27e5c..20fa041155 100644
---- a/gdb/testsuite/gdb.base/catch-syscall.exp
-+++ b/gdb/testsuite/gdb.base/catch-syscall.exp
-@@ -179,7 +179,7 @@ proc check_for_program_end {} {
- # Deleting the catchpoints
- delete_breakpoints
-
-- gdb_continue_to_end
-+ gdb_continue_to_end "" continue 1
- }
-
- proc test_catch_syscall_without_args {} {
-@@ -250,7 +250,7 @@ proc test_catch_syscall_with_wrong_args {} {
- # If it doesn't, everything is right (since we don't have
- # a syscall named "mlock" in it). Otherwise, this is a failure.
- set thistest "catch syscall with unused syscall ($syscall_name)"
-- gdb_continue_to_end $thistest
-+ gdb_continue_to_end $thistest continue 1
- }
- }
-
-diff --git a/gdb/testsuite/gdb.base/fork-detach.c b/gdb/testsuite/gdb.base/fork-detach.c
-new file mode 100644
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/fork-detach.c
-@@ -0,0 +1,57 @@
-+/* This testcase is part of GDB, the GNU debugger.
-+
-+ Copyright 2007 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2 of the License, or
-+ (at your option) any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with this program; if not, write to the Free Software
-+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+
-+ Please email any bugs, comments, and/or additions to this file to:
-+ bug-gdb@prep.ai.mit.edu */
-+
-+#include <sys/types.h>
-+#include <sys/wait.h>
-+#include <unistd.h>
-+#include <assert.h>
-+#include <stdlib.h>
-+
-+static void func (void)
-+{
-+}
-+
-+int main (void)
-+{
-+ pid_t child;
-+
-+ child = fork ();
-+ switch (child)
-+ {
-+ case -1:
-+ abort ();
-+ case 0:
-+ func ();
-+ break;
-+ default:
-+ {
-+/* We do not test the switching to the other fork by GDB `fork 1'. */
-+#if 0
-+ pid_t got;
-+
-+ got = waitpid (child, NULL, 0);
-+ assert (got == child);
-+#endif
-+ break;
-+ }
-+ }
-+ return 0;
-+}
-diff --git a/gdb/testsuite/gdb.base/fork-detach.exp b/gdb/testsuite/gdb.base/fork-detach.exp
-new file mode 100644
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/fork-detach.exp
-@@ -0,0 +1,36 @@
-+# Copyright 2007 Free Software Foundation, Inc.
-+
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-+
-+set testfile fork-detach
-+set srcfile ${testfile}.c
-+set binfile [standard_output_file ${testfile}]
-+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
-+ untested "Couldn't compile test program"
-+ return -1
-+}
-+
-+# Get things started.
-+
-+gdb_exit
-+gdb_start
-+gdb_reinitialize_dir $srcdir/$subdir
-+gdb_load ${binfile}
-+
-+gdb_run_cmd
-+# `Starting program: .*' prefix is available since gdb-6.7.
-+gdb_test "" \
-+ "Detaching after fork from child process.*\\\[Inferior .* exited normally\\\]" \
-+ "Info message caught"
diff --git a/gdb-6.6-scheduler_locking-step-is-default.patch b/gdb-6.6-scheduler_locking-step-is-default.patch
index c0cdc89..47d73d0 100644
--- a/gdb-6.6-scheduler_locking-step-is-default.patch
+++ b/gdb-6.6-scheduler_locking-step-is-default.patch
@@ -9,7 +9,7 @@ FileName: gdb-6.6-scheduler_locking-step-is-default.patch
;;=push+jan: How much is scheduler-locking relevant after non-stop?
diff --git a/gdb/infrun.c b/gdb/infrun.c
-index 23439979b5..1d0f731954 100644
+index df19478ef3..78ffc10b23 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -2202,7 +2202,7 @@ static const char *const scheduler_enums[] = {
diff --git a/gdb-6.8-attach-signalled-detach-stopped.patch b/gdb-6.8-attach-signalled-detach-stopped.patch
deleted file mode 100644
index be75a1f..0000000
--- a/gdb-6.8-attach-signalled-detach-stopped.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Fedora GDB patches <invalid@email.com>
-Date: Fri, 27 Oct 2017 21:07:50 +0200
-Subject: gdb-6.8-attach-signalled-detach-stopped.patch
-
-FileName: gdb-6.8-attach-signalled-detach-stopped.patch
-
-;; [RHEL5,RHEL6] Fix attaching to stopped processes.
-;; [RHEL5] Workaround kernel for detaching SIGSTOPped processes (BZ 809382).
-;;=fedora
-
-diff --git a/gdb/infrun.c b/gdb/infrun.c
-index b468d02fd6..16561dd119 100644
---- a/gdb/infrun.c
-+++ b/gdb/infrun.c
-@@ -606,6 +606,13 @@ holding the child stopped. Try \"set detach-on-fork\" or \
- target_pid_to_str (process_ptid));
- }
-
-+#ifdef NEED_DETACH_SIGSTOP
-+ /* We should check PID_WAS_STOPPED and detach it stopped accordingly.
-+ In this point of code it cannot be 1 as we would not get FORK
-+ executed without CONTINUE first which resets PID_WAS_STOPPED.
-+ We would have to first TARGET_STOP and WAITPID it as with running
-+ inferior PTRACE_DETACH, SIGSTOP will ignore the signal. */
-+#endif
- target_detach (NULL, 0);
- }
-
-diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
-index 1570a2bcb6..a101fbbe33 100644
---- a/gdb/linux-nat.c
-+++ b/gdb/linux-nat.c
-@@ -194,6 +194,11 @@ enum tribool have_ptrace_getregset = TRIBOOL_UNKNOWN;
- static struct target_ops *linux_ops;
- static struct target_ops linux_ops_saved;
-
-+#ifdef NEED_DETACH_SIGSTOP
-+/* PID of the inferior stopped by SIGSTOP before attaching (or zero). */
-+static pid_t pid_was_stopped;
-+
-+#endif
- /* The method to call, if any, when a new thread is attached. */
- static void (*linux_nat_new_thread) (struct lwp_info *);
-
-@@ -1065,6 +1070,9 @@ linux_nat_post_attach_wait (ptid_t ptid, int *signalled)
- if (debug_linux_nat)
- fprintf_unfiltered (gdb_stdlog,
- "LNPAW: Attaching to a stopped process\n");
-+#ifdef NEED_DETACH_SIGSTOP
-+ pid_was_stopped = ptid_get_pid (ptid);
-+#endif
-
- /* The process is definitely stopped. It is in a job control
- stop, unless the kernel predates the TASK_STOPPED /
-@@ -1420,6 +1428,25 @@ get_detach_signal (struct lwp_info *lp)
- return gdb_signal_to_host (signo);
- }
-
-+#ifdef NEED_DETACH_SIGSTOP
-+ /* Workaround RHEL-5 kernel which has unreliable PTRACE_DETACH, SIGSTOP (that
-+ many TIDs are left unstopped). See RH Bug 496732. */
-+ if (ptid_get_pid (lp->ptid) == pid_was_stopped)
-+ {
-+ int err;
-+
-+ errno = 0;
-+ err = kill_lwp (ptid_get_lwp (lp->ptid), SIGSTOP);
-+ if (debug_linux_nat)
-+ {
-+ fprintf_unfiltered (gdb_stdlog,
-+ "SC: lwp kill %d %s\n",
-+ err,
-+ errno ? safe_strerror (errno) : "ERRNO-OK");
-+ }
-+ }
-+
-+#endif
- return 0;
- }
-
-@@ -1578,6 +1605,10 @@ linux_nat_detach (struct target_ops *ops, const char *args, int from_tty)
- detach_one_lwp (main_lwp, &signo);
-
- inf_ptrace_detach_success (ops);
-+
-+#ifdef NEED_DETACH_SIGSTOP
-+ pid_was_stopped = 0;
-+#endif
- }
- }
-
-@@ -1838,6 +1869,16 @@ linux_nat_resume (struct target_ops *ops,
- return;
- }
-
-+#ifdef NEED_DETACH_SIGSTOP
-+ /* At this point, we are going to resume the inferior and if we
-+ have attached to a stopped process, we no longer should leave
-+ it as stopped if the user detaches. PTID variable has PID set to LWP
-+ while we need to check the real PID here. */
-+
-+ if (!step && lp && pid_was_stopped == ptid_get_pid (lp->ptid))
-+ pid_was_stopped = 0;
-+
-+#endif
- if (resume_many)
- iterate_over_lwps (ptid, linux_nat_resume_callback, lp);
-
-@@ -3830,6 +3871,10 @@ linux_nat_mourn_inferior (struct target_ops *ops)
-
- /* Let the arch-specific native code know this process is gone. */
- linux_nat_forget_process (pid);
-+#ifdef NEED_DETACH_SIGSTOP
-+
-+ pid_was_stopped = 0;
-+#endif
- }
-
- /* Convert a native/host siginfo object, into/from the siginfo in the
-diff --git a/gdb/testsuite/gdb.threads/attach-stopped.exp b/gdb/testsuite/gdb.threads/attach-stopped.exp
-index 6c8c8bf10e..c953a9c60d 100644
---- a/gdb/testsuite/gdb.threads/attach-stopped.exp
-+++ b/gdb/testsuite/gdb.threads/attach-stopped.exp
-@@ -56,7 +56,65 @@ proc corefunc { threadtype } {
- gdb_reinitialize_dir $srcdir/$subdir
- gdb_load ${binfile}
-
-- # Verify that we can attach to the stopped process.
-+ # Verify that we can attach to the process by first giving its
-+ # executable name via the file command, and using attach with the
-+ # process ID.
-+
-+ set test "$threadtype: set file, before attach1 to stopped process"
-+ gdb_test_multiple "file $binfile" "$test" {
-+ -re "Load new symbol table from.*y or n. $" {
-+ gdb_test "y" "Reading symbols from $escapedbinfile\.\.\.*done." \
-+ "$test (re-read)"
-+ }
-+ -re "Reading symbols from $escapedbinfile\.\.\.*done.*$gdb_prompt $" {
-+ pass "$test"
-+ }
-+ }
-+
-+ set test "$threadtype: attach1 to stopped, after setting file"
-+ gdb_test_multiple "attach $testpid" "$test" {
-+ -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $" {
-+ pass "$test"
-+ }
-+ }
-+
-+ # ".*sleep.*clone.*" would fail on s390x as bt stops at START_THREAD there.
-+ if {[string equal $threadtype threaded]} {
-+ gdb_test "thread apply all bt" ".*sleep.*start_thread.*" "$threadtype: attach1 to stopped bt"
-+ } else {
-+ gdb_test "bt" ".*sleep.*main.*" "$threadtype: attach1 to stopped bt"
-+ }
-+
-+ # Exit and detach the process.
-+
-+ gdb_exit
-+
-+ # Avoid some race:
-+ sleep 2
-+
-+ if [catch {open /proc/${testpid}/status r} fileid] {
-+ set line2 "NOTFOUND"
-+ } else {
-+ gets $fileid line1;
-+ gets $fileid line2;
-+ close $fileid;
-+ }
-+
-+ set test "$threadtype: attach1, exit leaves process stopped"
-+ if {[string match "*(stopped)*" $line2]} {
-+ pass $test
-+ } else {
-+ fail $test
-+ }
-+
-+ # At this point, the process should still be stopped
-+
-+ gdb_start
-+ gdb_reinitialize_dir $srcdir/$subdir
-+ gdb_load ${binfile}
-+
-+ # Verify that we can attach to the process just by giving the
-+ # process ID.
-
- set test "$threadtype: attach2 to stopped, after setting file"
- gdb_test_multiple "attach $testpid" "$test" {
diff --git a/gdb-6.8-bz436037-reg-no-longer-active.patch b/gdb-6.8-bz436037-reg-no-longer-active.patch
index 01edd16..9326314 100644
--- a/gdb-6.8-bz436037-reg-no-longer-active.patch
+++ b/gdb-6.8-bz436037-reg-no-longer-active.patch
@@ -9,10 +9,10 @@ FileName: gdb-6.8-bz436037-reg-no-longer-active.patch
;;=push+jan: This fix is incorrect.
diff --git a/gdb/valops.c b/gdb/valops.c
-index 9b25980090..7aacd17d70 100644
+index 9b6600b538..cdc5c8014c 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
-@@ -1103,6 +1103,8 @@ value_assign (struct value *toval, struct value *fromval)
+@@ -1104,6 +1104,8 @@ value_assign (struct value *toval, struct value *fromval)
struct gdbarch *gdbarch;
int value_reg;
@@ -21,7 +21,7 @@ index 9b25980090..7aacd17d70 100644
/* Figure out which frame this is in currently.
We use VALUE_FRAME_ID for obtaining the value's frame id instead of
-@@ -1112,8 +1114,14 @@ value_assign (struct value *toval, struct value *fromval)
+@@ -1113,8 +1115,14 @@ value_assign (struct value *toval, struct value *fromval)
frame. */
frame = frame_find_by_id (VALUE_FRAME_ID (toval));
diff --git a/gdb-6.8-quit-never-aborts.patch b/gdb-6.8-quit-never-aborts.patch
index 8fbe6f0..647ca40 100644
--- a/gdb-6.8-quit-never-aborts.patch
+++ b/gdb-6.8-quit-never-aborts.patch
@@ -16,7 +16,7 @@ should have been detached with SIGSTOP (as they are accidentally left running
on the debugger termination).
diff --git a/gdb/defs.h b/gdb/defs.h
-index 0c156d56c3..9a7f4d52b0 100644
+index ce5fee3ba3..8b16aca2a0 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
@@ -168,6 +168,10 @@ extern void default_quit_handler (void);
@@ -31,10 +31,10 @@ index 0c156d56c3..9a7f4d52b0 100644
/* Helper for the QUIT macro. */
diff --git a/gdb/extension.c b/gdb/extension.c
-index a1ee3510a6..229d702270 100644
+index e5c014667a..1c54f03272 100644
--- a/gdb/extension.c
+++ b/gdb/extension.c
-@@ -830,6 +830,11 @@ check_quit_flag (void)
+@@ -820,6 +820,11 @@ check_quit_flag (void)
int i, result = 0;
const struct extension_language_defn *extlang;
@@ -47,11 +47,11 @@ index a1ee3510a6..229d702270 100644
{
if (extlang->ops->check_quit_flag != NULL)
diff --git a/gdb/top.c b/gdb/top.c
-index 4749cf561d..e2665c8e22 100644
+index 07b386dacb..e6c595505f 100644
--- a/gdb/top.c
+++ b/gdb/top.c
-@@ -1580,7 +1580,13 @@ quit_force (int *exit_arg, int from_tty)
- qt.args = NULL;
+@@ -1604,7 +1604,13 @@ quit_force (int *exit_arg, int from_tty)
+
qt.from_tty = from_tty;
+#ifndef NEED_DETACH_SIGSTOP
@@ -65,10 +65,10 @@ index 4749cf561d..e2665c8e22 100644
/* Get out of tfind mode, and kill or detach all inferiors. */
TRY
diff --git a/gdb/utils.c b/gdb/utils.c
-index 6f0abc98a2..58c0380d17 100644
+index c816e2f897..db1c534560 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
-@@ -107,6 +107,13 @@ static std::chrono::steady_clock::duration prompt_for_continue_wait_time;
+@@ -108,6 +108,13 @@ static std::chrono::steady_clock::duration prompt_for_continue_wait_time;
static int debug_timestamp = 0;
diff --git a/gdb-6.8-sparc64-silence-memcpy-check.patch b/gdb-6.8-sparc64-silence-memcpy-check.patch
index bef469f..07cf3fd 100644
--- a/gdb-6.8-sparc64-silence-memcpy-check.patch
+++ b/gdb-6.8-sparc64-silence-memcpy-check.patch
@@ -9,10 +9,10 @@ FileName: gdb-6.8-sparc64-silence-memcpy-check.patch
;;=push: But it is just a GCC workaround, look up the existing GCC PR for it.
diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c
-index 12fd5b9e64..e304ba8dbc 100644
+index 7300080d8d..9860e12729 100644
--- a/gdb/sparc-tdep.c
+++ b/gdb/sparc-tdep.c
-@@ -1444,6 +1444,7 @@ sparc32_store_return_value (struct type *type, struct regcache *regcache,
+@@ -1462,6 +1462,7 @@ sparc32_store_return_value (struct type *type, struct regcache *regcache,
if (sparc_floating_p (type) || sparc_complex_floating_p (type))
{
/* Floating return values. */
diff --git a/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch b/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
index d981bc1..caefb72 100644
--- a/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
+++ b/gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
@@ -19,7 +19,7 @@ FileName: gdb-7.2.50-sparc-add-workaround-to-broken-debug-files.patch
;;=push
diff --git a/gdb/gdb_bfd.c b/gdb/gdb_bfd.c
-index 80ddd427af..3e4d3e4444 100644
+index 8fedeb438d..057f5e1ae9 100644
--- a/gdb/gdb_bfd.c
+++ b/gdb/gdb_bfd.c
@@ -24,12 +24,14 @@
diff --git a/gdb-archer-pie-addons-keep-disabled.patch b/gdb-archer-pie-addons-keep-disabled.patch
index e75d50d..c29cb68 100644
--- a/gdb-archer-pie-addons-keep-disabled.patch
+++ b/gdb-archer-pie-addons-keep-disabled.patch
@@ -8,10 +8,10 @@ FileName: gdb-archer-pie-addons-keep-disabled.patch
;;=push+jan: Breakpoints disabling matching should not be based on address.
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
-index 2b5eebbbee..814802a0a1 100644
+index 721afd2c04..a04b1183b7 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
-@@ -15590,6 +15590,50 @@ initialize_breakpoint_ops (void)
+@@ -15511,6 +15511,50 @@ initialize_breakpoint_ops (void)
static struct cmd_list_element *enablebreaklist = NULL;
@@ -63,10 +63,10 @@ index 2b5eebbbee..814802a0a1 100644
_initialize_breakpoint (void)
{
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
-index 8bb81d8d17..3fddbaa713 100644
+index 4223158fbc..407cc531db 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
-@@ -1656,6 +1656,9 @@ extern const char *ep_parse_optional_if_clause (const char **arg);
+@@ -1683,6 +1683,9 @@ extern const char *ep_parse_optional_if_clause (const char **arg);
UIOUT iff debugging multiple threads. */
extern void maybe_print_thread_hit_breakpoint (struct ui_out *uiout);
@@ -77,10 +77,10 @@ index 8bb81d8d17..3fddbaa713 100644
extern void print_breakpoint (breakpoint *bp);
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
-index 7adaef119d..2f061b47f7 100644
+index f57f4f58b0..d31c0d6f56 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
-@@ -879,6 +879,11 @@ objfile_relocate1 (struct objfile *objfile,
+@@ -875,6 +875,11 @@ objfile_relocate1 (struct objfile *objfile,
obj_section_addr (s));
}
diff --git a/gdb-archer-pie-addons.patch b/gdb-archer-pie-addons.patch
index f469b6e..590fdb8 100644
--- a/gdb-archer-pie-addons.patch
+++ b/gdb-archer-pie-addons.patch
@@ -8,10 +8,10 @@ FileName: gdb-archer-pie-addons.patch
;;=push+jan: May get obsoleted by Tom's unrelocated objfiles patch.
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
-index 179238ce82..5597038357 100644
+index 878c8b0302..cf1346161d 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
-@@ -453,6 +453,7 @@ enum field_loc_kind
+@@ -505,6 +505,7 @@ enum field_loc_kind
{
FIELD_LOC_KIND_BITPOS, /**< bitpos */
FIELD_LOC_KIND_ENUMVAL, /**< enumval */
@@ -19,7 +19,7 @@ index 179238ce82..5597038357 100644
FIELD_LOC_KIND_PHYSADDR, /**< physaddr */
FIELD_LOC_KIND_PHYSNAME, /**< physname */
FIELD_LOC_KIND_DWARF_BLOCK /**< dwarf_block */
-@@ -504,6 +505,7 @@ union field_location
+@@ -556,6 +557,7 @@ union field_location
field. Otherwise, physname is the mangled label of the
static field. */
@@ -27,7 +27,7 @@ index 179238ce82..5597038357 100644
CORE_ADDR physaddr;
const char *physname;
-@@ -1362,6 +1364,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
+@@ -1453,6 +1455,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
#define FIELD_ENUMVAL_LVAL(thisfld) ((thisfld).loc.enumval)
#define FIELD_ENUMVAL(thisfld) (FIELD_ENUMVAL_LVAL (thisfld) + 0)
#define FIELD_STATIC_PHYSNAME(thisfld) ((thisfld).loc.physname)
@@ -35,7 +35,7 @@ index 179238ce82..5597038357 100644
#define FIELD_STATIC_PHYSADDR(thisfld) ((thisfld).loc.physaddr)
#define FIELD_DWARF_BLOCK(thisfld) ((thisfld).loc.dwarf_block)
#define SET_FIELD_BITPOS(thisfld, bitpos) \
-@@ -1373,6 +1376,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
+@@ -1464,6 +1467,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
#define SET_FIELD_PHYSNAME(thisfld, name) \
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSNAME, \
FIELD_STATIC_PHYSNAME (thisfld) = (name))
@@ -43,7 +43,7 @@ index 179238ce82..5597038357 100644
#define SET_FIELD_PHYSADDR(thisfld, addr) \
(FIELD_LOC_KIND (thisfld) = FIELD_LOC_KIND_PHYSADDR, \
FIELD_STATIC_PHYSADDR (thisfld) = (addr))
-@@ -1389,6 +1393,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
+@@ -1480,6 +1484,7 @@ extern void set_type_vptr_basetype (struct type *, struct type *);
#define TYPE_FIELD_BITPOS(thistype, n) FIELD_BITPOS (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_ENUMVAL(thistype, n) FIELD_ENUMVAL (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_STATIC_PHYSNAME(thistype, n) FIELD_STATIC_PHYSNAME (TYPE_FIELD (thistype, n))
@@ -52,10 +52,10 @@ index 179238ce82..5597038357 100644
#define TYPE_FIELD_DWARF_BLOCK(thistype, n) FIELD_DWARF_BLOCK (TYPE_FIELD (thistype, n))
#define TYPE_FIELD_ARTIFICIAL(thistype, n) FIELD_ARTIFICIAL(TYPE_FIELD(thistype,n))
diff --git a/gdb/value.c b/gdb/value.c
-index d4b4673f66..558d0bbd7a 100644
+index aa6ca43b41..98c060c65f 100644
--- a/gdb/value.c
+++ b/gdb/value.c
-@@ -2966,7 +2966,8 @@ value_static_field (struct type *type, int fieldno)
+@@ -2830,7 +2830,8 @@ value_static_field (struct type *type, int fieldno)
{
case FIELD_LOC_KIND_PHYSADDR:
retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno),
diff --git a/gdb-archer-vla-tests.patch b/gdb-archer-vla-tests.patch
index 6427604..7c3a64c 100644
--- a/gdb-archer-vla-tests.patch
+++ b/gdb-archer-vla-tests.patch
@@ -3692,7 +3692,7 @@ new file mode 100644
+ writeln(s); { set breakpoint 2 here }
+end.
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
-index a165bf0938..a13aaf7869 100644
+index becda6a001..067be70c7a 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -169,6 +169,11 @@ proc gdb_unload {} {
diff --git a/gdb-archer.patch b/gdb-archer.patch
index e6ca2f2..c92d1ad 100644
--- a/gdb-archer.patch
+++ b/gdb-archer.patch
@@ -17,10 +17,10 @@ commit 718a1618b2f691a7f407213bb50f100ac59f91c3
tromey/python
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index 3142ad6af1..28d8664236 100644
+index 1ea7a36c69..b767caa735 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
-@@ -2110,6 +2110,12 @@ stamp-h: $(srcdir)/config.in config.status
+@@ -2094,6 +2094,12 @@ stamp-h: $(srcdir)/config.in config.status
CONFIG_LINKS= \
$(SHELL) config.status
@@ -56,7 +56,7 @@ index 5c7c0b4c2e..2014607e9e 100644
gdb/printer/bound_registers.py
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
-index 7b99ae1551..dea17fd5a7 100644
+index 403f5ca658..4788dd9f0d 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1245,6 +1245,16 @@ for remote debugging.
@@ -77,7 +77,7 @@ index 7b99ae1551..dea17fd5a7 100644
@item -tui
@cindex @code{--tui}
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
-index ccf011e35e..461e900f77 100644
+index fb074faf43..8d8fbfeaa9 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -88,8 +88,6 @@ containing @code{end}. For example:
@@ -110,7 +110,7 @@ index 05a38b2670..9801fdff67 100644
set variable $gdb_init_done = 1
diff --git a/gdb/main.c b/gdb/main.c
-index b079e79c93..b150af4e70 100644
+index 84e6126ad4..80d84ea246 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -33,6 +33,7 @@
@@ -121,7 +121,7 @@ index b079e79c93..b150af4e70 100644
#include "source.h"
#include "cli/cli-cmds.h"
#include "objfiles.h"
-@@ -478,7 +479,7 @@ exec_or_core_file_attach (const char *filename, int from_tty)
+@@ -479,7 +480,7 @@ exec_or_core_file_attach (const char *filename, int from_tty)
}
static void
@@ -130,7 +130,7 @@ index b079e79c93..b150af4e70 100644
{
int argc = context->argc;
char **argv = context->argv;
-@@ -694,10 +695,14 @@ captured_main_1 (struct captured_main_args *context)
+@@ -695,10 +696,14 @@ captured_main_1 (struct captured_main_args *context)
{"args", no_argument, &set_args, 1},
{"l", required_argument, 0, 'l'},
{"return-child-result", no_argument, &return_child_result, 1},
@@ -146,7 +146,7 @@ index b079e79c93..b150af4e70 100644
{
int option_index;
-@@ -715,6 +720,9 @@ captured_main_1 (struct captured_main_args *context)
+@@ -716,6 +721,9 @@ captured_main_1 (struct captured_main_args *context)
case 0:
/* Long option that just sets a flag. */
break;
@@ -156,7 +156,7 @@ index b079e79c93..b150af4e70 100644
case OPT_SE:
symarg = optarg;
execarg = optarg;
-@@ -889,7 +897,31 @@ captured_main_1 (struct captured_main_args *context)
+@@ -890,7 +898,31 @@ captured_main_1 (struct captured_main_args *context)
/* Now that gdb_init has created the initial inferior, we're in
position to set args for that inferior. */
@@ -189,7 +189,7 @@ index b079e79c93..b150af4e70 100644
{
/* The remaining options are the command-line options for the
inferior. The first one is the sym/exec file, and the rest
-@@ -1179,7 +1211,8 @@ captured_main_1 (struct captured_main_args *context)
+@@ -1180,7 +1212,8 @@ captured_main_1 (struct captured_main_args *context)
/* Read in the old history after all the command files have been
read. */
@@ -199,7 +199,7 @@ index b079e79c93..b150af4e70 100644
if (batch_flag)
{
-@@ -1192,24 +1225,37 @@ static void
+@@ -1193,24 +1226,37 @@ static void
captured_main (void *data)
{
struct captured_main_args *context = (struct captured_main_args *) data;
@@ -250,7 +250,7 @@ index b079e79c93..b150af4e70 100644
}
/* No exit -- exit is through quit_command. */
}
-@@ -1252,6 +1298,12 @@ print_gdb_help (struct ui_file *stream)
+@@ -1253,6 +1299,12 @@ print_gdb_help (struct ui_file *stream)
fputs_unfiltered (_("\
This is the GNU debugger. Usage:\n\n\
gdb [options] [executable-file [core-file or process-id]]\n\
@@ -263,7 +263,7 @@ index b079e79c93..b150af4e70 100644
gdb [options] --args executable-file [inferior-arguments ...]\n\n\
"), stream);
fputs_unfiltered (_("\
-@@ -1297,6 +1349,13 @@ Output and user interface control:\n\n\
+@@ -1298,6 +1350,13 @@ Output and user interface control:\n\n\
#endif
fputs_unfiltered (_("\
--dbx DBX compatibility mode.\n\
@@ -458,10 +458,10 @@ new file mode 100644
+
+InScope ()
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
-index 89bbc6987b..69dbb69c06 100644
+index b8e2d9049d..deb87c6a71 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
-@@ -657,6 +657,9 @@ class gdbpy_enter_varobj : public gdbpy_enter
+@@ -641,6 +641,9 @@ class gdbpy_enter_varobj : public gdbpy_enter
};
@@ -472,7 +472,7 @@ index 89bbc6987b..69dbb69c06 100644
extern const struct language_defn *python_language;
diff --git a/gdb/python/python.c b/gdb/python/python.c
-index 610dda828c..de5ffbd70b 100644
+index 4233b37fa8..cc4b710df7 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -95,6 +95,8 @@ const struct extension_language_defn extension_language_python =
@@ -484,7 +484,7 @@ index 610dda828c..de5ffbd70b 100644
#include "target.h"
#include "gdbthread.h"
#include "interps.h"
-@@ -242,6 +244,29 @@ gdbpy_enter::~gdbpy_enter ()
+@@ -237,6 +239,29 @@ gdbpy_enter::~gdbpy_enter ()
restore_active_ext_lang (m_previous_active);
}
@@ -514,7 +514,7 @@ index 610dda828c..de5ffbd70b 100644
/* Set the quit flag. */
static void
-@@ -1356,6 +1381,92 @@ gdbpy_print_stack (void)
+@@ -1367,6 +1392,92 @@ gdbpy_print_stack (void)
/* Return the current Progspace.
There always is one. */
@@ -607,7 +607,7 @@ index 610dda828c..de5ffbd70b 100644
static PyObject *
gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
-@@ -2034,6 +2145,8 @@ PyMethodDef python_GdbMethods[] =
+@@ -2045,6 +2156,8 @@ PyMethodDef python_GdbMethods[] =
Evaluate command, a string, as a gdb CLI command. Optionally returns\n\
a Python String containing the output of the command if to_string is\n\
set to True." },
@@ -669,10 +669,10 @@ index eb82a7776f..3069a5c6d7 100644
# Test either C or C++ values.
diff --git a/gdb/varobj.c b/gdb/varobj.c
-index 01dabef37c..c198731d0b 100644
+index a0df485ae9..ab8248a781 100644
--- a/gdb/varobj.c
+++ b/gdb/varobj.c
-@@ -217,6 +217,14 @@ is_root_p (const struct varobj *var)
+@@ -218,6 +218,14 @@ is_root_p (const struct varobj *var)
}
#ifdef HAVE_PYTHON
@@ -688,10 +688,10 @@ index 01dabef37c..c198731d0b 100644
/* See python-internal.h. */
gdbpy_enter_varobj::gdbpy_enter_varobj (const struct varobj *var)
diff --git a/gdb/varobj.h b/gdb/varobj.h
-index 6e80d1b89e..677547996f 100644
+index 3aba0cda67..42dfad83f8 100644
--- a/gdb/varobj.h
+++ b/gdb/varobj.h
-@@ -327,6 +327,8 @@ extern bool varobj_has_more (const struct varobj *var, int to);
+@@ -328,6 +328,8 @@ extern bool varobj_has_more (const struct varobj *var, int to);
extern bool varobj_is_dynamic_p (const struct varobj *var);
diff --git a/gdb-attach-fail-reasons-5of5.patch b/gdb-attach-fail-reasons-5of5.patch
index 8e5dfa6..443baa4 100644
--- a/gdb-attach-fail-reasons-5of5.patch
+++ b/gdb-attach-fail-reasons-5of5.patch
@@ -45,10 +45,10 @@ gdb/gdbserver/
direct ptrace.
diff --git a/gdb/config.in b/gdb/config.in
-index edd7028f76..4de3e842d1 100644
+index 404e0bbddc..97d2f7f518 100644
--- a/gdb/config.in
+++ b/gdb/config.in
-@@ -270,6 +270,9 @@
+@@ -276,6 +276,9 @@
/* Define if librpm library is being used. */
#undef HAVE_LIBRPM
@@ -58,7 +58,7 @@ index edd7028f76..4de3e842d1 100644
/* Define to 1 if you have the <libunwind-ia64.h> header file. */
#undef HAVE_LIBUNWIND_IA64_H
-@@ -393,6 +396,9 @@
+@@ -399,6 +402,9 @@
/* Define to 1 if you have the `scm_new_smob' function. */
#undef HAVE_SCM_NEW_SMOB
@@ -69,10 +69,10 @@ index edd7028f76..4de3e842d1 100644
#undef HAVE_SETLOCALE
diff --git a/gdb/configure b/gdb/configure
-index 1cecdbc3b5..904cc453ad 100755
+index 30a6e86ff8..3b604feb11 100755
--- a/gdb/configure
+++ b/gdb/configure
-@@ -15681,6 +15681,64 @@ cat >>confdefs.h <<_ACEOF
+@@ -15747,6 +15747,64 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
@@ -138,10 +138,10 @@ index 1cecdbc3b5..904cc453ad 100755
# Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
# except that the argument to --with-sysroot is optional.
diff --git a/gdb/configure.ac b/gdb/configure.ac
-index e232c1adcb..1557760ed8 100644
+index 39a777f647..c707e7b152 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
-@@ -2043,6 +2043,10 @@ case $host_os in
+@@ -2048,6 +2048,10 @@ case $host_os in
esac
AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.])
@@ -177,10 +177,10 @@ index dda7c1f150..b2a34b92ce 100644
#undef HAVE_SETNS
diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure
-index 340ca7a19e..6d7c9b2326 100755
+index b2e2e8f955..3269bbe553 100755
--- a/gdb/gdbserver/configure
+++ b/gdb/gdbserver/configure
-@@ -8455,6 +8455,64 @@ if $want_ipa ; then
+@@ -8465,6 +8465,64 @@ if $want_ipa ; then
fi
fi
@@ -246,7 +246,7 @@ index 340ca7a19e..6d7c9b2326 100755
diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac
-index 6727959e61..7c0f508275 100644
+index 99801681ff..56f28797ca 100644
--- a/gdb/gdbserver/configure.ac
+++ b/gdb/gdbserver/configure.ac
@@ -488,6 +488,10 @@ if $want_ipa ; then
@@ -261,25 +261,20 @@ index 6727959e61..7c0f508275 100644
AC_SUBST(GDBSERVER_LIBS)
AC_SUBST(srv_xmlbuiltin)
diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c
-index cfb2b56a08..0faac80625 100644
+index e64949504d..6bcaf3700f 100644
--- a/gdb/gdbserver/linux-low.c
+++ b/gdb/gdbserver/linux-low.c
-@@ -963,7 +963,21 @@ linux_ptrace_fun ()
+@@ -966,7 +966,16 @@ linux_ptrace_fun ()
{
if (ptrace (PTRACE_TRACEME, 0, (PTRACE_TYPE_ARG3) 0,
(PTRACE_TYPE_ARG4) 0) < 0)
- trace_start_error_with_name ("ptrace");
+ {
+ int save_errno = errno;
-+ struct buffer buffer;
+
-+ buffer_init (&buffer);
-+ linux_ptrace_create_warnings (&buffer);
-+ buffer_grow_str0 (&buffer, "");
++ std::string msg (linux_ptrace_create_warnings ());
+
-+ std::string msg
-+ = string_printf (_("%sCannot trace created process"),
-+ buffer_finish (&buffer));
++ msg += _("Cannot trace created process");
+
+ errno = save_errno;
+ trace_start_error_with_name (msg.c_str ());
@@ -288,45 +283,33 @@ index cfb2b56a08..0faac80625 100644
if (setpgid (0, 0) < 0)
trace_start_error_with_name ("setpgid");
diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
-index c41ea391a0..1570a2bcb6 100644
+index 445b59fa4a..05344316a7 100644
--- a/gdb/linux-nat.c
+++ b/gdb/linux-nat.c
-@@ -1127,7 +1127,29 @@ linux_nat_create_inferior (struct target_ops *ops,
+@@ -1088,7 +1088,17 @@ linux_nat_target::create_inferior (const char *exec_file,
/* Make sure we report all signals during startup. */
- linux_nat_pass_signals (ops, 0, NULL);
+ pass_signals (0, NULL);
-- linux_ops->to_create_inferior (ops, exec_file, allargs, env, from_tty);
-+ volatile struct gdb_exception ex;
+- inf_ptrace_target::create_inferior (exec_file, allargs, env, from_tty);
+ TRY
+ {
-+ linux_ops->to_create_inferior (ops, exec_file, allargs, env, from_tty);
++ inf_ptrace_target::create_inferior (exec_file, allargs, env, from_tty);
+ }
+ CATCH (ex, RETURN_MASK_ERROR)
+ {
-+ struct buffer buffer;
-+ char *message, *buffer_s;
++ std::string result = linux_ptrace_create_warnings ();
+
-+ message = xstrdup (ex.message);
-+ make_cleanup (xfree, message);
-+
-+ buffer_init (&buffer);
-+ linux_ptrace_create_warnings (&buffer);
-+
-+ buffer_grow_str0 (&buffer, "");
-+ buffer_s = buffer_finish (&buffer);
-+ make_cleanup (xfree, buffer_s);
-+
-+ throw_error (ex.error, "%s%s", buffer_s, message);
++ throw_error (ex.error, "%s%s", result.c_str (), ex.message);
+ }
+ END_CATCH
}
/* Callback for linux_proc_attach_tgid_threads. Attach to PTID if not
diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c
-index ac6ba72390..be51e2449b 100644
+index 1f21ef03a3..53c9a0de17 100644
--- a/gdb/nat/linux-ptrace.c
+++ b/gdb/nat/linux-ptrace.c
-@@ -27,6 +27,10 @@
+@@ -25,6 +25,10 @@
#include <sys/procfs.h>
#endif
@@ -337,47 +320,50 @@ index ac6ba72390..be51e2449b 100644
/* Stores the ptrace options supported by the running kernel.
A value of -1 means we did not check for features yet. A value
of 0 means there are no supported features. */
-@@ -51,6 +55,8 @@ linux_ptrace_attach_fail_reason (pid_t pid, struct buffer *buffer)
- buffer_xml_printf (buffer, _("process %d is a zombie "
- "- the process has already terminated"),
- (int) pid);
+@@ -50,6 +54,8 @@ linux_ptrace_attach_fail_reason (pid_t pid)
+ "terminated"),
+ (int) pid);
+
++ result += linux_ptrace_create_warnings ();
+
-+ linux_ptrace_create_warnings (buffer);
+ return result;
}
- /* See linux-ptrace.h. */
-@@ -594,6 +600,22 @@ linux_ptrace_init_warnings (void)
+@@ -583,6 +589,25 @@ linux_ptrace_init_warnings (void)
linux_ptrace_test_ret_to_nx ();
}
+/* Print all possible reasons we could fail to create a traced process. */
+
-+void
-+linux_ptrace_create_warnings (struct buffer *buffer)
++std::string
++linux_ptrace_create_warnings ()
+{
++ std::string result;
++
+#ifdef HAVE_LIBSELINUX
+ /* -1 is returned for errors, 0 if it has no effect, 1 if PTRACE_ATTACH is
+ forbidden. */
+ if (security_get_boolean_active ("deny_ptrace") == 1)
-+ buffer_xml_printf (buffer,
-+ _("the SELinux boolean 'deny_ptrace' is enabled, "
-+ "you can disable this process attach protection by: "
-+ "(gdb) shell sudo setsebool deny_ptrace=0"));
++ string_appendf (result,
++ _("the SELinux boolean 'deny_ptrace' is enabled, "
++ "you can disable this process attach protection by: "
++ "(gdb) shell sudo setsebool deny_ptrace=0\n"));
+#endif /* HAVE_LIBSELINUX */
++ return result;
+}
+
/* Extract extended ptrace event from wait status. */
int
diff --git a/gdb/nat/linux-ptrace.h b/gdb/nat/linux-ptrace.h
-index 1f960ed132..84912f909c 100644
+index dc180fbf82..32e3d33bc8 100644
--- a/gdb/nat/linux-ptrace.h
+++ b/gdb/nat/linux-ptrace.h
-@@ -190,6 +190,7 @@ extern void linux_ptrace_attach_fail_reason (pid_t pid, struct buffer *buffer);
- extern char *linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err);
+@@ -189,6 +189,7 @@ extern std::string linux_ptrace_attach_fail_reason (pid_t pid);
+ extern std::string linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err);
extern void linux_ptrace_init_warnings (void);
-+extern void linux_ptrace_create_warnings (struct buffer *buffer);
++extern std::string linux_ptrace_create_warnings ();
extern void linux_check_ptrace_features (void);
extern void linux_enable_event_reporting (pid_t pid, int attached);
extern void linux_disable_event_reporting (pid_t pid);
diff --git a/gdb-btrobust.patch b/gdb-btrobust.patch
index 9983e99..2b1044d 100644
--- a/gdb-btrobust.patch
+++ b/gdb-btrobust.patch
@@ -14,10 +14,10 @@ printed, but a default backtrace will occur in this case.
--
diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
-index e887849c36..a8e4f49eb5 100644
+index 4edefd48f9..af5fcae654 100644
--- a/gdb/python/py-framefilter.c
+++ b/gdb/python/py-framefilter.c
-@@ -1388,6 +1388,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
+@@ -1151,6 +1151,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
htab_eq_pointer,
NULL));
@@ -25,19 +25,23 @@ index e887849c36..a8e4f49eb5 100644
while (true)
{
gdbpy_ref<> item (PyIter_Next (iterable.get ()));
-@@ -1397,7 +1398,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
+@@ -1159,8 +1160,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
+ {
if (PyErr_Occurred ())
{
- gdbpy_print_stack ();
+- throw_quit_or_print_exception ();
- return EXT_LANG_BT_ERROR;
++ gdbpy_print_stack ();
+ return count_printed > 0 ? EXT_LANG_BT_ERROR : EXT_LANG_BT_NO_FILTERS;
}
break;
}
-@@ -1409,6 +1410,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
+@@ -1193,7 +1194,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
+ /* Do not exit on error printing a single frame. Print the
error and continue with other frames. */
if (success == EXT_LANG_BT_ERROR)
- gdbpy_print_stack ();
+- throw_quit_or_print_exception ();
++ gdbpy_print_stack ();
+ count_printed++;
}
diff --git a/gdb-bz1219747-attach-kills.patch b/gdb-bz1219747-attach-kills.patch
index 846f490..66a0b3b 100644
--- a/gdb-bz1219747-attach-kills.patch
+++ b/gdb-bz1219747-attach-kills.patch
@@ -80,10 +80,10 @@ gdb/testsuite/ChangeLog
* gdb.base/attach-kills.exp: New.
diff --git a/gdb/main.c b/gdb/main.c
-index 17d35f4a8a..b079e79c93 100644
+index 4caefe2011..84e6126ad4 100644
--- a/gdb/main.c
+++ b/gdb/main.c
-@@ -1114,7 +1114,10 @@ captured_main_1 (struct captured_main_args *context)
+@@ -1115,7 +1115,10 @@ captured_main_1 (struct captured_main_args *context)
if (isdigit (pid_or_core_arg[0]))
{
if (catch_command_errors (attach_command, pid_or_core_arg,
diff --git a/gdb-bz533176-fortran-omp-step.patch b/gdb-bz533176-fortran-omp-step.patch
index 2064baf..86479cd 100644
--- a/gdb-bz533176-fortran-omp-step.patch
+++ b/gdb-bz533176-fortran-omp-step.patch
@@ -30,10 +30,10 @@ threads need to get synchronized at some point. This is a more general
debugging problem of GOMP outside of the scope of this Bug.
diff --git a/gdb/infrun.c b/gdb/infrun.c
-index 1d0f731954..dcf022bd50 100644
+index 78ffc10b23..443e2123f0 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
-@@ -6690,6 +6690,16 @@ process_event_stop_test (struct execution_control_state *ecs)
+@@ -6699,6 +6699,16 @@ process_event_stop_test (struct execution_control_state *ecs)
if (ecs->event_thread->control.step_over_calls == STEP_OVER_ALL)
{
@@ -50,7 +50,7 @@ index 1d0f731954..dcf022bd50 100644
/* We're doing a "next".
Normal (forward) execution: set a breakpoint at the
-@@ -6723,6 +6733,7 @@ process_event_stop_test (struct execution_control_state *ecs)
+@@ -6732,6 +6742,7 @@ process_event_stop_test (struct execution_control_state *ecs)
keep_going (ecs);
return;
diff --git a/gdb-bz541866-rwatch-before-run.patch b/gdb-bz541866-rwatch-before-run.patch
index e92a775..e740c71 100644
--- a/gdb-bz541866-rwatch-before-run.patch
+++ b/gdb-bz541866-rwatch-before-run.patch
@@ -10,10 +10,10 @@ FileName: gdb-bz541866-rwatch-before-run.patch
;;=push+jan: It should be fixed properly instead.
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
-index 814802a0a1..5a99de75e1 100644
+index a04b1183b7..305bb3f6c0 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
-@@ -8864,7 +8864,7 @@ init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
+@@ -8808,7 +8808,7 @@ init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
int enabled, int internal, unsigned flags,
int display_canonical)
{
@@ -22,7 +22,7 @@ index 814802a0a1..5a99de75e1 100644
if (type == bp_hardware_breakpoint)
{
-@@ -14425,7 +14425,7 @@ enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
+@@ -14345,7 +14345,7 @@ enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
if (bpt->type == bp_hardware_breakpoint)
{
@@ -98,7 +98,7 @@ new file mode 100644
+
+#endif /* NM_LINUX64_H */
diff --git a/gdb/configure.nat b/gdb/configure.nat
-index 8e14892722..6dbb072054 100644
+index 6b0f44fede..dd0c63c256 100644
--- a/gdb/configure.nat
+++ b/gdb/configure.nat
@@ -237,6 +237,7 @@ case ${gdb_host} in
@@ -118,16 +118,16 @@ index 8e14892722..6dbb072054 100644
amd64-nat.o amd64-linux-nat.o x86-linux-nat.o linux-btrace.o \
x86-linux.o x86-linux-dregs.o amd64-linux-siginfo.o"
diff --git a/gdb/target.h b/gdb/target.h
-index 4781fbc59c..e3a2882fe5 100644
+index e2d1e61cdc..6e13809397 100644
--- a/gdb/target.h
+++ b/gdb/target.h
-@@ -1915,9 +1915,11 @@ extern struct thread_info *target_thread_handle_to_thread_info
+@@ -1908,9 +1908,11 @@ extern struct thread_info *target_thread_handle_to_thread_info
one. OTHERTYPE is the number of watchpoints of other types than
this one used so far. */
+#ifndef target_can_use_hardware_watchpoint
#define target_can_use_hardware_watchpoint(TYPE,CNT,OTHERTYPE) \
- (*current_target.to_can_use_hw_breakpoint) (¤t_target, \
+ (target_stack->can_use_hw_breakpoint) ( \
TYPE, CNT, OTHERTYPE)
+#endif
diff --git a/gdb-bz568248-oom-is-error.patch b/gdb-bz568248-oom-is-error.patch
index e0d5f2f..161d621 100644
--- a/gdb-bz568248-oom-is-error.patch
+++ b/gdb-bz568248-oom-is-error.patch
@@ -53,10 +53,10 @@ gdb/
* utils.c (nomem): Change internal_error to error.
diff --git a/gdb/utils.c b/gdb/utils.c
-index c531748fe4..0066bfcc4b 100644
+index 9c5bf68e5a..7813df1436 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
-@@ -774,13 +774,11 @@ malloc_failure (long size)
+@@ -746,13 +746,11 @@ malloc_failure (long size)
{
if (size > 0)
{
diff --git a/gdb-container-rh-pkg.patch b/gdb-container-rh-pkg.patch
index 2f7fedc..99efe00 100644
--- a/gdb-container-rh-pkg.patch
+++ b/gdb-container-rh-pkg.patch
@@ -9,10 +9,10 @@ FileName: gdb-container-rh-pkg.patch
;;=fedora
diff --git a/gdb/remote.c b/gdb/remote.c
-index 86777f1e5e..fc003c0736 100644
+index 635cb266e8..a683df4a83 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
-@@ -13437,7 +13437,17 @@ remote_pid_to_exec_file (struct target_ops *self, int pid)
+@@ -13667,7 +13667,17 @@ remote_target::pid_to_exec_file (int pid)
char *annex = NULL;
if (packet_support (PACKET_qXfer_exec_file) != PACKET_ENABLE)
diff --git a/gdb-fedora-libncursesw.patch b/gdb-fedora-libncursesw.patch
index bc1c8d0..1bd195b 100644
--- a/gdb-fedora-libncursesw.patch
+++ b/gdb-fedora-libncursesw.patch
@@ -12,10 +12,10 @@ Fedora: Force libncursesw over libncurses to match the includes.
https://bugzilla.redhat.com/show_bug.cgi?id=1270534
diff --git a/gdb/configure b/gdb/configure
-index 6fb5b5b509..db849572b5 100755
+index 9f236ae26a..a2d480c1e5 100755
--- a/gdb/configure
+++ b/gdb/configure
-@@ -9238,6 +9238,7 @@ if test x"$prefer_curses" = xyes; then
+@@ -9304,6 +9304,7 @@ if test x"$prefer_curses" = xyes; then
# search /usr/local/include, if ncurses is installed in /usr/local. A
# default installation of ncurses on alpha*-dec-osf* will lead to such
# a situation.
@@ -23,7 +23,7 @@ index 6fb5b5b509..db849572b5 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing waddstr" >&5
$as_echo_n "checking for library containing waddstr... " >&6; }
if test "${ac_cv_search_waddstr+set}" = set; then :
-@@ -9262,7 +9263,7 @@ return waddstr ();
+@@ -9328,7 +9329,7 @@ return waddstr ();
return 0;
}
_ACEOF
@@ -32,7 +32,7 @@ index 6fb5b5b509..db849572b5 100755
if test -z "$ac_lib"; then
ac_res="none required"
else
-@@ -9336,6 +9337,7 @@ case $host_os in
+@@ -9402,6 +9403,7 @@ case $host_os in
esac
# These are the libraries checked by Readline.
@@ -40,7 +40,7 @@ index 6fb5b5b509..db849572b5 100755
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing tgetent" >&5
$as_echo_n "checking for library containing tgetent... " >&6; }
if test "${ac_cv_search_tgetent+set}" = set; then :
-@@ -9360,7 +9362,7 @@ return tgetent ();
+@@ -9426,7 +9428,7 @@ return tgetent ();
return 0;
}
_ACEOF
@@ -50,10 +50,10 @@ index 6fb5b5b509..db849572b5 100755
ac_res="none required"
else
diff --git a/gdb/configure.ac b/gdb/configure.ac
-index d891c7bccc..4412e25450 100644
+index dc0acd035b..57ebcaeb08 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
-@@ -755,7 +755,8 @@ if test x"$prefer_curses" = xyes; then
+@@ -760,7 +760,8 @@ if test x"$prefer_curses" = xyes; then
# search /usr/local/include, if ncurses is installed in /usr/local. A
# default installation of ncurses on alpha*-dec-osf* will lead to such
# a situation.
@@ -63,7 +63,7 @@ index d891c7bccc..4412e25450 100644
if test "$ac_cv_search_waddstr" != no; then
curses_found=yes
-@@ -797,7 +798,8 @@ case $host_os in
+@@ -802,7 +803,8 @@ case $host_os in
esac
# These are the libraries checked by Readline.
diff --git a/gdb-follow-child-stale-parent.patch b/gdb-follow-child-stale-parent.patch
index fa95113..09b4042 100644
--- a/gdb-follow-child-stale-parent.patch
+++ b/gdb-follow-child-stale-parent.patch
@@ -24,10 +24,10 @@ unwinders try to access it, breaking:
+FAIL: gdb.threads/watchpoint-fork.exp: child: singlethreaded: finish
diff --git a/gdb/infrun.c b/gdb/infrun.c
-index dcf022bd50..b468d02fd6 100644
+index 443e2123f0..16ee1c2e31 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
-@@ -749,6 +749,9 @@ follow_fork (void)
+@@ -752,6 +752,9 @@ follow_fork (void)
}
else
{
diff --git a/gdb-gdb-add-index-script.patch b/gdb-gdb-add-index-script.patch
deleted file mode 100644
index 3d3da92..0000000
--- a/gdb-gdb-add-index-script.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Fedora GDB patches <invalid@email.com>
-Date: Fri, 27 Oct 2017 21:07:50 +0200
-Subject: RFC: add DWARF index support
-
-FileName: gdb-gdb-add-index-script.patch
-
-;; Provide /usr/bin/gdb-add-index for rpm-build (Tom Tromey).
-;;=push: Re-check against the upstream version.
-
-http://sourceware.org/ml/gdb-patches/2010-07/msg00184.html
-
-Jan Kratochvil: Fixed $d -> $dir.
-Jan Kratochvil: Remove /dev/null redirection.
-
->>>>> "Tom" == Tom Tromey <tromey@redhat.com> writes:
-
-Tom> This patch series adds support for a DWARF index to gdb.
-
-Roland suggested we wrap up the index-creation code into a helper
-script.
-
-I'm not sure if this is something people would want in gdb proper, but I
-figured I would send it here just in case.
-
-Tom
-
-2010-07-09 Tom Tromey <tromey@redhat.com>
-
- * Makefile.in (install-only): Install gdb-add-index.
- * gdb-add-index: New file.
-
-2010-07-09 Tom Tromey <tromey@redhat.com>
-
- * gdb.texinfo (Index Files): Mention gdb-add-index.
-
->From 30714fe719e61baea03d0dc5793eb0d564faebb7 Mon Sep 17 00:00:00 2001
-From: Tom Tromey <tromey@redhat.com>
-Date: Fri, 9 Jul 2010 11:17:54 -0600
-Subject: [PATCH 4/4] add gdb-add-index
-Subject: [PATCH 4/4] add gdb-add-index
-
-diff --git a/gdb/Makefile.in b/gdb/Makefile.in
-index e77d6a5c03..3142ad6af1 100644
---- a/gdb/Makefile.in
-+++ b/gdb/Makefile.in
-@@ -1770,6 +1770,15 @@ install-only: install-gstack $(CONFIG_INSTALL)
- $(INSTALL_SCRIPT) gcore \
- $(DESTDIR)$(bindir)/$$transformed_name; \
- fi
-+ transformed_name=`t='$(program_transform_name)'; \
-+ echo gdb-add-index | sed -e "$$t"` ; \
-+ if test "x$$transformed_name" = x; then \
-+ transformed_name=gdb-add-index ; \
-+ else \
-+ true ; \
-+ fi ; \
-+ $(INSTALL_PROGRAM) $(srcdir)/contrib/gdb-add-index.sh \
-+ $(DESTDIR)$(bindir)/$$transformed_name$(EXEEXT)
- @$(MAKE) DO=install "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do
-
- install-strip:
-diff --git a/gdb/doc/Makefile.in b/gdb/doc/Makefile.in
-index eafadee899..0323bc4ecb 100644
---- a/gdb/doc/Makefile.in
-+++ b/gdb/doc/Makefile.in
-@@ -174,7 +174,7 @@ POD2MAN5 = pod2man --center="GNU Development Tools" \
- --release="gdb-`sed q version.subst`" --section=5
-
- # List of man pages generated from gdb.texi
--MAN1S = gdb.1 gdbserver.1 gcore.1
-+MAN1S = gdb.1 gdbserver.1 gcore.1 gdb-add-index.1
- MAN5S = gdbinit.5
- MANS = $(MAN1S) $(MAN5S)
-
-@@ -633,6 +633,13 @@ gcore.1: $(GDB_DOC_FILES)
- mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
- rm -f gcore.pod
-
-+gdb-add-index.1: $(GDB_DOC_FILES)
-+ touch $@
-+ -$(TEXI2POD) $(MANCONF) -Dgdb-add-index < $(srcdir)/gdb.texinfo > gdb-add-index.pod
-+ -($(POD2MAN1) gdb-add-index.pod | sed -e '/^.if n .na/d' > $@.T$$$$ && \
-+ mv -f $@.T$$$$ $@) || (rm -f $@.T$$$$ && exit 1)
-+ rm -f gdb-add-index.pod
-+
- gdbinit.5: $(GDB_DOC_FILES)
- touch $@
- -$(TEXI2POD) $(MANCONF) -Dgdbinit < $(srcdir)/gdb.texinfo > gdbinit.pod
-diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
-index 2f2cbd3dea..7b99ae1551 100644
---- a/gdb/doc/gdb.texinfo
-+++ b/gdb/doc/gdb.texinfo
-@@ -19796,6 +19796,14 @@ There are currently some limitation on indices. They only work when
- for DWARF debugging information, not stabs. And, they do not
- currently work for programs using Ada.
-
-+@value{GDBN} comes with a program, @command{gdb-add-index}, which can
-+be used to add the index to a symbol file. It takes the symbol file
-+as its only argument:
-+
-+@smallexample
-+$ gdb-add-index symfile
-+@end smallexample
-+
- @node Symbol Errors
- @section Errors Reading Symbol Files
-
-@@ -42759,6 +42767,7 @@ switch (die->tag)
- * gdbserver man:: Remote Server for the GNU Debugger man page
- * gcore man:: Generate a core file of a running program
- * gdbinit man:: gdbinit scripts
-+* gdb-add-index man:: Add index files to speed up GDB
- @end menu
-
- @node gdb man
-@@ -43435,6 +43444,54 @@ Richard M. Stallman and Roland H. Pesch, July 1991.
- @end ifset
- @c man end
-
-+@node gdb-add-index man
-+@heading gdb-add-index
-+
-+@c man title gdb-add-index Add index files to speed up GDB
-+
-+@c man begin SYNOPSIS gdb-add-index
-+gdb-add-index @var{filename}
-+@c man end
-+
-+@c man begin DESCRIPTION gdb-add-index
-+When GDB finds a symbol file, it scans the symbols in the file in order
-+to construct an internal symbol table. This lets most GDB operations
-+work quickly--at the cost of a delay early on. For large programs,
-+this delay can be quite lengthy, so GDB provides a way to build an
-+index, which speeds up startup.
-+
-+To determine whether a file contains such an index, use the command
-+@command{readelf -S filename}: the index is stored in a section named
-+@code{.gdb_index}. Note that the index is never generated for files that do
-+not contain DWARF debug information (sections named @code{.debug_*}).
-+
-+See more in
-+@ifset man
-+the @value{GDBN} manual in node @code{Index Files}
-+-- shell command @code{info -f gdb -n 'Index Files'}.
-+@end ifset
-+@ifclear man
-+@ref{Index Files}.
-+@end ifclear
-+@c man end
-+
-+@c man begin SEEALSO gdb-add-index
-+@ifset man
-+The full documentation for @value{GDBN} is maintained as a Texinfo manual.
-+If the @code{info} and @code{gdb} programs and @value{GDBN}'s Texinfo
-+documentation are properly installed at your site, the command
-+
-+@smallexample
-+info gdb
-+@end smallexample
-+
-+should give you access to the complete manual.
-+
-+@cite{Using GDB: A Guide to the GNU Source-Level Debugger},
-+Richard M. Stallman and Roland H. Pesch, July 1991.
-+@end ifset
-+@c man end
-+
- @include gpl.texi
-
- @node GNU Free Documentation License
diff --git a/gdb-glibc-strstr-workaround.patch b/gdb-glibc-strstr-workaround.patch
index ca6117a..dec6245 100644
--- a/gdb-glibc-strstr-workaround.patch
+++ b/gdb-glibc-strstr-workaround.patch
@@ -9,10 +9,10 @@ FileName: gdb-glibc-strstr-workaround.patch
;;=fedora: Compatibility with RHELs (unchecked which ones).
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index c8db955f2f..6ebe00f542 100644
+index 266740f74c..d69f154af3 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
-@@ -21328,6 +21328,26 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
+@@ -21376,6 +21376,26 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
/* Cache this symbol's name and the name's demangled form (if any). */
SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
linkagename = dwarf2_physname (name, die, cu);
diff --git a/gdb-gnat-dwarf-crash-3of3.patch b/gdb-gnat-dwarf-crash-3of3.patch
index f75d144..5763a6c 100644
--- a/gdb-gnat-dwarf-crash-3of3.patch
+++ b/gdb-gnat-dwarf-crash-3of3.patch
@@ -42,21 +42,202 @@ gdb/
* dwarf2read.c (process_die): Change gdb_assert to complaint.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index fbaa0af64f..2c972d5e74 100644
+index 420c3e6bd5..328a07df82 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
-@@ -10612,6 +10612,14 @@ private:
+@@ -10516,6 +10516,14 @@ private:
static void
process_die (struct die_info *die, struct dwarf2_cu *cu)
{
+ if (die->in_process)
+ {
+ complaint (&symfile_complaints,
-+ _("DIE at 0x%x attempted to be processed twice"),
-+ to_underlying (die->sect_off));
++ _("DIE at 0x%s attempted to be processed twice"),
++ sect_offset_str (die->sect_off));
+ return;
+ }
+
process_die_scope scope (die, cu);
switch (die->tag)
+diff --git a/gdb/infrun.c b/gdb/infrun.c
+index 16ee1c2e31..82b9cedc90 100644
+--- a/gdb/infrun.c
++++ b/gdb/infrun.c
+@@ -609,6 +609,13 @@ holding the child stopped. Try \"set detach-on-fork\" or \
+ target_pid_to_str (process_ptid));
+ }
+
++#ifdef NEED_DETACH_SIGSTOP
++ /* We should check PID_WAS_STOPPED and detach it stopped accordingly.
++ In this point of code it cannot be 1 as we would not get FORK
++ executed without CONTINUE first which resets PID_WAS_STOPPED.
++ We would have to first TARGET_STOP and WAITPID it as with running
++ inferior PTRACE_DETACH, SIGSTOP will ignore the signal. */
++#endif
+ target_detach (parent_inf, 0);
+ }
+
+diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
+index 05344316a7..30a94b47c9 100644
+--- a/gdb/linux-nat.c
++++ b/gdb/linux-nat.c
+@@ -191,6 +191,12 @@ struct linux_nat_target *linux_target;
+ /* Does the current host support PTRACE_GETREGSET? */
+ enum tribool have_ptrace_getregset = TRIBOOL_UNKNOWN;
+
++#ifdef NEED_DETACH_SIGSTOP
++/* PID of the inferior stopped by SIGSTOP before attaching (or zero). */
++static pid_t pid_was_stopped;
++
++#endif
++
+ /* The saved to_close method, inherited from inf-ptrace.c.
+ Called by our to_close. */
+ static void (*super_close) (struct target_ops *);
+@@ -1026,6 +1032,9 @@ linux_nat_post_attach_wait (ptid_t ptid, int *signalled)
+ if (debug_linux_nat)
+ fprintf_unfiltered (gdb_stdlog,
+ "LNPAW: Attaching to a stopped process\n");
++#ifdef NEED_DETACH_SIGSTOP
++ pid_was_stopped = ptid_get_pid (ptid);
++#endif
+
+ /* The process is definitely stopped. It is in a job control
+ stop, unless the kernel predates the TASK_STOPPED /
+@@ -1359,6 +1368,25 @@ get_detach_signal (struct lwp_info *lp)
+ return gdb_signal_to_host (signo);
+ }
+
++#ifdef NEED_DETACH_SIGSTOP
++ /* Workaround RHEL-5 kernel which has unreliable PTRACE_DETACH, SIGSTOP (that
++ many TIDs are left unstopped). See RH Bug 496732. */
++ if (ptid_get_pid (lp->ptid) == pid_was_stopped)
++ {
++ int err;
++
++ errno = 0;
++ err = kill_lwp (ptid_get_lwp (lp->ptid), SIGSTOP);
++ if (debug_linux_nat)
++ {
++ fprintf_unfiltered (gdb_stdlog,
++ "SC: lwp kill %d %s\n",
++ err,
++ errno ? safe_strerror (errno) : "ERRNO-OK");
++ }
++ }
++
++#endif
+ return 0;
+ }
+
+@@ -1507,6 +1535,10 @@ linux_nat_target::detach (inferior *inf, int from_tty)
+ detach_one_lwp (main_lwp, &signo);
+
+ detach_success (inf);
++
++#ifdef NEED_DETACH_SIGSTOP
++ pid_was_stopped = 0;
++#endif
+ }
+ }
+
+@@ -1765,6 +1797,16 @@ linux_nat_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
+ return;
+ }
+
++#ifdef NEED_DETACH_SIGSTOP
++ /* At this point, we are going to resume the inferior and if we
++ have attached to a stopped process, we no longer should leave
++ it as stopped if the user detaches. PTID variable has PID set to LWP
++ while we need to check the real PID here. */
++
++ if (!step && lp && pid_was_stopped == ptid_get_pid (lp->ptid))
++ pid_was_stopped = 0;
++
++#endif
+ if (resume_many)
+ iterate_over_lwps (ptid, linux_nat_resume_callback, lp);
+
+@@ -3754,6 +3796,10 @@ linux_nat_target::mourn_inferior ()
+
+ /* Let the arch-specific native code know this process is gone. */
+ linux_target->low_forget_process (pid);
++#ifdef NEED_DETACH_SIGSTOP
++
++ pid_was_stopped = 0;
++#endif
+ }
+
+ /* Convert a native/host siginfo object, into/from the siginfo in the
+diff --git a/gdb/testsuite/gdb.threads/attach-stopped.exp b/gdb/testsuite/gdb.threads/attach-stopped.exp
+index a3916c6354..9f004b4179 100644
+--- a/gdb/testsuite/gdb.threads/attach-stopped.exp
++++ b/gdb/testsuite/gdb.threads/attach-stopped.exp
+@@ -56,7 +56,65 @@ proc corefunc { threadtype } {
+ gdb_reinitialize_dir $srcdir/$subdir
+ gdb_load ${binfile}
+
+- # Verify that we can attach to the stopped process.
++ # Verify that we can attach to the process by first giving its
++ # executable name via the file command, and using attach with the
++ # process ID.
++
++ set test "$threadtype: set file, before attach1 to stopped process"
++ gdb_test_multiple "file $binfile" "$test" {
++ -re "Load new symbol table from.*y or n. $" {
++ gdb_test "y" "Reading symbols from $escapedbinfile\.\.\.*done." \
++ "$test (re-read)"
++ }
++ -re "Reading symbols from $escapedbinfile\.\.\.*done.*$gdb_prompt $" {
++ pass "$test"
++ }
++ }
++
++ set test "$threadtype: attach1 to stopped, after setting file"
++ gdb_test_multiple "attach $testpid" "$test" {
++ -re "Attaching to program.*`?$escapedbinfile'?, process $testpid.*$gdb_prompt $" {
++ pass "$test"
++ }
++ }
++
++ # ".*sleep.*clone.*" would fail on s390x as bt stops at START_THREAD there.
++ if {[string equal $threadtype threaded]} {
++ gdb_test "thread apply all bt" ".*sleep.*start_thread.*" "$threadtype: attach1 to stopped bt"
++ } else {
++ gdb_test "bt" ".*sleep.*main.*" "$threadtype: attach1 to stopped bt"
++ }
++
++ # Exit and detach the process.
++
++ gdb_exit
++
++ # Avoid some race:
++ sleep 2
++
++ if [catch {open /proc/${testpid}/status r} fileid] {
++ set line2 "NOTFOUND"
++ } else {
++ gets $fileid line1;
++ gets $fileid line2;
++ close $fileid;
++ }
++
++ set test "$threadtype: attach1, exit leaves process stopped"
++ if {[string match "*(stopped)*" $line2]} {
++ pass $test
++ } else {
++ fail $test
++ }
++
++ # At this point, the process should still be stopped
++
++ gdb_start
++ gdb_reinitialize_dir $srcdir/$subdir
++ gdb_load ${binfile}
++
++ # Verify that we can attach to the process just by giving the
++ # process ID.
+
+ set test "$threadtype: attach2 to stopped, after setting file"
+ gdb_test_multiple "attach $testpid" "$test" {
diff --git a/gdb-jit-reader-multilib.patch b/gdb-jit-reader-multilib.patch
index f9ccfd1..6ac9589 100644
--- a/gdb-jit-reader-multilib.patch
+++ b/gdb-jit-reader-multilib.patch
@@ -9,10 +9,10 @@ FileName: gdb-jit-reader-multilib.patch
;;=push+jan
diff --git a/gdb/configure b/gdb/configure
-index 904cc453ad..6fb5b5b509 100755
+index 3b604feb11..9f236ae26a 100755
--- a/gdb/configure
+++ b/gdb/configure
-@@ -9528,10 +9528,12 @@ _ACEOF
+@@ -9594,10 +9594,12 @@ _ACEOF
@@ -29,10 +29,10 @@ index 904cc453ad..6fb5b5b509 100755
TARGET_PTR="unsigned __int128"
else
diff --git a/gdb/configure.ac b/gdb/configure.ac
-index 1557760ed8..d891c7bccc 100644
+index c707e7b152..dc0acd035b 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
-@@ -832,10 +832,12 @@ AC_CHECK_SIZEOF(unsigned long long)
+@@ -837,10 +837,12 @@ AC_CHECK_SIZEOF(unsigned long long)
AC_CHECK_SIZEOF(unsigned long)
AC_CHECK_SIZEOF(unsigned __int128)
diff --git a/gdb-linux_perf-bundle.patch b/gdb-linux_perf-bundle.patch
index b1ab85b..e18947b 100644
--- a/gdb-linux_perf-bundle.patch
+++ b/gdb-linux_perf-bundle.patch
@@ -9,10 +9,10 @@ FileName: gdb-linux_perf-bundle.patch
;;=fedora
diff --git a/gdb/configure b/gdb/configure
-index db849572b5..7720c00f4b 100755
+index a2d480c1e5..4f102c3ede 100755
--- a/gdb/configure
+++ b/gdb/configure
-@@ -11907,7 +11907,7 @@ else
+@@ -11973,7 +11973,7 @@ else
#include <linux/perf_event.h>
#ifndef PERF_ATTR_SIZE_VER5
@@ -22,10 +22,10 @@ index db849572b5..7720c00f4b 100755
_ACEOF
diff --git a/gdb/configure.ac b/gdb/configure.ac
-index 4412e25450..e64b0e806f 100644
+index 57ebcaeb08..1840f91651 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
-@@ -1466,7 +1466,7 @@ else
+@@ -1471,7 +1471,7 @@ else
AC_PREPROC_IFELSE(AC_LANG_SOURCE([[
#include <linux/perf_event.h>
#ifndef PERF_ATTR_SIZE_VER5
@@ -59,7 +59,7 @@ index b97500e579..151545105c 100644
args.argc = argc;
args.argv = argv;
diff --git a/gdb/nat/linux-btrace.h b/gdb/nat/linux-btrace.h
-index 31a8d9e67b..72faf23c5f 100644
+index 118030190d..ba4e618b11 100644
--- a/gdb/nat/linux-btrace.h
+++ b/gdb/nat/linux-btrace.h
@@ -28,6 +28,177 @@
diff --git a/gdb-moribund-utrace-workaround.patch b/gdb-moribund-utrace-workaround.patch
index 3331f4d..a999619 100644
--- a/gdb-moribund-utrace-workaround.patch
+++ b/gdb-moribund-utrace-workaround.patch
@@ -14,10 +14,10 @@ http://sources.redhat.com/bugzilla/show_bug.cgi?id=11593
Bug in FSF GDB exploited by the ptrace-on-utrace interaction.
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
-index 5a99de75e1..6a0c15b239 100644
+index 305bb3f6c0..0106ce8dd5 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
-@@ -12089,6 +12089,8 @@ update_global_location_list (enum ugll_insert_mode insert_mode)
+@@ -12017,6 +12017,8 @@ update_global_location_list (enum ugll_insert_mode insert_mode)
traps we can no longer explain. */
old_loc->events_till_retirement = 3 * (thread_count () + 1);
diff --git a/gdb-ppc64-stwux-tautological-compare.patch b/gdb-ppc64-stwux-tautological-compare.patch
deleted file mode 100644
index 4325e17..0000000
--- a/gdb-ppc64-stwux-tautological-compare.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Jan Kratochvil <jan.kratochvil@redhat.com>
-Date: Sun, 4 Feb 2018 21:42:18 +0100
-Subject: gdb-ppc64-stwux-tautological-compare.patch
-
-FileName: gdb-ppc64-stwux-tautological-compare.patch
-
-;; Fix ppc64 stwux encoding as found by gcc-8.0 -Werror=tautological-compare.
-
-[patch] ppc64: Fix stwux encoding
-https://sourceware.org/ml/gdb-patches/2018-02/msg00058.html
-
-with gcc-8.0.1-0.9.fc28.x86_64 I get:
-
-../../gdb/rs6000-tdep.c: In function 'CORE_ADDR skip_prologue(gdbarch*, CORE_ADDR, CORE_ADDR, rs6000_framedata*)':
-../../gdb/rs6000-tdep.c:1911:34: error: bitwise comparison always evaluates to false [-Werror=tautological-compare]
- else if ((op & 0xfc1f016a) == 0x7c01016e)
- ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
-
-The code is there since:
- commit 98f08d3d9b69b344bb8b0cd2a4bda1cf4d966e20
- Author: Kevin Buettner <kevinb@redhat.com>
- Date: Thu May 29 19:47:14 2003 +0000
- From Jimi X <jimix@watson.ibm.com>:
- * rs6000-tdep.c (skip_prologue): Improve support for 64-bit code.
-So I do not think we can find the original author.
-
-https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/com.ibm.aix.alangref/idalangref_stwux_stux_instrs.htm
-says
- bit 21 - 30 = 183
- Those are bits 1..10 in normal bit order: 183<<1 = 0x16e
-
-gdb/ChangeLog
-2018-02-04 Jan Kratochvil <jan.kratochvil@redhat.com>
-
- * rs6000-tdep.c (skip_prologue): Fix stwux encoding.
-
-diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
-index 23d0db3b8f..5275ff5b91 100644
---- a/gdb/rs6000-tdep.c
-+++ b/gdb/rs6000-tdep.c
-@@ -1908,7 +1908,7 @@ skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR lim_pc,
- offset = fdata->offset;
- continue;
- }
-- else if ((op & 0xfc1f016a) == 0x7c01016e)
-+ else if ((op & 0xfc1f016e) == 0x7c01016e)
- { /* stwux rX,r1,rY */
- /* No way to figure out what r1 is going to be. */
- fdata->frameless = 0;
diff --git a/gdb-python-gil.patch b/gdb-python-gil.patch
index 72e9302..9ba2b09 100644
--- a/gdb-python-gil.patch
+++ b/gdb-python-gil.patch
@@ -9,7 +9,7 @@ FileName: gdb-python-gil.patch
;;=push
diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi
-index ebd48fffe7..ccf011e35e 100644
+index 4182b60ca3..fb074faf43 100644
--- a/gdb/doc/python.texi
+++ b/gdb/doc/python.texi
@@ -232,6 +232,14 @@ returned as a string. The default is @code{False}, in which case the
@@ -28,7 +28,7 @@ index ebd48fffe7..ccf011e35e 100644
@findex gdb.breakpoints
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
-index c110588f76..89bbc6987b 100644
+index 26400f4fba..b8e2d9049d 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -148,6 +148,8 @@ typedef int Py_ssize_t;
@@ -41,10 +41,10 @@ index c110588f76..89bbc6987b 100644
#endif
diff --git a/gdb/python/python.c b/gdb/python/python.c
-index 4844c86c54..610dda828c 100644
+index db37331dc4..4233b37fa8 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
-@@ -554,12 +554,16 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
+@@ -556,12 +556,16 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
{
const char *arg;
PyObject *from_tty_obj = NULL, *to_string_obj = NULL;
@@ -65,7 +65,7 @@ index 4844c86c54..610dda828c 100644
return NULL;
from_tty = 0;
-@@ -580,12 +584,28 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
+@@ -582,6 +586,15 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
to_string = cmp;
}
@@ -81,8 +81,9 @@ index 4844c86c54..610dda828c 100644
std::string to_string_res;
TRY
- {
- struct interp *interp;
+@@ -602,6 +615,13 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
+
+ counted_command_line lines = read_command_lines_1 (reader, 1, nullptr);
+ /* In the case of long running GDB commands, allow the user to
+ release the Python GIL acquired by Python. Restore the GIL
@@ -94,10 +95,10 @@ index 4844c86c54..610dda828c 100644
scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
scoped_restore save_uiout = make_scoped_restore (¤t_uiout);
-@@ -600,10 +620,22 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
- to_string_res = execute_command_to_string (arg, from_tty);
+@@ -617,10 +637,22 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
+ from_tty);
else
- execute_command (arg, from_tty);
+ execute_control_commands (lines.get (), from_tty);
+
+ /* Reacquire the GIL if it was released earlier. */
+ if (release_gil)
diff --git a/gdb-readline62-ask-more-rh.patch b/gdb-readline62-ask-more-rh.patch
index caf3d33..a1f7e97 100644
--- a/gdb-readline62-ask-more-rh.patch
+++ b/gdb-readline62-ask-more-rh.patch
@@ -9,7 +9,7 @@ FileName: gdb-readline62-ask-more-rh.patch
;;=fedora
diff --git a/gdb/event-top.c b/gdb/event-top.c
-index 0d668f35e0..4aa26125f9 100644
+index d9379b42c5..44d9a8c4e6 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -1183,6 +1183,13 @@ gdb_setup_readline (int editing)
diff --git a/gdb-rhbz1347993-aarch64-hw-watchpoint.patch b/gdb-rhbz1347993-aarch64-hw-watchpoint.patch
deleted file mode 100644
index b76a403..0000000
--- a/gdb-rhbz1347993-aarch64-hw-watchpoint.patch
+++ /dev/null
@@ -1,1229 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Sergio Durigan Junior <sergiodj@redhat.com>
-Date: Thu, 17 May 2018 15:09:02 -0400
-Subject: Fix missed unaligned hardware watchpoints (RH BZ 1347993).
-
-FileName: gdb-rhbz1347993-aarch64-hw-watchpoint.patch
-
-;; [aarch64] Fix missed unaligned hardware watchpoints (RH BZ 1347993).
-
-commit a3b60e4588606354b93508a0008a5ca04b68fad8
-Author: Jan Kratochvil <jan.kratochvil@redhat.com>
-Date: Fri May 4 22:22:04 2018 +0200
-
-aarch64: PR 19806: watchpoints: false negatives + PR 20207 contiguous ones
-
-Some unaligned watchpoints were currently missed.
-
-On old kernels as specified in
- kernel RFE: aarch64: ptrace: BAS: Support any contiguous range (edit)
- https://sourceware.org/bugzilla/show_bug.cgi?id=20207
-after this patch some other unaligned watchpoints will get reported as false
-positives.
-
-With new kernels all the watchpoints should work exactly.
-
-There may be a regresion that it now less merges watchpoints so that with
-multiple overlapping watchpoints it may run out of the 4 hardware watchpoint
-registers. But as discussed in the original thread GDB needs some generic
-watchpoints merging framework to be used by all the target specific code.
-Even current FSF GDB code does not merge it perfectly. Also with the more
-precise watchpoints one can technically merge them less. And I do not think
-it matters too much to improve mergeability only for old kernels.
-Still even on new kernels some better merging logic would make sense.
-
-There remains one issue:
- kernel-4.15.14-300.fc27.armv7hl
- FAIL: gdb.base/watchpoint-unaligned.exp: continue
- FAIL: gdb.base/watchpoint-unaligned.exp: continue
- (gdb) continue
- Continuing.
- Unexpected error setting watchpoint: Invalid argument.
- (gdb) FAIL: gdb.base/watchpoint-unaligned.exp: continue
-But that looks as a kernel bug to me.
-(1) It is not a regression by this patch.
-(2) It is unrelated to this patch.
-
-gdb/ChangeLog
-2018-05-04 Jan Kratochvil <jan.kratochvil@redhat.com>
- Pedro Alves <palves@redhat.com>
-
- PR breakpoints/19806 and support for PR external/20207.
- * NEWS: Mention Aarch64 watchpoint improvements.
- * aarch64-linux-nat.c (aarch64_linux_stopped_data_address): Fix missed
- watchpoints and PR external/20207 watchpoints.
- * nat/aarch64-linux-hw-point.c
- (kernel_supports_any_contiguous_range): New.
- (aarch64_watchpoint_offset): New.
- (aarch64_watchpoint_length): Support PR external/20207 watchpoints.
- (aarch64_point_encode_ctrl_reg): New parameter offset, new asserts.
- (aarch64_point_is_aligned): Support PR external/20207 watchpoints.
- (aarch64_align_watchpoint): New parameters aligned_offset_p and
- next_addr_orig_p. Support PR external/20207 watchpoints.
- (aarch64_downgrade_regs): New.
- (aarch64_dr_state_insert_one_point): New parameters offset and
- addr_orig.
- (aarch64_dr_state_remove_one_point): Likewise.
- (aarch64_handle_breakpoint): Update caller.
- (aarch64_handle_aligned_watchpoint): Likewise.
- (aarch64_handle_unaligned_watchpoint): Support addr_orig and
- aligned_offset.
- (aarch64_linux_set_debug_regs): Remove const from state. Call
- aarch64_downgrade_regs.
- (aarch64_show_debug_reg_state): Print also dr_addr_orig_wp.
- * nat/aarch64-linux-hw-point.h (DR_CONTROL_LENGTH): Rename to ...
- (DR_CONTROL_MASK): ... this.
- (struct aarch64_debug_reg_state): New field dr_addr_orig_wp.
- (unsigned int aarch64_watchpoint_offset): New prototype.
- (aarch64_linux_set_debug_regs): Remove const from state.
- * utils.c (align_up, align_down): Move to ...
- * common/common-utils.c (align_up, align_down): ... here.
- * utils.h (align_up, align_down): Move to ...
- * common/common-utils.h (align_up, align_down): ... here.
-
-gdb/gdbserver/ChangeLog
-2018-05-04 Jan Kratochvil <jan.kratochvil@redhat.com>
- Pedro Alves <palves@redhat.com>
-
- * linux-aarch64-low.c (aarch64_stopped_data_address):
- Likewise.
-
-gdb/testsuite/ChangeLog
-2018-05-04 Jan Kratochvil <jan.kratochvil@redhat.com>
- Pedro Alves <palves@redhat.com>
-
- PR breakpoints/19806 and support for PR external/20207.
- * gdb.base/watchpoint-unaligned.c: New file.
- * gdb.base/watchpoint-unaligned.exp: New file.
-
-diff --git a/gdb/NEWS b/gdb/NEWS
-index f40eb6c390..b7a3bc2635 100644
---- a/gdb/NEWS
-+++ b/gdb/NEWS
-@@ -1,6 +1,18 @@
- What has changed in GDB?
- (Organized release by release)
-
-+*** Changes since GDB 8.1
-+
-+* Aarch64/Linux hardware watchpoints improvements
-+
-+ Hardware watchpoints on unaligned addresses are now properly
-+ supported when running Linux kernel 4.10 or higher: read and access
-+ watchpoints are no longer spuriously missed, and all watchpoints
-+ lengths between 1 and 8 bytes are supported. On older kernels,
-+ watchpoints set on unaligned addresses are no longer missed, with
-+ the tradeoff that there is a possibility of false hits being
-+ reported.
-+
- *** Changes in GDB 8.1
-
- * Fortran: Support pointers to dynamic types.
-diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c
-index f08bf039e4..aa3b9a7800 100644
---- a/gdb/aarch64-linux-nat.c
-+++ b/gdb/aarch64-linux-nat.c
-@@ -735,17 +735,39 @@ aarch64_linux_stopped_data_address (struct target_ops *target,
- state = aarch64_get_debug_reg_state (ptid_get_pid (inferior_ptid));
- for (i = aarch64_num_wp_regs - 1; i >= 0; --i)
- {
-+ const unsigned int offset
-+ = aarch64_watchpoint_offset (state->dr_ctrl_wp[i]);
- const unsigned int len = aarch64_watchpoint_length (state->dr_ctrl_wp[i]);
- const CORE_ADDR addr_trap = (CORE_ADDR) siginfo.si_addr;
-- const CORE_ADDR addr_watch = state->dr_addr_wp[i];
-+ const CORE_ADDR addr_watch = state->dr_addr_wp[i] + offset;
-+ const CORE_ADDR addr_watch_aligned = align_down (state->dr_addr_wp[i], 8);
-+ const CORE_ADDR addr_orig = state->dr_addr_orig_wp[i];
-
- if (state->dr_ref_count_wp[i]
- && DR_CONTROL_ENABLED (state->dr_ctrl_wp[i])
-- && addr_trap >= addr_watch
-+ && addr_trap >= addr_watch_aligned
- && addr_trap < addr_watch + len)
- {
-- *addr_p = addr_trap;
-- return 1;
-+ /* ADDR_TRAP reports the first address of the memory range
-+ accessed by the CPU, regardless of what was the memory
-+ range watched. Thus, a large CPU access that straddles
-+ the ADDR_WATCH..ADDR_WATCH+LEN range may result in an
-+ ADDR_TRAP that is lower than the
-+ ADDR_WATCH..ADDR_WATCH+LEN range. E.g.:
-+
-+ addr: | 4 | 5 | 6 | 7 | 8 |
-+ |---- range watched ----|
-+ |----------- range accessed ------------|
-+
-+ In this case, ADDR_TRAP will be 4.
-+
-+ To match a watchpoint known to GDB core, we must never
-+ report *ADDR_P outside of any ADDR_WATCH..ADDR_WATCH+LEN
-+ range. ADDR_WATCH <= ADDR_TRAP < ADDR_ORIG is a false
-+ positive on kernels older than 4.10. See PR
-+ external/20207. */
-+ *addr_p = addr_orig;
-+ return true;
- }
- }
-
-diff --git a/gdb/common/common-utils.c b/gdb/common/common-utils.c
-index ae2dd9db2b..24b3936f3d 100644
---- a/gdb/common/common-utils.c
-+++ b/gdb/common/common-utils.c
-@@ -408,3 +408,23 @@ stringify_argv (const std::vector<char *> &args)
-
- return ret;
- }
-+
-+/* See common/common-utils.h. */
-+
-+ULONGEST
-+align_up (ULONGEST v, int n)
-+{
-+ /* Check that N is really a power of two. */
-+ gdb_assert (n && (n & (n-1)) == 0);
-+ return (v + n - 1) & -n;
-+}
-+
-+/* See common/common-utils.h. */
-+
-+ULONGEST
-+align_down (ULONGEST v, int n)
-+{
-+ /* Check that N is really a power of two. */
-+ gdb_assert (n && (n & (n-1)) == 0);
-+ return (v & -n);
-+}
-diff --git a/gdb/common/common-utils.h b/gdb/common/common-utils.h
-index 2320318de7..a961514fd6 100644
---- a/gdb/common/common-utils.h
-+++ b/gdb/common/common-utils.h
-@@ -146,4 +146,36 @@ in_inclusive_range (T value, T low, T high)
- return value >= low && value <= high;
- }
-
-+/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
-+ power of 2). Round up/down when necessary. Examples of correct
-+ use include:
-+
-+ addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
-+ write_memory (addr, value, len);
-+ addr += len;
-+
-+ and:
-+
-+ sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
-+ write_memory (sp, value, len);
-+
-+ Note that uses such as:
-+
-+ write_memory (addr, value, len);
-+ addr += align_up (len, 8);
-+
-+ and:
-+
-+ sp -= align_up (len, 8);
-+ write_memory (sp, value, len);
-+
-+ are typically not correct as they don't ensure that the address (SP
-+ or ADDR) is correctly aligned (relying on previous alignment to
-+ keep things right). This is also why the methods are called
-+ "align_..." instead of "round_..." as the latter reads better with
-+ this incorrect coding style. */
-+
-+extern ULONGEST align_up (ULONGEST v, int n);
-+extern ULONGEST align_down (ULONGEST v, int n);
-+
- #endif
-diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
-index eccac4da13..7ea24c2363 100644
---- a/gdb/gdbserver/linux-aarch64-low.c
-+++ b/gdb/gdbserver/linux-aarch64-low.c
-@@ -360,14 +360,39 @@ aarch64_stopped_data_address (void)
- state = aarch64_get_debug_reg_state (pid_of (current_thread));
- for (i = aarch64_num_wp_regs - 1; i >= 0; --i)
- {
-+ const unsigned int offset
-+ = aarch64_watchpoint_offset (state->dr_ctrl_wp[i]);
- const unsigned int len = aarch64_watchpoint_length (state->dr_ctrl_wp[i]);
- const CORE_ADDR addr_trap = (CORE_ADDR) siginfo.si_addr;
-- const CORE_ADDR addr_watch = state->dr_addr_wp[i];
-+ const CORE_ADDR addr_watch = state->dr_addr_wp[i] + offset;
-+ const CORE_ADDR addr_watch_aligned = align_down (state->dr_addr_wp[i], 8);
-+ const CORE_ADDR addr_orig = state->dr_addr_orig_wp[i];
-+
- if (state->dr_ref_count_wp[i]
- && DR_CONTROL_ENABLED (state->dr_ctrl_wp[i])
-- && addr_trap >= addr_watch
-+ && addr_trap >= addr_watch_aligned
- && addr_trap < addr_watch + len)
-- return addr_trap;
-+ {
-+ /* ADDR_TRAP reports the first address of the memory range
-+ accessed by the CPU, regardless of what was the memory
-+ range watched. Thus, a large CPU access that straddles
-+ the ADDR_WATCH..ADDR_WATCH+LEN range may result in an
-+ ADDR_TRAP that is lower than the
-+ ADDR_WATCH..ADDR_WATCH+LEN range. E.g.:
-+
-+ addr: | 4 | 5 | 6 | 7 | 8 |
-+ |---- range watched ----|
-+ |----------- range accessed ------------|
-+
-+ In this case, ADDR_TRAP will be 4.
-+
-+ To match a watchpoint known to GDB core, we must never
-+ report *ADDR_P outside of any ADDR_WATCH..ADDR_WATCH+LEN
-+ range. ADDR_WATCH <= ADDR_TRAP < ADDR_ORIG is a false
-+ positive on kernels older than 4.10. See PR
-+ external/20207. */
-+ return addr_orig;
-+ }
- }
-
- return (CORE_ADDR) 0;
-diff --git a/gdb/nat/aarch64-linux-hw-point.c b/gdb/nat/aarch64-linux-hw-point.c
-index e9ebc5fba8..10cbf3e4df 100644
---- a/gdb/nat/aarch64-linux-hw-point.c
-+++ b/gdb/nat/aarch64-linux-hw-point.c
-@@ -34,29 +34,52 @@
- int aarch64_num_bp_regs;
- int aarch64_num_wp_regs;
-
-+/* True if this kernel does not have the bug described by PR
-+ external/20207 (Linux >= 4.10). A fixed kernel supports any
-+ contiguous range of bits in 8-bit byte DR_CONTROL_MASK. A buggy
-+ kernel supports only 0x01, 0x03, 0x0f and 0xff. We start by
-+ assuming the bug is fixed, and then detect the bug at
-+ PTRACE_SETREGSET time. */
-+static bool kernel_supports_any_contiguous_range = true;
-+
-+/* Return starting byte 0..7 incl. of a watchpoint encoded by CTRL. */
-+
-+unsigned int
-+aarch64_watchpoint_offset (unsigned int ctrl)
-+{
-+ uint8_t mask = DR_CONTROL_MASK (ctrl);
-+ unsigned retval;
-+
-+ /* Shift out bottom zeros. */
-+ for (retval = 0; mask && (mask & 1) == 0; ++retval)
-+ mask >>= 1;
-+
-+ return retval;
-+}
-+
- /* Utility function that returns the length in bytes of a watchpoint
- according to the content of a hardware debug control register CTRL.
-- Note that the kernel currently only supports the following Byte
-- Address Select (BAS) values: 0x1, 0x3, 0xf and 0xff, which means
-- that for a hardware watchpoint, its valid length can only be 1
-- byte, 2 bytes, 4 bytes or 8 bytes. */
-+ Any contiguous range of bytes in CTRL is supported. The returned
-+ value can be between 0..8 (inclusive). */
-
- unsigned int
- aarch64_watchpoint_length (unsigned int ctrl)
- {
-- switch (DR_CONTROL_LENGTH (ctrl))
-- {
-- case 0x01:
-- return 1;
-- case 0x03:
-- return 2;
-- case 0x0f:
-- return 4;
-- case 0xff:
-- return 8;
-- default:
-- return 0;
-- }
-+ uint8_t mask = DR_CONTROL_MASK (ctrl);
-+ unsigned retval;
-+
-+ /* Shift out bottom zeros. */
-+ mask >>= aarch64_watchpoint_offset (ctrl);
-+
-+ /* Count bottom ones. */
-+ for (retval = 0; (mask & 1) != 0; ++retval)
-+ mask >>= 1;
-+
-+ if (mask != 0)
-+ error (_("Unexpected hardware watchpoint length register value 0x%x"),
-+ DR_CONTROL_MASK (ctrl));
-+
-+ return retval;
- }
-
- /* Given the hardware breakpoint or watchpoint type TYPE and its
-@@ -64,10 +87,13 @@ aarch64_watchpoint_length (unsigned int ctrl)
- breakpoint/watchpoint control register. */
-
- static unsigned int
--aarch64_point_encode_ctrl_reg (enum target_hw_bp_type type, int len)
-+aarch64_point_encode_ctrl_reg (enum target_hw_bp_type type, int offset, int len)
- {
- unsigned int ctrl, ttype;
-
-+ gdb_assert (offset == 0 || kernel_supports_any_contiguous_range);
-+ gdb_assert (offset + len <= AARCH64_HWP_MAX_LEN_PER_REG);
-+
- /* type */
- switch (type)
- {
-@@ -89,8 +115,8 @@ aarch64_point_encode_ctrl_reg (enum target_hw_bp_type type, int len)
-
- ctrl = ttype << 3;
-
-- /* length bitmask */
-- ctrl |= ((1 << len) - 1) << 5;
-+ /* offset and length bitmask */
-+ ctrl |= ((1 << len) - 1) << (5 + offset);
- /* enabled at el0 */
- ctrl |= (2 << 1) | 1;
-
-@@ -134,59 +160,65 @@ aarch64_point_is_aligned (int is_watchpoint, CORE_ADDR addr, LONGEST len)
- if (addr & (alignment - 1))
- return 0;
-
-- if (len != 8 && len != 4 && len != 2 && len != 1)
-+ if ((!kernel_supports_any_contiguous_range
-+ && len != 8 && len != 4 && len != 2 && len != 1)
-+ || (kernel_supports_any_contiguous_range
-+ && (len < 1 || len > 8)))
- return 0;
-
- return 1;
- }
-
- /* Given the (potentially unaligned) watchpoint address in ADDR and
-- length in LEN, return the aligned address and aligned length in
-- *ALIGNED_ADDR_P and *ALIGNED_LEN_P, respectively. The returned
-- aligned address and length will be valid values to write to the
-- hardware watchpoint value and control registers.
-+ length in LEN, return the aligned address, offset from that base
-+ address, and aligned length in *ALIGNED_ADDR_P, *ALIGNED_OFFSET_P
-+ and *ALIGNED_LEN_P, respectively. The returned values will be
-+ valid values to write to the hardware watchpoint value and control
-+ registers.
-
- The given watchpoint may get truncated if more than one hardware
- register is needed to cover the watched region. *NEXT_ADDR_P
- and *NEXT_LEN_P, if non-NULL, will return the address and length
- of the remaining part of the watchpoint (which can be processed
-- by calling this routine again to generate another aligned address
-- and length pair.
-+ by calling this routine again to generate another aligned address,
-+ offset and length tuple.
-
- Essentially, unaligned watchpoint is achieved by minimally
- enlarging the watched area to meet the alignment requirement, and
- if necessary, splitting the watchpoint over several hardware
-- watchpoint registers. The trade-off is that there will be
-- false-positive hits for the read-type or the access-type hardware
-- watchpoints; for the write type, which is more commonly used, there
-- will be no such issues, as the higher-level breakpoint management
-- in gdb always examines the exact watched region for any content
-- change, and transparently resumes a thread from a watchpoint trap
-- if there is no change to the watched region.
-+ watchpoint registers.
-+
-+ On kernels that predate the support for Byte Address Select (BAS)
-+ in the hardware watchpoint control register, the offset from the
-+ base address is always zero, and so in that case the trade-off is
-+ that there will be false-positive hits for the read-type or the
-+ access-type hardware watchpoints; for the write type, which is more
-+ commonly used, there will be no such issues, as the higher-level
-+ breakpoint management in gdb always examines the exact watched
-+ region for any content change, and transparently resumes a thread
-+ from a watchpoint trap if there is no change to the watched region.
-
- Another limitation is that because the watched region is enlarged,
-- the watchpoint fault address returned by
-+ the watchpoint fault address discovered by
- aarch64_stopped_data_address may be outside of the original watched
- region, especially when the triggering instruction is accessing a
- larger region. When the fault address is not within any known
- range, watchpoints_triggered in gdb will get confused, as the
- higher-level watchpoint management is only aware of original
- watched regions, and will think that some unknown watchpoint has
-- been triggered. In such a case, gdb may stop without displaying
-- any detailed information.
--
-- Once the kernel provides the full support for Byte Address Select
-- (BAS) in the hardware watchpoint control register, these
-- limitations can be largely relaxed with some further work. */
-+ been triggered. To prevent such a case,
-+ aarch64_stopped_data_address implementations in gdb and gdbserver
-+ try to match the trapped address with a watched region, and return
-+ an address within the latter. */
-
- static void
--aarch64_align_watchpoint (CORE_ADDR addr, LONGEST len,
-- CORE_ADDR *aligned_addr_p,
-- int *aligned_len_p, CORE_ADDR *next_addr_p,
-- LONGEST *next_len_p)
-+aarch64_align_watchpoint (CORE_ADDR addr, int len, CORE_ADDR *aligned_addr_p,
-+ int *aligned_offset_p, int *aligned_len_p,
-+ CORE_ADDR *next_addr_p, int *next_len_p,
-+ CORE_ADDR *next_addr_orig_p)
- {
- int aligned_len;
-- unsigned int offset;
-+ unsigned int offset, aligned_offset;
- CORE_ADDR aligned_addr;
- const unsigned int alignment = AARCH64_HWP_ALIGNMENT;
- const unsigned int max_wp_len = AARCH64_HWP_MAX_LEN_PER_REG;
-@@ -197,10 +229,12 @@ aarch64_align_watchpoint (CORE_ADDR addr, LONGEST len,
- if (len <= 0)
- return;
-
-- /* Address to be put into the hardware watchpoint value register
-- must be aligned. */
-+ /* The address put into the hardware watchpoint value register must
-+ be aligned. */
- offset = addr & (alignment - 1);
- aligned_addr = addr - offset;
-+ aligned_offset
-+ = kernel_supports_any_contiguous_range ? addr & (alignment - 1) : 0;
-
- gdb_assert (offset >= 0 && offset < alignment);
- gdb_assert (aligned_addr >= 0 && aligned_addr <= addr);
-@@ -208,9 +242,10 @@ aarch64_align_watchpoint (CORE_ADDR addr, LONGEST len,
-
- if (offset + len >= max_wp_len)
- {
-- /* Need more than one watchpoint registers; truncate it at the
-+ /* Need more than one watchpoint register; truncate at the
- alignment boundary. */
-- aligned_len = max_wp_len;
-+ aligned_len
-+ = max_wp_len - (kernel_supports_any_contiguous_range ? offset : 0);
- len -= (max_wp_len - offset);
- addr += (max_wp_len - offset);
- gdb_assert ((addr & (alignment - 1)) == 0);
-@@ -223,19 +258,24 @@ aarch64_align_watchpoint (CORE_ADDR addr, LONGEST len,
- aligned_len_array[AARCH64_HWP_MAX_LEN_PER_REG] =
- { 1, 2, 4, 4, 8, 8, 8, 8 };
-
-- aligned_len = aligned_len_array[offset + len - 1];
-+ aligned_len = (kernel_supports_any_contiguous_range
-+ ? len : aligned_len_array[offset + len - 1]);
- addr += len;
- len = 0;
- }
-
- if (aligned_addr_p)
- *aligned_addr_p = aligned_addr;
-+ if (aligned_offset_p)
-+ *aligned_offset_p = aligned_offset;
- if (aligned_len_p)
- *aligned_len_p = aligned_len;
- if (next_addr_p)
- *next_addr_p = addr;
- if (next_len_p)
- *next_len_p = len;
-+ if (next_addr_orig_p)
-+ *next_addr_orig_p = align_down (*next_addr_orig_p + alignment, alignment);
- }
-
- struct aarch64_dr_update_callback_param
-@@ -325,17 +365,73 @@ aarch64_notify_debug_reg_change (const struct aarch64_debug_reg_state *state,
- iterate_over_lwps (pid_ptid, debug_reg_change_callback, (void *) ¶m);
- }
-
-+/* Reconfigure STATE to be compatible with Linux kernels with the PR
-+ external/20207 bug. This is called when
-+ KERNEL_SUPPORTS_ANY_CONTIGUOUS_RANGE transitions to false. Note we
-+ don't try to support combining watchpoints with matching (and thus
-+ shared) masks, as it's too late when we get here. On buggy
-+ kernels, GDB will try to first setup the perfect matching ranges,
-+ which will run out of registers before this function can merge
-+ them. It doesn't look like worth the effort to improve that, given
-+ eventually buggy kernels will be phased out. */
-+
-+static void
-+aarch64_downgrade_regs (struct aarch64_debug_reg_state *state)
-+{
-+ for (int i = 0; i < aarch64_num_wp_regs; ++i)
-+ if ((state->dr_ctrl_wp[i] & 1) != 0)
-+ {
-+ gdb_assert (state->dr_ref_count_wp[i] != 0);
-+ uint8_t mask_orig = (state->dr_ctrl_wp[i] >> 5) & 0xff;
-+ gdb_assert (mask_orig != 0);
-+ static const uint8_t old_valid[] = { 0x01, 0x03, 0x0f, 0xff };
-+ uint8_t mask = 0;
-+ for (const uint8_t old_mask : old_valid)
-+ if (mask_orig <= old_mask)
-+ {
-+ mask = old_mask;
-+ break;
-+ }
-+ gdb_assert (mask != 0);
-+
-+ /* No update needed for this watchpoint? */
-+ if (mask == mask_orig)
-+ continue;
-+ state->dr_ctrl_wp[i] |= mask << 5;
-+ state->dr_addr_wp[i]
-+ = align_down (state->dr_addr_wp[i], AARCH64_HWP_ALIGNMENT);
-+
-+ /* Try to match duplicate entries. */
-+ for (int j = 0; j < i; ++j)
-+ if ((state->dr_ctrl_wp[j] & 1) != 0
-+ && state->dr_addr_wp[j] == state->dr_addr_wp[i]
-+ && state->dr_addr_orig_wp[j] == state->dr_addr_orig_wp[i]
-+ && state->dr_ctrl_wp[j] == state->dr_ctrl_wp[i])
-+ {
-+ state->dr_ref_count_wp[j] += state->dr_ref_count_wp[i];
-+ state->dr_ref_count_wp[i] = 0;
-+ state->dr_addr_wp[i] = 0;
-+ state->dr_addr_orig_wp[i] = 0;
-+ state->dr_ctrl_wp[i] &= ~1;
-+ break;
-+ }
-+
-+ aarch64_notify_debug_reg_change (state, 1 /* is_watchpoint */, i);
-+ }
-+}
-+
- /* Record the insertion of one breakpoint/watchpoint, as represented
- by ADDR and CTRL, in the process' arch-specific data area *STATE. */
-
- static int
- aarch64_dr_state_insert_one_point (struct aarch64_debug_reg_state *state,
- enum target_hw_bp_type type,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, int offset, int len,
-+ CORE_ADDR addr_orig)
- {
- int i, idx, num_regs, is_watchpoint;
- unsigned int ctrl, *dr_ctrl_p, *dr_ref_count;
-- CORE_ADDR *dr_addr_p;
-+ CORE_ADDR *dr_addr_p, *dr_addr_orig_p;
-
- /* Set up state pointers. */
- is_watchpoint = (type != hw_execute);
-@@ -344,6 +440,7 @@ aarch64_dr_state_insert_one_point (struct aarch64_debug_reg_state *state,
- {
- num_regs = aarch64_num_wp_regs;
- dr_addr_p = state->dr_addr_wp;
-+ dr_addr_orig_p = state->dr_addr_orig_wp;
- dr_ctrl_p = state->dr_ctrl_wp;
- dr_ref_count = state->dr_ref_count_wp;
- }
-@@ -351,11 +448,12 @@ aarch64_dr_state_insert_one_point (struct aarch64_debug_reg_state *state,
- {
- num_regs = aarch64_num_bp_regs;
- dr_addr_p = state->dr_addr_bp;
-+ dr_addr_orig_p = nullptr;
- dr_ctrl_p = state->dr_ctrl_bp;
- dr_ref_count = state->dr_ref_count_bp;
- }
-
-- ctrl = aarch64_point_encode_ctrl_reg (type, len);
-+ ctrl = aarch64_point_encode_ctrl_reg (type, offset, len);
-
- /* Find an existing or free register in our cache. */
- idx = -1;
-@@ -367,7 +465,9 @@ aarch64_dr_state_insert_one_point (struct aarch64_debug_reg_state *state,
- idx = i;
- /* no break; continue hunting for an exising one. */
- }
-- else if (dr_addr_p[i] == addr && dr_ctrl_p[i] == ctrl)
-+ else if (dr_addr_p[i] == addr
-+ && (dr_addr_orig_p == nullptr || dr_addr_orig_p[i] == addr_orig)
-+ && dr_ctrl_p[i] == ctrl)
- {
- gdb_assert (dr_ref_count[i] != 0);
- idx = i;
-@@ -384,6 +484,8 @@ aarch64_dr_state_insert_one_point (struct aarch64_debug_reg_state *state,
- {
- /* new entry */
- dr_addr_p[idx] = addr;
-+ if (dr_addr_orig_p != nullptr)
-+ dr_addr_orig_p[idx] = addr_orig;
- dr_ctrl_p[idx] = ctrl;
- dr_ref_count[idx] = 1;
- /* Notify the change. */
-@@ -404,11 +506,12 @@ aarch64_dr_state_insert_one_point (struct aarch64_debug_reg_state *state,
- static int
- aarch64_dr_state_remove_one_point (struct aarch64_debug_reg_state *state,
- enum target_hw_bp_type type,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, int offset, int len,
-+ CORE_ADDR addr_orig)
- {
- int i, num_regs, is_watchpoint;
- unsigned int ctrl, *dr_ctrl_p, *dr_ref_count;
-- CORE_ADDR *dr_addr_p;
-+ CORE_ADDR *dr_addr_p, *dr_addr_orig_p;
-
- /* Set up state pointers. */
- is_watchpoint = (type != hw_execute);
-@@ -416,6 +519,7 @@ aarch64_dr_state_remove_one_point (struct aarch64_debug_reg_state *state,
- {
- num_regs = aarch64_num_wp_regs;
- dr_addr_p = state->dr_addr_wp;
-+ dr_addr_orig_p = state->dr_addr_orig_wp;
- dr_ctrl_p = state->dr_ctrl_wp;
- dr_ref_count = state->dr_ref_count_wp;
- }
-@@ -423,15 +527,18 @@ aarch64_dr_state_remove_one_point (struct aarch64_debug_reg_state *state,
- {
- num_regs = aarch64_num_bp_regs;
- dr_addr_p = state->dr_addr_bp;
-+ dr_addr_orig_p = nullptr;
- dr_ctrl_p = state->dr_ctrl_bp;
- dr_ref_count = state->dr_ref_count_bp;
- }
-
-- ctrl = aarch64_point_encode_ctrl_reg (type, len);
-+ ctrl = aarch64_point_encode_ctrl_reg (type, offset, len);
-
- /* Find the entry that matches the ADDR and CTRL. */
- for (i = 0; i < num_regs; ++i)
-- if (dr_addr_p[i] == addr && dr_ctrl_p[i] == ctrl)
-+ if (dr_addr_p[i] == addr
-+ && (dr_addr_orig_p == nullptr || dr_addr_orig_p[i] == addr_orig)
-+ && dr_ctrl_p[i] == ctrl)
- {
- gdb_assert (dr_ref_count[i] != 0);
- break;
-@@ -447,6 +554,8 @@ aarch64_dr_state_remove_one_point (struct aarch64_debug_reg_state *state,
- /* Clear the enable bit. */
- ctrl &= ~1;
- dr_addr_p[i] = 0;
-+ if (dr_addr_orig_p != nullptr)
-+ dr_addr_orig_p[i] = 0;
- dr_ctrl_p[i] = ctrl;
- /* Notify the change. */
- aarch64_notify_debug_reg_change (state, is_watchpoint, i);
-@@ -473,10 +582,10 @@ aarch64_handle_breakpoint (enum target_hw_bp_type type, CORE_ADDR addr,
- if (!aarch64_point_is_aligned (0 /* is_watchpoint */ , addr, len))
- return -1;
-
-- return aarch64_dr_state_insert_one_point (state, type, addr, len);
-+ return aarch64_dr_state_insert_one_point (state, type, addr, 0, len, -1);
- }
- else
-- return aarch64_dr_state_remove_one_point (state, type, addr, len);
-+ return aarch64_dr_state_remove_one_point (state, type, addr, 0, len, -1);
- }
-
- /* This is essentially the same as aarch64_handle_breakpoint, apart
-@@ -488,9 +597,9 @@ aarch64_handle_aligned_watchpoint (enum target_hw_bp_type type,
- struct aarch64_debug_reg_state *state)
- {
- if (is_insert)
-- return aarch64_dr_state_insert_one_point (state, type, addr, len);
-+ return aarch64_dr_state_insert_one_point (state, type, addr, 0, len, addr);
- else
-- return aarch64_dr_state_remove_one_point (state, type, addr, len);
-+ return aarch64_dr_state_remove_one_point (state, type, addr, 0, len, addr);
- }
-
- /* Insert/remove unaligned watchpoint by calling
-@@ -502,32 +611,45 @@ aarch64_handle_aligned_watchpoint (enum target_hw_bp_type type,
-
- static int
- aarch64_handle_unaligned_watchpoint (enum target_hw_bp_type type,
-- CORE_ADDR addr, LONGEST len, int is_insert,
-+ CORE_ADDR addr, int len, int is_insert,
- struct aarch64_debug_reg_state *state)
- {
-+ CORE_ADDR addr_orig = addr;
-+
- while (len > 0)
- {
- CORE_ADDR aligned_addr;
-- int aligned_len, ret;
-+ int aligned_offset, aligned_len, ret;
-+ CORE_ADDR addr_orig_next = addr_orig;
-
-- aarch64_align_watchpoint (addr, len, &aligned_addr, &aligned_len,
-- &addr, &len);
-+ aarch64_align_watchpoint (addr, len, &aligned_addr, &aligned_offset,
-+ &aligned_len, &addr, &len, &addr_orig_next);
-
- if (is_insert)
- ret = aarch64_dr_state_insert_one_point (state, type, aligned_addr,
-- aligned_len);
-+ aligned_offset,
-+ aligned_len, addr_orig);
- else
- ret = aarch64_dr_state_remove_one_point (state, type, aligned_addr,
-- aligned_len);
-+ aligned_offset,
-+ aligned_len, addr_orig);
-
- if (show_debug_regs)
- debug_printf ("handle_unaligned_watchpoint: is_insert: %d\n"
- " "
- "aligned_addr: %s, aligned_len: %d\n"
- " "
-- "next_addr: %s, next_len: %s\n",
-+ "addr_orig: %s\n"
-+ " "
-+ "next_addr: %s, next_len: %d\n"
-+ " "
-+ "addr_orig_next: %s\n",
- is_insert, core_addr_to_string_nz (aligned_addr),
-- aligned_len, core_addr_to_string_nz (addr), plongest (len));
-+ aligned_len, core_addr_to_string_nz (addr_orig),
-+ core_addr_to_string_nz (addr), len,
-+ core_addr_to_string_nz (addr_orig_next));
-+
-+ addr_orig = addr_orig_next;
-
- if (ret != 0)
- return ret;
-@@ -553,7 +675,7 @@ aarch64_handle_watchpoint (enum target_hw_bp_type type, CORE_ADDR addr,
- registers with data from *STATE. */
-
- void
--aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
-+aarch64_linux_set_debug_regs (struct aarch64_debug_reg_state *state,
- int tid, int watchpoint)
- {
- int i, count;
-@@ -581,7 +703,18 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
- if (ptrace (PTRACE_SETREGSET, tid,
- watchpoint ? NT_ARM_HW_WATCH : NT_ARM_HW_BREAK,
- (void *) &iov))
-- error (_("Unexpected error setting hardware debug registers"));
-+ {
-+ /* Handle Linux kernels with the PR external/20207 bug. */
-+ if (watchpoint && errno == EINVAL
-+ && kernel_supports_any_contiguous_range)
-+ {
-+ kernel_supports_any_contiguous_range = false;
-+ aarch64_downgrade_regs (state);
-+ aarch64_linux_set_debug_regs (state, tid, watchpoint);
-+ return;
-+ }
-+ error (_("Unexpected error setting hardware debug registers"));
-+ }
- }
-
- /* Print the values of the cached breakpoint/watchpoint registers. */
-@@ -612,8 +745,9 @@ aarch64_show_debug_reg_state (struct aarch64_debug_reg_state *state,
-
- debug_printf ("\tWATCHPOINTs:\n");
- for (i = 0; i < aarch64_num_wp_regs; i++)
-- debug_printf ("\tWP%d: addr=%s, ctrl=0x%08x, ref.count=%d\n",
-+ debug_printf ("\tWP%d: addr=%s (orig=%s), ctrl=0x%08x, ref.count=%d\n",
- i, core_addr_to_string_nz (state->dr_addr_wp[i]),
-+ core_addr_to_string_nz (state->dr_addr_orig_wp[i]),
- state->dr_ctrl_wp[i], state->dr_ref_count_wp[i]);
- }
-
-diff --git a/gdb/nat/aarch64-linux-hw-point.h b/gdb/nat/aarch64-linux-hw-point.h
-index e1d4fc8dbc..b5ba6415c0 100644
---- a/gdb/nat/aarch64-linux-hw-point.h
-+++ b/gdb/nat/aarch64-linux-hw-point.h
-@@ -77,13 +77,13 @@
-
- 31 13 5 3 1 0
- +--------------------------------+----------+------+------+----+
-- | RESERVED (SBZ) | LENGTH | TYPE | PRIV | EN |
-+ | RESERVED (SBZ) | MASK | TYPE | PRIV | EN |
- +--------------------------------+----------+------+------+----+
-
- The TYPE field is ignored for breakpoints. */
-
- #define DR_CONTROL_ENABLED(ctrl) (((ctrl) & 0x1) == 1)
--#define DR_CONTROL_LENGTH(ctrl) (((ctrl) >> 5) & 0xff)
-+#define DR_CONTROL_MASK(ctrl) (((ctrl) >> 5) & 0xff)
-
- /* Each bit of a variable of this type is used to indicate whether a
- hardware breakpoint or watchpoint setting has been changed since
-@@ -147,7 +147,10 @@ struct aarch64_debug_reg_state
- unsigned int dr_ref_count_bp[AARCH64_HBP_MAX_NUM];
-
- /* hardware watchpoint */
-+ /* Address aligned down to AARCH64_HWP_ALIGNMENT. */
- CORE_ADDR dr_addr_wp[AARCH64_HWP_MAX_NUM];
-+ /* Address as entered by user without any forced alignment. */
-+ CORE_ADDR dr_addr_orig_wp[AARCH64_HWP_MAX_NUM];
- unsigned int dr_ctrl_wp[AARCH64_HWP_MAX_NUM];
- unsigned int dr_ref_count_wp[AARCH64_HWP_MAX_NUM];
- };
-@@ -166,6 +169,7 @@ struct arch_lwp_info
- extern int aarch64_num_bp_regs;
- extern int aarch64_num_wp_regs;
-
-+unsigned int aarch64_watchpoint_offset (unsigned int ctrl);
- unsigned int aarch64_watchpoint_length (unsigned int ctrl);
-
- int aarch64_handle_breakpoint (enum target_hw_bp_type type, CORE_ADDR addr,
-@@ -175,7 +179,7 @@ int aarch64_handle_watchpoint (enum target_hw_bp_type type, CORE_ADDR addr,
- LONGEST len, int is_insert,
- struct aarch64_debug_reg_state *state);
-
--void aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
-+void aarch64_linux_set_debug_regs (struct aarch64_debug_reg_state *state,
- int tid, int watchpoint);
-
- void aarch64_show_debug_reg_state (struct aarch64_debug_reg_state *state,
-diff --git a/gdb/testsuite/gdb.base/watchpoint-unaligned.c b/gdb/testsuite/gdb.base/watchpoint-unaligned.c
-new file mode 100644
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/watchpoint-unaligned.c
-@@ -0,0 +1,96 @@
-+/* This testcase is part of GDB, the GNU debugger.
-+
-+ Copyright 2017-2018 Free Software Foundation, Inc.
-+
-+ This program is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 3 of the License, or
-+ (at your option) any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
-+
-+#include <stdint.h>
-+#include <assert.h>
-+
-+static int again;
-+
-+static volatile struct
-+{
-+ uint64_t alignment;
-+ union
-+ {
-+ uint64_t size8[1];
-+ uint32_t size4[2];
-+ uint16_t size2[4];
-+ uint8_t size1[8];
-+ uint64_t size8twice[2];
-+ }
-+ u;
-+} data;
-+
-+static int size = 0;
-+static int offset;
-+
-+static void
-+write_size8twice (void)
-+{
-+ static const uint64_t first = 1;
-+ static const uint64_t second = 2;
-+
-+#ifdef __aarch64__
-+ asm volatile ("stp %1, %2, [%0]"
-+ : /* output */
-+ : "r" (data.u.size8twice), "r" (first), "r" (second) /* input */
-+ : "memory" /* clobber */);
-+#else
-+ data.u.size8twice[0] = first;
-+ data.u.size8twice[1] = second;
-+#endif
-+}
-+
-+int
-+main (void)
-+{
-+ volatile uint64_t local;
-+
-+ assert (sizeof (data) == 8 + 2 * 8);
-+
-+ write_size8twice ();
-+
-+ while (size)
-+ {
-+ switch (size)
-+ {
-+/* __s390x__ also defines __s390__ */
-+#ifdef __s390__
-+# define ACCESS(var) var = ~var
-+#else
-+# define ACCESS(var) local = var
-+#endif
-+ case 8:
-+ ACCESS (data.u.size8[offset]);
-+ break;
-+ case 4:
-+ ACCESS (data.u.size4[offset]);
-+ break;
-+ case 2:
-+ ACCESS (data.u.size2[offset]);
-+ break;
-+ case 1:
-+ ACCESS (data.u.size1[offset]);
-+ break;
-+#undef ACCESS
-+ default:
-+ assert (0);
-+ }
-+ size = 0;
-+ size = size; /* start_again */
-+ }
-+ return 0; /* final_return */
-+}
-diff --git a/gdb/testsuite/gdb.base/watchpoint-unaligned.exp b/gdb/testsuite/gdb.base/watchpoint-unaligned.exp
-new file mode 100644
---- /dev/null
-+++ b/gdb/testsuite/gdb.base/watchpoint-unaligned.exp
-@@ -0,0 +1,184 @@
-+# Copyright 2017-2018 Free Software Foundation, Inc.
-+#
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 3 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program. If not, see <http://www.gnu.org/licenses/>.
-+#
-+# This file is part of the gdb testsuite.
-+
-+# Test inserting read watchpoints on unaligned addresses.
-+
-+standard_testfile
-+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
-+ return -1
-+}
-+
-+if ![runto_main] {
-+ untested "could not run to main"
-+ return -1
-+}
-+
-+gdb_breakpoint [gdb_get_line_number "start_again"] "Breakpoint $decimal at $hex" "start_again"
-+
-+set sizes {1 2 4 8}
-+array set alignedend {1 1 2 2 3 4 4 4 5 8 6 8 7 8 8 8}
-+
-+set rwatch "rwatch"
-+set rwatch_exp "Hardware read watchpoint"
-+if {[istarget "s390*-*-*"]} {
-+ # Target does not support this type of hardware watchpoint."
-+ set rwatch "watch"
-+ set rwatch_exp "Hardware watchpoint"
-+}
-+
-+foreach wpsize $sizes {
-+ for {set wpoffset 0} {$wpoffset < 8 / $wpsize} {incr wpoffset} {
-+ set wpstart [expr $wpoffset * $wpsize]
-+ set wpend [expr ($wpoffset + 1) * $wpsize]
-+ set wpendaligned $alignedend($wpend)
-+ foreach rdsize $sizes {
-+ for {set rdoffset 0} {$rdoffset < 8 / $rdsize} {incr rdoffset} {
-+ set rdstart [expr $rdoffset * $rdsize]
-+ set rdend [expr ($rdoffset + 1) * $rdsize]
-+ set expect_hit [expr max ($wpstart, $rdstart) < min ($wpend, $rdend)]
-+ set test "$rwatch data.u.size$wpsize\[$wpoffset\]"
-+ set wpnum ""
-+ gdb_test_multiple $test $test {
-+ -re "$rwatch_exp (\[0-9\]+): .*\r\n$gdb_prompt $" {
-+ set wpnum $expect_out(1,string)
-+ }
-+ -re "Expression cannot be implemented with read/access watchpoint.\r\n$gdb_prompt $" {
-+ if {$wpsize == 8 && [istarget "arm*-*-*"]} {
-+ untested $test
-+ continue
-+ }
-+ fail $test
-+ }
-+ }
-+ gdb_test_no_output "set variable size = $rdsize" ""
-+ gdb_test_no_output "set variable offset = $rdoffset" ""
-+ set test "continue"
-+ set got_hit 0
-+ gdb_test_multiple $test $test {
-+ -re "$rwatch_exp $wpnum:.*alue = .*\r\n$gdb_prompt $" {
-+ set got_hit 1
-+ send_gdb "continue\n"
-+ exp_continue
-+ }
-+ -re " start_again .*\r\n$gdb_prompt $" {
-+ }
-+ }
-+ gdb_test_no_output "delete $wpnum" ""
-+ set test "wp(size=$wpsize offset=$wpoffset) rd(size=$rdsize offset=$rdoffset) expect=$expect_hit"
-+ if {$expect_hit == $got_hit} {
-+ pass $test
-+ } else {
-+ # We do not know if we run on a fixed Linux kernel
-+ # or not. Report XFAIL only in the FAIL case.
-+ if {$expect_hit == 0 && $rdstart < $wpendaligned} {
-+ setup_xfail external/20207 "aarch64*-*-linux*"
-+ }
-+ if {!$expect_hit && [expr max ($wpstart / 8, $rdstart / 8) < min (($wpend + 7) / 8, ($rdend + 7) / 8)]} {
-+ setup_xfail breakpoints/23131 "powerpc*-*-*"
-+ }
-+ fail $test
-+ }
-+ }
-+ }
-+ }
-+}
-+
-+foreach wpcount {4 7} {
-+ array set wpoffset_to_wpnum {}
-+ for {set wpoffset 1} {$wpoffset <= $wpcount} {incr wpoffset} {
-+ set test "$rwatch data.u.size1\[$wpoffset\]"
-+ set wpnum ""
-+ gdb_test_multiple $test $test {
-+ -re "$rwatch_exp (\[0-9\]+): .*\r\n$gdb_prompt $" {
-+ set wpoffset_to_wpnum($wpoffset) $expect_out(1,string)
-+ }
-+ -re "There are not enough available hardware resources for this watchpoint.\r\n$gdb_prompt $" {
-+ if {$wpoffset > 1} {
-+ setup_xfail breakpoints/23131 "powerpc*-*-*"
-+ setup_xfail breakpoints/23131 "arm*-*-*"
-+ }
-+ fail $test
-+ set wpoffset_to_wpnum($wpoffset) 0
-+ }
-+ }
-+ }
-+ gdb_test_no_output "set variable size = 1" ""
-+ gdb_test_no_output "set variable offset = 1" ""
-+ set test "continue"
-+ set got_hit 0
-+ gdb_test_multiple $test $test {
-+ -re "\r\nCould not insert hardware watchpoint .*\r\n$gdb_prompt $" {
-+ }
-+ -re "$rwatch_exp $wpoffset_to_wpnum(1):.*alue = .*\r\n$gdb_prompt $" {
-+ set got_hit 1
-+ send_gdb "continue\n"
-+ exp_continue
-+ }
-+ -re " start_again .*\r\n$gdb_prompt $" {
-+ }
-+ }
-+ for {set wpoffset 1} {$wpoffset <= $wpcount} {incr wpoffset} {
-+ if {$wpoffset_to_wpnum($wpoffset)} {
-+ gdb_test_no_output "delete $wpoffset_to_wpnum($wpoffset)" ""
-+ }
-+ }
-+ set test "wpcount($wpcount)"
-+ if {!$wpoffset_to_wpnum([expr $wpcount - 1])} {
-+ untested $test
-+ continue
-+ }
-+ if {$wpcount > 4} {
-+ if {![istarget "s390*-*-*"]} {
-+ setup_kfail tdep/22389 *-*-*
-+ }
-+ }
-+ gdb_assert $got_hit $test
-+}
-+
-+if ![runto_main] {
-+ return -1
-+}
-+gdb_breakpoint [gdb_get_line_number "final_return"] "Breakpoint $decimal at $hex" "final_return"
-+set test {watch data.u.size8twice[1]}
-+set wpnum ""
-+gdb_test_multiple $test $test {
-+ -re "Hardware watchpoint (\[0-9\]+): .*\r\n$gdb_prompt $" {
-+ set wpnum $expect_out(1,string)
-+ }
-+ -re "Watchpoint (\[0-9\]+): .*\r\n$gdb_prompt $" {
-+ if {[istarget "arm*-*-*"]} {
-+ untested $test
-+ set wpnum 0
-+ }
-+ }
-+}
-+if {$wpnum} {
-+ set test "continue"
-+ set got_hit 0
-+ gdb_test_multiple $test $test {
-+ -re "\r\nCould not insert hardware watchpoint .*\r\n$gdb_prompt $" {
-+ }
-+ -re "Hardware watchpoint $wpnum:.*New value = .*\r\n$gdb_prompt $" {
-+ set got_hit 1
-+ send_gdb "continue\n"
-+ exp_continue
-+ }
-+ -re " final_return .*\r\n$gdb_prompt $" {
-+ }
-+ }
-+ gdb_assert $got_hit "size8twice write"
-+}
-diff --git a/gdb/utils.c b/gdb/utils.c
-index 58c0380d17..26ec9f1ee8 100644
---- a/gdb/utils.c
-+++ b/gdb/utils.c
-@@ -3010,22 +3010,6 @@ gdb_abspath (const char *path)
- path, (char *) NULL));
- }
-
--ULONGEST
--align_up (ULONGEST v, int n)
--{
-- /* Check that N is really a power of two. */
-- gdb_assert (n && (n & (n-1)) == 0);
-- return (v + n - 1) & -n;
--}
--
--ULONGEST
--align_down (ULONGEST v, int n)
--{
-- /* Check that N is really a power of two. */
-- gdb_assert (n && (n & (n-1)) == 0);
-- return (v & -n);
--}
--
- /* Allocation function for the libiberty hash table which uses an
- obstack. The obstack is passed as DATA. */
-
-diff --git a/gdb/utils.h b/gdb/utils.h
-index b234762929..d01d283baa 100644
---- a/gdb/utils.h
-+++ b/gdb/utils.h
-@@ -498,38 +498,6 @@ extern pid_t wait_to_die_with_timeout (pid_t pid, int *status, int timeout);
-
- extern int myread (int, char *, int);
-
--/* Ensure that V is aligned to an N byte boundary (B's assumed to be a
-- power of 2). Round up/down when necessary. Examples of correct
-- use include:
--
-- addr = align_up (addr, 8); -- VALUE needs 8 byte alignment
-- write_memory (addr, value, len);
-- addr += len;
--
-- and:
--
-- sp = align_down (sp - len, 16); -- Keep SP 16 byte aligned
-- write_memory (sp, value, len);
--
-- Note that uses such as:
--
-- write_memory (addr, value, len);
-- addr += align_up (len, 8);
--
-- and:
--
-- sp -= align_up (len, 8);
-- write_memory (sp, value, len);
--
-- are typically not correct as they don't ensure that the address (SP
-- or ADDR) is correctly aligned (relying on previous alignment to
-- keep things right). This is also why the methods are called
-- "align_..." instead of "round_..." as the latter reads better with
-- this incorrect coding style. */
--
--extern ULONGEST align_up (ULONGEST v, int n);
--extern ULONGEST align_down (ULONGEST v, int n);
--
- /* Resource limits used by getrlimit and setrlimit. */
-
- enum resource_limit_kind
diff --git a/gdb-rhbz1540559-gdbaddindex-glibcdebug-regression.patch b/gdb-rhbz1540559-gdbaddindex-glibcdebug-regression.patch
deleted file mode 100644
index 2f71894..0000000
--- a/gdb-rhbz1540559-gdbaddindex-glibcdebug-regression.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
-From: Jan Kratochvil <jan.kratochvil@redhat.com>
-Date: Sun, 4 Feb 2018 20:55:04 +0100
-Subject: gdb-rhbz1540559-gdbaddindex-glibcdebug-regression.patch
-
-FileName: gdb-rhbz1540559-gdbaddindex-glibcdebug-regression.patch
-
-;; Fix -D_GLIBCXX_DEBUG gdb-add-index regression (RH BZ 1540559).
-
-gdb: Out-of-bounds vector access while running gdb-add-index
-https://bugzilla.redhat.com/show_bug.cgi?id=1540559
-
-Fedora Rawhide started to use -D_GLIBCXX_DEBUG which made gdb-add-index
-failing.
-
-/usr/include/c++/7/debug/safe_iterator.h:270:
-Error: attempt to dereference a past-the-end iterator.
-Objects involved in the operation:
- iterator "this" @ 0x0x7fffffffcb90 {
- type = __gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<unsigned char*, std::__cxx1998::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > > >, std::__debug::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > > > (mutable iterator);
- state = past-the-end;
- references sequence with type 'std::__debug::vector<unsigned char, gdb::default_init_allocator<unsigned char, std::allocator<unsigned char> > >' @ 0x0x7fffffffcc50
- }
-
-/usr/include/c++/7/debug/vector:417:
-Error: attempt to subscript container with out-of-bounds index 556, but
-container only holds 556 elements.
-Objects involved in the operation:
- sequence "this" @ 0x0x2e87af8 {
- type = std::__debug::vector<partial_symbol*, std::allocator<partial_symbol*> >;
- }
-
-I do not know if anyone regression-tests GDB with -D_GLIBCXX_DEBUG,
-I have just checked -D_GLIBCXX_DEBUG run against gdb-add-index.
-
-The two -D_GLIBCXX_DEBUG regressions were made by:
-
-commit bc8f2430e08cc2a520db49a42686e0529be4a3bc
-Author: Jan Kratochvil <jan.kratochvil@redhat.com>
-Date: Mon Jun 12 16:29:53 2017 +0100
- Code cleanup: C++ify .gdb_index producer
-
-commit af5bf4ada48ff65b6658be1fab8f9c8f8ab5f319
-Author: Simon Marchi <simon.marchi@ericsson.com>
-Date: Sat Oct 14 08:06:29 2017 -0400
- Replace psymbol_allocation_list with std::vector
-
-gdb/ChangeLog
-2018-02-04 Jan Kratochvil <jan.kratochvil@redhat.com>
-
- * dwarf2read.c (data_buf::grow) (write_one_signatured_type)
- (recursively_write_psymbols) (debug_names::recursively_write_psymbols)
- (debug_names::write_one_signatured_type): Fix -D_GLIBCXX_DEBUG
- regression.
-
-diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 64329af71e..3c9b9dc188 100644
---- a/gdb/dwarf2read.c
-+++ b/gdb/dwarf2read.c
-@@ -25696,7 +25696,7 @@ private:
- gdb_byte *grow (size_t size)
- {
- m_vec.resize (m_vec.size () + size);
-- return &*m_vec.end () - size;
-+ return &*(m_vec.end () - size);
- }
-
- gdb::byte_vector m_vec;
-@@ -26130,12 +26130,14 @@ write_one_signatured_type (void **slot, void *d)
-
- write_psymbols (info->symtab,
- info->psyms_seen,
-- &info->objfile->global_psymbols[psymtab->globals_offset],
-+ (info->objfile->global_psymbols.data()
-+ + psymtab->globals_offset),
- psymtab->n_global_syms, info->cu_index,
- 0);
- write_psymbols (info->symtab,
- info->psyms_seen,
-- &info->objfile->static_psymbols[psymtab->statics_offset],
-+ (info->objfile->static_psymbols.data()
-+ + psymtab->statics_offset),
- psymtab->n_static_syms, info->cu_index,
- 1);
-
-@@ -26185,12 +26187,12 @@ recursively_write_psymbols (struct objfile *objfile,
-
- write_psymbols (symtab,
- psyms_seen,
-- &objfile->global_psymbols[psymtab->globals_offset],
-+ objfile->global_psymbols.data() + psymtab->globals_offset,
- psymtab->n_global_syms, cu_index,
- 0);
- write_psymbols (symtab,
- psyms_seen,
-- &objfile->static_psymbols[psymtab->statics_offset],
-+ objfile->static_psymbols.data() + psymtab->statics_offset,
- psymtab->n_static_syms, cu_index,
- 1);
- }
-@@ -26379,10 +26381,10 @@ public:
- psyms_seen, cu_index);
-
- write_psymbols (psyms_seen,
-- &objfile->global_psymbols[psymtab->globals_offset],
-+ objfile->global_psymbols.data() + psymtab->globals_offset,
- psymtab->n_global_syms, cu_index, false, unit_kind::cu);
- write_psymbols (psyms_seen,
-- &objfile->static_psymbols[psymtab->statics_offset],
-+ objfile->static_psymbols.data() + psymtab->statics_offset,
- psymtab->n_static_syms, cu_index, true, unit_kind::cu);
- }
-
-@@ -26738,11 +26740,13 @@ private:
- struct partial_symtab *psymtab = entry->per_cu.v.psymtab;
-
- write_psymbols (info->psyms_seen,
-- &info->objfile->global_psymbols[psymtab->globals_offset],
-+ (info->objfile->global_psymbols.data()
-+ + psymtab->globals_offset),
- psymtab->n_global_syms, info->cu_index, false,
- unit_kind::tu);
- write_psymbols (info->psyms_seen,
-- &info->objfile->static_psymbols[psymtab->statics_offset],
-+ (info->objfile->static_psymbols.data()
-+ + psymtab->statics_offset),
- psymtab->n_static_syms, info->cu_index, true,
- unit_kind::tu);
-
diff --git a/gdb-rhbz795424-bitpos-20of25.patch b/gdb-rhbz795424-bitpos-20of25.patch
index cae72d6..8aad2e2 100644
--- a/gdb-rhbz795424-bitpos-20of25.patch
+++ b/gdb-rhbz795424-bitpos-20of25.patch
@@ -473,20 +473,20 @@ Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bitpos-main.patch
diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c
-index 9385659f14..08e6f4d4fd 100644
+index 908b83a49a..dd69f50785 100644
--- a/gdb/aarch64-linux-nat.c
+++ b/gdb/aarch64-linux-nat.c
-@@ -708,7 +708,7 @@ aarch64_linux_remove_watchpoint (struct target_ops *self,
+@@ -743,7 +743,7 @@ aarch64_linux_nat_target::remove_watchpoint (CORE_ADDR addr, int len,
+ /* Implement the "region_ok_for_hw_watchpoint" target_ops method. */
- static int
- aarch64_linux_region_ok_for_hw_watchpoint (struct target_ops *self,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, LONGEST len)
+ int
+-aarch64_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
++aarch64_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
{
return aarch64_linux_region_ok_for_watchpoint (addr, len);
}
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
-index 6395184956..8d25fdb4c6 100644
+index eaf30585f5..1962e4f07e 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -78,7 +78,7 @@ static struct type *desc_bounds_type (struct type *);
@@ -550,9 +550,9 @@ index 6395184956..8d25fdb4c6 100644
+static int find_struct_field (const char *, struct type *, LONGEST,
+ struct type **, LONGEST *, int *, int *, int *);
- static struct value *ada_to_fixed_value_create (struct type *, CORE_ADDR,
- struct value *);
-@@ -237,7 +238,7 @@ static int ada_is_direct_array_type (struct type *);
+ static int ada_resolve_function (struct block_symbol *, int,
+ struct value **, int, const char *,
+@@ -234,7 +235,7 @@ static int ada_is_direct_array_type (struct type *);
static void ada_language_arch_info (struct gdbarch *,
struct language_arch_info *);
@@ -561,7 +561,7 @@ index 6395184956..8d25fdb4c6 100644
struct type *);
static struct value *assign_aggregate (struct value *, struct value *,
-@@ -700,7 +701,7 @@ coerce_unspec_val_to_type (struct value *val, struct type *type)
+@@ -697,7 +698,7 @@ coerce_unspec_val_to_type (struct value *val, struct type *type)
}
static const gdb_byte *
@@ -570,7 +570,7 @@ index 6395184956..8d25fdb4c6 100644
{
if (valaddr == NULL)
return NULL;
-@@ -709,7 +710,7 @@ cond_offset_host (const gdb_byte *valaddr, long offset)
+@@ -706,7 +707,7 @@ cond_offset_host (const gdb_byte *valaddr, long offset)
}
static CORE_ADDR
@@ -579,7 +579,7 @@ index 6395184956..8d25fdb4c6 100644
{
if (address == 0)
return 0;
-@@ -1747,7 +1748,7 @@ desc_bounds (struct value *arr)
+@@ -1743,7 +1744,7 @@ desc_bounds (struct value *arr)
/* If TYPE is the type of an array-descriptor (fat pointer), the bit
position of the field containing the address of the bounds data. */
@@ -588,7 +588,7 @@ index 6395184956..8d25fdb4c6 100644
fat_pntr_bounds_bitpos (struct type *type)
{
return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
-@@ -1813,7 +1814,7 @@ desc_data (struct value *arr)
+@@ -1809,7 +1810,7 @@ desc_data (struct value *arr)
/* If TYPE is the type of an array-descriptor (fat pointer), the bit
position of the field containing the address of the data. */
@@ -597,7 +597,7 @@ index 6395184956..8d25fdb4c6 100644
fat_pntr_data_bitpos (struct type *type)
{
return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
-@@ -1848,7 +1849,7 @@ desc_one_bound (struct value *bounds, int i, int which)
+@@ -1844,7 +1845,7 @@ desc_one_bound (struct value *bounds, int i, int which)
of the Ith lower bound stored in it, if WHICH is 0, and the Ith upper
bound, if WHICH is 1. The first bound is I=1. */
@@ -606,7 +606,7 @@ index 6395184956..8d25fdb4c6 100644
desc_bound_bitpos (struct type *type, int i, int which)
{
return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
-@@ -2038,7 +2039,7 @@ ada_type_of_array (struct value *arr, int bounds)
+@@ -2034,7 +2035,7 @@ ada_type_of_array (struct value *arr, int bounds)
zero, and does not need to be recomputed. */
if (lo < hi)
{
@@ -615,7 +615,7 @@ index 6395184956..8d25fdb4c6 100644
(hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
-@@ -2198,7 +2199,7 @@ decode_packed_array_bitsize (struct type *type)
+@@ -2194,7 +2195,7 @@ decode_packed_array_bitsize (struct type *type)
the length is arbitrary. */
static struct type *
@@ -624,7 +624,7 @@ index 6395184956..8d25fdb4c6 100644
{
struct type *new_elt_type;
struct type *new_type;
-@@ -2252,7 +2253,7 @@ decode_constrained_packed_array_type (struct type *type)
+@@ -2248,7 +2249,7 @@ decode_constrained_packed_array_type (struct type *type)
char *name;
const char *tail;
struct type *shadow_type;
@@ -633,7 +633,7 @@ index 6395184956..8d25fdb4c6 100644
if (!raw_name)
raw_name = ada_type_name (desc_base_type (type));
-@@ -2323,7 +2324,8 @@ decode_constrained_packed_array (struct value *arr)
+@@ -2319,7 +2320,8 @@ decode_constrained_packed_array (struct value *arr)
array with no wrapper. In order to interpret the value through
the (left-justified) packed array type we just built, we must
first left-justify it. */
@@ -643,7 +643,7 @@ index 6395184956..8d25fdb4c6 100644
ULONGEST mod;
mod = ada_modulus (value_type (arr)) - 1;
-@@ -2551,7 +2553,7 @@ ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
+@@ -2547,7 +2549,7 @@ ada_unpack_from_contents (const gdb_byte *src, int bit_offset, int bit_size,
struct value *
ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
@@ -652,7 +652,7 @@ index 6395184956..8d25fdb4c6 100644
struct type *type)
{
struct value *v;
-@@ -2621,7 +2623,7 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
+@@ -2617,7 +2619,7 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
if (obj != NULL)
{
@@ -661,7 +661,7 @@ index 6395184956..8d25fdb4c6 100644
set_value_component_location (v, obj);
set_value_bitpos (v, bit_offset + value_bitpos (obj));
-@@ -2667,7 +2669,7 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
+@@ -2663,7 +2665,7 @@ ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
not overlap. */
static void
move_bits (gdb_byte *target, int targ_offset, const gdb_byte *source,
@@ -670,7 +670,7 @@ index 6395184956..8d25fdb4c6 100644
{
unsigned int accum, mask;
int accum_bits, chunk_size;
-@@ -2757,7 +2759,7 @@ ada_value_assign (struct value *toval, struct value *fromval)
+@@ -2753,7 +2755,7 @@ ada_value_assign (struct value *toval, struct value *fromval)
{
int len = (value_bitpos (toval)
+ bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
@@ -679,7 +679,7 @@ index 6395184956..8d25fdb4c6 100644
gdb_byte *buffer = (gdb_byte *) alloca (len);
struct value *val;
CORE_ADDR to_addr = value_address (toval);
-@@ -2808,7 +2810,7 @@ value_assign_to_component (struct value *container, struct value *component,
+@@ -2804,7 +2806,7 @@ value_assign_to_component (struct value *container, struct value *component,
(LONGEST) (value_address (component) - value_address (container));
int bit_offset_in_container =
value_bitpos (component) - value_bitpos (container);
@@ -688,7 +688,7 @@ index 6395184956..8d25fdb4c6 100644
val = value_cast (value_type (component), val);
-@@ -4476,7 +4478,7 @@ ensure_lval (struct value *val)
+@@ -4468,7 +4470,7 @@ ensure_lval (struct value *val)
if (VALUE_LVAL (val) == not_lval
|| VALUE_LVAL (val) == lval_internalvar)
{
@@ -697,7 +697,7 @@ index 6395184956..8d25fdb4c6 100644
const CORE_ADDR addr =
value_as_long (value_allocate_space_in_inferior (len));
-@@ -4560,7 +4562,7 @@ static CORE_ADDR
+@@ -4552,7 +4554,7 @@ static CORE_ADDR
value_pointer (struct value *value, struct type *type)
{
struct gdbarch *gdbarch = get_type_arch (type);
@@ -706,7 +706,7 @@ index 6395184956..8d25fdb4c6 100644
gdb_byte *buf = (gdb_byte *) alloca (len);
CORE_ADDR addr;
-@@ -6718,7 +6720,7 @@ value_tag_from_contents_and_address (struct type *type,
+@@ -6685,7 +6687,7 @@ value_tag_from_contents_and_address (struct type *type,
const gdb_byte *valaddr,
CORE_ADDR address)
{
@@ -715,7 +715,7 @@ index 6395184956..8d25fdb4c6 100644
struct type *tag_type;
if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
-@@ -7211,7 +7213,7 @@ ada_in_variant (LONGEST val, struct type *type, int field_num)
+@@ -7178,7 +7180,7 @@ ada_in_variant (LONGEST val, struct type *type, int field_num)
only in that it can handle packed values of arbitrary type. */
static struct value *
@@ -724,7 +724,7 @@ index 6395184956..8d25fdb4c6 100644
struct type *arg_type)
{
struct type *type;
-@@ -7223,7 +7225,7 @@ ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
+@@ -7190,7 +7192,7 @@ ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0)
{
@@ -733,7 +733,7 @@ index 6395184956..8d25fdb4c6 100644
int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
return ada_value_primitive_packed_val (arg1, value_contents (arg1),
-@@ -7300,9 +7302,9 @@ ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
+@@ -7267,9 +7269,9 @@ ada_value_primitive_field (struct value *arg1, int offset, int fieldno,
Returns 1 if found, 0 otherwise. */
static int
@@ -745,7 +745,7 @@ index 6395184956..8d25fdb4c6 100644
int *index_p)
{
int i;
-@@ -7321,8 +7323,8 @@ find_struct_field (const char *name, struct type *type, int offset,
+@@ -7288,8 +7290,8 @@ find_struct_field (const char *name, struct type *type, int offset,
for (i = 0; i < TYPE_NFIELDS (type); i += 1)
{
@@ -756,7 +756,7 @@ index 6395184956..8d25fdb4c6 100644
const char *t_field_name = TYPE_FIELD_NAME (type, i);
if (t_field_name == NULL)
-@@ -7424,7 +7426,7 @@ num_visible_fields (struct type *type)
+@@ -7391,7 +7393,7 @@ num_visible_fields (struct type *type)
long explanation in find_struct_field's function documentation. */
static struct value *
@@ -765,7 +765,7 @@ index 6395184956..8d25fdb4c6 100644
struct type *type)
{
int i;
-@@ -7472,7 +7474,7 @@ ada_search_struct_field (const char *name, struct value *arg, int offset,
+@@ -7439,7 +7441,7 @@ ada_search_struct_field (const char *name, struct value *arg, int offset,
int j;
struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
i));
@@ -774,7 +774,7 @@ index 6395184956..8d25fdb4c6 100644
for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
{
-@@ -7504,8 +7506,8 @@ ada_search_struct_field (const char *name, struct value *arg, int offset,
+@@ -7471,8 +7473,8 @@ ada_search_struct_field (const char *name, struct value *arg, int offset,
return NULL;
}
@@ -785,7 +785,7 @@ index 6395184956..8d25fdb4c6 100644
/* Return field #INDEX in ARG, where the index is that returned by
-@@ -7514,7 +7516,7 @@ static struct value *ada_index_struct_field_1 (int *, struct value *,
+@@ -7481,7 +7483,7 @@ static struct value *ada_index_struct_field_1 (int *, struct value *,
* If found, return value, else return NULL. */
static struct value *
@@ -794,7 +794,7 @@ index 6395184956..8d25fdb4c6 100644
struct type *type)
{
return ada_index_struct_field_1 (&index, arg, offset, type);
-@@ -7526,7 +7528,7 @@ ada_index_struct_field (int index, struct value *arg, int offset,
+@@ -7493,7 +7495,7 @@ ada_index_struct_field (int index, struct value *arg, int offset,
* *INDEX_P. */
static struct value *
@@ -803,7 +803,7 @@ index 6395184956..8d25fdb4c6 100644
struct type *type)
{
int i;
-@@ -7616,7 +7618,8 @@ ada_value_struct_elt (struct value *arg, const char *name, int no_err)
+@@ -7583,7 +7585,8 @@ ada_value_struct_elt (struct value *arg, const char *name, int no_err)
v = ada_search_struct_field (name, arg, 0, t);
else
{
@@ -813,7 +813,7 @@ index 6395184956..8d25fdb4c6 100644
struct type *field_type;
CORE_ADDR address;
-@@ -7960,8 +7963,8 @@ ada_coerce_ref (struct value *val0)
+@@ -7927,8 +7930,8 @@ ada_coerce_ref (struct value *val0)
/* Return OFF rounded upward if necessary to a multiple of
ALIGNMENT (a power of 2). */
@@ -824,7 +824,7 @@ index 6395184956..8d25fdb4c6 100644
{
return (off + alignment - 1) & ~(alignment - 1);
}
-@@ -8355,10 +8358,9 @@ ada_template_to_fixed_record_type_1 (struct type *type,
+@@ -8322,10 +8325,9 @@ ada_template_to_fixed_record_type_1 (struct type *type,
struct value *mark = value_mark ();
struct value *dval;
struct type *rtype;
@@ -837,7 +837,7 @@ index 6395184956..8d25fdb4c6 100644
int f;
/* Compute the number of fields in this record type that are going
-@@ -8436,7 +8438,7 @@ ada_template_to_fixed_record_type_1 (struct type *type,
+@@ -8403,7 +8405,7 @@ ada_template_to_fixed_record_type_1 (struct type *type,
that follow this one. */
if (ada_is_aligner_type (field_type))
{
@@ -846,7 +846,7 @@ index 6395184956..8d25fdb4c6 100644
field_valaddr = cond_offset_host (field_valaddr, field_offset);
field_address = cond_offset_target (field_address, field_offset);
-@@ -8572,11 +8574,11 @@ ada_template_to_fixed_record_type_1 (struct type *type,
+@@ -8539,11 +8541,11 @@ ada_template_to_fixed_record_type_1 (struct type *type,
if (TYPE_LENGTH (type) <= 0)
{
if (TYPE_NAME (rtype))
@@ -862,7 +862,7 @@ index 6395184956..8d25fdb4c6 100644
}
else
{
-@@ -9042,7 +9044,8 @@ to_fixed_array_type (struct type *type0, struct value *dval,
+@@ -9009,7 +9011,8 @@ to_fixed_array_type (struct type *type0, struct value *dval,
type was a regular (non-packed) array type. As a result, the
bitsize of the array elements needs to be set again, and the array
length needs to be recomputed based on that bitsize. */
@@ -873,7 +873,7 @@ index 6395184956..8d25fdb4c6 100644
TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
diff --git a/gdb/ada-lang.h b/gdb/ada-lang.h
-index bac6c06e40..784e4935a3 100644
+index a4192fc8a5..5a84ca8a35 100644
--- a/gdb/ada-lang.h
+++ b/gdb/ada-lang.h
@@ -175,7 +175,7 @@ extern void ada_print_type (struct type *, const char *, struct ui_file *, int,
@@ -929,7 +929,7 @@ index 47ce897d01..9ef9b3c2f9 100644
case TYPE_CODE_ENUM:
if (show < 0)
diff --git a/gdb/ada-valprint.c b/gdb/ada-valprint.c
-index c5efdf1c1c..5912c6d016 100644
+index a4869198a4..da5a9327e1 100644
--- a/gdb/ada-valprint.c
+++ b/gdb/ada-valprint.c
@@ -34,11 +34,11 @@
@@ -946,7 +946,7 @@ index c5efdf1c1c..5912c6d016 100644
const struct language_defn *);
\f
-@@ -280,7 +280,7 @@ ada_emit_char (int c, struct type *type, struct ui_file *stream,
+@@ -316,7 +316,7 @@ ada_emit_char (int c, struct type *type, struct ui_file *stream,
of a character. */
static int
@@ -955,7 +955,7 @@ index c5efdf1c1c..5912c6d016 100644
enum bfd_endian byte_order)
{
if (type_len == 1)
-@@ -440,11 +440,11 @@ ada_print_scalar (struct type *type, LONGEST val, struct ui_file *stream)
+@@ -476,11 +476,11 @@ ada_print_scalar (struct type *type, LONGEST val, struct ui_file *stream)
static void
printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
@@ -969,7 +969,7 @@ index c5efdf1c1c..5912c6d016 100644
unsigned int things_printed = 0;
int in_quotes = 0;
int need_comma = 0;
-@@ -459,9 +459,9 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
+@@ -495,9 +495,9 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
{
/* Position of the character we are examining
to see whether it is repeated. */
@@ -981,7 +981,7 @@ index c5efdf1c1c..5912c6d016 100644
QUIT;
-@@ -492,7 +492,8 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
+@@ -528,7 +528,8 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
ada_emit_char (char_at (string, i, type_len, byte_order),
elttype, stream, '\'', type_len);
fputs_filtered ("'", stream);
@@ -991,7 +991,7 @@ index c5efdf1c1c..5912c6d016 100644
i = rep1 - 1;
things_printed += options->repeat_count_threshold;
need_comma = 1;
-@@ -520,7 +521,7 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
+@@ -556,7 +557,7 @@ printstr (struct ui_file *stream, struct type *elttype, const gdb_byte *string,
void
ada_printstr (struct ui_file *stream, struct type *type,
@@ -1000,7 +1000,7 @@ index c5efdf1c1c..5912c6d016 100644
const char *encoding, int force_ellipses,
const struct value_print_options *options)
{
-@@ -530,12 +531,12 @@ ada_printstr (struct ui_file *stream, struct type *type,
+@@ -566,12 +567,12 @@ ada_printstr (struct ui_file *stream, struct type *type,
static int
print_variant_part (struct type *type, int field_num,
@@ -1015,7 +1015,7 @@ index c5efdf1c1c..5912c6d016 100644
const struct language_defn *language)
{
struct type *var_type = TYPE_FIELD_TYPE (type, field_num);
-@@ -571,11 +572,11 @@ print_variant_part (struct type *type, int field_num,
+@@ -607,11 +608,11 @@ print_variant_part (struct type *type, int field_num,
static int
print_field_values (struct type *type, const gdb_byte *valaddr,
@@ -1029,7 +1029,7 @@ index c5efdf1c1c..5912c6d016 100644
const struct language_defn *language)
{
int i, len;
-@@ -641,7 +642,7 @@ print_field_values (struct type *type, const gdb_byte *valaddr,
+@@ -677,7 +678,7 @@ print_field_values (struct type *type, const gdb_byte *valaddr,
else
{
struct value *v;
@@ -1038,7 +1038,7 @@ index c5efdf1c1c..5912c6d016 100644
int bit_size = TYPE_FIELD_BITSIZE (type, i);
struct value_print_options opts;
-@@ -686,8 +687,8 @@ ada_val_print_string (struct type *type, const gdb_byte *valaddr,
+@@ -722,8 +723,8 @@ ada_val_print_string (struct type *type, const gdb_byte *valaddr,
{
enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
struct type *elttype = TYPE_TARGET_TYPE (type);
@@ -1049,7 +1049,7 @@ index c5efdf1c1c..5912c6d016 100644
/* We know that ELTTYPE cannot possibly be null, because we assume
that we're called only when TYPE is a string-like type.
-@@ -706,7 +707,7 @@ ada_val_print_string (struct type *type, const gdb_byte *valaddr,
+@@ -742,7 +743,7 @@ ada_val_print_string (struct type *type, const gdb_byte *valaddr,
elements up to it. */
if (options->stop_print_at_null)
{
@@ -1058,7 +1058,7 @@ index c5efdf1c1c..5912c6d016 100644
/* Look for a NULL char. */
for (temp_len = 0;
-@@ -1079,7 +1080,7 @@ ada_val_print_ref (struct type *type, const gdb_byte *valaddr,
+@@ -1115,7 +1116,7 @@ ada_val_print_ref (struct type *type, const gdb_byte *valaddr,
static void
ada_val_print_1 (struct type *type,
@@ -1067,7 +1067,7 @@ index c5efdf1c1c..5912c6d016 100644
struct ui_file *stream, int recurse,
struct value *original_value,
const struct value_print_options *options,
-@@ -1163,7 +1164,7 @@ ada_val_print_1 (struct type *type,
+@@ -1199,7 +1200,7 @@ ada_val_print_1 (struct type *type,
void
ada_val_print (struct type *type,
@@ -1077,10 +1077,10 @@ index c5efdf1c1c..5912c6d016 100644
struct value *val,
const struct value_print_options *options)
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
-index 7c70792b3f..651794a41f 100644
+index 186690af30..338a0f2c87 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
-@@ -727,7 +727,7 @@ amd64_return_value (struct gdbarch *gdbarch, struct value *function,
+@@ -729,7 +729,7 @@ amd64_return_value (struct gdbarch *gdbarch, struct value *function,
gdb_byte *readbuf, const gdb_byte *writebuf)
{
enum amd64_reg_class theclass[2];
@@ -1089,7 +1089,7 @@ index 7c70792b3f..651794a41f 100644
static int integer_regnum[] = { AMD64_RAX_REGNUM, AMD64_RDX_REGNUM };
static int sse_regnum[] = { AMD64_XMM0_REGNUM, AMD64_XMM1_REGNUM };
int integer_reg = 0;
-@@ -843,11 +843,13 @@ amd64_return_value (struct gdbarch *gdbarch, struct value *function,
+@@ -845,11 +845,13 @@ amd64_return_value (struct gdbarch *gdbarch, struct value *function,
gdb_assert (regnum != -1);
@@ -1106,7 +1106,7 @@ index 7c70792b3f..651794a41f 100644
}
diff --git a/gdb/annotate.c b/gdb/annotate.c
-index 0c70ff9553..6d169bfdae 100644
+index 495aa2dba6..45e486ae64 100644
--- a/gdb/annotate.c
+++ b/gdb/annotate.c
@@ -531,21 +531,21 @@ annotate_frame_end (void)
@@ -1151,7 +1151,7 @@ index 1b9d9dd034..d79ccc56ed 100644
extern void annotate_elt (void);
extern void annotate_array_section_end (void);
diff --git a/gdb/arch-utils.c b/gdb/arch-utils.c
-index 693d7e3dc8..b701010019 100644
+index e3cce491ee..d3117bdaa1 100644
--- a/gdb/arch-utils.c
+++ b/gdb/arch-utils.c
@@ -228,7 +228,7 @@ legacy_virtual_frame_pointer (struct gdbarch *gdbarch,
@@ -1164,7 +1164,7 @@ index 693d7e3dc8..b701010019 100644
const struct floatformat **format = NULL;
diff --git a/gdb/arch-utils.h b/gdb/arch-utils.h
-index b51a4ec1ee..2d344e7b93 100644
+index 77ee9af2bf..e0bd701d5e 100644
--- a/gdb/arch-utils.h
+++ b/gdb/arch-utils.h
@@ -131,7 +131,7 @@ extern gdbarch_virtual_frame_pointer_ftype legacy_virtual_frame_pointer;
@@ -1177,15 +1177,15 @@ index b51a4ec1ee..2d344e7b93 100644
extern CORE_ADDR generic_skip_trampoline_code (struct frame_info *frame,
CORE_ADDR pc);
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
-index 484bd4e4c4..3b7aa40db8 100644
+index 30030b4eb0..8e2abfb70c 100644
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
-@@ -1067,7 +1067,7 @@ arm_linux_remove_hw_breakpoint (struct target_ops *self,
+@@ -1104,7 +1104,7 @@ arm_linux_nat_target::remove_hw_breakpoint (struct gdbarch *gdbarch,
+ /* Are we able to use a hardware watchpoint for the LEN bytes starting at
ADDR? */
- static int
- arm_linux_region_ok_for_hw_watchpoint (struct target_ops *self,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, LONGEST len)
+ int
+-arm_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
++arm_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
{
const struct arm_linux_hwbp_cap *cap = arm_linux_get_hwbp_cap ();
CORE_ADDR max_wp_length, aligned_addr;
@@ -1316,10 +1316,10 @@ index 6066b77076..d1c9d35030 100644
/* Append a goto op to EXPR. OP is the actual op (must be aop_goto or
aop_if_goto). We assume we don't know the target offset yet,
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
-index 6a0c15b239..05d7ed3ea1 100644
+index 0106ce8dd5..fe3a2d1350 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
-@@ -2064,9 +2064,9 @@ should_be_inserted (struct bp_location *bl)
+@@ -2053,9 +2053,9 @@ should_be_inserted (struct bp_location *bl)
{
fprintf_unfiltered (gdb_stdlog,
"infrun: stepping past non-steppable watchpoint. "
@@ -1331,7 +1331,7 @@ index 6a0c15b239..05d7ed3ea1 100644
}
return 0;
}
-@@ -6851,7 +6851,7 @@ breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
+@@ -6814,7 +6814,7 @@ breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
static int
breakpoint_address_match_range (const address_space *aspace1,
CORE_ADDR addr1,
@@ -1340,7 +1340,7 @@ index 6a0c15b239..05d7ed3ea1 100644
CORE_ADDR addr2)
{
return ((gdbarch_has_global_breakpoints (target_gdbarch ())
-@@ -10978,7 +10978,7 @@ can_use_hardware_watchpoint (struct value *v)
+@@ -10906,7 +10906,7 @@ can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
&& TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
{
CORE_ADDR vaddr = value_address (v);
@@ -1350,10 +1350,10 @@ index 6a0c15b239..05d7ed3ea1 100644
len = (target_exact_watchpoints
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
-index 3fddbaa713..08463d4e5b 100644
+index 407cc531db..bc833e57eb 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
-@@ -252,7 +252,7 @@ struct bp_target_info
+@@ -251,7 +251,7 @@ struct bp_target_info
/* If this is a ranged breakpoint, then this field contains the
length of the range that will be watched for execution. */
@@ -1362,7 +1362,7 @@ index 3fddbaa713..08463d4e5b 100644
/* If the breakpoint lives in memory and reading that memory would
give back the breakpoint, instead of the original contents, then
-@@ -429,7 +429,7 @@ public:
+@@ -428,7 +428,7 @@ public:
/* For hardware watchpoints, the size of the memory region being
watched. For hardware ranged breakpoints, the size of the
breakpoint range. */
@@ -1372,7 +1372,7 @@ index 3fddbaa713..08463d4e5b 100644
/* Type of hardware watchpoint. */
target_hw_bp_type watchpoint_type {};
diff --git a/gdb/c-lang.c b/gdb/c-lang.c
-index a0b553e741..0616208d1d 100644
+index 15e633f8c8..2bbfd9b721 100644
--- a/gdb/c-lang.c
+++ b/gdb/c-lang.c
@@ -184,7 +184,7 @@ c_printchar (int c, struct type *type, struct ui_file *stream)
@@ -1425,10 +1425,10 @@ index 18dedcc1fa..8afd3ee784 100644
int force_ellipses,
const struct value_print_options *options);
diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
-index 2e9ed1bc28..256b9c19e6 100644
+index cb793f0770..fad41891e2 100644
--- a/gdb/c-typeprint.c
+++ b/gdb/c-typeprint.c
-@@ -933,7 +933,8 @@ c_print_type_union_field_offset (struct type *type, unsigned int field_idx,
+@@ -934,7 +934,8 @@ c_print_type_union_field_offset (struct type *type, unsigned int field_idx,
{
struct type *ftype = check_typedef (TYPE_FIELD_TYPE (type, field_idx));
@@ -1437,8 +1437,8 @@ index 2e9ed1bc28..256b9c19e6 100644
+ pulongest (TYPE_LENGTH (ftype)));
}
- /* Print information about field at index FIELD_IDX of the struct type
-@@ -1507,8 +1508,8 @@ c_type_print_base_struct_union (struct type *type, struct ui_file *stream,
+ /* Helper function for ptype/o implementation that prints information
+@@ -1530,8 +1531,8 @@ c_type_print_base_struct_union (struct type *type, struct ui_file *stream,
print_spaces_filtered_with_print_options (level + 4,
stream,
flags);
@@ -1492,7 +1492,7 @@ index 3904fab260..a3b8e2551b 100644
struct value *original_value,
const struct value_print_options *options)
diff --git a/gdb/compile/compile-c-support.c b/gdb/compile/compile-c-support.c
-index 006d3f811c..accd9a54b2 100644
+index e694648288..43ed5a375a 100644
--- a/gdb/compile/compile-c-support.c
+++ b/gdb/compile/compile-c-support.c
@@ -307,11 +307,11 @@ generate_register_struct (struct ui_file *stream, struct gdbarch *gdbarch,
@@ -1585,7 +1585,7 @@ index 8f2e4d9a66..86490a2c46 100644
struct type *type,
struct ui_file *stream);
diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c
-index 486653f13f..db3ff338d1 100644
+index e019a60791..25f1512857 100644
--- a/gdb/cp-valprint.c
+++ b/gdb/cp-valprint.c
@@ -335,7 +335,7 @@ cp_print_value_fields (struct type *type, struct type *real_type,
@@ -1611,7 +1611,7 @@ index 391ea8665b..a8e72ae506 100644
struct value *val,
const struct value_print_options *options);
diff --git a/gdb/d-valprint.c b/gdb/d-valprint.c
-index e2d8431362..5143f75c06 100644
+index 579d3c8c91..9dd430b2bc 100644
--- a/gdb/d-valprint.c
+++ b/gdb/d-valprint.c
@@ -73,7 +73,7 @@ dynamic_array_type (struct type *type,
@@ -1624,7 +1624,7 @@ index e2d8431362..5143f75c06 100644
struct value *val,
const struct value_print_options *options)
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
-index 5486e4dc12..1fe45f6069 100644
+index cfca1c2751..d91d69155d 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -1817,7 +1817,7 @@ rw_pieced_value (struct value *v, struct value *from)
@@ -1688,10 +1688,10 @@ index 5486e4dc12..1fe45f6069 100644
if (subobj_byte_offset + len > max)
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 6ebe00f542..fbaa0af64f 100644
+index d69f154af3..420c3e6bd5 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
-@@ -2268,12 +2268,12 @@ dwarf2_complex_location_expr_complaint (void)
+@@ -2024,12 +2024,12 @@ dwarf2_complex_location_expr_complaint (void)
}
static void
@@ -1708,7 +1708,7 @@ index 6ebe00f542..fbaa0af64f 100644
}
static void
-@@ -15084,8 +15084,8 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
+@@ -15004,8 +15004,8 @@ dwarf2_add_field (struct field_info *fip, struct die_info *die,
object, and then subtract off the number of bits of
the field itself. The result is the bit offset of
the LSB of the field. */
@@ -1720,10 +1720,10 @@ index 6ebe00f542..fbaa0af64f 100644
attr = dwarf2_attr (die, DW_AT_byte_size, cu);
if (attr)
diff --git a/gdb/eval.c b/gdb/eval.c
-index d9bca2791d..b42f14a406 100644
+index 50dde3ed4f..44259cd964 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
-@@ -302,7 +302,8 @@ evaluate_struct_tuple (struct value *struct_val,
+@@ -295,7 +295,8 @@ evaluate_struct_tuple (struct value *struct_val,
while (--nargs >= 0)
{
struct value *val = NULL;
@@ -1733,7 +1733,7 @@ index d9bca2791d..b42f14a406 100644
bfd_byte *addr;
fieldno++;
-@@ -363,7 +364,7 @@ init_array_element (struct value *array, struct value *element,
+@@ -356,7 +357,7 @@ init_array_element (struct value *array, struct value *element,
enum noside noside, LONGEST low_bound, LONGEST high_bound)
{
LONGEST index;
@@ -1742,7 +1742,7 @@ index d9bca2791d..b42f14a406 100644
if (exp->elts[*pos].opcode == BINOP_COMMA)
{
-@@ -807,11 +808,11 @@ binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
+@@ -800,11 +801,11 @@ binop_promote (const struct language_defn *language, struct gdbarch *gdbarch,
/* FIXME: Also mixed integral/booleans, with result an integer. */
{
const struct builtin_type *builtin = builtin_type (gdbarch);
@@ -1757,7 +1757,7 @@ index d9bca2791d..b42f14a406 100644
int unsigned_operation;
/* Determine type length and signedness after promotion for
-@@ -1548,7 +1549,7 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -1546,7 +1547,7 @@ evaluate_subexp_standard (struct type *expect_type,
struct value **argvec;
int code;
int ix;
@@ -1766,7 +1766,7 @@ index d9bca2791d..b42f14a406 100644
struct type **arg_types;
pc = (*pos)++;
-@@ -1731,7 +1732,7 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -1729,7 +1730,7 @@ evaluate_subexp_standard (struct type *expect_type,
struct type *range_type = TYPE_INDEX_TYPE (type);
struct type *element_type = TYPE_TARGET_TYPE (type);
struct value *array = allocate_value (expect_type);
@@ -1776,7 +1776,7 @@ index d9bca2791d..b42f14a406 100644
if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
diff --git a/gdb/f-lang.c b/gdb/f-lang.c
-index 74f5622b6e..55fb97ceab 100644
+index 81922f73fb..9d19c114e2 100644
--- a/gdb/f-lang.c
+++ b/gdb/f-lang.c
@@ -101,7 +101,7 @@ f_printchar (int c, struct type *type, struct ui_file *stream)
@@ -1862,7 +1862,7 @@ index b4067a8460..0772f359f0 100644
struct value *original_value,
const struct value_print_options *options)
diff --git a/gdb/findvar.c b/gdb/findvar.c
-index ee8f57159d..fb4dfeca17 100644
+index 8ad5e25cb2..fcd0a0cdc9 100644
--- a/gdb/findvar.c
+++ b/gdb/findvar.c
@@ -821,7 +821,7 @@ struct value *
@@ -1893,10 +1893,10 @@ index ee8f57159d..fb4dfeca17 100644
/* If the register length is larger than the number of bytes
remaining to copy, then only copy the appropriate bytes. */
diff --git a/gdb/frame.c b/gdb/frame.c
-index 1384ecca4f..db52eb5780 100644
+index 07fa2bc77d..b5a2c50ec9 100644
--- a/gdb/frame.c
+++ b/gdb/frame.c
-@@ -1386,7 +1386,7 @@ deprecated_frame_register_read (struct frame_info *frame, int regnum,
+@@ -1382,7 +1382,7 @@ deprecated_frame_register_read (struct frame_info *frame, int regnum,
int
get_frame_register_bytes (struct frame_info *frame, int regnum,
@@ -1905,7 +1905,7 @@ index 1384ecca4f..db52eb5780 100644
int *optimizedp, int *unavailablep)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
-@@ -1415,7 +1415,7 @@ get_frame_register_bytes (struct frame_info *frame, int regnum,
+@@ -1411,7 +1411,7 @@ get_frame_register_bytes (struct frame_info *frame, int regnum,
}
if (len > maxsize)
error (_("Bad debug information detected: "
@@ -1915,7 +1915,7 @@ index 1384ecca4f..db52eb5780 100644
/* Copy the data. */
while (len > 0)
diff --git a/gdb/frame.h b/gdb/frame.h
-index 8293a49ec2..a176873865 100644
+index d5800b78c2..ec70d94b58 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -601,7 +601,7 @@ extern void put_frame_register (struct frame_info *frame, int regnum,
@@ -1928,10 +1928,10 @@ index 8293a49ec2..a176873865 100644
int *optimizedp, int *unavailablep);
diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c
-index fe3c12e295..f0cfb053b0 100644
+index c430ebe52a..6196bf8541 100644
--- a/gdb/gdbarch.c
+++ b/gdb/gdbarch.c
-@@ -1811,7 +1811,7 @@ set_gdbarch_wchar_signed (struct gdbarch *gdbarch,
+@@ -1795,7 +1795,7 @@ set_gdbarch_wchar_signed (struct gdbarch *gdbarch,
}
const struct floatformat **
@@ -1941,10 +1941,10 @@ index fe3c12e295..f0cfb053b0 100644
gdb_assert (gdbarch != NULL);
gdb_assert (gdbarch->floatformat_for_type != NULL);
diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h
-index 5664c4dc58..62b83974a1 100644
+index 09edcd5eb2..ccb3cf87b8 100644
--- a/gdb/gdbarch.h
+++ b/gdb/gdbarch.h
-@@ -198,8 +198,8 @@ extern void set_gdbarch_wchar_signed (struct gdbarch *gdbarch, int wchar_signed)
+@@ -193,8 +193,8 @@ extern void set_gdbarch_wchar_signed (struct gdbarch *gdbarch, int wchar_signed)
NAME, if non-NULL, is the type name, which may be used to distinguish
different target formats of the same length. */
@@ -1956,10 +1956,10 @@ index 5664c4dc58..62b83974a1 100644
/* For most targets, a pointer on the target and its representation as an
diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh
-index a929e13b81..cc1def6a3d 100755
+index 7330430937..9258e61843 100755
--- a/gdb/gdbarch.sh
+++ b/gdb/gdbarch.sh
-@@ -388,7 +388,7 @@ v;int;wchar_signed;;;1;-1;1
+@@ -385,7 +385,7 @@ v;int;wchar_signed;;;1;-1;1
# Returns the floating-point format to be used for values of length LENGTH.
# NAME, if non-NULL, is the type name, which may be used to distinguish
# different target formats of the same length.
@@ -1969,10 +1969,10 @@ index a929e13b81..cc1def6a3d 100755
# For most targets, a pointer on the target and its representation as an
# address in GDB have the same size and "look the same". For such a
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
-index cb5524023f..7c2ae72cfc 100644
+index 2aa5253100..06f48d3629 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
-@@ -2920,7 +2920,7 @@ floatformat_from_type (const struct type *type)
+@@ -2925,7 +2925,7 @@ floatformat_from_type (const struct type *type)
least as long as OBJFILE. */
struct type *
@@ -1981,7 +1981,7 @@ index cb5524023f..7c2ae72cfc 100644
const char *name)
{
struct type *type;
-@@ -3252,8 +3252,8 @@ is_public_ancestor (struct type *base, struct type *dclass)
+@@ -3379,8 +3379,8 @@ is_public_ancestor (struct type *base, struct type *dclass)
static int
is_unique_ancestor_worker (struct type *base, struct type *dclass,
@@ -1992,7 +1992,7 @@ index cb5524023f..7c2ae72cfc 100644
CORE_ADDR address, struct value *val)
{
int i, count = 0;
-@@ -3264,7 +3264,7 @@ is_unique_ancestor_worker (struct type *base, struct type *dclass,
+@@ -3391,7 +3391,7 @@ is_unique_ancestor_worker (struct type *base, struct type *dclass,
for (i = 0; i < TYPE_N_BASECLASSES (dclass) && count < 2; ++i)
{
struct type *iter;
@@ -2001,7 +2001,7 @@ index cb5524023f..7c2ae72cfc 100644
iter = check_typedef (TYPE_BASECLASS (dclass, i));
-@@ -3305,7 +3305,7 @@ is_unique_ancestor_worker (struct type *base, struct type *dclass,
+@@ -3432,7 +3432,7 @@ is_unique_ancestor_worker (struct type *base, struct type *dclass,
int
is_unique_ancestor (struct type *base, struct value *val)
{
@@ -2010,7 +2010,7 @@ index cb5524023f..7c2ae72cfc 100644
return is_unique_ancestor_worker (base, value_type (val), &offset,
value_contents_for_printing (val),
-@@ -4550,7 +4550,7 @@ recursive_dump_type (struct type *type, int spaces)
+@@ -4677,7 +4677,7 @@ recursive_dump_type (struct type *type, int spaces)
break;
}
puts_filtered ("\n");
@@ -2019,7 +2019,7 @@ index cb5524023f..7c2ae72cfc 100644
if (TYPE_OBJFILE_OWNED (type))
{
printfi_filtered (spaces, "objfile ");
-@@ -4991,7 +4991,7 @@ copy_type (const struct type *type)
+@@ -5122,7 +5122,7 @@ copy_type (const struct type *type)
struct type *
arch_type (struct gdbarch *gdbarch,
@@ -2029,10 +2029,10 @@ index cb5524023f..7c2ae72cfc 100644
struct type *type;
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
-index 5597038357..f6e0c3e8c1 100644
+index cf1346161d..330e14d831 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
-@@ -805,7 +805,7 @@ struct type
+@@ -876,7 +876,7 @@ struct type
type_length_units function should be used in order to get the length
expressed in target addressable memory units. */
@@ -2041,7 +2041,7 @@ index 5597038357..f6e0c3e8c1 100644
/* * Core type, shared by a group of qualified types. */
-@@ -1707,7 +1707,7 @@ extern unsigned int type_length_units (struct type *type);
+@@ -1798,7 +1798,7 @@ extern unsigned int type_length_units (struct type *type);
/* * Helper function to construct objfile-owned types. */
@@ -2050,7 +2050,7 @@ index 5597038357..f6e0c3e8c1 100644
const char *);
extern struct type *init_integer_type (struct objfile *, int, int,
const char *);
-@@ -1724,7 +1724,7 @@ extern struct type *init_pointer_type (struct objfile *, int, const char *,
+@@ -1815,7 +1815,7 @@ extern struct type *init_pointer_type (struct objfile *, int, const char *,
struct type *);
/* Helper functions to construct architecture-owned types. */
@@ -2101,7 +2101,7 @@ index 8a64157c55..ef1f851a91 100644
embedded_offset, address, val);
diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c
-index 0965846ce6..d443c29443 100644
+index ddbec13891..9334837c89 100644
--- a/gdb/gnu-v3-abi.c
+++ b/gdb/gnu-v3-abi.c
@@ -109,7 +109,7 @@ build_gdb_vtable_type (struct gdbarch *arch)
@@ -2122,7 +2122,7 @@ index 0965846ce6..d443c29443 100644
vtable_address_point_offset (struct gdbarch *gdbarch)
{
struct type *vtable_type
-@@ -408,7 +408,7 @@ gnuv3_get_virtual_fn (struct gdbarch *gdbarch, struct value *container,
+@@ -409,7 +409,7 @@ gnuv3_get_virtual_fn (struct gdbarch *gdbarch, struct value *container,
static struct value *
gnuv3_virtual_fn_field (struct value **value_p,
struct fn_field *f, int j,
@@ -2131,7 +2131,7 @@ index 0965846ce6..d443c29443 100644
{
struct type *values_type = check_typedef (value_type (*value_p));
struct gdbarch *gdbarch;
-@@ -438,7 +438,7 @@ gnuv3_virtual_fn_field (struct value **value_p,
+@@ -439,7 +439,7 @@ gnuv3_virtual_fn_field (struct value **value_p,
-1 is returned on error. */
@@ -2140,7 +2140,7 @@ index 0965846ce6..d443c29443 100644
gnuv3_baseclass_offset (struct type *type, int index,
const bfd_byte *valaddr, LONGEST embedded_offset,
CORE_ADDR address, const struct value *val)
-@@ -447,7 +447,7 @@ gnuv3_baseclass_offset (struct type *type, int index,
+@@ -448,7 +448,7 @@ gnuv3_baseclass_offset (struct type *type, int index,
struct type *ptr_type;
struct value *vtable;
struct value *vbase_array;
@@ -2149,7 +2149,7 @@ index 0965846ce6..d443c29443 100644
/* Determine architecture. */
gdbarch = get_type_arch (type);
-@@ -470,7 +470,7 @@ gnuv3_baseclass_offset (struct type *type, int index,
+@@ -471,7 +471,7 @@ gnuv3_baseclass_offset (struct type *type, int index,
cur_base_offset = cur_base_offset + vtable_address_point_offset (gdbarch);
if ((- cur_base_offset) % TYPE_LENGTH (ptr_type) != 0)
error (_("Misaligned vbase offset."));
@@ -2158,7 +2158,7 @@ index 0965846ce6..d443c29443 100644
vtable = gnuv3_get_vtable (gdbarch, type, address + embedded_offset);
gdb_assert (vtable != NULL);
-@@ -514,7 +514,7 @@ gnuv3_find_method_in (struct type *domain, CORE_ADDR voffset,
+@@ -515,7 +515,7 @@ gnuv3_find_method_in (struct type *domain, CORE_ADDR voffset,
we're out of luck. */
for (i = 0; i < TYPE_N_BASECLASSES (domain); i++)
{
@@ -2194,10 +2194,10 @@ index eccf9a8181..4cca802e59 100644
struct value *val,
const struct value_print_options *options)
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
-index d1b461b538..af4942ab2e 100644
+index a0e872c01f..d67e2e40c5 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
-@@ -8175,7 +8175,7 @@ i386_fast_tracepoint_valid_at (struct gdbarch *gdbarch, CORE_ADDR addr,
+@@ -8177,7 +8177,7 @@ i386_fast_tracepoint_valid_at (struct gdbarch *gdbarch, CORE_ADDR addr,
const struct floatformat **
i386_floatformat_for_type (struct gdbarch *gdbarch,
@@ -2207,7 +2207,7 @@ index d1b461b538..af4942ab2e 100644
if (len == 128 && name)
if (strcmp (name, "__float128") == 0
diff --git a/gdb/language.c b/gdb/language.c
-index 0d8604b826..7dca669b40 100644
+index 22199e0c0d..5b7c4871b2 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -773,7 +773,7 @@ unk_lang_printchar (int c, struct type *type, struct ui_file *stream)
@@ -2229,7 +2229,7 @@ index 0d8604b826..7dca669b40 100644
struct value *val,
const struct value_print_options *options)
diff --git a/gdb/language.h b/gdb/language.h
-index 06b42aeb5c..9e794f13a3 100644
+index 029de4a7ab..2c0308fa93 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -188,7 +188,7 @@ struct language_defn
@@ -2251,7 +2251,7 @@ index 06b42aeb5c..9e794f13a3 100644
struct value *val,
const struct value_print_options *options);
diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c
-index 11ccab30c8..9081d01987 100644
+index 6e6434b846..9595d379f3 100644
--- a/gdb/m2-lang.c
+++ b/gdb/m2-lang.c
@@ -103,10 +103,10 @@ m2_printchar (int c, struct type *type, struct ui_file *stream)
@@ -2441,20 +2441,20 @@ index 46088ade53..038cd2f92c 100644
/* Returns true if ADDR is in RANGE. */
diff --git a/gdb/mips-linux-nat.c b/gdb/mips-linux-nat.c
-index 68fd1f83c3..ebb59dcc90 100644
+index a9f0b79076..36887b35cb 100644
--- a/gdb/mips-linux-nat.c
+++ b/gdb/mips-linux-nat.c
-@@ -579,7 +579,7 @@ mips_linux_stopped_data_address (struct target_ops *t, CORE_ADDR *paddr)
+@@ -622,7 +622,7 @@ mips_linux_nat_target::stopped_data_address (CORE_ADDR *paddr)
+ the specified region can be covered by the watch registers. */
- static int
- mips_linux_region_ok_for_hw_watchpoint (struct target_ops *self,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, LONGEST len)
+ int
+-mips_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
++mips_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
{
struct pt_watch_regs dummy_regs;
int i;
diff --git a/gdb/nat/x86-dregs.c b/gdb/nat/x86-dregs.c
-index c816473628..05f3868759 100644
+index 7604a36342..1ea4a3b107 100644
--- a/gdb/nat/x86-dregs.c
+++ b/gdb/nat/x86-dregs.c
@@ -380,7 +380,7 @@ x86_remove_aligned_watchpoint (struct x86_debug_reg_state *state,
@@ -2476,7 +2476,7 @@ index c816473628..05f3868759 100644
int nregs;
diff --git a/gdb/nat/x86-dregs.h b/gdb/nat/x86-dregs.h
-index dd6242eda9..6508af93b3 100644
+index e86e83aea0..4ce1a979a3 100644
--- a/gdb/nat/x86-dregs.h
+++ b/gdb/nat/x86-dregs.h
@@ -116,7 +116,7 @@ extern int x86_dr_remove_watchpoint (struct x86_debug_reg_state *state,
@@ -2489,7 +2489,7 @@ index dd6242eda9..6508af93b3 100644
/* If the inferior has some break/watchpoint that triggered, set the
address associated with that break/watchpoint and return true.
diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c
-index 268c3c5c37..91f4d8412a 100644
+index 8af63f7620..62b8d4777b 100644
--- a/gdb/opencl-lang.c
+++ b/gdb/opencl-lang.c
@@ -76,11 +76,11 @@ builtin_opencl_type (struct gdbarch *gdbarch)
@@ -2561,7 +2561,7 @@ index 268c3c5c37..91f4d8412a 100644
if (!value_bits_synthetic_pointer (c->val,
c->indices[i] * elsize + comp_offset,
diff --git a/gdb/p-lang.c b/gdb/p-lang.c
-index 03db2df2e5..9c9810e226 100644
+index 3ff7f5694f..b3684d93fa 100644
--- a/gdb/p-lang.c
+++ b/gdb/p-lang.c
@@ -93,8 +93,8 @@ pascal_main_name (void)
@@ -2665,23 +2665,23 @@ index 933dbfb6c4..e5c1b07040 100644
CORE_ADDR addr;
int want_space = 0;
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
-index 8418e4d35d..4a82434c0d 100644
+index 1423339339..b70f168106 100644
--- a/gdb/ppc-linux-nat.c
+++ b/gdb/ppc-linux-nat.c
-@@ -1445,7 +1445,7 @@ ppc_linux_can_use_hw_breakpoint (struct target_ops *self,
+@@ -1496,7 +1496,7 @@ ppc_linux_nat_target::can_use_hw_breakpoint (enum bptype type, int cnt, int ot)
+ }
- static int
- ppc_linux_region_ok_for_hw_watchpoint (struct target_ops *self,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, LONGEST len)
+ int
+-ppc_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
++ppc_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
{
/* Handle sub-8-byte quantities. */
if (len <= 0)
diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c
-index 286c02a26d..7242c7f89a 100644
+index 6d3a64c4f0..3ace6096dd 100644
--- a/gdb/ppc-linux-tdep.c
+++ b/gdb/ppc-linux-tdep.c
-@@ -1620,7 +1620,7 @@ ppc_init_linux_record_tdep (struct linux_record_tdep *record_tdep,
+@@ -1637,7 +1637,7 @@ ppc_init_linux_record_tdep (struct linux_record_tdep *record_tdep,
const struct floatformat **
ppc_floatformat_for_type (struct gdbarch *gdbarch,
@@ -2691,10 +2691,10 @@ index 286c02a26d..7242c7f89a 100644
if (len == 128 && name)
{
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
-index ad80b1bebf..a126a0f8b9 100644
+index c921022a59..f34b1535af 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
-@@ -277,7 +277,7 @@ print_formatted (struct value *val, int size,
+@@ -275,7 +275,7 @@ print_formatted (struct value *val, int size,
struct ui_file *stream)
{
struct type *type = check_typedef (value_type (val));
@@ -2703,7 +2703,7 @@ index ad80b1bebf..a126a0f8b9 100644
if (VALUE_LVAL (val) == lval_memory)
next_address = value_address (val) + len;
-@@ -353,7 +353,7 @@ print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
+@@ -351,7 +351,7 @@ print_scalar_formatted (const gdb_byte *valaddr, struct type *type,
int size, struct ui_file *stream)
{
struct gdbarch *gdbarch = get_type_arch (type);
@@ -2713,32 +2713,41 @@ index ad80b1bebf..a126a0f8b9 100644
/* String printing should go through val_print_scalar_formatted. */
diff --git a/gdb/procfs.c b/gdb/procfs.c
-index a939dedb00..887f1201fe 100644
+index 70619f1c15..ca7cc221f9 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
-@@ -3399,7 +3399,7 @@ procfs_remove_watchpoint (struct target_ops *self,
+@@ -3358,7 +3358,7 @@ procfs_target::remove_watchpoint (CORE_ADDR addr, int len,
+ }
- static int
- procfs_region_ok_for_hw_watchpoint (struct target_ops *self,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, LONGEST len)
+ int
+-procfs_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
++procfs_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
{
/* The man page for proc(4) on Solaris 2.6 and up says that the
system can support "thousands" of hardware watchpoints, but gives
diff --git a/gdb/regcache.c b/gdb/regcache.c
-index fb6a904dec..3694616069 100644
+index 83bcbd22a3..f810752102 100644
--- a/gdb/regcache.c
+++ b/gdb/regcache.c
-@@ -897,7 +897,7 @@ typedef void (regcache_write_ftype) (struct regcache *regcache, int regnum,
- const void *buf);
+@@ -846,7 +846,7 @@ regcache::cooked_write (int regnum, const gdb_byte *buf)
+ operation. */
enum register_status
--regcache::xfer_part (int regnum, int offset, int len, void *in,
-+regcache::xfer_part (int regnum, LONGEST offset, LONGEST len, void *in,
+-readable_regcache::read_part (int regnum, int offset, int len, void *in,
++readable_regcache::read_part (int regnum, LONGEST offset, LONGEST len, void *in,
+ bool is_raw)
+ {
+ struct gdbarch *gdbarch = arch ();
+@@ -875,7 +875,7 @@ readable_regcache::read_part (int regnum, int offset, int len, void *in,
+ }
+
+ enum register_status
+-regcache::write_part (int regnum, int offset, int len,
++regcache::write_part (int regnum, LONGEST offset, LONGEST len,
const void *out, bool is_raw)
{
struct gdbarch *gdbarch = arch ();
-@@ -941,13 +941,13 @@ regcache::xfer_part (int regnum, int offset, int len, void *in,
+@@ -913,13 +913,14 @@ regcache::write_part (int regnum, int offset, int len,
enum register_status
regcache_raw_read_part (struct regcache *regcache, int regnum,
@@ -2749,12 +2758,13 @@ index fb6a904dec..3694616069 100644
}
enum register_status
--regcache::raw_read_part (int regnum, int offset, int len, gdb_byte *buf)
-+regcache::raw_read_part (int regnum, int offset, LONGEST len, gdb_byte *buf)
+-readable_regcache::raw_read_part (int regnum, int offset, int len, gdb_byte *buf)
++readable_regcache::raw_read_part (int regnum, int offset, LONGEST len,
++ gdb_byte *buf)
{
assert_regnum (regnum);
- return xfer_part (regnum, offset, len, buf, NULL, true);
-@@ -955,13 +955,13 @@ regcache::raw_read_part (int regnum, int offset, int len, gdb_byte *buf)
+ return read_part (regnum, offset, len, buf, true);
+@@ -927,13 +928,13 @@ readable_regcache::raw_read_part (int regnum, int offset, int len, gdb_byte *buf
void
regcache_raw_write_part (struct regcache *regcache, int regnum,
@@ -2770,7 +2780,7 @@ index fb6a904dec..3694616069 100644
const gdb_byte *buf)
{
assert_regnum (regnum);
-@@ -970,14 +970,15 @@ regcache::raw_write_part (int regnum, int offset, int len,
+@@ -942,14 +943,14 @@ regcache::raw_write_part (int regnum, int offset, int len,
enum register_status
regcache_cooked_read_part (struct regcache *regcache, int regnum,
@@ -2782,13 +2792,12 @@ index fb6a904dec..3694616069 100644
enum register_status
--regcache::cooked_read_part (int regnum, int offset, int len, gdb_byte *buf)
-+regcache::cooked_read_part (int regnum, LONGEST offset, LONGEST len,
-+ gdb_byte *buf)
+-readable_regcache::cooked_read_part (int regnum, int offset, int len,
++readable_regcache::cooked_read_part (int regnum, LONGEST offset, LONGEST len,
+ gdb_byte *buf)
{
gdb_assert (regnum >= 0 && regnum < m_descr->nr_cooked_registers);
- return xfer_part (regnum, offset, len, buf, NULL, false);
-@@ -985,13 +986,13 @@ regcache::cooked_read_part (int regnum, int offset, int len, gdb_byte *buf)
+@@ -958,13 +959,13 @@ readable_regcache::cooked_read_part (int regnum, int offset, int len,
void
regcache_cooked_write_part (struct regcache *regcache, int regnum,
@@ -2805,10 +2814,10 @@ index fb6a904dec..3694616069 100644
{
gdb_assert (regnum >= 0 && regnum < m_descr->nr_cooked_registers);
diff --git a/gdb/regcache.h b/gdb/regcache.h
-index 9e3da8c3fc..a803b58516 100644
+index d7bb8b5c93..06f878ab01 100644
--- a/gdb/regcache.h
+++ b/gdb/regcache.h
-@@ -82,9 +82,9 @@ extern void regcache_raw_set_cached_value
+@@ -74,9 +74,9 @@ extern LONGEST regcache_raw_get_signed (struct regcache *regcache,
extern enum register_status
regcache_raw_read_part (struct regcache *regcache, int regnum,
@@ -2820,7 +2829,7 @@ index 9e3da8c3fc..a803b58516 100644
void regcache_invalidate (struct regcache *regcache, int regnum);
-@@ -121,10 +121,11 @@ extern void regcache_cooked_write_unsigned (struct regcache *regcache,
+@@ -113,10 +113,11 @@ extern void regcache_cooked_write_unsigned (struct regcache *regcache,
write style operations. */
enum register_status regcache_cooked_read_part (struct regcache *regcache,
@@ -2835,55 +2844,91 @@ index 9e3da8c3fc..a803b58516 100644
/* Special routines to read/write the PC. */
-@@ -302,15 +303,15 @@ public:
-
- void invalidate (int regnum);
+@@ -259,8 +260,8 @@ public:
+ template<typename T, typename = RequireLongest<T>>
+ enum register_status raw_read (int regnum, T *val);
- enum register_status raw_read_part (int regnum, int offset, int len,
-+ enum register_status raw_read_part (int regnum, int offset, LONGEST len,
- gdb_byte *buf);
+- gdb_byte *buf);
++ enum register_status raw_read_part (int regnum, int offset,
++ LONGEST len, gdb_byte *buf);
-- void raw_write_part (int regnum, int offset, int len, const gdb_byte *buf);
-+ void raw_write_part (int regnum, int offset, LONGEST len, const gdb_byte *buf);
+ virtual void raw_update (int regnum) = 0;
+
+@@ -268,14 +269,14 @@ public:
+ template<typename T, typename = RequireLongest<T>>
+ enum register_status cooked_read (int regnum, T *val);
- enum register_status cooked_read_part (int regnum, int offset, int len,
-+ enum register_status cooked_read_part (int regnum, LONGEST offset, LONGEST len,
- gdb_byte *buf);
+- gdb_byte *buf);
++ enum register_status cooked_read_part (int regnum, LONGEST offset,
++ LONGEST len, gdb_byte *buf);
+
+ struct value *cooked_read_value (int regnum);
+
+ protected:
+- enum register_status read_part (int regnum, int offset, int len, void *in,
+- bool is_raw);
++ enum register_status read_part (int regnum, LONGEST offset, LONGEST len,
++ void *in, bool is_raw);
+ };
+
+ /* Buffer of registers, can be read and written. */
+@@ -345,9 +346,10 @@ public:
+ void raw_collect_integer (int regnum, gdb_byte *addr, int addr_len,
+ bool is_signed) const;
+
+- void raw_write_part (int regnum, int offset, int len, const gdb_byte *buf);
++ void raw_write_part (int regnum, int offset, LONGEST len,
++ const gdb_byte *buf);
- void cooked_write_part (int regnum, int offset, int len,
+ void cooked_write_part (int regnum, LONGEST offset, LONGEST len,
const gdb_byte *buf);
void supply_regset (const struct regset *regset,
-@@ -349,8 +350,8 @@ private:
-
- void restore (struct regcache *src);
-
-- enum register_status xfer_part (int regnum, int offset, int len, void *in,
-- const void *out, bool is_raw);
-+ enum register_status xfer_part (int regnum, LONGEST offset, LONGEST len,
-+ void *in, const void *out, bool is_raw);
+@@ -377,13 +379,12 @@ protected:
+ static std::forward_list<regcache *> current_regcache;
+ private:
+-
void transfer_regset (const struct regset *regset,
struct regcache *out_regcache,
+ int regnum, const void *in_buf,
+ void *out_buf, size_t size) const;
+
+- enum register_status write_part (int regnum, int offset, int len,
++ enum register_status write_part (int regnum, LONGEST offset, LONGEST len,
+ const void *out, bool is_raw);
+
+
diff --git a/gdb/remote.c b/gdb/remote.c
-index a426508723..94d5594175 100644
+index 58ed9e4f4d..ce67d76195 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
-@@ -9969,7 +9969,7 @@ int remote_hw_breakpoint_limit = -1;
+@@ -146,7 +146,7 @@ public:
- static int
- remote_region_ok_for_hw_watchpoint (struct target_ops *self,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, LONGEST len)
+ int remove_hw_breakpoint (struct gdbarch *, struct bp_target_info *) override;
+
+- int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
++ int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST) override;
+
+ int insert_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
+ struct expression *) override;
+@@ -10216,7 +10216,7 @@ int remote_hw_watchpoint_length_limit = -1;
+ int remote_hw_breakpoint_limit = -1;
+
+ int
+-remote_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
++remote_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
{
if (remote_hw_watchpoint_length_limit == 0)
return 0;
diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
-index cb924e084d..c18f2d0ed5 100644
+index 4be112b7a3..77d145549d 100644
--- a/gdb/rust-lang.c
+++ b/gdb/rust-lang.c
-@@ -472,7 +472,7 @@ rust_printchar (int c, struct type *type, struct ui_file *stream)
+@@ -286,7 +286,7 @@ rust_printchar (int c, struct type *type, struct ui_file *stream)
static void
rust_printstr (struct ui_file *stream, struct type *type,
@@ -2892,7 +2937,7 @@ index cb924e084d..c18f2d0ed5 100644
const char *user_encoding, int force_ellipses,
const struct value_print_options *options)
{
-@@ -618,7 +618,7 @@ static const struct generic_val_print_decorations rust_decorations =
+@@ -495,7 +495,7 @@ static const struct generic_val_print_decorations rust_decorations =
/* la_val_print implementation for Rust. */
static void
@@ -2902,33 +2947,43 @@ index cb924e084d..c18f2d0ed5 100644
struct value *val,
const struct value_print_options *options)
diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c
-index 8a3fcff9b6..a8b7d63938 100644
+index 3c65c5eaa5..d7c683e968 100644
--- a/gdb/s390-linux-nat.c
+++ b/gdb/s390-linux-nat.c
-@@ -921,7 +921,7 @@ s390_remove_hw_breakpoint (struct target_ops *self,
+@@ -952,7 +952,8 @@ s390_linux_nat_target::remove_hw_breakpoint (struct gdbarch *gdbarch,
+ }
- static int
- s390_region_ok_for_hw_watchpoint (struct target_ops *self,
-- CORE_ADDR addr, int cnt)
-+ CORE_ADDR addr, LONGEST cnt)
+ int
+-s390_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int cnt)
++s390_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr,
++ LONGEST cnt)
{
return 1;
}
diff --git a/gdb/spu-multiarch.c b/gdb/spu-multiarch.c
-index 7152ddabbd..1cfa7780af 100644
+index 5da5e4e7fc..29db0e8ea6 100644
--- a/gdb/spu-multiarch.c
+++ b/gdb/spu-multiarch.c
-@@ -128,7 +128,7 @@ spu_thread_architecture (struct target_ops *ops, ptid_t ptid)
+@@ -66,7 +66,7 @@ struct spu_multiarch_target final : public target_ops
+ const gdb_byte *pattern, ULONGEST pattern_len,
+ CORE_ADDR *found_addrp) override;
+
+- int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
++ int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST) override;
+
+ struct gdbarch *thread_architecture (ptid_t) override;
+ };
+@@ -164,7 +164,7 @@ spu_multiarch_target::thread_architecture (ptid_t ptid)
/* Override the to_region_ok_for_hw_watchpoint routine. */
- static int
- spu_region_ok_for_hw_watchpoint (struct target_ops *self,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, LONGEST len)
+
+ int
+-spu_multiarch_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
++spu_multiarch_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
{
- struct target_ops *ops_beneath = find_target_beneath (self);
+ struct target_ops *ops_beneath = find_target_beneath (this);
diff --git a/gdb/stack.c b/gdb/stack.c
-index 9993ae654a..6e1336da02 100644
+index 74c92537da..10f246ecd1 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -190,7 +190,7 @@ print_stack_frame (struct frame_info *frame, int print_level,
@@ -2970,10 +3025,10 @@ index 9993ae654a..6e1336da02 100644
if (highest_offset == -1)
start = gdbarch_frame_args_skip (get_frame_arch (frame));
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
-index 9adde044cd..2bd1464a01 100644
+index 91ddc578a8..addf9b873d 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
-@@ -585,11 +585,11 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
+@@ -586,11 +586,11 @@ print_symbol (struct gdbarch *gdbarch, struct symbol *symbol,
case LOC_CONST_BYTES:
{
@@ -2989,40 +3044,64 @@ index 9adde044cd..2bd1464a01 100644
fprintf_filtered (outfile, " %02x",
(unsigned) SYMBOL_VALUE_BYTES (symbol)[i]);
diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c
-index aaf11d81b8..2b449cbf01 100644
+index da74347122..ed625ed030 100644
--- a/gdb/target-delegates.c
+++ b/gdb/target-delegates.c
-@@ -760,14 +760,14 @@ debug_watchpoint_addr_within_range (struct target_ops *self, CORE_ADDR arg1, COR
+@@ -39,7 +39,7 @@ struct dummy_target : public target_ops
+ bool have_continuable_watchpoint () override;
+ bool stopped_data_address (CORE_ADDR *arg0) override;
+ bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
+- int region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1) override;
++ int region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1) override;
+ bool can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
+ int masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1) override;
+ int can_do_single_step () override;
+@@ -207,7 +207,7 @@ struct debug_target : public target_ops
+ bool have_continuable_watchpoint () override;
+ bool stopped_data_address (CORE_ADDR *arg0) override;
+ bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
+- int region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1) override;
++ int region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1) override;
+ bool can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
+ int masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1) override;
+ int can_do_single_step () override;
+@@ -1098,19 +1098,19 @@ debug_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int
}
- static int
--delegate_region_ok_for_hw_watchpoint (struct target_ops *self, CORE_ADDR arg1, int arg2)
-+delegate_region_ok_for_hw_watchpoint (struct target_ops *self, CORE_ADDR arg1, LONGEST arg2)
+ int
+-target_ops::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
++target_ops::region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1)
{
- self = self->beneath;
- return self->to_region_ok_for_hw_watchpoint (self, arg1, arg2);
+ return this->beneath->region_ok_for_hw_watchpoint (arg0, arg1);
}
- static int
--debug_region_ok_for_hw_watchpoint (struct target_ops *self, CORE_ADDR arg1, int arg2)
-+debug_region_ok_for_hw_watchpoint (struct target_ops *self, CORE_ADDR arg1, LONGEST arg2)
+ int
+-dummy_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
++dummy_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1)
+ {
+ return default_region_ok_for_hw_watchpoint (this, arg0, arg1);
+ }
+
+ int
+-debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
++debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1)
{
int result;
- fprintf_unfiltered (gdb_stdlog, "-> %s->to_region_ok_for_hw_watchpoint (...)\n", debug_target.to_shortname);
-@@ -777,7 +777,7 @@ debug_region_ok_for_hw_watchpoint (struct target_ops *self, CORE_ADDR arg1, int
+ fprintf_unfiltered (gdb_stdlog, "-> %s->region_ok_for_hw_watchpoint (...)\n", this->beneath->shortname ());
+@@ -1118,7 +1118,7 @@ debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, int arg1)
+ fprintf_unfiltered (gdb_stdlog, "<- %s->region_ok_for_hw_watchpoint (", this->beneath->shortname ());
+ target_debug_print_CORE_ADDR (arg0);
fputs_unfiltered (", ", gdb_stdlog);
- target_debug_print_CORE_ADDR (arg1);
- fputs_unfiltered (", ", gdb_stdlog);
-- target_debug_print_int (arg2);
-+ target_debug_print_LONGEST (arg2);
+- target_debug_print_int (arg1);
++ target_debug_print_LONGEST (arg1);
fputs_unfiltered (") = ", gdb_stdlog);
target_debug_print_int (result);
fputs_unfiltered ("\n", gdb_stdlog);
diff --git a/gdb/target.c b/gdb/target.c
-index 748d5bb7a2..a1ac6d0697 100644
+index d96cdec418..7d0da32ec6 100644
--- a/gdb/target.c
+++ b/gdb/target.c
-@@ -56,7 +56,7 @@ static int default_watchpoint_addr_within_range (struct target_ops *,
+@@ -59,7 +59,7 @@ static int default_watchpoint_addr_within_range (struct target_ops *,
CORE_ADDR, CORE_ADDR, int);
static int default_region_ok_for_hw_watchpoint (struct target_ops *,
@@ -3031,7 +3110,7 @@ index 748d5bb7a2..a1ac6d0697 100644
static void default_rcmd (struct target_ops *, const char *, struct ui_file *);
-@@ -3112,7 +3112,7 @@ target_fileio_read_stralloc (struct inferior *inf, const char *filename)
+@@ -3197,7 +3197,7 @@ target_fileio_read_stralloc (struct inferior *inf, const char *filename)
static int
default_region_ok_for_hw_watchpoint (struct target_ops *self,
@@ -3041,23 +3120,23 @@ index 748d5bb7a2..a1ac6d0697 100644
return (len <= gdbarch_ptr_bit (target_gdbarch ()) / TARGET_CHAR_BIT);
}
diff --git a/gdb/target.h b/gdb/target.h
-index e3a2882fe5..7a70c3f6da 100644
+index 6e13809397..aaed35f690 100644
--- a/gdb/target.h
+++ b/gdb/target.h
-@@ -541,7 +541,7 @@ struct target_ops
+@@ -557,7 +557,7 @@ struct target_ops
+
/* Documentation of this routine is provided with the corresponding
target_* macro. */
- int (*to_region_ok_for_hw_watchpoint) (struct target_ops *,
-- CORE_ADDR, int)
-+ CORE_ADDR, LONGEST)
+- virtual int region_ok_for_hw_watchpoint (CORE_ADDR, int)
++ virtual int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST)
TARGET_DEFAULT_FUNC (default_region_ok_for_hw_watchpoint);
- int (*to_can_accel_watchpoint_condition) (struct target_ops *,
+ virtual bool can_accel_watchpoint_condition (CORE_ADDR, int, int,
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
-index b0f855a6f4..23033fa9de 100644
+index 369f07581f..e7bcaa293f 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
-@@ -852,10 +852,10 @@ collection_list::add_register (unsigned int regno)
+@@ -829,10 +829,10 @@ collection_list::add_register (unsigned int regno)
void
collection_list::add_memrange (struct gdbarch *gdbarch,
int type, bfd_signed_vma base,
@@ -3070,7 +3149,7 @@ index b0f855a6f4..23033fa9de 100644
/* type: memrange_absolute == memory, other n == basereg */
/* base: addr if memory, offset if reg relative. */
-@@ -875,7 +875,7 @@ collection_list::collect_symbol (struct symbol *sym,
+@@ -852,7 +852,7 @@ collection_list::collect_symbol (struct symbol *sym,
CORE_ADDR scope,
int trace_string)
{
@@ -3079,7 +3158,7 @@ index b0f855a6f4..23033fa9de 100644
unsigned int reg;
bfd_signed_vma offset;
int treat_as_expr = 0;
-@@ -896,8 +896,8 @@ collection_list::collect_symbol (struct symbol *sym,
+@@ -873,8 +873,8 @@ collection_list::collect_symbol (struct symbol *sym,
offset = SYMBOL_VALUE_ADDRESS (sym);
if (info_verbose)
{
@@ -3090,7 +3169,7 @@ index b0f855a6f4..23033fa9de 100644
paddress (gdbarch, offset));
}
/* A struct may be a C++ class with static fields, go to general
-@@ -929,9 +929,9 @@ collection_list::collect_symbol (struct symbol *sym,
+@@ -906,9 +906,9 @@ collection_list::collect_symbol (struct symbol *sym,
offset = frame_offset + SYMBOL_VALUE (sym);
if (info_verbose)
{
@@ -3102,7 +3181,7 @@ index b0f855a6f4..23033fa9de 100644
paddress (gdbarch, offset), reg);
}
add_memrange (gdbarch, reg, offset, len);
-@@ -941,9 +941,9 @@ collection_list::collect_symbol (struct symbol *sym,
+@@ -918,9 +918,9 @@ collection_list::collect_symbol (struct symbol *sym,
offset = 0;
if (info_verbose)
{
@@ -3114,7 +3193,7 @@ index b0f855a6f4..23033fa9de 100644
paddress (gdbarch, offset), reg);
}
add_memrange (gdbarch, reg, offset, len);
-@@ -953,9 +953,9 @@ collection_list::collect_symbol (struct symbol *sym,
+@@ -930,9 +930,9 @@ collection_list::collect_symbol (struct symbol *sym,
offset = frame_offset + SYMBOL_VALUE (sym);
if (info_verbose)
{
@@ -3126,7 +3205,7 @@ index b0f855a6f4..23033fa9de 100644
paddress (gdbarch, offset), reg);
}
add_memrange (gdbarch, reg, offset, len);
-@@ -2500,7 +2500,8 @@ info_scope_command (const char *args_in, int from_tty)
+@@ -2475,7 +2475,8 @@ info_scope_command (const char *args_in, int from_tty)
const char *symname;
const char *save_args = args_in;
struct block_iterator iter;
@@ -3136,7 +3215,7 @@ index b0f855a6f4..23033fa9de 100644
struct gdbarch *gdbarch;
int regno;
const char *args = args_in;
-@@ -2644,8 +2645,11 @@ info_scope_command (const char *args_in, int from_tty)
+@@ -2619,8 +2620,11 @@ info_scope_command (const char *args_in, int from_tty)
}
}
if (SYMBOL_TYPE (sym))
@@ -3151,10 +3230,10 @@ index b0f855a6f4..23033fa9de 100644
if (BLOCK_FUNCTION (block))
break;
diff --git a/gdb/tracepoint.h b/gdb/tracepoint.h
-index 9f4596ecd1..8554cad3ba 100644
+index 42e413018a..978074cbc8 100644
--- a/gdb/tracepoint.h
+++ b/gdb/tracepoint.h
-@@ -255,7 +255,7 @@ public:
+@@ -265,7 +265,7 @@ public:
void add_register (unsigned int regno);
void add_memrange (struct gdbarch *gdbarch,
int type, bfd_signed_vma base,
@@ -3210,10 +3289,10 @@ index 035def5466..67bd7cf03a 100644
for (i = 0; i < len; i++)
{
diff --git a/gdb/valops.c b/gdb/valops.c
-index 7aacd17d70..fdcb7e49e6 100644
+index cdc5c8014c..96b922dbef 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
-@@ -80,7 +80,7 @@ oload_classification classify_oload_match (struct badness_vector *,
+@@ -81,7 +81,7 @@ oload_classification classify_oload_match (struct badness_vector *,
int, int);
static struct value *value_struct_elt_for_reference (struct type *,
@@ -3222,7 +3301,7 @@ index 7aacd17d70..fdcb7e49e6 100644
const char *,
struct type *,
int, enum noside);
-@@ -182,7 +182,7 @@ find_function_in_inferior (const char *name, struct objfile **objf_p)
+@@ -183,7 +183,7 @@ find_function_in_inferior (const char *name, struct objfile **objf_p)
space. */
struct value *
@@ -3231,7 +3310,7 @@ index 7aacd17d70..fdcb7e49e6 100644
{
struct objfile *objf;
struct value *val = find_function_in_inferior ("malloc", &objf);
-@@ -397,12 +397,12 @@ value_cast (struct type *type, struct value *arg2)
+@@ -398,12 +398,12 @@ value_cast (struct type *type, struct value *arg2)
if (code1 == TYPE_CODE_ARRAY)
{
struct type *element_type = TYPE_TARGET_TYPE (type);
@@ -3246,7 +3325,7 @@ index 7aacd17d70..fdcb7e49e6 100644
LONGEST low_bound, high_bound, new_length;
if (get_discrete_bounds (range_type, &low_bound, &high_bound) < 0)
-@@ -1054,7 +1054,7 @@ value_assign (struct value *toval, struct value *fromval)
+@@ -1055,7 +1055,7 @@ value_assign (struct value *toval, struct value *fromval)
{
const gdb_byte *dest_buffer;
CORE_ADDR changed_addr;
@@ -3255,7 +3334,7 @@ index 7aacd17d70..fdcb7e49e6 100644
gdb_byte buffer[sizeof (LONGEST)];
if (value_bitsize (toval))
-@@ -3325,7 +3325,7 @@ compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
+@@ -3357,7 +3357,7 @@ compare_parameters (struct type *t1, struct type *t2, int skip_artificial)
the form "DOMAIN::NAME". */
static struct value *
@@ -3264,7 +3343,7 @@ index 7aacd17d70..fdcb7e49e6 100644
struct type *curtype, const char *name,
struct type *intype,
int want_address,
-@@ -3359,7 +3359,7 @@ value_struct_elt_for_reference (struct type *domain, int offset,
+@@ -3391,7 +3391,7 @@ value_struct_elt_for_reference (struct type *domain, int offset,
if (want_address)
return value_from_longest
(lookup_memberptr_type (TYPE_FIELD_TYPE (t, i), domain),
@@ -3273,7 +3352,7 @@ index 7aacd17d70..fdcb7e49e6 100644
else if (noside != EVAL_NORMAL)
return allocate_value (TYPE_FIELD_TYPE (t, i));
else
-@@ -3532,7 +3532,7 @@ value_struct_elt_for_reference (struct type *domain, int offset,
+@@ -3564,7 +3564,7 @@ value_struct_elt_for_reference (struct type *domain, int offset,
for (i = TYPE_N_BASECLASSES (t) - 1; i >= 0; i--)
{
struct value *v;
@@ -3282,7 +3361,7 @@ index 7aacd17d70..fdcb7e49e6 100644
if (BASETYPE_VIA_VIRTUAL (t, i))
base_offset = 0;
-@@ -3681,7 +3681,7 @@ value_rtti_indirect_type (struct value *v, int *full,
+@@ -3713,7 +3713,7 @@ value_rtti_indirect_type (struct value *v, int *full,
struct value *
value_full_object (struct value *argp,
struct type *rtype,
@@ -3292,10 +3371,10 @@ index 7aacd17d70..fdcb7e49e6 100644
{
struct type *real_type;
diff --git a/gdb/valprint.c b/gdb/valprint.c
-index d01d02fc09..e2d87c05bc 100644
+index 2537d77c19..be4ba05c91 100644
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
-@@ -882,7 +882,7 @@ generic_val_print_complex (struct type *type,
+@@ -879,7 +879,7 @@ generic_val_print_complex (struct type *type,
void
generic_val_print (struct type *type,
@@ -3304,7 +3383,7 @@ index d01d02fc09..e2d87c05bc 100644
struct ui_file *stream, int recurse,
struct value *original_value,
const struct value_print_options *options,
-@@ -1776,7 +1776,7 @@ print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
+@@ -1773,7 +1773,7 @@ print_decimal_chars (struct ui_file *stream, const gdb_byte *valaddr,
void
print_hex_chars (struct ui_file *stream, const gdb_byte *valaddr,
@@ -3313,7 +3392,7 @@ index d01d02fc09..e2d87c05bc 100644
bool zero_pad)
{
const gdb_byte *p;
-@@ -1929,17 +1929,17 @@ val_print_array_elements (struct type *type,
+@@ -1926,17 +1926,17 @@ val_print_array_elements (struct type *type,
int recurse,
struct value *val,
const struct value_print_options *options,
@@ -3336,7 +3415,7 @@ index d01d02fc09..e2d87c05bc 100644
LONGEST low_bound, high_bound;
LONGEST low_pos, high_pos;
-@@ -2029,7 +2029,7 @@ val_print_array_elements (struct type *type,
+@@ -2026,7 +2026,7 @@ val_print_array_elements (struct type *type,
address, stream, recurse + 1, val, options,
current_language);
annotate_elt_rep (reps);
@@ -3345,7 +3424,7 @@ index d01d02fc09..e2d87c05bc 100644
annotate_elt_rep_end ();
i = rep1 - 1;
-@@ -2675,7 +2675,7 @@ print_converted_chars_to_obstack (struct obstack *obstack,
+@@ -2672,7 +2672,7 @@ print_converted_chars_to_obstack (struct obstack *obstack,
void
generic_printstr (struct ui_file *stream, struct type *type,
@@ -3355,7 +3434,7 @@ index d01d02fc09..e2d87c05bc 100644
int quote_char, int c_style_terminator,
const struct value_print_options *options)
diff --git a/gdb/valprint.h b/gdb/valprint.h
-index f005c31f87..6ffb58c04e 100644
+index 1f62039be5..00e3cc5714 100644
--- a/gdb/valprint.h
+++ b/gdb/valprint.h
@@ -119,7 +119,7 @@ extern void val_print_array_elements (struct type *, LONGEST,
@@ -3395,10 +3474,10 @@ index f005c31f87..6ffb58c04e 100644
int quote_char, int c_style_terminator,
const struct value_print_options *options);
diff --git a/gdb/value.c b/gdb/value.c
-index 558d0bbd7a..b6406fedc9 100644
+index 98c060c65f..569281dbbd 100644
--- a/gdb/value.c
+++ b/gdb/value.c
-@@ -363,7 +363,8 @@ value_bytes_available (const struct value *value,
+@@ -384,7 +384,8 @@ value_bytes_available (const struct value *value,
}
int
@@ -3408,7 +3487,7 @@ index 558d0bbd7a..b6406fedc9 100644
{
gdb_assert (!value->lazy);
-@@ -809,8 +810,8 @@ find_first_range_overlap_and_match (struct ranges_and_idx *rp1,
+@@ -832,8 +833,8 @@ find_first_range_overlap_and_match (struct ranges_and_idx *rp1,
Return true if the available bits match. */
static bool
@@ -3419,7 +3498,7 @@ index 558d0bbd7a..b6406fedc9 100644
int length)
{
/* Each array element corresponds to a ranges source (unavailable,
-@@ -1445,7 +1446,8 @@ value_optimized_out (struct value *value)
+@@ -1424,7 +1425,8 @@ value_optimized_out (struct value *value)
the following LENGTH bytes. */
void
@@ -3430,10 +3509,10 @@ index 558d0bbd7a..b6406fedc9 100644
mark_value_bits_optimized_out (value,
offset * TARGET_CHAR_BIT,
diff --git a/gdb/value.h b/gdb/value.h
-index 03ca06448f..9c73464cf0 100644
+index e838fd580e..776e833fff 100644
--- a/gdb/value.h
+++ b/gdb/value.h
-@@ -245,7 +245,7 @@ struct lval_funcs
+@@ -274,7 +274,7 @@ struct lval_funcs
/* If non-NULL, this is used to determine whether the indicated bits
of VALUE are a synthetic pointer. */
int (*check_synthetic_pointer) (const struct value *value,
@@ -3442,7 +3521,7 @@ index 03ca06448f..9c73464cf0 100644
/* Return a duplicate of VALUE's closure, for use in a new value.
This may simply return the same closure, if VALUE's is
-@@ -376,7 +376,8 @@ extern int value_optimized_out (struct value *value);
+@@ -405,7 +405,8 @@ extern int value_optimized_out (struct value *value);
otherwise. */
extern int value_bits_any_optimized_out (const struct value *value,
@@ -3452,7 +3531,7 @@ index 03ca06448f..9c73464cf0 100644
/* Like value_optimized_out, but return true iff the whole value is
optimized out. */
-@@ -386,7 +387,7 @@ extern int value_entirely_optimized_out (struct value *value);
+@@ -415,7 +416,7 @@ extern int value_entirely_optimized_out (struct value *value);
LENGTH bytes as optimized out. */
extern void mark_value_bytes_optimized_out (struct value *value,
@@ -3461,7 +3540,7 @@ index 03ca06448f..9c73464cf0 100644
/* Mark VALUE's content bits starting at OFFSET and extending for
LENGTH bits as optimized out. */
-@@ -820,12 +821,11 @@ extern struct value *value_primitive_field (struct value *arg1, LONGEST offset,
+@@ -849,12 +850,11 @@ extern struct value *value_primitive_field (struct value *arg1, LONGEST offset,
int fieldno,
struct type *arg_type);
@@ -3475,7 +3554,7 @@ index 03ca06448f..9c73464cf0 100644
extern struct value *value_cast_pointers (struct type *, struct value *, int);
-@@ -1136,10 +1136,11 @@ extern struct value *value_literal_complex (struct value *, struct value *,
+@@ -1147,10 +1147,11 @@ extern struct value *value_literal_complex (struct value *, struct value *,
extern struct value *find_function_in_inferior (const char *,
struct objfile **);
@@ -3490,15 +3569,37 @@ index 03ca06448f..9c73464cf0 100644
/* User function handler. */
diff --git a/gdb/x86-nat.c b/gdb/x86-nat.c
-index b126c47c94..825b487a9a 100644
+index cfd293c17f..8886df2d4d 100644
--- a/gdb/x86-nat.c
+++ b/gdb/x86-nat.c
-@@ -174,7 +174,7 @@ x86_remove_watchpoint (struct target_ops *self, CORE_ADDR addr, int len,
+@@ -173,7 +173,7 @@ x86_remove_watchpoint (CORE_ADDR addr, int len,
+ address ADDR and whose length is LEN bytes. */
- static int
- x86_region_ok_for_watchpoint (struct target_ops *self,
-- CORE_ADDR addr, int len)
-+ CORE_ADDR addr, LONGEST len)
+ int
+-x86_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
++x86_region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len)
{
struct x86_debug_reg_state *state
= x86_debug_reg_state (ptid_get_pid (inferior_ptid));
+diff --git a/gdb/x86-nat.h b/gdb/x86-nat.h
+index cc27fa43b4..bab15def7b 100644
+--- a/gdb/x86-nat.h
++++ b/gdb/x86-nat.h
+@@ -49,7 +49,7 @@ extern void x86_forget_process (pid_t pid);
+ definitions. */
+
+ extern int x86_can_use_hw_breakpoint (enum bptype type, int cnt, int othertype);
+-extern int x86_region_ok_for_hw_watchpoint (CORE_ADDR addr, int len);
++extern int x86_region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len);
+ extern int x86_stopped_by_watchpoint ();
+ extern int x86_stopped_data_address (CORE_ADDR *addr_p);
+ extern int x86_insert_watchpoint (CORE_ADDR addr, int len,
+@@ -82,7 +82,7 @@ struct x86_nat_target : public BaseTarget
+ int can_use_hw_breakpoint (enum bptype type, int cnt, int othertype) override
+ { return x86_can_use_hw_breakpoint (type, cnt, othertype); }
+
+- int region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) override
++ int region_ok_for_hw_watchpoint (CORE_ADDR addr, LONGEST len) override
+ { return x86_region_ok_for_hw_watchpoint (addr, len); }
+
+ int insert_watchpoint (CORE_ADDR addr, int len,
diff --git a/gdb-rhbz795424-bitpos-21of25.patch b/gdb-rhbz795424-bitpos-21of25.patch
index 7e040c6..84f40f8 100644
--- a/gdb-rhbz795424-bitpos-21of25.patch
+++ b/gdb-rhbz795424-bitpos-21of25.patch
@@ -62,10 +62,10 @@ Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bitpos-ensure-size_t.patch
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
-index 52a46d96ea..ea53b9ee10 100644
+index 78422faa6c..9b749559a1 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
-@@ -415,6 +415,13 @@ alpha_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -413,6 +413,13 @@ alpha_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
accumulate_size = 0;
else
accumulate_size -= sizeof(arg_reg_buffer);
@@ -80,7 +80,7 @@ index 52a46d96ea..ea53b9ee10 100644
/* Keep sp aligned to a multiple of 16 as the ABI requires. */
diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c
-index db3ff338d1..4d06680239 100644
+index 25f1512857..823ac8fbd6 100644
--- a/gdb/cp-valprint.c
+++ b/gdb/cp-valprint.c
@@ -529,6 +529,7 @@ cp_print_value (struct type *type, struct type *real_type,
@@ -92,10 +92,10 @@ index db3ff338d1..4d06680239 100644
if (target_read_memory (address + boffset, buf.data (),
diff --git a/gdb/defs.h b/gdb/defs.h
-index 4fb2129b30..0c156d56c3 100644
+index dc38a288c5..ce5fee3ba3 100644
--- a/gdb/defs.h
+++ b/gdb/defs.h
-@@ -705,4 +705,6 @@ DEF_ENUM_FLAGS_TYPE (enum user_selected_what_flag, user_selected_what);
+@@ -674,4 +674,6 @@ DEF_ENUM_FLAGS_TYPE (enum user_selected_what_flag, user_selected_what);
#include "utils.h"
@@ -115,10 +115,10 @@ index e5c1b07040..06fb3b77c9 100644
base_valaddr = buf.data ();
diff --git a/gdb/utils.c b/gdb/utils.c
-index 0066bfcc4b..6f0abc98a2 100644
+index 7813df1436..c816e2f897 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
-@@ -2836,6 +2836,18 @@ string_to_core_addr (const char *my_string)
+@@ -2816,6 +2816,17 @@ string_to_core_addr (const char *my_string)
return addr;
}
@@ -133,15 +133,14 @@ index 0066bfcc4b..6f0abc98a2 100644
+ "maximum allowed %s bytes."), pulongest (num),
+ pulongest (SIZE_MAX / 8));
+}
-+
- gdb::unique_xmalloc_ptr<char>
- gdb_realpath (const char *filename)
- {
+ #if GDB_SELF_TEST
+
+ static void
diff --git a/gdb/valops.c b/gdb/valops.c
-index fdcb7e49e6..ddc53f131e 100644
+index 96b922dbef..a7f9be5f4e 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
-@@ -2087,6 +2087,7 @@ search_struct_method (const char *name, struct value **arg1p,
+@@ -2088,6 +2088,7 @@ search_struct_method (const char *name, struct value **arg1p,
{
CORE_ADDR address;
@@ -150,18 +149,18 @@ index fdcb7e49e6..ddc53f131e 100644
address = value_address (*arg1p);
diff --git a/gdb/value.c b/gdb/value.c
-index b6406fedc9..ac7d07a7b5 100644
+index 569281dbbd..1964cf771c 100644
--- a/gdb/value.c
+++ b/gdb/value.c
-@@ -926,6 +926,7 @@ allocate_value_lazy (struct type *type)
+@@ -934,6 +934,7 @@ allocate_value_lazy (struct type *type)
description correctly. */
check_typedef (type);
+ ulongest_fits_host_or_error (TYPE_LENGTH (type));
- val = XCNEW (struct value);
- val->contents = NULL;
- val->next = all_values;
-@@ -1023,6 +1024,8 @@ check_type_length_before_alloc (const struct type *type)
+ val = new struct value (type);
+
+ /* Values start out on the all_values chain. */
+@@ -1016,6 +1017,8 @@ check_type_length_before_alloc (const struct type *type)
static void
allocate_value_contents (struct value *val)
{
@@ -170,14 +169,14 @@ index b6406fedc9..ac7d07a7b5 100644
if (!val->contents)
{
check_type_length_before_alloc (val->enclosing_type);
-@@ -3015,6 +3018,7 @@ set_value_enclosing_type (struct value *val, struct type *new_encl_type)
+@@ -2877,6 +2880,7 @@ set_value_enclosing_type (struct value *val, struct type *new_encl_type)
if (TYPE_LENGTH (new_encl_type) > TYPE_LENGTH (value_enclosing_type (val)))
{
check_type_length_before_alloc (new_encl_type);
+ ulongest_fits_host_or_error (TYPE_LENGTH (new_encl_type));
val->contents
- = (gdb_byte *) xrealloc (val->contents, TYPE_LENGTH (new_encl_type));
- }
+ .reset ((gdb_byte *) xrealloc (val->contents.release (),
+ TYPE_LENGTH (new_encl_type)));
diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c
index 4c1ab2e73e..bd69fd2f48 100644
--- a/gdb/vax-tdep.c
diff --git a/gdb-rhbz795424-bitpos-22of25.patch b/gdb-rhbz795424-bitpos-22of25.patch
index 49f4d39..1f4d982 100644
--- a/gdb-rhbz795424-bitpos-22of25.patch
+++ b/gdb-rhbz795424-bitpos-22of25.patch
@@ -106,36 +106,72 @@ Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bitpos-wp.patch
diff --git a/gdb/aarch64-linux-nat.c b/gdb/aarch64-linux-nat.c
-index 08e6f4d4fd..f08bf039e4 100644
+index dd69f50785..a8e2621eca 100644
--- a/gdb/aarch64-linux-nat.c
+++ b/gdb/aarch64-linux-nat.c
-@@ -767,7 +767,7 @@ aarch64_linux_stopped_by_watchpoint (struct target_ops *ops)
- static int
- aarch64_linux_watchpoint_addr_within_range (struct target_ops *target,
- CORE_ADDR addr,
-- CORE_ADDR start, int length)
-+ CORE_ADDR start, LONGEST length)
+@@ -62,14 +62,14 @@ public:
+ int can_use_hw_breakpoint (enum bptype, int, int) override;
+ int insert_hw_breakpoint (struct gdbarch *, struct bp_target_info *) override;
+ int remove_hw_breakpoint (struct gdbarch *, struct bp_target_info *) override;
+- int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
++ int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST) override;
+ int insert_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
+ struct expression *) override;
+ int remove_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
+ struct expression *) override;
+ bool stopped_by_watchpoint () override;
+ bool stopped_data_address (CORE_ADDR *) override;
+- bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int) override;
++ bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, LONGEST) override;
+
+ int can_do_single_step () override;
+
+@@ -822,7 +822,8 @@ aarch64_linux_nat_target::stopped_by_watchpoint ()
+
+ bool
+ aarch64_linux_nat_target::watchpoint_addr_within_range (CORE_ADDR addr,
+- CORE_ADDR start, int length)
++ CORE_ADDR start,
++ LONGEST length)
{
return start <= addr && start + length - 1 >= addr;
}
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
-index 3b7aa40db8..48dfe22ce1 100644
+index 8e2abfb70c..6e6318013f 100644
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
-@@ -1177,7 +1177,7 @@ arm_linux_stopped_by_watchpoint (struct target_ops *ops)
- static int
- arm_linux_watchpoint_addr_within_range (struct target_ops *target,
- CORE_ADDR addr,
-- CORE_ADDR start, int length)
-+ CORE_ADDR start, LONGEST length)
+@@ -80,7 +80,7 @@ public:
+
+ int remove_hw_breakpoint (struct gdbarch *, struct bp_target_info *) override;
+
+- int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
++ int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST) override;
+
+ int insert_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
+ struct expression *) override;
+@@ -91,7 +91,7 @@ public:
+
+ bool stopped_data_address (CORE_ADDR *) override;
+
+- bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int) override;
++ bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, LONGEST) override;
+
+ const struct target_desc *read_description () override;
+
+@@ -1213,7 +1213,7 @@ arm_linux_nat_target::stopped_by_watchpoint ()
+ bool
+ arm_linux_nat_target::watchpoint_addr_within_range (CORE_ADDR addr,
+ CORE_ADDR start,
+- int length)
++ LONGEST length)
{
return start <= addr && start + length - 1 >= addr;
}
diff --git a/gdb/nat/aarch64-linux-hw-point.c b/gdb/nat/aarch64-linux-hw-point.c
-index ce26f28fad..e9ebc5fba8 100644
+index a3931ea6a9..06dfb83f7f 100644
--- a/gdb/nat/aarch64-linux-hw-point.c
+++ b/gdb/nat/aarch64-linux-hw-point.c
-@@ -111,7 +111,7 @@ aarch64_point_encode_ctrl_reg (enum target_hw_bp_type type, int len)
+@@ -137,7 +137,7 @@ aarch64_point_encode_ctrl_reg (enum target_hw_bp_type type, int offset, int len)
Return 0 for any non-compliant ADDR and/or LEN; return 1 otherwise. */
static int
@@ -144,20 +180,20 @@ index ce26f28fad..e9ebc5fba8 100644
{
unsigned int alignment = 0;
-@@ -180,9 +180,10 @@ aarch64_point_is_aligned (int is_watchpoint, CORE_ADDR addr, int len)
- limitations can be largely relaxed with some further work. */
+@@ -212,9 +212,10 @@ aarch64_point_is_aligned (int is_watchpoint, CORE_ADDR addr, int len)
+ an address within the latter. */
static void
-aarch64_align_watchpoint (CORE_ADDR addr, int len, CORE_ADDR *aligned_addr_p,
+aarch64_align_watchpoint (CORE_ADDR addr, LONGEST len,
+ CORE_ADDR *aligned_addr_p,
- int *aligned_len_p, CORE_ADDR *next_addr_p,
-- int *next_len_p)
-+ LONGEST *next_len_p)
+ int *aligned_offset_p, int *aligned_len_p,
+- CORE_ADDR *next_addr_p, int *next_len_p,
++ CORE_ADDR *next_addr_p, LONGEST *next_len_p,
+ CORE_ADDR *next_addr_orig_p)
{
int aligned_len;
- unsigned int offset;
-@@ -501,7 +502,7 @@ aarch64_handle_aligned_watchpoint (enum target_hw_bp_type type,
+@@ -611,7 +612,7 @@ aarch64_handle_aligned_watchpoint (enum target_hw_bp_type type,
static int
aarch64_handle_unaligned_watchpoint (enum target_hw_bp_type type,
@@ -165,20 +201,23 @@ index ce26f28fad..e9ebc5fba8 100644
+ CORE_ADDR addr, LONGEST len, int is_insert,
struct aarch64_debug_reg_state *state)
{
- while (len > 0)
-@@ -524,9 +525,9 @@ aarch64_handle_unaligned_watchpoint (enum target_hw_bp_type type,
- " "
- "aligned_addr: %s, aligned_len: %d\n"
+ CORE_ADDR addr_orig = addr;
+@@ -641,12 +642,12 @@ aarch64_handle_unaligned_watchpoint (enum target_hw_bp_type type,
" "
-- "next_addr: %s, next_len: %d\n",
-+ "next_addr: %s, next_len: %s\n",
+ "addr_orig: %s\n"
+ " "
+- "next_addr: %s, next_len: %d\n"
++ "next_addr: %s, next_len: %s\n"
+ " "
+ "addr_orig_next: %s\n",
is_insert, core_addr_to_string_nz (aligned_addr),
-- aligned_len, core_addr_to_string_nz (addr), len);
-+ aligned_len, core_addr_to_string_nz (addr), plongest (len));
+ aligned_len, core_addr_to_string_nz (addr_orig),
+- core_addr_to_string_nz (addr), len,
++ core_addr_to_string_nz (addr), plongest (len),
+ core_addr_to_string_nz (addr_orig_next));
- if (ret != 0)
- return ret;
-@@ -537,7 +538,7 @@ aarch64_handle_unaligned_watchpoint (enum target_hw_bp_type type,
+ addr_orig = addr_orig_next;
+@@ -660,7 +661,7 @@ aarch64_handle_unaligned_watchpoint (enum target_hw_bp_type type,
int
aarch64_handle_watchpoint (enum target_hw_bp_type type, CORE_ADDR addr,
@@ -187,7 +226,7 @@ index ce26f28fad..e9ebc5fba8 100644
struct aarch64_debug_reg_state *state)
{
if (aarch64_point_is_aligned (1 /* is_watchpoint */ , addr, len))
-@@ -588,14 +589,14 @@ aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
+@@ -722,14 +723,14 @@ aarch64_linux_set_debug_regs (struct aarch64_debug_reg_state *state,
void
aarch64_show_debug_reg_state (struct aarch64_debug_reg_state *state,
const char *func, CORE_ADDR addr,
@@ -205,11 +244,20 @@ index ce26f28fad..e9ebc5fba8 100644
type == hw_write ? "hw-write-watchpoint"
: (type == hw_read ? "hw-read-watchpoint"
: (type == hw_access ? "hw-access-watchpoint"
+@@ -812,7 +813,7 @@ aarch64_linux_get_debug_reg_capacity (int tid)
+ ADDR and whose length is LEN in bytes. */
+
+ int
+-aarch64_linux_region_ok_for_watchpoint (CORE_ADDR addr, int len)
++aarch64_linux_region_ok_for_watchpoint (CORE_ADDR addr, LONGEST len)
+ {
+ CORE_ADDR aligned_addr;
+
diff --git a/gdb/nat/aarch64-linux-hw-point.h b/gdb/nat/aarch64-linux-hw-point.h
-index 7c42b96d1b..e1d4fc8dbc 100644
+index 1940b06a89..79504a4640 100644
--- a/gdb/nat/aarch64-linux-hw-point.h
+++ b/gdb/nat/aarch64-linux-hw-point.h
-@@ -172,7 +172,7 @@ int aarch64_handle_breakpoint (enum target_hw_bp_type type, CORE_ADDR addr,
+@@ -176,7 +176,7 @@ int aarch64_handle_breakpoint (enum target_hw_bp_type type, CORE_ADDR addr,
int len, int is_insert,
struct aarch64_debug_reg_state *state);
int aarch64_handle_watchpoint (enum target_hw_bp_type type, CORE_ADDR addr,
@@ -217,8 +265,8 @@ index 7c42b96d1b..e1d4fc8dbc 100644
+ LONGEST len, int is_insert,
struct aarch64_debug_reg_state *state);
- void aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
-@@ -180,7 +180,7 @@ void aarch64_linux_set_debug_regs (const struct aarch64_debug_reg_state *state,
+ void aarch64_linux_set_debug_regs (struct aarch64_debug_reg_state *state,
+@@ -184,12 +184,12 @@ void aarch64_linux_set_debug_regs (struct aarch64_debug_reg_state *state,
void aarch64_show_debug_reg_state (struct aarch64_debug_reg_state *state,
const char *func, CORE_ADDR addr,
@@ -227,11 +275,38 @@ index 7c42b96d1b..e1d4fc8dbc 100644
void aarch64_linux_get_debug_reg_capacity (int tid);
+ struct aarch64_debug_reg_state *aarch64_get_debug_reg_state (pid_t pid);
+
+-int aarch64_linux_region_ok_for_watchpoint (CORE_ADDR addr, int len);
++int aarch64_linux_region_ok_for_watchpoint (CORE_ADDR addr, LONGEST len);
+
+ #endif /* AARCH64_LINUX_HW_POINT_H */
diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c
-index 4a82434c0d..49a27d8daa 100644
+index b70f168106..a712197618 100644
--- a/gdb/ppc-linux-nat.c
+++ b/gdb/ppc-linux-nat.c
-@@ -1798,11 +1798,11 @@ can_use_watchpoint_cond_accel (void)
+@@ -282,7 +282,7 @@ struct ppc_linux_nat_target final : public linux_nat_target
+ int remove_hw_breakpoint (struct gdbarch *, struct bp_target_info *)
+ override;
+
+- int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
++ int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST) override;
+
+ int insert_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
+ struct expression *) override;
+@@ -300,9 +300,9 @@ struct ppc_linux_nat_target final : public linux_nat_target
+
+ bool stopped_data_address (CORE_ADDR *) override;
+
+- bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int) override;
++ bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, LONGEST) override;
+
+- bool can_accel_watchpoint_condition (CORE_ADDR, int, int, struct expression *)
++ bool can_accel_watchpoint_condition (CORE_ADDR, LONGEST, int, struct expression *)
+ override;
+
+ int masked_watch_num_registers (CORE_ADDR, CORE_ADDR) override;
+@@ -1847,11 +1847,11 @@ can_use_watchpoint_cond_accel (void)
CONDITION_VALUE will hold the value which should be put in the
DVC register. */
static void
@@ -246,7 +321,7 @@ index 4a82434c0d..49a27d8daa 100644
CORE_ADDR addr_end_data, addr_end_dvc;
/* The DVC register compares bytes within fixed-length windows which
-@@ -1889,7 +1889,7 @@ num_memory_accesses (struct value *v)
+@@ -1939,7 +1939,7 @@ num_memory_accesses (const std::vector<value_ref_ptr> &chain)
of the constant. */
static int
check_condition (CORE_ADDR watch_addr, struct expression *cond,
@@ -254,17 +329,18 @@ index 4a82434c0d..49a27d8daa 100644
+ CORE_ADDR *data_value, LONGEST *len)
{
int pc = 1, num_accesses_left, num_accesses_right;
- struct value *left_val, *right_val, *left_chain, *right_chain;
-@@ -1957,7 +1957,7 @@ check_condition (CORE_ADDR watch_addr, struct expression *cond,
+ struct value *left_val, *right_val;
+@@ -1990,7 +1990,8 @@ check_condition (CORE_ADDR watch_addr, struct expression *cond,
+ the condition expression, thus only triggering the watchpoint when it is
true. */
- static int
- ppc_linux_can_accel_watchpoint_condition (struct target_ops *self,
-- CORE_ADDR addr, int len, int rw,
-+ CORE_ADDR addr, LONGEST len, int rw,
- struct expression *cond)
+ bool
+-ppc_linux_nat_target::can_accel_watchpoint_condition (CORE_ADDR addr, int len,
++ppc_linux_nat_target::can_accel_watchpoint_condition (CORE_ADDR addr,
++ LONGEST len,
+ int rw,
+ struct expression *cond)
{
- CORE_ADDR data_value;
-@@ -1974,7 +1974,7 @@ ppc_linux_can_accel_watchpoint_condition (struct target_ops *self,
+@@ -2008,7 +2009,7 @@ ppc_linux_nat_target::can_accel_watchpoint_condition (CORE_ADDR addr, int len,
static void
create_watchpoint_request (struct ppc_hw_breakpoint *p, CORE_ADDR addr,
@@ -273,20 +349,20 @@ index 4a82434c0d..49a27d8daa 100644
struct expression *cond, int insert)
{
if (len == 1
-@@ -2240,7 +2240,7 @@ ppc_linux_stopped_by_watchpoint (struct target_ops *ops)
- static int
- ppc_linux_watchpoint_addr_within_range (struct target_ops *target,
- CORE_ADDR addr,
-- CORE_ADDR start, int length)
-+ CORE_ADDR start, LONGEST length)
+@@ -2274,7 +2275,7 @@ ppc_linux_nat_target::stopped_by_watchpoint ()
+ bool
+ ppc_linux_nat_target::watchpoint_addr_within_range (CORE_ADDR addr,
+ CORE_ADDR start,
+- int length)
++ LONGEST length)
{
int mask;
diff --git a/gdb/procfs.c b/gdb/procfs.c
-index 887f1201fe..edd1be632a 100644
+index ca7cc221f9..717a1130fe 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
-@@ -1563,7 +1563,7 @@ procfs_address_to_host_pointer (CORE_ADDR addr)
+@@ -1561,7 +1561,7 @@ procfs_address_to_host_pointer (CORE_ADDR addr)
}
static int
@@ -295,7 +371,7 @@ index 887f1201fe..edd1be632a 100644
{
struct {
procfs_ctl_t cmd;
-@@ -3250,7 +3250,7 @@ procfs_pid_to_str (struct target_ops *ops, ptid_t ptid)
+@@ -3214,7 +3214,7 @@ procfs_target::pid_to_str (ptid_t ptid)
/* Insert a watchpoint. */
static int
@@ -305,10 +381,19 @@ index 887f1201fe..edd1be632a 100644
{
int pflags = 0;
diff --git a/gdb/remote.c b/gdb/remote.c
-index 94d5594175..86777f1e5e 100644
+index ce67d76195..635cb266e8 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
-@@ -9897,7 +9897,7 @@ remote_insert_watchpoint (struct target_ops *self, CORE_ADDR addr, int len,
+@@ -138,7 +138,7 @@ public:
+
+ bool stopped_data_address (CORE_ADDR *) override;
+
+- bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int) override;
++ bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, LONGEST) override;
+
+ int can_use_hw_breakpoint (enum bptype, int, int) override;
+
+@@ -10145,7 +10145,7 @@ remote_target::insert_watchpoint (CORE_ADDR addr, int len,
p = strchr (rs->buf, '\0');
addr = remote_address_masked (addr);
p += hexnumstr (p, (ULONGEST) addr);
@@ -317,16 +402,16 @@ index 94d5594175..86777f1e5e 100644
putpkt (rs->buf);
getpkt (&rs->buf, &rs->buf_size, 0);
-@@ -9917,7 +9917,7 @@ remote_insert_watchpoint (struct target_ops *self, CORE_ADDR addr, int len,
+@@ -10165,7 +10165,7 @@ remote_target::insert_watchpoint (CORE_ADDR addr, int len,
- static int
- remote_watchpoint_addr_within_range (struct target_ops *target, CORE_ADDR addr,
-- CORE_ADDR start, int length)
-+ CORE_ADDR start, LONGEST length)
+ bool
+ remote_target::watchpoint_addr_within_range (CORE_ADDR addr,
+- CORE_ADDR start, int length)
++ CORE_ADDR start, LONGEST length)
{
CORE_ADDR diff = remote_address_masked (addr - start);
-@@ -9946,7 +9946,7 @@ remote_remove_watchpoint (struct target_ops *self, CORE_ADDR addr, int len,
+@@ -10194,7 +10194,7 @@ remote_target::remove_watchpoint (CORE_ADDR addr, int len,
p = strchr (rs->buf, '\0');
addr = remote_address_masked (addr);
p += hexnumstr (p, (ULONGEST) addr);
@@ -335,74 +420,116 @@ index 94d5594175..86777f1e5e 100644
putpkt (rs->buf);
getpkt (&rs->buf, &rs->buf_size, 0);
+diff --git a/gdb/s390-linux-nat.c b/gdb/s390-linux-nat.c
+index d7c683e968..2403d05a18 100644
+--- a/gdb/s390-linux-nat.c
++++ b/gdb/s390-linux-nat.c
+@@ -121,7 +121,7 @@ public:
+ override;
+ int remove_hw_breakpoint (struct gdbarch *, struct bp_target_info *)
+ override;
+- int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
++ int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST) override;
+ bool have_continuable_watchpoint () override { return true; }
+ bool stopped_by_watchpoint () override;
+ int insert_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
diff --git a/gdb/target-delegates.c b/gdb/target-delegates.c
-index 2b449cbf01..f725215fff 100644
+index ed625ed030..3129ae295f 100644
--- a/gdb/target-delegates.c
+++ b/gdb/target-delegates.c
-@@ -733,14 +733,14 @@ debug_stopped_data_address (struct target_ops *self, CORE_ADDR *arg1)
+@@ -38,9 +38,9 @@ struct dummy_target : public target_ops
+ int have_steppable_watchpoint () override;
+ bool have_continuable_watchpoint () override;
+ bool stopped_data_address (CORE_ADDR *arg0) override;
+- bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
++ bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, LONGEST arg2) override;
+ int region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1) override;
+- bool can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
++ bool can_accel_watchpoint_condition (CORE_ADDR arg0, LONGEST arg1, int arg2, struct expression *arg3) override;
+ int masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1) override;
+ int can_do_single_step () override;
+ bool supports_terminal_ours () override;
+@@ -206,9 +206,9 @@ struct debug_target : public target_ops
+ int have_steppable_watchpoint () override;
+ bool have_continuable_watchpoint () override;
+ bool stopped_data_address (CORE_ADDR *arg0) override;
+- bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2) override;
++ bool watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, LONGEST arg2) override;
+ int region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1) override;
+- bool can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3) override;
++ bool can_accel_watchpoint_condition (CORE_ADDR arg0, LONGEST arg1, int arg2, struct expression *arg3) override;
+ int masked_watch_num_registers (CORE_ADDR arg0, CORE_ADDR arg1) override;
+ int can_do_single_step () override;
+ bool supports_terminal_ours () override;
+@@ -1068,19 +1068,19 @@ debug_target::stopped_data_address (CORE_ADDR *arg0)
}
- static int
--delegate_watchpoint_addr_within_range (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2, int arg3)
-+delegate_watchpoint_addr_within_range (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2, LONGEST arg3)
+ bool
+-target_ops::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2)
++target_ops::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, LONGEST arg2)
{
- self = self->beneath;
- return self->to_watchpoint_addr_within_range (self, arg1, arg2, arg3);
+ return this->beneath->watchpoint_addr_within_range (arg0, arg1, arg2);
}
- static int
--debug_watchpoint_addr_within_range (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2, int arg3)
-+debug_watchpoint_addr_within_range (struct target_ops *self, CORE_ADDR arg1, CORE_ADDR arg2, LONGEST arg3)
+ bool
+-dummy_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2)
++dummy_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, LONGEST arg2)
{
- int result;
- fprintf_unfiltered (gdb_stdlog, "-> %s->to_watchpoint_addr_within_range (...)\n", debug_target.to_shortname);
-@@ -752,7 +752,7 @@ debug_watchpoint_addr_within_range (struct target_ops *self, CORE_ADDR arg1, COR
+ return default_watchpoint_addr_within_range (this, arg0, arg1, arg2);
+ }
+
+ bool
+-debug_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int arg2)
++debug_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, LONGEST arg2)
+ {
+ bool result;
+ fprintf_unfiltered (gdb_stdlog, "-> %s->watchpoint_addr_within_range (...)\n", this->beneath->shortname ());
+@@ -1090,7 +1090,7 @@ debug_target::watchpoint_addr_within_range (CORE_ADDR arg0, CORE_ADDR arg1, int
fputs_unfiltered (", ", gdb_stdlog);
- target_debug_print_CORE_ADDR (arg2);
+ target_debug_print_CORE_ADDR (arg1);
fputs_unfiltered (", ", gdb_stdlog);
-- target_debug_print_int (arg3);
-+ target_debug_print_LONGEST (arg3);
+- target_debug_print_int (arg2);
++ target_debug_print_LONGEST (arg2);
fputs_unfiltered (") = ", gdb_stdlog);
- target_debug_print_int (result);
+ target_debug_print_bool (result);
fputs_unfiltered ("\n", gdb_stdlog);
-@@ -785,20 +785,20 @@ debug_region_ok_for_hw_watchpoint (struct target_ops *self, CORE_ADDR arg1, LONG
+@@ -1126,19 +1126,19 @@ debug_target::region_ok_for_hw_watchpoint (CORE_ADDR arg0, LONGEST arg1)
}
- static int
--delegate_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, int arg2, int arg3, struct expression *arg4)
-+delegate_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, LONGEST arg2, int arg3, struct expression *arg4)
+ bool
+-target_ops::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3)
++target_ops::can_accel_watchpoint_condition (CORE_ADDR arg0, LONGEST arg1, int arg2, struct expression *arg3)
{
- self = self->beneath;
- return self->to_can_accel_watchpoint_condition (self, arg1, arg2, arg3, arg4);
+ return this->beneath->can_accel_watchpoint_condition (arg0, arg1, arg2, arg3);
}
- static int
--tdefault_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, int arg2, int arg3, struct expression *arg4)
-+tdefault_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, LONGEST arg2, int arg3, struct expression *arg4)
+ bool
+-dummy_target::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3)
++dummy_target::can_accel_watchpoint_condition (CORE_ADDR arg0, LONGEST arg1, int arg2, struct expression *arg3)
{
- return 0;
+ return false;
}
- static int
--debug_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, int arg2, int arg3, struct expression *arg4)
-+debug_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, LONGEST arg2, int arg3, struct expression *arg4)
+ bool
+-debug_target::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2, struct expression *arg3)
++debug_target::can_accel_watchpoint_condition (CORE_ADDR arg0, LONGEST arg1, int arg2, struct expression *arg3)
{
- int result;
- fprintf_unfiltered (gdb_stdlog, "-> %s->to_can_accel_watchpoint_condition (...)\n", debug_target.to_shortname);
-@@ -808,7 +808,7 @@ debug_can_accel_watchpoint_condition (struct target_ops *self, CORE_ADDR arg1, i
- fputs_unfiltered (", ", gdb_stdlog);
- target_debug_print_CORE_ADDR (arg1);
+ bool result;
+ fprintf_unfiltered (gdb_stdlog, "-> %s->can_accel_watchpoint_condition (...)\n", this->beneath->shortname ());
+@@ -1146,7 +1146,7 @@ debug_target::can_accel_watchpoint_condition (CORE_ADDR arg0, int arg1, int arg2
+ fprintf_unfiltered (gdb_stdlog, "<- %s->can_accel_watchpoint_condition (", this->beneath->shortname ());
+ target_debug_print_CORE_ADDR (arg0);
fputs_unfiltered (", ", gdb_stdlog);
-- target_debug_print_int (arg2);
-+ target_debug_print_LONGEST (arg2);
+- target_debug_print_int (arg1);
++ target_debug_print_LONGEST (arg1);
fputs_unfiltered (", ", gdb_stdlog);
- target_debug_print_int (arg3);
+ target_debug_print_int (arg2);
fputs_unfiltered (", ", gdb_stdlog);
diff --git a/gdb/target.c b/gdb/target.c
-index a1ac6d0697..eb0538cb82 100644
+index 7d0da32ec6..46d120b9d2 100644
--- a/gdb/target.c
+++ b/gdb/target.c
-@@ -53,7 +53,7 @@ static void generic_tls_error (void) ATTRIBUTE_NORETURN;
+@@ -56,7 +56,7 @@ static void generic_tls_error (void) ATTRIBUTE_NORETURN;
static void default_terminal_info (struct target_ops *, const char *, int);
static int default_watchpoint_addr_within_range (struct target_ops *,
@@ -411,7 +538,7 @@ index a1ac6d0697..eb0538cb82 100644
static int default_region_ok_for_hw_watchpoint (struct target_ops *,
CORE_ADDR, LONGEST);
-@@ -3120,7 +3120,7 @@ default_region_ok_for_hw_watchpoint (struct target_ops *self,
+@@ -3205,7 +3205,7 @@ default_region_ok_for_hw_watchpoint (struct target_ops *self,
static int
default_watchpoint_addr_within_range (struct target_ops *target,
CORE_ADDR addr,
@@ -421,24 +548,24 @@ index a1ac6d0697..eb0538cb82 100644
return addr >= start && addr < start + length;
}
diff --git a/gdb/target.h b/gdb/target.h
-index 7a70c3f6da..35eee91a83 100644
+index aaed35f690..b1943a6d0a 100644
--- a/gdb/target.h
+++ b/gdb/target.h
-@@ -535,7 +535,7 @@ struct target_ops
- int (*to_stopped_data_address) (struct target_ops *, CORE_ADDR *)
- TARGET_DEFAULT_RETURN (0);
- int (*to_watchpoint_addr_within_range) (struct target_ops *,
-- CORE_ADDR, CORE_ADDR, int)
-+ CORE_ADDR, CORE_ADDR, LONGEST)
+@@ -552,7 +552,7 @@ struct target_ops
+ TARGET_DEFAULT_RETURN (false);
+ virtual bool stopped_data_address (CORE_ADDR *)
+ TARGET_DEFAULT_RETURN (false);
+- virtual bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int)
++ virtual bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, LONGEST)
TARGET_DEFAULT_FUNC (default_watchpoint_addr_within_range);
/* Documentation of this routine is provided with the corresponding
-@@ -545,7 +545,7 @@ struct target_ops
+@@ -560,7 +560,7 @@ struct target_ops
+ virtual int region_ok_for_hw_watchpoint (CORE_ADDR, LONGEST)
TARGET_DEFAULT_FUNC (default_region_ok_for_hw_watchpoint);
- int (*to_can_accel_watchpoint_condition) (struct target_ops *,
-- CORE_ADDR, int, int,
-+ CORE_ADDR, LONGEST, int,
- struct expression *)
- TARGET_DEFAULT_RETURN (0);
- int (*to_masked_watch_num_registers) (struct target_ops *,
+- virtual bool can_accel_watchpoint_condition (CORE_ADDR, int, int,
++ virtual bool can_accel_watchpoint_condition (CORE_ADDR, LONGEST, int,
+ struct expression *)
+ TARGET_DEFAULT_RETURN (false);
+ virtual int masked_watch_num_registers (CORE_ADDR, CORE_ADDR)
diff --git a/gdb-rhbz795424-bitpos-23of25.patch b/gdb-rhbz795424-bitpos-23of25.patch
index e42f912..4bd2010 100644
--- a/gdb-rhbz795424-bitpos-23of25.patch
+++ b/gdb-rhbz795424-bitpos-23of25.patch
@@ -147,10 +147,10 @@ Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bitpos-tdep.patch
diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c
-index ea53b9ee10..34dfb661f8 100644
+index 9b749559a1..485db44ae9 100644
--- a/gdb/alpha-tdep.c
+++ b/gdb/alpha-tdep.c
-@@ -301,17 +301,17 @@ alpha_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -299,17 +299,17 @@ alpha_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int i;
@@ -172,7 +172,7 @@ index ea53b9ee10..34dfb661f8 100644
CORE_ADDR func_addr = find_function_addr (function, NULL);
/* The ABI places the address of the called function in T12. */
-@@ -431,8 +431,8 @@ alpha_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -429,8 +429,8 @@ alpha_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
for (i = nargs; m_arg--, --i >= 0;)
{
const gdb_byte *contents = m_arg->contents;
@@ -183,7 +183,7 @@ index ea53b9ee10..34dfb661f8 100644
/* Copy the bytes destined for registers into arg_reg_buffer. */
if (offset < sizeof(arg_reg_buffer))
-@@ -444,7 +444,7 @@ alpha_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -442,7 +442,7 @@ alpha_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
}
else
{
@@ -193,10 +193,10 @@ index ea53b9ee10..34dfb661f8 100644
offset += tlen;
contents += tlen;
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
-index 651794a41f..c96790a6af 100644
+index 338a0f2c87..241abcd6d5 100644
--- a/gdb/amd64-tdep.c
+++ b/gdb/amd64-tdep.c
-@@ -880,8 +880,8 @@ amd64_push_arguments (struct regcache *regcache, int nargs,
+@@ -882,8 +882,8 @@ amd64_push_arguments (struct regcache *regcache, int nargs,
};
struct value **stack_args = XALLOCAVEC (struct value *, nargs);
int num_stack_args = 0;
@@ -207,7 +207,7 @@ index 651794a41f..c96790a6af 100644
int integer_reg = 0;
int sse_reg = 0;
int i;
-@@ -893,7 +893,7 @@ amd64_push_arguments (struct regcache *regcache, int nargs,
+@@ -895,7 +895,7 @@ amd64_push_arguments (struct regcache *regcache, int nargs,
for (i = 0; i < nargs; i++)
{
struct type *type = value_type (args[i]);
@@ -216,7 +216,7 @@ index 651794a41f..c96790a6af 100644
enum amd64_reg_class theclass[2];
int needed_integer_regs = 0;
int needed_sse_regs = 0;
-@@ -957,7 +957,7 @@ amd64_push_arguments (struct regcache *regcache, int nargs,
+@@ -959,7 +959,7 @@ amd64_push_arguments (struct regcache *regcache, int nargs,
gdb_assert (regnum != -1);
memset (buf, 0, sizeof buf);
@@ -239,10 +239,10 @@ index 32ebead05d..2e388f2440 100644
/* See if our value is returned through a register. If it is, then
diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
-index bc83326ae7..d38dd4918b 100644
+index 382080a714..885591cbf2 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
-@@ -3477,7 +3477,7 @@ arm_vfp_cprc_reg_char (enum arm_vfp_cprc_base_type b)
+@@ -3468,7 +3468,7 @@ arm_vfp_cprc_reg_char (enum arm_vfp_cprc_base_type b)
array). Vector types are not currently supported, matching the
generic AAPCS support. */
@@ -251,7 +251,7 @@ index bc83326ae7..d38dd4918b 100644
arm_vfp_cprc_sub_candidate (struct type *t,
enum arm_vfp_cprc_base_type *base_type)
{
-@@ -3560,7 +3560,7 @@ arm_vfp_cprc_sub_candidate (struct type *t,
+@@ -3551,7 +3551,7 @@ arm_vfp_cprc_sub_candidate (struct type *t,
}
else
{
@@ -260,7 +260,7 @@ index bc83326ae7..d38dd4918b 100644
unsigned unitlen;
count = arm_vfp_cprc_sub_candidate (TYPE_TARGET_TYPE (t),
-@@ -3583,12 +3583,12 @@ arm_vfp_cprc_sub_candidate (struct type *t,
+@@ -3574,12 +3574,12 @@ arm_vfp_cprc_sub_candidate (struct type *t,
case TYPE_CODE_STRUCT:
{
@@ -275,7 +275,7 @@ index bc83326ae7..d38dd4918b 100644
if (!field_is_static (&TYPE_FIELD (t, i)))
sub_count = arm_vfp_cprc_sub_candidate (TYPE_FIELD_TYPE (t, i),
-@@ -3612,13 +3612,15 @@ arm_vfp_cprc_sub_candidate (struct type *t,
+@@ -3603,13 +3603,15 @@ arm_vfp_cprc_sub_candidate (struct type *t,
case TYPE_CODE_UNION:
{
@@ -294,7 +294,7 @@ index bc83326ae7..d38dd4918b 100644
if (sub_count == -1)
return -1;
count = (count > sub_count ? count : sub_count);
-@@ -3654,7 +3656,7 @@ arm_vfp_call_candidate (struct type *t, enum arm_vfp_cprc_base_type *base_type,
+@@ -3645,7 +3647,7 @@ arm_vfp_call_candidate (struct type *t, enum arm_vfp_cprc_base_type *base_type,
int *count)
{
enum arm_vfp_cprc_base_type b = VFP_CPRC_UNKNOWN;
@@ -303,7 +303,7 @@ index bc83326ae7..d38dd4918b 100644
if (c <= 0 || c > 4)
return 0;
*base_type = b;
-@@ -3735,7 +3737,7 @@ arm_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -3726,7 +3728,7 @@ arm_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
for (argnum = 0; argnum < nargs; argnum++)
{
@@ -313,10 +313,10 @@ index bc83326ae7..d38dd4918b 100644
struct type *target_type;
enum type_code typecode;
diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c
-index aa65a76e07..f74b927854 100644
+index 5aa61ba2d9..96de319da5 100644
--- a/gdb/avr-tdep.c
+++ b/gdb/avr-tdep.c
-@@ -1191,13 +1191,13 @@ avr_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
+@@ -1192,13 +1192,13 @@ avr_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
struct stack_item
{
@@ -332,7 +332,7 @@ index aa65a76e07..f74b927854 100644
{
struct stack_item *si;
si = XNEW (struct stack_item);
-@@ -1285,12 +1285,12 @@ avr_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -1286,12 +1286,12 @@ avr_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
for (i = 0; i < nargs; i++)
{
@@ -349,7 +349,7 @@ index aa65a76e07..f74b927854 100644
/* Calculate the potential last register needed.
E.g. For length 2, registers regnum and regnum-1 (say 25 and 24)
diff --git a/gdb/bfin-tdep.c b/gdb/bfin-tdep.c
-index d87fd4d896..f8b02daf29 100644
+index 63fbf6209e..864530bf05 100644
--- a/gdb/bfin-tdep.c
+++ b/gdb/bfin-tdep.c
@@ -504,7 +504,7 @@ bfin_push_dummy_call (struct gdbarch *gdbarch,
@@ -409,7 +409,7 @@ index 5fa79ef2cf..1c99356746 100644
/* How may registers worth of storage do we need for this argument? */
reg_demand = (len / 4) + (len % 4 != 0 ? 1 : 0);
diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c
-index 809a647984..6c7059fff4 100644
+index 55e77b6bb6..1317a0a3a7 100644
--- a/gdb/h8300-tdep.c
+++ b/gdb/h8300-tdep.c
@@ -637,7 +637,7 @@ h8300_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
@@ -445,10 +445,10 @@ index 809a647984..6c7059fff4 100644
for (offset = 0; offset < padded_len; offset += wordsize)
{
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c
-index 513f0e0391..0872d5e809 100644
+index 9692b33e09..3cca3fb6c1 100644
--- a/gdb/hppa-tdep.c
+++ b/gdb/hppa-tdep.c
-@@ -989,7 +989,7 @@ hppa64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -986,7 +986,7 @@ hppa64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
{
struct value *arg = args[i];
struct type *type = value_type (arg);
@@ -457,7 +457,7 @@ index 513f0e0391..0872d5e809 100644
const bfd_byte *valbuf;
bfd_byte fptrbuf[8];
int regnum;
-@@ -1184,7 +1184,7 @@ hppa64_return_value (struct gdbarch *gdbarch, struct value *function,
+@@ -1181,7 +1181,7 @@ hppa64_return_value (struct gdbarch *gdbarch, struct value *function,
struct type *type, struct regcache *regcache,
gdb_byte *readbuf, const gdb_byte *writebuf)
{
@@ -480,10 +480,10 @@ index 7ee2f4cf2a..b811296b0d 100644
if (struct_return)
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c
-index af4942ab2e..6b1586a9e3 100644
+index d67e2e40c5..dfff555493 100644
--- a/gdb/i386-tdep.c
+++ b/gdb/i386-tdep.c
-@@ -2677,7 +2677,7 @@ i386_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -2678,7 +2678,7 @@ i386_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
gdb_byte buf[4];
int i;
int write_pass;
@@ -492,7 +492,7 @@ index af4942ab2e..6b1586a9e3 100644
/* BND registers can be in arbitrary values at the moment of the
inferior call. This can cause boundary violations that are not
-@@ -2692,7 +2692,7 @@ i386_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -2693,7 +2693,7 @@ i386_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
for (write_pass = 0; write_pass < 2; write_pass++)
{
@@ -501,7 +501,7 @@ index af4942ab2e..6b1586a9e3 100644
if (struct_return)
{
-@@ -2709,7 +2709,7 @@ i386_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -2710,7 +2710,7 @@ i386_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
for (i = 0; i < nargs; i++)
{
@@ -510,7 +510,7 @@ index af4942ab2e..6b1586a9e3 100644
if (write_pass)
{
-@@ -2916,7 +2916,7 @@ i386_reg_struct_return_p (struct gdbarch *gdbarch, struct type *type)
+@@ -2917,7 +2917,7 @@ i386_reg_struct_return_p (struct gdbarch *gdbarch, struct type *type)
{
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
enum type_code code = TYPE_CODE (type);
@@ -519,7 +519,7 @@ index af4942ab2e..6b1586a9e3 100644
gdb_assert (code == TYPE_CODE_STRUCT
|| code == TYPE_CODE_UNION
-@@ -3738,7 +3738,7 @@ static int
+@@ -3727,7 +3727,7 @@ static int
i386_convert_register_p (struct gdbarch *gdbarch,
int regnum, struct type *type)
{
@@ -528,7 +528,7 @@ index af4942ab2e..6b1586a9e3 100644
/* Values may be spread across multiple registers. Most debugging
formats aren't expressive enough to specify the locations, so
-@@ -3771,7 +3771,7 @@ i386_register_to_value (struct frame_info *frame, int regnum,
+@@ -3760,7 +3760,7 @@ i386_register_to_value (struct frame_info *frame, int regnum,
int *optimizedp, int *unavailablep)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -537,7 +537,7 @@ index af4942ab2e..6b1586a9e3 100644
if (i386_fp_regnum_p (gdbarch, regnum))
return i387_register_to_value (frame, regnum, type, to,
-@@ -3807,7 +3807,7 @@ static void
+@@ -3796,7 +3796,7 @@ static void
i386_value_to_register (struct frame_info *frame, int regnum,
struct type *type, const gdb_byte *from)
{
@@ -563,10 +563,10 @@ index f8e2f234e0..b703c2cae4 100644
CORE_ADDR struct_ptr;
diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c
-index 0fe6754412..9a27740691 100644
+index fd79f3f4cd..941c897070 100644
--- a/gdb/m32r-tdep.c
+++ b/gdb/m32r-tdep.c
-@@ -679,7 +679,7 @@ m32r_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -671,7 +671,7 @@ m32r_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
CORE_ADDR regval;
gdb_byte *val;
gdb_byte valbuf[M32R_ARG_REGISTER_SIZE];
@@ -601,42 +601,11 @@ index b9fa5e6d4c..2320e61a69 100644
/* Non-scalars bigger than 4 bytes are left aligned, others are
right aligned. */
-diff --git a/gdb/m88k-tdep.c b/gdb/m88k-tdep.c
-index 6a50126548..5a3a67a06a 100644
---- a/gdb/m88k-tdep.c
-+++ b/gdb/m88k-tdep.c
-@@ -254,13 +254,13 @@ m88k_store_arguments (struct regcache *regcache, int nargs,
- {
- struct gdbarch *gdbarch = regcache->arch ();
- int num_register_words = 0;
-- int num_stack_words = 0;
-+ LONGEST num_stack_words = 0;
- int i;
-
- for (i = 0; i < nargs; i++)
- {
- struct type *type = value_type (args[i]);
-- int len = TYPE_LENGTH (type);
-+ LONGEST len = TYPE_LENGTH (type);
-
- if (m88k_integral_or_pointer_p (type) && len < 4)
- {
-@@ -302,8 +302,8 @@ m88k_store_arguments (struct regcache *regcache, int nargs,
- {
- const bfd_byte *valbuf = value_contents (args[i]);
- struct type *type = value_type (args[i]);
-- int len = TYPE_LENGTH (type);
-- int stack_word = num_stack_words;
-+ LONGEST len = TYPE_LENGTH (type);
-+ LONGEST stack_word = num_stack_words;
-
- if (m88k_in_register_p (type))
- {
diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c
-index ecfd4f36db..0cc4574425 100644
+index 0e8c3f97e2..f60a49b90b 100644
--- a/gdb/mep-tdep.c
+++ b/gdb/mep-tdep.c
-@@ -2253,7 +2253,7 @@ push_large_arguments (CORE_ADDR sp, int argc, struct value **argv,
+@@ -2241,7 +2241,7 @@ push_large_arguments (CORE_ADDR sp, int argc, struct value **argv,
for (i = 0; i < argc; i++)
{
@@ -646,7 +615,7 @@ index ecfd4f36db..0cc4574425 100644
if (arg_len > MEP_GPR_SIZE)
{
diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
-index 981959ad4b..9572f92f65 100644
+index cc67cd3bdd..2980604968 100644
--- a/gdb/mips-tdep.c
+++ b/gdb/mips-tdep.c
@@ -477,7 +477,7 @@ static void
@@ -795,10 +764,10 @@ index 981959ad4b..9572f92f65 100644
val = value_contents (arg);
diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c
-index 93c02d67b4..17ce536a90 100644
+index e12e01df03..93cc78eb51 100644
--- a/gdb/mn10300-tdep.c
+++ b/gdb/mn10300-tdep.c
-@@ -1212,7 +1212,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch,
+@@ -1198,7 +1198,7 @@ mn10300_push_dummy_call (struct gdbarch *gdbarch,
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
const int push_size = register_size (gdbarch, E_PC_REGNUM);
int regs_used;
@@ -807,22 +776,6 @@ index 93c02d67b4..17ce536a90 100644
int stack_offset = 0;
int argnum;
const gdb_byte *val;
-diff --git a/gdb/mt-tdep.c b/gdb/mt-tdep.c
-index a4ad0c65f1..953002a7c6 100644
---- a/gdb/mt-tdep.c
-+++ b/gdb/mt-tdep.c
-@@ -789,9 +789,9 @@ mt_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
- gdb_byte buf[MT_MAX_STRUCT_SIZE];
- int argreg = MT_1ST_ARGREG;
- int split_param_len = 0;
-- int stack_dest = sp;
-+ LONGEST stack_dest = sp;
- int slacklen;
-- int typelen;
-+ LONGEST typelen;
- int i, j;
-
- /* First handle however many args we can fit into MT_1ST_ARGREG thru
diff --git a/gdb/ppc-sysv-tdep.c b/gdb/ppc-sysv-tdep.c
index a6ba5d0ffd..184b7d6261 100644
--- a/gdb/ppc-sysv-tdep.c
@@ -918,10 +871,10 @@ index a6ba5d0ffd..184b7d6261 100644
if (writebuf != NULL)
regcache_cooked_write_part (regcache, regnum,
diff --git a/gdb/rl78-tdep.c b/gdb/rl78-tdep.c
-index 3db72a1e96..0f4172d553 100644
+index af6a089608..be10f0a3c0 100644
--- a/gdb/rl78-tdep.c
+++ b/gdb/rl78-tdep.c
-@@ -1347,8 +1347,8 @@ rl78_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -1346,8 +1346,8 @@ rl78_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
for (i = nargs - 1; i >= 0; i--)
{
struct type *value_type = value_enclosing_type (args[i]);
@@ -933,7 +886,7 @@ index 3db72a1e96..0f4172d553 100644
sp -= container_len;
write_memory (rl78_make_data_address (sp),
diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c
-index 38c86d4cd8..f6d4816401 100644
+index e3e086c210..76f553bebf 100644
--- a/gdb/rs6000-aix-tdep.c
+++ b/gdb/rs6000-aix-tdep.c
@@ -187,9 +187,9 @@ rs6000_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
@@ -957,37 +910,6 @@ index 38c86d4cd8..f6d4816401 100644
if (argbytes)
{
-diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c
-index bdde5c34c8..975b072b39 100644
---- a/gdb/s390-linux-tdep.c
-+++ b/gdb/s390-linux-tdep.c
-@@ -3132,7 +3132,7 @@ s390_function_arg_vector (struct type *type)
- /* Determine whether N is a power of two. */
-
- static int
--is_power_of_two (unsigned int n)
-+is_power_of_two (ULONGEST n)
- {
- return n && ((n & (n - 1)) == 0);
- }
-@@ -3189,7 +3189,7 @@ s390_handle_arg (struct s390_arg_state *as, struct value *arg,
- enum bfd_endian byte_order, int is_unnamed)
- {
- struct type *type = check_typedef (value_type (arg));
-- unsigned int length = TYPE_LENGTH (type);
-+ LONGEST length = TYPE_LENGTH (type);
- int write_mode = as->regcache != NULL;
-
- if (s390_function_arg_float (type))
-@@ -3452,7 +3452,7 @@ s390_register_return_value (struct gdbarch *gdbarch, struct type *type,
- {
- enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
- int word_size = gdbarch_ptr_bit (gdbarch) / 8;
-- int length = TYPE_LENGTH (type);
-+ LONGEST length = TYPE_LENGTH (type);
- int code = TYPE_CODE (type);
-
- if (code == TYPE_CODE_FLT || code == TYPE_CODE_DECFLOAT)
diff --git a/gdb/score-tdep.c b/gdb/score-tdep.c
index a167932327..4674eb7900 100644
--- a/gdb/score-tdep.c
@@ -1002,10 +924,10 @@ index a167932327..4674eb7900 100644
CORE_ADDR addr = 0;
diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c
-index fbc5c9f1d0..1f6052fa97 100644
+index edf7e94b2e..3ab10e8401 100644
--- a/gdb/sh-tdep.c
+++ b/gdb/sh-tdep.c
-@@ -813,7 +813,7 @@ sh_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
+@@ -812,7 +812,7 @@ sh_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
static int
sh_use_struct_convention (int renesas_abi, struct type *type)
{
@@ -1014,7 +936,7 @@ index fbc5c9f1d0..1f6052fa97 100644
int nelem = TYPE_NFIELDS (type);
/* The Renesas ABI returns aggregate types always on stack. */
-@@ -915,7 +915,7 @@ sh_frame_align (struct gdbarch *ignore, CORE_ADDR sp)
+@@ -914,7 +914,7 @@ sh_frame_align (struct gdbarch *ignore, CORE_ADDR sp)
/* Helper function to justify value in register according to endianess. */
static const gdb_byte *
@@ -1023,7 +945,7 @@ index fbc5c9f1d0..1f6052fa97 100644
{
static gdb_byte valbuf[4];
-@@ -1075,7 +1075,8 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch,
+@@ -1074,7 +1074,8 @@ sh_push_dummy_call_fpu (struct gdbarch *gdbarch,
struct type *type;
CORE_ADDR regval;
const gdb_byte *val;
@@ -1033,7 +955,7 @@ index fbc5c9f1d0..1f6052fa97 100644
int pass_on_stack = 0;
int treat_as_flt;
int last_reg_arg = INT_MAX;
-@@ -1216,7 +1217,8 @@ sh_push_dummy_call_nofpu (struct gdbarch *gdbarch,
+@@ -1215,7 +1216,8 @@ sh_push_dummy_call_nofpu (struct gdbarch *gdbarch,
struct type *type;
CORE_ADDR regval;
const gdb_byte *val;
@@ -1043,30 +965,8 @@ index fbc5c9f1d0..1f6052fa97 100644
int pass_on_stack = 0;
int last_reg_arg = INT_MAX;
-diff --git a/gdb/sh64-tdep.c b/gdb/sh64-tdep.c
-index ad533c9d79..7700e68402 100644
---- a/gdb/sh64-tdep.c
-+++ b/gdb/sh64-tdep.c
-@@ -1079,7 +1079,7 @@ sh64_push_dummy_call (struct gdbarch *gdbarch,
- CORE_ADDR struct_addr)
- {
- enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-- int stack_offset, stack_alloc;
-+ LONGEST stack_offset, stack_alloc;
- int int_argreg;
- int float_arg_index = 0;
- int double_arg_index = 0;
-@@ -1088,7 +1088,7 @@ sh64_push_dummy_call (struct gdbarch *gdbarch,
- CORE_ADDR regval;
- const gdb_byte *val;
- gdb_byte valbuf[8];
-- int len;
-+ LONGEST len;
- int argreg_size;
- int fp_args[12];
-
diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c
-index 7400c24fc5..39db22947c 100644
+index 9fd6a66199..56b72ea505 100644
--- a/gdb/sparc64-tdep.c
+++ b/gdb/sparc64-tdep.c
@@ -1205,7 +1205,7 @@ sparc64_16_byte_align_p (struct type *type)
@@ -1124,10 +1024,10 @@ index 7400c24fc5..39db22947c 100644
gdb_byte buf[16];
diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c
-index b82bb0ebc3..f87e6f57e1 100644
+index 2567c240d4..46b6d6243e 100644
--- a/gdb/spu-tdep.c
+++ b/gdb/spu-tdep.c
-@@ -1430,7 +1430,7 @@ spu_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -1431,7 +1431,7 @@ spu_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
struct value *arg = args[i];
struct type *type = check_typedef (value_type (arg));
const gdb_byte *contents = value_contents (arg);
@@ -1136,7 +1036,7 @@ index b82bb0ebc3..f87e6f57e1 100644
/* If the argument doesn't wholly fit into registers, it and
all subsequent arguments go to the stack. */
-@@ -1462,7 +1462,7 @@ spu_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
+@@ -1463,7 +1463,7 @@ spu_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
{
struct value *arg = args[i];
struct type *type = check_typedef (value_type (arg));
@@ -1260,10 +1160,10 @@ index 31650ac3a9..91b088251c 100644
gdb_byte buf[xstormy16_pc_size];
diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c
-index e09592a94e..95133a5871 100644
+index 01f96165dc..066081c3f9 100644
--- a/gdb/xtensa-tdep.c
+++ b/gdb/xtensa-tdep.c
-@@ -1628,8 +1628,7 @@ xtensa_store_return_value (struct type *type,
+@@ -1627,8 +1627,7 @@ xtensa_store_return_value (struct type *type,
if (len > (callsize > 8 ? 8 : 16))
internal_error (__FILE__, __LINE__,
@@ -1273,7 +1173,7 @@ index e09592a94e..95133a5871 100644
areg = arreg_number (gdbarch,
gdbarch_tdep (gdbarch)->a0_base + 2 + callsize, wb);
-@@ -1703,18 +1702,18 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
+@@ -1702,18 +1701,18 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
{
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
int i;
@@ -1295,7 +1195,7 @@ index e09592a94e..95133a5871 100644
int regno; /* regno if in register. */
} u;
};
-@@ -1738,9 +1737,10 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
+@@ -1737,9 +1736,10 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
{
struct value *arg = args[i];
struct type *arg_type = check_typedef (value_type (arg));
@@ -1309,7 +1209,7 @@ index e09592a94e..95133a5871 100644
switch (TYPE_CODE (arg_type))
{
case TYPE_CODE_INT:
-@@ -1810,8 +1810,8 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
+@@ -1809,8 +1809,8 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
info->align = TYPE_LENGTH (builtin_type (gdbarch)->builtin_long);
break;
}
@@ -1319,7 +1219,7 @@ index e09592a94e..95133a5871 100644
/* Align size and onstack_size. */
size = (size + info->align - 1) & ~(info->align - 1);
-@@ -1856,7 +1856,7 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
+@@ -1855,7 +1855,7 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
if (info->onstack)
{
@@ -1328,7 +1228,7 @@ index e09592a94e..95133a5871 100644
CORE_ADDR offset = sp + info->u.offset;
/* Odd-sized structs are aligned to the lower side of a memory
-@@ -1872,7 +1872,7 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
+@@ -1871,7 +1871,7 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
}
else
{
diff --git a/gdb-vla-intel-fortran-strides.patch b/gdb-vla-intel-fortran-strides.patch
index d01bfec..0f5cbcf 100644
--- a/gdb-vla-intel-fortran-strides.patch
+++ b/gdb-vla-intel-fortran-strides.patch
@@ -37,10 +37,10 @@ dbfd7140bf4c0500d1f5d192be781f83f78f7922
23 files changed, 1242 insertions(+), 183 deletions(-)
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
-index 51f133f1b5..5105c8d23a 100644
+index 6ecc5a9be6..fa9ff30721 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
-@@ -2601,11 +2601,14 @@ dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
+@@ -2600,11 +2600,14 @@ dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton,
/* See dwarf2loc.h. */
int
@@ -57,7 +57,7 @@ index 51f133f1b5..5105c8d23a 100644
if (prop == NULL)
return 0;
-@@ -2629,7 +2632,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
+@@ -2628,7 +2631,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
*value = value_as_address (val);
}
@@ -66,7 +66,7 @@ index 51f133f1b5..5105c8d23a 100644
}
}
break;
-@@ -2651,7 +2654,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
+@@ -2650,7 +2653,7 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
if (!value_optimized_out (val))
{
*value = value_as_address (val);
@@ -75,7 +75,7 @@ index 51f133f1b5..5105c8d23a 100644
}
}
}
-@@ -2659,8 +2662,8 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
+@@ -2658,8 +2661,8 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
case PROP_CONST:
*value = prop->data.const_val;
@@ -86,7 +86,7 @@ index 51f133f1b5..5105c8d23a 100644
case PROP_ADDR_OFFSET:
{
struct dwarf2_property_baton *baton
-@@ -2681,11 +2684,38 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
+@@ -2680,11 +2683,38 @@ dwarf2_evaluate_property (const struct dynamic_prop *prop,
val = value_at (baton->offset_info.type,
pinfo->addr + baton->offset_info.offset);
*value = value_as_address (val);
@@ -145,10 +145,10 @@ index f82e7b2d11..74f0597359 100644
property to C code.
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 58da0fc1f9..8fc1f7ec45 100644
+index 49ce83ff20..a28d0a029e 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
-@@ -17551,7 +17551,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17635,7 +17635,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
struct type *base_type, *orig_base_type;
struct type *range_type;
struct attribute *attr;
@@ -157,7 +157,7 @@ index 58da0fc1f9..8fc1f7ec45 100644
int low_default_is_valid;
int high_bound_is_count = 0;
const char *name;
-@@ -17571,7 +17571,9 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17655,7 +17655,9 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
low.kind = PROP_CONST;
high.kind = PROP_CONST;
@@ -167,7 +167,7 @@ index 58da0fc1f9..8fc1f7ec45 100644
/* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
omitting DW_AT_lower_bound. */
-@@ -17604,6 +17606,13 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17688,6 +17690,14 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
break;
}
@@ -175,13 +175,14 @@ index 58da0fc1f9..8fc1f7ec45 100644
+ if (attr)
+ if (!attr_to_dynamic_prop (attr, die, cu, &stride))
+ complaint (&symfile_complaints, _("Missing DW_AT_byte_stride "
-+ "- DIE at 0x%x [in module %s]"),
-+ to_underlying (die->sect_off), objfile_name (cu->objfile));
++ "- DIE at 0x%s [in module %s]"),
++ sect_offset_str (die->sect_off),
++ objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
+
attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
if (attr)
attr_to_dynamic_prop (attr, die, cu, &low);
-@@ -17680,7 +17689,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17765,7 +17775,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
&& !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
high.data.const_val |= negative_mask;
@@ -191,10 +192,10 @@ index 58da0fc1f9..8fc1f7ec45 100644
if (high_bound_is_count)
TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
diff --git a/gdb/eval.c b/gdb/eval.c
-index 6f74c41b9f..d9bca2791d 100644
+index 5bd6e2cbfe..50dde3ed4f 100644
--- a/gdb/eval.c
+++ b/gdb/eval.c
-@@ -384,29 +384,325 @@ init_array_element (struct value *array, struct value *element,
+@@ -377,29 +377,325 @@ init_array_element (struct value *array, struct value *element,
return index;
}
@@ -538,7 +539,7 @@ index 6f74c41b9f..d9bca2791d 100644
}
-@@ -1928,19 +2224,8 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -1926,19 +2222,8 @@ evaluate_subexp_standard (struct type *expect_type,
switch (code)
{
case TYPE_CODE_ARRAY:
@@ -559,7 +560,7 @@ index 6f74c41b9f..d9bca2791d 100644
case TYPE_CODE_PTR:
case TYPE_CODE_FUNC:
-@@ -2336,49 +2621,6 @@ evaluate_subexp_standard (struct type *expect_type,
+@@ -2334,49 +2619,6 @@ evaluate_subexp_standard (struct type *expect_type,
}
return (arg1);
@@ -609,7 +610,7 @@ index 6f74c41b9f..d9bca2791d 100644
case BINOP_LOGICAL_AND:
arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
if (noside == EVAL_SKIP)
-@@ -3282,6 +3524,9 @@ calc_f77_array_dims (struct type *array_type)
+@@ -3293,6 +3535,9 @@ calc_f77_array_dims (struct type *array_type)
int ndimen = 1;
struct type *tmp_type;
@@ -620,15 +621,22 @@ index 6f74c41b9f..d9bca2791d 100644
error (_("Can't get dimensions for a non-array type"));
diff --git a/gdb/expprint.c b/gdb/expprint.c
-index ac5ae0fea1..41bb357a27 100644
+index 70d355d369..1dfc7943da 100644
--- a/gdb/expprint.c
+++ b/gdb/expprint.c
-@@ -581,12 +581,10 @@ print_subexp_standard (struct expression *exp, int *pos,
+@@ -578,17 +578,14 @@ print_subexp_standard (struct expression *exp, int *pos,
+ longest_to_int (exp->elts[pc + 1].longconst);
*pos += 2;
+- if (range_type == NONE_BOUND_DEFAULT_EXCLUSIVE
+- || range_type == LOW_BOUND_DEFAULT_EXCLUSIVE)
++ if ((range_type & SUBARRAY_HIGH_BOUND_EXCLUSIVE)
++ == SUBARRAY_HIGH_BOUND_EXCLUSIVE)
+ fputs_filtered ("EXCLUSIVE_", stream);
fputs_filtered ("RANGE(", stream);
- if (range_type == HIGH_BOUND_DEFAULT
-- || range_type == NONE_BOUND_DEFAULT)
+- || range_type == NONE_BOUND_DEFAULT
+- || range_type == NONE_BOUND_DEFAULT_EXCLUSIVE)
+ if ((range_type & SUBARRAY_LOW_BOUND) == SUBARRAY_LOW_BOUND)
print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
fputs_filtered ("..", stream);
@@ -638,7 +646,7 @@ index ac5ae0fea1..41bb357a27 100644
print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
fputs_filtered (")", stream);
return;
-@@ -1094,16 +1092,16 @@ dump_subexp_body_standard (struct expression *exp,
+@@ -1098,22 +1095,24 @@ dump_subexp_body_standard (struct expression *exp,
switch (range_type)
{
@@ -650,16 +658,28 @@ index ac5ae0fea1..41bb357a27 100644
+ case SUBARRAY_HIGH_BOUND:
fputs_filtered ("Range '..EXP'", stream);
break;
+- case LOW_BOUND_DEFAULT_EXCLUSIVE:
+- fputs_filtered ("ExclusiveRange '..EXP'", stream);
+- break;
- case HIGH_BOUND_DEFAULT:
+ case SUBARRAY_LOW_BOUND:
fputs_filtered ("Range 'EXP..'", stream);
break;
- case NONE_BOUND_DEFAULT:
++ case (SUBARRAY_LOW_BOUND
++ | SUBARRAY_HIGH_BOUND
++ | SUBARRAY_HIGH_BOUND_EXCLUSIVE):
++ fputs_filtered ("ExclusiveRange '..EXP'", stream);
++ break;
+ case (SUBARRAY_LOW_BOUND | SUBARRAY_HIGH_BOUND):
fputs_filtered ("Range 'EXP..EXP'", stream);
break;
+- case NONE_BOUND_DEFAULT_EXCLUSIVE:
++ case (SUBARRAY_HIGH_BOUND | SUBARRAY_HIGH_BOUND_EXCLUSIVE):
+ fputs_filtered ("ExclusiveRange 'EXP..EXP'", stream);
+ break;
default:
-@@ -1111,11 +1109,9 @@ dump_subexp_body_standard (struct expression *exp,
+@@ -1121,11 +1120,9 @@ dump_subexp_body_standard (struct expression *exp,
break;
}
@@ -674,38 +694,60 @@ index ac5ae0fea1..41bb357a27 100644
}
break;
diff --git a/gdb/expression.h b/gdb/expression.h
-index a783ea5fef..be24792eb6 100644
+index 9f26bb8d60..2cc0d2c1e3 100644
--- a/gdb/expression.h
+++ b/gdb/expression.h
-@@ -153,17 +153,17 @@ extern void dump_raw_expression (struct expression *,
+@@ -148,28 +148,27 @@ extern void dump_raw_expression (struct expression *,
struct ui_file *, const char *);
extern void dump_prefix_expression (struct expression *, struct ui_file *);
-/* In an OP_RANGE expression, either bound could be empty, indicating
- that its value is by default that of the corresponding bound of the
-- array or string. So we have four sorts of subrange. This
-- enumeration type is to identify this. */
--
-+/* In an OP_RANGE expression, either bound can be provided by the user, or not.
-+ In addition to this, the user can also specify a stride value to indicated
-+ only certain elements of the array. This enumeration type is to identify
-+ this. */
-+
+- array or string. Also, the upper end of the range can be exclusive
+- or inclusive. So we have six sorts of subrange. This enumeration
+- type is to identify this. */
++/* In an OP_RANGE expression, either bound can be provided by the
++ user, or not. In addition to this, the user can also specify a
++ stride value to indicated only certain elements of the array.
++ Also, the upper end of the range can be exclusive or inclusive.
++ This enumeration type is to identify this. */
+
enum range_type
- {
-- BOTH_BOUND_DEFAULT, /* "(:)" */
-- LOW_BOUND_DEFAULT, /* "(:high)" */
-- HIGH_BOUND_DEFAULT, /* "(low:)" */
-- NONE_BOUND_DEFAULT /* "(low:high)" */
+-{
+- /* Neither the low nor the high bound was given -- so this refers to
+- the entire available range. */
+- BOTH_BOUND_DEFAULT,
+- /* The low bound was not given and the high bound is inclusive. */
+- LOW_BOUND_DEFAULT,
+- /* The high bound was not given and the low bound in inclusive. */
+- HIGH_BOUND_DEFAULT,
+- /* Both bounds were given and both are inclusive. */
+- NONE_BOUND_DEFAULT,
+- /* The low bound was not given and the high bound is exclusive. */
+- NONE_BOUND_DEFAULT_EXCLUSIVE,
+- /* Both bounds were given. The low bound is inclusive and the high
+- bound is exclusive. */
+- LOW_BOUND_DEFAULT_EXCLUSIVE,
+-};
++ {
+ SUBARRAY_NONE_BOUND = 0x0, /* "( : )" */
+ SUBARRAY_LOW_BOUND = 0x1, /* "(low:)" */
+ SUBARRAY_HIGH_BOUND = 0x2, /* "(:high)" */
-+ SUBARRAY_STRIDE = 0x4 /* "(::stride)" */
- };
++ SUBARRAY_STRIDE = 0x4, /* "(::stride)" */
++ /* The low bound was not given and the high bound is exclusive.
++ In this case we always use (SUBARRAY_HIGH_BOUND |
++ SUBARRAY_HIGH_BOUND_EXCLUSIVE). */
++ SUBARRAY_HIGH_BOUND_EXCLUSIVE = 0x8,
++ /* Both bounds were given. The low bound is inclusive and the high
++ bound is exclusive. In this case, we use (SUBARRAY_LOW_BOUND |
++ SUBARRAY_HIGH_BOUND | SUBARRAY_HIGH_BOUND_EXCLUSIVE). */
++ // SUBARRAY_LOW_BOUND_EXCLUSIVE = (SUBARRAY_LOW_BOUND
++ // | SUBARRAY_HIGH_BOUND_EXCLUSIVE),
++ };
#endif /* !defined (EXPRESSION_H) */
diff --git a/gdb/f-exp.y b/gdb/f-exp.y
-index 6495e03cc5..cd89bb7ca2 100644
+index e39f68417c..7d03e54a18 100644
--- a/gdb/f-exp.y
+++ b/gdb/f-exp.y
@@ -257,31 +257,63 @@ arglist : subrange
@@ -798,7 +840,7 @@ index 903f2af638..b4067a8460 100644
for (i = lowerbound;
(i < upperbound + 1 && (*elts) < options->print_max);
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
-index 43fe56e487..a72e2b3e0a 100644
+index 6d70006081..64711e8cfb 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
@@ -902,7 +902,8 @@ operator== (const range_bounds &l, const range_bounds &r)
@@ -863,7 +905,7 @@ index 43fe56e487..a72e2b3e0a 100644
else if (bit_stride > 0)
TYPE_LENGTH (result_type) =
(bit_stride * (high_bound - low_bound + 1) + 7) / 8;
-@@ -1992,12 +2002,12 @@ resolve_dynamic_range (struct type *dyn_range_type,
+@@ -1996,12 +2006,12 @@ resolve_dynamic_range (struct type *dyn_range_type,
CORE_ADDR value;
struct type *static_range_type, *static_target_type;
const struct dynamic_prop *prop;
@@ -878,7 +920,7 @@ index 43fe56e487..a72e2b3e0a 100644
{
low_bound.kind = PROP_CONST;
low_bound.data.const_val = value;
-@@ -2009,7 +2019,7 @@ resolve_dynamic_range (struct type *dyn_range_type,
+@@ -2013,7 +2023,7 @@ resolve_dynamic_range (struct type *dyn_range_type,
}
prop = &TYPE_RANGE_DATA (dyn_range_type)->high;
@@ -887,7 +929,7 @@ index 43fe56e487..a72e2b3e0a 100644
{
high_bound.kind = PROP_CONST;
high_bound.data.const_val = value;
-@@ -2024,12 +2034,20 @@ resolve_dynamic_range (struct type *dyn_range_type,
+@@ -2028,12 +2038,20 @@ resolve_dynamic_range (struct type *dyn_range_type,
high_bound.data.const_val = 0;
}
@@ -910,10 +952,10 @@ index 43fe56e487..a72e2b3e0a 100644
return static_range_type;
}
diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
-index 92ca85c295..179238ce82 100644
+index 5f614e573a..878c8b0302 100644
--- a/gdb/gdbtypes.h
+++ b/gdb/gdbtypes.h
-@@ -560,6 +560,10 @@ struct range_bounds
+@@ -612,6 +612,10 @@ struct range_bounds
struct dynamic_prop high;
@@ -924,7 +966,7 @@ index 92ca85c295..179238ce82 100644
/* True if HIGH range bound contains the number of elements in the
subrange. This affects how the final hight bound is computed. */
-@@ -731,7 +735,6 @@ struct main_type
+@@ -790,7 +794,6 @@ struct main_type
/* * Union member used for range types. */
struct range_bounds *bounds;
@@ -932,7 +974,7 @@ index 92ca85c295..179238ce82 100644
} flds_bnds;
/* * Slot to point to additional language-specific fields of this
-@@ -1253,6 +1256,15 @@ extern void allocate_gnat_aux_type (struct type *);
+@@ -1344,6 +1347,15 @@ extern bool set_type_align (struct type *, ULONGEST);
TYPE_RANGE_DATA(range_type)->high.kind
#define TYPE_LOW_BOUND_KIND(range_type) \
TYPE_RANGE_DATA(range_type)->low.kind
@@ -948,7 +990,7 @@ index 92ca85c295..179238ce82 100644
/* Property accessors for the type data location. */
#define TYPE_DATA_LOCATION(thistype) \
-@@ -1287,6 +1299,9 @@ extern void allocate_gnat_aux_type (struct type *);
+@@ -1378,6 +1390,9 @@ extern bool set_type_align (struct type *, ULONGEST);
TYPE_HIGH_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
#define TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED(arraytype) \
TYPE_LOW_BOUND_UNDEFINED(TYPE_INDEX_TYPE(arraytype))
@@ -958,7 +1000,7 @@ index 92ca85c295..179238ce82 100644
#define TYPE_ARRAY_UPPER_BOUND_VALUE(arraytype) \
(TYPE_HIGH_BOUND(TYPE_INDEX_TYPE((arraytype))))
-@@ -1818,6 +1833,7 @@ extern struct type *create_array_type_with_stride
+@@ -1909,6 +1924,7 @@ extern struct type *create_array_type_with_stride
struct dynamic_prop *, unsigned int);
extern struct type *create_range_type (struct type *, struct type *,
@@ -967,10 +1009,10 @@ index 92ca85c295..179238ce82 100644
const struct dynamic_prop *);
diff --git a/gdb/parse.c b/gdb/parse.c
-index 8b2bb22c76..e1bf3edbe2 100644
+index 193abe853f..ea0d027bb0 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
-@@ -984,22 +984,20 @@ operator_length_standard (const struct expression *expr, int endpos,
+@@ -989,24 +989,20 @@ operator_length_standard (const struct expression *expr, int endpos,
case OP_RANGE:
oplen = 3;
@@ -981,6 +1023,7 @@ index 8b2bb22c76..e1bf3edbe2 100644
- switch (range_type)
- {
- case LOW_BOUND_DEFAULT:
+- case LOW_BOUND_DEFAULT_EXCLUSIVE:
- case HIGH_BOUND_DEFAULT:
- args = 1;
- break;
@@ -988,6 +1031,7 @@ index 8b2bb22c76..e1bf3edbe2 100644
- args = 0;
- break;
- case NONE_BOUND_DEFAULT:
+- case NONE_BOUND_DEFAULT_EXCLUSIVE:
- args = 2;
- break;
- }
@@ -1005,10 +1049,10 @@ index 8b2bb22c76..e1bf3edbe2 100644
break;
diff --git a/gdb/rust-exp.y b/gdb/rust-exp.y
-index 199e87671e..397a92dfdb 100644
+index 9f21498d4c..5d0f24f4e1 100644
--- a/gdb/rust-exp.y
+++ b/gdb/rust-exp.y
-@@ -2448,23 +2448,17 @@ convert_ast_to_expression (struct parser_state *state,
+@@ -2477,24 +2477,28 @@ convert_ast_to_expression (struct parser_state *state,
case OP_RANGE:
{
@@ -1025,33 +1069,48 @@ index 199e87671e..397a92dfdb 100644
{
convert_ast_to_expression (state, operation->right.op, top);
- if (kind == BOTH_BOUND_DEFAULT)
-- kind = LOW_BOUND_DEFAULT;
-- else
-- {
+- kind = (operation->inclusive
+- ? LOW_BOUND_DEFAULT : LOW_BOUND_DEFAULT_EXCLUSIVE);
++ if (kind == SUBARRAY_NONE_BOUND)
++ {
++ kind = (range_type) SUBARRAY_HIGH_BOUND;
++ if (!operation->inclusive)
++ kind = (range_type) (kind | SUBARRAY_HIGH_BOUND_EXCLUSIVE);
++ }
+ else
+ {
- gdb_assert (kind == HIGH_BOUND_DEFAULT);
-- kind = NONE_BOUND_DEFAULT;
-- }
-+ kind = (range_type) (kind | SUBARRAY_HIGH_BOUND);
+- kind = (operation->inclusive
+- ? NONE_BOUND_DEFAULT : NONE_BOUND_DEFAULT_EXCLUSIVE);
++ gdb_assert (kind == SUBARRAY_LOW_BOUND);
++ kind = (range_type) (kind | SUBARRAY_HIGH_BOUND);
++ if (!operation->inclusive)
++ kind = (range_type) (kind | SUBARRAY_HIGH_BOUND_EXCLUSIVE);
+ }
}
- write_exp_elt_opcode (state, OP_RANGE);
- write_exp_elt_longcst (state, kind);
+ else
diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
-index f7bec33a42..cb924e084d 100644
+index ed0394592f..4be112b7a3 100644
--- a/gdb/rust-lang.c
+++ b/gdb/rust-lang.c
-@@ -1366,9 +1366,9 @@ rust_range (struct expression *exp, int *pos, enum noside noside)
+@@ -1106,13 +1106,11 @@ rust_range (struct expression *exp, int *pos, enum noside noside)
kind = (enum range_type) longest_to_int (exp->elts[*pos + 1].longconst);
*pos += 3;
-- if (kind == HIGH_BOUND_DEFAULT || kind == NONE_BOUND_DEFAULT)
+- if (kind == HIGH_BOUND_DEFAULT || kind == NONE_BOUND_DEFAULT
+- || kind == NONE_BOUND_DEFAULT_EXCLUSIVE)
+ if ((kind & SUBARRAY_LOW_BOUND) == SUBARRAY_LOW_BOUND)
low = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-- if (kind == LOW_BOUND_DEFAULT || kind == NONE_BOUND_DEFAULT)
+- if (kind == LOW_BOUND_DEFAULT || kind == LOW_BOUND_DEFAULT_EXCLUSIVE
+- || kind == NONE_BOUND_DEFAULT || kind == NONE_BOUND_DEFAULT_EXCLUSIVE)
+ if ((kind & SUBARRAY_HIGH_BOUND) == SUBARRAY_HIGH_BOUND)
high = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+- bool inclusive = (kind == NONE_BOUND_DEFAULT || kind == LOW_BOUND_DEFAULT);
++ bool inclusive = (!((kind & SUBARRAY_HIGH_BOUND_EXCLUSIVE) == SUBARRAY_HIGH_BOUND_EXCLUSIVE));
if (noside == EVAL_SKIP)
-@@ -1457,7 +1457,7 @@ rust_compute_range (struct type *type, struct value *range,
+ return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
+@@ -1201,7 +1199,7 @@ rust_compute_range (struct type *type, struct value *range,
*low = 0;
*high = 0;
@@ -1060,7 +1119,7 @@ index f7bec33a42..cb924e084d 100644
if (TYPE_NFIELDS (type) == 0)
return;
-@@ -1465,15 +1465,14 @@ rust_compute_range (struct type *type, struct value *range,
+@@ -1209,15 +1207,14 @@ rust_compute_range (struct type *type, struct value *range,
i = 0;
if (strcmp (TYPE_FIELD_NAME (type, 0), "start") == 0)
{
@@ -1076,9 +1135,9 @@ index f7bec33a42..cb924e084d 100644
- ? LOW_BOUND_DEFAULT : NONE_BOUND_DEFAULT);
+ *kind = (range_type) (*kind | SUBARRAY_HIGH_BOUND);
*high = value_as_long (value_field (range, i));
- }
- }
-@@ -1488,7 +1487,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
+
+ if (rust_inclusive_range_type_p (type))
+@@ -1235,7 +1232,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
struct type *rhstype;
LONGEST low, high_bound;
/* Initialized to appease the compiler. */
@@ -1087,7 +1146,7 @@ index f7bec33a42..cb924e084d 100644
LONGEST high = 0;
int want_slice = 0;
-@@ -1586,7 +1585,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
+@@ -1333,7 +1330,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
error (_("Cannot subscript non-array type"));
if (want_slice
@@ -1096,7 +1155,7 @@ index f7bec33a42..cb924e084d 100644
low = low_bound;
if (low < 0)
error (_("Index less than zero"));
-@@ -1604,7 +1603,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
+@@ -1351,7 +1348,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
CORE_ADDR addr;
struct value *addrval, *tem;
@@ -1741,10 +1800,10 @@ index 58e3a09c37..035def5466 100644
if (type_not_associated (array_type))
error (_("no such vector element (vector not associated)"));
diff --git a/gdb/valops.c b/gdb/valops.c
-index 9525dc8499..4cd4fd96ae 100644
+index 62a86c06a3..5c35d7a091 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
-@@ -3776,56 +3776,195 @@ value_of_this_silent (const struct language_defn *lang)
+@@ -3808,56 +3808,195 @@ value_of_this_silent (const struct language_defn *lang)
struct value *
value_slice (struct value *array, int lowbound, int length)
@@ -1971,10 +2030,10 @@ index 9525dc8499..4cd4fd96ae 100644
/* Create a value for a FORTRAN complex number. Currently most of the
diff --git a/gdb/value.h b/gdb/value.h
-index 7dc67dc721..03ca06448f 100644
+index 4d75c966ed..e838fd580e 100644
--- a/gdb/value.h
+++ b/gdb/value.h
-@@ -1128,6 +1128,8 @@ extern struct value *varying_to_slice (struct value *);
+@@ -1139,6 +1139,8 @@ extern struct value *varying_to_slice (struct value *);
extern struct value *value_slice (struct value *, int, int);
diff --git a/gdb-vla-intel-fortran-vla-strings.patch b/gdb-vla-intel-fortran-vla-strings.patch
index c33d9f9..4d2a16a 100644
--- a/gdb-vla-intel-fortran-vla-strings.patch
+++ b/gdb-vla-intel-fortran-vla-strings.patch
@@ -33,10 +33,10 @@ git diff --stat -p gdb/master...gdb/users/bheckel/fortran-vla-strings
20 files changed, 827 insertions(+), 110 deletions(-)
diff --git a/gdb/NEWS b/gdb/NEWS
-index 6c9a2ecefd..f40eb6c390 100644
+index cef558039e..fa4c0382dc 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
-@@ -3,6 +3,8 @@
+@@ -59,6 +59,8 @@ SH-5/SH64 running OpenBSD SH-5/SH64 support in sh*-*-openbsd*
*** Changes in GDB 8.1
@@ -79,10 +79,10 @@ index c4c0918e26..3904fab260 100644
type_print (value_type (val), "", stream, -1);
fprintf_filtered (stream, ") ");
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
-index 8fc1f7ec45..98e7d842f0 100644
+index a28d0a029e..4006f4a48f 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
-@@ -2077,7 +2077,8 @@ static void read_signatured_type (struct signatured_type *);
+@@ -1789,7 +1789,8 @@ static void read_signatured_type (struct signatured_type *);
static int attr_to_dynamic_prop (const struct attribute *attr,
struct die_info *die, struct dwarf2_cu *cu,
@@ -92,7 +92,7 @@ index 8fc1f7ec45..98e7d842f0 100644
/* memory allocation interface */
-@@ -13745,7 +13746,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -13681,7 +13682,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
{
newobj->static_link
= XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
@@ -101,7 +101,7 @@ index 8fc1f7ec45..98e7d842f0 100644
}
cu->list_in_scope = &local_symbols;
-@@ -16327,7 +16328,8 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -16385,7 +16386,8 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
byte_stride_prop
= (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
@@ -111,7 +111,7 @@ index 8fc1f7ec45..98e7d842f0 100644
if (!stride_ok)
{
complaint (&symfile_complaints,
-@@ -17075,29 +17077,94 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17156,29 +17158,94 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct type *type, *range_type, *index_type, *char_type;
struct attribute *attr;
@@ -217,7 +217,7 @@ index 8fc1f7ec45..98e7d842f0 100644
char_type = language_string_char_type (cu->language_defn, gdbarch);
type = create_string_type (NULL, char_type, range_type);
-@@ -17446,7 +17513,8 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17529,7 +17596,8 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
static int
attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
@@ -226,8 +226,8 @@ index 8fc1f7ec45..98e7d842f0 100644
+ const gdb_byte *additional_data, int additional_data_size)
{
struct dwarf2_property_baton *baton;
- struct obstack *obstack = &cu->objfile->objfile_obstack;
-@@ -17456,14 +17524,33 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
+ struct obstack *obstack
+@@ -17540,14 +17608,33 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
if (attr_form_is_block (attr))
{
@@ -243,7 +243,7 @@ index 8fc1f7ec45..98e7d842f0 100644
+ gdb_byte *data;
+
+ data = (gdb_byte *) obstack_alloc(
-+ &cu->objfile->objfile_obstack,
++ &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
+ DW_BLOCK (attr)->size + additional_data_size);
+ memcpy (data, DW_BLOCK (attr)->data, DW_BLOCK (attr)->size);
+ memcpy (data + DW_BLOCK (attr)->size, additional_data,
@@ -265,7 +265,7 @@ index 8fc1f7ec45..98e7d842f0 100644
}
else if (attr_form_is_ref (attr))
{
-@@ -17496,8 +17583,28 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
+@@ -17580,8 +17667,28 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
baton = XOBNEW (obstack, struct dwarf2_property_baton);
baton->referenced_type = die_type (target_die, target_cu);
baton->locexpr.per_cu = cu->per_cu;
@@ -276,7 +276,7 @@ index 8fc1f7ec45..98e7d842f0 100644
+ {
+ gdb_byte *data;
+
-+ data = (gdb_byte *) obstack_alloc (&cu->objfile->objfile_obstack,
++ data = (gdb_byte *) obstack_alloc (&cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
+ DW_BLOCK (target_attr)->size + additional_data_size);
+ memcpy (data, DW_BLOCK (target_attr)->data,
+ DW_BLOCK (target_attr)->size);
@@ -296,15 +296,16 @@ index 8fc1f7ec45..98e7d842f0 100644
prop->data.baton = baton;
prop->kind = PROP_LOCEXPR;
gdb_assert (prop->data.baton != NULL);
-@@ -17608,24 +17715,24 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17692,7 +17799,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
if (attr)
- if (!attr_to_dynamic_prop (attr, die, cu, &stride))
+ if (!attr_to_dynamic_prop (attr, die, cu, &stride, NULL, 0))
complaint (&symfile_complaints, _("Missing DW_AT_byte_stride "
- "- DIE at 0x%x [in module %s]"),
- to_underlying (die->sect_off), objfile_name (cu->objfile));
+ "- DIE at 0x%s [in module %s]"),
+ sect_offset_str (die->sect_off),
+@@ -17700,7 +17807,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
if (attr)
@@ -312,8 +313,9 @@ index 8fc1f7ec45..98e7d842f0 100644
+ attr_to_dynamic_prop (attr, die, cu, &low, NULL, 0);
else if (!low_default_is_valid)
complaint (&symfile_complaints, _("Missing DW_AT_lower_bound "
- "- DIE at 0x%x [in module %s]"),
- to_underlying (die->sect_off), objfile_name (cu->objfile));
+ "- DIE at %s [in module %s]"),
+@@ -17708,10 +17815,10 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+ objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
attr = dwarf2_attr (die, DW_AT_upper_bound, cu);
- if (!attr_to_dynamic_prop (attr, die, cu, &high))
@@ -325,31 +327,31 @@ index 8fc1f7ec45..98e7d842f0 100644
{
/* If bounds are constant do the final calculation here. */
if (low.kind == PROP_CONST && high.kind == PROP_CONST)
-@@ -25223,7 +25330,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -25255,7 +25362,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
attr = dwarf2_attr (die, DW_AT_allocated, cu);
if (attr_form_is_block (attr))
{
- if (attr_to_dynamic_prop (attr, die, cu, &prop))
+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0))
- add_dyn_prop (DYN_PROP_ALLOCATED, prop, type, objfile);
+ add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
}
else if (attr != NULL)
-@@ -25238,7 +25345,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -25270,7 +25377,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
attr = dwarf2_attr (die, DW_AT_associated, cu);
if (attr_form_is_block (attr))
{
- if (attr_to_dynamic_prop (attr, die, cu, &prop))
+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0))
- add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type, objfile);
+ add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
}
else if (attr != NULL)
-@@ -25251,7 +25358,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -25283,7 +25390,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
/* Read DW_AT_data_location and set in type. */
attr = dwarf2_attr (die, DW_AT_data_location, cu);
- if (attr_to_dynamic_prop (attr, die, cu, &prop))
+ if (attr_to_dynamic_prop (attr, die, cu, &prop, NULL, 0))
- add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type, objfile);
+ add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
if (dwarf2_per_objfile->die_type_hash == NULL)
diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
@@ -506,10 +508,10 @@ index f14f1811f4..4f6a0ed09a 100644
}
fprintfi_filtered (level, stream, "End Type ");
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
-index a72e2b3e0a..cb5524023f 100644
+index 64711e8cfb..2aa5253100 100644
--- a/gdb/gdbtypes.c
+++ b/gdb/gdbtypes.c
-@@ -1915,7 +1915,8 @@ is_dynamic_type_internal (struct type *type, int top_level)
+@@ -1919,7 +1919,8 @@ is_dynamic_type_internal (struct type *type, int top_level)
type = check_typedef (type);
/* We only want to recognize references at the outermost level. */
@@ -519,7 +521,7 @@ index a72e2b3e0a..cb5524023f 100644
type = check_typedef (TYPE_TARGET_TYPE (type));
/* Types that have a dynamic TYPE_DATA_LOCATION are considered
-@@ -1949,6 +1950,7 @@ is_dynamic_type_internal (struct type *type, int top_level)
+@@ -1953,6 +1954,7 @@ is_dynamic_type_internal (struct type *type, int top_level)
}
case TYPE_CODE_ARRAY:
@@ -527,7 +529,7 @@ index a72e2b3e0a..cb5524023f 100644
{
gdb_assert (TYPE_NFIELDS (type) == 1);
-@@ -2067,7 +2069,8 @@ resolve_dynamic_array (struct type *type,
+@@ -2071,7 +2073,8 @@ resolve_dynamic_array (struct type *type,
struct dynamic_prop *prop;
unsigned int bit_stride = 0;
@@ -537,7 +539,7 @@ index a72e2b3e0a..cb5524023f 100644
type = copy_type (type);
-@@ -2092,11 +2095,15 @@ resolve_dynamic_array (struct type *type,
+@@ -2096,11 +2099,15 @@ resolve_dynamic_array (struct type *type,
ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type));
@@ -554,7 +556,7 @@ index a72e2b3e0a..cb5524023f 100644
prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
if (prop != NULL)
{
-@@ -2251,6 +2258,28 @@ resolve_dynamic_struct (struct type *type,
+@@ -2255,6 +2262,28 @@ resolve_dynamic_struct (struct type *type,
return resolved_type;
}
@@ -583,7 +585,7 @@ index a72e2b3e0a..cb5524023f 100644
/* Worker for resolved_dynamic_type. */
static struct type *
-@@ -2299,7 +2328,12 @@ resolve_dynamic_type_internal (struct type *type,
+@@ -2303,7 +2332,12 @@ resolve_dynamic_type_internal (struct type *type,
break;
}
@@ -1290,10 +1292,10 @@ index b6e777235c..14b611f7b5 100644
mi_gdb_test "582-var-show-format pvla2_not_associated" \
"582\\^done,format=\"natural\"" \
diff --git a/gdb/typeprint.c b/gdb/typeprint.c
-index c098a3f426..319fbaf94e 100644
+index 222fc0a06b..37021e8d0d 100644
--- a/gdb/typeprint.c
+++ b/gdb/typeprint.c
-@@ -538,6 +538,25 @@ whatis_exp (const char *exp, int show)
+@@ -464,6 +464,25 @@ whatis_exp (const char *exp, int show)
printf_filtered (" */\n");
}
@@ -1318,12 +1320,12 @@ index c098a3f426..319fbaf94e 100644
+
LA_PRINT_TYPE (type, "", gdb_stdout, show, 0, &flags);
printf_filtered ("\n");
-
+ }
diff --git a/gdb/valops.c b/gdb/valops.c
-index 4cd4fd96ae..9b25980090 100644
+index 5c35d7a091..9b6600b538 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
-@@ -1564,6 +1564,19 @@ value_ind (struct value *arg1)
+@@ -1565,6 +1565,19 @@ value_ind (struct value *arg1)
if (TYPE_CODE (base_type) == TYPE_CODE_PTR)
{
struct type *enc_type;
@@ -1343,7 +1345,7 @@ index 4cd4fd96ae..9b25980090 100644
/* We may be pointing to something embedded in a larger object.
Get the real type of the enclosing object. */
-@@ -1579,8 +1592,7 @@ value_ind (struct value *arg1)
+@@ -1580,8 +1593,7 @@ value_ind (struct value *arg1)
else
/* Retrieve the enclosing object pointed to. */
arg2 = value_at_lazy (enc_type,
@@ -1354,10 +1356,10 @@ index 4cd4fd96ae..9b25980090 100644
enc_type = value_type (arg2);
return readjust_indirect_value_type (arg2, enc_type, base_type, arg1);
diff --git a/gdb/valprint.c b/gdb/valprint.c
-index b19123f23e..d01d02fc09 100644
+index bed2cecf2c..2537d77c19 100644
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
-@@ -1111,12 +1111,6 @@ value_check_printable (struct value *val, struct ui_file *stream,
+@@ -1108,12 +1108,6 @@ value_check_printable (struct value *val, struct ui_file *stream,
return 0;
}
diff --git a/gdb-vla-intel-stringbt-fix.patch b/gdb-vla-intel-stringbt-fix.patch
index 1931154..78e1d87 100644
--- a/gdb-vla-intel-stringbt-fix.patch
+++ b/gdb-vla-intel-stringbt-fix.patch
@@ -31,7 +31,7 @@ Thanks,
Jan
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
-index 5105c8d23a..5486e4dc12 100644
+index fa9ff30721..cfca1c2751 100644
--- a/gdb/dwarf2loc.c
+++ b/gdb/dwarf2loc.c
@@ -42,6 +42,7 @@
diff --git a/gdb.spec b/gdb.spec
index e258001..8a0c0bb 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -18,22 +18,22 @@
Name: %{?scl_prefix}gdb
# Freeze it when GDB gets branched
-%global snapsrc 20180109
+%global snapsrc 20180522
# See timestamp of source gnulib installed into gdb/gnulib/ .
%global snapgnulib 20161115
%global tarname gdb-%{version}
-Version: 8.1
+Version: 8.1.50.%{snapsrc}
# 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: 14%{?dist}
+Release: 15%{?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
# Do not provide URL for snapshots as the file lasts there only for 2 days.
# ftp://sourceware.org/pub/gdb/releases/FIXME{tarname}.tar.xz
-#Source: % {tarname}.tar.xz
-Source: ftp://sourceware.org/pub/gdb/releases/%{tarname}.tar.xz
+Source: %{tarname}.tar.xz
+#Source: ftp://sourceware.org/pub/gdb/releases/%{tarname}.tar.xz
Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
URL: http://gnu.org/software/gdb/
@@ -1026,6 +1026,9 @@ then
fi
%changelog
+* Wed May 30 2018 Sergio Durigan Junior <sergiodj@redhat.com> - 8.1.50.20180522-15.fc28
+- Rebase to FSF GDB 8.1.50.20180522 (8.2pre).
+
* Mon Apr 2 2018 Jan Kratochvil <jan.kratochvil@redhat.com> - 8.1-14.fc28
- Revert 'Fix PDF build on Rawhide/F-29', rm -rf texinfo/ (from RH BZ 1562580).
diff --git a/sources b/sources
index 5cb0e7a..37748c2 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
SHA512 (gdb-libstdc++-v3-python-7.1.1-20170526.tar.xz) = 3d540b99581ffa4cf2810bec979c9a01a1f8ce782b7c8efb46b40dd2421d60cdb0e52b53c5477c3e86a57957a2a14489f5c29dc53868738a1ef79e79cf76d0a1
SHA512 (v1.6.1.tar.gz) = c7c9c8ba78021fff3fde12a216f5729c6031114e5a727f49b7ff1a31c53b5ddba24d1b3aee252d8278ecd1fafe78a44ed059c12b9eb29eca33093e0720673468
-SHA512 (gdb-8.1.tar.xz) = ffd82f415d7652d62dad1716c307836f594217a363429609beb7d70239e8bf06b73b393345b0e000796228e56681ed7656ac3c8be05e91d6d652ab0d5b1dc357
+SHA512 (gdb-8.1.50.20180522.tar.xz) = 27a6b106cc1f21a74acf31be45d623115a18818a9f5008ac7748dbe745685f41f055fe8acf736ee5f0d6716d47b2a4307197db8899a3a4e220bed72b1e126d97
reply other threads:[~2026-06-27 23:58 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178260471783.1.17720709538872295747.rpms-gdb-2bcd68d7bfcc@fedoraproject.org \
--to=sergiodj@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox