From: Alan Modra Date: Thu, 14 Sep 2017 00:49:31 +0000 (+0930) Subject: PR22127, as segfaults assembling invalid .reloc X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2578f2f307f7e80caa0bce32c7fa880d579e736b;p=binutils-gdb.git PR22127, as segfaults assembling invalid .reloc "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/ChangeLog b/gas/ChangeLog index 1bbd8b8e7fe..86cf17e7eb8 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2017-09-14 Alan Modra + + PR 22127 + * write.c (resolve_reloc_expr_symbols): Don't segfault when + sec has been set to NULL. + 2017-09-09 H.J. Lu * config/tc-i386.c (NOTRACK_PREFIX): Removed. diff --git a/gas/write.c b/gas/write.c index 4f6547dfb85..df88905013b 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