summaryrefslogtreecommitdiff
path: root/gas/subsegs.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1999-06-22 19:04:42 +0000
committerIan Lance Taylor <ian@airs.com>1999-06-22 19:04:42 +0000
commitc9fa744fae934cf5db7cd3d2770439739e63cd60 (patch)
tree85b75f8374ef405c4735dfa94a370b9521161f42 /gas/subsegs.c
parent23bbb0e88aae7f300919716e033327935f4b46a6 (diff)
downloadbinutils-redhat-c9fa744fae934cf5db7cd3d2770439739e63cd60.tar.gz
* 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.
Diffstat (limited to 'gas/subsegs.c')
-rw-r--r--gas/subsegs.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/gas/subsegs.c b/gas/subsegs.c
index a8e4b4b5a0..f0efed1e64 100644
--- a/gas/subsegs.c
+++ b/gas/subsegs.c
@@ -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