home *** CD-ROM | disk | FTP | other *** search
- Sat Aug 28 17:16:08 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.
-
- Index: gcc-2.95.2/gcc/config/i386/cygwin.h
- ===================================================================
- RCS file: /homes/khan/src/CVSROOT/gcc-2.95.2/gcc/config/i386/cygwin.h,v
- retrieving revision 1.4
- diff -u -3 -p -r1.4 cygwin.h
- --- gcc-2.95.2/gcc/config/i386/cygwin.h 1999/11/05 08:13:18 1.4
- +++ gcc-2.95.2/gcc/config/i386/cygwin.h 1999/11/05 08:20:18
- @@ -326,7 +326,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"); \
- @@ -341,7 +341,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)
-
- @@ -444,7 +444,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); \
- @@ -515,7 +515,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: gcc-2.95.2/gcc/config/i386/uwin.h
- ===================================================================
- RCS file: /homes/khan/src/CVSROOT/gcc-2.95.2/gcc/config/i386/uwin.h,v
- retrieving revision 1.3
- diff -u -3 -p -r1.3 uwin.h
- --- gcc-2.95.2/gcc/config/i386/uwin.h 1999/11/05 08:19:24 1.3
- +++ gcc-2.95.2/gcc/config/i386/uwin.h 1999/11/05 08:20:18
- @@ -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: gcc-2.95.2/gcc/config/i386/winnt.c
- ===================================================================
- RCS file: /homes/khan/src/CVSROOT/gcc-2.95.2/gcc/config/i386/winnt.c,v
- retrieving revision 1.3
- diff -u -3 -p -r1.3 winnt.c
- --- gcc-2.95.2/gcc/config/i386/winnt.c 1999/11/05 08:13:18 1.3
- +++ gcc-2.95.2/gcc/config/i386/winnt.c 1999/11/05 08:20:18
- @@ -561,8 +561,17 @@ 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
- assembly. We used to output these export symbols in each function,
- @@ -570,15 +579,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
- @@ -605,12 +616,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" : "");
- + }
- }
- }
-
-