PR22127, as segfaults assembling invalid .reloc

Alan Modra amodra@gmail.com
Thu Sep 14 04:45:00 GMT 2017


"sec" gets set to NULL on errors in the offset expression.  This patch
disables part of the reloc expression processing that needs "sec"
valid.  I didn't disable the entire reloc expression handling so that
errors in the reloc expression are reported even when the offset
expression has an error.

	PR 22127
	* write.c (resolve_reloc_expr_symbols): Don't segfault when
	sec has been set to NULL.

diff --git a/gas/write.c b/gas/write.c
index 4f6547d..df88905 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -724,7 +724,7 @@ resolve_reloc_expr_symbols (void)
 	      as_bad_where (r->file, r->line, _("invalid reloc expression"));
 	      sec = NULL;
 	    }
-	  else if (sym != NULL)
+	  else if (sym != NULL && sec != NULL)
 	    {
 	      /* Convert relocs against local symbols to refer to the
 	         corresponding section symbol plus offset instead.  Keep

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list