* som.c (bfd_section_from_som_symbol): Only to do the value
authorJeff Law <law@redhat.com>
Mon, 21 Mar 1994 02:08:37 +0000 (02:08 +0000)
committerJeff Law <law@redhat.com>
Mon, 21 Mar 1994 02:08:37 +0000 (02:08 +0000)
        comparison for function symbols within executables.

bfd/ChangeLog
bfd/som.c

index b8db4c440baecbf84f4a1daf3e8d7d3146051b15..bb8e8fea8bf201d5abff43eea90c39f4cd01e262 100644 (file)
@@ -1,5 +1,8 @@
 Sun Mar 20 09:24:36 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)
 
+       * som.c (bfd_section_from_som_symbol): Only to do the value
+       comparison for function symbols within executables.
+
        * som.c (bfd_section_from_som_symbol): Renamed from
        som_section_from_subspace_index.  Pass in a native SOM symbol.
        For executables, iterate through the sections to find out
index 495db709392b68cb3bbbe7a7fc425723e478fa01..a75b26dfc2a7cbf39eff34bd5752b57cd9226174 100644 (file)
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -3263,7 +3263,7 @@ som_write_headers (abfd)
          
          /* Skip any section which does not correspond to a space or
             subspace, or which SEC_ALLOC set (and therefore handled
-            in the loadable spaces/subspaces code above.  */
+            in the loadable spaces/subspaces code above).  */
 
          if (!som_is_subspace (subsection)
              || !som_is_container (section, subsection)
@@ -3622,9 +3622,14 @@ bfd_section_from_som_symbol (abfd, symbol)
 {
   asection *section;
 
-  /* The meaning of the symbol_info field changes for executables.  So
-     only use the quick symbol_info mapping for incomplete objects.  */
-  if ((abfd->flags & EXEC_P) == 0)
+  /* The meaning of the symbol_info field changes for functions
+     within executables.  So only use the quick symbol_info mapping for
+     incomplete objects and non-function symbols in executables.  */
+  if ((abfd->flags & EXEC_P) == 0
+      || (symbol->symbol_type != ST_ENTRY
+         && symbol->symbol_type != ST_PRI_PROG
+         && symbol->symbol_type != ST_SEC_PROG
+         && symbol->symbol_type != ST_MILLICODE))
     {
       unsigned int index = symbol->symbol_info;
       for (section = abfd->sections; section != NULL; section = section->next)