This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb/binutils-2_27-branch] Fix seg fault in linker when performing garbage collection on COFF based targets.


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=492a7a54d688b511b0ed47c1f0ab054334a4b218

commit 492a7a54d688b511b0ed47c1f0ab054334a4b218
Author: Nick Clifton <nickc@redhat.com>
Date:   Wed Jul 27 13:18:13 2016 +0100

    Fix seg fault in linker when performing garbage collection on COFF based targets.
    
    	PR ld/20401
    bfd	* coffgen.c (fini_reloc_cookie_rels): Check for the extistence
    	of the coff_section_data before using it.

Diff:
---
 bfd/ChangeLog | 10 ++++++++++
 bfd/coffgen.c |  8 +++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 992e54e..1e08f3d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,13 @@
+2016-07-27  Nick Clifton  <nickc@redhat.com>
+
+	* Import this patch from the mainline:
+	2016-07-27  Ozkan Sezer  <sezeroz@gmail.com>
+	    Nick Clifton  <nickc@redhat.com>
+
+	PR ld/20401
+	* coffgen.c (fini_reloc_cookie_rels): Check for the extistence
+	of the coff_section_data before using it.
+
 2016-07-01  Tristan Gingold  <gingold@adacore.com>
 
 	* version.m4: Bump version to 2.26.90
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index 56864ca..75512fb 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -2691,7 +2691,13 @@ static void
 fini_reloc_cookie_rels (struct coff_reloc_cookie *cookie,
 			asection *sec)
 {
-  if (cookie->rels && coff_section_data (NULL, sec)->relocs != cookie->rels)
+  if (cookie->rels
+      /* PR 20401.  The relocs may not have been cached, so check first.
+	 If the relocs were loaded by init_reloc_cookie_rels() then this
+	 will be the case.  FIXME: Would performance be improved if the
+	 relocs *were* cached ?  */
+      && coff_section_data (NULL, sec)
+      && coff_section_data (NULL, sec)->relocs != cookie->rels)
     free (cookie->rels);
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]