This is the mail archive of the binutils@sourceware.cygnus.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

(fixed patch) pe-dll fix for exporting common symbols


Ooops! Looks like I sent the wrong file. Please ignore the last one.

The following change allows i386-pe ``ld --shared'' to export common 
symbols correctly.

Thu Jun 24 12:41:50 1999  Mumit Khan  <khan@xraylith.wisc.edu>

	* pe-dll.c (process_def_file): Export common symbols correctly.

Index: pe-dll.c
===================================================================
RCS file: /cvs/binutils/binutils/ld/pe-dll.c,v
retrieving revision 1.2
diff -u -3 -p -u -p -r1.2 pe-dll.c
--- pe-dll.c	1999/05/11 21:06:48	1.2
+++ pe-dll.c	1999/06/24 20:48:17
@@ -383,13 +383,23 @@ process_def_file (abfd, info)
 				   name,
 				   false, false, true);
 
-      if (blhe && (blhe->type == bfd_link_hash_defined))
+      if (blhe 
+          && (blhe->type == bfd_link_hash_defined
+	      || (blhe->type == bfd_link_hash_common)))
 	{
 	  count_exported++;
 	  if (!pe_def_file->exports[i].flag_noname)
 	    count_exported_byname++;
-	  exported_symbol_offsets[i] = blhe->u.def.value;
-	  exported_symbol_sections[i] = blhe->u.def.section;
+          if (blhe->type == bfd_link_hash_defined)
+	    {
+	      exported_symbol_offsets[i] = blhe->u.def.value;
+	      exported_symbol_sections[i] = blhe->u.def.section;
+	    }
+	  else
+	    {
+	      exported_symbol_offsets[i] = 0;
+	      exported_symbol_sections[i] = blhe->u.c.p->section;
+	    }
 	  if (pe_def_file->exports[i].ordinal != -1)
 	    {
 	      if (max_ordinal < pe_def_file->exports[i].ordinal)

Regards,
Mumit


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]