aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/winnt.c
diff options
context:
space:
mode:
authorMumit Khan <khan@xraylith.wisc.edu>1999-08-28 22:58:42 +0000
committerRichard Henderson <rth@gcc.gnu.org>1999-08-28 15:58:42 -0700
commit8e260ba4dbc6ffff9adb85b0cac1a0565a573f29 (patch)
treeb47137ea5466259aece8f5960501a6a93f954699 /gcc/config/i386/winnt.c
parentacef433b61b5e8001133d37e66250c2f0ab2a042 (diff)
downloadgcc-8e260ba4dbc6ffff9adb85b0cac1a0565a573f29.zip
gcc-8e260ba4dbc6ffff9adb85b0cac1a0565a573f29.tar.gz
gcc-8e260ba4dbc6ffff9adb85b0cac1a0565a573f29.tar.bz2
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. From-SVN: r28944
Diffstat (limited to 'gcc/config/i386/winnt.c')
-rw-r--r--gcc/config/i386/winnt.c37
1 files changed, 26 insertions, 11 deletions
diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
index de66f4e..90cae27 100644
--- a/gcc/config/i386/winnt.c
+++ b/gcc/config/i386/winnt.c
@@ -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" : "");
+ }
}
}