OSDN Git Service

Mumit Khan <khan@xraylith.wisc.edu>
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Aug 1999 22:58:42 +0000 (22:58 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Aug 1999 22:58:42 +0000 (22:58 +0000)
        * i386/winnt.c (export_list): New type.
        (exports_head): Rename to
        (export_head):  this.
        (i386_pe_record_exported_symbol): Add is_data flag.
        (i386_pe_asm_file_end): Emit directive for exported variables.
        * i386/cygwin.h (i386_pe_record_exported_symbol): Update
        prototype.
        * i386/cygwin.h (ASM_OUTPUT_COMMON): Specify symbol type.
        (ASM_DECLARE_OBJECT_NAME): Likewise.
        (ASM_DECLARE_FUNCTION_NAME): Likewise.
        * i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28944 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/cygwin.h
gcc/config/i386/uwin.h
gcc/config/i386/winnt.c

index 283fce6..29cd896 100644 (file)
@@ -1,3 +1,17 @@
+Sat Aug 28 15:58:16 1999  Mumit Khan  <khan@xraylith.wisc.edu>
+
+       * i386/winnt.c (export_list): New type.
+       (exports_head): Rename to
+       (export_head):  this.
+       (i386_pe_record_exported_symbol): Add is_data flag.
+       (i386_pe_asm_file_end): Emit directive for exported variables.
+       * i386/cygwin.h (i386_pe_record_exported_symbol): Update
+       prototype.
+       * i386/cygwin.h (ASM_OUTPUT_COMMON): Specify symbol type.
+       (ASM_DECLARE_OBJECT_NAME): Likewise.
+       (ASM_DECLARE_FUNCTION_NAME): Likewise.
+       * i386/uwin.h (ASM_DECLARE_FUNCTION_NAME): Likewise.
+
 Fri Aug 27 15:35:24 1999  Jeffrey A Law  (law@cygnus.com)
 
        * cse.c (fold_rtx): Work around bug in Sun V5.0 compilers.
index d34a963..f19ea50 100644 (file)
@@ -327,7 +327,7 @@ do {                                                                        \
 #define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \
 do {                                                   \
   if (i386_pe_dllexport_name_p (NAME))                 \
-    i386_pe_record_exported_symbol (NAME);             \
+    i386_pe_record_exported_symbol (NAME, 1);          \
   if (! i386_pe_dllimport_name_p (NAME))               \
     {                                                  \
       fprintf ((STREAM), "\t.comm\t");                         \
@@ -342,7 +342,7 @@ do {                                                        \
 #define ASM_DECLARE_OBJECT_NAME(STREAM, NAME, DECL)    \
 do {                                                   \
   if (i386_pe_dllexport_name_p (NAME))                 \
-    i386_pe_record_exported_symbol (NAME);             \
+    i386_pe_record_exported_symbol (NAME, 1);          \
   ASM_OUTPUT_LABEL ((STREAM), (NAME));                 \
 } while (0)
 
@@ -438,7 +438,7 @@ do {                                                                        \
   do                                                                   \
     {                                                                  \
       if (i386_pe_dllexport_name_p (NAME))                             \
-       i386_pe_record_exported_symbol (NAME);                          \
+       i386_pe_record_exported_symbol (NAME, 0);                       \
       if (write_symbols != SDB_DEBUG)                                  \
        i386_pe_declare_function_type (FILE, NAME, TREE_PUBLIC (DECL)); \
       ASM_OUTPUT_LABEL (FILE, NAME);                                   \
@@ -509,7 +509,7 @@ do {                                                                        \
 
 extern void i386_pe_record_external_function PROTO((char *));
 extern void i386_pe_declare_function_type STDIO_PROTO((FILE *, char *, int));
-extern void i386_pe_record_exported_symbol PROTO((char *));
+extern void i386_pe_record_exported_symbol PROTO((char *, int));
 extern void i386_pe_asm_file_end STDIO_PROTO((FILE *));
 
 /* For Win32 ABI compatibility */
index 29a3f98..84604fb 100644 (file)
@@ -79,7 +79,7 @@ Boston, MA 02111-1307, USA. */
   do                                                                   \
     {                                                                  \
       if (i386_pe_dllexport_name_p (NAME))                             \
-       i386_pe_record_exported_symbol (NAME);                          \
+       i386_pe_record_exported_symbol (NAME, 0);                       \
       /* UWIN binutils bug workaround. */                              \
       if (0 && write_symbols != SDB_DEBUG)                             \
        i386_pe_declare_function_type (FILE, NAME, TREE_PUBLIC (DECL)); \
index de66f4e..90cae27 100644 (file)
@@ -546,7 +546,16 @@ i386_pe_record_external_function (name)
   extern_head = p;
 }
 
-static struct extern_list *exports_head;
+/* Keep a list of exported symbols.  */
+
+struct export_list
+{
+  struct export_list *next;
+  char *name;
+  int is_data;         /* used to type tag exported symbols. */
+};
+
+static struct export_list *export_head;
 
 /* Assemble an export symbol entry.  We need to keep a list of
    these, so that we can output the export list at the end of the
@@ -555,15 +564,17 @@ static struct extern_list *exports_head;
    linkonce.  */
 
 void
-i386_pe_record_exported_symbol (name)
+i386_pe_record_exported_symbol (name, is_data)
      char *name;
+     int is_data;
 {
-  struct extern_list *p;
+  struct export_list *p;
 
-  p = (struct extern_list *) permalloc (sizeof *p);
-  p->next = exports_head;
+  p = (struct export_list *) permalloc (sizeof *p);
+  p->next = export_head;
   p->name = name;
-  exports_head = p;
+  p->is_data = is_data;
+  export_head = p;
 }
 
 /* This is called at the end of assembly.  For each external function
@@ -590,12 +601,16 @@ i386_pe_asm_file_end (file)
        }
     }
 
-  if (exports_head)
-    drectve_section ();
-  for (p = exports_head; p != NULL; p = p->next)
+  if (export_head)
     {
-      fprintf (file, "\t.ascii \" -export:%s\"\n",
-               I386_PE_STRIP_ENCODING (p->name));
+      struct export_list *q;
+      drectve_section ();
+      for (q = export_head; q != NULL; q = q->next)
+       {
+         fprintf (file, "\t.ascii \" -export:%s%s\"\n",
+                  I386_PE_STRIP_ENCODING (q->name),
+                  (q->is_data) ? ",data" : "");
+       }
     }
 }