Prevent segfault in GDB when searching for architecture matches.
authorBhushan Attarde <bhushan.attarde@imgtec.com>
Wed, 14 Sep 2016 12:49:16 +0000 (13:49 +0100)
committerNick Clifton <nickc@redhat.com>
Wed, 14 Sep 2016 12:49:16 +0000 (13:49 +0100)
* format.c (struct bfd_preserve): New "build_id" field.
(bfd_preserve_save): Save "build_id".
(bfd_preserve_restore): Restore "build_id".

bfd/ChangeLog
bfd/format.c

index 6863e3afef7a2f8ce057b60ee57856ec787807e5..7414c39f3768328e438b0803326199d3c0d3f351 100644 (file)
@@ -1,3 +1,9 @@
+2016-09-14  Bhushan Attarde  <bhushan.attarde@imgtec.com>
+
+       * format.c (struct bfd_preserve): New "build_id" field.
+       (bfd_preserve_save): Save "build_id".
+       (bfd_preserve_restore): Restore "build_id".
+
 2016-09-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/20550
index f34b1d484276a549add5b9a03d863cf054a85d07..15237a3b1761108dbe284188622a4c05bad0f864 100644 (file)
@@ -104,6 +104,7 @@ struct bfd_preserve
   struct bfd_section *section_last;
   unsigned int section_count;
   struct bfd_hash_table section_htab;
+  const struct bfd_build_id *build_id;
 };
 
 /* When testing an object for compatibility with a particular target
@@ -126,6 +127,7 @@ bfd_preserve_save (bfd *abfd, struct bfd_preserve *preserve)
   preserve->section_count = abfd->section_count;
   preserve->section_htab = abfd->section_htab;
   preserve->marker = bfd_alloc (abfd, 1);
+  preserve->build_id = abfd->build_id;
   if (preserve->marker == NULL)
     return FALSE;
 
@@ -158,6 +160,7 @@ bfd_preserve_restore (bfd *abfd, struct bfd_preserve *preserve)
   abfd->sections = preserve->sections;
   abfd->section_last = preserve->section_last;
   abfd->section_count = preserve->section_count;
+  abfd->build_id = preserve->build_id;
 
   /* bfd_release frees all memory more recently bfd_alloc'd than
      its arg, as well as its arg.  */