OSDN Git Service

* target.h (gcc_target): Add asm_out.named_section,
[pf3gnuchains/gcc-fork.git] / gcc / config / i386 / cygwin.h
index 6e76f1c..9ea367f 100644 (file)
@@ -407,69 +407,16 @@ do {                                                      \
    symbols must be explicitly imported from shared libraries (DLLs).  */
 #define MULTIPLE_SYMBOL_SPACES
 
-#define UNIQUE_SECTION_P(DECL) DECL_ONE_ONLY (DECL)
 extern void i386_pe_unique_section PARAMS ((TREE, int));
 #define UNIQUE_SECTION(DECL,RELOC) i386_pe_unique_section (DECL, RELOC)
 
 #define SUPPORTS_ONE_ONLY 1
 
-/* A C statement to output something to the assembler file to switch to section
-   NAME for object DECL which is either a FUNCTION_DECL, a VAR_DECL or
-   NULL_TREE.  Some target formats do not support arbitrary sections.  Do not
-   define this macro in such cases.  */
-#undef ASM_OUTPUT_SECTION_NAME
-#define ASM_OUTPUT_SECTION_NAME(STREAM, DECL, NAME, RELOC)             \
-do {                                                                   \
-  static struct section_info                                           \
-    {                                                                  \
-      struct section_info *next;                                       \
-      char *name;                                                      \
-      enum sect_enum {SECT_RW, SECT_RO, SECT_EXEC} type;               \
-    } *sections;                                                       \
-  struct section_info *s;                                              \
-  const char *mode;                                                    \
-  enum sect_enum type;                                                 \
-                                                                       \
-  for (s = sections; s; s = s->next)                                   \
-    if (!strcmp (NAME, s->name))                                       \
-      break;                                                           \
-                                                                       \
-  if (DECL && TREE_CODE (DECL) == FUNCTION_DECL)                       \
-    type = SECT_EXEC, mode = "x";                                      \
-  else if (DECL && DECL_READONLY_SECTION (DECL, RELOC))                        \
-    type = SECT_RO, mode = "";                                         \
-  else                                                                 \
-    {                                                                  \
-      type = SECT_RW;                                                  \
-      if (DECL && TREE_CODE (DECL) == VAR_DECL                         \
-         && lookup_attribute ("shared", DECL_MACHINE_ATTRIBUTES (DECL))) \
-       mode = "ws";                                                    \
-      else                                                             \
-       mode = "w";                                                     \
-    }                                                                  \
-                                                                       \
-  if (s == 0)                                                          \
-    {                                                                  \
-      s = (struct section_info *) xmalloc (sizeof (struct section_info)); \
-      s->name = xmalloc ((strlen (NAME) + 1) * sizeof (*NAME));                \
-      strcpy (s->name, NAME);                                          \
-      s->type = type;                                                  \
-      s->next = sections;                                              \
-      sections = s;                                                    \
-      fprintf (STREAM, ".section\t%s,\"%s\"\n", NAME, mode);           \
-      /* Functions may have been compiled at various levels of         \
-        optimization so we can't use `same_size' here.  Instead,       \
-        have the linker pick one.  */                                  \
-      if ((DECL) && DECL_ONE_ONLY (DECL))                              \
-       fprintf (STREAM, "\t.linkonce %s\n",                            \
-                TREE_CODE (DECL) == FUNCTION_DECL                      \
-                ? "discard" : "same_size");                            \
-    }                                                                  \
-  else                                                                 \
-    {                                                                  \
-      fprintf (STREAM, ".section\t%s,\"%s\"\n", NAME, mode);           \
-    }                                                                  \
-} while (0)
+/* Switch into a generic section.  */
+#define TARGET_ASM_NAMED_SECTION  i386_pe_asm_named_section
+
+/* Select attributes for named sections.  */
+#define TARGET_SECTION_TYPE_FLAGS  i386_pe_section_type_flags
 
 /* Write the extra assembler code needed to declare a function
    properly.  If we are generating SDB debugging information, this