Move signatured_type::type to unshareable object
[deliverable/binutils-gdb.git] / gdb / minidebug.c
index a56a822628e3e297262794d4be9c030e3e9c653c..dbf14c79fb958f4357f06bdef617a2652c74184b 100644 (file)
 
 #ifdef HAVE_LIBLZMA
 
+/* We stash a reference to the .gnu_debugdata BFD on the enclosing
+   BFD.  */
+static const bfd_key<gdb_bfd_ref_ptr> gnu_debug_key;
+
 #include <lzma.h>
 
 /* Allocator function for LZMA.  */
@@ -269,6 +273,10 @@ find_separate_debug_file_in_section (struct objfile *objfile)
     return NULL;
 
 #ifdef HAVE_LIBLZMA
+  gdb_bfd_ref_ptr *shared = gnu_debug_key.get (objfile->obfd);
+  if (shared != nullptr)
+    return *shared;
+
   std::string filename = string_printf (_(".gnu_debugdata for %s"),
                                        objfile_name (objfile));
 
@@ -282,6 +290,9 @@ find_separate_debug_file_in_section (struct objfile *objfile)
       warning (_("Cannot parse .gnu_debugdata section; not a BFD object"));
       return NULL;
     }
+
+  gnu_debug_key.emplace (objfile->obfd, abfd);
+
 #else
   warning (_("Cannot parse .gnu_debugdata section; LZMA support was "
             "disabled at compile time"));
This page took 0.025108 seconds and 4 git commands to generate.