PR28955 mips gas segfault
authorAlan Modra <amodra@gmail.com>
Sat, 13 May 2023 06:14:09 +0000 (15:44 +0930)
committerAlan Modra <amodra@gmail.com>
Sat, 13 May 2023 11:17:31 +0000 (20:47 +0930)
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

index 8a970ceada254ad9b9faf82d5d6ff93d5b44b3ac..55a116ffd906d327c19afeef37d19614ccf1462c 100644 (file)
@@ -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))
     {