* subsegs.c (subseg_text_p): Rewrite non BFD_ASSEMBLER case to use
authorIan Lance Taylor <ian@airs.com>
Tue, 22 Jun 1999 19:04:42 +0000 (19:04 +0000)
committerIan Lance Taylor <ian@airs.com>
Tue, 22 Jun 1999 19:04:42 +0000 (19:04 +0000)
a list of names, to try obj_segment_name, and to try abbreviated
names when using COFF without long section names.

gas/ChangeLog
gas/subsegs.c

index b4cf7df..46853d5 100644 (file)
@@ -1,5 +1,9 @@
 1999-06-22  Ian Lance Taylor  <ian@zembu.com>
 
+       * subsegs.c (subseg_text_p): Rewrite non BFD_ASSEMBLER case to use
+       a list of names, to try obj_segment_name, and to try abbreviated
+       names when using COFF without long section names.
+
        * config/tc-alpha.c: More use of symbol accessor functions.
        * config/tc-arc.c: Likewise.
        * config/tc-d30v.c: Likewise.
index a8e4b4b..f0efed1 100644 (file)
@@ -566,17 +566,47 @@ section_symbol (sec)
 
 /* Return whether the specified segment is thought to hold text.  */
 
+#ifndef BFD_ASSEMBLER
+const char * const nontext_section_names[] =
+{
+  ".eh_frame",
+  ".gcc_except_table",
+#ifdef OBJ_COFF
+#ifndef COFF_LONG_SECTION_NAMES
+  ".eh_fram",
+  ".gcc_exc",
+#endif
+#endif
+  NULL
+};
+#endif /* ! BFD_ASSEMBLER */
+
 int
 subseg_text_p (sec)
      segT sec;
 {
 #ifdef BFD_ASSEMBLER
   return (bfd_get_section_flags (stdoutput, sec) & SEC_CODE) != 0;
-#else
-  return (sec != data_section
-         && sec != bss_section
-         && strcmp (segment_name (sec), ".eh_frame") != 0);
+#else /* ! BFD_ASSEMBLER */
+  const char * const *p;
+
+  if (sec == data_section || sec == bss_section)
+    return false;
+
+  for (p = nontext_section_names; *p != NULL; ++p)
+    {
+      if (strcmp (segment_name (sec), *p) == 0)
+       return false;
+
+#ifdef obj_segment_name
+      if (strcmp (obj_segment_name (sec), *p) == 0)
+       return false;
 #endif
+    }
+
+  return true;
+
+#endif /* ! BFD_ASSEMBLER */
 }
 
 void