asan: mips_gprel_reloc segfault
authorAlan Modra <amodra@gmail.com>
Fri, 3 Jun 2022 03:02:00 +0000 (12:32 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 3 Jun 2022 03:02:00 +0000 (12:32 +0930)
Not just the undefined section has a NULL owner, the absolute section
has too.  Which means we can't find output_bfd for __gp.  Also, may as
well test directly for output_bfd == NULL.

* coff-mips.c (mips_gprel_reloc): Don't segfault on any of
bfd_is_const_section sections.

bfd/coff-mips.c

index 9614d338abe50c6842c9fe773b4f2a7f4448026d..d4dc1bd3c19b386690a83cf1c3b0d650285ca61e 100644 (file)
@@ -593,11 +593,10 @@ mips_gprel_reloc (bfd *abfd ATTRIBUTE_UNUSED,
     {
       relocatable = false;
       output_bfd = symbol->section->output_section->owner;
+      if (output_bfd == NULL)
+       return bfd_reloc_undefined;
     }
 
-  if (bfd_is_und_section (symbol->section) && ! relocatable)
-    return bfd_reloc_undefined;
-
   /* We have to figure out the gp value, so that we can adjust the
      symbol value correctly.  We look up the symbol _gp in the output
      BFD.  If we can't find it, we're stuck.  We cache it in the ECOFF