From 249d1bad51b568c74ea37e8b3e76c179eb53a733 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Sat, 13 May 2023 15:44:09 +0930 Subject: PR28955 mips gas segfault Testing for NULL in pic_need_relax fixes the other call to this function in md_estimate_size_before_relax. PR 28955 * config/tc-mips.c (mips_frob_file): Move NULL sym test to.. (pic_need_relax): ..here. --- gas/config/tc-mips.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 8a970ceada2..55a116ffd90 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -15449,8 +15449,7 @@ mips_frob_file (void) there isn't supposed to be a matching LO. Ignore %gots against constants; we'll report an error for those later. */ if (got16_reloc_p (l->fixp->fx_r_type) - && !(l->fixp->fx_addsy - && pic_need_relax (l->fixp->fx_addsy))) + && !pic_need_relax (l->fixp->fx_addsy)) continue; /* Check quickly whether the next fixup happens to be a matching %lo. */ @@ -17705,6 +17704,9 @@ pic_need_relax (symbolS *sym) { asection *symsec; + if (!sym) + return false; + /* Handle the case of a symbol equated to another symbol. */ while (symbol_equated_reloc_p (sym)) { -- cgit v1.2.1