diff --git a/.gitignore b/.gitignore
index 177dbad..6f2afb0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
 /gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz
 /v2.0.1.tar.gz
-/gdb-8.3.50.20190924.tar.xz
+/gdb-9.0.50.20191018.tar.xz
diff --git a/_git_upstream_commit b/_git_upstream_commit
index bba5c1d..dcedc4b 100644
--- a/_git_upstream_commit
+++ b/_git_upstream_commit
@@ -1 +1 @@
-3868d2e9f18d0351c472c0d6c8864c610e62598a
+39849b0503152de7447b3da67ed9fa45fa9ba5fd
diff --git a/gdb-6.3-gstack-20050411.patch b/gdb-6.3-gstack-20050411.patch
index 0b8882e..0f37be1 100644
--- a/gdb-6.3-gstack-20050411.patch
+++ b/gdb-6.3-gstack-20050411.patch
@@ -16,7 +16,7 @@ Subject: gdb-6.3-gstack-20050411.patch
 diff --git a/gdb/Makefile.in b/gdb/Makefile.in
 --- a/gdb/Makefile.in
 +++ b/gdb/Makefile.in
-@@ -1741,7 +1741,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
+@@ -1744,7 +1744,7 @@ info install-info clean-info dvi pdf install-pdf html install-html: force
  install: all
  	@$(MAKE) $(FLAGS_TO_PASS) install-only
  
@@ -25,7 +25,7 @@ diff --git a/gdb/Makefile.in b/gdb/Makefile.in
  	transformed_name=`t='$(program_transform_name)'; \
  			  echo gdb | sed -e "$$t"` ; \
  		if test "x$$transformed_name" = x; then \
-@@ -1790,7 +1790,25 @@ install-guile:
+@@ -1793,7 +1793,25 @@ install-guile:
  install-python:
  	$(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(GDB_DATADIR)/python/gdb
  
@@ -52,7 +52,7 @@ diff --git a/gdb/Makefile.in b/gdb/Makefile.in
  	transformed_name=`t='$(program_transform_name)'; \
  			  echo gdb | sed -e $$t` ; \
  		if test "x$$transformed_name" = x; then \
-@@ -1813,6 +1831,18 @@ uninstall: force $(CONFIG_UNINSTALL)
+@@ -1816,6 +1834,18 @@ uninstall: force $(CONFIG_UNINSTALL)
  	fi
  	@$(MAKE) DO=uninstall "DODIRS=$(SUBDIRS)" $(FLAGS_TO_PASS) subdir_do
  
diff --git a/gdb-6.3-rh-testversion-20041202.patch b/gdb-6.3-rh-testversion-20041202.patch
index 212c0bf..1de3474 100644
--- a/gdb-6.3-rh-testversion-20041202.patch
+++ b/gdb-6.3-rh-testversion-20041202.patch
@@ -27,7 +27,7 @@ diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest
 diff --git a/gdb/top.c b/gdb/top.c
 --- a/gdb/top.c
 +++ b/gdb/top.c
-@@ -2059,7 +2059,7 @@ init_gdb_version_vars (void)
+@@ -2057,7 +2057,7 @@ init_gdb_version_vars (void)
    struct internalvar *major_version_var = create_internalvar ("_gdb_major");
    struct internalvar *minor_version_var = create_internalvar ("_gdb_minor");
    int vmajor = 0, vminor = 0, vrevision = 0;
diff --git a/gdb-6.5-bz216711-clone-is-outermost.patch b/gdb-6.5-bz216711-clone-is-outermost.patch
index e74c07f..655c4f1 100644
--- a/gdb-6.5-bz216711-clone-is-outermost.patch
+++ b/gdb-6.5-bz216711-clone-is-outermost.patch
@@ -127,7 +127,7 @@ diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c
 diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
 --- a/gdb/amd64-tdep.c
 +++ b/gdb/amd64-tdep.c
-@@ -2624,6 +2624,7 @@ amd64_frame_unwind_stop_reason (struct frame_info *this_frame,
+@@ -2647,6 +2647,7 @@ amd64_frame_unwind_stop_reason (struct frame_info *this_frame,
  {
    struct amd64_frame_cache *cache =
      amd64_frame_cache (this_frame, this_cache);
@@ -135,7 +135,7 @@ diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
  
    if (!cache->base_p)
      return UNWIND_UNAVAILABLE;
-@@ -2632,6 +2633,10 @@ amd64_frame_unwind_stop_reason (struct frame_info *this_frame,
+@@ -2655,6 +2656,10 @@ amd64_frame_unwind_stop_reason (struct frame_info *this_frame,
    if (cache->base == 0)
      return UNWIND_OUTERMOST;
  
@@ -146,7 +146,7 @@ diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
    return UNWIND_NO_REASON;
  }
  
-@@ -2765,6 +2770,7 @@ amd64_sigtramp_frame_this_id (struct frame_info *this_frame,
+@@ -2788,6 +2793,7 @@ amd64_sigtramp_frame_this_id (struct frame_info *this_frame,
  {
    struct amd64_frame_cache *cache =
      amd64_sigtramp_frame_cache (this_frame, this_cache);
@@ -154,7 +154,7 @@ diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c
  
    if (!cache->base_p)
      (*this_id) = frame_id_build_unavailable_stack (get_frame_pc (this_frame));
-@@ -2773,6 +2779,11 @@ amd64_sigtramp_frame_this_id (struct frame_info *this_frame,
+@@ -2796,6 +2802,11 @@ amd64_sigtramp_frame_this_id (struct frame_info *this_frame,
        /* This marks the outermost frame.  */
        return;
      }
diff --git a/gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch b/gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch
index 885fa2a..8fdf169 100644
--- a/gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch
+++ b/gdb-6.5-bz218379-solib-trampoline-lookup-lock-fix.patch
@@ -11,7 +11,7 @@ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=218379
 diff --git a/gdb/symtab.c b/gdb/symtab.c
 --- a/gdb/symtab.c
 +++ b/gdb/symtab.c
-@@ -3148,6 +3148,13 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
+@@ -3133,6 +3133,13 @@ find_pc_sect_line (CORE_ADDR pc, struct obj_section *section, int notcurrent)
  	     SYMBOL_LINKAGE_NAME (msymbol)); */
  	  ;
  	/* fall through */
diff --git a/gdb-6.6-buildid-locate-core-as-arg.patch b/gdb-6.6-buildid-locate-core-as-arg.patch
index 877f850..1e35eaa 100644
--- a/gdb-6.6-buildid-locate-core-as-arg.patch
+++ b/gdb-6.6-buildid-locate-core-as-arg.patch
@@ -120,7 +120,7 @@ diff --git a/gdb/gdbsupport/common-exceptions.h b/gdb/gdbsupport/common-exceptio
 diff --git a/gdb/main.c b/gdb/main.c
 --- a/gdb/main.c
 +++ b/gdb/main.c
-@@ -445,6 +445,34 @@ struct cmdarg
+@@ -447,6 +447,34 @@ struct cmdarg
    char *string;
  };
  
@@ -155,7 +155,7 @@ diff --git a/gdb/main.c b/gdb/main.c
  static void
  captured_main_1 (struct captured_main_args *context)
  {
-@@ -890,6 +918,8 @@ captured_main_1 (struct captured_main_args *context)
+@@ -887,6 +915,8 @@ captured_main_1 (struct captured_main_args *context)
  	{
  	  symarg = argv[optind];
  	  execarg = argv[optind];
@@ -164,7 +164,7 @@ diff --git a/gdb/main.c b/gdb/main.c
  	  optind++;
  	}
  
-@@ -1043,12 +1073,25 @@ captured_main_1 (struct captured_main_args *context)
+@@ -1040,12 +1070,25 @@ captured_main_1 (struct captured_main_args *context)
        && symarg != NULL
        && strcmp (execarg, symarg) == 0)
      {
diff --git a/gdb-6.6-buildid-locate-rpm-scl.patch b/gdb-6.6-buildid-locate-rpm-scl.patch
index d1199ad..7b7a880 100644
--- a/gdb-6.6-buildid-locate-rpm-scl.patch
+++ b/gdb-6.6-buildid-locate-rpm-scl.patch
@@ -98,7 +98,7 @@ diff --git a/gdb/build-id.c b/gdb/build-id.c
 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
 --- a/gdb/dwarf2read.c
 +++ b/gdb/dwarf2read.c
-@@ -3470,6 +3470,16 @@ read_gdb_index_from_buffer (struct objfile *objfile,
+@@ -3472,6 +3472,16 @@ read_gdb_index_from_buffer (struct objfile *objfile,
       "set use-deprecated-index-sections on".  */
    if (version < 6 && !deprecated_ok)
      {
@@ -115,7 +115,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
        static int warning_printed = 0;
        if (!warning_printed)
  	{
-@@ -3481,6 +3491,10 @@ to use the section anyway."),
+@@ -3483,6 +3493,10 @@ to use the section anyway."),
  	  warning_printed = 1;
  	}
        return 0;
diff --git a/gdb-6.6-buildid-locate.patch b/gdb-6.6-buildid-locate.patch
index 54cf9d2..25ce223 100644
--- a/gdb-6.6-buildid-locate.patch
+++ b/gdb-6.6-buildid-locate.patch
@@ -1058,7 +1058,7 @@ diff --git a/gdb/corelow.c b/gdb/corelow.c
 diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
 --- a/gdb/doc/gdb.texinfo
 +++ b/gdb/doc/gdb.texinfo
-@@ -20679,6 +20679,27 @@ information files.
+@@ -20699,6 +20699,27 @@ information files.
  
  @end table
  
@@ -1111,7 +1111,7 @@ diff --git a/gdb/dwarf-index-cache.c b/gdb/dwarf-index-cache.c
 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
 --- a/gdb/dwarf2read.c
 +++ b/gdb/dwarf2read.c
-@@ -2691,7 +2691,7 @@ dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
+@@ -2693,7 +2693,7 @@ dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
      }
  
    if (dwz_bfd == NULL)
@@ -1120,7 +1120,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
  
    if (dwz_bfd == NULL)
      error (_("could not find '.gnu_debugaltlink' file for %s"),
-@@ -6225,7 +6225,7 @@ get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
+@@ -6227,7 +6227,7 @@ get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
  static gdb::array_view<const gdb_byte>
  get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
  {
@@ -1129,7 +1129,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
    if (build_id == nullptr)
      return {};
  
-@@ -6238,7 +6238,7 @@ get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
+@@ -6240,7 +6240,7 @@ get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
  static gdb::array_view<const gdb_byte>
  get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
  {
@@ -1141,7 +1141,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
 diff --git a/gdb/elfread.c b/gdb/elfread.c
 --- a/gdb/elfread.c
 +++ b/gdb/elfread.c
-@@ -1284,7 +1284,9 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
+@@ -1298,7 +1298,9 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
  	   && objfile->separate_debug_objfile == NULL
  	   && objfile->separate_debug_objfile_backlink == NULL)
      {
@@ -1152,21 +1152,25 @@ diff --git a/gdb/elfread.c b/gdb/elfread.c
  
        if (debugfile.empty ())
  	debugfile = find_separate_debug_file_by_debuglink (objfile);
-@@ -1296,6 +1298,10 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
+@@ -1310,8 +1312,12 @@ elf_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
  	  symbol_file_add_separate (debug_bfd.get (), debugfile.c_str (),
  				    symfile_flags, objfile);
  	}
+-	else
+-	  has_dwarf2 = false;
 +      /* Check if any separate debug info has been extracted out.  */
 +      else if (bfd_get_section_by_name (objfile->obfd, ".gnu_debuglink")
 +	       != NULL)
 +	debug_print_missing (objfile_name (objfile), build_id_filename.get ());
++      else
++	has_dwarf2 = false;
      }
- }
  
+   /* Read the CTF section only if there is no DWARF info.  */
 diff --git a/gdb/objfiles.h b/gdb/objfiles.h
 --- a/gdb/objfiles.h
 +++ b/gdb/objfiles.h
-@@ -625,6 +625,10 @@ struct objfile
+@@ -627,6 +627,10 @@ struct objfile
    htab_up static_links;
  };
  
@@ -1189,7 +1193,7 @@ diff --git a/gdb/python/py-objfile.c b/gdb/python/py-objfile.c
      }
    catch (const gdb_exception &except)
      {
-@@ -601,7 +601,7 @@ objfpy_lookup_objfile_by_build_id (const char *build_id)
+@@ -600,7 +600,7 @@ objfpy_lookup_objfile_by_build_id (const char *build_id)
        /* Don't return separate debug files.  */
        if (objfile->separate_debug_objfile_backlink != NULL)
  	continue;
@@ -1336,7 +1340,7 @@ diff --git a/gdb/testsuite/gdb.base/new-ui-pending-input.exp b/gdb/testsuite/gdb
 diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
 --- a/gdb/testsuite/lib/gdb.exp
 +++ b/gdb/testsuite/lib/gdb.exp
-@@ -1803,6 +1803,17 @@ proc default_gdb_start { } {
+@@ -1841,6 +1841,17 @@ proc default_gdb_start { } {
  	}
      }
  
diff --git a/gdb-6.8-quit-never-aborts.patch b/gdb-6.8-quit-never-aborts.patch
index 1522e9d..13394af 100644
--- a/gdb-6.8-quit-never-aborts.patch
+++ b/gdb-6.8-quit-never-aborts.patch
@@ -45,7 +45,7 @@ diff --git a/gdb/extension.c b/gdb/extension.c
 diff --git a/gdb/top.c b/gdb/top.c
 --- a/gdb/top.c
 +++ b/gdb/top.c
-@@ -1666,7 +1666,13 @@ quit_force (int *exit_arg, int from_tty)
+@@ -1664,7 +1664,13 @@ quit_force (int *exit_arg, int from_tty)
  
    qt.from_tty = from_tty;
  
@@ -62,7 +62,7 @@ diff --git a/gdb/top.c b/gdb/top.c
 diff --git a/gdb/utils.c b/gdb/utils.c
 --- a/gdb/utils.c
 +++ b/gdb/utils.c
-@@ -101,6 +101,13 @@ static std::chrono::steady_clock::duration prompt_for_continue_wait_time;
+@@ -102,6 +102,13 @@ static std::chrono::steady_clock::duration prompt_for_continue_wait_time;
  
  static bool debug_timestamp = false;
  
diff --git a/gdb-archer-pie-addons-keep-disabled.patch b/gdb-archer-pie-addons-keep-disabled.patch
index dd1a80f..a3c3c87 100644
--- a/gdb-archer-pie-addons-keep-disabled.patch
+++ b/gdb-archer-pie-addons-keep-disabled.patch
@@ -8,7 +8,7 @@ Subject: gdb-archer-pie-addons-keep-disabled.patch
 diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
 --- a/gdb/breakpoint.c
 +++ b/gdb/breakpoint.c
-@@ -15385,6 +15385,50 @@ static struct cmd_list_element *enablebreaklist = NULL;
+@@ -15377,6 +15377,50 @@ static struct cmd_list_element *enablebreaklist = NULL;
  
  cmd_list_element *commands_cmd_element = nullptr;
  
@@ -75,7 +75,7 @@ diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
 diff --git a/gdb/objfiles.c b/gdb/objfiles.c
 --- a/gdb/objfiles.c
 +++ b/gdb/objfiles.c
-@@ -825,6 +825,11 @@ objfile_relocate1 (struct objfile *objfile,
+@@ -827,6 +827,11 @@ objfile_relocate1 (struct objfile *objfile,
  				obj_section_addr (s));
      }
  
diff --git a/gdb-archer-pie-addons.patch b/gdb-archer-pie-addons.patch
index dc90e02..de50795 100644
--- a/gdb-archer-pie-addons.patch
+++ b/gdb-archer-pie-addons.patch
@@ -51,7 +51,7 @@ diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h
 diff --git a/gdb/value.c b/gdb/value.c
 --- a/gdb/value.c
 +++ b/gdb/value.c
-@@ -2827,7 +2827,8 @@ value_static_field (struct type *type, int fieldno)
+@@ -2829,7 +2829,8 @@ value_static_field (struct type *type, int fieldno)
      {
      case FIELD_LOC_KIND_PHYSADDR:
        retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno),
diff --git a/gdb-archer.patch b/gdb-archer.patch
index e900bea..3d59f4f 100644
--- a/gdb-archer.patch
+++ b/gdb-archer.patch
@@ -161,7 +161,7 @@ diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py
 diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp
 --- a/gdb/testsuite/gdb.python/py-value.exp
 +++ b/gdb/testsuite/gdb.python/py-value.exp
-@@ -412,6 +412,15 @@ proc test_value_after_death {} {
+@@ -419,6 +419,15 @@ proc test_value_after_death {} {
      "print value's type"
  }
  
@@ -177,7 +177,7 @@ diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py
  # Regression test for invalid subscript operations.  The bug was that
  # the type of the value was not being checked before allowing a
  # subscript operation to proceed.
-@@ -598,6 +607,7 @@ test_value_in_inferior
+@@ -606,6 +615,7 @@ test_value_in_inferior
  test_value_from_buffer
  test_inferior_function_call
  test_value_after_death
diff --git a/gdb-btrobust.patch b/gdb-btrobust.patch
index c7322ea..2c7e2d3 100644
--- a/gdb-btrobust.patch
+++ b/gdb-btrobust.patch
@@ -14,7 +14,7 @@ printed, but a default backtrace will occur in this case.
 diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
 --- a/gdb/python/py-framefilter.c
 +++ b/gdb/python/py-framefilter.c
-@@ -1203,6 +1203,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
+@@ -1204,6 +1204,7 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
  				       htab_eq_pointer,
  				       NULL));
  
@@ -22,7 +22,7 @@ diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
    while (true)
      {
        gdbpy_ref<> item (PyIter_Next (iterable.get ()));
-@@ -1211,8 +1212,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
+@@ -1212,8 +1213,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
  	{
  	  if (PyErr_Occurred ())
  	    {
@@ -33,7 +33,7 @@ diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
  	    }
  	  break;
  	}
-@@ -1244,7 +1245,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
+@@ -1245,7 +1246,8 @@ gdbpy_apply_frame_filter (const struct extension_language_defn *extlang,
        /* Do not exit on error printing a single frame.  Print the
  	 error and continue with other frames.  */
        if (success == EXT_LANG_BT_ERROR)
diff --git a/gdb-bz1219747-attach-kills.patch b/gdb-bz1219747-attach-kills.patch
index 5884bac..efbc91c 100644
--- a/gdb-bz1219747-attach-kills.patch
+++ b/gdb-bz1219747-attach-kills.patch
@@ -80,7 +80,7 @@ gdb/testsuite/ChangeLog
 diff --git a/gdb/main.c b/gdb/main.c
 --- a/gdb/main.c
 +++ b/gdb/main.c
-@@ -1128,7 +1128,10 @@ captured_main_1 (struct captured_main_args *context)
+@@ -1125,7 +1125,10 @@ captured_main_1 (struct captured_main_args *context)
  	{
  	  ret = catch_command_errors (attach_command, pid_or_core_arg,
  				      !batch_flag);
diff --git a/gdb-container-rh-pkg.patch b/gdb-container-rh-pkg.patch
index 65dacb6..35eb798 100644
--- a/gdb-container-rh-pkg.patch
+++ b/gdb-container-rh-pkg.patch
@@ -9,7 +9,7 @@ Subject: gdb-container-rh-pkg.patch
 diff --git a/gdb/remote.c b/gdb/remote.c
 --- a/gdb/remote.c
 +++ b/gdb/remote.c
-@@ -13905,7 +13905,17 @@ remote_target::pid_to_exec_file (int pid)
+@@ -13904,7 +13904,17 @@ remote_target::pid_to_exec_file (int pid)
    char *annex = NULL;
  
    if (packet_support (PACKET_qXfer_exec_file) != PACKET_ENABLE)
diff --git a/gdb-gnat-dwarf-crash-3of3.patch b/gdb-gnat-dwarf-crash-3of3.patch
index 3f3f089..54196bc 100644
--- a/gdb-gnat-dwarf-crash-3of3.patch
+++ b/gdb-gnat-dwarf-crash-3of3.patch
@@ -42,7 +42,7 @@ gdb/
 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
 --- a/gdb/dwarf2read.c
 +++ b/gdb/dwarf2read.c
-@@ -10602,6 +10602,13 @@ private:
+@@ -10608,6 +10608,13 @@ private:
  static void
  process_die (struct die_info *die, struct dwarf2_cu *cu)
  {
@@ -153,7 +153,7 @@ diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c
    if (resume_many)
      iterate_over_lwps (ptid, [=] (struct lwp_info *info)
  			     {
-@@ -3766,6 +3808,10 @@ linux_nat_target::mourn_inferior ()
+@@ -3769,6 +3811,10 @@ linux_nat_target::mourn_inferior ()
  
    /* Let the arch-specific native code know this process is gone.  */
    linux_target->low_forget_process (pid);
diff --git a/gdb-linux_perf-bundle.patch b/gdb-linux_perf-bundle.patch
index e0195e6..d53248e 100644
--- a/gdb-linux_perf-bundle.patch
+++ b/gdb-linux_perf-bundle.patch
@@ -56,7 +56,7 @@ diff --git a/gdb/gdb.c b/gdb/gdb.c
 diff --git a/gdb/nat/linux-btrace.h b/gdb/nat/linux-btrace.h
 --- a/gdb/nat/linux-btrace.h
 +++ b/gdb/nat/linux-btrace.h
-@@ -28,6 +28,177 @@
+@@ -27,6 +27,177 @@
  #  include <linux/perf_event.h>
  #endif
  
diff --git a/gdb-moribund-utrace-workaround.patch b/gdb-moribund-utrace-workaround.patch
index 7419b9a..7a0f821 100644
--- a/gdb-moribund-utrace-workaround.patch
+++ b/gdb-moribund-utrace-workaround.patch
@@ -14,7 +14,7 @@ Bug in FSF GDB exploited by the ptrace-on-utrace interaction.
 diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
 --- a/gdb/breakpoint.c
 +++ b/gdb/breakpoint.c
-@@ -11881,6 +11881,8 @@ update_global_location_list (enum ugll_insert_mode insert_mode)
+@@ -11877,6 +11877,8 @@ update_global_location_list (enum ugll_insert_mode insert_mode)
  		 traps we can no longer explain.  */
  
  	      old_loc->events_till_retirement = 3 * (thread_count () + 1);
diff --git a/gdb-vla-intel-fix-print-char-array.patch b/gdb-vla-intel-fix-print-char-array.patch
index 22d4553..c689058 100644
--- a/gdb-vla-intel-fix-print-char-array.patch
+++ b/gdb-vla-intel-fix-print-char-array.patch
@@ -22,7 +22,7 @@ And adjust its testcase.
 diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
 --- a/gdb/f-valprint.c
 +++ b/gdb/f-valprint.c
-@@ -313,8 +313,22 @@ f_val_print (struct type *type, int embedded_offset,
+@@ -314,8 +314,22 @@ f_val_print (struct type *type, int embedded_offset,
  				      original_value, &opts, 0, stream);
  	}
        else
diff --git a/gdb-vla-intel-fortran-strides.patch b/gdb-vla-intel-fortran-strides.patch
index eb7ef26..de3ddcb 100644
--- a/gdb-vla-intel-fortran-strides.patch
+++ b/gdb-vla-intel-fortran-strides.patch
@@ -37,7 +37,7 @@ dbfd7140bf4c0500d1f5d192be781f83f78f7922
 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
 --- a/gdb/dwarf2read.c
 +++ b/gdb/dwarf2read.c
-@@ -17878,7 +17878,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17890,7 +17890,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
    struct type *base_type, *orig_base_type;
    struct type *range_type;
    struct attribute *attr;
@@ -46,7 +46,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
    int low_default_is_valid;
    int high_bound_is_count = 0;
    const char *name;
-@@ -17899,7 +17899,9 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17911,7 +17911,9 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
  
    low.kind = PROP_CONST;
    high.kind = PROP_CONST;
@@ -56,7 +56,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
  
    /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
       omitting DW_AT_lower_bound.  */
-@@ -17932,6 +17934,14 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17944,6 +17946,14 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
        break;
      }
  
@@ -71,7 +71,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
    attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
    if (attr)
      attr_to_dynamic_prop (attr, die, cu, &low, base_type);
-@@ -17990,7 +18000,8 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -18002,7 +18012,8 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
        && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
      high.data.const_val |= negative_mask;
  
@@ -546,7 +546,7 @@ diff --git a/gdb/eval.c b/gdb/eval.c
 diff --git a/gdb/expprint.c b/gdb/expprint.c
 --- a/gdb/expprint.c
 +++ b/gdb/expprint.c
-@@ -578,17 +578,14 @@ print_subexp_standard (struct expression *exp, int *pos,
+@@ -580,17 +580,14 @@ print_subexp_standard (struct expression *exp, int *pos,
  	  longest_to_int (exp->elts[pc + 1].longconst);
  	*pos += 2;
  
@@ -568,7 +568,7 @@ diff --git a/gdb/expprint.c b/gdb/expprint.c
  	  print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
  	fputs_filtered (")", stream);
  	return;
-@@ -1105,22 +1102,24 @@ dump_subexp_body_standard (struct expression *exp,
+@@ -1107,22 +1104,24 @@ dump_subexp_body_standard (struct expression *exp,
  
  	switch (range_type)
  	  {
@@ -601,7 +601,7 @@ diff --git a/gdb/expprint.c b/gdb/expprint.c
  	    fputs_filtered ("ExclusiveRange 'EXP..EXP'", stream);
  	    break;
  	  default:
-@@ -1128,11 +1127,9 @@ dump_subexp_body_standard (struct expression *exp,
+@@ -1130,11 +1129,9 @@ dump_subexp_body_standard (struct expression *exp,
  	    break;
  	  }
  
@@ -742,7 +742,7 @@ diff --git a/gdb/f-exp.y b/gdb/f-exp.y
 diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
 --- a/gdb/f-valprint.c
 +++ b/gdb/f-valprint.c
-@@ -119,8 +119,14 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type,
+@@ -120,8 +120,14 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type,
  
    if (nss != ndimensions)
      {
@@ -761,7 +761,7 @@ diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
 diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
 --- a/gdb/gdbtypes.c
 +++ b/gdb/gdbtypes.c
-@@ -914,7 +914,8 @@ struct type *
+@@ -913,7 +913,8 @@ struct type *
  create_range_type (struct type *result_type, struct type *index_type,
  		   const struct dynamic_prop *low_bound,
  		   const struct dynamic_prop *high_bound,
@@ -771,7 +771,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
  {
    /* The INDEX_TYPE should be a type capable of holding the upper and lower
       bounds, as such a zero sized, or void type makes no sense.  */
-@@ -935,6 +936,7 @@ create_range_type (struct type *result_type, struct type *index_type,
+@@ -934,6 +935,7 @@ create_range_type (struct type *result_type, struct type *index_type,
    TYPE_RANGE_DATA (result_type)->low = *low_bound;
    TYPE_RANGE_DATA (result_type)->high = *high_bound;
    TYPE_RANGE_DATA (result_type)->bias = bias;
@@ -779,7 +779,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
  
    if (low_bound->kind == PROP_CONST && low_bound->data.const_val >= 0)
      TYPE_UNSIGNED (result_type) = 1;
-@@ -963,7 +965,7 @@ struct type *
+@@ -962,7 +964,7 @@ struct type *
  create_static_range_type (struct type *result_type, struct type *index_type,
  			  LONGEST low_bound, LONGEST high_bound)
  {
@@ -788,7 +788,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
  
    low.kind = PROP_CONST;
    low.data.const_val = low_bound;
-@@ -971,7 +973,11 @@ create_static_range_type (struct type *result_type, struct type *index_type,
+@@ -970,7 +972,11 @@ create_static_range_type (struct type *result_type, struct type *index_type,
    high.kind = PROP_CONST;
    high.data.const_val = high_bound;
  
@@ -801,7 +801,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
  
    return result_type;
  }
-@@ -1189,16 +1195,20 @@ create_array_type_with_stride (struct type *result_type,
+@@ -1188,16 +1194,20 @@ create_array_type_with_stride (struct type *result_type,
        && (!type_not_associated (result_type)
  	  && !type_not_allocated (result_type)))
      {
@@ -823,7 +823,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
        else if (bit_stride > 0)
  	TYPE_LENGTH (result_type) =
  	  (bit_stride * (high_bound - low_bound + 1) + 7) / 8;
-@@ -1983,7 +1993,7 @@ resolve_dynamic_range (struct type *dyn_range_type,
+@@ -1982,7 +1992,7 @@ resolve_dynamic_range (struct type *dyn_range_type,
    CORE_ADDR value;
    struct type *static_range_type, *static_target_type;
    const struct dynamic_prop *prop;
@@ -832,7 +832,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
  
    gdb_assert (TYPE_CODE (dyn_range_type) == TYPE_CODE_RANGE);
  
-@@ -2015,13 +2025,21 @@ resolve_dynamic_range (struct type *dyn_range_type,
+@@ -2014,13 +2024,21 @@ resolve_dynamic_range (struct type *dyn_range_type,
        high_bound.data.const_val = 0;
      }
  
@@ -955,7 +955,7 @@ diff --git a/gdb/parse.c b/gdb/parse.c
 diff --git a/gdb/rust-exp.y b/gdb/rust-exp.y
 --- a/gdb/rust-exp.y
 +++ b/gdb/rust-exp.y
-@@ -2493,24 +2493,28 @@ rust_parser::convert_ast_to_expression (const struct rust_op *operation,
+@@ -2492,24 +2492,28 @@ rust_parser::convert_ast_to_expression (const struct rust_op *operation,
  
      case OP_RANGE:
        {
@@ -995,7 +995,7 @@ diff --git a/gdb/rust-exp.y b/gdb/rust-exp.y
 diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
 --- a/gdb/rust-lang.c
 +++ b/gdb/rust-lang.c
-@@ -1221,13 +1221,11 @@ rust_range (struct expression *exp, int *pos, enum noside noside)
+@@ -1224,13 +1224,11 @@ rust_range (struct expression *exp, int *pos, enum noside noside)
    kind = (enum range_type) longest_to_int (exp->elts[*pos + 1].longconst);
    *pos += 3;
  
@@ -1012,7 +1012,7 @@ diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
  
    if (noside == EVAL_SKIP)
      return value_from_longest (builtin_type (exp->gdbarch)->builtin_int, 1);
-@@ -1316,7 +1314,7 @@ rust_compute_range (struct type *type, struct value *range,
+@@ -1319,7 +1317,7 @@ rust_compute_range (struct type *type, struct value *range,
  
    *low = 0;
    *high = 0;
@@ -1021,7 +1021,7 @@ diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
  
    if (TYPE_NFIELDS (type) == 0)
      return;
-@@ -1324,15 +1322,14 @@ rust_compute_range (struct type *type, struct value *range,
+@@ -1327,15 +1325,14 @@ rust_compute_range (struct type *type, struct value *range,
    i = 0;
    if (strcmp (TYPE_FIELD_NAME (type, 0), "start") == 0)
      {
@@ -1039,7 +1039,7 @@ diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
        *high = value_as_long (value_field (range, i));
  
        if (rust_inclusive_range_type_p (type))
-@@ -1350,7 +1347,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
+@@ -1353,7 +1350,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
    struct type *rhstype;
    LONGEST low, high_bound;
    /* Initialized to appease the compiler.  */
@@ -1048,7 +1048,7 @@ diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
    LONGEST high = 0;
    int want_slice = 0;
  
-@@ -1448,7 +1445,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
+@@ -1451,7 +1448,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
  	error (_("Cannot subscript non-array type"));
  
        if (want_slice
@@ -1057,7 +1057,7 @@ diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
  	low = low_bound;
        if (low < 0)
  	error (_("Index less than zero"));
-@@ -1466,7 +1463,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
+@@ -1469,7 +1466,7 @@ rust_subscript (struct expression *exp, int *pos, enum noside noside,
  	  CORE_ADDR addr;
  	  struct value *addrval, *tem;
  
diff --git a/gdb-vla-intel-fortran-vla-strings.patch b/gdb-vla-intel-fortran-vla-strings.patch
index b24229c..ccee68b 100644
--- a/gdb-vla-intel-fortran-vla-strings.patch
+++ b/gdb-vla-intel-fortran-vla-strings.patch
@@ -33,7 +33,7 @@ git diff --stat -p gdb/master...gdb/users/bheckel/fortran-vla-strings
 diff --git a/gdb/NEWS b/gdb/NEWS
 --- a/gdb/NEWS
 +++ b/gdb/NEWS
-@@ -689,6 +689,8 @@ SH-5/SH64 running OpenBSD 	SH-5/SH64 support in sh*-*-openbsd*
+@@ -701,6 +701,8 @@ SH-5/SH64 running OpenBSD 	SH-5/SH64 support in sh*-*-openbsd*
  
  *** Changes in GDB 8.1
  
@@ -77,7 +77,7 @@ diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
 diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
 --- a/gdb/dwarf2read.c
 +++ b/gdb/dwarf2read.c
-@@ -1818,7 +1818,10 @@ static void read_signatured_type (struct signatured_type *);
+@@ -1805,7 +1805,10 @@ static void read_signatured_type (struct signatured_type *);
  
  static int attr_to_dynamic_prop (const struct attribute *attr,
  				 struct die_info *die, struct dwarf2_cu *cu,
@@ -89,7 +89,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
  
  /* memory allocation interface */
  
-@@ -13735,7 +13738,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
+@@ -13747,7 +13750,7 @@ read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
        newobj->static_link
  	= XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
        attr_to_dynamic_prop (attr, die, cu, newobj->static_link,
@@ -98,7 +98,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
      }
  
    cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
-@@ -16497,7 +16500,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -16509,7 +16512,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
        byte_stride_prop
  	= (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
        stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop,
@@ -107,7 +107,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
        if (!stride_ok)
  	{
  	  complaint (_("unable to read array DW_AT_byte_stride "
-@@ -17255,29 +17258,90 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17267,29 +17270,90 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
    struct gdbarch *gdbarch = get_objfile_arch (objfile);
    struct type *type, *range_type, *index_type, *char_type;
    struct attribute *attr;
@@ -209,7 +209,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
    char_type = language_string_char_type (cu->language_defn, gdbarch);
    type = create_string_type (NULL, char_type, range_type);
  
-@@ -17710,7 +17774,8 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17722,7 +17786,8 @@ read_base_type (struct die_info *die, struct dwarf2_cu *cu)
  static int
  attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
  		      struct dwarf2_cu *cu, struct dynamic_prop *prop,
@@ -219,7 +219,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
  {
    struct dwarf2_property_baton *baton;
    struct obstack *obstack
-@@ -17729,9 +17794,30 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
+@@ -17741,9 +17806,30 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
        baton->locexpr.size = DW_BLOCK (attr)->size;
        baton->locexpr.data = DW_BLOCK (attr)->data;
        baton->locexpr.is_reference = false;
@@ -251,7 +251,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
      }
    else if (attr_form_is_ref (attr))
      {
-@@ -17764,9 +17850,29 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
+@@ -17776,9 +17862,29 @@ attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
  		baton = XOBNEW (obstack, struct dwarf2_property_baton);
  		baton->property_type = die_type (target_die, target_cu);
  		baton->locexpr.per_cu = cu->per_cu;
@@ -283,7 +283,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
  		prop->data.baton = baton;
  		prop->kind = PROP_LOCEXPR;
  		gdb_assert (prop->data.baton != NULL);
-@@ -17936,7 +18042,8 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17948,7 +18054,8 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
  
    attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
    if (attr)
@@ -293,7 +293,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
          complaint (_("Missing DW_AT_byte_stride "
  		     "- DIE at 0x%s [in module %s]"),
  		   sect_offset_str (die->sect_off),
-@@ -17944,7 +18051,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17956,7 +18063,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
  
    attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
    if (attr)
@@ -302,7 +302,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
    else if (!low_default_is_valid)
      complaint (_("Missing DW_AT_lower_bound "
  				      "- DIE at %s [in module %s]"),
-@@ -17953,10 +18060,10 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
+@@ -17965,10 +18072,10 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
  
    struct attribute *attr_ub, *attr_count;
    attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
@@ -315,7 +315,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
  	{
  	  /* If bounds are constant do the final calculation here.  */
  	  if (low.kind == PROP_CONST && high.kind == PROP_CONST)
-@@ -25646,7 +25753,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -25679,7 +25786,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
      {
        struct type *prop_type
  	= dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
@@ -324,7 +324,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
          add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
      }
    else if (attr != NULL)
-@@ -25662,7 +25769,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -25695,7 +25802,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
      {
        struct type *prop_type
  	= dwarf2_per_cu_addr_sized_int_type (cu->per_cu, false);
@@ -333,7 +333,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
          add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
      }
    else if (attr != NULL)
-@@ -25675,7 +25782,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
+@@ -25708,7 +25815,7 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
    /* Read DW_AT_data_location and set in type.  */
    attr = dwarf2_attr (die, DW_AT_data_location, cu);
    if (attr_to_dynamic_prop (attr, die, cu, &prop,
@@ -345,7 +345,7 @@ diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
 diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
 --- a/gdb/f-typeprint.c
 +++ b/gdb/f-typeprint.c
-@@ -197,15 +197,14 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
+@@ -198,15 +198,14 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
  	print_rank_only = true;
        else if ((TYPE_ASSOCIATED_PROP (type)
  		&& PROP_CONST != TYPE_DYN_PROP_KIND (TYPE_ASSOCIATED_PROP (type)))
@@ -369,7 +369,7 @@ diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
  
        if (TYPE_CODE (TYPE_TARGET_TYPE (type)) == TYPE_CODE_ARRAY)
  	f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0,
-@@ -217,8 +216,9 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
+@@ -218,8 +217,9 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
        else
  	{
  	  LONGEST lower_bound = f77_get_lowerbound (type);
@@ -380,7 +380,7 @@ diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
  
  	  /* Make sure that, if we have an assumed size array, we
  	       print out a warning and print the upperbound as '*'.  */
-@@ -229,7 +229,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
+@@ -230,7 +230,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
  	    {
  	      LONGEST upper_bound = f77_get_upperbound (type);
  
@@ -389,7 +389,7 @@ diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
  	    }
  	}
  
-@@ -249,7 +249,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
+@@ -250,7 +250,7 @@ f_type_print_varspec_suffix (struct type *type, struct ui_file *stream,
      case TYPE_CODE_REF:
        f_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 1, 0,
  				   arrayprint_recurse_level, false);
@@ -401,7 +401,7 @@ diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
 diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
 --- a/gdb/gdbtypes.c
 +++ b/gdb/gdbtypes.c
-@@ -1906,7 +1906,8 @@ is_dynamic_type_internal (struct type *type, int top_level)
+@@ -1905,7 +1905,8 @@ is_dynamic_type_internal (struct type *type, int top_level)
    type = check_typedef (type);
  
    /* We only want to recognize references at the outermost level.  */
@@ -411,7 +411,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
      type = check_typedef (TYPE_TARGET_TYPE (type));
  
    /* Types that have a dynamic TYPE_DATA_LOCATION are considered
-@@ -1940,6 +1941,7 @@ is_dynamic_type_internal (struct type *type, int top_level)
+@@ -1939,6 +1940,7 @@ is_dynamic_type_internal (struct type *type, int top_level)
        }
  
      case TYPE_CODE_ARRAY:
@@ -419,7 +419,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
        {
  	gdb_assert (TYPE_NFIELDS (type) == 1);
  
-@@ -2059,7 +2061,8 @@ resolve_dynamic_array (struct type *type,
+@@ -2058,7 +2060,8 @@ resolve_dynamic_array (struct type *type,
    struct dynamic_prop *prop;
    unsigned int bit_stride = 0;
  
@@ -429,7 +429,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
  
    type = copy_type (type);
  
-@@ -2084,11 +2087,15 @@ resolve_dynamic_array (struct type *type,
+@@ -2083,11 +2086,15 @@ resolve_dynamic_array (struct type *type,
  
    ary_dim = check_typedef (TYPE_TARGET_TYPE (elt_type));
  
@@ -446,7 +446,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
    prop = get_dyn_prop (DYN_PROP_BYTE_STRIDE, type);
    if (prop != NULL)
      {
-@@ -2240,6 +2247,28 @@ resolve_dynamic_struct (struct type *type,
+@@ -2239,6 +2246,28 @@ resolve_dynamic_struct (struct type *type,
    return resolved_type;
  }
  
@@ -475,7 +475,7 @@ diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
  /* Worker for resolved_dynamic_type.  */
  
  static struct type *
-@@ -2288,7 +2317,12 @@ resolve_dynamic_type_internal (struct type *type,
+@@ -2287,7 +2316,12 @@ resolve_dynamic_type_internal (struct type *type,
  	    break;
  	  }
  
@@ -1019,7 +1019,7 @@ diff --git a/gdb/testsuite/gdb.fortran/vla-value.exp b/gdb/testsuite/gdb.fortran
 diff --git a/gdb/typeprint.c b/gdb/typeprint.c
 --- a/gdb/typeprint.c
 +++ b/gdb/typeprint.c
-@@ -572,6 +572,25 @@ whatis_exp (const char *exp, int show)
+@@ -574,6 +574,25 @@ whatis_exp (const char *exp, int show)
        printf_filtered (" */\n");    
      }
  
@@ -1081,7 +1081,7 @@ diff --git a/gdb/valops.c b/gdb/valops.c
 diff --git a/gdb/valprint.c b/gdb/valprint.c
 --- a/gdb/valprint.c
 +++ b/gdb/valprint.c
-@@ -1144,12 +1144,6 @@ value_check_printable (struct value *val, struct ui_file *stream,
+@@ -1149,12 +1149,6 @@ value_check_printable (struct value *val, struct ui_file *stream,
        return 0;
      }
  
diff --git a/gdb.spec b/gdb.spec
index ccc49ca..0bb31af 100644
--- a/gdb.spec
+++ b/gdb.spec
@@ -27,15 +27,15 @@
 Name: %{?scl_prefix}gdb
 
 # Freeze it when GDB gets branched
-%global snapsrc    20190924
+%global snapsrc    20191018
 # See timestamp of source gnulib installed into gdb/gnulib/ .
 %global snapgnulib 20161115
 %global tarname gdb-%{version}
-Version: 8.3.50.%{snapsrc}
+Version: 9.0.50.%{snapsrc}
 
 # The release always contains a leading reserved number, start it at 1.
 # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
-Release: 28%{?dist}
+Release: 1%{?dist}
 
 License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL
 # Do not provide URL for snapshots as the file lasts there only for 2 days.
@@ -101,6 +101,9 @@ Conflicts: elfutils < 0.149
 # https://fedorahosted.org/fpc/ticket/43 https://fedorahosted.org/fpc/ticket/109
 Provides: bundled(libiberty) = %{snapsrc}
 Provides: bundled(gnulib) = %{snapgnulib}
+# The libraries in the top-level directory (libbfd, libopcodes,
+# libctf) are covered by the "bundled(binutils)" below.  See ticket
+# #109, as mentioned above.
 Provides: bundled(binutils) = %{snapsrc}
 # https://fedorahosted.org/fpc/ticket/130
 Provides: bundled(md5-gcc) = %{snapsrc}
@@ -988,7 +991,7 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/configure*
 # Just exclude the header files in the top directory, and don't exclude
 # the gdb/ directory, as it contains jit-reader.h.
 rm -rf $RPM_BUILD_ROOT%{_includedir}/*.h
-rm -rf $RPM_BUILD_ROOT/%{_libdir}/lib{bfd*,opcodes*,iberty*}
+rm -rf $RPM_BUILD_ROOT/%{_libdir}/lib{bfd*,opcodes*,iberty*,ctf*}
 
 # pstack obsoletion
 
@@ -1143,6 +1146,11 @@ fi
 %endif
 
 %changelog
+* Fri Oct 18 2019 Sergio Durigan Junior <sergiodj@redhat.com> - 9.0.50.20191018-1
+- Rebase to FSF GDB 9.0.50.20191018 (9.1pre).
+- Expand comment on "bundled(binutils)".
+- Remove libctf's files from RPM_BUILD_ROOT.
+
 * Wed Oct  9 2019 Jerry James <loganjerry@gmail.com> - 8.3.50.20190924-28
 - Rebuild for mpfr 4
 
diff --git a/sources b/sources
index 0337a63..ffc1cfd 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
 SHA512 (gdb-libstdc++-v3-python-8.1.1-20180626.tar.xz) = a8b1c54dd348cfeb37da73f968742896be3dd13a4215f8d8519870c2abea915f5176c3fa6989ddd10f20020a16f0fab20cbae68ee8d58a82234d8778023520f8
 SHA512 (v2.0.1.tar.gz) = e38e93908c3fbf1f2384cfca381eaf4bf667033de678041bd440adac8bbce4757b77304868896256ed72c202ee22ba1646aada90125029f14f5bffaf828a7df4
-SHA512 (gdb-8.3.50.20190924.tar.xz) = 0db49142d9ce93b3205596f97344e1b488ef74d0640c311fea929aa702074a221fd2c2558d8e2df917fb0398af5d670b1d200c30246b0535a6ae64a2c8ae0eb6
+SHA512 (gdb-9.0.50.20191018.tar.xz) = a0fdf66d42f766c468b6a084c0e716a39fc28afd60227e95e15b0a1aa19fe132d17f7ec2ba6fb9ad296e3e140561835896ccdac48507c31fae498341bc397e93