Commit 8e260ba4 by Mumit Khan Committed by Richard Henderson

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
parent acef433b
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) 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. * cse.c (fold_rtx): Work around bug in Sun V5.0 compilers.
......
...@@ -327,7 +327,7 @@ do { \ ...@@ -327,7 +327,7 @@ do { \
#define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \ #define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED) \
do { \ do { \
if (i386_pe_dllexport_name_p (NAME)) \ 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)) \ if (! i386_pe_dllimport_name_p (NAME)) \
{ \ { \
fprintf ((STREAM), "\t.comm\t"); \ fprintf ((STREAM), "\t.comm\t"); \
...@@ -342,7 +342,7 @@ do { \ ...@@ -342,7 +342,7 @@ do { \
#define ASM_DECLARE_OBJECT_NAME(STREAM, NAME, DECL) \ #define ASM_DECLARE_OBJECT_NAME(STREAM, NAME, DECL) \
do { \ do { \
if (i386_pe_dllexport_name_p (NAME)) \ 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)); \ ASM_OUTPUT_LABEL ((STREAM), (NAME)); \
} while (0) } while (0)
...@@ -438,7 +438,7 @@ do { \ ...@@ -438,7 +438,7 @@ do { \
do \ do \
{ \ { \
if (i386_pe_dllexport_name_p (NAME)) \ 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) \ if (write_symbols != SDB_DEBUG) \
i386_pe_declare_function_type (FILE, NAME, TREE_PUBLIC (DECL)); \ i386_pe_declare_function_type (FILE, NAME, TREE_PUBLIC (DECL)); \
ASM_OUTPUT_LABEL (FILE, NAME); \ ASM_OUTPUT_LABEL (FILE, NAME); \
...@@ -509,7 +509,7 @@ do { \ ...@@ -509,7 +509,7 @@ do { \
extern void i386_pe_record_external_function PROTO((char *)); 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_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 *)); extern void i386_pe_asm_file_end STDIO_PROTO((FILE *));
/* For Win32 ABI compatibility */ /* For Win32 ABI compatibility */
......
...@@ -79,7 +79,7 @@ Boston, MA 02111-1307, USA. */ ...@@ -79,7 +79,7 @@ Boston, MA 02111-1307, USA. */
do \ do \
{ \ { \
if (i386_pe_dllexport_name_p (NAME)) \ if (i386_pe_dllexport_name_p (NAME)) \
i386_pe_record_exported_symbol (NAME); \ i386_pe_record_exported_symbol (NAME, 0); \
/* UWIN binutils bug workaround. */ \ /* UWIN binutils bug workaround. */ \
if (0 && write_symbols != SDB_DEBUG) \ if (0 && write_symbols != SDB_DEBUG) \
i386_pe_declare_function_type (FILE, NAME, TREE_PUBLIC (DECL)); \ i386_pe_declare_function_type (FILE, NAME, TREE_PUBLIC (DECL)); \
......
...@@ -546,7 +546,16 @@ i386_pe_record_external_function (name) ...@@ -546,7 +546,16 @@ i386_pe_record_external_function (name)
extern_head = p; 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 /* 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 these, so that we can output the export list at the end of the
...@@ -555,15 +564,17 @@ static struct extern_list *exports_head; ...@@ -555,15 +564,17 @@ static struct extern_list *exports_head;
linkonce. */ linkonce. */
void void
i386_pe_record_exported_symbol (name) i386_pe_record_exported_symbol (name, is_data)
char *name; char *name;
int is_data;
{ {
struct extern_list *p; struct export_list *p;
p = (struct extern_list *) permalloc (sizeof *p); p = (struct export_list *) permalloc (sizeof *p);
p->next = exports_head; p->next = export_head;
p->name = name; 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 /* This is called at the end of assembly. For each external function
...@@ -590,12 +601,16 @@ i386_pe_asm_file_end (file) ...@@ -590,12 +601,16 @@ i386_pe_asm_file_end (file)
} }
} }
if (exports_head) if (export_head)
drectve_section ();
for (p = exports_head; p != NULL; p = p->next)
{ {
fprintf (file, "\t.ascii \" -export:%s\"\n", struct export_list *q;
I386_PE_STRIP_ENCODING (p->name)); 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" : "");
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment