1999-09-11 Donn Terry <donn@interix.com>
authorIan Lance Taylor <ian@airs.com>
Sun, 12 Sep 1999 03:07:49 +0000 (03:07 +0000)
committerIan Lance Taylor <ian@airs.com>
Sun, 12 Sep 1999 03:07:49 +0000 (03:07 +0000)
* config/obj-coff.c (obj_coff_ident): Add BFD_ASSEMBLER version.
(obj_pseudo_table): Always handle ".ident" with obj-coff_ident.

gas/ChangeLog
gas/config/obj-coff.c

index a93c1dfb415d4aa8a680be2a1dca590d97aa5938..075e8c4b764cb2c09bf181f02401b362f1ccc004 100644 (file)
@@ -5,6 +5,9 @@
 
 1999-09-11  Donn Terry  <donn@interix.com>
 
+       * config/obj-coff.c (obj_coff_ident): Add BFD_ASSEMBLER version.
+       (obj_pseudo_table): Always handle ".ident" with obj-coff_ident.
+
        * config/obj-coff.c (coff_frob_symbol): Prohibit weak common
        symbols.
 
index 86e07667479003d573688a5309e3ff7fbff635ff..aa1ff290ff103dd0b9931d9ed9c3f9bde7c04044 100644 (file)
@@ -42,6 +42,7 @@ static void obj_coff_scl PARAMS ((int));
 static void obj_coff_tag PARAMS ((int));
 static void obj_coff_val PARAMS ((int));
 static void obj_coff_type PARAMS ((int));
+static void obj_coff_ident PARAMS ((int));
 #ifdef BFD_ASSEMBLER
 static void obj_coff_loc PARAMS((int));
 #endif
@@ -552,6 +553,35 @@ obj_coff_loc (ignore)
   add_lineno (frag_now, frag_now_fix (), lineno);
 }
 
+/* Handle the .ident pseudo-op.  */
+
+static void
+obj_coff_ident (ignore)
+     int ignore ATTRIBUTE_UNUSED;
+{
+  segT current_seg = now_seg;
+  subsegT current_subseg = now_subseg;
+
+#ifdef TE_PE
+  {
+    segT sec;
+
+    /* We could put it in .comment, but that creates an extra section
+       that shouldn't be loaded into memory, which requires linker
+       changes...  For now, until proven otherwise, use .rdata.  */
+    sec = subseg_new (".rdata$zzz", 0);
+    bfd_set_section_flags (stdoutput, sec,
+                          ((SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_DATA)
+                           & bfd_applicable_section_flags (stdoutput)));
+  }
+#else
+  subseg_new (".comment", 0);
+#endif
+
+  stringer (1);
+  subseg_set (current_seg, current_subseg);
+}
+
 /*
  *                     def()
  *
@@ -1626,7 +1656,6 @@ static void adjust_stab_section PARAMS ((bfd *abfd, segT seg));
 static void obj_coff_lcomm PARAMS ((int));
 static void obj_coff_text PARAMS ((int));
 static void obj_coff_data PARAMS ((int));
-static void obj_coff_ident PARAMS ((int));
 void obj_coff_section PARAMS ((int));
 
 /* When not using BFD_ASSEMBLER, we permit up to 40 sections.
@@ -4521,15 +4550,14 @@ const pseudo_typeS obj_pseudo_table[] =
      earlier versions of gas.  */
   {"bss", obj_coff_bss, 0},
   {"weak", obj_coff_weak, 0},
+  {"ident", obj_coff_ident, 0},
 #ifndef BFD_ASSEMBLER
   {"use", obj_coff_section, 0},
   {"text", obj_coff_text, 0},
   {"data", obj_coff_data, 0},
   {"lcomm", obj_coff_lcomm, 0},
-  {"ident", obj_coff_ident, 0},
 #else
   {"optim", s_ignore, 0},      /* For sun386i cc (?) */
-  {"ident", s_ignore, 0},      /* we don't yet handle this. */
 #endif
   {"version", s_ignore, 0},
   {"ABORT", s_abort, 0},