summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2019-06-01 00:44:08 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2019-06-01 00:44:08 +0000
commit8113892617de0ababfc7c5773c7d147f807243d3 (patch)
tree215f908414b55511ecbc05cc9435c5638fcd39b6
parent5536f6f75bd5c6bbd67f44cb6037e3f121c3ba61 (diff)
downloadfreebsd-ports-8113892617de0ababfc7c5773c7d147f807243d3.zip
Update port to GDB 8.3.
New features in GDB 8.3 include support for DWARF index caches and styling (colors) in the CLI and TUI. Source code styling is also available via the new SOURCE_HIGHLIGHT option (enabled by default). GDB 8.3 also adds support for FreeBSD/riscv64. In addition, kgdb has been updated for changes in 8.3 along with support for FreeBSD/riscv64 kernels. The libc++ helpers have been updated to a newer version which adds support for std::list<> and std::forward_list<>. The helpers now also support Python 3. Finally, a few post-8.3 patches have been backported which add suport for TLS (Thread Local Storage) variables on FreeBSD amd64, i386, powerpc, and riscv architectures. Note that amd64 and i386 do not support examining TLS variables in core dumps currently. This support along with support for additional architectures require kernel changes and will be added in the future once the kernel has been updated. Reviewed by: pizzamig (maintainer) Differential Revision: https://reviews.freebsd.org/D20403
-rw-r--r--devel/gdb/Makefile31
-rw-r--r--devel/gdb/distinfo10
-rw-r--r--devel/gdb/files/commit-1163a4b7a3419
-rw-r--r--devel/gdb/files/commit-2861ee4fde63
-rw-r--r--devel/gdb/files/commit-36c53a026260
-rw-r--r--devel/gdb/files/commit-6e056c8178166
-rw-r--r--devel/gdb/files/commit-8399425f5f69
-rw-r--r--devel/gdb/files/commit-8aa0243d54197
-rw-r--r--devel/gdb/files/commit-93579f6f9057
-rw-r--r--devel/gdb/files/commit-945f3901b5224
-rw-r--r--devel/gdb/files/commit-b0f87ed03260
-rw-r--r--devel/gdb/files/commit-cd250a189830
-rw-r--r--devel/gdb/files/commit-ce25aa57a364
-rw-r--r--devel/gdb/files/commit-dd6876c91c237
-rw-r--r--devel/gdb/files/commit-df22c1e5d536
-rw-r--r--devel/gdb/files/commit-ef0bd2046f165
-rw-r--r--devel/gdb/files/commit-f5424cfa7e63
-rw-r--r--devel/gdb/files/extrapatch-kgdb158
-rw-r--r--devel/gdb/files/kgdb/aarch64-fbsd-kern.c2
-rw-r--r--devel/gdb/files/kgdb/amd64fbsd-kern.c2
-rw-r--r--devel/gdb/files/kgdb/fbsd-kld.c3
-rw-r--r--devel/gdb/files/kgdb/fbsd-kthr.c3
-rw-r--r--devel/gdb/files/kgdb/fbsd-kvm.c37
-rw-r--r--devel/gdb/files/kgdb/mipsfbsd-kern.c3
-rw-r--r--devel/gdb/files/kgdb/ppcfbsd-kern.c3
-rw-r--r--devel/gdb/files/kgdb/riscv-fbsd-kern.c210
-rw-r--r--devel/gdb/files/patch-fixes8
-rw-r--r--devel/gdb/files/patch-gdb_aarch64-fbsd-tdep.c19
-rw-r--r--devel/gdb/files/patch-gdb_aarch64-linux-tdep.c18
-rw-r--r--devel/gdb/files/patch-gdb_aarch64-tdep.c11
-rw-r--r--devel/gdb/files/patch-gdb_alpha-tdep.c11
-rw-r--r--devel/gdb/files/patch-gdb_arch_arm-get-next-pcs.c20
-rw-r--r--devel/gdb/files/patch-gdb_arm-fbsd-tdep.c19
-rw-r--r--devel/gdb/files/patch-gdb_arm-linux-tdep.c90
-rw-r--r--devel/gdb/files/patch-gdb_arm-obsd-tdep.c19
-rw-r--r--devel/gdb/files/patch-gdb_bfin-linux-tdep.c11
-rw-r--r--devel/gdb/files/patch-gdb_completer.c11
-rw-r--r--devel/gdb/files/patch-gdb_configure14
-rw-r--r--devel/gdb/files/patch-gdb_fbsd-nat.c18
-rw-r--r--devel/gdb/files/patch-gdb_hppa-nbsd-tdep.c44
-rw-r--r--devel/gdb/files/patch-gdb_i386-nbsd-tdep.c157
-rw-r--r--devel/gdb/files/patch-gdb_linespec.c11
-rw-r--r--devel/gdb/files/patch-gdb_microblaze-linux-tdep.c13
-rw-r--r--devel/gdb/files/patch-gdb_mips-fbsd-tdep.c53
-rw-r--r--devel/gdb/files/patch-gdb_mips-linux-tdep.c122
-rw-r--r--devel/gdb/files/patch-gdb_mips-tdep.c20
-rw-r--r--devel/gdb/files/patch-gdb_mips64-obsd-tdep.c19
-rw-r--r--devel/gdb/files/patch-gdb_mn10300-linux-tdep.c42
-rw-r--r--devel/gdb/files/patch-gdb_nios2-linux-tdep.c24
-rw-r--r--devel/gdb/files/patch-gdb_ppc-linux-tdep.c50
-rw-r--r--devel/gdb/files/patch-gdb_ppc-nbsd-tdep.c48
-rw-r--r--devel/gdb/files/patch-gdb_ppc64-tdep.c252
-rw-r--r--devel/gdb/files/patch-gdb_rs6000-tdep.c11
-rw-r--r--devel/gdb/files/patch-gdb_sparc-linux-tdep.c28
-rw-r--r--devel/gdb/files/patch-gdb_sparc64-linux-tdep.c15
-rw-r--r--devel/gdb/files/patch-gdb_tick6x-linux-tdep.c11
-rw-r--r--devel/gdb/files/patch-gdb_tilegx-linux-tdep.c15
-rw-r--r--devel/gdb/files/patch-gdb_tramp-frame.h11
-rw-r--r--devel/gdb/files/patch-gdb_xtensa-tdep.h20
59 files changed, 1974 insertions, 1633 deletions
diff --git a/devel/gdb/Makefile b/devel/gdb/Makefile
index 92e34679cdd9..67a2e9e0b872 100644
--- a/devel/gdb/Makefile
+++ b/devel/gdb/Makefile
@@ -2,8 +2,8 @@
# $FreeBSD$
PORTNAME= gdb
-PORTVERSION= 8.2.1
-PORTREVISION= 3
+PORTVERSION= 8.3
+PORTREVISION= 0
CATEGORIES= devel
MASTER_SITES= GNU
@@ -14,12 +14,12 @@ LICENSE= GPLv3
LICENSE_FILE= ${WRKSRC}/COPYING3
# untested on sparc64, might work
-ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 mips powerpc powerpc64
+NOT_FOR_ARCHS= sparc64
LIB_DEPENDS= libmpfr.so:math/mpfr
TEST_DEPENDS= runtest:misc/dejagnu
-USES= compiler:c++11-lang cpe gmake libtool tar:xz
+USES= compiler:c++11-lang cpe gmake libtool pkgconfig tar:xz
USE_PYTHON= flavors py3kplist
TEST_TARGET= check
@@ -39,17 +39,24 @@ CFLAGS+= -DRL_NO_COMPAT -Wno-unused-function -Wno-unused-variable
CFLAGS+= -Wno-unknown-warning-option
EXCLUDE= dejagnu expect sim texinfo intl
EXTRACT_AFTER_ARGS= ${EXCLUDE:S/^/--exclude /}
-EXTRA_PATCHES= ${FILESDIR}/commit-8aa0243d54 \
- ${FILESDIR}/commit-93579f6f90 \
- ${FILESDIR}/commit-2861ee4fde
+EXTRA_PATCHES= ${FILESDIR}/commit-1163a4b7a3 \
+ ${FILESDIR}/commit-dd6876c91c \
+ ${FILESDIR}/commit-6e056c8178 \
+ ${FILESDIR}/commit-36c53a0262 \
+ ${FILESDIR}/commit-ef0bd2046f \
+ ${FILESDIR}/commit-945f3901b5 \
+ ${FILESDIR}/commit-f5424cfa7e \
+ ${FILESDIR}/commit-ce25aa57a3 \
+ ${FILESDIR}/commit-8399425f5f
LIB_DEPENDS+= libexpat.so:textproc/expat2
VER= ${PORTVERSION:S/.//g}
PLIST_SUB= VER=${VER}
-OPTIONS_DEFINE= DEBUG GDB_LINK GUILE KGDB NLS PYTHON TUI
+OPTIONS_DEFINE= DEBUG GDB_LINK GUILE KGDB NLS PYTHON SOURCE_HIGHLIGHT TUI
-OPTIONS_DEFAULT= GDB_LINK KGDB NLS PYTHON TUI PORT_READLINE PORT_ICONV SYSTEM_ZLIB
+OPTIONS_DEFAULT= GDB_LINK KGDB NLS PYTHON SOURCE_HIGHLIGHT TUI
+OPTIONS_DEFAULT+= PORT_READLINE PORT_ICONV SYSTEM_ZLIB
OPTIONS_SINGLE= READLINE ICONV ZLIB
OPTIONS_SINGLE_READLINE= BUNDLED_READLINE PORT_READLINE
@@ -62,6 +69,7 @@ BUNDLED_READLINE_DESC= from gdb distfile
BUNDLED_ZLIB_DESC= from gdb distfile
PORT_READLINE_DESC= from devel/readline port
PORT_ICONV_DESC= use libiconv, with wider charset support
+SOURCE_HIGHLIGHT_DESC= Source Code Styling
SYSTEM_ICONV_DESC= use libc iconv, with no wchar support
SYSTEM_ZLIB_DESC= use system zlib
TUI_DESC= Text User Interface enabled
@@ -79,6 +87,9 @@ PORT_ICONV_USES= iconv:wchar_t
PYTHON_CONFIGURE_ON= --with-python=${PYTHON_CMD}
PYTHON_CONFIGURE_OFF= --without-python
PYTHON_USES= python
+SOURCE_HIGHLIGHT_WITH= source-highlight
+SOURCE_HIGHLIGHT_LIB_DEPENDS= \
+ libsource-highlight.so:textproc/source-highlight
SYSTEM_ICONV_USES= iconv
SYSTEM_ZLIB_WITH= system-zlib
TUI_CONFIGURE_ENABLE= tui
@@ -96,7 +107,7 @@ USE_GITHUB= nodefault
GH_ACCOUNT= bsdjhb:libcxx
GH_PROJECT= libcxx-gdbpy:libcxx
-GH_TAGNAME= 99aae0c:libcxx
+GH_TAGNAME= 229610a:libcxx
# Workaround USE_GITHUB preventing the default DISTFILES
DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
diff --git a/devel/gdb/distinfo b/devel/gdb/distinfo
index 88bde2e6854b..fef88bb96185 100644
--- a/devel/gdb/distinfo
+++ b/devel/gdb/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1550011043
-SHA256 (gdb-8.2.1.tar.xz) = 0a6a432907a03c5c8eaad3c3cffd50c00a40c3a5e3c4039440624bae703f2202
-SIZE (gdb-8.2.1.tar.xz) = 20170388
-SHA256 (bsdjhb-libcxx-gdbpy-99aae0c_GH0.tar.gz) = 101425f8041489e31370ddd5938b41541b88a2e1051da70fe12d37c9186aa7eb
-SIZE (bsdjhb-libcxx-gdbpy-99aae0c_GH0.tar.gz) = 4607
+TIMESTAMP = 1559324758
+SHA256 (gdb-8.3.tar.xz) = 802f7ee309dcc547d65a68d61ebd6526762d26c3051f52caebe2189ac1ffd72e
+SIZE (gdb-8.3.tar.xz) = 20490300
+SHA256 (bsdjhb-libcxx-gdbpy-229610a_GH0.tar.gz) = d4235f98b71c4d5e3f01744de279e64808229dd46c0f00cac6a12fdeb3a998a1
+SIZE (bsdjhb-libcxx-gdbpy-229610a_GH0.tar.gz) = 5299
diff --git a/devel/gdb/files/commit-1163a4b7a3 b/devel/gdb/files/commit-1163a4b7a3
new file mode 100644
index 000000000000..143697eef8aa
--- /dev/null
+++ b/devel/gdb/files/commit-1163a4b7a3
@@ -0,0 +1,419 @@
+commit 1163a4b7a38a79ebd153dc5ee76ce93877d21dbd
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Support the fs_base and gs_base registers on i386.
+
+ As on amd64, these registers hold the base address of the fs and gs
+ segments, respectively. For i386 these two registers are 32 bits.
+
+ gdb/ChangeLog:
+
+ * amd64-fbsd-nat.c (amd64_fbsd_nat_target::read_description):
+ Update calls to i386_target_description to add 'segments'
+ parameter.
+ * amd64-tdep.c (amd64_init_abi): Set tdep->fsbase_regnum. Don't
+ add segment base registers.
+ * arch/i386.c (i386_create_target_description): Add 'segments'
+ parameter to enable segment base registers.
+ * arch/i386.h (i386_create_target_description): Likewise.
+ * features/i386/32bit-segments.xml: New file.
+ * features/i386/32bit-segments.c: Generate.
+ * i386-fbsd-nat.c (i386_fbsd_nat_target::read_description): Update
+ call to i386_target_description to add 'segments' parameter.
+ * i386-fbsd-tdep.c (i386fbsd_core_read_description): Likewise.
+ * i386-go32-tdep.c (i386_go32_init_abi): Likewise.
+ * i386-linux-tdep.c (i386_linux_read_description): Likewise.
+ * i386-tdep.c (i386_validate_tdesc_p): Add segment base registers
+ if feature is present.
+ (i386_gdbarch_init): Pass I386_NUM_REGS to set_gdbarch_num_regs.
+ Add 'segments' parameter to call to i386_target_description.
+ (i386_target_description): Add 'segments' parameter to enable
+ segment base registers.
+ (_initialize_i386_tdep) [GDB_SELF_TEST]: Add 'segments' parameter
+ to call to i386_target_description.
+ * i386-tdep.h (struct gdbarch_tdep): Add 'fsbase_regnum'.
+ (enum i386_regnum): Add I386_FSBASE_REGNUM and I386_GSBASE_REGNUM.
+ Define I386_NUM_REGS.
+ (i386_target_description): Add 'segments' parameter to enable
+ segment base registers.
+
+ gdb/gdbserver/ChangeLog:
+
+ * linux-x86-tdesc.c (i386_linux_read_description): Update call to
+ i386_create_target_description for 'segments' parameter.
+ * lynx-i386-low.c (lynx_i386_arch_setup): Likewise.
+ * nto-x86-low.c (nto_x86_arch_setup): Likewise.
+ * win32-i386-low.c (i386_arch_setup): Likewise.
+
+diff --git gdb/amd64-fbsd-nat.c gdb/amd64-fbsd-nat.c
+index 74ef240766..9fff763dd3 100644
+--- gdb/amd64-fbsd-nat.c
++++ gdb/amd64-fbsd-nat.c
+@@ -190,13 +190,13 @@ amd64_fbsd_nat_target::read_description ()
+ if (is64)
+ return amd64_target_description (xcr0, true);
+ else
+- return i386_target_description (xcr0);
++ return i386_target_description (xcr0, false);
+ }
+ #endif
+ if (is64)
+ return amd64_target_description (X86_XSTATE_SSE_MASK, true);
+ else
+- return i386_target_description (X86_XSTATE_SSE_MASK);
++ return i386_target_description (X86_XSTATE_SSE_MASK, false);
+ }
+
+ #if defined(HAVE_PT_GETDBREGS) && defined(USE_SIGTRAP_SIGINFO)
+diff --git gdb/amd64-tdep.c gdb/amd64-tdep.c
+index 3f61997d66..d5892954d7 100644
+--- gdb/amd64-tdep.c
++++ gdb/amd64-tdep.c
+@@ -3107,15 +3107,7 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch,
+
+ if (tdesc_find_feature (tdesc, "org.gnu.gdb.i386.segments") != NULL)
+ {
+- const struct tdesc_feature *feature =
+- tdesc_find_feature (tdesc, "org.gnu.gdb.i386.segments");
+- struct tdesc_arch_data *tdesc_data_segments =
+- (struct tdesc_arch_data *) info.tdep_info;
+-
+- tdesc_numbered_register (feature, tdesc_data_segments,
+- AMD64_FSBASE_REGNUM, "fs_base");
+- tdesc_numbered_register (feature, tdesc_data_segments,
+- AMD64_GSBASE_REGNUM, "gs_base");
++ tdep->fsbase_regnum = AMD64_FSBASE_REGNUM;
+ }
+
+ if (tdesc_find_feature (tdesc, "org.gnu.gdb.i386.pkeys") != NULL)
+diff --git gdb/arch/i386.c gdb/arch/i386.c
+index 7d2901333b..ab24cf71cb 100644
+--- gdb/arch/i386.c
++++ gdb/arch/i386.c
+@@ -28,11 +28,12 @@
+ #include "../features/i386/32bit-avx512.c"
+ #include "../features/i386/32bit-mpx.c"
+ #include "../features/i386/32bit-pkeys.c"
++#include "../features/i386/32bit-segments.c"
+
+ /* Create i386 target descriptions according to XCR0. */
+
+ target_desc *
+-i386_create_target_description (uint64_t xcr0, bool is_linux)
++i386_create_target_description (uint64_t xcr0, bool is_linux, bool segments)
+ {
+ target_desc *tdesc = allocate_target_description ();
+
+@@ -53,6 +54,9 @@ i386_create_target_description (uint64_t xcr0, bool is_linux)
+ if (is_linux)
+ regnum = create_feature_i386_32bit_linux (tdesc, regnum);
+
++ if (segments)
++ regnum = create_feature_i386_32bit_segments (tdesc, regnum);
++
+ if (xcr0 & X86_XSTATE_AVX)
+ regnum = create_feature_i386_32bit_avx (tdesc, regnum);
+
+diff --git gdb/arch/i386.h gdb/arch/i386.h
+index fa85438080..9a831cea30 100644
+--- gdb/arch/i386.h
++++ gdb/arch/i386.h
+@@ -21,6 +21,7 @@
+ #include "common/tdesc.h"
+ #include <stdint.h>
+
+-target_desc *i386_create_target_description (uint64_t xcr0, bool is_linux);
++target_desc *i386_create_target_description (uint64_t xcr0, bool is_linux,
++ bool segments);
+
+ #endif /* ARCH_I386_H */
+diff --git gdb/features/i386/32bit-segments.c gdb/features/i386/32bit-segments.c
+new file mode 100644
+index 0000000000..c22c3dfbc3
+--- /dev/null
++++ gdb/features/i386/32bit-segments.c
+@@ -0,0 +1,15 @@
++/* THIS FILE IS GENERATED. -*- buffer-read-only: t -*- vi:set ro:
++ Original: 32bit-segments.xml */
++
++#include "common/tdesc.h"
++
++static int
++create_feature_i386_32bit_segments (struct target_desc *result, long regnum)
++{
++ struct tdesc_feature *feature;
++
++ feature = tdesc_create_feature (result, "org.gnu.gdb.i386.segments");
++ tdesc_create_reg (feature, "fs_base", regnum++, 1, NULL, 32, "int");
++ tdesc_create_reg (feature, "gs_base", regnum++, 1, NULL, 32, "int");
++ return regnum;
++}
+diff --git gdb/features/i386/32bit-segments.xml gdb/features/i386/32bit-segments.xml
+new file mode 100644
+index 0000000000..098948e5ec
+--- /dev/null
++++ gdb/features/i386/32bit-segments.xml
+@@ -0,0 +1,12 @@
++<?xml version="1.0"?>
++<!-- Copyright (C) 2016-2018 Free Software Foundation, Inc.
++
++ Copying and distribution of this file, with or without modification,
++ are permitted in any medium without royalty provided the copyright
++ notice and this notice are preserved. -->
++
++<!DOCTYPE feature SYSTEM "gdb-target.dtd">
++<feature name="org.gnu.gdb.i386.segments">
++ <reg name="fs_base" bitsize="32" type="int"/>
++ <reg name="gs_base" bitsize="32" type="int"/>
++</feature>
+diff --git gdb/gdbserver/linux-x86-tdesc.c gdb/gdbserver/linux-x86-tdesc.c
+index 04bccc84ed..8f24a3d72d 100644
+--- gdb/gdbserver/linux-x86-tdesc.c
++++ gdb/gdbserver/linux-x86-tdesc.c
+@@ -87,7 +87,7 @@ i386_linux_read_description (uint64_t xcr0)
+
+ if (*tdesc == NULL)
+ {
+- *tdesc = i386_create_target_description (xcr0, true);
++ *tdesc = i386_create_target_description (xcr0, true, false);
+
+ init_target_desc (*tdesc, i386_expedite_regs);
+ }
+diff --git gdb/gdbserver/lynx-i386-low.c gdb/gdbserver/lynx-i386-low.c
+index bc1027dc52..e47f6b92f6 100644
+--- gdb/gdbserver/lynx-i386-low.c
++++ gdb/gdbserver/lynx-i386-low.c
+@@ -331,7 +331,7 @@ static void
+ lynx_i386_arch_setup (void)
+ {
+ struct target_desc *tdesc
+- = i386_create_target_description (X86_XSTATE_SSE_MASK, false);
++ = i386_create_target_description (X86_XSTATE_SSE_MASK, false, false);
+
+ init_target_desc (tdesc, i386_expedite_regs);
+
+diff --git gdb/gdbserver/nto-x86-low.c gdb/gdbserver/nto-x86-low.c
+index 1b00f7f6cc..cfbe7ba6d8 100644
+--- gdb/gdbserver/nto-x86-low.c
++++ gdb/gdbserver/nto-x86-low.c
+@@ -89,7 +89,7 @@ nto_x86_arch_setup (void)
+ {
+ the_low_target.num_regs = 16;
+ struct target_desc *tdesc
+- = i386_create_target_description (X86_XSTATE_SSE_MASK, false);
++ = i386_create_target_description (X86_XSTATE_SSE_MASK, false, false);
+
+ init_target_desc (tdesc, i386_expedite_regs);
+
+diff --git gdb/gdbserver/win32-i386-low.c gdb/gdbserver/win32-i386-low.c
+index 3be75d2bf2..7b187d3bea 100644
+--- gdb/gdbserver/win32-i386-low.c
++++ gdb/gdbserver/win32-i386-low.c
+@@ -439,7 +439,7 @@ i386_arch_setup (void)
+ false, false);
+ const char **expedite_regs = amd64_expedite_regs;
+ #else
+- tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false);
++ tdesc = i386_create_target_description (X86_XSTATE_SSE_MASK, false, false);
+ const char **expedite_regs = i386_expedite_regs;
+ #endif
+
+diff --git gdb/i386-fbsd-nat.c gdb/i386-fbsd-nat.c
+index 2309b76506..7106e90801 100644
+--- gdb/i386-fbsd-nat.c
++++ gdb/i386-fbsd-nat.c
+@@ -160,7 +160,7 @@ i386_fbsd_nat_target::read_description ()
+ if (x86bsd_xsave_len == 0)
+ xcr0 = X86_XSTATE_SSE_MASK;
+
+- return i386_target_description (xcr0);
++ return i386_target_description (xcr0, false);
+ }
+ #endif
+
+diff --git gdb/i386-fbsd-tdep.c gdb/i386-fbsd-tdep.c
+index 236edd692a..2f28bad728 100644
+--- gdb/i386-fbsd-tdep.c
++++ gdb/i386-fbsd-tdep.c
+@@ -267,7 +267,7 @@ i386fbsd_core_read_description (struct gdbarch *gdbarch,
+ struct target_ops *target,
+ bfd *abfd)
+ {
+- return i386_target_description (i386fbsd_core_read_xcr0 (abfd));
++ return i386_target_description (i386fbsd_core_read_xcr0 (abfd), false);
+ }
+
+ /* Similar to i386_supply_fpregset, but use XSAVE extended state. */
+diff --git gdb/i386-go32-tdep.c gdb/i386-go32-tdep.c
+index 06833c346c..30db72d880 100644
+--- gdb/i386-go32-tdep.c
++++ gdb/i386-go32-tdep.c
+@@ -35,7 +35,7 @@ i386_go32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+
+ /* DJGPP does not support the SSE registers. */
+ if (!tdesc_has_registers (info.target_desc))
+- tdep->tdesc = i386_target_description (X86_XSTATE_X87_MASK);
++ tdep->tdesc = i386_target_description (X86_XSTATE_X87_MASK, false);
+
+ /* Native compiler is GCC, which uses the SVR4 register numbering
+ even in COFF and STABS. See the comment in i386_gdbarch_init,
+diff --git gdb/i386-linux-tdep.c gdb/i386-linux-tdep.c
+index da81715061..fa6b86f1c8 100644
+--- gdb/i386-linux-tdep.c
++++ gdb/i386-linux-tdep.c
+@@ -694,7 +694,7 @@ i386_linux_read_description (uint64_t xcr0)
+ [(xcr0 & X86_XSTATE_PKRU) ? 1 : 0];
+
+ if (*tdesc == NULL)
+- *tdesc = i386_create_target_description (xcr0, true);
++ *tdesc = i386_create_target_description (xcr0, true, false);
+
+ return *tdesc;
+ }
+diff --git gdb/i386-tdep.c gdb/i386-tdep.c
+index bc9ba752ed..4e63832b0e 100644
+--- gdb/i386-tdep.c
++++ gdb/i386-tdep.c
+@@ -8175,7 +8175,7 @@ i386_validate_tdesc_p (struct gdbarch_tdep *tdep,
+ const struct tdesc_feature *feature_core;
+
+ const struct tdesc_feature *feature_sse, *feature_avx, *feature_mpx,
+- *feature_avx512, *feature_pkeys;
++ *feature_avx512, *feature_pkeys, *feature_segments;
+ int i, num_regs, valid_p;
+
+ if (! tdesc_has_registers (tdesc))
+@@ -8198,6 +8198,9 @@ i386_validate_tdesc_p (struct gdbarch_tdep *tdep,
+ /* Try AVX512 registers. */
+ feature_avx512 = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.avx512");
+
++ /* Try segment base registers. */
++ feature_segments = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.segments");
++
+ /* Try PKEYS */
+ feature_pkeys = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.pkeys");
+
+@@ -8307,6 +8310,16 @@ i386_validate_tdesc_p (struct gdbarch_tdep *tdep,
+ tdep->mpx_register_names[i]);
+ }
+
++ if (feature_segments)
++ {
++ if (tdep->fsbase_regnum < 0)
++ tdep->fsbase_regnum = I386_FSBASE_REGNUM;
++ valid_p &= tdesc_numbered_register (feature_segments, tdesc_data,
++ tdep->fsbase_regnum, "fs_base");
++ valid_p &= tdesc_numbered_register (feature_segments, tdesc_data,
++ tdep->fsbase_regnum + 1, "gs_base");
++ }
++
+ if (feature_pkeys)
+ {
+ tdep->xcr0 |= X86_XSTATE_PKRU;
+@@ -8543,14 +8556,14 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+ /* Even though the default ABI only includes general-purpose registers,
+ floating-point registers and the SSE registers, we have to leave a
+ gap for the upper AVX, MPX and AVX512 registers. */
+- set_gdbarch_num_regs (gdbarch, I386_PKEYS_NUM_REGS);
++ set_gdbarch_num_regs (gdbarch, I386_NUM_REGS);
+
+ set_gdbarch_gnu_triplet_regexp (gdbarch, i386_gnu_triplet_regexp);
+
+ /* Get the x86 target description from INFO. */
+ tdesc = info.target_desc;
+ if (! tdesc_has_registers (tdesc))
+- tdesc = i386_target_description (X86_XSTATE_SSE_MASK);
++ tdesc = i386_target_description (X86_XSTATE_SSE_MASK, false);
+ tdep->tdesc = tdesc;
+
+ tdep->num_core_regs = I386_NUM_GREGS + I387_NUM_REGS;
+@@ -8592,6 +8605,9 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+ tdep->pkru_regnum = -1;
+ tdep->num_pkeys_regs = 0;
+
++ /* No segment base registers. */
++ tdep->fsbase_regnum = -1;
++
+ tdesc_data = tdesc_data_alloc ();
+
+ set_gdbarch_relocate_instruction (gdbarch, i386_relocate_instruction);
+@@ -8717,20 +8733,21 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
+ /* Return the target description for a specified XSAVE feature mask. */
+
+ const struct target_desc *
+-i386_target_description (uint64_t xcr0)
++i386_target_description (uint64_t xcr0, bool segments)
+ {
+ static target_desc *i386_tdescs \
+- [2/*SSE*/][2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/] = {};
++ [2/*SSE*/][2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/][2/*segments*/] = {};
+ target_desc **tdesc;
+
+ tdesc = &i386_tdescs[(xcr0 & X86_XSTATE_SSE) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_AVX) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_MPX) ? 1 : 0]
+ [(xcr0 & X86_XSTATE_AVX512) ? 1 : 0]
+- [(xcr0 & X86_XSTATE_PKRU) ? 1 : 0];
++ [(xcr0 & X86_XSTATE_PKRU) ? 1 : 0]
++ [segments ? 1 : 0];
+
+ if (*tdesc == NULL)
+- *tdesc = i386_create_target_description (xcr0, false);
++ *tdesc = i386_create_target_description (xcr0, false, segments);
+
+ return *tdesc;
+ }
+@@ -9072,7 +9089,7 @@ Show Intel Memory Protection Extensions specific variables."),
+
+ for (auto &a : xml_masks)
+ {
+- auto tdesc = i386_target_description (a.mask);
++ auto tdesc = i386_target_description (a.mask, false);
+
+ selftests::record_xml_tdesc (a.xml, tdesc);
+ }
+diff --git gdb/i386-tdep.h gdb/i386-tdep.h
+index 2532306e5c..c0d494824c 100644
+--- gdb/i386-tdep.h
++++ gdb/i386-tdep.h
+@@ -200,6 +200,10 @@ struct gdbarch_tdep
+ /* PKEYS register names. */
+ const char **pkeys_register_names;
+
++ /* Register number for %fsbase. Set this to -1 to indicate the
++ absence of segment base registers. */
++ int fsbase_regnum;
++
+ /* Target description. */
+ const struct target_desc *tdesc;
+
+@@ -296,7 +300,9 @@ enum i386_regnum
+ I386_K7_REGNUM = I386_K0_REGNUM + 7,
+ I386_ZMM0H_REGNUM, /* %zmm0h */
+ I386_ZMM7H_REGNUM = I386_ZMM0H_REGNUM + 7,
+- I386_PKRU_REGNUM
++ I386_PKRU_REGNUM,
++ I386_FSBASE_REGNUM,
++ I386_GSBASE_REGNUM
+ };
+
+ /* Register numbers of RECORD_REGMAP. */
+@@ -337,6 +343,7 @@ enum record_i386_regnum
+ #define I386_MPX_NUM_REGS (I386_BNDSTATUS_REGNUM + 1)
+ #define I386_AVX512_NUM_REGS (I386_ZMM7H_REGNUM + 1)
+ #define I386_PKEYS_NUM_REGS (I386_PKRU_REGNUM + 1)
++#define I386_NUM_REGS (I386_GSBASE_REGNUM + 1)
+
+ /* Size of the largest register. */
+ #define I386_MAX_REGISTER_SIZE 64
+@@ -440,7 +447,8 @@ extern int i386_svr4_reg_to_regnum (struct gdbarch *gdbarch, int reg);
+
+ extern int i386_process_record (struct gdbarch *gdbarch,
+ struct regcache *regcache, CORE_ADDR addr);
+-extern const struct target_desc *i386_target_description (uint64_t xcr0);
++extern const struct target_desc *i386_target_description (uint64_t xcr0,
++ bool segments);
+
+ /* Return true iff the current target is MPX enabled. */
+ extern int i386_mpx_enabled (void);
diff --git a/devel/gdb/files/commit-2861ee4fde b/devel/gdb/files/commit-2861ee4fde
deleted file mode 100644
index 49f680e32319..000000000000
--- a/devel/gdb/files/commit-2861ee4fde
+++ /dev/null
@@ -1,63 +0,0 @@
-commit 2861ee4fde97d0afafc506380c5deaf71c8439ac
-Author: John Baldwin <jhb@FreeBSD.org>
-Date: Wed Dec 5 10:51:16 2018 -0800
-
- Use separate sed expressions to escape auto-load directories.
-
- Not all sed implementations support alternation via \| in the default
- regular expressions. Instead, resort to separate sed expressions via
- -e for $debugdir and $datadir. This fixes the default setting of the
- auto-load directories on FreeBSD. Previously on FreeBSD the sed
- invocation was a no-op causing the debugdir and datadir values to be
- expanded yielding an autoload path of ':${prefix}/share/gdb'.
-
- gdb/ChangeLog:
-
- * configure: Re-generate.
- * configure.ac: Use separate sed expressions to escape variables
- in auto-load directories.
-
-diff --git gdb/configure gdb/configure
-index 7665ba6531..3777230898 100755
---- gdb/configure
-+++ gdb/configure
-@@ -6579,7 +6579,7 @@ else
- with_auto_load_dir='$debugdir:$datadir/auto-load'
- fi
-
--escape_dir=`echo $with_auto_load_dir | sed 's/[$]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
-+escape_dir=`echo $with_auto_load_dir | sed -e 's/[$]datadir\>/\\\\\\\\\\\\&/g' -e 's/[$]debugdir\>/\\\\\\\\\\\\&/g'`
-
- test "x$prefix" = xNONE && prefix="$ac_default_prefix"
- test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-@@ -6606,7 +6606,7 @@ else
- with_auto_load_safe_path="$with_auto_load_dir"
- fi
-
--escape_dir=`echo $with_auto_load_safe_path | sed 's/[$]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
-+escape_dir=`echo $with_auto_load_safe_path | sed -e 's/[$]datadir\>/\\\\\\\\\\\\&/g' -e 's/[$]debugdir\>/\\\\\\\\\\\\&/g'`
-
- test "x$prefix" = xNONE && prefix="$ac_default_prefix"
- test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-diff --git gdb/configure.ac gdb/configure.ac
-index e1ea60660b..eca7ea6d41 100644
---- gdb/configure.ac
-+++ gdb/configure.ac
-@@ -146,7 +146,7 @@ AC_ARG_WITH(auto-load-dir,
- AS_HELP_STRING([--with-auto-load-dir=PATH],
- [directories from which to load auto-loaded scripts @<:@$debugdir:$datadir/auto-load@:>@]),,
- [with_auto_load_dir='$debugdir:$datadir/auto-load'])
--escape_dir=`echo $with_auto_load_dir | sed 's/[[$]]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
-+escape_dir=`echo $with_auto_load_dir | sed -e 's/[[$]]datadir\>/\\\\\\\\\\\\&/g' -e 's/[[$]]debugdir\>/\\\\\\\\\\\\&/g'`
- AC_DEFINE_DIR(AUTO_LOAD_DIR, escape_dir,
- [Directories from which to load auto-loaded scripts.])
- AC_MSG_RESULT([$with_auto_load_dir])
-@@ -161,7 +161,7 @@ AS_HELP_STRING([--without-auto-load-safe-path],
- with_auto_load_safe_path="/"
- fi],
- [with_auto_load_safe_path="$with_auto_load_dir"])
--escape_dir=`echo $with_auto_load_safe_path | sed 's/[[$]]\(datadir\|debugdir\)\>/\\\\\\\\\\\\&/g'`
-+escape_dir=`echo $with_auto_load_safe_path | sed -e 's/[[$]]datadir\>/\\\\\\\\\\\\&/g' -e 's/[[$]]debugdir\>/\\\\\\\\\\\\&/g'`
- AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escape_dir,
- [Directories safe to hold auto-loaded files.])
- AC_MSG_RESULT([$with_auto_load_safe_path])
diff --git a/devel/gdb/files/commit-36c53a0262 b/devel/gdb/files/commit-36c53a0262
new file mode 100644
index 000000000000..3eaa2ea9c0f8
--- /dev/null
+++ b/devel/gdb/files/commit-36c53a0262
@@ -0,0 +1,60 @@
+commit 36c53a0262f84ad11d738471789dadfa9c4eb320
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Remove code disabled since at least 1999 from lookup_struct_elt_type.
+
+ Update the comment above the function to reflect the code removal and
+ document the existing behavior.
+
+ gdb/ChangeLog:
+
+ * gdbtypes.c (lookup_struct_elt_type): Update comment and
+ remove disabled code block.
+
+diff --git gdb/gdbtypes.c gdb/gdbtypes.c
+index 09284ef259..5924b15520 100644
+--- gdb/gdbtypes.c
++++ gdb/gdbtypes.c
+@@ -1644,8 +1644,7 @@ lookup_template_type (char *name, struct type *type,
+ return (SYMBOL_TYPE (sym));
+ }
+
+-/* Given a type TYPE, lookup the type of the component of type named
+- NAME.
++/* Given a type TYPE, lookup the type of the component named NAME.
+
+ TYPE can be either a struct or union, or a pointer or reference to
+ a struct or union. If it is a pointer or reference, its target
+@@ -1653,8 +1652,8 @@ lookup_template_type (char *name, struct type *type,
+ as specified for the definitions of the expression element types
+ STRUCTOP_STRUCT and STRUCTOP_PTR.
+
+- If NOERR is nonzero, return zero if NAME is not suitably defined.
+- If NAME is the name of a baseclass type, return that type. */
++ If NOERR is nonzero, return NULL if there is no component named
++ NAME. */
+
+ struct type *
+ lookup_struct_elt_type (struct type *type, const char *name, int noerr)
+@@ -1678,20 +1677,6 @@ lookup_struct_elt_type (struct type *type, const char *name, int noerr)
+ type_name.c_str ());
+ }
+
+-#if 0
+- /* FIXME: This change put in by Michael seems incorrect for the case
+- where the structure tag name is the same as the member name.
+- I.e. when doing "ptype bell->bar" for "struct foo { int bar; int
+- foo; } bell;" Disabled by fnf. */
+- {
+- char *type_name;
+-
+- type_name = TYPE_NAME (type);
+- if (type_name != NULL && strcmp (type_name, name) == 0)
+- return type;
+- }
+-#endif
+-
+ for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
+ {
+ const char *t_field_name = TYPE_FIELD_NAME (type, i);
diff --git a/devel/gdb/files/commit-6e056c8178 b/devel/gdb/files/commit-6e056c8178
new file mode 100644
index 000000000000..591208fca418
--- /dev/null
+++ b/devel/gdb/files/commit-6e056c8178
@@ -0,0 +1,166 @@
+commit 6e056c817845f3d736a1be6b68c69b439c6c6d25
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Add a new gdbarch method to resolve the address of TLS variables.
+
+ Permit TLS variable addresses to be resolved purely by an ABI rather
+ than requiring a target method. This doesn't try the target method if
+ the ABI function is present (even if the ABI function fails) to
+ simplify error handling.
+
+ gdb/ChangeLog:
+
+ * gdbarch.sh (get_thread_local_address): New method.
+ * gdbarch.h, gdbarch.c: Regenerate.
+ * target.c (target_translate_tls_address): Use
+ gdbarch_get_thread_local_address if present instead of
+ target::get_thread_local_address.
+
+diff --git gdb/gdbarch.c gdb/gdbarch.c
+index 434ee3bfcf..2b3fcef004 100644
+--- gdb/gdbarch.c
++++ gdb/gdbarch.c
+@@ -251,6 +251,7 @@ struct gdbarch
+ CORE_ADDR deprecated_function_start_offset;
+ gdbarch_remote_register_number_ftype *remote_register_number;
+ gdbarch_fetch_tls_load_module_address_ftype *fetch_tls_load_module_address;
++ gdbarch_get_thread_local_address_ftype *get_thread_local_address;
+ CORE_ADDR frame_args_skip;
+ gdbarch_unwind_pc_ftype *unwind_pc;
+ gdbarch_unwind_sp_ftype *unwind_sp;
+@@ -613,6 +614,7 @@ verify_gdbarch (struct gdbarch *gdbarch)
+ /* Skip verify of deprecated_function_start_offset, invalid_p == 0 */
+ /* Skip verify of remote_register_number, invalid_p == 0 */
+ /* Skip verify of fetch_tls_load_module_address, has predicate. */
++ /* Skip verify of get_thread_local_address, has predicate. */
+ /* Skip verify of frame_args_skip, invalid_p == 0 */
+ /* Skip verify of unwind_pc, invalid_p == 0 */
+ /* Skip verify of unwind_sp, invalid_p == 0 */
+@@ -1073,6 +1075,12 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
+ fprintf_unfiltered (file,
+ "gdbarch_dump: get_syscall_number = <%s>\n",
+ host_address_to_string (gdbarch->get_syscall_number));
++ fprintf_unfiltered (file,
++ "gdbarch_dump: gdbarch_get_thread_local_address_p() = %d\n",
++ gdbarch_get_thread_local_address_p (gdbarch));
++ fprintf_unfiltered (file,
++ "gdbarch_dump: get_thread_local_address = <%s>\n",
++ host_address_to_string (gdbarch->get_thread_local_address));
+ fprintf_unfiltered (file,
+ "gdbarch_dump: gnu_triplet_regexp = <%s>\n",
+ host_address_to_string (gdbarch->gnu_triplet_regexp));
+@@ -3018,6 +3026,30 @@ set_gdbarch_fetch_tls_load_module_address (struct gdbarch *gdbarch,
+ gdbarch->fetch_tls_load_module_address = fetch_tls_load_module_address;
+ }
+
++int
++gdbarch_get_thread_local_address_p (struct gdbarch *gdbarch)
++{
++ gdb_assert (gdbarch != NULL);
++ return gdbarch->get_thread_local_address != NULL;
++}
++
++CORE_ADDR
++gdbarch_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid, CORE_ADDR lm_addr, CORE_ADDR offset)
++{
++ gdb_assert (gdbarch != NULL);
++ gdb_assert (gdbarch->get_thread_local_address != NULL);
++ if (gdbarch_debug >= 2)
++ fprintf_unfiltered (gdb_stdlog, "gdbarch_get_thread_local_address called\n");
++ return gdbarch->get_thread_local_address (gdbarch, ptid, lm_addr, offset);
++}
++
++void
++set_gdbarch_get_thread_local_address (struct gdbarch *gdbarch,
++ gdbarch_get_thread_local_address_ftype get_thread_local_address)
++{
++ gdbarch->get_thread_local_address = get_thread_local_address;
++}
++
+ CORE_ADDR
+ gdbarch_frame_args_skip (struct gdbarch *gdbarch)
+ {
+diff --git gdb/gdbarch.h gdb/gdbarch.h
+index 75618376ab..abb72e752b 100644
+--- gdb/gdbarch.h
++++ gdb/gdbarch.h
+@@ -649,6 +649,18 @@ typedef CORE_ADDR (gdbarch_fetch_tls_load_module_address_ftype) (struct objfile
+ extern CORE_ADDR gdbarch_fetch_tls_load_module_address (struct gdbarch *gdbarch, struct objfile *objfile);
+ extern void set_gdbarch_fetch_tls_load_module_address (struct gdbarch *gdbarch, gdbarch_fetch_tls_load_module_address_ftype *fetch_tls_load_module_address);
+
++/* Return the thread-local address at OFFSET in the thread-local
++ storage for the thread PTID and the shared library or executable
++ file given by LM_ADDR. If that block of thread-local storage hasn't
++ been allocated yet, this function may throw an error. LM_ADDR may
++ be zero for statically linked multithreaded inferiors. */
++
++extern int gdbarch_get_thread_local_address_p (struct gdbarch *gdbarch);
++
++typedef CORE_ADDR (gdbarch_get_thread_local_address_ftype) (struct gdbarch *gdbarch, ptid_t ptid, CORE_ADDR lm_addr, CORE_ADDR offset);
++extern CORE_ADDR gdbarch_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid, CORE_ADDR lm_addr, CORE_ADDR offset);
++extern void set_gdbarch_get_thread_local_address (struct gdbarch *gdbarch, gdbarch_get_thread_local_address_ftype *get_thread_local_address);
++
+ extern CORE_ADDR gdbarch_frame_args_skip (struct gdbarch *gdbarch);
+ extern void set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, CORE_ADDR frame_args_skip);
+
+diff --git gdb/gdbarch.sh gdb/gdbarch.sh
+index 48fcebd19a..63bfbad7d9 100755
+--- gdb/gdbarch.sh
++++ gdb/gdbarch.sh
+@@ -602,6 +602,14 @@ m;int;remote_register_number;int regno;regno;;default_remote_register_number;;0
+
+ # Fetch the target specific address used to represent a load module.
+ F;CORE_ADDR;fetch_tls_load_module_address;struct objfile *objfile;objfile
++
++# Return the thread-local address at OFFSET in the thread-local
++# storage for the thread PTID and the shared library or executable
++# file given by LM_ADDR. If that block of thread-local storage hasn't
++# been allocated yet, this function may throw an error. LM_ADDR may
++# be zero for statically linked multithreaded inferiors.
++
++M;CORE_ADDR;get_thread_local_address;ptid_t ptid, CORE_ADDR lm_addr, CORE_ADDR offset;ptid, lm_addr, offset
+ #
+ v;CORE_ADDR;frame_args_skip;;;0;;;0
+ m;CORE_ADDR;unwind_pc;struct frame_info *next_frame;next_frame;;default_unwind_pc;;0
+diff --git gdb/target.c gdb/target.c
+index 8579c19d05..c27157d209 100644
+--- gdb/target.c
++++ gdb/target.c
+@@ -698,8 +698,9 @@ target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
+ {
+ volatile CORE_ADDR addr = 0;
+ struct target_ops *target = current_top_target ();
++ struct gdbarch *gdbarch = target_gdbarch ();
+
+- if (gdbarch_fetch_tls_load_module_address_p (target_gdbarch ()))
++ if (gdbarch_fetch_tls_load_module_address_p (gdbarch))
+ {
+ ptid_t ptid = inferior_ptid;
+
+@@ -708,10 +709,14 @@ target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
+ CORE_ADDR lm_addr;
+
+ /* Fetch the load module address for this objfile. */
+- lm_addr = gdbarch_fetch_tls_load_module_address (target_gdbarch (),
++ lm_addr = gdbarch_fetch_tls_load_module_address (gdbarch,
+ objfile);
+
+- addr = target->get_thread_local_address (ptid, lm_addr, offset);
++ if (gdbarch_get_thread_local_address_p (gdbarch))
++ addr = gdbarch_get_thread_local_address (gdbarch, ptid, lm_addr,
++ offset);
++ else
++ addr = target->get_thread_local_address (ptid, lm_addr, offset);
+ }
+ /* If an error occurred, print TLS related messages here. Otherwise,
+ throw the error to some higher catcher. */
+@@ -766,8 +771,6 @@ target_translate_tls_address (struct objfile *objfile, CORE_ADDR offset)
+ }
+ END_CATCH
+ }
+- /* It wouldn't be wrong here to try a gdbarch method, too; finding
+- TLS is an ABI-specific thing. But we don't do that yet. */
+ else
+ error (_("Cannot find thread-local variables on this target"));
+
diff --git a/devel/gdb/files/commit-8399425f5f b/devel/gdb/files/commit-8399425f5f
new file mode 100644
index 000000000000..6545579f01a9
--- /dev/null
+++ b/devel/gdb/files/commit-8399425f5f
@@ -0,0 +1,69 @@
+commit 8399425f5f472ad8e630bb30ad2dbefeddbb68b7
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Support TLS variables on FreeBSD/powerpc.
+
+ Derive the pointer to the DTV array from the %r2 register on 32-bit
+ powerpc and %r13 on 64-bit powerpc.
+
+ gdb/ChangeLog:
+
+ * ppc-fbsd-tdep.c (ppcfbsd_get_thread_local_address): New.
+ (ppcfbsd_init_abi): Install gdbarch
+ "fetch_tls_load_module_address" and "get_thread_local_address"
+ methods.
+
+diff --git gdb/ppc-fbsd-tdep.c gdb/ppc-fbsd-tdep.c
+index c21a52c898..290bd1fd88 100644
+--- gdb/ppc-fbsd-tdep.c
++++ gdb/ppc-fbsd-tdep.c
+@@ -279,6 +279,39 @@ ppcfbsd_return_value (struct gdbarch *gdbarch, struct value *function,
+ regcache, readbuf, writebuf);
+ }
+
++/* Implement the "get_thread_local_address" gdbarch method. */
++
++static CORE_ADDR
++ppcfbsd_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid,
++ CORE_ADDR lm_addr, CORE_ADDR offset)
++{
++ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
++ struct regcache *regcache;
++ int tp_offset, tp_regnum;
++
++ regcache = get_thread_arch_regcache (ptid, gdbarch);
++
++ if (tdep->wordsize == 4)
++ {
++ tp_offset = 0x7008;
++ tp_regnum = PPC_R0_REGNUM + 2;
++ }
++ else
++ {
++ tp_offset = 0x7010;
++ tp_regnum = PPC_R0_REGNUM + 13;
++ }
++ target_fetch_registers (regcache, tp_regnum);
++
++ ULONGEST tp;
++ if (regcache->cooked_read (tp_regnum, &tp) != REG_VALID)
++ error (_("Unable to fetch tcb pointer"));
++
++ /* tp points to the end of the TCB block. The first member of the
++ TCB is the pointer to the DTV array. */
++ CORE_ADDR dtv_addr = tp - tp_offset;
++ return fbsd_get_thread_local_address (gdbarch, dtv_addr, lm_addr, offset);
++}
+
+ static void
+ ppcfbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+@@ -322,6 +355,8 @@ ppcfbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+
+ set_gdbarch_fetch_tls_load_module_address (gdbarch,
+ svr4_fetch_objfile_link_map);
++ set_gdbarch_get_thread_local_address (gdbarch,
++ ppcfbsd_get_thread_local_address);
+ }
+
+ void
diff --git a/devel/gdb/files/commit-8aa0243d54 b/devel/gdb/files/commit-8aa0243d54
deleted file mode 100644
index b9570a2cbafc..000000000000
--- a/devel/gdb/files/commit-8aa0243d54
+++ /dev/null
@@ -1,197 +0,0 @@
-commit 739ab2e92e1840c9285f3cfce1f1236c0fa68730
-Author: Simon Ser <contact@emersion.fr>
-Date: Thu Sep 6 15:03:19 2018 -0700
-
- Generate NT_PROCSTAT_{AUXV,VMMAP,PS_STRINGS} in FreeBSD coredumps
-
- gcore generates NT_AUXV and NT_FILE notes for Linux targets. On
- FreeBSD auxv is stored in a NT_PROCSTAT_AUXV section, virtual memory
- mappings are stored in a NT_PROCSTAT_VMMAP, and both are prefixed with
- the struct size. In addition, store a NT_PROCSTAT_PS_STRINGS note
- saving the initial location of the argv[] and environment[] arrays.
-
- gdb/ChangeLog:
-
- PR gdb/23105
- * fbsd-nat.c (fbsd_nat_target::xfer_partial): Add support for
- TARGET_OBJECT_FREEBSD_VMMAP and TARGET_OBJECT_FREEBSD_PS_STRINGS.
- * fbsd-tdep.c (fbsd_make_note_desc): New.
- (fbsd_make_corefile_notes): Write NT_PROCSTAT_AUXV,
- NT_PROCSTAT_VMMAP and NT_PROCSTAT_PS_STRINGS notes.
- * target.h (enum target_object) Add FreeBSD-specific
- TARGET_OBJECT_FREEBSD_VMMAP and TARGET_OBJECT_FREEBSD_PS_STRINGS.
-
-diff --git gdb/ChangeLog gdb/ChangeLog
-index 410fbef920..e6f44a3ac2 100644
---- gdb/ChangeLog
-+++ gdb/ChangeLog
-@@ -1,3 +1,14 @@
-+2018-09-06 Simon Ser <contact@emersion.fr>
-+
-+ PR gdb/23105
-+ * fbsd-nat.c (fbsd_nat_target::xfer_partial): Add support for
-+ TARGET_OBJECT_FREEBSD_VMMAP and TARGET_OBJECT_FREEBSD_PS_STRINGS.
-+ * fbsd-tdep.c (fbsd_make_note_desc): New.
-+ (fbsd_make_corefile_notes): Write NT_PROCSTAT_AUXV,
-+ NT_PROCSTAT_VMMAP and NT_PROCSTAT_PS_STRINGS notes.
-+ * target.h (enum target_object) Add FreeBSD-specific
-+ TARGET_OBJECT_FREEBSD_VMMAP and TARGET_OBJECT_FREEBSD_PS_STRINGS.
-+
- 2018-09-06 Simon Marchi <simon.marchi@ericsson.com>
-
- * compile/compile-c.h (generate_c_for_variable_locations):
-diff --git gdb/fbsd-nat.c gdb/fbsd-nat.c
-index 115deac070..a255318d14 100644
---- gdb/fbsd-nat.c
-+++ gdb/fbsd-nat.c
-@@ -751,6 +751,61 @@ fbsd_nat_target::xfer_partial (enum target_object object,
- }
- return TARGET_XFER_E_IO;
- }
-+ case TARGET_OBJECT_FREEBSD_VMMAP:
-+ case TARGET_OBJECT_FREEBSD_PS_STRINGS:
-+ {
-+ gdb::byte_vector buf_storage;
-+ gdb_byte *buf;
-+ size_t buflen;
-+ int mib[4];
-+
-+ int proc_target;
-+ uint32_t struct_size;
-+ switch (object)
-+ {
-+ case TARGET_OBJECT_FREEBSD_VMMAP:
-+ proc_target = KERN_PROC_VMMAP;
-+ struct_size = sizeof (struct kinfo_vmentry);
-+ break;
-+ case TARGET_OBJECT_FREEBSD_PS_STRINGS:
-+ proc_target = KERN_PROC_PS_STRINGS;
-+ struct_size = sizeof (void *);
-+ break;
-+ }
-+
-+ if (writebuf != NULL)
-+ return TARGET_XFER_E_IO;
-+
-+ mib[0] = CTL_KERN;
-+ mib[1] = KERN_PROC;
-+ mib[2] = proc_target;
-+ mib[3] = pid;
-+
-+ if (sysctl (mib, 4, NULL, &buflen, NULL, 0) != 0)
-+ return TARGET_XFER_E_IO;
-+ buflen += sizeof (struct_size);
-+
-+ if (offset >= buflen)
-+ {
-+ *xfered_len = 0;
-+ return TARGET_XFER_EOF;
-+ }
-+
-+ buf_storage.resize (buflen);
-+ buf = buf_storage.data ();
-+
-+ memcpy (buf, &struct_size, sizeof (struct_size));
-+ buflen -= sizeof (struct_size);
-+ if (sysctl (mib, 4, buf + sizeof (struct_size), &buflen, NULL, 0) != 0)
-+ return TARGET_XFER_E_IO;
-+ buflen += sizeof (struct_size);
-+
-+ if (buflen - offset < len)
-+ len = buflen - offset;
-+ memcpy (readbuf, buf + offset, len);
-+ *xfered_len = len;
-+ return TARGET_XFER_OK;
-+ }
- default:
- return inf_ptrace_target::xfer_partial (object, annex,
- readbuf, writebuf, offset,
-diff --git gdb/fbsd-tdep.c gdb/fbsd-tdep.c
-index 78d0c3d830..ed43087169 100644
---- gdb/fbsd-tdep.c
-+++ gdb/fbsd-tdep.c
-@@ -512,6 +512,28 @@ fbsd_corefile_thread (struct thread_info *info,
- args->note_size, args->stop_signal);
- }
-
-+/* Return a byte_vector containing the contents of a core dump note
-+ for the target object of type OBJECT. If STRUCTSIZE is non-zero,
-+ the data is prefixed with a 32-bit integer size to match the format
-+ used in FreeBSD NT_PROCSTAT_* notes. */
-+
-+static gdb::optional<gdb::byte_vector>
-+fbsd_make_note_desc (enum target_object object, uint32_t structsize)
-+{
-+ gdb::optional<gdb::byte_vector> buf =
-+ target_read_alloc (current_top_target (), object, NULL);
-+ if (!buf || buf->empty ())
-+ return {};
-+
-+ if (structsize == 0)
-+ return buf;
-+
-+ gdb::byte_vector desc (sizeof (structsize) + buf->size ());
-+ memcpy (desc.data (), &structsize, sizeof (structsize));
-+ memcpy (desc.data () + sizeof (structsize), buf->data (), buf->size ());
-+ return desc;
-+}
-+
- /* Create appropriate note sections for a corefile, returning them in
- allocated memory. */
-
-@@ -586,6 +608,40 @@ fbsd_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, int *note_size)
-
- note_data = thread_args.note_data;
-
-+ /* Auxiliary vector. */
-+ uint32_t structsize = gdbarch_ptr_bit (gdbarch) / 4; /* Elf_Auxinfo */
-+ gdb::optional<gdb::byte_vector> note_desc =
-+ fbsd_make_note_desc (TARGET_OBJECT_AUXV, structsize);
-+ if (note_desc && !note_desc->empty ())
-+ {
-+ note_data = elfcore_write_note (obfd, note_data, note_size, "FreeBSD",
-+ NT_FREEBSD_PROCSTAT_AUXV,
-+ note_desc->data (), note_desc->size ());
-+ if (!note_data)
-+ return NULL;
-+ }
-+
-+ /* Virtual memory mappings. */
-+ note_desc = fbsd_make_note_desc (TARGET_OBJECT_FREEBSD_VMMAP, 0);
-+ if (note_desc && !note_desc->empty ())
-+ {
-+ note_data = elfcore_write_note (obfd, note_data, note_size, "FreeBSD",
-+ NT_FREEBSD_PROCSTAT_VMMAP,
-+ note_desc->data (), note_desc->size ());
-+ if (!note_data)
-+ return NULL;
-+ }
-+
-+ note_desc = fbsd_make_note_desc (TARGET_OBJECT_FREEBSD_PS_STRINGS, 0);
-+ if (note_desc && !note_desc->empty ())
-+ {
-+ note_data = elfcore_write_note (obfd, note_data, note_size, "FreeBSD",
-+ NT_FREEBSD_PROCSTAT_PSSTRINGS,
-+ note_desc->data (), note_desc->size ());
-+ if (!note_data)
-+ return NULL;
-+ }
-+
- return note_data;
- }
-
-diff --git gdb/target.h gdb/target.h
-index 229b5d0551..a3000c80c6 100644
---- gdb/target.h
-+++ gdb/target.h
-@@ -202,6 +202,10 @@ enum target_object
- of the process ID of the process in question, in hexadecimal
- format. */
- TARGET_OBJECT_EXEC_FILE,
-+ /* FreeBSD virtual memory mappings. */
-+ TARGET_OBJECT_FREEBSD_VMMAP,
-+ /* FreeBSD process strings. */
-+ TARGET_OBJECT_FREEBSD_PS_STRINGS,
- /* Possible future objects: TARGET_OBJECT_FILE, ... */
- };
-
diff --git a/devel/gdb/files/commit-93579f6f90 b/devel/gdb/files/commit-93579f6f90
deleted file mode 100644
index 1b5988dad668..000000000000
--- a/devel/gdb/files/commit-93579f6f90
+++ /dev/null
@@ -1,57 +0,0 @@
-commit 93579f6f908fa6010b141fd5da2974d878869c80
-Author: John Baldwin <jhb@FreeBSD.org>
-Date: Fri Nov 30 15:14:18 2018 -0800
-
- Use kinfo_getfile to implement fdwalk on FreeBSD.
-
- kinfo_getfile() requires a couple of system calls to fetch the list of
- open file descriptors. This can be much cheaper than invoking fstat
- on all of the values from 0 to the open file resource limit maximum.
-
- gdb/ChangeLog:
-
- * common/filestuff.c [HAVE_KINFO_GETFILE]: Include headers.
- (fdwalk) [HAVE_KINFO_GETFILE]: Use kinfo_getfile.
-
-diff --git gdb/common/filestuff.c gdb/common/filestuff.c
-index 0db5c6936b..f4d5e38f07 100644
---- gdb/common/filestuff.c
-+++ gdb/common/filestuff.c
-@@ -36,6 +36,11 @@
- #define HAVE_SOCKETS 1
- #endif
-
-+#ifdef HAVE_KINFO_GETFILE
-+#include <sys/user.h>
-+#include <libutil.h>
-+#endif
-+
- #ifdef HAVE_SYS_RESOURCE_H
- #include <sys/resource.h>
- #endif /* HAVE_SYS_RESOURCE_H */
-@@ -108,6 +113,25 @@ fdwalk (int (*func) (void *, int), void *arg)
- }
- /* We may fall through to the next case. */
- #endif
-+#ifdef HAVE_KINFO_GETFILE
-+ int nfd;
-+ gdb::unique_xmalloc_ptr<struct kinfo_file[]> fdtbl
-+ (kinfo_getfile (getpid (), &nfd));
-+ if (fdtbl != NULL)
-+ {
-+ for (int i = 0; i < nfd; i++)
-+ {
-+ if (fdtbl[i].kf_fd >= 0)
-+ {
-+ int result = func (arg, fdtbl[i].kf_fd);
-+ if (result != 0)
-+ return result;
-+ }
-+ }
-+ return 0;
-+ }
-+ /* We may fall through to the next case. */
-+#endif
-
- {
- int max, fd;
diff --git a/devel/gdb/files/commit-945f3901b5 b/devel/gdb/files/commit-945f3901b5
new file mode 100644
index 000000000000..221445b34fe2
--- /dev/null
+++ b/devel/gdb/files/commit-945f3901b5
@@ -0,0 +1,224 @@
+commit 945f3901b5889e57edf5a2ee25acb51f0078a719
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Add a helper function to resolve TLS variable addresses for FreeBSD.
+
+ The fbsd_get_thread_local_address function accepts the base address of
+ a thread's DTV array and the base address of an object file's link map
+ and uses this to compute a TLS variable's address. FreeBSD
+ architectures use an architecture-specific method to determine the
+ address of the DTV array pointer and call this helper function to
+ perform the rest of the address calculation.
+
+ * fbsd-tdep.c (fbsd_pspace_data_handle): New variable.
+ (struct fbsd_pspace_data): New type.
+ (get_fbsd_pspace_data, fbsd_pspace_data_cleanup)
+ (fbsd_read_integer_by_name, fbsd_fetch_rtld_offsets)
+ (fbsd_get_tls_index, fbsd_get_thread_local_address): New function.
+ (_initialize_fbsd_tdep): Initialize 'fbsd_pspace_data_handle'.
+ * fbsd-tdep.c (fbsd_get_thread_local_address): New prototype.
+
+diff --git gdb/fbsd-tdep.c gdb/fbsd-tdep.c
+index d971d3a653..f06836216d 100644
+--- gdb/fbsd-tdep.c
++++ gdb/fbsd-tdep.c
+@@ -24,6 +24,7 @@
+ #include "regcache.h"
+ #include "regset.h"
+ #include "gdbthread.h"
++#include "objfiles.h"
+ #include "xml-syscall.h"
+ #include <sys/socket.h>
+ #include <arpa/inet.h>
+@@ -444,6 +445,41 @@ get_fbsd_gdbarch_data (struct gdbarch *gdbarch)
+ gdbarch_data (gdbarch, fbsd_gdbarch_data_handle));
+ }
+
++/* Per-program-space data for FreeBSD architectures. */
++static const struct program_space_data *fbsd_pspace_data_handle;
++
++struct fbsd_pspace_data
++{
++ /* Offsets in the runtime linker's 'Obj_Entry' structure. */
++ LONGEST off_linkmap;
++ LONGEST off_tlsindex;
++ bool rtld_offsets_valid;
++};
++
++static struct fbsd_pspace_data *
++get_fbsd_pspace_data (struct program_space *pspace)
++{
++ struct fbsd_pspace_data *data;
++
++ data = ((struct fbsd_pspace_data *)
++ program_space_data (pspace, fbsd_pspace_data_handle));
++ if (data == NULL)
++ {
++ data = XCNEW (struct fbsd_pspace_data);
++ set_program_space_data (pspace, fbsd_pspace_data_handle, data);
++ }
++
++ return data;
++}
++
++/* The cleanup callback for FreeBSD architecture per-program-space data. */
++
++static void
++fbsd_pspace_data_cleanup (struct program_space *pspace, void *data)
++{
++ xfree (data);
++}
++
+ /* This is how we want PTIDs from core files to be printed. */
+
+ static const char *
+@@ -1932,6 +1968,121 @@ fbsd_get_syscall_number (struct gdbarch *gdbarch, thread_info *thread)
+ internal_error (__FILE__, __LINE__, _("fbsd_get_sycall_number called"));
+ }
+
++/* Read an integer symbol value from the current target. */
++
++static LONGEST
++fbsd_read_integer_by_name (struct gdbarch *gdbarch, const char *name)
++{
++ bound_minimal_symbol ms = lookup_minimal_symbol (name, NULL, NULL);
++ if (ms.minsym == NULL)
++ error (_("Unable to resolve symbol '%s'"), name);
++
++ gdb_byte buf[4];
++ if (target_read_memory (BMSYMBOL_VALUE_ADDRESS (ms), buf, sizeof buf) != 0)
++ error (_("Unable to read value of '%s'"), name);
++
++ return extract_signed_integer (buf, sizeof buf, gdbarch_byte_order (gdbarch));
++}
++
++/* Lookup offsets of fields in the runtime linker's 'Obj_Entry'
++ structure needed to determine the TLS index of an object file. */
++
++static void
++fbsd_fetch_rtld_offsets (struct gdbarch *gdbarch, struct fbsd_pspace_data *data)
++{
++ TRY
++ {
++ /* Fetch offsets from debug symbols in rtld. */
++ struct symbol *obj_entry_sym
++ = lookup_symbol_in_language ("Struct_Obj_Entry", NULL, STRUCT_DOMAIN,
++ language_c, NULL).symbol;
++ if (obj_entry_sym == NULL)
++ error (_("Unable to find Struct_Obj_Entry symbol"));
++ data->off_linkmap = lookup_struct_elt (SYMBOL_TYPE(obj_entry_sym),
++ "linkmap", 0).offset / 8;
++ data->off_tlsindex = lookup_struct_elt (SYMBOL_TYPE(obj_entry_sym),
++ "tlsindex", 0).offset / 8;
++ data->rtld_offsets_valid = true;
++ return;
++ }
++ CATCH (e, RETURN_MASK_ERROR)
++ {
++ data->off_linkmap = -1;
++ }
++ END_CATCH
++
++ TRY
++ {
++ /* Fetch offsets from global variables in libthr. Note that
++ this does not work for single-threaded processes that are not
++ linked against libthr. */
++ data->off_linkmap = fbsd_read_integer_by_name (gdbarch,
++ "_thread_off_linkmap");
++ data->off_tlsindex = fbsd_read_integer_by_name (gdbarch,
++ "_thread_off_tlsindex");
++ data->rtld_offsets_valid = true;
++ return;
++ }
++ CATCH (e, RETURN_MASK_ERROR)
++ {
++ data->off_linkmap = -1;
++ }
++ END_CATCH
++}
++
++/* Helper function to read the TLS index of an object file associated
++ with a link map entry at LM_ADDR. */
++
++static LONGEST
++fbsd_get_tls_index (struct gdbarch *gdbarch, CORE_ADDR lm_addr)
++{
++ struct fbsd_pspace_data *data = get_fbsd_pspace_data (current_program_space);
++
++ if (!data->rtld_offsets_valid)
++ fbsd_fetch_rtld_offsets (gdbarch, data);
++
++ if (data->off_linkmap == -1)
++ throw_error (TLS_GENERIC_ERROR,
++ _("Cannot fetch runtime linker structure offsets"));
++
++ /* Simulate container_of to convert from LM_ADDR to the Obj_Entry
++ pointer and then compute the offset of the tlsindex member. */
++ CORE_ADDR tlsindex_addr = lm_addr - data->off_linkmap + data->off_tlsindex;
++
++ gdb_byte buf[4];
++ if (target_read_memory (tlsindex_addr, buf, sizeof buf) != 0)
++ throw_error (TLS_GENERIC_ERROR,
++ _("Cannot find thread-local variables on this target"));
++
++ return extract_signed_integer (buf, sizeof buf, gdbarch_byte_order (gdbarch));
++}
++
++/* See fbsd-tdep.h. */
++
++CORE_ADDR
++fbsd_get_thread_local_address (struct gdbarch *gdbarch, CORE_ADDR dtv_addr,
++ CORE_ADDR lm_addr, CORE_ADDR offset)
++{
++ LONGEST tls_index = fbsd_get_tls_index (gdbarch, lm_addr);
++
++ gdb_byte buf[gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT];
++ if (target_read_memory (dtv_addr, buf, sizeof buf) != 0)
++ throw_error (TLS_GENERIC_ERROR,
++ _("Cannot find thread-local variables on this target"));
++
++ const struct builtin_type *builtin = builtin_type (gdbarch);
++ CORE_ADDR addr = gdbarch_pointer_to_address (gdbarch,
++ builtin->builtin_data_ptr, buf);
++
++ addr += (tls_index + 1) * TYPE_LENGTH (builtin->builtin_data_ptr);
++ if (target_read_memory (addr, buf, sizeof buf) != 0)
++ throw_error (TLS_GENERIC_ERROR,
++ _("Cannot find thread-local variables on this target"));
++
++ addr = gdbarch_pointer_to_address (gdbarch, builtin->builtin_data_ptr, buf);
++ return addr + offset;
++}
++
+ /* To be called from GDB_OSABI_FREEBSD handlers. */
+
+ void
+@@ -1957,4 +2108,6 @@ _initialize_fbsd_tdep (void)
+ {
+ fbsd_gdbarch_data_handle =
+ gdbarch_data_register_post_init (init_fbsd_gdbarch_data);
++ fbsd_pspace_data_handle
++ = register_program_space_data_with_cleanup (NULL, fbsd_pspace_data_cleanup);
+ }
+diff --git gdb/fbsd-tdep.h gdb/fbsd-tdep.h
+index efd7c2c78f..0e29508c9f 100644
+--- gdb/fbsd-tdep.h
++++ gdb/fbsd-tdep.h
+@@ -60,4 +60,15 @@ extern void fbsd_info_proc_mappings_entry (int addr_bit, ULONGEST kve_start,
+ int kve_flags, int kve_protection,
+ const void *kve_path);
+
++/* Helper function to fetch the address of a thread-local variable.
++ DTV_ADDR is the base address of the thread's dtv array. LM_ADDR is
++ the address of the link_map structure for the associated object
++ file. OFFSET is the offset of the variable in the object file's
++ thread-local variable block. */
++
++extern CORE_ADDR fbsd_get_thread_local_address (struct gdbarch *gdbarch,
++ CORE_ADDR dtv_addr,
++ CORE_ADDR lm_addr,
++ CORE_ADDR offset);
++
+ #endif /* fbsd-tdep.h */
diff --git a/devel/gdb/files/commit-b0f87ed032 b/devel/gdb/files/commit-b0f87ed032
new file mode 100644
index 000000000000..d43bf667d9ec
--- /dev/null
+++ b/devel/gdb/files/commit-b0f87ed032
@@ -0,0 +1,60 @@
+commit b0f87ed032bb68a9965de81cbf9fd676a83b9174
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Support TLS variables on FreeBSD/riscv.
+
+ Derive the pointer to the DTV array from the tp register.
+
+ gdb/ChangeLog:
+
+ * riscv-fbsd-tdep.c (riscv_fbsd_get_thread_local_address): New.
+ (riscv_fbsd_init_abi): Install gdbarch
+ "fetch_tls_load_module_address" and "get_thread_local_address"
+ methods.
+
+diff --git gdb/riscv-fbsd-tdep.c gdb/riscv-fbsd-tdep.c
+index 97ad28f59a..3125a2285e 100644
+--- gdb/riscv-fbsd-tdep.c
++++ gdb/riscv-fbsd-tdep.c
+@@ -174,6 +174,28 @@ static const struct tramp_frame riscv_fbsd_sigframe =
+ riscv_fbsd_sigframe_init
+ };
+
++/* Implement the "get_thread_local_address" gdbarch method. */
++
++static CORE_ADDR
++riscv_fbsd_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid,
++ CORE_ADDR lm_addr, CORE_ADDR offset)
++{
++ struct regcache *regcache;
++
++ regcache = get_thread_arch_regcache (ptid, gdbarch);
++
++ target_fetch_registers (regcache, RISCV_TP_REGNUM);
++
++ ULONGEST tp;
++ if (regcache->cooked_read (RISCV_TP_REGNUM, &tp) != REG_VALID)
++ error (_("Unable to fetch %%tp"));
++
++ /* %tp points to the end of the TCB which contains two pointers.
++ The first pointer in the TCB points to the DTV array. */
++ CORE_ADDR dtv_addr = tp - (gdbarch_ptr_bit (gdbarch) / 8) * 2;
++ return fbsd_get_thread_local_address (gdbarch, dtv_addr, lm_addr, offset);
++}
++
+ /* Implement the 'init_osabi' method of struct gdb_osabi_handler. */
+
+ static void
+@@ -193,6 +215,11 @@ riscv_fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+
+ set_gdbarch_iterate_over_regset_sections
+ (gdbarch, riscv_fbsd_iterate_over_regset_sections);
++
++ set_gdbarch_fetch_tls_load_module_address (gdbarch,
++ svr4_fetch_objfile_link_map);
++ set_gdbarch_get_thread_local_address (gdbarch,
++ riscv_fbsd_get_thread_local_address);
+ }
+
+ void
diff --git a/devel/gdb/files/commit-cd250a1898 b/devel/gdb/files/commit-cd250a1898
new file mode 100644
index 000000000000..c50c0f572b1a
--- /dev/null
+++ b/devel/gdb/files/commit-cd250a1898
@@ -0,0 +1,30 @@
+commit cd250a1898bb6fdb41f4a1063dbcfac04affcd11
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Update comment for target::get_thread_local_address.
+
+ There isn't an 'objfile' parameter, instead 'load_module_addr' is used
+ to indicate the executable or shared library. Also, the function
+ throws errors rather than returning error values.
+
+ gdb/ChangeLog:
+
+ * target.h (target::get_thread_local_address): Update comment.
+
+diff --git gdb/target.h gdb/target.h
+index c95151a404..5fe6aa74b0 100644
+--- gdb/target.h
++++ gdb/target.h
+@@ -718,9 +718,9 @@ struct target_ops
+ TARGET_DEFAULT_NORETURN (tcomplain ());
+ /* Return the thread-local address at OFFSET in the
+ thread-local storage for the thread PTID and the shared library
+- or executable file given by OBJFILE. If that block of
++ or executable file given by LOAD_MODULE_ADDR. If that block of
+ thread-local storage hasn't been allocated yet, this function
+- may return an error. LOAD_MODULE_ADDR may be zero for statically
++ may throw an error. LOAD_MODULE_ADDR may be zero for statically
+ linked multithreaded inferiors. */
+ virtual CORE_ADDR get_thread_local_address (ptid_t ptid,
+ CORE_ADDR load_module_addr,
diff --git a/devel/gdb/files/commit-ce25aa57a3 b/devel/gdb/files/commit-ce25aa57a3
new file mode 100644
index 000000000000..17e7c705bd0c
--- /dev/null
+++ b/devel/gdb/files/commit-ce25aa57a3
@@ -0,0 +1,64 @@
+commit ce25aa57a3cdd028be5868423e6e55506ccd1053
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Support TLS variables on FreeBSD/i386.
+
+ Derive the pointer to the DTV array from the gs_base register. As
+ with FreeBSD/amd64, gs_base is currently only available via the native
+ target.
+
+ gdb/ChangeLog:
+
+ * i386-fbsd-tdep.c (i386fbsd_get_thread_local_address): New.
+ (i386fbsd_init_abi): Install gdbarch
+ "fetch_tls_load_module_address" and "get_thread_local_address"
+ methods.
+
+diff --git gdb/i386-fbsd-tdep.c gdb/i386-fbsd-tdep.c
+index ac57e7383d..f274847174 100644
+--- gdb/i386-fbsd-tdep.c
++++ gdb/i386-fbsd-tdep.c
+@@ -320,6 +320,30 @@ i386fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
+ "XSAVE extended state", cb_data);
+ }
+
++/* Implement the get_thread_local_address gdbarch method. */
++
++static CORE_ADDR
++i386fbsd_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid,
++ CORE_ADDR lm_addr, CORE_ADDR offset)
++{
++ struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
++ struct regcache *regcache;
++
++ if (tdep->fsbase_regnum == -1)
++ error (_("Unable to fetch %%gsbase"));
++
++ regcache = get_thread_arch_regcache (ptid, gdbarch);
++
++ target_fetch_registers (regcache, tdep->fsbase_regnum + 1);
++
++ ULONGEST gsbase;
++ if (regcache->cooked_read (tdep->fsbase_regnum + 1, &gsbase) != REG_VALID)
++ error (_("Unable to fetch %%gsbase"));
++
++ CORE_ADDR dtv_addr = gsbase + gdbarch_ptr_bit (gdbarch) / 8;
++ return fbsd_get_thread_local_address (gdbarch, dtv_addr, lm_addr, offset);
++}
++
+ static void
+ i386fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+ {
+@@ -418,6 +442,11 @@ i386fbsd4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+
+ set_gdbarch_core_read_description (gdbarch,
+ i386fbsd_core_read_description);
++
++ set_gdbarch_fetch_tls_load_module_address (gdbarch,
++ svr4_fetch_objfile_link_map);
++ set_gdbarch_get_thread_local_address (gdbarch,
++ i386fbsd_get_thread_local_address);
+ }
+
+ void
diff --git a/devel/gdb/files/commit-dd6876c91c b/devel/gdb/files/commit-dd6876c91c
new file mode 100644
index 000000000000..6204f9d56c08
--- /dev/null
+++ b/devel/gdb/files/commit-dd6876c91c
@@ -0,0 +1,237 @@
+commit dd6876c91cd40cc105b1a91f418ca2c80683b314
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Support fs_base and gs_base on FreeBSD/i386.
+
+ The i386 BSD native target uses the same ptrace operations
+ (PT_[GS]ET[FG]SBASE) as the amd64 BSD native target to fetch and store
+ the registers.
+
+ The amd64 BSD native now uses 'tdep->fsbase_regnum' instead of
+ hardcoding AMD64_FSBASE_REGNUM and AMD64_GSBASE_REGNUM to support
+ 32-bit targets. In addition, the store operations explicitly zero the
+ new register value before fetching it from the register cache to
+ ensure 32-bit values are zero-extended.
+
+ gdb/ChangeLog:
+
+ * amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers): Use
+ tdep->fsbase_regnum instead of constants for fs_base and gs_base.
+ (amd64bsd_store_inferior_registers): Likewise.
+ * amd64-fbsd-nat.c (amd64_fbsd_nat_target::read_description):
+ Enable segment base registers.
+ * i386-bsd-nat.c (i386bsd_fetch_inferior_registers): Use
+ PT_GETFSBASE and PT_GETGSBASE.
+ (i386bsd_store_inferior_registers): Use PT_SETFSBASE and
+ PT_SETGSBASE.
+ * i386-fbsd-nat.c (i386_fbsd_nat_target::read_description): Enable
+ segment base registers.
+ * i386-fbsd-tdep.c (i386fbsd_core_read_description): Likewise.
+
+diff --git gdb/amd64-bsd-nat.c gdb/amd64-bsd-nat.c
+index a2a91abb91..35763a5b95 100644
+--- gdb/amd64-bsd-nat.c
++++ gdb/amd64-bsd-nat.c
+@@ -43,6 +43,9 @@ amd64bsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
+ {
+ struct gdbarch *gdbarch = regcache->arch ();
+ pid_t pid = get_ptrace_pid (regcache->ptid ());
++#if defined(PT_GETFSBASE) || defined(PT_GETGSBASE)
++ const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
++#endif
+
+ if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum))
+ {
+@@ -57,27 +60,27 @@ amd64bsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
+ }
+
+ #ifdef PT_GETFSBASE
+- if (regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
++ if (regnum == -1 || regnum == tdep->fsbase_regnum)
+ {
+ register_t base;
+
+ if (ptrace (PT_GETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+ perror_with_name (_("Couldn't get segment register fs_base"));
+
+- regcache->raw_supply (AMD64_FSBASE_REGNUM, &base);
++ regcache->raw_supply (tdep->fsbase_regnum, &base);
+ if (regnum != -1)
+ return;
+ }
+ #endif
+ #ifdef PT_GETGSBASE
+- if (regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
++ if (regnum == -1 || regnum == tdep->fsbase_regnum + 1)
+ {
+ register_t base;
+
+ if (ptrace (PT_GETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+ perror_with_name (_("Couldn't get segment register gs_base"));
+
+- regcache->raw_supply (AMD64_GSBASE_REGNUM, &base);
++ regcache->raw_supply (tdep->fsbase_regnum + 1, &base);
+ if (regnum != -1)
+ return;
+ }
+@@ -116,6 +119,9 @@ amd64bsd_store_inferior_registers (struct regcache *regcache, int regnum)
+ {
+ struct gdbarch *gdbarch = regcache->arch ();
+ pid_t pid = get_ptrace_pid (regcache->ptid ());
++#if defined(PT_SETFSBASE) || defined(PT_SETGSBASE)
++ const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
++#endif
+
+ if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum))
+ {
+@@ -134,11 +140,13 @@ amd64bsd_store_inferior_registers (struct regcache *regcache, int regnum)
+ }
+
+ #ifdef PT_SETFSBASE
+- if (regnum == -1 || regnum == AMD64_FSBASE_REGNUM)
++ if (regnum == -1 || regnum == tdep->fsbase_regnum)
+ {
+ register_t base;
+
+- regcache->raw_collect (AMD64_FSBASE_REGNUM, &base);
++ /* Clear the full base value to support 32-bit targets. */
++ base = 0;
++ regcache->raw_collect (tdep->fsbase_regnum, &base);
+
+ if (ptrace (PT_SETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+ perror_with_name (_("Couldn't write segment register fs_base"));
+@@ -147,11 +155,13 @@ amd64bsd_store_inferior_registers (struct regcache *regcache, int regnum)
+ }
+ #endif
+ #ifdef PT_SETGSBASE
+- if (regnum == -1 || regnum == AMD64_GSBASE_REGNUM)
++ if (regnum == -1 || regnum == tdep->fsbase_regnum + 1)
+ {
+ register_t base;
+
+- regcache->raw_collect (AMD64_GSBASE_REGNUM, &base);
++ /* Clear the full base value to support 32-bit targets. */
++ base = 0;
++ regcache->raw_collect (tdep->fsbase_regnum + 1, &base);
+
+ if (ptrace (PT_SETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+ perror_with_name (_("Couldn't write segment register gs_base"));
+diff --git gdb/amd64-fbsd-nat.c gdb/amd64-fbsd-nat.c
+index 9fff763dd3..cc676d3214 100644
+--- gdb/amd64-fbsd-nat.c
++++ gdb/amd64-fbsd-nat.c
+@@ -190,13 +190,13 @@ amd64_fbsd_nat_target::read_description ()
+ if (is64)
+ return amd64_target_description (xcr0, true);
+ else
+- return i386_target_description (xcr0, false);
++ return i386_target_description (xcr0, true);
+ }
+ #endif
+ if (is64)
+ return amd64_target_description (X86_XSTATE_SSE_MASK, true);
+ else
+- return i386_target_description (X86_XSTATE_SSE_MASK, false);
++ return i386_target_description (X86_XSTATE_SSE_MASK, true);
+ }
+
+ #if defined(HAVE_PT_GETDBREGS) && defined(USE_SIGTRAP_SIGINFO)
+diff --git gdb/i386-bsd-nat.c gdb/i386-bsd-nat.c
+index 009a8dc1b2..a10b496096 100644
+--- gdb/i386-bsd-nat.c
++++ gdb/i386-bsd-nat.c
+@@ -144,6 +144,33 @@ i386bsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
+ return;
+ }
+
++#ifdef PT_GETFSBASE
++ if (regnum == -1 || regnum == I386_FSBASE_REGNUM)
++ {
++ register_t base;
++
++ if (ptrace (PT_GETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
++ perror_with_name (_("Couldn't get segment register fs_base"));
++
++ regcache->raw_supply (I386_FSBASE_REGNUM, &base);
++ if (regnum != -1)
++ return;
++ }
++#endif
++#ifdef PT_GETGSBASE
++ if (regnum == -1 || regnum == I386_GSBASE_REGNUM)
++ {
++ register_t base;
++
++ if (ptrace (PT_GETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
++ perror_with_name (_("Couldn't get segment register gs_base"));
++
++ regcache->raw_supply (I386_GSBASE_REGNUM, &base);
++ if (regnum != -1)
++ return;
++ }
++#endif
++
+ if (regnum == -1 || regnum >= I386_ST0_REGNUM)
+ {
+ struct fpreg fpregs;
+@@ -211,6 +238,33 @@ i386bsd_store_inferior_registers (struct regcache *regcache, int regnum)
+ return;
+ }
+
++#ifdef PT_SETFSBASE
++ if (regnum == -1 || regnum == I386_FSBASE_REGNUM)
++ {
++ register_t base;
++
++ regcache->raw_collect (I386_FSBASE_REGNUM, &base);
++
++ if (ptrace (PT_SETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
++ perror_with_name (_("Couldn't write segment register fs_base"));
++ if (regnum != -1)
++ return;
++ }
++#endif
++#ifdef PT_SETGSBASE
++ if (regnum == -1 || regnum == I386_GSBASE_REGNUM)
++ {
++ register_t base;
++
++ regcache->raw_collect (I386_GSBASE_REGNUM, &base);
++
++ if (ptrace (PT_SETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
++ perror_with_name (_("Couldn't write segment register gs_base"));
++ if (regnum != -1)
++ return;
++ }
++#endif
++
+ if (regnum == -1 || regnum >= I386_ST0_REGNUM)
+ {
+ struct fpreg fpregs;
+diff --git gdb/i386-fbsd-nat.c gdb/i386-fbsd-nat.c
+index 7106e90801..be5d4c67be 100644
+--- gdb/i386-fbsd-nat.c
++++ gdb/i386-fbsd-nat.c
+@@ -160,7 +160,7 @@ i386_fbsd_nat_target::read_description ()
+ if (x86bsd_xsave_len == 0)
+ xcr0 = X86_XSTATE_SSE_MASK;
+
+- return i386_target_description (xcr0, false);
++ return i386_target_description (xcr0, true);
+ }
+ #endif
+
+diff --git gdb/i386-fbsd-tdep.c gdb/i386-fbsd-tdep.c
+index 2f28bad728..ac57e7383d 100644
+--- gdb/i386-fbsd-tdep.c
++++ gdb/i386-fbsd-tdep.c
+@@ -267,7 +267,7 @@ i386fbsd_core_read_description (struct gdbarch *gdbarch,
+ struct target_ops *target,
+ bfd *abfd)
+ {
+- return i386_target_description (i386fbsd_core_read_xcr0 (abfd), false);
++ return i386_target_description (i386fbsd_core_read_xcr0 (abfd), true);
+ }
+
+ /* Similar to i386_supply_fpregset, but use XSAVE extended state. */
diff --git a/devel/gdb/files/commit-df22c1e5d5 b/devel/gdb/files/commit-df22c1e5d5
new file mode 100644
index 000000000000..70c27c6986b7
--- /dev/null
+++ b/devel/gdb/files/commit-df22c1e5d5
@@ -0,0 +1,36 @@
+commit df22c1e5d53c38f38bce6072bb46de240f9e0e2b
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Handle an edge case for minisym TLS variable lookups.
+
+ If a TLS variable is provided by a minisym from a separate debug file,
+ the separate debug file is passed to
+ gdbarch_fetch_tls_load_module_address. However, the object files
+ stored in the shared object list are the original object files, not
+ the separate debug object files. In this case,
+ svr4_fetch_objfile_link_map was failing to find the link map entry
+ since the debug object file is not in its internal list, only the
+ original object file.
+
+ gdb/ChangeLog:
+
+ * solib-svr4.c (svr4_fetch_objfile_link_map): Look for
+ objfile->separate_debug_objfile_backlink if not NULL.
+
+diff --git gdb/solib-svr4.c gdb/solib-svr4.c
+index 84693c1766..14a471b6dc 100644
+--- gdb/solib-svr4.c
++++ gdb/solib-svr4.c
+@@ -1551,6 +1551,11 @@ svr4_fetch_objfile_link_map (struct objfile *objfile)
+ if (objfile == symfile_objfile)
+ return info->main_lm_addr;
+
++ /* If OBJFILE is a separate debug object file, look for the
++ original object file. */
++ if (objfile->separate_debug_objfile_backlink != NULL)
++ objfile = objfile->separate_debug_objfile_backlink;
++
+ /* The other link map addresses may be found by examining the list
+ of shared libraries. */
+ for (so = master_so_list (); so; so = so->next)
diff --git a/devel/gdb/files/commit-ef0bd2046f b/devel/gdb/files/commit-ef0bd2046f
new file mode 100644
index 000000000000..464156bcac4c
--- /dev/null
+++ b/devel/gdb/files/commit-ef0bd2046f
@@ -0,0 +1,165 @@
+commit ef0bd2046f58fac69577892c2d3b44b20d027476
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Add a more general version of lookup_struct_elt_type.
+
+ lookup_struct_elt is a new function which returns a tuple of
+ information about a component of a structure or union. The returned
+ tuple contains a pointer to the struct field object for the component
+ as well as a bit offset of that field within the structure. If the
+ field names a field in an anonymous substructure, the offset is the
+ "global" offset relative to the original structure type. If noerr is
+ set, then the returned tuple will set the field pointer to NULL to
+ indicate a missing component rather than throwing an error.
+
+ lookup_struct_elt_type is now reimplemented in terms of this new
+ function. It simply returns the type of the returned field.
+
+ gdb/ChangeLog:
+
+ * gdbtypes.c (lookup_struct_elt): New function.
+ (lookup_struct_elt_type): Reimplement via lookup_struct_elt.
+ * gdbtypes.h (struct struct_elt): New type.
+ (lookup_struct_elt): New prototype.
+
+diff --git gdb/gdbtypes.c gdb/gdbtypes.c
+index 5924b15520..db470dafac 100644
+--- gdb/gdbtypes.c
++++ gdb/gdbtypes.c
+@@ -1644,19 +1644,10 @@ lookup_template_type (char *name, struct type *type,
+ return (SYMBOL_TYPE (sym));
+ }
+
+-/* Given a type TYPE, lookup the type of the component named NAME.
++/* See gdbtypes.h. */
+
+- TYPE can be either a struct or union, or a pointer or reference to
+- a struct or union. If it is a pointer or reference, its target
+- type is automatically used. Thus '.' and '->' are interchangable,
+- as specified for the definitions of the expression element types
+- STRUCTOP_STRUCT and STRUCTOP_PTR.
+-
+- If NOERR is nonzero, return NULL if there is no component named
+- NAME. */
+-
+-struct type *
+-lookup_struct_elt_type (struct type *type, const char *name, int noerr)
++struct_elt
++lookup_struct_elt (struct type *type, const char *name, int noerr)
+ {
+ int i;
+
+@@ -1683,39 +1674,47 @@ lookup_struct_elt_type (struct type *type, const char *name, int noerr)
+
+ if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
+ {
+- return TYPE_FIELD_TYPE (type, i);
++ return {&TYPE_FIELD (type, i), TYPE_FIELD_BITPOS (type, i)};
+ }
+ else if (!t_field_name || *t_field_name == '\0')
+ {
+- struct type *subtype
+- = lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name, 1);
+-
+- if (subtype != NULL)
+- return subtype;
++ struct_elt elt
++ = lookup_struct_elt (TYPE_FIELD_TYPE (type, i), name, 1);
++ if (elt.field != NULL)
++ {
++ elt.offset += TYPE_FIELD_BITPOS (type, i);
++ return elt;
++ }
+ }
+ }
+
+ /* OK, it's not in this class. Recursively check the baseclasses. */
+ for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
+ {
+- struct type *t;
+-
+- t = lookup_struct_elt_type (TYPE_BASECLASS (type, i), name, 1);
+- if (t != NULL)
+- {
+- return t;
+- }
++ struct_elt elt = lookup_struct_elt (TYPE_BASECLASS (type, i), name, 1);
++ if (elt.field != NULL)
++ return elt;
+ }
+
+ if (noerr)
+- {
+- return NULL;
+- }
++ return {nullptr, 0};
+
+ std::string type_name = type_to_string (type);
+ error (_("Type %s has no component named %s."), type_name.c_str (), name);
+ }
+
++/* See gdbtypes.h. */
++
++struct type *
++lookup_struct_elt_type (struct type *type, const char *name, int noerr)
++{
++ struct_elt elt = lookup_struct_elt (type, name, noerr);
++ if (elt.field != NULL)
++ return FIELD_TYPE (*elt.field);
++ else
++ return NULL;
++}
++
+ /* Store in *MAX the largest number representable by unsigned integer type
+ TYPE. */
+
+diff --git gdb/gdbtypes.h gdb/gdbtypes.h
+index a6d4f64e9b..66051cf02c 100644
+--- gdb/gdbtypes.h
++++ gdb/gdbtypes.h
+@@ -1873,6 +1873,44 @@ extern struct type *allocate_stub_method (struct type *);
+
+ extern const char *type_name_or_error (struct type *type);
+
++struct struct_elt
++{
++ /* The field of the element, or NULL if no element was found. */
++ struct field *field;
++
++ /* The bit offset of the element in the parent structure. */
++ LONGEST offset;
++};
++
++/* Given a type TYPE, lookup the field and offset of the component named
++ NAME.
++
++ TYPE can be either a struct or union, or a pointer or reference to
++ a struct or union. If it is a pointer or reference, its target
++ type is automatically used. Thus '.' and '->' are interchangable,
++ as specified for the definitions of the expression element types
++ STRUCTOP_STRUCT and STRUCTOP_PTR.
++
++ If NOERR is nonzero, the returned structure will have field set to
++ NULL if there is no component named NAME.
++
++ If the component NAME is a field in an anonymous substructure of
++ TYPE, the returned offset is a "global" offset relative to TYPE
++ rather than an offset within the substructure. */
++
++extern struct_elt lookup_struct_elt (struct type *, const char *, int);
++
++/* Given a type TYPE, lookup the type of the component named NAME.
++
++ TYPE can be either a struct or union, or a pointer or reference to
++ a struct or union. If it is a pointer or reference, its target
++ type is automatically used. Thus '.' and '->' are interchangable,
++ as specified for the definitions of the expression element types
++ STRUCTOP_STRUCT and STRUCTOP_PTR.
++
++ If NOERR is nonzero, return NULL if there is no component named
++ NAME. */
++
+ extern struct type *lookup_struct_elt_type (struct type *, const char *, int);
+
+ extern struct type *make_pointer_type (struct type *, struct type **);
diff --git a/devel/gdb/files/commit-f5424cfa7e b/devel/gdb/files/commit-f5424cfa7e
new file mode 100644
index 000000000000..2dc05f554234
--- /dev/null
+++ b/devel/gdb/files/commit-f5424cfa7e
@@ -0,0 +1,63 @@
+commit f5424cfa7e9337a6cb02a1f83c9feea0995c5350
+Author: John Baldwin <jhb@FreeBSD.org>
+Date: Tue Mar 12 13:39:02 2019 -0700
+
+ Support TLS variables on FreeBSD/amd64.
+
+ Use the fs_base register to fetch the address of a thread's tcb and
+ calculate the address of the DTV array. This value is then passed to
+ fbsd_get_thread_local_address to compute the final variable address.
+
+ Note that fs_base is currently only available via the native target as
+ core dumps on FreeBSD do not store the value of fs_base.
+
+ gdb/ChangeLog:
+
+ * amd64-fbsd-tdep.c (amd64fbsd_get_thread_local_address): New.
+ (amd64fbsd_init_abi): Install gdbarch
+ "fetch_tls_load_module_address" and "get_thread_local_address"
+ methods.
+
+diff --git gdb/amd64-fbsd-tdep.c gdb/amd64-fbsd-tdep.c
+index 403e65022d..7e2e9edf21 100644
+--- gdb/amd64-fbsd-tdep.c
++++ gdb/amd64-fbsd-tdep.c
+@@ -204,6 +204,26 @@ amd64fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
+ &amd64fbsd_xstateregset, "XSAVE extended state", cb_data);
+ }
+
++/* Implement the get_thread_local_address gdbarch method. */
++
++static CORE_ADDR
++amd64fbsd_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid,
++ CORE_ADDR lm_addr, CORE_ADDR offset)
++{
++ struct regcache *regcache;
++
++ regcache = get_thread_arch_regcache (ptid, gdbarch);
++
++ target_fetch_registers (regcache, AMD64_FSBASE_REGNUM);
++
++ ULONGEST fsbase;
++ if (regcache->cooked_read (AMD64_FSBASE_REGNUM, &fsbase) != REG_VALID)
++ error (_("Unable to fetch %%fsbase"));
++
++ CORE_ADDR dtv_addr = fsbase + gdbarch_ptr_bit (gdbarch) / 8;
++ return fbsd_get_thread_local_address (gdbarch, dtv_addr, lm_addr, offset);
++}
++
+ static void
+ amd64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+ {
+@@ -241,6 +261,11 @@ amd64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+ /* FreeBSD uses SVR4-style shared libraries. */
+ set_solib_svr4_fetch_link_map_offsets
+ (gdbarch, svr4_lp64_fetch_link_map_offsets);
++
++ set_gdbarch_fetch_tls_load_module_address (gdbarch,
++ svr4_fetch_objfile_link_map);
++ set_gdbarch_get_thread_local_address (gdbarch,
++ amd64fbsd_get_thread_local_address);
+ }
+
+ void
diff --git a/devel/gdb/files/extrapatch-kgdb b/devel/gdb/files/extrapatch-kgdb
index b61d3b7237d0..5ce135790aba 100644
--- a/devel/gdb/files/extrapatch-kgdb
+++ b/devel/gdb/files/extrapatch-kgdb
@@ -1,8 +1,8 @@
diff --git gdb/Makefile.in gdb/Makefile.in
-index 13627e07e0..a72fd8fe0f 100644
+index 5614cc3386..b9acc63c3f 100644
--- gdb/Makefile.in
+++ gdb/Makefile.in
-@@ -236,7 +236,8 @@ INCGNU = -I$(srcdir)/gnulib/import -I$(GNULIB_BUILDDIR)/import
+@@ -230,7 +230,8 @@ INCGNU = -I$(srcdir)/gnulib/import -I$(GNULIB_BUILDDIR)/import
# Generated headers in the gnulib directory. These must be listed
# so that they are generated before other files are compiled.
@@ -12,7 +12,7 @@ index 13627e07e0..a72fd8fe0f 100644
#
# CLI sub directory definitons
-@@ -643,6 +644,7 @@ TARGET_OBS = @TARGET_OBS@
+@@ -632,6 +633,7 @@ TARGET_OBS = @TARGET_OBS@
# All target-dependent objects files that require 64-bit CORE_ADDR
# (used with --enable-targets=all --enable-64-bit-bfd).
ALL_64_TARGET_OBS = \
@@ -20,7 +20,7 @@ index 13627e07e0..a72fd8fe0f 100644
aarch64-fbsd-tdep.o \
aarch64-linux-tdep.o \
aarch64-newlib-tdep.o \
-@@ -656,6 +658,7 @@ ALL_64_TARGET_OBS = \
+@@ -646,6 +648,7 @@ ALL_64_TARGET_OBS = \
amd64-darwin-tdep.o \
amd64-dicos-tdep.o \
amd64-fbsd-tdep.o \
@@ -28,7 +28,7 @@ index 13627e07e0..a72fd8fe0f 100644
amd64-linux-tdep.o \
amd64-nbsd-tdep.o \
amd64-obsd-tdep.o \
-@@ -670,6 +673,7 @@ ALL_64_TARGET_OBS = \
+@@ -660,6 +663,7 @@ ALL_64_TARGET_OBS = \
ia64-vms-tdep.o \
mips64-obsd-tdep.o \
sparc64-fbsd-tdep.o \
@@ -36,24 +36,24 @@ index 13627e07e0..a72fd8fe0f 100644
sparc64-linux-tdep.o \
sparc64-nbsd-tdep.o \
sparc64-obsd-tdep.o \
-@@ -685,6 +689,7 @@ ALL_TARGET_OBS = \
- arch/i386.o \
+@@ -676,6 +680,7 @@ ALL_TARGET_OBS = \
arch/ppc-linux-common.o \
+ arch/riscv.o \
arm-bsd-tdep.o \
+ arm-fbsd-kern.o \
arm-fbsd-tdep.o \
arm-linux-tdep.o \
arm-nbsd-tdep.o \
-@@ -699,6 +704,8 @@ ALL_TARGET_OBS = \
- cris-linux-tdep.o \
- cris-tdep.o \
+@@ -693,6 +698,8 @@ ALL_TARGET_OBS = \
+ csky-linux-tdep.o \
+ csky-tdep.o \
dicos-tdep.o \
+ fbsd-kld.o \
+ fbsd-kthr.o \
fbsd-tdep.o \
frv-linux-tdep.o \
frv-tdep.o \
-@@ -715,6 +722,7 @@ ALL_TARGET_OBS = \
+@@ -709,6 +716,7 @@ ALL_TARGET_OBS = \
i386-darwin-tdep.o \
i386-dicos-tdep.o \
i386-fbsd-tdep.o \
@@ -61,7 +61,7 @@ index 13627e07e0..a72fd8fe0f 100644
i386-gnu-tdep.o \
i386-go32-tdep.o \
i386-linux-tdep.o \
-@@ -738,6 +746,7 @@ ALL_TARGET_OBS = \
+@@ -732,6 +740,7 @@ ALL_TARGET_OBS = \
mep-tdep.o \
microblaze-linux-tdep.o \
microblaze-tdep.o \
@@ -69,15 +69,23 @@ index 13627e07e0..a72fd8fe0f 100644
mips-fbsd-tdep.o \
mips-linux-tdep.o \
mips-nbsd-tdep.o \
-@@ -755,6 +764,7 @@ ALL_TARGET_OBS = \
- obsd-tdep.o \
+@@ -750,6 +759,7 @@ ALL_TARGET_OBS = \
+ or1k-linux-tdep.o \
or1k-tdep.o \
ppc-fbsd-tdep.o \
+ ppcfbsd-kern.o \
ppc-linux-tdep.o \
ppc-nbsd-tdep.o \
ppc-obsd-tdep.o \
-@@ -1611,7 +1621,7 @@ generated_files = \
+@@ -757,6 +767,7 @@ ALL_TARGET_OBS = \
+ ppc-sysv-tdep.o \
+ ppc64-tdep.o \
+ ravenscar-thread.o \
++ riscv-fbsd-kern.o \
+ riscv-fbsd-tdep.o \
+ riscv-linux-tdep.o \
+ riscv-tdep.o \
+@@ -1629,7 +1640,7 @@ generated_files = \
# Flags needed to compile Python code
PYTHON_CFLAGS = @PYTHON_CFLAGS@
@@ -86,37 +94,36 @@ index 13627e07e0..a72fd8fe0f 100644
@$(MAKE) $(FLAGS_TO_PASS) DO=all "DODIRS=`echo $(SUBDIRS) | sed 's/testsuite//'`" subdir_do
# Rule for compiling .c files in the top-level gdb directory.
-@@ -1924,6 +1934,12 @@ ifneq ($(CODESIGN_CERT),)
+@@ -1894,6 +1905,12 @@ ifneq ($(CODESIGN_CERT),)
$(ECHO_SIGN) $(CODESIGN) -s $(CODESIGN_CERT) gdb$(EXEEXT)
endif
+kgdb$(EXEEXT): kgdb-main.o $(LIBGDB_OBS) $(ADD_DEPS) $(CDEPS) $(TDEPLIBS)
-+ rm -f kgdb$(EXEEXT)
-+ $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \
++ $(SILENCE) rm -f kgdb$(EXEEXT)
++ $(ECHO_CXXLD) $(CC_LD) $(INTERNAL_LDFLAGS) $(WIN32LDAPP) \
+ -o kgdb$(EXEEXT) kgdb-main.o $(LIBGDB_OBS) \
+ $(TDEPLIBS) $(TUI_LIBRARY) $(CLIBS) $(LOADLIBES)
+
# Convenience rule to handle recursion.
$(LIBGNU) $(GNULIB_H): all-lib
all-lib: $(GNULIB_BUILDDIR)/Makefile
-@@ -1968,7 +1984,7 @@ clean mostlyclean: $(CONFIG_CLEAN)
- @$(MAKE) $(FLAGS_TO_PASS) DO=clean "DODIRS=$(CLEANDIRS)" subdir_do
- rm -f *.o *.a $(ADD_FILES) *~ init.c-tmp init.l-tmp version.c-tmp
- rm -f init.c version.c
-- rm -f gdb$(EXEEXT) core make.log
-+ rm -f gdb$(EXEEXT) core make.log kgdb$(EXEEXT)
+@@ -1940,6 +1957,7 @@ clean mostlyclean: $(CONFIG_CLEAN)
+ rm -f init.c stamp-init version.c stamp-version
+ rm -f gdb$(EXEEXT) core make.log
rm -f gdb[0-9]$(EXEEXT)
++ rm -f kgdb$(EXEEXT)
rm -f test-cp-name-parser$(EXEEXT)
rm -f xml-builtin.c stamp-xml
-@@ -2183,6 +2199,7 @@ MAKEOVERRIDES =
+ rm -f $(DEPDIR)/*
+@@ -2154,6 +2172,7 @@ force_update:
+ MAKEOVERRIDES =
ALLDEPFILES = \
- aarch64-fbsd-nat.c \
+ aarch64-fbsd-kern.c \
+ aarch64-fbsd-nat.c \
aarch64-fbsd-tdep.c \
aarch64-linux-nat.c \
- aarch64-linux-tdep.c \
-@@ -2200,6 +2217,7 @@ ALLDEPFILES = \
+@@ -2173,6 +2192,7 @@ ALLDEPFILES = \
amd64-bsd-nat.c \
amd64-darwin-tdep.c \
amd64-dicos-tdep.c \
@@ -124,7 +131,7 @@ index 13627e07e0..a72fd8fe0f 100644
amd64-fbsd-nat.c \
amd64-fbsd-tdep.c \
amd64-linux-nat.c \
-@@ -2214,6 +2232,7 @@ ALLDEPFILES = \
+@@ -2187,6 +2207,7 @@ ALLDEPFILES = \
arc-tdep.c \
arm.c \
arm-bsd-tdep.c \
@@ -132,17 +139,17 @@ index 13627e07e0..a72fd8fe0f 100644
arm-fbsd-nat.c \
arm-fbsd-tdep.c \
arm-get-next-pcs.c \
-@@ -2233,6 +2252,9 @@ ALLDEPFILES = \
+@@ -2207,6 +2228,9 @@ ALLDEPFILES = \
+ csky-tdep.c \
darwin-nat.c \
dicos-tdep.c \
- exec.c \
+ fbsd-kld.c \
+ fbsd-kthr.c \
+ fbsd-kvm.c \
fbsd-nat.c \
fbsd-tdep.c \
fork-child.c \
-@@ -2254,6 +2276,7 @@ ALLDEPFILES = \
+@@ -2228,6 +2252,7 @@ ALLDEPFILES = \
i386-darwin-nat.c \
i386-darwin-tdep.c \
i386-dicos-tdep.c \
@@ -150,15 +157,15 @@ index 13627e07e0..a72fd8fe0f 100644
i386-fbsd-nat.c \
i386-fbsd-tdep.c \
i386-gnu-nat.c \
-@@ -2293,6 +2316,7 @@ ALLDEPFILES = \
+@@ -2264,6 +2289,7 @@ ALLDEPFILES = \
+ microblaze-linux-tdep.c \
+ microblaze-tdep.c \
mingw-hdep.c \
++ mipsfbsd-kern.c \
mips-fbsd-nat.c \
mips-fbsd-tdep.c \
-+ mipsfbsd-kern.c \
mips-linux-nat.c \
- mips-linux-tdep.c \
- mips-nbsd-nat.c \
-@@ -2310,6 +2334,7 @@ ALLDEPFILES = \
+@@ -2283,6 +2309,7 @@ ALLDEPFILES = \
obsd-nat.c \
obsd-tdep.c \
posix-hdep.c \
@@ -166,7 +173,15 @@ index 13627e07e0..a72fd8fe0f 100644
ppc-fbsd-nat.c \
ppc-fbsd-tdep.c \
ppc-linux-nat.c \
-@@ -2355,6 +2380,7 @@ ALLDEPFILES = \
+@@ -2297,6 +2324,7 @@ ALLDEPFILES = \
+ procfs.c \
+ ravenscar-thread.c \
+ remote-sim.c \
++ riscv-fbsd-kern.c \
+ riscv-fbsd-nat.c \
+ riscv-fbsd-tdep.c \
+ riscv-linux-nat.c \
+@@ -2333,6 +2361,7 @@ ALLDEPFILES = \
sparc-sol2-nat.c \
sparc-sol2-tdep.c \
sparc-tdep.c \
@@ -174,7 +189,7 @@ index 13627e07e0..a72fd8fe0f 100644
sparc64-fbsd-nat.c \
sparc64-fbsd-tdep.c \
sparc64-linux-nat.c \
-@@ -2643,7 +2669,7 @@ endif
+@@ -2596,7 +2625,7 @@ endif
# A list of all the objects we might care about in this build, for
# dependency tracking.
@@ -184,10 +199,10 @@ index 13627e07e0..a72fd8fe0f 100644
# All the .deps files to include.
diff --git gdb/config.in gdb/config.in
-index 527290296e..8e0e90fd67 100644
+index ea907d2b56..ee9146fd4e 100644
--- gdb/config.in
+++ gdb/config.in
-@@ -228,6 +228,9 @@
+@@ -219,6 +219,9 @@
/* Define to 1 if your system has the kinfo_getvmmap function. */
#undef HAVE_KINFO_GETVMMAP
@@ -198,10 +213,10 @@ index 527290296e..8e0e90fd67 100644
#undef HAVE_LANGINFO_CODESET
diff --git gdb/configure gdb/configure
-index 3849b9494f..18d2e363dc 100755
+index 854837c50a..1f2da364cf 100755
--- gdb/configure
+++ gdb/configure
-@@ -8082,6 +8082,66 @@ $as_echo "#define HAVE_KINFO_GETFILE 1" >>confdefs.h
+@@ -8107,6 +8107,66 @@ $as_echo "#define HAVE_KINFO_GETFILE 1" >>confdefs.h
fi
@@ -269,10 +284,10 @@ index 3849b9494f..18d2e363dc 100755
if test "X$prefix" = "XNONE"; then
acl_final_prefix="$ac_default_prefix"
diff --git gdb/configure.ac gdb/configure.ac
-index 4c20ea5178..df156b484f 100644
+index 1527585839..37e8ce54b0 100644
--- gdb/configure.ac
+++ gdb/configure.ac
-@@ -534,6 +534,11 @@ AC_SEARCH_LIBS(kinfo_getfile, util util-freebsd,
+@@ -511,6 +511,11 @@ AC_SEARCH_LIBS(kinfo_getfile, util util-freebsd,
[AC_DEFINE(HAVE_KINFO_GETFILE, 1,
[Define to 1 if your system has the kinfo_getfile function. ])])
@@ -285,24 +300,24 @@ index 4c20ea5178..df156b484f 100644
# GDB may fork/exec the iconv program to get the list of supported character
diff --git gdb/configure.nat gdb/configure.nat
-index 7611266d86..8656015365 100644
+index 64ee101d83..f32e6328e0 100644
--- gdb/configure.nat
+++ gdb/configure.nat
-@@ -62,7 +62,8 @@ case ${gdb_host} in
+@@ -63,7 +63,8 @@ case ${gdb_host} in
LOADLIBES='-ldl $(RDYNAMIC)'
;;
fbsd*)
-- NATDEPFILES='fork-child.o fork-inferior.o inf-ptrace.o fbsd-nat.o'
-+ NATDEPFILES='fork-child.o fork-inferior.o inf-ptrace.o fbsd-nat.o \
+- NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o fbsd-nat.o'
++ NATDEPFILES='fork-child.o nat/fork-inferior.o inf-ptrace.o fbsd-nat.o \
+ fbsd-kvm.o'
HAVE_NATIVE_GCORE_HOST=1
LOADLIBES='-lkvm'
;;
diff --git gdb/configure.tgt gdb/configure.tgt
-index f197160896..ced1140328 100644
+index 27f122ad04..5fa0d0179e 100644
--- gdb/configure.tgt
+++ gdb/configure.tgt
-@@ -94,7 +94,7 @@ esac
+@@ -98,7 +98,7 @@ esac
case "${targ}" in
*-*-freebsd* | *-*-kfreebsd*-gnu)
@@ -311,7 +326,7 @@ index f197160896..ced1140328 100644
*-*-netbsd* | *-*-knetbsd*-gnu)
os_obs="nbsd-tdep.o solib-svr4.o";;
*-*-openbsd*)
-@@ -111,7 +111,7 @@ aarch64*-*-elf | aarch64*-*-rtems*)
+@@ -115,7 +115,7 @@ aarch64*-*-elf | aarch64*-*-rtems*)
aarch64*-*-freebsd*)
# Target: FreeBSD/aarch64
@@ -320,7 +335,7 @@ index f197160896..ced1140328 100644
;;
aarch64*-*-linux*)
-@@ -164,7 +164,7 @@ arm*-*-linux*)
+@@ -168,7 +168,7 @@ arm*-*-linux*)
;;
arm*-*-freebsd*)
# Target: FreeBSD/arm
@@ -329,7 +344,7 @@ index f197160896..ced1140328 100644
;;
arm*-*-netbsd* | arm*-*-knetbsd*-gnu)
# Target: NetBSD/arm
-@@ -251,7 +251,11 @@ i[34567]86-*-dicos*)
+@@ -267,7 +267,11 @@ i[34567]86-*-dicos*)
;;
i[34567]86-*-freebsd* | i[34567]86-*-kfreebsd*-gnu)
# Target: FreeBSD/i386
@@ -342,7 +357,7 @@ index f197160896..ced1140328 100644
;;
i[34567]86-*-netbsd* | i[34567]86-*-knetbsd*-gnu)
# Target: NetBSD/i386
-@@ -405,7 +409,7 @@ mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
+@@ -421,7 +425,7 @@ mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
;;
mips*-*-freebsd*)
# Target: MIPS running FreeBSD
@@ -351,7 +366,7 @@ index f197160896..ced1140328 100644
gdb_sim=../sim/mips/libsim.a
;;
mips64*-*-openbsd*)
-@@ -464,7 +468,7 @@ or1k-*-* | or1knd-*-*)
+@@ -488,7 +492,7 @@ or1k-*-* | or1knd-*-*)
powerpc*-*-freebsd*)
# Target: FreeBSD/powerpc
gdb_target_obs="rs6000-tdep.o ppc-sysv-tdep.o ppc64-tdep.o \
@@ -360,7 +375,16 @@ index f197160896..ced1140328 100644
ravenscar-thread.o ppc-ravenscar-thread.o"
;;
-@@ -587,6 +591,7 @@ sparc64-*-linux*)
+@@ -543,7 +547,7 @@ s390*-*-linux*)
+
+ riscv*-*-freebsd*)
+ # Target: FreeBSD/riscv
+- gdb_target_obs="riscv-fbsd-tdep.o"
++ gdb_target_obs="riscv-fbsd-tdep.o riscv-fbsd-kern.o"
+ ;;
+
+ riscv*-*-linux*)
+@@ -622,6 +626,7 @@ sparc64-*-linux*)
sparc*-*-freebsd* | sparc*-*-kfreebsd*-gnu)
# Target: FreeBSD/sparc64
gdb_target_obs="sparc-tdep.o sparc64-tdep.o sparc64-fbsd-tdep.o \
@@ -368,7 +392,7 @@ index f197160896..ced1140328 100644
ravenscar-thread.o sparc-ravenscar-thread.o"
;;
sparc-*-netbsd* | sparc-*-knetbsd*-gnu)
-@@ -709,8 +714,8 @@ x86_64-*-linux*)
+@@ -749,8 +754,8 @@ x86_64-*-linux*)
;;
x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
# Target: FreeBSD/amd64
@@ -380,10 +404,10 @@ index f197160896..ced1140328 100644
x86_64-*-mingw* | x86_64-*-cygwin*)
# Target: MingW/amd64
diff --git gdb/defs.h gdb/defs.h
-index fc4217005a..3d2eb6b1e9 100644
+index a44e186907..c4bfd42073 100644
--- gdb/defs.h
+++ gdb/defs.h
-@@ -481,6 +481,7 @@ enum gdb_osabi
+@@ -484,6 +484,7 @@ enum gdb_osabi
GDB_OSABI_SOLARIS,
GDB_OSABI_LINUX,
GDB_OSABI_FREEBSD,
@@ -392,10 +416,10 @@ index fc4217005a..3d2eb6b1e9 100644
GDB_OSABI_OPENBSD,
GDB_OSABI_WINCE,
diff --git gdb/gnulib/configure gdb/gnulib/configure
-index a152abcb76..140c4ad6a8 100644
+index 340c622cb3..bf0c4dd5d9 100644
--- gdb/gnulib/configure
+++ gdb/gnulib/configure
-@@ -17214,6 +17214,7 @@ else
+@@ -18579,6 +18579,7 @@ else
case "$host_os" in
# Guess all is fine on glibc systems.
*-gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;;
@@ -404,7 +428,7 @@ index a152abcb76..140c4ad6a8 100644
*) gl_cv_func_gettimeofday_clobber="guessing yes" ;;
esac
diff --git gdb/osabi.c gdb/osabi.c
-index 7d0540b181..c61c518652 100644
+index 5d4bbcdff8..a982b22624 100644
--- gdb/osabi.c
+++ gdb/osabi.c
@@ -66,6 +66,7 @@ static const struct osabi_names gdb_osabi_names[] =
@@ -416,10 +440,10 @@ index 7d0540b181..c61c518652 100644
{ "OpenBSD", NULL },
{ "WindowsCE", NULL },
diff --git gdb/regcache.c gdb/regcache.c
-index f3f845aad6..7ca007a422 100644
+index 6e3eee9663..49ca1e1535 100644
--- gdb/regcache.c
+++ gdb/regcache.c
-@@ -1035,6 +1035,22 @@ reg_buffer::raw_supply_zeroed (int regnum)
+@@ -1003,6 +1003,22 @@ reg_buffer::raw_supply_zeroed (int regnum)
m_register_status[regnum] = REG_VALID;
}
@@ -443,10 +467,10 @@ index f3f845aad6..7ca007a422 100644
void
diff --git gdb/regcache.h gdb/regcache.h
-index 4a45f33871..94f542c087 100644
+index 2b703ea4a4..d06e001957 100644
--- gdb/regcache.h
+++ gdb/regcache.h
-@@ -207,6 +207,8 @@ public:
+@@ -224,6 +224,8 @@ public:
only LEN, without editing the rest of the register. */
void raw_supply_part (int regnum, int offset, int len, const gdb_byte *in);
diff --git a/devel/gdb/files/kgdb/aarch64-fbsd-kern.c b/devel/gdb/files/kgdb/aarch64-fbsd-kern.c
index b2806784c320..0b055f8df9a8 100644
--- a/devel/gdb/files/kgdb/aarch64-fbsd-kern.c
+++ b/devel/gdb/files/kgdb/aarch64-fbsd-kern.c
@@ -73,7 +73,7 @@ aarch64_fbsd_trapframe_cache (struct frame_info *this_frame, void **this_cache)
struct gdbarch *gdbarch = get_frame_arch (this_frame);
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
struct trad_frame_cache *cache;
- CORE_ADDR addr, func, pc, sp;
+ CORE_ADDR func, pc, sp;
const char *name;
int i;
diff --git a/devel/gdb/files/kgdb/amd64fbsd-kern.c b/devel/gdb/files/kgdb/amd64fbsd-kern.c
index d76d9f5dfa1c..658d405ec537 100644
--- a/devel/gdb/files/kgdb/amd64fbsd-kern.c
+++ b/devel/gdb/files/kgdb/amd64fbsd-kern.c
@@ -37,7 +37,7 @@ __FBSDID("$FreeBSD$");
#include "symtab.h"
#include "trad-frame.h"
#include "amd64-tdep.h"
-#include "x86-xstate.h"
+#include "common/x86-xstate.h"
#ifdef __amd64__
#include <machine/pcb.h>
diff --git a/devel/gdb/files/kgdb/fbsd-kld.c b/devel/gdb/files/kgdb/fbsd-kld.c
index b5772fb8fd8d..25155a0f119f 100644
--- a/devel/gdb/files/kgdb/fbsd-kld.c
+++ b/devel/gdb/files/kgdb/fbsd-kld.c
@@ -138,7 +138,6 @@ static int
find_kld_path (const char *filename, char *path, size_t path_size)
{
struct kld_info *info;
- struct cleanup *cleanup;
gdb::unique_xmalloc_ptr<char> module_path;
char *module_dir, *cp;
int error;
@@ -403,7 +402,7 @@ kld_solib_create_inferior_hook (int from_tty)
"&((struct linker_file *)0)->pathname");
info->off_next = parse_and_eval_address(
"&((struct linker_file *)0)->link.tqe_next");
- } CATCH(e, RETURN_MASK_ERROR) {
+ } CATCH(e2, RETURN_MASK_ERROR) {
return;
}
END_CATCH
diff --git a/devel/gdb/files/kgdb/fbsd-kthr.c b/devel/gdb/files/kgdb/fbsd-kthr.c
index 575a7fa5af42..648fcfb0d8f6 100644
--- a/devel/gdb/files/kgdb/fbsd-kthr.c
+++ b/devel/gdb/files/kgdb/fbsd-kthr.c
@@ -155,7 +155,6 @@ kgdb_thr_init(CORE_ADDR (*cpu_pcb_addr) (u_int))
{
struct gdbarch *gdbarch = target_gdbarch ();
struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
- enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
struct kthr *kt;
CORE_ADDR addr, paddr;
@@ -230,7 +229,7 @@ kgdb_thr_init(CORE_ADDR (*cpu_pcb_addr) (u_int))
"&((struct thread *)0)->td_plist");
thread_oncpu_size = parse_and_eval_long(
"sizeof(((struct thread *)0)->td_oncpu)");
- } CATCH(e, RETURN_MASK_ERROR) {
+ } CATCH(e2, RETURN_MASK_ERROR) {
proc_off_p_pid = offsetof(struct proc, p_pid);
proc_off_p_comm = offsetof(struct proc, p_comm);
proc_off_p_list = offsetof(struct proc, p_list);
diff --git a/devel/gdb/files/kgdb/fbsd-kvm.c b/devel/gdb/files/kgdb/fbsd-kvm.c
index 6b9db066d105..507e09bc26ec 100644
--- a/devel/gdb/files/kgdb/fbsd-kvm.c
+++ b/devel/gdb/files/kgdb/fbsd-kvm.c
@@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$");
#include "inferior.h"
#include "objfiles.h"
#include "osabi.h"
+#include "process-stratum-target.h"
#include "solib.h"
#include "target.h"
#include "value.h"
@@ -192,6 +193,7 @@ fbsd_kernel_osabi_sniffer(bfd *abfd)
break;
if (osabi != GDB_OSABI_FREEBSD)
return (GDB_OSABI_UNKNOWN);
+ break;
}
default:
return (GDB_OSABI_UNKNOWN);
@@ -218,11 +220,10 @@ If no filename is specified, /dev/mem is used to examine the running kernel.\n\
target vmcore [-w] [filename]")
};
-class fbsd_kvm_target final : public target_ops
+class fbsd_kvm_target final : public process_stratum_target
{
public:
- fbsd_kvm_target ()
- { this->to_stratum = process_stratum; }
+ fbsd_kvm_target () = default;
const target_info &info () const override
{ return fbsd_kvm_target_info; }
@@ -243,9 +244,11 @@ public:
const char *pid_to_str (ptid_t) override;
const char *extra_thread_info (thread_info *) override;
- bool has_memory () override { return true; }
- bool has_stack () override { return true; }
- bool has_registers () override { return true; }
+ bool has_all_memory () override { return false; }
+ bool has_memory () override;
+ bool has_stack () override;
+ bool has_registers () override;
+ bool has_execution (ptid_t) override { return false; }
};
/* Target ops for libkvm interface. */
@@ -273,12 +276,10 @@ fbsd_kvm_target_open (const char *args, int from_tty)
char kvm_err[_POSIX2_LINE_MAX];
struct inferior *inf;
struct cleanup *old_chain;
- struct thread_info *ti;
struct kthr *kt;
kvm_t *nkvm;
char *temp, *kernel, *filename;
bool writeable;
- int ontop;
if (ops == NULL || ops->supply_pcb == NULL || ops->cpu_pcb_addr == NULL)
error ("ABI doesn't support a vmcore target");
@@ -384,7 +385,7 @@ fbsd_kvm_target_open (const char *args, int from_tty)
init_thread_list();
kt = kgdb_thr_init(ops->cpu_pcb_addr);
while (kt != NULL) {
- ti = add_thread_silent(fbsd_vmcore_ptid(kt->tid));
+ add_thread_silent(fbsd_vmcore_ptid(kt->tid));
kt = kgdb_thr_next(kt);
}
if (curkthr != 0)
@@ -434,6 +435,24 @@ fbsd_kvm_target::extra_thread_info(thread_info *ti)
return (kgdb_thr_extra_thread_info(ti->ptid.tid()));
}
+bool
+fbsd_kvm_target::has_memory ()
+{
+ return (kvm != NULL);
+}
+
+bool
+fbsd_kvm_target::has_stack ()
+{
+ return (kvm != NULL);
+}
+
+bool
+fbsd_kvm_target::has_registers ()
+{
+ return (kvm != NULL);
+}
+
void
fbsd_kvm_target::files_info()
{
diff --git a/devel/gdb/files/kgdb/mipsfbsd-kern.c b/devel/gdb/files/kgdb/mipsfbsd-kern.c
index a59c8e1296f5..80d1527c7072 100644
--- a/devel/gdb/files/kgdb/mipsfbsd-kern.c
+++ b/devel/gdb/files/kgdb/mipsfbsd-kern.c
@@ -132,10 +132,9 @@ static struct trad_frame_cache *
mipsfbsd_trapframe_cache (struct frame_info *this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
- enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
size_t regsize = mips_isa_regsize (gdbarch);
struct trad_frame_cache *cache;
- CORE_ADDR addr, func, pc, sp;
+ CORE_ADDR addr, func, sp;
int regnum;
if (*this_cache != NULL)
diff --git a/devel/gdb/files/kgdb/ppcfbsd-kern.c b/devel/gdb/files/kgdb/ppcfbsd-kern.c
index 73522e482ab3..35d99d3b25d7 100644
--- a/devel/gdb/files/kgdb/ppcfbsd-kern.c
+++ b/devel/gdb/files/kgdb/ppcfbsd-kern.c
@@ -109,10 +109,9 @@ ppcfbsd_trapframe_cache (struct frame_info *this_frame, void **this_cache)
{
struct gdbarch *gdbarch = get_frame_arch (this_frame);
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
- enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
struct trad_frame_cache *cache;
CORE_ADDR base;
- int i, regnum;
+ int i;
if (*this_cache)
return (struct trad_frame_cache *)*this_cache;
diff --git a/devel/gdb/files/kgdb/riscv-fbsd-kern.c b/devel/gdb/files/kgdb/riscv-fbsd-kern.c
new file mode 100644
index 000000000000..8ed0318ab8b1
--- /dev/null
+++ b/devel/gdb/files/kgdb/riscv-fbsd-kern.c
@@ -0,0 +1,210 @@
+/*-
+ * Copyright (c) 2018 John Baldwin <jhb@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/* Target-dependent code for FreeBSD/riscv64 kernels. */
+
+#include "defs.h"
+
+#include "riscv-tdep.h"
+#include "frame-unwind.h"
+#include "gdbcore.h"
+#include "osabi.h"
+#include "regcache.h"
+#include "regset.h"
+#include "solib.h"
+#include "target.h"
+#include "trad-frame.h"
+
+#include "kgdb.h"
+
+static const struct regcache_map_entry riscv_fbsd_pcbmap[] =
+ {
+ { 1, RISCV_RA_REGNUM, 0 },
+ { 1, RISCV_SP_REGNUM, 0 },
+ { 1, RISCV_GP_REGNUM, 0 },
+ { 1, RISCV_TP_REGNUM, 0 },
+ { 3, 5, 0 }, /* t0 - t2 */
+ { 4, 28, 0 }, /* t3 - t6 */
+ { 2, RISCV_FP_REGNUM, 0 }, /* s0 - s1 */
+ { 10, 18, 0 }, /* s2 - s11 */
+ { 8, RISCV_A0_REGNUM, 0 }, /* a0 - a7 */
+ { 0 }
+ };
+
+static const struct regset riscv_fbsd_pcbregset =
+ {
+ riscv_fbsd_pcbmap,
+ regcache_supply_regset, regcache_collect_regset
+ };
+
+static void
+riscv_fbsd_supply_pcb(struct regcache *regcache, CORE_ADDR pcb_addr)
+{
+ gdb_byte buf[31 * 8];
+
+ /* Always give a value for PC in case the PCB isn't readable. */
+ regcache->raw_supply_zeroed (RISCV_PC_REGNUM);
+ regcache->raw_supply_zeroed (RISCV_ZERO_REGNUM);
+ if (target_read_memory (pcb_addr, buf, sizeof buf) == 0)
+ {
+ regcache->supply_regset (&riscv_fbsd_pcbregset, -1, buf,
+ sizeof (buf));
+
+ /* Supply the RA as PC as well to simulate the PC as if the
+ thread had just returned. */
+ regcache->raw_supply (RISCV_PC_REGNUM, buf);
+ }
+}
+
+static const struct regcache_map_entry riscv_fbsd_tfmap[] =
+ {
+ { 1, RISCV_RA_REGNUM, 0 },
+ { 1, RISCV_SP_REGNUM, 0 },
+ { 1, RISCV_GP_REGNUM, 0 },
+ { 1, RISCV_TP_REGNUM, 0 },
+ { 3, 5, 0 }, /* t0 - t2 */
+ { 4, 28, 0 }, /* t3 - t6 */
+ { 2, RISCV_FP_REGNUM, 0 }, /* s0 - s1 */
+ { 10, 18, 0 }, /* s2 - s11 */
+ { 8, RISCV_A0_REGNUM, 0 }, /* a0 - a7 */
+ { 1, RISCV_PC_REGNUM, 0 },
+ { 1, RISCV_CSR_SSTATUS_REGNUM, 0 },
+ { 1, RISCV_CSR_STVAL_REGNUM, 0 },
+ { 1, RISCV_CSR_SCAUSE_REGNUM, 0 },
+ { 0 }
+ };
+
+static struct trad_frame_cache *
+riscv_fbsd_trapframe_cache (struct frame_info *this_frame, void **this_cache)
+{
+ struct gdbarch *gdbarch = get_frame_arch (this_frame);
+ enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+ struct trad_frame_cache *cache;
+ CORE_ADDR func, pc, sp;
+ const char *name;
+ int xlen;
+
+ if (*this_cache != NULL)
+ return ((struct trad_frame_cache *)*this_cache);
+
+ cache = trad_frame_cache_zalloc (this_frame);
+ *this_cache = cache;
+
+ sp = get_frame_register_unsigned (this_frame, RISCV_SP_REGNUM);
+
+ xlen = riscv_isa_xlen (gdbarch);
+ trad_frame_set_reg_regmap (cache, riscv_fbsd_tfmap, sp, 35 * xlen);
+
+ /* Read $PC from trap frame. */
+ func = get_frame_func (this_frame);
+ find_pc_partial_function (func, &name, NULL, NULL);
+ pc = read_memory_unsigned_integer (sp + 31 * xlen, xlen, byte_order);
+
+ if (pc == 0 && strcmp(name, "fork_trampoline") == 0)
+ {
+ /* Initial frame of a kthread; terminate backtrace. */
+ trad_frame_set_id (cache, outer_frame_id);
+ }
+ else
+ {
+ /* Construct the frame ID using the function start. */
+ trad_frame_set_id (cache, frame_id_build (sp + 35 * xlen, func));
+ }
+
+ return cache;
+}
+
+static void
+riscv_fbsd_trapframe_this_id (struct frame_info *this_frame,
+ void **this_cache, struct frame_id *this_id)
+{
+ struct trad_frame_cache *cache =
+ riscv_fbsd_trapframe_cache (this_frame, this_cache);
+
+ trad_frame_get_id (cache, this_id);
+}
+
+static struct value *
+riscv_fbsd_trapframe_prev_register (struct frame_info *this_frame,
+ void **this_cache, int regnum)
+{
+ struct trad_frame_cache *cache =
+ riscv_fbsd_trapframe_cache (this_frame, this_cache);
+
+ return trad_frame_get_register (cache, this_frame, regnum);
+}
+
+static int
+riscv_fbsd_trapframe_sniffer (const struct frame_unwind *self,
+ struct frame_info *this_frame,
+ void **this_prologue_cache)
+{
+ const char *name;
+
+ find_pc_partial_function (get_frame_func (this_frame), &name, NULL, NULL);
+ return (name != NULL
+ && ((strcmp (name, "cpu_exception_handler_user") == 0) ||
+ (strcmp (name, "cpu_exception_handler_supervisor") == 0)));
+}
+
+static const struct frame_unwind riscv_fbsd_trapframe_unwind = {
+ SIGTRAMP_FRAME,
+ default_frame_unwind_stop_reason,
+ riscv_fbsd_trapframe_this_id,
+ riscv_fbsd_trapframe_prev_register,
+ NULL,
+ riscv_fbsd_trapframe_sniffer
+};
+
+/* Implement the 'init_osabi' method of struct gdb_osabi_handler. */
+
+static void
+riscv_fbsd_kernel_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+ frame_unwind_prepend_unwinder (gdbarch, &riscv_fbsd_trapframe_unwind);
+
+ set_solib_ops (gdbarch, &kld_so_ops);
+
+ set_gdbarch_software_single_step (gdbarch, riscv_software_single_step);
+
+ fbsd_vmcore_set_supply_pcb (gdbarch, riscv_fbsd_supply_pcb);
+ fbsd_vmcore_set_cpu_pcb_addr (gdbarch, kgdb_trgt_stop_pcb);
+}
+
+/* Provide a prototype to silence -Wmissing-prototypes. */
+extern initialize_file_ftype _initialize_riscv_kgdb_tdep;
+
+void
+_initialize_riscv_kgdb_tdep (void)
+{
+ gdbarch_register_osabi_sniffer(bfd_arch_riscv,
+ bfd_target_elf_flavour,
+ fbsd_kernel_osabi_sniffer);
+ gdbarch_register_osabi (bfd_arch_riscv, 0, GDB_OSABI_FREEBSD_KERNEL,
+ riscv_fbsd_kernel_init_abi);
+}
diff --git a/devel/gdb/files/patch-fixes b/devel/gdb/files/patch-fixes
index 45dcb3b2f8f4..1d7714c94144 100644
--- a/devel/gdb/files/patch-fixes
+++ b/devel/gdb/files/patch-fixes
@@ -1,10 +1,10 @@
---- gdb/compile/compile-loc2c.c.orig 2017-09-14 09:28:17 UTC
-+++ gdb/compile/compile-loc2c.c
-@@ -669,6 +669,7 @@ do_compile_dwarf_expr_to_c (int indent, string_file &stream,
+--- gdb/compile/compile-loc2c.c.orig 2019-02-26 20:51:50.000000000 -0800
++++ gdb/compile/compile-loc2c.c 2019-05-24 16:07:42.382379000 -0700
+@@ -657,6 +657,7 @@ do_compile_dwarf_expr_to_c (int indent, string_file *s
uint64_t uoffset, reg;
int64_t offset;
+ uoffset = 0;
- print_spaces (indent - 2, &stream);
+ print_spaces (indent - 2, stream);
if (info[op_ptr - base].label)
{
diff --git a/devel/gdb/files/patch-gdb_aarch64-fbsd-tdep.c b/devel/gdb/files/patch-gdb_aarch64-fbsd-tdep.c
deleted file mode 100644
index c0f54c02e32d..000000000000
--- a/devel/gdb/files/patch-gdb_aarch64-fbsd-tdep.c
+++ /dev/null
@@ -1,19 +0,0 @@
---- gdb/aarch64-fbsd-tdep.c.orig 2018-03-15 16:39:29.951492000 +0100
-+++ gdb/aarch64-fbsd-tdep.c 2018-03-15 16:40:31.553135000 +0100
-@@ -118,11 +118,11 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- {0x910003e0, -1}, /* mov x0, sp */
-- {0x91014000, -1}, /* add x0, x0, #SF_UC */
-- {0xd2803428, -1}, /* mov x8, #SYS_sigreturn */
-- {0xd4000001, -1}, /* svc 0x0 */
-- {TRAMP_SENTINEL_INSN, -1}
-+ {0x910003e0, static_cast<ULONGEST>(-1)}, /* mov x0, sp */
-+ {0x91014000, static_cast<ULONGEST>(-1)}, /* add x0, x0, #SF_UC */
-+ {0xd2803428, static_cast<ULONGEST>(-1)}, /* mov x8, #SYS_sigreturn */
-+ {0xd4000001, static_cast<ULONGEST>(-1)}, /* svc 0x0 */
-+ {TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1)}
- },
- aarch64_fbsd_sigframe_init
- };
diff --git a/devel/gdb/files/patch-gdb_aarch64-linux-tdep.c b/devel/gdb/files/patch-gdb_aarch64-linux-tdep.c
deleted file mode 100644
index 4a5330cd6d5e..000000000000
--- a/devel/gdb/files/patch-gdb_aarch64-linux-tdep.c
+++ /dev/null
@@ -1,18 +0,0 @@
---- gdb/aarch64-linux-tdep.c.orig 2018-03-15 16:42:39.445907000 +0100
-+++ gdb/aarch64-linux-tdep.c 2018-03-15 16:43:15.167745000 +0100
-@@ -176,12 +176,12 @@
- {
- /* movz x8, 0x8b (S=1,o=10,h=0,i=0x8b,r=8)
- Soo1 0010 1hhi iiii iiii iiii iiir rrrr */
-- {0xd2801168, -1},
-+ {0xd2801168, static_cast<ULONGEST>(-1)},
-
- /* svc 0x0 (o=0, l=1)
- 1101 0100 oooi iiii iiii iiii iii0 00ll */
-- {0xd4000001, -1},
-- {TRAMP_SENTINEL_INSN, -1}
-+ {0xd4000001, static_cast<ULONGEST>(-1)},
-+ {TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1)}
- },
- aarch64_linux_sigframe_init
- };
diff --git a/devel/gdb/files/patch-gdb_aarch64-tdep.c b/devel/gdb/files/patch-gdb_aarch64-tdep.c
deleted file mode 100644
index 464d3cf82363..000000000000
--- a/devel/gdb/files/patch-gdb_aarch64-tdep.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdb/aarch64-tdep.c.orig 2018-03-15 16:44:16.746186000 +0100
-+++ gdb/aarch64-tdep.c 2018-03-15 16:44:52.315010000 +0100
-@@ -2412,7 +2412,7 @@
- const int insn_size = 4;
- const int atomic_sequence_length = 16; /* Instruction sequence length. */
- CORE_ADDR pc = regcache_read_pc (regcache);
-- CORE_ADDR breaks[2] = { -1, -1 };
-+ CORE_ADDR breaks[2] = { static_cast<CORE_ADDR>(-1), static_cast<CORE_ADDR>(-1) };
- CORE_ADDR loc = pc;
- CORE_ADDR closing_insn = 0;
- uint32_t insn = read_memory_unsigned_integer (loc, insn_size,
diff --git a/devel/gdb/files/patch-gdb_alpha-tdep.c b/devel/gdb/files/patch-gdb_alpha-tdep.c
deleted file mode 100644
index 52b2bfd60447..000000000000
--- a/devel/gdb/files/patch-gdb_alpha-tdep.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdb/alpha-tdep.c.orig 2018-03-15 16:45:58.726244000 +0100
-+++ gdb/alpha-tdep.c 2018-03-15 16:46:30.051357000 +0100
-@@ -769,7 +769,7 @@
- static std::vector<CORE_ADDR>
- alpha_deal_with_atomic_sequence (struct gdbarch *gdbarch, CORE_ADDR pc)
- {
-- CORE_ADDR breaks[2] = {-1, -1};
-+ CORE_ADDR breaks[2] = {static_cast<CORE_ADDR>(-1), static_cast<CORE_ADDR>(-1)};
- CORE_ADDR loc = pc;
- CORE_ADDR closing_insn; /* Instruction that closes the atomic sequence. */
- unsigned int insn = alpha_read_insn (gdbarch, loc);
diff --git a/devel/gdb/files/patch-gdb_arch_arm-get-next-pcs.c b/devel/gdb/files/patch-gdb_arch_arm-get-next-pcs.c
deleted file mode 100644
index 862e3d84cd8a..000000000000
--- a/devel/gdb/files/patch-gdb_arch_arm-get-next-pcs.c
+++ /dev/null
@@ -1,20 +0,0 @@
---- gdb/arch/arm-get-next-pcs.c.orig 2018-03-15 10:02:33.823447000 +0100
-+++ gdb/arch/arm-get-next-pcs.c 2018-03-15 10:29:48.532027000 +0100
-@@ -49,7 +49,7 @@
- thumb_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self)
- {
- int byte_order_for_code = self->byte_order_for_code;
-- CORE_ADDR breaks[2] = {-1, -1};
-+ CORE_ADDR breaks[2] = {static_cast<CORE_ADDR>(-1), static_cast<CORE_ADDR>(-1)};
- CORE_ADDR pc = regcache_read_pc (self->regcache);
- CORE_ADDR loc = pc;
- unsigned short insn1, insn2;
-@@ -187,7 +187,7 @@
- arm_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self)
- {
- int byte_order_for_code = self->byte_order_for_code;
-- CORE_ADDR breaks[2] = {-1, -1};
-+ CORE_ADDR breaks[2] = {static_cast<CORE_ADDR>(-1), static_cast<CORE_ADDR>(-1)};
- CORE_ADDR pc = regcache_read_pc (self->regcache);
- CORE_ADDR loc = pc;
- unsigned int insn;
diff --git a/devel/gdb/files/patch-gdb_arm-fbsd-tdep.c b/devel/gdb/files/patch-gdb_arm-fbsd-tdep.c
deleted file mode 100644
index 8d64155365c4..000000000000
--- a/devel/gdb/files/patch-gdb_arm-fbsd-tdep.c
+++ /dev/null
@@ -1,19 +0,0 @@
---- gdb/arm-fbsd-tdep.c.orig 2018-03-15 10:31:28.468820000 +0100
-+++ gdb/arm-fbsd-tdep.c 2018-03-15 10:39:51.558505000 +0100
-@@ -123,11 +123,11 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- {0xe1a0000d, -1}, /* mov r0, sp */
-- {0xe2800040, -1}, /* add r0, r0, #SIGF_UC */
-- {0xe59f700c, -1}, /* ldr r7, [pc, #12] */
-- {0xef0001a1, -1}, /* swi SYS_sigreturn */
-- {TRAMP_SENTINEL_INSN, -1}
-+ {0xe1a0000d, static_cast<ULONGEST>(-1)}, /* mov r0, sp */
-+ {0xe2800040, static_cast<ULONGEST>(-1)}, /* add r0, r0, #SIGF_UC */
-+ {0xe59f700c, static_cast<ULONGEST>(-1)}, /* ldr r7, [pc, #12] */
-+ {0xef0001a1, static_cast<ULONGEST>(-1)}, /* swi SYS_sigreturn */
-+ {TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1)}
- },
- arm_fbsd_sigframe_init
- };
diff --git a/devel/gdb/files/patch-gdb_arm-linux-tdep.c b/devel/gdb/files/patch-gdb_arm-linux-tdep.c
deleted file mode 100644
index 9ab625afad7c..000000000000
--- a/devel/gdb/files/patch-gdb_arm-linux-tdep.c
+++ /dev/null
@@ -1,90 +0,0 @@
---- gdb/arm-linux-tdep.c.orig 2018-03-15 10:36:38.853100000 +0100
-+++ gdb/arm-linux-tdep.c 2018-03-15 10:42:37.222568000 +0100
-@@ -385,7 +385,7 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { ARM_LINUX_SIGRETURN_INSTR, -1 },
-+ { ARM_LINUX_SIGRETURN_INSTR, static_cast<ULONGEST>(-1) },
- { TRAMP_SENTINEL_INSN }
- },
- arm_linux_sigreturn_init
-@@ -395,7 +395,7 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { ARM_LINUX_RT_SIGRETURN_INSTR, -1 },
-+ { ARM_LINUX_RT_SIGRETURN_INSTR, static_cast<ULONGEST>(-1) },
- { TRAMP_SENTINEL_INSN }
- },
- arm_linux_rt_sigreturn_init
-@@ -405,8 +405,8 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { ARM_SET_R7_SIGRETURN, -1 },
-- { ARM_EABI_SYSCALL, -1 },
-+ { ARM_SET_R7_SIGRETURN, static_cast<ULONGEST>(-1) },
-+ { ARM_EABI_SYSCALL, static_cast<ULONGEST>(-1) },
- { TRAMP_SENTINEL_INSN }
- },
- arm_linux_sigreturn_init
-@@ -416,8 +416,8 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { ARM_SET_R7_RT_SIGRETURN, -1 },
-- { ARM_EABI_SYSCALL, -1 },
-+ { ARM_SET_R7_RT_SIGRETURN, static_cast<ULONGEST>(-1) },
-+ { ARM_EABI_SYSCALL, static_cast<ULONGEST>(-1) },
- { TRAMP_SENTINEL_INSN }
- },
- arm_linux_rt_sigreturn_init
-@@ -427,9 +427,9 @@
- SIGTRAMP_FRAME,
- 2,
- {
-- { THUMB2_SET_R7_SIGRETURN1, -1 },
-- { THUMB2_SET_R7_SIGRETURN2, -1 },
-- { THUMB2_EABI_SYSCALL, -1 },
-+ { THUMB2_SET_R7_SIGRETURN1, static_cast<ULONGEST>(-1) },
-+ { THUMB2_SET_R7_SIGRETURN2, static_cast<ULONGEST>(-1) },
-+ { THUMB2_EABI_SYSCALL, static_cast<ULONGEST>(-1) },
- { TRAMP_SENTINEL_INSN }
- },
- arm_linux_sigreturn_init
-@@ -439,9 +439,9 @@
- SIGTRAMP_FRAME,
- 2,
- {
-- { THUMB2_SET_R7_RT_SIGRETURN1, -1 },
-- { THUMB2_SET_R7_RT_SIGRETURN2, -1 },
-- { THUMB2_EABI_SYSCALL, -1 },
-+ { THUMB2_SET_R7_RT_SIGRETURN1, static_cast<ULONGEST>(-1) },
-+ { THUMB2_SET_R7_RT_SIGRETURN2, static_cast<ULONGEST>(-1) },
-+ { THUMB2_EABI_SYSCALL, static_cast<ULONGEST>(-1) },
- { TRAMP_SENTINEL_INSN }
- },
- arm_linux_rt_sigreturn_init
-@@ -451,8 +451,8 @@
- NORMAL_FRAME,
- 4,
- {
-- { ARM_OABI_SYSCALL_RESTART_SYSCALL, -1 },
-- { ARM_LDR_PC_SP_12, -1 },
-+ { ARM_OABI_SYSCALL_RESTART_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { ARM_LDR_PC_SP_12, static_cast<ULONGEST>(-1) },
- { TRAMP_SENTINEL_INSN }
- },
- arm_linux_restart_syscall_init
-@@ -462,8 +462,8 @@
- NORMAL_FRAME,
- 4,
- {
-- { ARM_OABI_SYSCALL_RESTART_SYSCALL, -1 },
-- { ARM_LDR_PC_SP_4, -1 },
-+ { ARM_OABI_SYSCALL_RESTART_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { ARM_LDR_PC_SP_4, static_cast<ULONGEST>(-1) },
- { TRAMP_SENTINEL_INSN }
- },
- arm_linux_restart_syscall_init
diff --git a/devel/gdb/files/patch-gdb_arm-obsd-tdep.c b/devel/gdb/files/patch-gdb_arm-obsd-tdep.c
deleted file mode 100644
index c1559f2b2ce5..000000000000
--- a/devel/gdb/files/patch-gdb_arm-obsd-tdep.c
+++ /dev/null
@@ -1,19 +0,0 @@
---- gdb/arm-obsd-tdep.c.orig 2018-03-15 10:43:44.244835000 +0100
-+++ gdb/arm-obsd-tdep.c 2018-03-15 10:44:36.608679000 +0100
-@@ -58,11 +58,11 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0xe28d0010, -1 }, /* add r0, sp, #16 */
-- { 0xef000067, -1 }, /* swi SYS_sigreturn */
-- { 0xef000001, -1 }, /* swi SYS_exit */
-- { 0xeafffffc, -1 }, /* b . - 8 */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0xe28d0010, static_cast<ULONGEST>(-1) }, /* add r0, sp, #16 */
-+ { 0xef000067, static_cast<ULONGEST>(-1) }, /* swi SYS_sigreturn */
-+ { 0xef000001, static_cast<ULONGEST>(-1) }, /* swi SYS_exit */
-+ { 0xeafffffc, static_cast<ULONGEST>(-1) }, /* b . - 8 */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- armobsd_sigframe_init
- };
diff --git a/devel/gdb/files/patch-gdb_bfin-linux-tdep.c b/devel/gdb/files/patch-gdb_bfin-linux-tdep.c
deleted file mode 100644
index d95afa5631f5..000000000000
--- a/devel/gdb/files/patch-gdb_bfin-linux-tdep.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdb/bfin-linux-tdep.c.orig 2018-03-15 10:45:37.746477000 +0100
-+++ gdb/bfin-linux-tdep.c 2018-03-15 10:46:02.925435000 +0100
-@@ -121,7 +121,7 @@
- {
- { 0x00ADE128, 0xffffffff }, /* P0 = __NR_rt_sigreturn; */
- { 0x00A0, 0xffff }, /* EXCPT 0; */
-- { TRAMP_SENTINEL_INSN, -1 },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) },
- },
- bfin_linux_sigframe_init,
- };
diff --git a/devel/gdb/files/patch-gdb_completer.c b/devel/gdb/files/patch-gdb_completer.c
deleted file mode 100644
index df2f3ea07b3f..000000000000
--- a/devel/gdb/files/patch-gdb_completer.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdb/completer.c.orig 2018-03-15 16:51:01.106677000 +0100
-+++ gdb/completer.c 2018-03-15 16:51:47.055214000 +0100
-@@ -2038,7 +2038,7 @@
- /* We don't rely on readline appending the quote char as
- delimiter as then readline wouldn't append the ' ' after the
- completion. */
-- char buf[2] = { quote_char () };
-+ char buf[2] = { static_cast<char> (quote_char ()) };
-
- match_list[0] = reconcat (match_list[0], match_list[0],
- buf, (char *) NULL);
diff --git a/devel/gdb/files/patch-gdb_configure b/devel/gdb/files/patch-gdb_configure
index 118d082c15e4..86fde3bbfa6a 100644
--- a/devel/gdb/files/patch-gdb_configure
+++ b/devel/gdb/files/patch-gdb_configure
@@ -1,16 +1,16 @@
---- gdb/configure.orig 2017-09-14 09:28:17 UTC
-+++ gdb/configure
-@@ -15467,10 +15467,10 @@ fi
+--- gdb/configure.orig 2019-05-11 11:19:02.000000000 -0700
++++ gdb/configure 2019-05-24 16:21:50.559870000 -0700
+@@ -15511,10 +15511,10 @@ fi
# The options we'll try to enable.
build_warnings="-Wall -Wpointer-arith \
---Wno-unused -Wunused-value -Wunused-function \
-+-Wno-unused \
+--Wno-unused -Wunused-value -Wunused-variable -Wunused-function \
++-Wno-unused \
-Wno-switch -Wno-char-subscripts \
--Wempty-body -Wunused-but-set-parameter -Wunused-but-set-variable \
---Wno-sign-compare -Wno-narrowing -Wno-error=maybe-uninitialized \
+--Wno-sign-compare -Wno-error=maybe-uninitialized \
+-Wempty-body \
-+-Wno-sign-compare -Wno-narrowing \
++-Wno-sign-compare \
-Wno-mismatched-tags \
-Wno-error=deprecated-register \
-Wsuggest-override \
diff --git a/devel/gdb/files/patch-gdb_fbsd-nat.c b/devel/gdb/files/patch-gdb_fbsd-nat.c
index a5768a24261c..40fcdf0cf6e2 100644
--- a/devel/gdb/files/patch-gdb_fbsd-nat.c
+++ b/devel/gdb/files/patch-gdb_fbsd-nat.c
@@ -1,17 +1,17 @@
---- gdb/fbsd-nat.c.orig 2017-09-14 09:28:17 UTC
-+++ gdb/fbsd-nat.c
-@@ -1108,6 +1108,14 @@ fbsd_nat_target::resume (ptid_t ptid, int step, enum gdb_signal signo)
- struct thread_info *tp;
- int request;
+--- gdb/fbsd-nat.c.orig 2019-05-11 11:19:03.000000000 -0700
++++ gdb/fbsd-nat.c 2019-05-24 16:25:52.961523000 -0700
+@@ -1178,6 +1178,14 @@ fbsd_nat_target::resume (ptid_t ptid, int step, enum g
+ /* If ptid is a specific LWP, suspend all other LWPs in the process. */
+ inferior *inf = find_inferior_ptid (ptid);
+#ifndef PT_LWP_EVENTS
+ /* When LWP events are not supported, a new thread might already be
+ running that has not yet reported an event when GDB wishes to
-+ only run a single thread. Force an update of the thread list
++ only run a single thread. Force an update of the thread list
+ to ensure that any such threads are suspended before the process
+ is resumed. */
-+ fbsd_add_threads (ptid_get_pid (ptid));
++ fbsd_add_threads (ptid.pid ());
+#endif
- ALL_NON_EXITED_THREADS (tp)
+ for (thread_info *tp : inf->non_exited_threads ())
{
- if (tp->ptid.pid () != ptid.pid ())
+ int request;
diff --git a/devel/gdb/files/patch-gdb_hppa-nbsd-tdep.c b/devel/gdb/files/patch-gdb_hppa-nbsd-tdep.c
deleted file mode 100644
index 6108630bfe2b..000000000000
--- a/devel/gdb/files/patch-gdb_hppa-nbsd-tdep.c
+++ /dev/null
@@ -1,44 +0,0 @@
---- gdb/hppa-nbsd-tdep.c.orig 2018-03-15 15:58:14.876431000 +0100
-+++ gdb/hppa-nbsd-tdep.c 2018-03-15 16:00:44.247395000 +0100
-@@ -71,25 +71,25 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0xc7d7c012, -1 }, /* bb,>=,n %arg3, 30, 1f */
-- { 0xd6e01c1e, -1 }, /* depwi 0,31,2,%arg3 */
-- { 0x0ee81093, -1 }, /* ldw 4(%arg3), %r19 */
-- { 0x0ee01097, -1 }, /* ldw 0(%arg3), %arg3 */
-+ { 0xc7d7c012, static_cast<ULONGEST>(-1) }, /* bb,>=,n %arg3, 30, 1f */
-+ { 0xd6e01c1e, static_cast<ULONGEST>(-1) }, /* depwi 0,31,2,%arg3 */
-+ { 0x0ee81093, static_cast<ULONGEST>(-1) }, /* ldw 4(%arg3), %r19 */
-+ { 0x0ee01097, static_cast<ULONGEST>(-1) }, /* ldw 0(%arg3), %arg3 */
- /* 1: */
-- { 0xe8404000, -1 }, /* blr %r0, %rp */
-- { 0xeae0c002, -1 }, /* bv,n %r0(%arg3) */
-- { 0x08000240, -1 }, /* nop */
-+ { 0xe8404000, static_cast<ULONGEST>(-1) }, /* blr %r0, %rp */
-+ { 0xeae0c002, static_cast<ULONGEST>(-1) }, /* bv,n %r0(%arg3) */
-+ { 0x08000240, static_cast<ULONGEST>(-1) }, /* nop */
-
-- { 0x0803025a, -1 }, /* copy %r3, %arg0 */
-- { 0x20200801, -1 }, /* ldil -40000000, %r1 */
-- { 0xe420e008, -1 }, /* be,l 4(%sr7, %r1), %sr0, %r31 */
-- { 0x34160268, -1 }, /* ldi 134, %t1 ; SYS_setcontext */
-+ { 0x0803025a, static_cast<ULONGEST>(-1) }, /* copy %r3, %arg0 */
-+ { 0x20200801, static_cast<ULONGEST>(-1) }, /* ldil -40000000, %r1 */
-+ { 0xe420e008, static_cast<ULONGEST>(-1) }, /* be,l 4(%sr7, %r1), %sr0, %r31 */
-+ { 0x34160268, static_cast<ULONGEST>(-1) }, /* ldi 134, %t1 ; SYS_setcontext */
-
-- { 0x081c025a, -1 }, /* copy ret0, %arg0 */
-- { 0x20200801, -1 }, /* ldil -40000000, %r1 */
-- { 0xe420e008, -1 }, /* be,l 4(%sr7, %r1), %sr0, %r31 */
-- { 0x34160002, -1 }, /* ldi 1, %t1 ; SYS_exit */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0x081c025a, static_cast<ULONGEST>(-1) }, /* copy ret0, %arg0 */
-+ { 0x20200801, static_cast<ULONGEST>(-1) }, /* ldil -40000000, %r1 */
-+ { 0xe420e008, static_cast<ULONGEST>(-1) }, /* be,l 4(%sr7, %r1), %sr0, %r31 */
-+ { 0x34160002, static_cast<ULONGEST>(-1) }, /* ldi 1, %t1 ; SYS_exit */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- hppanbsd_sigtramp_cache_init
- };
diff --git a/devel/gdb/files/patch-gdb_i386-nbsd-tdep.c b/devel/gdb/files/patch-gdb_i386-nbsd-tdep.c
deleted file mode 100644
index 706c13c577ec..000000000000
--- a/devel/gdb/files/patch-gdb_i386-nbsd-tdep.c
+++ /dev/null
@@ -1,157 +0,0 @@
---- gdb/i386-nbsd-tdep.c.orig 2018-03-15 10:50:06.446434000 +0100
-+++ gdb/i386-nbsd-tdep.c 2018-03-15 11:04:42.700720000 +0100
-@@ -106,19 +106,19 @@
- SIGTRAMP_FRAME,
- 1,
- {
-- { 0x8d, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x10, -1 },
-+ { 0x8d, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x10, static_cast<ULONGEST>(-1) },
- /* leal 0x10(%esp), %eax */
-- { 0x50, -1 }, /* pushl %eax */
-- { 0x50, -1 }, /* pushl %eax */
-- { 0xb8, -1 }, { 0x27, -1 }, {0x01, -1 }, {0x00, -1 }, {0x00, -1 },
-+ { 0x50, static_cast<ULONGEST>(-1) }, /* pushl %eax */
-+ { 0x50, static_cast<ULONGEST>(-1) }, /* pushl %eax */
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x27, static_cast<ULONGEST>(-1) }, {0x01, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x127, %eax # __sigreturn14 */
-- { 0xcd, -1 }, { 0x80, -1},
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1)},
- /* int $0x80 */
-- { 0xb8, -1 }, { 0x01, -1 }, {0x00, -1 }, {0x00, -1 }, {0x00, -1 },
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x01, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x1, %eax # exit */
-- { 0xcd, -1 }, { 0x80, -1},
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1)},
- /* int $0x80 */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- i386nbsd_sigtramp_cache_init
- };
-@@ -128,21 +128,21 @@
- SIGTRAMP_FRAME,
- 1,
- {
-- { 0x8d, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x0c, -1 },
-+ { 0x8d, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x0c, static_cast<ULONGEST>(-1) },
- /* leal 0x0c(%esp), %eax */
-- { 0x89, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x04, -1 },
-+ { 0x89, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x04, static_cast<ULONGEST>(-1) },
- /* movl %eax, 0x4(%esp) */
-- { 0xb8, -1 }, { 0x27, -1 }, {0x01, -1 }, {0x00, -1 }, {0x00, -1 },
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x27, static_cast<ULONGEST>(-1) }, {0x01, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x127, %eax # __sigreturn14 */
-- { 0xcd, -1 }, { 0x80, -1},
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1)},
- /* int $0x80 */
-- { 0x89, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x04, -1 },
-+ { 0x89, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x04, static_cast<ULONGEST>(-1) },
- /* movl %eax, 0x4(%esp) */
-- { 0xb8, -1 }, { 0x01, -1 }, {0x00, -1 }, {0x00, -1 }, {0x00, -1 },
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x01, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x1, %eax */
-- { 0xcd, -1 }, { 0x80, -1},
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1)},
- /* int $0x80 */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- i386nbsd_sigtramp_cache_init
- };
-@@ -152,21 +152,22 @@
- SIGTRAMP_FRAME,
- 1,
- {
-- { 0x8b, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x08, -1 },
-+ { 0x8b, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x08, static_cast<ULONGEST>(-1) },
- /* movl 8(%esp),%eax */
-- { 0x89, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x04, -1 },
-+ { 0x89, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x04, static_cast<ULONGEST>(-1) },
- /* movl %eax, 0x4(%esp) */
-- { 0xb8, -1 }, { 0x34, -1 }, { 0x01, -1 }, { 0x00, -1 }, { 0x00, -1 },
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x34, static_cast<ULONGEST>(-1) }, { 0x01, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x134, %eax # setcontext */
-- { 0xcd, -1 }, { 0x80, -1 },
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1) },
- /* int $0x80 */
-- { 0x89, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x04, -1 },
-+ { 0x89, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x04, static_cast<ULONGEST>(-1) },
-+ { 0x89, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x04, static_cast<ULONGEST>(-1) },
- /* movl %eax, 0x4(%esp) */
-- { 0xb8, -1 }, { 0x01, -1 }, { 0x00, -1 }, { 0x00, -1 }, { 0x00, -1 },
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x01, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x1, %eax */
-- { 0xcd, -1 }, { 0x80, -1 },
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1)},
- /* int $0x80 */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- i386nbsd_sigtramp_cache_init
- };
-@@ -176,22 +177,22 @@
- SIGTRAMP_FRAME,
- 1,
- {
-- { 0x8d, -1 }, { 0x84, -1 }, { 0x24, -1 },
-- { 0x8c, -1 }, { 0x00, -1 }, { 0x00, -1 }, { 0x00, -1 },
-+ { 0x8d, static_cast<ULONGEST>(-1) }, { 0x84, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) },
-+ { 0x8c, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) },
- /* leal 0x8c(%esp), %eax */
-- { 0x89, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x04, -1 },
-+ { 0x89, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x04, static_cast<ULONGEST>(-1) },
- /* movl %eax, 0x4(%esp) */
-- { 0xb8, -1 }, { 0x34, -1 }, { 0x01, -1 }, { 0x00, -1 }, { 0x00, -1 },
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x34, static_cast<ULONGEST>(-1) }, { 0x01, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x134, %eax # setcontext */
-- { 0xcd, -1 }, { 0x80, -1},
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1)},
- /* int $0x80 */
-- { 0x89, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x04, -1 },
-+ { 0x89, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x04, static_cast<ULONGEST>(-1) },
- /* movl %eax, 0x4(%esp) */
-- { 0xb8, -1 }, { 0x01, -1 }, {0x00, -1 }, {0x00, -1 }, {0x00, -1 },
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x01, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x1, %eax */
-- { 0xcd, -1 }, { 0x80, -1},
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1)},
- /* int $0x80 */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- i386nbsd_sigtramp_cache_init
- };
-@@ -201,23 +202,23 @@
- SIGTRAMP_FRAME,
- 1,
- {
-- { 0x8d, -1 }, { 0x84, -1 }, { 0x24, -1 },
-- { 0x8c, -1 }, { 0x00, -1 }, { 0x00, -1 }, { 0x00, -1 },
-+ { 0x8d, static_cast<ULONGEST>(-1) }, { 0x84, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) },
-+ { 0x8c, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) },
- /* leal 0x8c(%esp), %eax */
-- { 0x89, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x04, -1 },
-+ { 0x89, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x04, static_cast<ULONGEST>(-1) },
- /* movl %eax, 0x4(%esp) */
-- { 0xb8, -1 }, { 0x34, -1 }, { 0x01, -1 }, { 0x00, -1 }, { 0x00, -1 },
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x34, static_cast<ULONGEST>(-1) }, { 0x01, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) }, { 0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x134, %eax # setcontext */
-- { 0xcd, -1 }, { 0x80, -1},
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1)},
- /* int $0x80 */
-- { 0xc7, -1 }, { 0x44, -1 }, { 0x24, -1 }, { 0x04, -1 },
-- { 0xff, -1 }, { 0xff, -1 }, { 0xff, -1 }, { 0xff, -1 },
-+ { 0xc7, static_cast<ULONGEST>(-1) }, { 0x44, static_cast<ULONGEST>(-1) }, { 0x24, static_cast<ULONGEST>(-1) }, { 0x04, static_cast<ULONGEST>(-1) },
-+ { 0xff, static_cast<ULONGEST>(-1) }, { 0xff, static_cast<ULONGEST>(-1) }, { 0xff, static_cast<ULONGEST>(-1) }, { 0xff, static_cast<ULONGEST>(-1) },
- /* movl $0xffffffff,0x4(%esp) */
-- { 0xb8, -1 }, { 0x01, -1 }, {0x00, -1 }, {0x00, -1 }, {0x00, -1 },
-+ { 0xb8, static_cast<ULONGEST>(-1) }, { 0x01, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) }, {0x00, static_cast<ULONGEST>(-1) },
- /* movl $0x1, %eax */
-- { 0xcd, -1 }, { 0x80, -1},
-+ { 0xcd, static_cast<ULONGEST>(-1) }, { 0x80, static_cast<ULONGEST>(-1)},
- /* int $0x80 */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- i386nbsd_sigtramp_cache_init
- };
diff --git a/devel/gdb/files/patch-gdb_linespec.c b/devel/gdb/files/patch-gdb_linespec.c
deleted file mode 100644
index 5268220a0616..000000000000
--- a/devel/gdb/files/patch-gdb_linespec.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdb/linespec.c.orig 2018-03-15 16:52:46.342610000 +0100
-+++ gdb/linespec.c 2018-03-15 16:53:18.324077000 +0100
-@@ -2912,7 +2912,7 @@
- new "quote" char. */
- if (tracker.quote_char ())
- {
-- char quote_char_str[2] = { tracker.quote_char () };
-+ char quote_char_str[2] = { static_cast<char>(tracker.quote_char () )};
-
- fn = reconcat (fn, fn, quote_char_str, (char *) NULL);
- tracker.set_quote_char (':');
diff --git a/devel/gdb/files/patch-gdb_microblaze-linux-tdep.c b/devel/gdb/files/patch-gdb_microblaze-linux-tdep.c
deleted file mode 100644
index 9e2a5bc6de21..000000000000
--- a/devel/gdb/files/patch-gdb_microblaze-linux-tdep.c
+++ /dev/null
@@ -1,13 +0,0 @@
---- gdb/microblaze-linux-tdep.c.orig 2018-03-15 11:06:05.114101000 +0100
-+++ gdb/microblaze-linux-tdep.c 2018-03-15 11:06:36.384643000 +0100
-@@ -107,8 +107,8 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x31800077, -1 }, /* addik R12,R0,119. */
-- { 0xb9cc0008, -1 }, /* brki R14,8. */
-+ { 0x31800077, static_cast<ULONGEST>(-1) }, /* addik R12,R0,119. */
-+ { 0xb9cc0008, static_cast<ULONGEST>(-1) }, /* brki R14,8. */
- { TRAMP_SENTINEL_INSN },
- },
- microblaze_linux_sighandler_cache_init
diff --git a/devel/gdb/files/patch-gdb_mips-fbsd-tdep.c b/devel/gdb/files/patch-gdb_mips-fbsd-tdep.c
deleted file mode 100644
index 3612d81380f3..000000000000
--- a/devel/gdb/files/patch-gdb_mips-fbsd-tdep.c
+++ /dev/null
@@ -1,53 +0,0 @@
---- gdb/mips-fbsd-tdep.c.orig 2018-03-15 11:11:08.892968000 +0100
-+++ gdb/mips-fbsd-tdep.c 2018-03-15 11:14:38.323126000 +0100
-@@ -342,11 +342,11 @@
- SIGTRAMP_FRAME,
- MIPS_INSN32_SIZE,
- {
-- { MIPS_INST_ADDIU_A0_SP_O32, -1 }, /* addiu a0, sp, SIGF_UC */
-- { MIPS_INST_LI_V0_SIGRETURN, -1 }, /* li v0, SYS_sigreturn */
-- { MIPS_INST_SYSCALL, -1 }, /* syscall */
-- { MIPS_INST_BREAK, -1 }, /* break */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MIPS_INST_ADDIU_A0_SP_O32, static_cast<ULONGEST>(-1) }, /* addiu a0, sp, SIGF_UC */
-+ { MIPS_INST_LI_V0_SIGRETURN, static_cast<ULONGEST>(-1) }, /* li v0, SYS_sigreturn */
-+ { MIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) }, /* syscall */
-+ { MIPS_INST_BREAK, static_cast<ULONGEST>(-1) }, /* break */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips_fbsd_sigframe_init
- };
-@@ -434,11 +434,11 @@
- SIGTRAMP_FRAME,
- MIPS_INSN32_SIZE,
- {
-- { MIPS_INST_ADDIU_A0_SP_N32, -1 }, /* addiu a0, sp, SIGF_UC */
-- { MIPS_INST_LI_V0_SIGRETURN, -1 }, /* li v0, SYS_sigreturn */
-- { MIPS_INST_SYSCALL, -1 }, /* syscall */
-- { MIPS_INST_BREAK, -1 }, /* break */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MIPS_INST_ADDIU_A0_SP_N32, static_cast<ULONGEST>(-1) }, /* addiu a0, sp, SIGF_UC */
-+ { MIPS_INST_LI_V0_SIGRETURN, static_cast<ULONGEST>(-1) }, /* li v0, SYS_sigreturn */
-+ { MIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) }, /* syscall */
-+ { MIPS_INST_BREAK, static_cast<ULONGEST>(-1) }, /* break */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips64_fbsd_sigframe_init
- };
-@@ -451,11 +451,11 @@
- SIGTRAMP_FRAME,
- MIPS_INSN32_SIZE,
- {
-- { MIPS_INST_DADDIU_A0_SP_N64, -1 }, /* daddiu a0, sp, SIGF_UC */
-- { MIPS_INST_LI_V0_SIGRETURN, -1 }, /* li v0, SYS_sigreturn */
-- { MIPS_INST_SYSCALL, -1 }, /* syscall */
-- { MIPS_INST_BREAK, -1 }, /* break */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MIPS_INST_DADDIU_A0_SP_N64, static_cast<ULONGEST>(-1) }, /* daddiu a0, sp, SIGF_UC */
-+ { MIPS_INST_LI_V0_SIGRETURN, static_cast<ULONGEST>(-1) }, /* li v0, SYS_sigreturn */
-+ { MIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) }, /* syscall */
-+ { MIPS_INST_BREAK, static_cast<ULONGEST>(-1) }, /* break */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips64_fbsd_sigframe_init
- };
diff --git a/devel/gdb/files/patch-gdb_mips-linux-tdep.c b/devel/gdb/files/patch-gdb_mips-linux-tdep.c
deleted file mode 100644
index df0244130a6d..000000000000
--- a/devel/gdb/files/patch-gdb_mips-linux-tdep.c
+++ /dev/null
@@ -1,122 +0,0 @@
---- gdb/mips-linux-tdep.c.orig 2018-03-15 11:07:40.749034000 +0100
-+++ gdb/mips-linux-tdep.c 2018-03-15 11:09:52.878504000 +0100
-@@ -831,9 +831,9 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { MIPS_INST_LI_V0_SIGRETURN, -1 },
-- { MIPS_INST_SYSCALL, -1 },
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MIPS_INST_LI_V0_SIGRETURN, static_cast<ULONGEST>(-1) },
-+ { MIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips_linux_o32_sigframe_init,
- mips_linux_sigframe_validate
-@@ -843,9 +843,9 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { MIPS_INST_LI_V0_RT_SIGRETURN, -1 },
-- { MIPS_INST_SYSCALL, -1 },
-- { TRAMP_SENTINEL_INSN, -1 } },
-+ { MIPS_INST_LI_V0_RT_SIGRETURN, static_cast<ULONGEST>(-1) },
-+ { MIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) } },
- mips_linux_o32_sigframe_init,
- mips_linux_sigframe_validate
- };
-@@ -854,9 +854,9 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { MIPS_INST_LI_V0_N32_RT_SIGRETURN, -1 },
-- { MIPS_INST_SYSCALL, -1 },
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MIPS_INST_LI_V0_N32_RT_SIGRETURN, static_cast<ULONGEST>(-1) },
-+ { MIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips_linux_n32n64_sigframe_init,
- mips_linux_sigframe_validate
-@@ -866,9 +866,9 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { MIPS_INST_LI_V0_N64_RT_SIGRETURN, -1 },
-- { MIPS_INST_SYSCALL, -1 },
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MIPS_INST_LI_V0_N64_RT_SIGRETURN, static_cast<ULONGEST>(-1) },
-+ { MIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips_linux_n32n64_sigframe_init,
- mips_linux_sigframe_validate
-@@ -878,11 +878,11 @@
- SIGTRAMP_FRAME,
- 2,
- {
-- { MICROMIPS_INST_LI_V0, -1 },
-- { MIPS_NR_sigreturn, -1 },
-- { MICROMIPS_INST_POOL32A, -1 },
-- { MICROMIPS_INST_SYSCALL, -1 },
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MICROMIPS_INST_LI_V0, static_cast<ULONGEST>(-1) },
-+ { MIPS_NR_sigreturn, static_cast<ULONGEST>(-1) },
-+ { MICROMIPS_INST_POOL32A, static_cast<ULONGEST>(-1) },
-+ { MICROMIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips_linux_o32_sigframe_init,
- micromips_linux_sigframe_validate
-@@ -892,11 +892,11 @@
- SIGTRAMP_FRAME,
- 2,
- {
-- { MICROMIPS_INST_LI_V0, -1 },
-- { MIPS_NR_rt_sigreturn, -1 },
-- { MICROMIPS_INST_POOL32A, -1 },
-- { MICROMIPS_INST_SYSCALL, -1 },
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MICROMIPS_INST_LI_V0, static_cast<ULONGEST>(-1) },
-+ { MIPS_NR_rt_sigreturn, static_cast<ULONGEST>(-1) },
-+ { MICROMIPS_INST_POOL32A, static_cast<ULONGEST>(-1) },
-+ { MICROMIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips_linux_o32_sigframe_init,
- micromips_linux_sigframe_validate
-@@ -906,11 +906,11 @@
- SIGTRAMP_FRAME,
- 2,
- {
-- { MICROMIPS_INST_LI_V0, -1 },
-- { MIPS_NR_N32_rt_sigreturn, -1 },
-- { MICROMIPS_INST_POOL32A, -1 },
-- { MICROMIPS_INST_SYSCALL, -1 },
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MICROMIPS_INST_LI_V0, static_cast<ULONGEST>(-1) },
-+ { MIPS_NR_N32_rt_sigreturn, static_cast<ULONGEST>(-1) },
-+ { MICROMIPS_INST_POOL32A, static_cast<ULONGEST>(-1) },
-+ { MICROMIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips_linux_n32n64_sigframe_init,
- micromips_linux_sigframe_validate
-@@ -920,11 +920,11 @@
- SIGTRAMP_FRAME,
- 2,
- {
-- { MICROMIPS_INST_LI_V0, -1 },
-- { MIPS_NR_N64_rt_sigreturn, -1 },
-- { MICROMIPS_INST_POOL32A, -1 },
-- { MICROMIPS_INST_SYSCALL, -1 },
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { MICROMIPS_INST_LI_V0, static_cast<ULONGEST>(-1) },
-+ { MIPS_NR_N64_rt_sigreturn, static_cast<ULONGEST>(-1) },
-+ { MICROMIPS_INST_POOL32A, static_cast<ULONGEST>(-1) },
-+ { MICROMIPS_INST_SYSCALL, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips_linux_n32n64_sigframe_init,
- micromips_linux_sigframe_validate
diff --git a/devel/gdb/files/patch-gdb_mips-tdep.c b/devel/gdb/files/patch-gdb_mips-tdep.c
deleted file mode 100644
index c9d86186da06..000000000000
--- a/devel/gdb/files/patch-gdb_mips-tdep.c
+++ /dev/null
@@ -1,20 +0,0 @@
---- gdb/mips-tdep.c.orig 2018-03-15 11:15:08.500010000 +0100
-+++ gdb/mips-tdep.c 2018-03-15 11:16:05.745083000 +0100
-@@ -3882,7 +3882,7 @@
- static std::vector<CORE_ADDR>
- mips_deal_with_atomic_sequence (struct gdbarch *gdbarch, CORE_ADDR pc)
- {
-- CORE_ADDR breaks[2] = {-1, -1};
-+ CORE_ADDR breaks[2] = {static_cast<CORE_ADDR>(-1), static_cast<CORE_ADDR>(-1)};
- CORE_ADDR loc = pc;
- CORE_ADDR branch_bp; /* Breakpoint at branch instruction's destination. */
- ULONGEST insn;
-@@ -3985,7 +3985,7 @@
- {
- const int atomic_sequence_length = 16; /* Instruction sequence length. */
- int last_breakpoint = 0; /* Defaults to 0 (no breakpoints placed). */
-- CORE_ADDR breaks[2] = {-1, -1};
-+ CORE_ADDR breaks[2] = {static_cast<CORE_ADDR>(-1), static_cast<CORE_ADDR>(-1)};
- CORE_ADDR branch_bp = 0; /* Breakpoint at branch instruction's
- destination. */
- CORE_ADDR loc = pc;
diff --git a/devel/gdb/files/patch-gdb_mips64-obsd-tdep.c b/devel/gdb/files/patch-gdb_mips64-obsd-tdep.c
deleted file mode 100644
index 9a49e5f3532b..000000000000
--- a/devel/gdb/files/patch-gdb_mips64-obsd-tdep.c
+++ /dev/null
@@ -1,19 +0,0 @@
---- gdb/mips64-obsd-tdep.c.orig 2018-03-15 16:47:34.626536000 +0100
-+++ gdb/mips64-obsd-tdep.c 2018-03-15 16:48:17.150853000 +0100
-@@ -127,11 +127,11 @@
- SIGTRAMP_FRAME,
- MIPS_INSN32_SIZE,
- {
-- { 0x67a40020, -1 }, /* daddiu a0,sp,32 */
-- { 0x24020067, -1 }, /* li v0,103 */
-- { 0x0000000c, -1 }, /* syscall */
-- { 0x0000000d, -1 }, /* break */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0x67a40020, static_cast<ULONGEST>(-1) }, /* daddiu a0,sp,32 */
-+ { 0x24020067, static_cast<ULONGEST>(-1) }, /* li v0,103 */
-+ { 0x0000000c, static_cast<ULONGEST>(-1) }, /* syscall */
-+ { 0x0000000d, static_cast<ULONGEST>(-1) }, /* break */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- mips64obsd_sigframe_init
- };
diff --git a/devel/gdb/files/patch-gdb_mn10300-linux-tdep.c b/devel/gdb/files/patch-gdb_mn10300-linux-tdep.c
deleted file mode 100644
index 64073a021887..000000000000
--- a/devel/gdb/files/patch-gdb_mn10300-linux-tdep.c
+++ /dev/null
@@ -1,42 +0,0 @@
---- gdb/mn10300-linux-tdep.c.orig 2018-03-15 11:17:21.462824000 +0100
-+++ gdb/mn10300-linux-tdep.c 2018-03-15 11:20:05.266582000 +0100
-@@ -476,13 +476,13 @@
- 1,
- {
- /* mov 119,d0 */
-- { 0x2c, -1 },
-- { 0x77, -1 },
-- { 0x00, -1 },
-+ { 0x2c, static_cast<ULONGEST>(-1) },
-+ { 0x77, static_cast<ULONGEST>(-1) },
-+ { 0x00, static_cast<ULONGEST>(-1) },
- /* syscall 0 */
-- { 0xf0, -1 },
-- { 0xe0, -1 },
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0xf0, static_cast<ULONGEST>(-1) },
-+ { 0xe0, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- am33_linux_sigframe_cache_init
- };
-@@ -492,13 +492,13 @@
- 1,
- {
- /* mov 173,d0 */
-- { 0x2c, -1 },
-- { 0xad, -1 },
-- { 0x00, -1 },
-+ { 0x2c, static_cast<ULONGEST>(-1) },
-+ { 0xad, static_cast<ULONGEST>(-1) },
-+ { 0x00, static_cast<ULONGEST>(-1) },
- /* syscall 0 */
-- { 0xf0, -1 },
-- { 0xe0, -1 },
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0xf0, static_cast<ULONGEST>(-1) },
-+ { 0xe0, static_cast<ULONGEST>(-1) },
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- am33_linux_sigframe_cache_init
- };
diff --git a/devel/gdb/files/patch-gdb_nios2-linux-tdep.c b/devel/gdb/files/patch-gdb_nios2-linux-tdep.c
deleted file mode 100644
index 610eb805b806..000000000000
--- a/devel/gdb/files/patch-gdb_nios2-linux-tdep.c
+++ /dev/null
@@ -1,24 +0,0 @@
---- gdb/nios2-linux-tdep.c.orig 2018-03-15 11:23:52.815692000 +0100
-+++ gdb/nios2-linux-tdep.c 2018-03-15 11:55:44.876122000 +0100
-@@ -164,8 +164,8 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { MATCH_R1_MOVI | SET_IW_I_B (2) | SET_IW_I_IMM16 (139), -1 },
-- { MATCH_R1_TRAP | SET_IW_R_IMM5 (0), -1},
-+ { MATCH_R1_MOVI | SET_IW_I_B (2) | SET_IW_I_IMM16 (139), static_cast<ULONGEST>(-1) },
-+ { MATCH_R1_TRAP | SET_IW_R_IMM5 (0), static_cast<ULONGEST>(-1)},
- { TRAMP_SENTINEL_INSN }
- },
- nios2_linux_rt_sigreturn_init
-@@ -176,8 +176,8 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { MATCH_R2_MOVI | SET_IW_F2I16_B (2) | SET_IW_F2I16_IMM16 (139), -1 },
-- { MATCH_R2_TRAP | SET_IW_X2L5_IMM5 (0), -1},
-+ { MATCH_R2_MOVI | SET_IW_F2I16_B (2) | SET_IW_F2I16_IMM16 (139), static_cast<ULONGEST>(-1) },
-+ { MATCH_R2_TRAP | SET_IW_X2L5_IMM5 (0), static_cast<ULONGEST>(-1)},
- { TRAMP_SENTINEL_INSN }
- },
- nios2_linux_rt_sigreturn_init
diff --git a/devel/gdb/files/patch-gdb_ppc-linux-tdep.c b/devel/gdb/files/patch-gdb_ppc-linux-tdep.c
deleted file mode 100644
index 1db6fae004d2..000000000000
--- a/devel/gdb/files/patch-gdb_ppc-linux-tdep.c
+++ /dev/null
@@ -1,50 +0,0 @@
---- gdb/ppc-linux-tdep.c.orig 2018-03-15 11:56:24.120083000 +0100
-+++ gdb/ppc-linux-tdep.c 2018-03-15 11:57:57.568381000 +0100
-@@ -663,8 +663,8 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x380000ac, -1 }, /* li r0, 172 */
-- { 0x44000002, -1 }, /* sc */
-+ { 0x380000ac, static_cast<ULONGEST>(-1) }, /* li r0, 172 */
-+ { 0x44000002, static_cast<ULONGEST>(-1) }, /* sc */
- { TRAMP_SENTINEL_INSN },
- },
- ppc32_linux_sigaction_cache_init
-@@ -673,9 +673,9 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x38210080, -1 }, /* addi r1,r1,128 */
-- { 0x380000ac, -1 }, /* li r0, 172 */
-- { 0x44000002, -1 }, /* sc */
-+ { 0x38210080, static_cast<ULONGEST>(-1) }, /* addi r1,r1,128 */
-+ { 0x380000ac, static_cast<ULONGEST>(-1) }, /* li r0, 172 */
-+ { 0x44000002, static_cast<ULONGEST>(-1) }, /* sc */
- { TRAMP_SENTINEL_INSN },
- },
- ppc64_linux_sigaction_cache_init
-@@ -684,8 +684,8 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x38000077, -1 }, /* li r0,119 */
-- { 0x44000002, -1 }, /* sc */
-+ { 0x38000077, static_cast<ULONGEST>(-1) }, /* li r0,119 */
-+ { 0x44000002, static_cast<ULONGEST>(-1) }, /* sc */
- { TRAMP_SENTINEL_INSN },
- },
- ppc32_linux_sighandler_cache_init
-@@ -694,9 +694,9 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x38210080, -1 }, /* addi r1,r1,128 */
-- { 0x38000077, -1 }, /* li r0,119 */
-- { 0x44000002, -1 }, /* sc */
-+ { 0x38210080, static_cast<ULONGEST>(-1) }, /* addi r1,r1,128 */
-+ { 0x38000077, static_cast<ULONGEST>(-1) }, /* li r0,119 */
-+ { 0x44000002, static_cast<ULONGEST>(-1) }, /* sc */
- { TRAMP_SENTINEL_INSN },
- },
- ppc64_linux_sighandler_cache_init
diff --git a/devel/gdb/files/patch-gdb_ppc-nbsd-tdep.c b/devel/gdb/files/patch-gdb_ppc-nbsd-tdep.c
deleted file mode 100644
index a88cf2b63f10..000000000000
--- a/devel/gdb/files/patch-gdb_ppc-nbsd-tdep.c
+++ /dev/null
@@ -1,48 +0,0 @@
---- gdb/ppc-nbsd-tdep.c.orig 2018-03-15 13:48:32.041494000 +0100
-+++ gdb/ppc-nbsd-tdep.c 2018-03-15 13:50:31.332926000 +0100
-@@ -137,14 +137,14 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x3821fff0, -1 }, /* add r1,r1,-16 */
-- { 0x4e800021, -1 }, /* blrl */
-- { 0x38610018, -1 }, /* addi r3,r1,24 */
-- { 0x38000127, -1 }, /* li r0,295 */
-- { 0x44000002, -1 }, /* sc */
-- { 0x38000001, -1 }, /* li r0,1 */
-- { 0x44000002, -1 }, /* sc */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0x3821fff0, static_cast<ULONGEST>(-1) }, /* add r1,r1,-16 */
-+ { 0x4e800021, static_cast<ULONGEST>(-1) }, /* blrl */
-+ { 0x38610018, static_cast<ULONGEST>(-1) }, /* addi r3,r1,24 */
-+ { 0x38000127, static_cast<ULONGEST>(-1) }, /* li r0,295 */
-+ { 0x44000002, static_cast<ULONGEST>(-1) }, /* sc */
-+ { 0x38000001, static_cast<ULONGEST>(-1) }, /* li r0,1 */
-+ { 0x44000002, static_cast<ULONGEST>(-1) }, /* sc */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- ppcnbsd_sigtramp_cache_init
- };
-@@ -156,14 +156,14 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x3821fff0, -1 }, /* add r1,r1,-16 */
-- { 0x4e800021, -1 }, /* blrl */
-- { 0x38610010, -1 }, /* addi r3,r1,16 */
-- { 0x38000127, -1 }, /* li r0,295 */
-- { 0x44000002, -1 }, /* sc */
-- { 0x38000001, -1 }, /* li r0,1 */
-- { 0x44000002, -1 }, /* sc */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0x3821fff0, static_cast<ULONGEST>(-1) }, /* add r1,r1,-16 */
-+ { 0x4e800021, static_cast<ULONGEST>(-1) }, /* blrl */
-+ { 0x38610010, static_cast<ULONGEST>(-1) }, /* addi r3,r1,16 */
-+ { 0x38000127, static_cast<ULONGEST>(-1) }, /* li r0,295 */
-+ { 0x44000002, static_cast<ULONGEST>(-1) }, /* sc */
-+ { 0x38000001, static_cast<ULONGEST>(-1) }, /* li r0,1 */
-+ { 0x44000002, static_cast<ULONGEST>(-1) }, /* sc */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- ppcnbsd_sigtramp_cache_init
- };
diff --git a/devel/gdb/files/patch-gdb_ppc64-tdep.c b/devel/gdb/files/patch-gdb_ppc64-tdep.c
deleted file mode 100644
index 33ddc5e51fdd..000000000000
--- a/devel/gdb/files/patch-gdb_ppc64-tdep.c
+++ /dev/null
@@ -1,252 +0,0 @@
---- gdb/ppc64-tdep.c.orig 2018-03-15 16:02:11.651610000 +0100
-+++ gdb/ppc64-tdep.c 2018-03-15 16:10:27.958608000 +0100
-@@ -30,24 +30,27 @@
- you can use -1 to make masks. */
-
- #define insn_d(opcd, rts, ra, d) \
-+ static_cast<unsigned int>( \
- ((((opcd) & 0x3f) << 26) \
- | (((rts) & 0x1f) << 21) \
- | (((ra) & 0x1f) << 16) \
-- | ((d) & 0xffff))
-+ | ((d) & 0xffff)))
-
- #define insn_ds(opcd, rts, ra, d, xo) \
-+ static_cast<unsigned int>( \
- ((((opcd) & 0x3f) << 26) \
- | (((rts) & 0x1f) << 21) \
- | (((ra) & 0x1f) << 16) \
- | ((d) & 0xfffc) \
-- | ((xo) & 0x3))
-+ | ((xo) & 0x3)))
-
- #define insn_xfx(opcd, rts, spr, xo) \
-+ static_cast<unsigned int>( \
- ((((opcd) & 0x3f) << 26) \
- | (((rts) & 0x1f) << 21) \
- | (((spr) & 0x1f) << 16) \
- | (((spr) & 0x3e0) << 6) \
-- | (((xo) & 0x3ff) << 1))
-+ | (((xo) & 0x3ff) << 1)))
-
- /* PLT_OFF is the TOC-relative offset of a 64-bit PowerPC PLT entry.
- Return the function's entry point. */
-@@ -86,7 +89,7 @@
- { insn_d (-1, -1, -1, 0), insn_d (15, 12, 2, 0), 0 },
-
- /* std r2, 40(r1) */
-- { -1, insn_ds (62, 2, 1, 40, 0), 0 },
-+ { static_cast<unsigned int>(-1), insn_ds (62, 2, 1, 40, 0), 0 },
-
- /* ld r11, <any>(r12) */
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 0 },
-@@ -107,7 +110,7 @@
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 1 },
-
- /* bctr */
-- { -1, 0x4e800420, 0 },
-+ { static_cast<unsigned int>(-1), 0x4e800420, 0 },
-
- { 0, 0, 0 }
- };
-@@ -122,13 +125,13 @@
- static struct ppc_insn_pattern ppc64_standard_linkage2[] =
- {
- /* std r2, 40(r1) <optional> */
-- { -1, insn_ds (62, 2, 1, 40, 0), 1 },
-+ { static_cast<unsigned int>(-1), insn_ds (62, 2, 1, 40, 0), 1 },
-
- /* addis r12, r2, <any> */
- { insn_d (-1, -1, -1, 0), insn_d (15, 12, 2, 0), 0 },
-
- /* std r2, 40(r1) <optional> */
-- { -1, insn_ds (62, 2, 1, 40, 0), 1 },
-+ { static_cast<unsigned int>(-1), insn_ds (62, 2, 1, 40, 0), 1 },
-
- /* ld r11, <any>(r12) */
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 0 },
-@@ -140,10 +143,10 @@
- { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 11, 9, 467), 0 },
-
- /* xor r11, r11, r11 <optional> */
-- { -1, 0x7d6b5a78, 1 },
-+ { static_cast<unsigned int>(-1), 0x7d6b5a78, 1 },
-
- /* add r12, r12, r11 <optional> */
-- { -1, 0x7d8c5a14, 1 },
-+ { static_cast<unsigned int>(-1), 0x7d8c5a14, 1 },
-
- /* ld r2, <any>(r12) */
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 2, 12, 0, 0), 0 },
-@@ -152,10 +155,10 @@
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 12, 0, 0), 1 },
-
- /* bctr <optional> */
-- { -1, 0x4e800420, 1 },
-+ { static_cast<unsigned int>(-1), 0x4e800420, 1 },
-
- /* cmpldi r2, 0 <optional> */
-- { -1, 0x28220000, 1 },
-+ { static_cast<unsigned int>(-1), 0x28220000, 1 },
-
- { 0, 0, 0 }
- };
-@@ -165,7 +168,7 @@
- static struct ppc_insn_pattern ppc64_standard_linkage3[] =
- {
- /* std r2, 40(r1) <optional> */
-- { -1, insn_ds (62, 2, 1, 40, 0), 1 },
-+ { static_cast<unsigned int>(-1), insn_ds (62, 2, 1, 40, 0), 1 },
-
- /* ld r11, <any>(r2) */
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 2, 0, 0), 0 },
-@@ -177,10 +180,10 @@
- { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 11, 9, 467), 0 },
-
- /* xor r11, r11, r11 <optional> */
-- { -1, 0x7d6b5a78, 1 },
-+ { static_cast<unsigned int>(-1), 0x7d6b5a78, 1 },
-
- /* add r2, r2, r11 <optional> */
-- { -1, 0x7c425a14, 1 },
-+ { static_cast<unsigned int>(-1), 0x7c425a14, 1 },
-
- /* ld r11, <any>(r2) <optional> */
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 2, 0, 0), 1 },
-@@ -189,10 +192,10 @@
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 2, 2, 0, 0), 0 },
-
- /* bctr <optional> */
-- { -1, 0x4e800420, 1 },
-+ { static_cast<unsigned int>(-1), 0x4e800420, 1 },
-
- /* cmpldi r2, 0 <optional> */
-- { -1, 0x28220000, 1 },
-+ { static_cast<unsigned int>(-1), 0x28220000, 1 },
-
- { 0, 0, 0 }
- };
-@@ -204,7 +207,7 @@
- static struct ppc_insn_pattern ppc64_standard_linkage4[] =
- {
- /* std r2, 40(r1) <optional> */
-- { -1, insn_ds (62, 2, 1, 40, 0), 1 },
-+ { static_cast<unsigned int>(-1), insn_ds (62, 2, 1, 40, 0), 1 },
-
- /* addis r11, r2, <any> */
- { insn_d (-1, -1, -1, 0), insn_d (15, 11, 2, 0), 0 },
-@@ -219,10 +222,10 @@
- { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
-
- /* xor r2, r12, r12 <optional> */
-- { -1, 0x7d826278, 1 },
-+ { static_cast<unsigned int>(-1), 0x7d826278, 1 },
-
- /* add r11, r11, r2 <optional> */
-- { -1, 0x7d6b1214, 1 },
-+ { static_cast<unsigned int>(-1), 0x7d6b1214, 1 },
-
- /* ld r2, <any>(r11) */
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 2, 11, 0, 0), 0 },
-@@ -231,10 +234,10 @@
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 11, 0, 0), 1 },
-
- /* bctr <optional> */
-- { -1, 0x4e800420, 1 },
-+ { static_cast<unsigned int>(-1), 0x4e800420, 1 },
-
- /* cmpldi r2, 0 <optional> */
-- { -1, 0x28220000, 1 },
-+ { static_cast<unsigned int>(-1), 0x28220000, 1 },
-
- { 0, 0, 0 }
- };
-@@ -246,7 +249,7 @@
- static struct ppc_insn_pattern ppc64_standard_linkage5[] =
- {
- /* std r2, 40(r1) <optional> */
-- { -1, insn_ds (62, 2, 1, 40, 0), 1 },
-+ { static_cast<unsigned int>(-1), insn_ds (62, 2, 1, 40, 0), 1 },
-
- /* ld r12, <any>(r2) */
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 12, 2, 0, 0), 0 },
-@@ -258,10 +261,10 @@
- { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
-
- /* xor r11, r12, r12 <optional> */
-- { -1, 0x7d8b6278, 1 },
-+ { static_cast<unsigned int>(-1), 0x7d8b6278, 1 },
-
- /* add r2, r2, r11 <optional> */
-- { -1, 0x7c425a14, 1 },
-+ { static_cast<unsigned int>(-1), 0x7c425a14, 1 },
-
- /* ld r11, <any>(r2) <optional> */
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 11, 2, 0, 0), 1 },
-@@ -270,10 +273,10 @@
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 2, 2, 0, 0), 0 },
-
- /* bctr <optional> */
-- { -1, 0x4e800420, 1 },
-+ { static_cast<unsigned int>(-1), 0x4e800420, 1 },
-
- /* cmpldi r2, 0 <optional> */
-- { -1, 0x28220000, 1 },
-+ { static_cast<unsigned int>(-1), 0x28220000, 1 },
-
- { 0, 0, 0 }
- };
-@@ -283,7 +286,7 @@
- static struct ppc_insn_pattern ppc64_standard_linkage6[] =
- {
- /* std r2, 24(r1) <optional> */
-- { -1, insn_ds (62, 2, 1, 24, 0), 1 },
-+ { static_cast<unsigned int>(-1), insn_ds (62, 2, 1, 24, 0), 1 },
-
- /* addis r11, r2, <any> */
- { insn_d (-1, -1, -1, 0), insn_d (15, 11, 2, 0), 0 },
-@@ -295,7 +298,7 @@
- { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
-
- /* bctr */
-- { -1, 0x4e800420, 0 },
-+ { static_cast<unsigned int>(-1), 0x4e800420, 0 },
-
- { 0, 0, 0 }
- };
-@@ -305,7 +308,7 @@
- static struct ppc_insn_pattern ppc64_standard_linkage7[] =
- {
- /* std r2, 24(r1) <optional> */
-- { -1, insn_ds (62, 2, 1, 24, 0), 1 },
-+ { static_cast<unsigned int>(-1), insn_ds (62, 2, 1, 24, 0), 1 },
-
- /* ld r12, <any>(r2) */
- { insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 12, 2, 0, 0), 0 },
-@@ -314,7 +317,7 @@
- { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
-
- /* bctr */
-- { -1, 0x4e800420, 0 },
-+ { static_cast<unsigned int>(-1), 0x4e800420, 0 },
-
- { 0, 0, 0 }
- };
-@@ -325,7 +328,7 @@
- static struct ppc_insn_pattern ppc64_standard_linkage8[] =
- {
- /* std r2, 24(r1) <optional> */
-- { -1, insn_ds (62, 2, 1, 24, 0), 1 },
-+ { static_cast<unsigned int>(-1), insn_ds (62, 2, 1, 24, 0), 1 },
-
- /* addis r12, r2, <any> */
- { insn_d (-1, -1, -1, 0), insn_d (15, 12, 2, 0), 0 },
-@@ -337,7 +340,7 @@
- { insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
-
- /* bctr */
-- { -1, 0x4e800420, 0 },
-+ { static_cast<unsigned int>(-1), 0x4e800420, 0 },
-
- { 0, 0, 0 }
- };
diff --git a/devel/gdb/files/patch-gdb_rs6000-tdep.c b/devel/gdb/files/patch-gdb_rs6000-tdep.c
deleted file mode 100644
index ebce7f1b49ba..000000000000
--- a/devel/gdb/files/patch-gdb_rs6000-tdep.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdb/rs6000-tdep.c.orig 2018-03-15 16:11:47.189448000 +0100
-+++ gdb/rs6000-tdep.c 2018-03-15 16:12:36.114973000 +0100
-@@ -1173,7 +1173,7 @@
- struct gdbarch *gdbarch = regcache->arch ();
- enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
- CORE_ADDR pc = regcache_read_pc (regcache);
-- CORE_ADDR breaks[2] = {-1, -1};
-+ CORE_ADDR breaks[2] = {static_cast<CORE_ADDR>(-1),static_cast<CORE_ADDR>(-1)};
- CORE_ADDR loc = pc;
- CORE_ADDR closing_insn; /* Instruction that closes the atomic sequence. */
- int insn = read_memory_integer (loc, PPC_INSN_SIZE, byte_order);
diff --git a/devel/gdb/files/patch-gdb_sparc-linux-tdep.c b/devel/gdb/files/patch-gdb_sparc-linux-tdep.c
deleted file mode 100644
index 7366a71826bc..000000000000
--- a/devel/gdb/files/patch-gdb_sparc-linux-tdep.c
+++ /dev/null
@@ -1,28 +0,0 @@
---- gdb/sparc-linux-tdep.c.orig 2018-03-15 16:27:40.393176000 +0100
-+++ gdb/sparc-linux-tdep.c 2018-03-15 16:29:00.339581000 +0100
-@@ -68,9 +68,9 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x821020d8, -1 }, /* mov __NR_sugreturn, %g1 */
-- { 0x91d02010, -1 }, /* ta 0x10 */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0x821020d8, static_cast<ULONGEST>(-1) }, /* mov __NR_sugreturn, %g1 */
-+ { 0x91d02010, static_cast<ULONGEST>(-1) }, /* ta 0x10 */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- sparc32_linux_sigframe_init
- };
-@@ -83,9 +83,9 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x82102065, -1 }, /* mov __NR_rt_sigreturn, %g1 */
-- { 0x91d02010, -1 }, /* ta 0x10 */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0x82102065, static_cast<ULONGEST>(-1) }, /* mov __NR_rt_sigreturn, %g1 */
-+ { 0x91d02010, static_cast<ULONGEST>(-1) }, /* ta 0x10 */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- sparc32_linux_sigframe_init
- };
diff --git a/devel/gdb/files/patch-gdb_sparc64-linux-tdep.c b/devel/gdb/files/patch-gdb_sparc64-linux-tdep.c
deleted file mode 100644
index f28c44bf374f..000000000000
--- a/devel/gdb/files/patch-gdb_sparc64-linux-tdep.c
+++ /dev/null
@@ -1,15 +0,0 @@
---- gdb/sparc64-linux-tdep.c.orig 2018-03-15 16:48:31.376247000 +0100
-+++ gdb/sparc64-linux-tdep.c 2018-03-15 16:49:05.405119000 +0100
-@@ -64,9 +64,9 @@
- SIGTRAMP_FRAME,
- 4,
- {
-- { 0x82102065, -1 }, /* mov __NR_rt_sigreturn, %g1 */
-- { 0x91d0206d, -1 }, /* ta 0x6d */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0x82102065, static_cast<ULONGEST>(-1) }, /* mov __NR_rt_sigreturn, %g1 */
-+ { 0x91d0206d, static_cast<ULONGEST>(-1) }, /* ta 0x6d */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- sparc64_linux_sigframe_init
- };
diff --git a/devel/gdb/files/patch-gdb_tick6x-linux-tdep.c b/devel/gdb/files/patch-gdb_tick6x-linux-tdep.c
deleted file mode 100644
index 411e42e1de07..000000000000
--- a/devel/gdb/files/patch-gdb_tick6x-linux-tdep.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdb/tic6x-linux-tdep.c.orig 2018-03-15 16:29:54.131451000 +0100
-+++ gdb/tic6x-linux-tdep.c 2018-03-15 16:30:19.640674000 +0100
-@@ -137,7 +137,7 @@
- 4,
- {
- {0x000045aa, 0x0fffffff}, /* mvk .S2 139,b0 */
-- {0x10000000, -1}, /* swe */
-+ {0x10000000, static_cast<ULONGEST>(-1)}, /* swe */
- {TRAMP_SENTINEL_INSN}
- },
- tic6x_linux_rt_sigreturn_init
diff --git a/devel/gdb/files/patch-gdb_tilegx-linux-tdep.c b/devel/gdb/files/patch-gdb_tilegx-linux-tdep.c
deleted file mode 100644
index a65d7e27e5f5..000000000000
--- a/devel/gdb/files/patch-gdb_tilegx-linux-tdep.c
+++ /dev/null
@@ -1,15 +0,0 @@
---- gdb/tilegx-linux-tdep.c.orig 2018-03-15 16:31:44.623131000 +0100
-+++ gdb/tilegx-linux-tdep.c 2018-03-15 16:32:29.603585000 +0100
-@@ -65,9 +65,9 @@
- SIGTRAMP_FRAME,
- 8,
- {
-- { 0x00045fe551483000ULL, -1 }, /* { moveli r10, 139 } */
-- { 0x286b180051485000ULL, -1 }, /* { swint1 } */
-- { TRAMP_SENTINEL_INSN, -1 }
-+ { 0x00045fe551483000ULL, static_cast<ULONGEST>(-1) }, /* { moveli r10, 139 } */
-+ { 0x286b180051485000ULL, static_cast<ULONGEST>(-1) }, /* { swint1 } */
-+ { TRAMP_SENTINEL_INSN, static_cast<ULONGEST>(-1) }
- },
- tilegx_linux_sigframe_init
- };
diff --git a/devel/gdb/files/patch-gdb_tramp-frame.h b/devel/gdb/files/patch-gdb_tramp-frame.h
deleted file mode 100644
index 973cb14e3892..000000000000
--- a/devel/gdb/files/patch-gdb_tramp-frame.h
+++ /dev/null
@@ -1,11 +0,0 @@
---- gdb/tramp-frame.h.orig 2018-03-15 10:38:21.385046000 +0100
-+++ gdb/tramp-frame.h 2018-03-15 10:38:49.942224000 +0100
-@@ -41,7 +41,7 @@
-
- /* Magic instruction that to mark the end of the signal trampoline
- instruction sequence. */
--#define TRAMP_SENTINEL_INSN ((LONGEST) -1)
-+#define TRAMP_SENTINEL_INSN ((ULONGEST) -1)
-
- struct tramp_frame
- {
diff --git a/devel/gdb/files/patch-gdb_xtensa-tdep.h b/devel/gdb/files/patch-gdb_xtensa-tdep.h
deleted file mode 100644
index c8f814ba6d51..000000000000
--- a/devel/gdb/files/patch-gdb_xtensa-tdep.h
+++ /dev/null
@@ -1,20 +0,0 @@
---- gdb/xtensa-tdep.h.orig 2018-03-15 16:33:53.194056000 +0100
-+++ gdb/xtensa-tdep.h 2018-03-15 16:37:44.151472000 +0100
-@@ -130,7 +130,7 @@
- ct, bsz, sz, al, tnum, flg, cp, mas, fet, sto},
- #define XTREG_END \
- {0, 0, (xtensa_register_type_t) 0, (xtensa_register_group_t) 0, \
-- 0, 0, 0, 0, -1, 0, 0, 0, 0, 0},
-+ 0, 0, 0, 0, static_cast<unsigned int>(-1), 0, 0, 0, 0, 0},
-
- #define XTENSA_REGISTER_FLAGS_PRIVILEGED 0x0001
- #define XTENSA_REGISTER_FLAGS_READABLE 0x0002
-@@ -228,7 +228,7 @@
- #define XTENSA_GDBARCH_TDEP_INSTANTIATE(rmap,spillsz) \
- { \
- 0, /* target_flags */ \
-- -1, /* spill_location */ \
-+ static_cast<unsigned int>(-1), /* spill_location */ \
- (spillsz), /* spill_size */ \
- 0, /* unused */ \
- (XSHAL_ABI == XTHAL_ABI_CALL0 \