]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
ecoff foreign syms
authorAlan Modra <amodra@gmail.com>
Fri, 21 Nov 2025 22:37:01 +0000 (09:07 +1030)
committerAlan Modra <amodra@gmail.com>
Fri, 21 Nov 2025 22:37:01 +0000 (09:07 +1030)
This fixes the alpha-linux-gnuecoff failures exposed by commit
35e1c33162bf.

* ecoff.c (ecoff_get_extr): Choose better symbol class for
non-ecoff symbols.

bfd/ecoff.c

index d22a9145f72af0b251d809bbd410144431d71fe2..37cfa4a84a4b9cdbc1ba8fbe690db8945bd24b4f 100644 (file)
@@ -2339,7 +2339,18 @@ ecoff_get_extr (asymbol *sym, EXTR *esym)
       esym->ifd = ifdNil;
       /* FIXME: we can do better than this for st and sc.  */
       esym->asym.st = stGlobal;
-      esym->asym.sc = scAbs;
+      if (bfd_is_und_section (sym->section))
+       esym->asym.sc = scUndefined;
+      else if (bfd_is_com_section (sym->section))
+       esym->asym.sc = scCommon;
+      else if (bfd_is_abs_section (sym->section))
+       esym->asym.sc = scAbs;
+      else if ((sym->section->flags & SEC_HAS_CONTENTS) == 0)
+       esym->asym.sc = scBss;
+      else if ((sym->section->flags & SEC_CODE) != 0)
+       esym->asym.sc = scText;
+      else
+       esym->asym.sc = scData;
       esym->asym.reserved = 0;
       esym->asym.index = indexNil;
       return true;